Index: xc/config/cf/Imake.rules diff -u xc/config/cf/Imake.rules:3.64 xc/config/cf/Imake.rules:3.65 --- xc/config/cf/Imake.rules:3.64 Wed Mar 8 16:28:45 2000 +++ xc/config/cf/Imake.rules Wed Mar 8 16:28:45 2000 @@ -5,7 +5,7 @@ XCOMM XCOMM XCOMM -XCOMM rules: $XFree86: xc/config/cf/Imake.rules,v 3.64 2000/02/13 06:15:16 dawes Exp $ +XCOMM rules: $XFree86: xc/config/cf/Imake.rules,v 3.65 2000/03/05 16:59:00 dawes Exp $ /* * MACHINE-INDEPENDENT RULES; DO NOT MODIFY @@ -1944,11 +1944,13 @@ #if HasGcc || HasGcc2 #define LibObjCompile(dir,options) RemoveFiles($@ dir/$@) @@\ ClearmakeOSName \ - $(CC) -c $(CCOPTIONS) $(ALLDEFINES) options $*.c -o dir/$@ + $(CC) -c $(CCOPTIONS) $(THREADS_CFLAGS) $(ALLDEFINES) \ + options $*.c -o dir/$@ #else #define LibObjCompile(dir,options) RemoveFiles($@ dir/$@) @@\ ClearmakeOSName \ - $(CC) -c $(CCOPTIONS) $(ALLDEFINES) options $*.c @@\ + $(CC) -c $(CCOPTIONS) $(THREADS_CFLAGS) $(ALLDEFINES) \ + options $*.c @@\ $(MV) $@ dir/$@ #endif #endif @@ -1957,11 +1959,13 @@ #if HasGcc || HasGcc2 #define LibObjCplusplusCompile(dir,options) RemoveFiles($@ dir/$@) @@\ ClearmakeOSName \ - $(CXX) -c $(CXXOPTIONS) $(CXXDEFINES) options $*.CCsuf -o dir/$@ + $(CXX) -c $(CXXOPTIONS) $(THREADS_CXXFLAGS) $(CXXDEFINES) \ + options $*.CCsuf -o dir/$@ #else #define LibObjCplusplusCompile(dir,options) RemoveFiles($@ dir/$@) @@\ ClearmakeOSName \ - $(CXX) -c $(CXXOPTIONS) $(CXXDEFINES) options $*.CCsuf @@\ + $(CXX) -c $(CXXOPTIONS) $(THREADS_CXXFLAGS) $(CXXDEFINES) \ + options $*.CCsuf @@\ $(MV) $@ dir/$@ #endif #endif Index: xc/config/cf/Imake.tmpl diff -u xc/config/cf/Imake.tmpl:3.65 xc/config/cf/Imake.tmpl:3.70 --- xc/config/cf/Imake.tmpl:3.65 Wed Mar 8 16:28:46 2000 +++ xc/config/cf/Imake.tmpl Wed Mar 8 16:28:46 2000 @@ -5,7 +5,7 @@ XCOMM XCOMM XCOMM -XCOMM $XFree86: xc/config/cf/Imake.tmpl,v 3.65 2000/01/31 19:33:18 dawes Exp $ +XCOMM $XFree86: xc/config/cf/Imake.tmpl,v 3.70 2000/03/07 14:31:34 dawes Exp $ XCOMM ---------------------------------------------------------------------- /* @@ -132,6 +132,12 @@ #ifndef HasGnuMake #define HasGnuMake NO #endif +/* + * The following fixes a glitch with GNU make -j + */ +#ifndef ForceServerRemake +#define ForceServerRemake HasGnuMake +#endif #ifndef HasBsdMake #define HasBsdMake NO #endif @@ -295,6 +301,8 @@ #define ByteOrder X_BIG_ENDIAN #elif defined(i386Architecture) #define ByteOrder X_LITTLE_ENDIAN +#elif defined(ia64Architecture) +#define ByteOrder X_LITTLE_ENDIAN #elif defined(SparcArchitecture) #define ByteOrder X_BIG_ENDIAN #elif defined(AlphaArchitecture) @@ -331,7 +339,7 @@ #define HasKrb5 NO /* if you have Kerberos V5 */ #endif #ifndef HasLatex -#define HasLatex YES +#define HasLatex NO #endif #ifndef HasShm #if SystemV || SystemV4 @@ -407,17 +415,28 @@ #ifdef NCursesIncDir NCURSESINCDIR = NCursesIncDir #endif -#ifndef HasGlide -#define HasGlide NO +#ifndef HasGlide2 +#define HasGlide2 NO +#endif +#ifndef Glide2IncDir +#if HasGlide2 +#define Glide2IncDir /usr/include/glide +#else +#define Glide2IncDir +#endif +#endif +GLIDE2INCDIR = Glide2IncDir +#ifndef HasGlide3 +#define HasGlide3 NO #endif -#ifndef GlideIncDir -#if HasGlide -#define GlideIncDir /usr/include/glide +#ifndef Glide3IncDir +#if HasGlide3 +#define Glide3IncDir /usr/include/glide3 #else -#define GlideIncDir +#define Glide3IncDir #endif #endif -GLIDEINCDIR = GlideIncDir +GLIDE3INCDIR = Glide3IncDir #ifndef HasTk #define HasTk NO #endif @@ -610,7 +629,7 @@ #define DriverManDefs -D__drivermansuffix__=$(DRIVERMANSUFFIX) #endif #ifndef ExtraManDefs -#define ExtraManDefs /**/ +#define ExtraManDefs -D__projectroot__=$(PROJECTROOT) #endif #ifndef LogDirectory Index: xc/config/cf/NetBSD.cf diff -u xc/config/cf/NetBSD.cf:3.79 xc/config/cf/NetBSD.cf:3.80 --- xc/config/cf/NetBSD.cf:3.79 Wed Mar 8 16:28:47 2000 +++ xc/config/cf/NetBSD.cf Wed Mar 8 16:28:47 2000 @@ -2,7 +2,7 @@ -XCOMM platform: $XFree86: xc/config/cf/NetBSD.cf,v 3.79 2000/02/21 18:05:30 dawes Exp $ +XCOMM platform: $XFree86: xc/config/cf/NetBSD.cf,v 3.80 2000/02/29 03:08:55 dawes Exp $ #ifndef OSName @@ -242,7 +242,6 @@ * Make & install Features */ #define HasBsdMake YES -#define StripInstalledPrograms YES #define CompressAllFonts YES #define GzipFontCompression YES #define DefaultUserPath /bin:/usr/bin:/usr/local/bin:$(BINDIR) Index: xc/config/cf/OpenBSD.cf diff -u xc/config/cf/OpenBSD.cf:3.27 xc/config/cf/OpenBSD.cf:3.30 --- xc/config/cf/OpenBSD.cf:3.27 Wed Mar 8 16:28:47 2000 +++ xc/config/cf/OpenBSD.cf Wed Mar 8 16:28:47 2000 @@ -1,4 +1,4 @@ -XCOMM platform: $XFree86: xc/config/cf/OpenBSD.cf,v 3.27 2000/02/11 18:06:37 dawes Exp $ +XCOMM platform: $XFree86: xc/config/cf/OpenBSD.cf,v 3.30 2000/03/07 01:30:40 dawes Exp $ XCOMM XCOMM $OpenBSD: OpenBSD.cf,v 1.33 1998/09/27 04:52:48 rahnds Exp $ XCOMM @@ -48,6 +48,20 @@ #define HasVarDb YES /* + * Multi-thread safe libs + */ +#if OSMajorVersion == 2 && OSMinorVersion >= 6 || OSMajorVersion >= 3 +#define HasPosixThreads YES +#define ThreadedX YES +#define BuildThreadStubLibrary YES +#define NeedUIThrStubs YES +#define HasThreadSafeAPI YES +#define SystemMTDefines -D_REENTRANT +#define ThreadsCompileFlags -pthread +#define ThreadsLibraries -lc_r +#endif + +/* * Compiler Features */ #undef HasGcc @@ -142,7 +156,6 @@ #define HasBsdMake YES -#define StripInstalledPrograms YES #define BuildCyrillicFonts YES #define GzipFontCompression YES #define DefaultUserPath /bin:/usr/bin:/usr/local/bin:$(BINDIR) @@ -265,13 +278,6 @@ $(RM) _fonts.alias #endif /* InstallFontAliasesNoComment */ -/* We now only use the XFree86 tree - thus we can define this - * independent of the architecture - */ -#ifndef XF86Contrib -#define XF86Contrib -#endif - /* * Architecture specific sections - put all architecture dependent * options and setting here into the correct section @@ -329,7 +335,7 @@ /* 2.7 and later will have support for setting MTRRs */ #ifndef HasMTRRSupport -#if OSMajorVersion > 2 || (OSMajorVersion == 2 && OSMinorVersion >= 6) +#if OSMajorVersion > 2 || (OSMajorVersion == 2 && OSMinorVersion > 6) #define HasMTRRSupport YES #else #define HasMTRRSupport NO Index: xc/config/cf/X11.tmpl diff -u xc/config/cf/X11.tmpl:1.59 xc/config/cf/X11.tmpl:1.62 --- xc/config/cf/X11.tmpl:1.59 Wed Mar 8 16:28:48 2000 +++ xc/config/cf/X11.tmpl Wed Mar 8 16:28:48 2000 @@ -5,7 +5,7 @@ XCOMM XCOMM XCOMM -XCOMM $XFree86: xc/config/cf/X11.tmpl,v 1.59 2000/02/18 16:23:07 dawes Exp $ +XCOMM $XFree86: xc/config/cf/X11.tmpl,v 1.62 2000/03/02 17:52:50 dawes Exp $ /*************************************************************************** * * @@ -206,6 +206,9 @@ #ifndef BuildXinerama #define BuildXinerama NO #endif +#ifndef BuildXineramaLibrary +#define BuildXineramaLibrary BuildXinerama +#endif #ifndef BuildXCSecurity #define BuildXCSecurity YES #endif @@ -1338,6 +1341,22 @@ #endif #endif +#if BuildXineramaLibrary +#ifndef SharedLibXinerama +#define SharedLibXinerama NO +#endif +#ifndef NormalLibXinerama +#define NormalLibXinerama YES +#endif +#ifndef DebugLibXinerama +#define DebugLibXinerama NO +#endif +#ifndef ProfileLibXinerama +#define ProfileLibXinerama NO +#endif +#endif + + #if BuildDPSLibrary #ifndef SharedLibDps #define SharedLibDps HasSharedLibraries @@ -1513,6 +1532,18 @@ #endif #endif +#if BuildXineramaLibrary + XINERAMALIBSRC = $(LIBSRC)/Xinerama +#if SharedLibXinerama +#ifndef SharedXineramaRev +#define SharedXineramaRev 1.0 +#endif +SharedLibReferences(XINERAMA,Xinerama,$(XINERAMALIBSRC),SOXINERAMAREV,SharedXineramaRev) +#else +ProjectUnsharedLibReferences(XINERAMA,Xinerama,$(XINERAMALIBSRC),XBuildLibDir) +#endif +#endif + #if BuildDPSLibrary DPSLIBSRC = $(LIBSRC)/dps #if SharedLibDps @@ -2373,7 +2404,7 @@ #ifndef MakeSimpleDoc #define MakeSimpleDoc(file,srcs) @@\ -all:: file.PS @@\ +all:: file.PS file.txt @@\ .PRECIOUS: file.PS @@\ @@\ file.PS: srcs @@\ @@ -2390,7 +2421,7 @@ #ifndef MakeTblDoc #define MakeTblDoc(file,srcs) @@\ -all:: file.PS @@\ +all:: file.PS file.txt @@\ .PRECIOUS: file.PS @@\ @@\ file.PS: srcs @@\ @@ -2407,7 +2438,7 @@ #ifndef MakeEqnDoc #define MakeEqnDoc(file,srcs) @@\ -all:: file.PS @@\ +all:: file.PS file.txt @@\ .PRECIOUS: file.PS @@\ @@\ file.PS: srcs @@\ @@ -2460,7 +2491,7 @@ #endif /* MakeLatexDoc */ #ifndef InstallDoc -#define InstallDoc(name,deps) @@\ +#define InstallDoc(name,deps) @@\ install:: deps @@\ MakeDir($(DESTDIR)$(DOCPSDIR)) @@\ @if [ -f name.PS ]; then set -x; \ @@\ @@ -2473,5 +2504,6 @@ #endif #ifndef InstallRoffDoc + #define InstallRoffDoc(name) InstallDoc(name,name.PS name.txt) #endif Index: xc/config/cf/gnu.cf diff -u xc/config/cf/gnu.cf:1.4 xc/config/cf/gnu.cf:1.6 --- xc/config/cf/gnu.cf:1.4 Sat Mar 20 20:44:58 1999 +++ xc/config/cf/gnu.cf Wed Mar 8 16:28:49 2000 @@ -1,4 +1,4 @@ -XCOMM platform: $XFree86: xc/config/cf/gnu.cf,v 1.4 1999/03/21 01:44:58 dawes Exp $ +XCOMM platform: $XFree86: xc/config/cf/gnu.cf,v 1.6 2000/02/29 15:24:13 tsi Exp $ #ifndef OSName #define OSName GNU @@ -97,7 +97,6 @@ #define NeedNestedPrototypes YES #define NeedVarargsPrototypes YES #define NeedWidePrototypes NO -#define StripInstalledPrograms YES #ifndef HasLibCrypt # define HasLibCrypt YES #endif @@ -121,7 +120,6 @@ #endif #define BuildXTrueType NO -#define BuildXTT NO #ifdef i386Architecture # include Index: xc/config/cf/linux.cf diff -u xc/config/cf/linux.cf:3.115 xc/config/cf/linux.cf:3.119 --- xc/config/cf/linux.cf:3.115 Wed Mar 8 16:28:50 2000 +++ xc/config/cf/linux.cf Wed Mar 8 16:28:50 2000 @@ -1,5 +1,5 @@ XCOMM platform: $TOG: linux.cf /main/47 1998/04/17 11:32:51 mgreess -XCOMM platform: $XFree86: xc/config/cf/linux.cf,v 3.115 2000/02/21 18:05:31 dawes Exp $ +XCOMM platform: $XFree86: xc/config/cf/linux.cf,v 3.119 2000/03/03 01:11:05 mvojkovi Exp $ #ifndef LinuxElfDefault #define LinuxElfDefault YES @@ -119,11 +119,13 @@ LinuxAdditionalIncludes LinuxGnuSourceDefines \ LinuxLocaleDefines #define XawI18nDefines -DHAS_WCHAR_H -DHAS_WCTYPE_H -DNO_WIDEC_H +#ifndef ia64Architecture #define HasPosixThreads YES #define ThreadedX YES #define HasThreadSafeAPI YES #define ThreadsLibraries -lpthread #define SystemMTDefines -D_REENTRANT +#endif /* ia64Architecture */ #ifndef HasLibCrypt #define HasLibCrypt YES #endif @@ -159,6 +161,9 @@ #ifndef XF86INT10_BUILD # ifdef i386Architecture # define XF86INT10_BUILD X86VM +# elif defined(ia64Architecture) +# define UseX86Emu NO +# define XF86INT10_BUILD XF86INT10_STUB # elif defined(X86EMU_LIBPATH) # define XF86INT10_BUILD X86EMU_GENERIC # endif @@ -207,6 +212,16 @@ # endif #endif +#ifndef HasAgpGart +# ifdef i386Architecture + /* The AGPGART header file is included in os-support/linux, which + allows all drivers that depend on AGP to build properly. */ +# define HasAgpGart YES +# else +# define HasAgpGart NO +# endif +#endif + /* * The Rush extension support. */ @@ -256,7 +271,6 @@ #define AvoidNullMakeCommand YES #define DebuggableLibraries YES -#define StripInstalledPrograms YES #define CompressAllFonts YES #define Malloc0ReturnsNull YES #define NeedConstPrototypes YES @@ -316,6 +330,14 @@ #define LdCmd /usr/alpha-linuxecoff/bin/ld -m alpha #define AsmDefines -DUSE_GAS -U__ELF__ #endif /* AlphaArchitecture */ +#ifdef ia64Architecture +#define CcCmd gcc +#define CplusplusCmd g++ +#define AsCmd as +#define LdCmd ld +#define AsmDefines -DUSE_GAS -U__ELF__ +#define HasSharedLibraries NO +#endif /* ia64Architecture */ #ifdef i386Architecture #define CcCmd gcc -b i486-linuxaout #define CplusplusCmd g++ -b i486-linuxaout @@ -340,6 +362,14 @@ #define AsmDefines -D__ELF__ #define CplusplusCmd c++ -b alpha-linux #endif /* AlphaArchitecture */ +#ifdef ia64Architecture +#define CcCmd gcc +#define CplusplusCmd g++ +#define AsCmd as +#define LdCmd ld +#define AsmDefines -D__ELF__ +#define HasSharedLibraries NO +#endif /* ia64Architecture */ #ifdef i386Architecture #define CcCmd gcc -b i486-linux #define AsCmd /usr/i486-linux/bin/as @@ -384,10 +414,6 @@ #define HasVarRun YES #define VarDbDirectory /var/state -#ifndef HasAgpGart -#define HasAgpGart NO -#endif - #ifndef XF86ExtraCardDrivers #define XF86ExtraCardDrivers v4l #endif @@ -409,6 +435,13 @@ #define ServerOSDefines XFree86ServerOSDefines -DDDXTIME -DPART_NET #define ServerExtraDefines -DGCCUSESGAS XFree86ServerDefines -D_XSERVER64 #endif /* AlphaArchitecture */ + +#ifdef ia64Architecture +#define OptimizedCDebugFlags -O2 +#define LinuxMachineDefines -D__ia64__ +#define ServerOSDefines XFree86ServerOSDefines -DDDXTIME -DPART_NET +#define ServerExtraDefines -DGCCUSESGAS XFree86ServerDefines -D_XSERVER64 +#endif /* ia64Architecture */ #ifdef Mc68020Architecture #define OptimizedCDebugFlags -O2 Index: xc/config/cf/lnxdoc.rules diff -u xc/config/cf/lnxdoc.rules:3.18 xc/config/cf/lnxdoc.rules:3.19 --- xc/config/cf/lnxdoc.rules:3.18 Wed Mar 8 16:28:51 2000 +++ xc/config/cf/lnxdoc.rules Wed Mar 8 16:28:51 2000 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/config/cf/lnxdoc.rules,v 3.18 2000/01/25 01:36:53 dawes Exp $ +XCOMM $XFree86: xc/config/cf/lnxdoc.rules,v 3.19 2000/02/26 05:19:44 dawes Exp $ XCOMM XCOMM Rules for formatting Linuxdoc-SGML documentation XCOMM @@ -83,7 +83,7 @@ #ifndef UpdateFormattedDoc #define UpdateFormattedDoc(textfile) @@\ update.docs:: textfile @@\ - @if [ -f $(FORMATTEDDIR)/textfile ]; then \ @@\ + -@if [ -f $(FORMATTEDDIR)/textfile ]; then \ @@\ if [ "$(FORCEUPDATE)" = yes ]; then set -x; \ @@\ cp textfile $(FORMATTEDDIR)/textfile; \ @@\ echo "" >> $(FORMATTEDDIR)/textfile; \ @@\ Index: xc/config/cf/svr3.cf diff -u xc/config/cf/svr3.cf:3.11 xc/config/cf/svr3.cf:3.12 --- xc/config/cf/svr3.cf:3.11 Wed Mar 8 16:28:52 2000 +++ xc/config/cf/svr3.cf Wed Mar 8 16:28:52 2000 @@ -2,7 +2,7 @@ -XCOMM $XFree86: xc/config/cf/svr3.cf,v 3.11 2000/01/25 18:37:30 dawes Exp $ +XCOMM $XFree86: xc/config/cf/svr3.cf,v 3.12 2000/02/29 03:08:56 dawes Exp $ #ifndef HasGcc #define HasGcc YES @@ -59,10 +59,6 @@ */ #ifndef HasSymLinks # define HasSymLinks NO -#endif - -#ifndef StripInstalledPrograms -# define StripInstalledPrograms YES #endif #ifndef MotifBC Index: xc/config/cf/xf86site.def diff -u xc/config/cf/xf86site.def:3.153 xc/config/cf/xf86site.def:3.159 --- xc/config/cf/xf86site.def:3.153 Fri Dec 3 14:17:17 1999 +++ xc/config/cf/xf86site.def Wed Mar 8 16:28:53 2000 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.153 1999/12/03 19:17:17 eich Exp $ +XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.159 2000/03/07 15:23:00 dawes Exp $ /******************************************************************************/ /* * This file is to provide a quick method for most people to change the @@ -26,6 +26,13 @@ */ /* + * If you want to enable some developer settings, like more verbose + * compiler warnings, uncomment this. + * +#define XFree86Devel YES +*/ + +/* * If using GCC 2.x on a system where it isn't the default, uncomment * the following * @@ -327,7 +334,7 @@ * To disable support for TrueType fonts, uncomment these. * #define BuildFreeType NO -#define BuildXTT NO +#define BuildXTrueType NO */ /* @@ -402,8 +409,8 @@ /* * Select the XInput devices you want by uncommenting this. * -#define XInputDrivers dynapro elo2300 elographics magellan microtouch \ - mutouch spaceorb wacom +#define XInputDrivers mouse dynapro elo2300 elographics magellan microtouch \ + mutouch spaceorb wacom void */ /* @@ -628,25 +635,45 @@ */ /* - * By default, XF86Contrib is defined so build only those parts of - * of the contrib distribution supported by XFree86. To prevent this - * from being defined, uncomment the following. + * To build/install X specs docs, uncomment the following. + * The SpecsDocDirs setting here is recommended because it covers + * the docs that XFree86 has changed or added. + * +#define BuildSpecsDocs YES +#define SpecsDocDirs GL Xext Xv xterm + */ + +/* + * To build all specs docs, not just those listed in SpecsDocDirs, uncomment + * the following. * -#define DontDefineXF86Contrib +#define BuildAllSpecsDocs YES */ /* * To enable building the glide driver, you need to define - * HasGlide to YES and set the GlideIncDir variable. - * HasGlide is per default NO. + * HasGlide2 to YES and set the Glide2IncDir variable. + * HasGlide2 is per default NO. * -#define HasGlide YES +#define HasGlide2 YES */ /* * Set the path to your Glide include files. * -#define GlideIncDir /usr/include/glide +#define Glide2IncDir /usr/include/glide + */ + +/* + * The 3Dfx 3D DRI driver requires glide 3. + * +#define HasGlide3 YES + */ + +/* + * Set the path to your Glide 3 include files. + * +#define Glide3IncDir /usr/include/glide3 */ /* @@ -655,3 +682,5 @@ * #define X86EMU_LIBPATH /usr/local/lib */ + + Index: xc/config/cf/xfree86.cf diff -u xc/config/cf/xfree86.cf:3.269 xc/config/cf/xfree86.cf:3.282 --- xc/config/cf/xfree86.cf:3.269 Wed Mar 8 16:28:53 2000 +++ xc/config/cf/xfree86.cf Wed Mar 8 16:28:53 2000 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/config/cf/xfree86.cf,v 3.269 2000/02/17 13:50:02 dawes Exp $ +XCOMM $XFree86: xc/config/cf/xfree86.cf,v 3.282 2000/03/07 14:31:36 dawes Exp $ /* * This configuration file contains all of the configuration * information for the XFree86 based X Servers. @@ -9,6 +9,14 @@ XCOMM $TOG: xfree86.cf /main/38 1997/10/22 13:01:59 kaleb $ /* + * This enables some settings for developers. + */ + +#ifndef XFree86Devel +# define XFree86Devel NO +#endif + +/* * settings for the config file parser */ @@ -26,10 +34,10 @@ /* XInput drivers */ #ifndef XInputDrivers #if 1 -#define XInputDrivers dynapro microtouch wacom +#define XInputDrivers mouse dynapro microtouch wacom void #else -#define XInputDrivers dynapro elo2300 elographics magellan \ - microtouch mutouch spaceorb wacom +#define XInputDrivers mouse dynapro elo2300 elographics magellan \ + microtouch mutouch spaceorb wacom void #endif #endif @@ -38,8 +46,13 @@ #define XF86ExtraCardDrivers /**/ #endif +/* OS.cf files may set this for OS-specific drivers */ +#ifndef HasAgpGart +#define HasAgpGart NO +#endif + /* The glide driver only works for the loadable server at the moment */ -#if HasGlide && DoLoadableServer +#if HasGlide2 && DoLoadableServer #define GlideDriver glide #else #define GlideDriver /**/ @@ -140,6 +153,86 @@ # endif #endif +/* IA-64 */ + +#ifdef ia64Architecture +# ifndef XF86Server +# define XF86Server YES +# endif +/* 1bpp module */ +# ifndef XF1Bpp +# define XF1Bpp YES +# endif +/* 4bpp module */ +# ifndef XF4Bpp +# define XF4Bpp YES +# endif +/* 8/32bpp overlay module */ +# ifndef XF8_32Bpp +# define XF8_32Bpp YES +# endif +/* 8/16bpp dual fb module */ +# ifndef XF8_16Bpp +# define XF8_16Bpp YES +# endif +/* 24/32bpp conversion module */ +# ifndef XF24_32Bpp +# define XF24_32Bpp YES +# endif +/* shadow fb module */ +# ifndef XFShadowFB +# define XFShadowFB YES +# endif +/* vgahw module */ +# ifndef XF86VgaHw +# define XF86VgaHw YES +# endif +/* fbdevhw module */ +# ifndef XF86FBDevHw +# define XF86FBDevHw YES +# endif +/* XAA module */ +# ifndef XF86XAA +# define XF86XAA YES +# endif +/* ramdac module */ +# ifndef XF86Ramdac +# define XF86Ramdac YES +# endif +/* I2C module */ +# ifndef XF86I2C +# define XF86I2C YES +# endif +/* DDC module */ +# ifndef XF86DDC +# define XF86DDC YES +# endif +/* RAC (Resource Access Control) module */ +# ifndef XF86RAC +# define XF86RAC YES +# endif + +/* int10 module */ +# ifndef XF86Int10 +# define XF86Int10 YES +# endif + +/* + * XXX Should change this to allow such drivers to be built without agpgart + * support (when it is useful to do so). + */ +# if HasAgpGart +# define AgpGartDrivers i810 +# else +# define AgpGartDrivers /**/ +# endif + +/* Pure PCI drivers should go first */ +# ifndef XF86CardDrivers +# define XF86CardDrivers mga vga +# endif +#endif + /* Sparc drivers */ #if defined(SparcArchitecture) && !defined(LynxOSArchitecture) @@ -317,7 +410,7 @@ /* Pure PCI drivers should go first */ # ifndef XF86CardDrivers -# define XF86CardDrivers mga glint s3virge sis cirrus tseng \ +# define XF86CardDrivers r128 mga glint s3virge sis cirrus tseng \ trident chips fbdev vga XF86ExtraCardDrivers # endif #endif @@ -773,8 +866,9 @@ # define GzipFontCompression YES #endif +/* Disable stripping installed programs for this release. */ #ifndef StripInstalledPrograms -# define StripInstalledPrograms YES +# define StripInstalledPrograms NO #endif #ifndef InstallJapaneseDocs @@ -797,7 +891,7 @@ # define DlopenHack -DDLOPEN_HACK #endif -#ifndef LoaderDefines +#ifndef ExtraLoaderDefines # if MakeDllModules # define ExtraLoaderDefines DlopenHack # else @@ -901,33 +995,11 @@ */ XF86SRC = $(SERVERSRC)/hw/xfree86 - XF86ACCELSRC = $(XF86SRC)/accel XF86COMSRC = $(XF86SRC)/common XF86PARSERSRC = $(XF86SRC)/parser XF86OSSRC = $(XF86SRC)/os-support XF86DRIVERSRC = $(XF86SRC)/drivers DRIVERSRC = $(XF86DRIVERSRC) - S3DRIVERSRC = $(XF86SRC)/accel/s3/drivers - S3VDRIVERSRC = $(XF86SRC)/accel/s3_virge/drivers - - XF68SRC = $(SERVERSRC)/hw/xfree68 - XF68COMSRC = $(XF68SRC)/common - XF68PARSERSRC = $(XF68SRC)/parser - XF68OSSRC = $(XF68SRC)/os-support - - XF98SRC = $(SERVERSRC)/hw/xfree98 - XF98ACCELSRC = $(XF98SRC)/accel - XF98COMSRC = $(XF98SRC)/common - XF98OSSRC = $(XF98SRC)/os-support - XF98DRIVERSRC = $(XF98SRC)/drivers - XF98VGADRIVERSRC = $(XF98SRC)/vga256/drivers -XF98VGA16DRIVERSRC = $(XF98SRC)/vga16/drivers - XF98VGA2DRIVERSRC = $(XF98SRC)/vga2/drivers - XF98MONODRIVERSRC = $(XF98SRC)/mono/drivers -XF98NECS3DRIVERSRC = $(XF98SRC)/accel/s3nec/drivers -XF98PWSKBDRIVERSRC = $(XF98SRC)/accel/s3pwskb/drivers - XF98PWLBDRIVERSRC = $(XF98SRC)/accel/s3pwlb/drivers -XF98GA968DRIVERSRC = $(XF98SRC)/accel/s3ga968/drivers /* * Installed location of the XFree86 documentation @@ -951,7 +1023,7 @@ #endif #ifndef XFree86Version -# define XFree86Version 3918 +# define XFree86Version 4000 #endif #ifndef XVendorString @@ -985,9 +1057,13 @@ #if HasGcc # ifndef GccWarningOptions -# define GccWarningOptions -Wall -Wpointer-arith -Wstrict-prototypes \ +# if XFree86Devel +# define GccWarningOptions -Wall -Wpointer-arith -Wstrict-prototypes \ -Wmissing-prototypes -Wmissing-declarations \ -Wredundant-decls -Wnested-externs +# else +# define GccWarningOptions -Wall -Wpointer-arith +# endif # endif # ifndef DefaultCCOptions # if defined(UseInstalled) @@ -1023,8 +1099,18 @@ # define LibraryDebugOpt DefaultGcc2DebugOpt #endif -#ifndef DontDefineXF86Contrib -# define XF86Contrib +/* + * Some versions of gcc have optimisation bugs that cause problems building + * some files. The definitions here cover those. + */ + +#ifndef Egcs112Bug +# if HasGcc2 && defined(i386Architecture) +# define Egcs112Bug YES +# else +# define Egcs112Bug NO +# endif #endif #include + Index: xc/config/pswrap/pswrap.man diff -u xc/config/pswrap/pswrap.man:1.1 xc/config/pswrap/pswrap.man:1.2 --- xc/config/pswrap/pswrap.man:1.1 Wed Mar 8 16:28:55 2000 +++ xc/config/pswrap/pswrap.man Wed Mar 8 16:28:55 2000 @@ -1,4 +1,4 @@ -.\" $Id: pswrap.man,v 6.1 1994/05/18 23:21:11 asente Exp $ +.\" Id: pswrap.man,v 6.1 1994/05/18 23:21:11 asente Exp $ .na .nh .TH PSWRAP 1 "4 Apr 1994" "Adobe Systems" Index: xc/programs/Imakefile diff -u xc/programs/Imakefile:3.26 xc/programs/Imakefile:3.28 --- xc/programs/Imakefile:3.26 Wed Mar 8 16:28:58 2000 +++ xc/programs/Imakefile Wed Mar 8 16:28:58 2000 @@ -2,7 +2,7 @@ XCOMM XCOMM XCOMM -XCOMM $XFree86: xc/programs/Imakefile,v 3.26 2000/02/13 03:26:04 dawes Exp $ +XCOMM $XFree86: xc/programs/Imakefile,v 3.28 2000/02/26 05:35:07 dawes Exp $ #define IHaveSubdirs #define PassCDebugFlags CDEBUGFLAGS="$(CDEBUGFLAGS)" @@ -74,8 +74,8 @@ setxkbmap showfont \ $(SMPROXYSRCDIR) $(TWMSRCDIR) viewres x11perf xauth xbiff xcalc \ xclipboard xclock \ - xcmsdb $(XCONSOLESRCDIR) $(XDMSRCDIR) xdpyinfo \ - $(XF86DGASRCDIR) xedit xev xeyes xfd $(XFSSRCDIR) \ + xcmsdb $(XCONSOLESRCDIR) xditview $(XDMSRCDIR) xdpyinfo \ + $(XF86DGASRCDIR) xedit xev xeyes xfd xfontsel $(XFSSRCDIR) \ $(XFINDPROXYSRCDIR) $(XFWPSRCDIR) $(XGAMMASRCDIR) xgc $(XHOSTSRCDIR) \ xieperf $(XINITSRCDIR) $(XKBSRCDIRS) xkill xload xlogo xlsatoms \ xlsclients xlsfonts xmag xman xmessage xmodmap xprop xrdb \ Index: xc/programs/Xserver/Imakefile diff -u xc/programs/Xserver/Imakefile:3.180 xc/programs/Xserver/Imakefile:3.182 --- xc/programs/Xserver/Imakefile:3.180 Wed Mar 8 16:28:58 2000 +++ xc/programs/Xserver/Imakefile Wed Mar 8 16:28:58 2000 @@ -2,7 +2,7 @@ /* * Server Master Makefile */ -XCOMM $XFree86: xc/programs/Xserver/Imakefile,v 3.180 2000/02/11 18:06:39 dawes Exp $ +XCOMM $XFree86: xc/programs/Xserver/Imakefile,v 3.182 2000/02/29 15:24:15 tsi Exp $ #ifndef InstallXserverSetUID #define InstallXserverSetUID NO @@ -612,13 +612,14 @@ #if !DoLoadableServer XF86DRVOBJS = $(XF86SRC)/drivers/drvConf.o XF86DRVLIBS = $(XF86DRIVERLIB) $(XF86RAMDACLIB) $(XF86DDCLIB) $(XF86I2CLIB) \ - $(XF86INT10LIB) $(XF86XAALIB) $(XF86VGAHWLIB) $(XF86FBDEVHWLIB) \ + $(XF86XAALIB) $(XF86VGAHWLIB) $(XF86FBDEVHWLIB) \ $(XF8_32BPPLIB) $(XF8_16BPPLIB) $(XF24_32BPPLIB) \ $(XF4BPPLIB) $(XF1BPPLIB) $(XFSHADOWFBLIB) $(AFBLIB) XF86IDRVOBJS = $(XF86SRC)/input/drvConf.o XF86IDRVLIBS = $(XF86IDRIVERLIB) XF86SCANLIB = $(XF86SRC)/scanpci/LibraryTargetName(scanpci) -XF86LIBS = $(XF86INIT) $(XF86COMLIB) $(XF86RACLIB) $(XF86PARSLIB) $(XF86OSLIB) +XF86LIBS = $(XF86INIT) $(XF86COMLIB) $(XF86RACLIB) $(XF86PARSLIB) \ + $(XF86OSLIB) $(XF86INT10LIB) #else XF86LIBS = $(XF86INIT) $(XF86COMLIB) $(XF86PARSLIB) $(XF86OSLIB) #endif @@ -637,7 +638,7 @@ #if HasParallelMake MakeMutex($(XF86SERVERSUBDIRS) $(XF86SERVERLIBS) $(XF86SERVERSYSLIBS)) #endif -#if HasGnuMake +#if ForceServerRemake $(XF86SERVERLIBS) $(XF86SERVERSYSLIBS):: $(XF86SERVERSUBDIRS) @if [ -f $@ ]; then touch $@; fi #endif @@ -695,7 +696,7 @@ #if HasParallelMake MakeMutex($(FBDEVDIRS) $(FBDEVOBJS) $(FBDEVLIBS) $(FBDEVSYSLIBS)) #endif -#if HasGnuMake +#if ForceServerRemake $(FBDEVOBJS) $(XFBDEV) $(FBDEVLIBS) $(FBDEVSYSLIBS):: $(FBDEVDIRS) @if [ -f $@ ]; then touch $@; fi #endif @@ -720,7 +721,7 @@ #if HasParallelMake MakeMutex($(SAVAGEDIRS) $(SAVAGEOBJS) $(SAVAGELIBS) $(SAVAGESYSLIBS)) #endif -#if HasGnuMake +#if ForceServerRemake $(SAVAGEOBJS) $(XSAVAGE) $(SAVAGELIBS) $(SAVAGESYSLIBS):: $(SAVAGEDIRS) @if [ -f $@ ]; then touch $@; fi #endif @@ -747,7 +748,7 @@ #if HasParallelMake MakeMutex($(TRIDENTDIRS) $(TRIDENTLIBS) $(TRIDENTSYSLIBS)) #endif -#if HasGnuMake +#if ForceServerRemake $(TRIDENTOBJS) $(TRIDENTLIBS) $(TRIDENTSYSLIBS):: $(TRIDENTDIRS) @if [ -f $@ ]; then touch $@; fi #endif @@ -772,7 +773,7 @@ #if HasParallelMake MakeMutex($(SIS530DIRS) $(SIS530OBJS) $(SIS530LIBS) $(SIS530SYSLIBS)) #endif -#if HasGnuMake +#if ForceServerRemake $(SIS530OBJS) $(SIS530LIBS) $(SIS530SYSLIBS):: $(SIS530DIRS) @if [ -f $@ ]; then touch $@; fi #endif @@ -797,7 +798,7 @@ #if HasParallelMake MakeMutex($(TRIODIRS) $(TRIOOBJS) $(TRIOLIBS) $(TRIOSYSLIBS)) #endif -#if HasGnuMake +#if ForceServerRemake $(TRIOOBJS) $(TRIOLIBS) $(TRIOSYSLIBS):: $(TRIODIRS) @if [ -f $@ ]; then touch $@; fi #endif @@ -828,7 +829,7 @@ #if HasParallelMake MakeMutex($(TS300DIRS) $(TS300OBJS) $(TS300LIBS) $(TS300SYSLIBS)) #endif -#if HasGnuMake +#if ForceServerRemake $(TS300OBJS) $(TS300LIBS) $(TS300SYSLIBS):: $(TS300DIRS) @if [ -f $@ ]; then touch $@; fi #endif @@ -852,7 +853,7 @@ #if HasParallelMake MakeMutex($(ITSYDIRS) $(ITSYOBJS) $(ITSYLIBS) $(ITSYSYSLIBS)) #endif -#if HasGnuMake +#if ForceServerRemake $(ITSYOBJS) $(ITSYLIBS) $(ITSYSYSLIBS):: $(ITSYDIRS) @if [ -f $@ ]; then touch $@; fi #endif @@ -888,7 +889,7 @@ #if HasParallelMake MakeMutex($(XPSUBDIRS) $(XPOBJS) $(XPLIBS) $(XPSYSLIBS)) #endif -#if HasGnuMake +#if ForceServerRemake $(XPOBJS) $(XPLIBS) $(XPSYSLIBS):: $(XPSUBDIRS) @if [ -f $@ ]; then touch $@; fi #endif @@ -920,7 +921,7 @@ #if HasParallelMake MakeMutex($(XNESTDIRS) $(XNESTOBJS) $(XNESTLIBS) $(XNESTSYSLIBS)) #endif -#if HasGnuMake +#if ForceServerRemake $(XNESTOBJS) $(XNESTLIBS) $(XNESTSYSLIBS):: $(XNESTDIRS) @if [ -f $@ ]; then touch $@; fi #endif @@ -977,7 +978,7 @@ #if HasParallelMake MakeMutex($(XVFBDIRS) $(XVFBOBJS) $(XVFB) $(XVFBLIBS) $(XVFBSYSLIBS)) #endif -#if HasGnuMake +#if ForceServerRemake $(XVFBOBJS) $(XVFB) $(XVFBLIBS) $(XVFBSYSLIBS):: $(XVFBDIRS) @if [ -f $@ ]; then touch $@; fi #endif Index: xc/programs/Xserver/GL/Imakefile diff -u xc/programs/Xserver/GL/Imakefile:1.5 xc/programs/Xserver/GL/Imakefile:1.6 --- xc/programs/Xserver/GL/Imakefile:1.5 Sat Aug 14 06:49:22 1999 +++ xc/programs/Xserver/GL/Imakefile Wed Mar 8 16:29:00 2000 @@ -1,5 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/GL/Imakefile,v 1.5 1999/08/14 10:49:22 dawes Exp $ -XCOMM $PI: xc/programs/Xserver/GL/Imakefile,v 1.14 1999/06/07 12:56:02 faith Exp $ +XCOMM $XFree86: xc/programs/Xserver/GL/Imakefile,v 1.6 2000/02/23 04:46:51 martin Exp $ #define IHaveModules #include Index: xc/programs/Xserver/GL/glxmodule.c diff -u xc/programs/Xserver/GL/glxmodule.c:1.8 xc/programs/Xserver/GL/glxmodule.c:1.9 --- xc/programs/Xserver/GL/glxmodule.c:1.8 Wed Mar 8 16:29:00 2000 +++ xc/programs/Xserver/GL/glxmodule.c Wed Mar 8 16:29:00 2000 @@ -25,13 +25,12 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ -/* $XFree86: xc/programs/Xserver/GL/glxmodule.c,v 1.8 2000/02/18 16:23:12 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/GL/glxmodule.c,v 1.9 2000/02/23 04:46:51 martin Exp $ */ /* * Authors: * Kevin E. Martin * - * $PI: xc/programs/Xserver/GL/glxmodule.c,v 1.10 1999/06/08 11:01:04 faith Exp $ */ #include "xf86Module.h" Index: xc/programs/Xserver/GL/dri/Imakefile diff -u xc/programs/Xserver/GL/dri/Imakefile:1.4 xc/programs/Xserver/GL/dri/Imakefile:1.5 --- xc/programs/Xserver/GL/dri/Imakefile:1.4 Sat Aug 14 06:49:23 1999 +++ xc/programs/Xserver/GL/dri/Imakefile Wed Mar 8 16:29:01 2000 @@ -1,5 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/GL/dri/Imakefile,v 1.4 1999/08/14 10:49:23 dawes Exp $ -XCOMM $PI: xc/programs/Xserver/GL/dri/Imakefile,v 1.13 1999/06/07 12:55:30 faith Exp $ +XCOMM $XFree86: xc/programs/Xserver/GL/dri/Imakefile,v 1.5 2000/02/23 04:46:52 martin Exp $ #define IHaveModules #include Index: xc/programs/Xserver/GL/dri/dri.c diff -u xc/programs/Xserver/GL/dri/dri.c:1.11 xc/programs/Xserver/GL/dri/dri.c:1.13 --- xc/programs/Xserver/GL/dri/dri.c:1.11 Wed Mar 8 16:29:01 2000 +++ xc/programs/Xserver/GL/dri/dri.c Wed Mar 8 16:29:01 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/GL/dri/dri.c,v 1.11 2000/02/15 07:13:32 martin Exp $ */ +/* $XFree86: xc/programs/Xserver/GL/dri/dri.c,v 1.13 2000/03/04 01:53:01 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -223,11 +223,12 @@ DRIFinishScreenInit(ScreenPtr pScreen) { DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen); + DRIInfoPtr pDRIInfo = pDRIPriv->pDriverInfo; DRIContextFlags flags = 0; DRIContextPrivPtr pDRIContextPriv; /* Set up flags for DRICreateContextPriv */ - switch (pDRIPriv->pDriverInfo->driverSwapMethod) { + switch (pDRIInfo->driverSwapMethod) { case DRI_KERNEL_SWAP: flags = DRI_CONTEXT_2DONLY; break; case DRI_HIDE_X_CONTEXT: flags = DRI_CONTEXT_PRESERVED; break; } @@ -248,7 +249,7 @@ pDRIPriv->hiddenContextStore = NULL; pDRIPriv->partial3DContextStore = NULL; - switch(pDRIPriv->pDriverInfo->driverSwapMethod) { + switch(pDRIInfo->driverSwapMethod) { case DRI_HIDE_X_CONTEXT: /* Server will handle 3D swaps, and hide 2D swaps from kernel. * Register server context as a preserved context. @@ -256,7 +257,7 @@ /* allocate memory for hidden context store */ pDRIPriv->hiddenContextStore - = (void *)xalloc(pDRIPriv->pDriverInfo->contextSize); + = (void *)xalloc(pDRIInfo->contextSize); if (!pDRIPriv->hiddenContextStore) { DRIDrvMsg(pScreen->myNum, X_ERROR, "failed to allocate hidden context\n"); @@ -266,7 +267,7 @@ /* allocate memory for partial 3D context store */ pDRIPriv->partial3DContextStore - = (void *)xalloc(pDRIPriv->pDriverInfo->contextSize); + = (void *)xalloc(pDRIInfo->contextSize); if (!pDRIPriv->partial3DContextStore) { DRIDrvMsg(pScreen->myNum, X_ERROR, "[DRI] failed to allocate partial 3D context\n"); @@ -276,8 +277,8 @@ } /* save initial context store */ - if (pDRIPriv->pDriverInfo->SwapContext) { - (*pDRIPriv->pDriverInfo->SwapContext)( + if (pDRIInfo->SwapContext) { + (*pDRIInfo->SwapContext)( pScreen, DRI_NO_SYNC, DRI_2D_CONTEXT, @@ -310,23 +311,29 @@ } /* Wrap DRI support */ - pDRIPriv->WakeupHandler = pScreen->WakeupHandler; - pDRIPriv->BlockHandler = pScreen->BlockHandler; - pDRIPriv->ValidateTree = pScreen->ValidateTree; - pDRIPriv->PostValidateTree = pScreen->PostValidateTree; - pScreen->WakeupHandler = DRIWakeupHandler; - pScreen->BlockHandler = DRIBlockHandler; - pScreen->ValidateTree = DRIValidateTree; - pScreen->PostValidateTree = DRIPostValidateTree; + if (pDRIInfo->wrap.ValidateTree) { + pDRIPriv->wrap.ValidateTree = pScreen->ValidateTree; + pScreen->ValidateTree = pDRIInfo->wrap.ValidateTree; + } + if (pDRIInfo->wrap.PostValidateTree) { + pDRIPriv->wrap.PostValidateTree = pScreen->PostValidateTree; + pScreen->PostValidateTree = pDRIInfo->wrap.PostValidateTree; + } /* Potentential optimization: don't wrap the following routines if - pDRIPriv->pDriverInfo->bufferRequests == DRI_NO_WINDOWS */ - pDRIPriv->PaintWindowBackground = pScreen->PaintWindowBackground; - pDRIPriv->PaintWindowBorder = pScreen->PaintWindowBorder; - pDRIPriv->CopyWindow = pScreen->CopyWindow; - pScreen->PaintWindowBackground = DRIPaintWindow; - pScreen->PaintWindowBorder = DRIPaintWindow; - pScreen->CopyWindow = DRICopyWindow; + pDRIInfo->bufferRequests == DRI_NO_WINDOWS */ + if (pDRIInfo->wrap.PaintWindowBackground) { + pDRIPriv->wrap.PaintWindowBackground = pScreen->PaintWindowBackground; + pScreen->PaintWindowBackground = pDRIInfo->wrap.PaintWindowBackground; + } + if (pDRIInfo->wrap.PaintWindowBorder) { + pDRIPriv->wrap.PaintWindowBorder = pScreen->PaintWindowBorder; + pScreen->PaintWindowBorder = pDRIInfo->wrap.PaintWindowBorder; + } + if (pDRIInfo->wrap.CopyWindow) { + pDRIPriv->wrap.CopyWindow = pScreen->CopyWindow; + pScreen->CopyWindow = pDRIInfo->wrap.CopyWindow; + } miClipNotify(DRIClipNotify); DRIDrvMsg(pScreen->myNum, X_INFO, "[DRI] installation complete\n"); @@ -419,6 +426,8 @@ return FALSE; } + RegisterBlockAndWakeupHandlers(DRIBlockHandler, DRIWakeupHandler, NULL); + return TRUE; } @@ -938,8 +947,21 @@ DRIInfoPtr DRICreateInfoRec(void) { - DRIInfoPtr inforec = xalloc(sizeof(DRIInfoRec)); + DRIInfoPtr inforec = (DRIInfoPtr)xalloc(sizeof(DRIInfoRec)); + if (!inforec) return NULL; + + /* Initialize defaults */ inforec->busIdString = NULL; + + /* Wrapped function defaults */ + inforec->wrap.WakeupHandler = DRIDoWakeupHandler; + inforec->wrap.BlockHandler = DRIDoBlockHandler; + inforec->wrap.PaintWindowBackground = DRIPaintWindow; + inforec->wrap.PaintWindowBorder = DRIPaintWindow; + inforec->wrap.CopyWindow = DRICopyWindow; + inforec->wrap.ValidateTree = DRIValidateTree; + inforec->wrap.PostValidateTree = DRIPostValidateTree; + return inforec; } @@ -952,6 +974,44 @@ void DRIWakeupHandler( + pointer wakeupData, + int result, + pointer pReadmask) +{ + int i; + + for (i = 0; i < screenInfo.numScreens; i++) { + ScreenPtr pScreen = screenInfo.screens[i]; + DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen); + + if (pDRIPriv && + pDRIPriv->pDriverInfo->wrap.WakeupHandler) + (*pDRIPriv->pDriverInfo->wrap.WakeupHandler)(i, wakeupData, + result, pReadmask); + } +} + +void +DRIBlockHandler( + pointer blockData, + OSTimePtr pTimeout, + pointer pReadmask) +{ + int i; + + for (i = 0; i < screenInfo.numScreens; i++) { + ScreenPtr pScreen = screenInfo.screens[i]; + DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen); + + if (pDRIPriv && + pDRIPriv->pDriverInfo->wrap.BlockHandler) + (*pDRIPriv->pDriverInfo->wrap.BlockHandler)(i, blockData, + pTimeout, pReadmask); + } +} + +void +DRIDoWakeupHandler( int screenNum, pointer wakeupData, unsigned long result, @@ -960,7 +1020,7 @@ ScreenPtr pScreen = screenInfo.screens[screenNum]; DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen); - DRILock(pScreen); + DRILock(pScreen, 0); if (pDRIPriv->pDriverInfo->driverSwapMethod == DRI_HIDE_X_CONTEXT) { /* hide X context by swapping 2D component here */ (*pDRIPriv->pDriverInfo->SwapContext)(pScreen, @@ -970,38 +1030,18 @@ DRI_2D_CONTEXT, pDRIPriv->hiddenContextStore); } - - /* unwrap */ - pScreen->WakeupHandler = pDRIPriv->WakeupHandler; - - /* call lower layers */ - (*pScreen->WakeupHandler)(screenNum, wakeupData, result, pReadmask); - - /* rewrap */ - pDRIPriv->WakeupHandler = pScreen->WakeupHandler; - pScreen->WakeupHandler = DRIWakeupHandler; } void -DRIBlockHandler( +DRIDoBlockHandler( int screenNum, pointer blockData, - struct timeval **pTimeout, + pointer pTimeout, pointer pReadmask) { ScreenPtr pScreen = screenInfo.screens[screenNum]; DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen); - /* unwrap */ - pScreen->BlockHandler = pDRIPriv->BlockHandler; - - /* call lower layers */ - (*pScreen->BlockHandler)(screenNum, blockData, pTimeout, pReadmask); - - /* rewrap */ - pDRIPriv->BlockHandler = pScreen->BlockHandler; - pScreen->BlockHandler = DRIBlockHandler; - if (pDRIPriv->pDriverInfo->driverSwapMethod == DRI_HIDE_X_CONTEXT) { /* hide X context by swapping 2D component here */ (*pDRIPriv->pDriverInfo->SwapContext)(pScreen, @@ -1210,13 +1250,13 @@ } /* unwrap */ - pScreen->PaintWindowBackground = pDRIPriv->PaintWindowBackground; + pScreen->PaintWindowBackground = pDRIPriv->wrap.PaintWindowBackground; /* call lower layers */ (*pScreen->PaintWindowBackground)(pWin, prgn, what); /* rewrap */ - pDRIPriv->PaintWindowBackground = pScreen->PaintWindowBackground; + pDRIPriv->wrap.PaintWindowBackground = pScreen->PaintWindowBackground; pScreen->PaintWindowBackground = DRIPaintWindow; } else { @@ -1227,13 +1267,13 @@ } /* unwrap */ - pScreen->PaintWindowBorder = pDRIPriv->PaintWindowBorder; + pScreen->PaintWindowBorder = pDRIPriv->wrap.PaintWindowBorder; /* call lower layers */ (*pScreen->PaintWindowBorder)(pWin, prgn, what); /* rewrap */ - pDRIPriv->PaintWindowBorder = pScreen->PaintWindowBorder; + pDRIPriv->wrap.PaintWindowBorder = pScreen->PaintWindowBorder; pScreen->PaintWindowBorder = DRIPaintWindow; } } @@ -1269,13 +1309,13 @@ } /* unwrap */ - pScreen->CopyWindow = pDRIPriv->CopyWindow; + pScreen->CopyWindow = pDRIPriv->wrap.CopyWindow; /* call lower layers */ (*pScreen->CopyWindow)(pWin, ptOldOrg, prgnSrc); /* rewrap */ - pDRIPriv->CopyWindow = pScreen->CopyWindow; + pDRIPriv->wrap.CopyWindow = pScreen->CopyWindow; pScreen->CopyWindow = DRICopyWindow; } @@ -1358,7 +1398,7 @@ } /* Call kernel to release lock */ - DRM_UNLOCK(pDRIPriv->drmFD, pDRIPriv->pSAREA, pDRIPriv->myContext); + DRIUnlock(pScreen); /* Grab drawable spin lock: a time out between 10 and 30 seconds is appropriate, since this should never time out except in the case of @@ -1367,8 +1407,7 @@ DRISpinLockTimeout(&pDRIPriv->pSAREA->drawable_lock, 1, 10000); /* 10 secs */ /* Call kernel flush outstanding buffers and relock */ - DRM_LOCK(pDRIPriv->drmFD, pDRIPriv->pSAREA, pDRIPriv->myContext, - DRM_LOCK_QUIESCENT|DRM_LOCK_FLUSH_ALL); + DRILock(pScreen, DRM_LOCK_QUIESCENT|DRM_LOCK_FLUSH_ALL); /* Switch back to our 2D context if the X context is hidden */ if (pDRIPriv->pDriverInfo->driverSwapMethod == DRI_HIDE_X_CONTEXT) { @@ -1382,13 +1421,13 @@ } /* unwrap */ - pScreen->ValidateTree = pDRIPriv->ValidateTree; + pScreen->ValidateTree = pDRIPriv->wrap.ValidateTree; /* call lower layers */ returnValue = (*pScreen->ValidateTree)(pParent, pChild, kind); /* rewrap */ - pDRIPriv->ValidateTree = pScreen->ValidateTree; + pDRIPriv->wrap.ValidateTree = pScreen->ValidateTree; pScreen->ValidateTree = DRIValidateTree; return returnValue; @@ -1410,15 +1449,15 @@ } pDRIPriv = DRI_SCREEN_PRIV(pScreen); - if (pDRIPriv->PostValidateTree) { + if (pDRIPriv->wrap.PostValidateTree) { /* unwrap */ - pScreen->PostValidateTree = pDRIPriv->PostValidateTree; + pScreen->PostValidateTree = pDRIPriv->wrap.PostValidateTree; /* call lower layers */ (*pScreen->PostValidateTree)(pParent, pChild, kind); /* rewrap */ - pDRIPriv->PostValidateTree = pScreen->PostValidateTree; + pDRIPriv->wrap.PostValidateTree = pScreen->PostValidateTree; pScreen->PostValidateTree = DRIPostValidateTree; } @@ -1464,11 +1503,11 @@ } void -DRILock(ScreenPtr pScreen) { +DRILock(ScreenPtr pScreen, int flags) { DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen); if (!lockRefCount) - DRM_LIGHT_LOCK(pDRIPriv->drmFD, pDRIPriv->pSAREA, pDRIPriv->myContext); + DRM_LOCK(pDRIPriv->drmFD, pDRIPriv->pSAREA, pDRIPriv->myContext, flags); lockRefCount++; } Index: xc/programs/Xserver/GL/dri/dri.h diff -u xc/programs/Xserver/GL/dri/dri.h:1.7 xc/programs/Xserver/GL/dri/dri.h:1.9 --- xc/programs/Xserver/GL/dri/dri.h:1.7 Wed Mar 8 16:29:02 2000 +++ xc/programs/Xserver/GL/dri/dri.h Wed Mar 8 16:29:02 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/GL/dri/dri.h,v 1.7 2000/02/14 06:27:13 martin Exp $ */ +/* $XFree86: xc/programs/Xserver/GL/dri/dri.h,v 1.9 2000/03/04 01:53:02 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -69,6 +69,21 @@ #define DRI_3D_WINDOWS_ONLY 1 #define DRI_ALL_WINDOWS 2 +/* + * These functions can be wrapped by the DRI. Each of these have + * generic default funcs (initialized in DRICreateInfoRec) and can be + * overridden by the driver in its [driver]DRIScreenInit function. + */ +typedef struct { + ScreenWakeupHandlerProcPtr WakeupHandler; + ScreenBlockHandlerProcPtr BlockHandler; + PaintWindowBackgroundProcPtr PaintWindowBackground; + PaintWindowBorderProcPtr PaintWindowBorder; + CopyWindowProcPtr CopyWindow; + ValidateTreeProcPtr ValidateTree; + PostValidateTreeProcPtr PostValidateTree; +} DRIWrappedFuncsRec, *DRIWrappedFuncsPtr; + typedef struct { /* driver call back functions */ Bool (*CreateContext)(ScreenPtr pScreen, @@ -93,6 +108,9 @@ RegionPtr prgnSrc, CARD32 index); + /* wrapped functions */ + DRIWrappedFuncsRec wrap; + /* device info */ char* drmDriverName; char* clientDriverName; @@ -182,14 +200,22 @@ void DRIDestroyInfoRec(DRIInfoPtr DRIInfo); Bool DRIFinishScreenInit(ScreenPtr pScreen); void DRIWakeupHandler( + pointer wakeupData, + int result, + pointer pReadmask); +void DRIBlockHandler( + pointer blockData, + OSTimePtr pTimeout, + pointer pReadmask); +void DRIDoWakeupHandler( int screenNum, pointer wakeupData, unsigned long result, pointer pReadmask); -void DRIBlockHandler( +void DRIDoBlockHandler( int screenNum, pointer blockData, - struct timeval **pTimeout, + pointer pTimeout, pointer pReadmask); void DRISwapContext( int drmFD, @@ -218,7 +244,7 @@ int dy); CARD32 DRIGetDrawableIndex( WindowPtr pWin); -void DRILock(ScreenPtr pScreen); +void DRILock(ScreenPtr pScreen, int flags); void DRIUnlock(ScreenPtr pScreen); void *DRIGetSAREAPrivate(ScreenPtr pScreen); DRIContextPrivPtr Index: xc/programs/Xserver/GL/dri/drimodule.c diff -u xc/programs/Xserver/GL/dri/drimodule.c:1.2 xc/programs/Xserver/GL/dri/drimodule.c:1.3 --- xc/programs/Xserver/GL/dri/drimodule.c:1.2 Wed Mar 8 16:29:02 2000 +++ xc/programs/Xserver/GL/dri/drimodule.c Wed Mar 8 16:29:02 2000 @@ -24,14 +24,13 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ -/* $XFree86: xc/programs/Xserver/GL/dri/drimodule.c,v 1.2 2000/01/25 18:37:36 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/GL/dri/drimodule.c,v 1.3 2000/02/23 04:46:52 martin Exp $ */ /* * Authors: * Kevin E. Martin * Rickard E. Faith * - * $PI: xc/programs/Xserver/GL/dri/drimodule.c,v 1.1 1999/06/07 12:55:30 faith Exp $ */ #include "xf86Module.h" Index: xc/programs/Xserver/GL/dri/dristruct.h diff -u xc/programs/Xserver/GL/dri/dristruct.h:1.5 xc/programs/Xserver/GL/dri/dristruct.h:1.7 --- xc/programs/Xserver/GL/dri/dristruct.h:1.5 Wed Mar 8 16:29:02 2000 +++ xc/programs/Xserver/GL/dri/dristruct.h Wed Mar 8 16:29:02 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/GL/dri/dristruct.h,v 1.5 2000/02/14 06:27:14 martin Exp $ */ +/* $XFree86: xc/programs/Xserver/GL/dri/dristruct.h,v 1.7 2000/03/02 16:07:38 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -30,7 +30,6 @@ * Authors: * Jens Owen * - * $PI: xc/programs/Xserver/GL/dri/dristruct.h,v 1.28 1999/08/04 18:12:56 faith Exp $ */ #ifndef DRI_STRUCT_H @@ -88,29 +87,7 @@ void** hiddenContextStore; /* hidden X context */ void** partial3DContextStore; /* parital 3D context */ DRIInfoPtr pDriverInfo; - void (*WakeupHandler)(int screenNum, - pointer wakeupData, - unsigned long result, - pointer pReadmask); - void (*BlockHandler)(int screenNum, - pointer blockData, - struct timeval **pTimeout, - pointer pReadmask); - void (*PaintWindowBackground)(WindowPtr pWin, - RegionPtr prgn, - int what); - void (*PaintWindowBorder)(WindowPtr pWin, - RegionPtr prgn, - int what); - void (*CopyWindow)(WindowPtr pWin, - DDXPointRec ptOldOrg, - RegionPtr prgnSrc); - int (*ValidateTree)(WindowPtr pParent, - WindowPtr pChild, - VTKind kind); - void (*PostValidateTree)(WindowPtr pParent, - WindowPtr pChild, - VTKind kind); + DRIWrappedFuncsRec wrap; DrawablePtr DRIDrawables[SAREA_MAX_DRAWABLES]; } DRIScreenPrivRec, *DRIScreenPrivPtr; Index: xc/programs/Xserver/GL/dri/sarea.h diff -u xc/programs/Xserver/GL/dri/sarea.h:1.3 xc/programs/Xserver/GL/dri/sarea.h:1.4 --- xc/programs/Xserver/GL/dri/sarea.h:1.3 Wed Mar 8 16:29:03 2000 +++ xc/programs/Xserver/GL/dri/sarea.h Wed Mar 8 16:29:03 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/GL/dri/sarea.h,v 1.3 2000/02/14 06:27:14 martin Exp $ */ +/* $XFree86: xc/programs/Xserver/GL/dri/sarea.h,v 1.4 2000/02/23 04:46:52 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -31,7 +31,6 @@ * Kevin E. Martin * Jens Owen * - * $PI: xc/programs/Xserver/GL/dri/sarea.h,v 1.9 1999/05/19 01:26:35 martin Exp $ */ #ifndef _SAREA_H_ Index: xc/programs/Xserver/GL/dri/xf86dri.c diff -u xc/programs/Xserver/GL/dri/xf86dri.c:1.5 xc/programs/Xserver/GL/dri/xf86dri.c:1.6 --- xc/programs/Xserver/GL/dri/xf86dri.c:1.5 Wed Mar 8 16:29:03 2000 +++ xc/programs/Xserver/GL/dri/xf86dri.c Wed Mar 8 16:29:03 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/GL/dri/xf86dri.c,v 1.5 2000/02/15 07:13:32 martin Exp $ */ +/* $XFree86: xc/programs/Xserver/GL/dri/xf86dri.c,v 1.6 2000/02/23 04:46:52 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -31,7 +31,6 @@ * Kevin E. Martin * Jens Owen * - * $PI: xc/programs/Xserver/GL/dri/xf86dri.c,v 1.20 1999/06/24 19:10:40 faith Exp $ */ #if XFree86LOADER Index: xc/programs/Xserver/GL/glx/Imakefile diff -u xc/programs/Xserver/GL/glx/Imakefile:1.6 xc/programs/Xserver/GL/glx/Imakefile:1.7 --- xc/programs/Xserver/GL/glx/Imakefile:1.6 Mon Jun 14 10:28:46 1999 +++ xc/programs/Xserver/GL/glx/Imakefile Wed Mar 8 16:29:03 2000 @@ -1,5 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/GL/glx/Imakefile,v 1.6 1999/06/14 14:28:46 dawes Exp $ -XCOMM $PI: xc/programs/Xserver/GL/glx/Imakefile,v 1.11 1999/05/27 03:43:33 jens Exp $ +XCOMM $XFree86: xc/programs/Xserver/GL/glx/Imakefile,v 1.7 2000/02/23 04:46:53 martin Exp $ #define IHaveModules #include Index: xc/programs/Xserver/GL/include/GL/xf86glx.h diff -u xc/programs/Xserver/GL/include/GL/xf86glx.h:1.3 xc/programs/Xserver/GL/include/GL/xf86glx.h:1.4 --- xc/programs/Xserver/GL/include/GL/xf86glx.h:1.3 Mon Jun 14 03:31:41 1999 +++ xc/programs/Xserver/GL/include/GL/xf86glx.h Wed Mar 8 16:29:05 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/GL/include/GL/xf86glx.h,v 1.3 1999/06/14 07:31:41 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/GL/include/GL/xf86glx.h,v 1.4 2000/02/23 04:46:54 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -30,7 +30,6 @@ * Authors: * Kevin E. Martin * - * $PI: xc/programs/Xserver/GL/include/GL/xf86glx.h,v 1.6 1999/06/10 00:31:50 martin Exp $ */ #include "miscstruct.h" Index: xc/programs/Xserver/GL/mesa/Imakefile diff -u xc/programs/Xserver/GL/mesa/Imakefile:1.3 xc/programs/Xserver/GL/mesa/Imakefile:1.4 --- xc/programs/Xserver/GL/mesa/Imakefile:1.3 Mon Jun 14 10:37:12 1999 +++ xc/programs/Xserver/GL/mesa/Imakefile Wed Mar 8 16:29:06 2000 @@ -1,5 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/GL/mesa/Imakefile,v 1.3 1999/06/14 14:37:12 dawes Exp $ -XCOMM $PI: xc/programs/Xserver/GL/mesa/Imakefile,v 1.3 1999/03/15 17:11:59 martin Exp $ +XCOMM $XFree86: xc/programs/Xserver/GL/mesa/Imakefile,v 1.4 2000/02/23 04:46:54 martin Exp $ #define IHaveModules #include Index: xc/programs/Xserver/GL/mesa/include/Imakefile diff -u xc/programs/Xserver/GL/mesa/include/Imakefile:1.2 xc/programs/Xserver/GL/mesa/include/Imakefile:1.3 --- xc/programs/Xserver/GL/mesa/include/Imakefile:1.2 Mon Jun 14 03:31:41 1999 +++ xc/programs/Xserver/GL/mesa/include/Imakefile Wed Mar 8 16:29:06 2000 @@ -1,5 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/GL/mesa/include/Imakefile,v 1.2 1999/06/14 07:31:41 dawes Exp $ -XCOMM $PI: xc/programs/Xserver/GL/mesa/include/Imakefile,v 1.4 1999/03/15 21:36:09 martin Exp $ +XCOMM $XFree86: xc/programs/Xserver/GL/mesa/include/Imakefile,v 1.3 2000/02/23 04:46:54 martin Exp $ #define IHaveModules #include Index: xc/programs/Xserver/GL/mesa/include/GL/Imakefile diff -u xc/programs/Xserver/GL/mesa/include/GL/Imakefile:1.3 xc/programs/Xserver/GL/mesa/include/GL/Imakefile:1.4 --- xc/programs/Xserver/GL/mesa/include/GL/Imakefile:1.3 Wed Mar 8 16:29:06 2000 +++ xc/programs/Xserver/GL/mesa/include/GL/Imakefile Wed Mar 8 16:29:06 2000 @@ -1,5 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/GL/mesa/include/GL/Imakefile,v 1.3 2000/02/08 17:18:51 dawes Exp $ -XCOMM $PI: xc/programs/Xserver/GL/mesa/include/GL/Imakefile,v 1.6 1999/03/15 21:36:09 martin Exp $ +XCOMM $XFree86: xc/programs/Xserver/GL/mesa/include/GL/Imakefile,v 1.4 2000/02/23 04:46:55 martin Exp $ #define IHaveModules #include Index: xc/programs/Xserver/GL/mesa/src/GLcoremodule.c diff -u xc/programs/Xserver/GL/mesa/src/GLcoremodule.c:1.4 xc/programs/Xserver/GL/mesa/src/GLcoremodule.c:1.5 --- xc/programs/Xserver/GL/mesa/src/GLcoremodule.c:1.4 Wed Mar 8 16:29:07 2000 +++ xc/programs/Xserver/GL/mesa/src/GLcoremodule.c Wed Mar 8 16:29:07 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/GL/mesa/src/GLcoremodule.c,v 1.4 2000/02/18 16:23:12 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/GL/mesa/src/GLcoremodule.c,v 1.5 2000/02/23 04:46:55 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -30,7 +30,6 @@ * Authors: * Kevin E. Martin * - * $PI: xc/programs/Xserver/GL/mesa/src/GLcoremodule.c,v 1.6 1999/05/27 03:43:46 jens Exp $ */ #include "xf86Module.h" Index: xc/programs/Xserver/GL/mesa/src/Imakefile diff -u xc/programs/Xserver/GL/mesa/src/Imakefile:1.11 xc/programs/Xserver/GL/mesa/src/Imakefile:1.13 --- xc/programs/Xserver/GL/mesa/src/Imakefile:1.11 Wed Mar 8 16:29:07 2000 +++ xc/programs/Xserver/GL/mesa/src/Imakefile Wed Mar 8 16:29:07 2000 @@ -1,5 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/GL/mesa/src/Imakefile,v 1.11 2000/02/18 12:18:56 tsi Exp $ -XCOMM $PI: xc/programs/Xserver/GL/mesa/src/Imakefile,v 1.9 1999/05/27 03:43:46 jens Exp $ +XCOMM $XFree86: xc/programs/Xserver/GL/mesa/src/Imakefile,v 1.13 2000/03/02 16:07:38 martin Exp $ #define IHaveModules #include @@ -67,6 +66,9 @@ LinkSourceFile(fog.c,../../../../../extras/Mesa/src) LinkSourceFile(fog.h,../../../../../extras/Mesa/src) LinkSourceFile(fog_tmp.h,../../../../../extras/Mesa/src) +LinkSourceFile(general_clip.h,../../../../../extras/Mesa/src) +LinkSourceFile(get.c,../../../../../extras/Mesa/src) +LinkSourceFile(get.h,../../../../../extras/Mesa/src) LinkSourceFile(glapi.h,../../../../../extras/Mesa/src) LinkSourceFile(glapi.c,../../../../../extras/Mesa/src) LinkSourceFile(glapioffsets.h,../../../../../extras/Mesa/src) @@ -77,9 +79,6 @@ LinkSourceFile(glheader.h,../../../../../extras/Mesa/src) LinkSourceFile(glthread.c,../../../../../extras/Mesa/src) LinkSourceFile(glthread.h,../../../../../extras/Mesa/src) -LinkSourceFile(general_clip.h,../../../../../extras/Mesa/src) -LinkSourceFile(get.c,../../../../../extras/Mesa/src) -LinkSourceFile(get.h,../../../../../extras/Mesa/src) LinkSourceFile(hash.c,../../../../../extras/Mesa/src) LinkSourceFile(hash.h,../../../../../extras/Mesa/src) LinkSourceFile(hint.c,../../../../../extras/Mesa/src) Index: xc/programs/Xserver/GL/mesa/src/X/Imakefile diff -u xc/programs/Xserver/GL/mesa/src/X/Imakefile:1.6 xc/programs/Xserver/GL/mesa/src/X/Imakefile:1.7 --- xc/programs/Xserver/GL/mesa/src/X/Imakefile:1.6 Wed Mar 8 16:29:07 2000 +++ xc/programs/Xserver/GL/mesa/src/X/Imakefile Wed Mar 8 16:29:07 2000 @@ -1,5 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/GL/mesa/src/X/Imakefile,v 1.6 2000/02/08 17:18:52 dawes Exp $ -XCOMM $PI: xc/programs/Xserver/GL/mesa/src/X/Imakefile,v 1.6 1999/03/15 21:36:10 martin Exp $ +XCOMM $XFree86: xc/programs/Xserver/GL/mesa/src/X/Imakefile,v 1.7 2000/02/23 04:46:56 martin Exp $ #define IHaveModules #include Index: xc/programs/Xserver/GL/mesa/src/X/xf86glx.c diff -u xc/programs/Xserver/GL/mesa/src/X/xf86glx.c:1.6 xc/programs/Xserver/GL/mesa/src/X/xf86glx.c:1.7 --- xc/programs/Xserver/GL/mesa/src/X/xf86glx.c:1.6 Wed Mar 8 16:29:08 2000 +++ xc/programs/Xserver/GL/mesa/src/X/xf86glx.c Wed Mar 8 16:29:08 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/GL/mesa/src/X/xf86glx.c,v 1.6 2000/02/08 17:18:52 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/GL/mesa/src/X/xf86glx.c,v 1.7 2000/02/23 04:46:56 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -30,7 +30,6 @@ * Authors: * Kevin E. Martin * - * $PI: xc/programs/Xserver/GL/mesa/src/X/xf86glx.c,v 1.15 1999/08/04 18:14:14 faith Exp $ */ #include Index: xc/programs/Xserver/GL/mesa/src/X/xf86glx_util.c diff -u xc/programs/Xserver/GL/mesa/src/X/xf86glx_util.c:1.3 xc/programs/Xserver/GL/mesa/src/X/xf86glx_util.c:1.5 --- xc/programs/Xserver/GL/mesa/src/X/xf86glx_util.c:1.3 Mon Jun 14 03:31:43 1999 +++ xc/programs/Xserver/GL/mesa/src/X/xf86glx_util.c Wed Mar 8 16:29:08 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/GL/mesa/src/X/xf86glx_util.c,v 1.3 1999/06/14 07:31:43 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/GL/mesa/src/X/xf86glx_util.c,v 1.5 2000/03/02 16:07:39 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -29,8 +29,7 @@ /* * Authors: * Kevin E. Martin - * - * $PI: xc/programs/Xserver/GL/mesa/src/X/xf86glx_util.c,v 1.6 1999/05/27 03:43:48 jens Exp $ + * Brian Paul */ #include @@ -45,7 +44,7 @@ #define ROUNDUP(nbytes, pad) ((((nbytes) + ((pad)-1)) / (pad)) * ((pad)>>3)) -XMesaImage *XMesaCreateImage(int depth, int width, int height, char *data) +XMesaImage *XMesaCreateImage(int bitsPerPixel, int width, int height, char *data) { XMesaImage *image; @@ -56,8 +55,8 @@ image->height = height; image->data = data; /* Always pad to 32 bits */ - image->bytes_per_line = ROUNDUP((depth * width), 32); - image->bits_per_pixel = depth; + image->bytes_per_line = ROUNDUP((bitsPerPixel * width), 32); + image->bits_per_pixel = bitsPerPixel; } return image; Index: xc/programs/Xserver/GL/mesa/src/X/xf86glx_util.h diff -u xc/programs/Xserver/GL/mesa/src/X/xf86glx_util.h:1.2 xc/programs/Xserver/GL/mesa/src/X/xf86glx_util.h:1.4 --- xc/programs/Xserver/GL/mesa/src/X/xf86glx_util.h:1.2 Mon Jun 14 03:31:43 1999 +++ xc/programs/Xserver/GL/mesa/src/X/xf86glx_util.h Wed Mar 8 16:29:08 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/GL/mesa/src/X/xf86glx_util.h,v 1.2 1999/06/14 07:31:43 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/GL/mesa/src/X/xf86glx_util.h,v 1.4 2000/03/02 16:07:39 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -29,8 +29,7 @@ /* * Authors: * Kevin E. Martin - * - * $PI: xc/programs/Xserver/GL/mesa/src/X/xf86glx_util.h,v 1.5 1999/03/15 21:36:10 martin Exp $ + * Brian Paul */ #ifndef _XF86GLX_UTIL_H_ @@ -50,7 +49,7 @@ int bits_per_pixel; }; -extern XMesaImage *XMesaCreateImage(int depth, int width, int height, +extern XMesaImage *XMesaCreateImage(int bitsPerPixel, int width, int height, char *data); extern void XMesaDestroyImage(XMesaImage *image); extern unsigned long XMesaGetPixel(XMesaImage *image, int x, int y); Index: xc/programs/Xserver/GL/mesa/src/X/xf86glxint.h diff -u xc/programs/Xserver/GL/mesa/src/X/xf86glxint.h:1.2 xc/programs/Xserver/GL/mesa/src/X/xf86glxint.h:1.3 --- xc/programs/Xserver/GL/mesa/src/X/xf86glxint.h:1.2 Mon Jun 14 03:31:44 1999 +++ xc/programs/Xserver/GL/mesa/src/X/xf86glxint.h Wed Mar 8 16:29:08 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/GL/mesa/src/X/xf86glxint.h,v 1.2 1999/06/14 07:31:44 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/GL/mesa/src/X/xf86glxint.h,v 1.3 2000/02/23 04:46:57 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -30,7 +30,6 @@ * Authors: * Kevin E. Martin * - * $PI: xc/programs/Xserver/GL/mesa/src/X/xf86glxint.h,v 1.7 1999/04/11 04:20:55 martin Exp $ */ #ifndef _XF86GLXINT_H_ Index: xc/programs/Xserver/Xext/fontcache.c diff -u xc/programs/Xserver/Xext/fontcache.c:1.4 xc/programs/Xserver/Xext/fontcache.c:1.5 --- xc/programs/Xserver/Xext/fontcache.c:1.4 Wed Mar 8 16:29:28 2000 +++ xc/programs/Xserver/Xext/fontcache.c Wed Mar 8 16:29:28 2000 @@ -25,9 +25,9 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: fontcache.c,v 1.12 1999/01/31 13:47:45 akiyama Exp $ + * Id: fontcache.c,v 1.12 1999/01/31 13:47:45 akiyama Exp $ */ -/* $XFree86: xc/programs/Xserver/Xext/fontcache.c,v 1.4 2000/02/18 16:16:51 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/Xext/fontcache.c,v 1.5 2000/02/23 20:29:39 dawes Exp $ */ /* THIS IS NOT AN X CONSORTIUM STANDARD */ Index: xc/programs/Xserver/Xext/panoramiX.c diff -u xc/programs/Xserver/Xext/panoramiX.c:3.15 xc/programs/Xserver/Xext/panoramiX.c:3.17 --- xc/programs/Xserver/Xext/panoramiX.c:3.15 Wed Mar 8 16:29:28 2000 +++ xc/programs/Xserver/Xext/panoramiX.c Wed Mar 8 16:29:28 2000 @@ -19,7 +19,7 @@ * or in FAR 52.227-19, as applicable. * * * *****************************************************************/ -/* $XFree86: xc/programs/Xserver/Xext/panoramiX.c,v 3.15 2000/01/22 01:59:03 mvojkovi Exp $ */ +/* $XFree86: xc/programs/Xserver/Xext/panoramiX.c,v 3.17 2000/03/03 22:17:37 mvojkovi Exp $ */ #define NEED_REPLIES #include @@ -405,6 +405,27 @@ return pWin; } +typedef struct _connect_callback_list { + void (*func)(void); + struct _connect_callback_list *next; +} XineramaConnectionCallbackList; + +static XineramaConnectionCallbackList *ConnectionCallbackList = NULL; + +Bool +XineramaRegisterConnectionBlockCallback(void (*func)(void)) +{ + XineramaConnectionCallbackList *newlist; + + if(!(newlist = xalloc(sizeof(XineramaConnectionCallbackList)))) + return FALSE; + + newlist->next = ConnectionCallbackList; + newlist->func = func; + ConnectionCallbackList = newlist; + + return TRUE; +} /* * PanoramiXExtensionInit(): @@ -698,6 +719,16 @@ height_mult = root->pixHeight / old_height; root->mmWidth *= width_mult; root->mmHeight *= height_mult; + + while(ConnectionCallbackList) { + pointer tmp; + + tmp = (pointer)ConnectionCallbackList; + (*ConnectionCallbackList->func)(); + ConnectionCallbackList = ConnectionCallbackList->next; + xfree(tmp); + } + return TRUE; } @@ -850,6 +881,8 @@ if (client->swapped) { swaps(&rep.sequenceNumber, n); swapl(&rep.length, n); + swaps(&rep.majorVersion, n); + swaps(&rep.minorVersion, n); } WriteToClient(client, sizeof (xPanoramiXQueryVersionReply), (char *)&rep); return (client->noClientException); @@ -935,6 +968,73 @@ } +int +ProcXineramaIsActive(ClientPtr client) +{ + REQUEST(xXineramaIsActiveReq); + xXineramaIsActiveReply rep; + + REQUEST_SIZE_MATCH(xXineramaIsActiveReq); + + rep.type = X_Reply; + rep.length = 0; + rep.sequenceNumber = client->sequence; + rep.state = !noPanoramiXExtension; + if (client->swapped) { + register int n; + swaps (&rep.sequenceNumber, n); + swapl (&rep.length, n); + swapl (&rep.state, n); + } + WriteToClient (client, sizeof (xXineramaIsActiveReply), (char *) &rep); + return client->noClientException; +} + + +int +ProcXineramaQueryScreens(ClientPtr client) +{ + REQUEST(xXineramaQueryScreensReq); + xXineramaQueryScreensReply rep; + + REQUEST_SIZE_MATCH(xXineramaQueryScreensReq); + + rep.type = X_Reply; + rep.sequenceNumber = client->sequence; + rep.number = (noPanoramiXExtension) ? 0 : PanoramiXNumScreens; + rep.length = rep.number * sz_XineramaScreenInfo >> 2; + if (client->swapped) { + register int n; + swaps (&rep.sequenceNumber, n); + swapl (&rep.length, n); + swapl (&rep.number, n); + } + WriteToClient (client, sizeof (xXineramaQueryScreensReply), (char *) &rep); + + if(!noPanoramiXExtension) { + xXineramaScreenInfo scratch; + int i; + + for(i = 0; i < PanoramiXNumScreens; i++) { + scratch.x_org = panoramiXdataPtr[i].x; + scratch.y_org = panoramiXdataPtr[i].y; + scratch.width = panoramiXdataPtr[i].width; + scratch.height = panoramiXdataPtr[i].height; + + if(client->swapped) { + register int n; + swaps (&scratch.x_org, n); + swaps (&scratch.y_org, n); + swaps (&scratch.width, n); + swaps (&scratch.height, n); + } + WriteToClient (client, sz_XineramaScreenInfo, (char *) &scratch); + } + } + + return client->noClientException; +} + static int ProcPanoramiXDispatch (ClientPtr client) @@ -949,6 +1049,10 @@ return ProcPanoramiXGetScreenCount(client); case X_PanoramiXGetScreenSize: return ProcPanoramiXGetScreenSize(client); + case X_XineramaIsActive: + return ProcXineramaIsActive(client); + case X_XineramaQueryScreens: + return ProcXineramaQueryScreens(client); } return BadRequest; } Index: xc/programs/Xserver/Xext/panoramiXSwap.c diff -u xc/programs/Xserver/Xext/panoramiXSwap.c:3.5 xc/programs/Xserver/Xext/panoramiXSwap.c:3.6 --- xc/programs/Xserver/Xext/panoramiXSwap.c:3.5 Sun Jul 18 04:34:27 1999 +++ xc/programs/Xserver/Xext/panoramiXSwap.c Wed Mar 8 16:29:29 2000 @@ -19,7 +19,7 @@ * or in FAR 52.227-19, as applicable. * * * *****************************************************************/ -/* $XFree86: xc/programs/Xserver/Xext/panoramiXSwap.c,v 3.5 1999/07/18 08:34:27 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/Xext/panoramiXSwap.c,v 3.6 2000/02/27 23:15:30 mvojkovi Exp $ */ #include #include "X.h" @@ -64,50 +64,38 @@ PROC_EXTERN(ProcPanoramiXQueryVersion); PROC_EXTERN(ProcPanoramiXGetState); PROC_EXTERN(ProcPanoramiXGetScreenCount); -PROC_EXTERN(PropPanoramiXGetScreenSize); +PROC_EXTERN(ProcPanoramiXGetScreenSize); + +PROC_EXTERN(ProcXineramaIsActive); +PROC_EXTERN(ProcXineramaQueryScreens); static int -#if NeedFunctionPrototypes SProcPanoramiXQueryVersion (ClientPtr client) -#else -SProcPanoramiXQueryVersion (client) - register ClientPtr client; -#endif { - register int n; - REQUEST(xPanoramiXQueryVersionReq); + REQUEST(xPanoramiXQueryVersionReq); + register int n; - swaps(&stuff->length,n); - REQUEST_SIZE_MATCH (xPanoramiXQueryVersionReq); - return ProcPanoramiXQueryVersion(client); + swaps(&stuff->length,n); + REQUEST_SIZE_MATCH (xPanoramiXQueryVersionReq); + return ProcPanoramiXQueryVersion(client); } static int -#if NeedFunctionPrototypes SProcPanoramiXGetState(ClientPtr client) -#else -SProcPanoramiXGetState(client) - register ClientPtr client; -#endif { REQUEST(xPanoramiXGetStateReq); - register int n; + register int n; swaps (&stuff->length, n); REQUEST_SIZE_MATCH(xPanoramiXGetStateReq); - + return ProcPanoramiXGetState(client); } static int -#if NeedFunctionPrototypes SProcPanoramiXGetScreenCount(ClientPtr client) -#else -SProcPanoramixGetScreenCount(client) - register ClientPtr client; -#endif { REQUEST(xPanoramiXGetScreenCountReq); - register int n; + register int n; swaps (&stuff->length, n); REQUEST_SIZE_MATCH(xPanoramiXGetScreenCountReq); @@ -115,29 +103,43 @@ } static int -#if NeedFunctionPrototypes SProcPanoramiXGetScreenSize(ClientPtr client) -#else -SProcPanoramiXGetScreenSize(client) - register ClientPtr client; -#endif { REQUEST(xPanoramiXGetScreenSizeReq); - WindowPtr pWin; - register int n; + register int n; swaps (&stuff->length, n); REQUEST_SIZE_MATCH(xPanoramiXGetScreenSizeReq); return ProcPanoramiXGetScreenSize(client); } + +static int +SProcXineramaIsActive(ClientPtr client) +{ + REQUEST(xXineramaIsActiveReq); + register int n; + + swaps (&stuff->length, n); + REQUEST_SIZE_MATCH(xXineramaIsActiveReq); + return ProcXineramaIsActive(client); +} + + +static int +SProcXineramaQueryScreens(ClientPtr client) +{ + REQUEST(xXineramaQueryScreensReq); + register int n; + + swaps (&stuff->length, n); + REQUEST_SIZE_MATCH(xXineramaQueryScreensReq); + return ProcXineramaQueryScreens(client); +} + + int -#if NeedFunctionPrototypes SProcPanoramiXDispatch (ClientPtr client) -#else -SProcPanoramiXDispatch (client) - ClientPtr client; -#endif { REQUEST(xReq); switch (stuff->data) { @@ -149,6 +151,10 @@ return SProcPanoramiXGetScreenCount(client); case X_PanoramiXGetScreenSize: return SProcPanoramiXGetScreenSize(client); - return BadRequest; + case X_XineramaIsActive: + return SProcXineramaIsActive(client); + case X_XineramaQueryScreens: + return SProcXineramaQueryScreens(client); } + return BadRequest; } Index: xc/programs/Xserver/Xext/panoramiXprocs.c diff -u xc/programs/Xserver/Xext/panoramiXprocs.c:3.21 xc/programs/Xserver/Xext/panoramiXprocs.c:3.22 --- xc/programs/Xserver/Xext/panoramiXprocs.c:3.21 Wed Mar 8 16:29:29 2000 +++ xc/programs/Xserver/Xext/panoramiXprocs.c Wed Mar 8 16:29:29 2000 @@ -22,7 +22,7 @@ /* Massively rewritten by Mark Vojkovich */ -/* $XFree86: xc/programs/Xserver/Xext/panoramiXprocs.c,v 3.21 2000/01/22 01:59:03 mvojkovi Exp $ */ +/* $XFree86: xc/programs/Xserver/Xext/panoramiXprocs.c,v 3.22 2000/02/27 23:15:30 mvojkovi Exp $ */ #include #include "X.h" @@ -1251,7 +1251,7 @@ memcpy((char *) origPts, (char *) &stuff[1], npoint * sizeof(xPoint)); FOR_NSCREENS_FORWARD(j){ - if(j) memcpy(&stuff[1], origPts, npoint * sizeof(xPoint)); + if(j) memcpy(&stuff[1], origPts, npoint * sizeof(xPoint)); if (isRoot) { int x_off = panoramiXdataPtr[j].x; @@ -1382,7 +1382,8 @@ int x_off = panoramiXdataPtr[j].x; int y_off = panoramiXdataPtr[j].y; - if(x_off || x_off) { + + if(x_off || y_off) { xRectangle *rects = (xRectangle *) &stuff[1]; for (i = nrects; i--; rects++) { @@ -1390,7 +1391,7 @@ rects->y -= y_off; } } - } + } stuff->drawable = draw->info[j].id; stuff->gc = gc->info[j].id; Index: xc/programs/Xserver/Xext/panoramiXsrv.h diff -u xc/programs/Xserver/Xext/panoramiXsrv.h:1.4 xc/programs/Xserver/Xext/panoramiXsrv.h:1.5 --- xc/programs/Xserver/Xext/panoramiXsrv.h:1.4 Wed Mar 8 16:29:29 2000 +++ xc/programs/Xserver/Xext/panoramiXsrv.h Wed Mar 8 16:29:29 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/Xext/panoramiXsrv.h,v 1.4 2000/01/22 01:59:03 mvojkovi Exp $ */ +/* $XFree86: xc/programs/Xserver/Xext/panoramiXsrv.h,v 1.5 2000/03/03 22:17:37 mvojkovi Exp $ */ #ifndef _PANORAMIXSRV_H_ #define _PANORAMIXSRV_H_ @@ -15,6 +15,8 @@ extern PanoramiXRes * PanoramiXFindIDByScrnum(RESTYPE, XID, int); extern PanoramiXRes * PanoramiXFindIDOnAnyScreen(RESTYPE, XID); extern WindowPtr PanoramiXChangeWindow(int, WindowPtr); +extern Bool XineramaRegisterConnectionBlockCallback(void (*func)(void)); + extern RegionRec XineramaScreenRegions[MAXSCREENS]; extern unsigned long XRC_DRAWABLE; Index: xc/programs/Xserver/Xext/shape.c diff -u xc/programs/Xserver/Xext/shape.c:3.10 xc/programs/Xserver/Xext/shape.c:3.11 --- xc/programs/Xserver/Xext/shape.c:3.10 Wed Mar 8 16:29:30 2000 +++ xc/programs/Xserver/Xext/shape.c Wed Mar 8 16:29:30 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/Xext/shape.c,v 3.10 2000/01/02 00:18:20 mvojkovi Exp $ */ +/* $XFree86: xc/programs/Xserver/Xext/shape.c,v 3.11 2000/03/03 20:50:25 mvojkovi Exp $ */ /************************************************************ Copyright 1989, 1998 The Open Group @@ -375,7 +375,7 @@ if(!(win = (PanoramiXRes *)SecurityLookupIDByType( client, stuff->dest, XRT_WINDOW, SecurityWriteAccess))) - return BadRequest; + return BadWindow; FOR_NSCREENS(j) { stuff->dest = win->info[j].id; @@ -464,15 +464,19 @@ if(!(win = (PanoramiXRes *)SecurityLookupIDByType( client, stuff->dest, XRT_WINDOW, SecurityWriteAccess))) - return BadRequest; + return BadWindow; - if(!(pmap = (PanoramiXRes *)SecurityLookupIDByType( + if(stuff->src != None) { + if(!(pmap = (PanoramiXRes *)SecurityLookupIDByType( client, stuff->src, XRT_PIXMAP, SecurityReadAccess))) - return BadRequest; + return BadPixmap; + } else + pmap = NULL; FOR_NSCREENS(j) { stuff->dest = win->info[j].id; - stuff->src = pmap->info[j].id; + if(pmap) + stuff->src = pmap->info[j].id; result = ProcShapeMask (client); BREAK_IF(result != Success); } @@ -575,11 +579,11 @@ if(!(win = (PanoramiXRes *)SecurityLookupIDByType( client, stuff->dest, XRT_WINDOW, SecurityWriteAccess))) - return BadRequest; + return BadWindow; if(!(win2 = (PanoramiXRes *)SecurityLookupIDByType( client, stuff->src, XRT_WINDOW, SecurityReadAccess))) - return BadRequest; + return BadWindow; FOR_NSCREENS(j) { stuff->dest = win->info[j].id; @@ -644,7 +648,7 @@ if(!(win = (PanoramiXRes *)SecurityLookupIDByType( client, stuff->dest, XRT_WINDOW, SecurityWriteAccess))) - return BadRequest; + return BadWindow; FOR_NSCREENS(j) { stuff->dest = win->info[j].id; @@ -1050,37 +1054,29 @@ if ( !noPanoramiXExtension ) return ProcPanoramiXShapeRectangles (client); else - return ProcShapeRectangles (client); -#else - return ProcShapeRectangles (client); #endif + return ProcShapeRectangles (client); case X_ShapeMask: #ifdef PANORAMIX if ( !noPanoramiXExtension ) return ProcPanoramiXShapeMask (client); else - return ProcShapeMask (client); -#else - return ProcShapeMask (client); #endif + return ProcShapeMask (client); case X_ShapeCombine: #ifdef PANORAMIX if ( !noPanoramiXExtension ) return ProcPanoramiXShapeCombine (client); else - return ProcShapeCombine (client); -#else - return ProcShapeCombine (client); #endif + return ProcShapeCombine (client); case X_ShapeOffset: #ifdef PANORAMIX if ( !noPanoramiXExtension ) return ProcPanoramiXShapeOffset (client); else - return ProcShapeOffset (client); -#else - return ProcShapeOffset (client); #endif + return ProcShapeOffset (client); case X_ShapeQueryExtents: return ProcShapeQueryExtents (client); case X_ShapeSelectInput: Index: xc/programs/Xserver/Xext/shm.c diff -u xc/programs/Xserver/Xext/shm.c:3.20 xc/programs/Xserver/Xext/shm.c:3.21 --- xc/programs/Xserver/Xext/shm.c:3.20 Wed Mar 8 16:29:31 2000 +++ xc/programs/Xserver/Xext/shm.c Wed Mar 8 16:29:31 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/Xext/shm.c,v 3.20 2000/01/02 00:18:21 mvojkovi Exp $ */ +/* $XFree86: xc/programs/Xserver/Xext/shm.c,v 3.21 2000/03/05 16:59:01 dawes Exp $ */ /************************************************************ Copyright 1989, 1998 The Open Group @@ -766,6 +766,7 @@ } xfree(newPix); } else { + shmdesc->refcnt++; AddResource(stuff->pid, ShmPixType, shmdesc); AddResource(stuff->pid, XRT_PIXMAP, newPix); } Index: xc/programs/Xserver/Xext/xf86bigfont.c diff -u xc/programs/Xserver/Xext/xf86bigfont.c:1.4 xc/programs/Xserver/Xext/xf86bigfont.c:1.5 --- xc/programs/Xserver/Xext/xf86bigfont.c:1.4 Wed Mar 8 16:29:31 2000 +++ xc/programs/Xserver/Xext/xf86bigfont.c Wed Mar 8 16:29:31 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/Xext/xf86bigfont.c,v 1.4 2000/02/11 18:06:40 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/Xext/xf86bigfont.c,v 1.5 2000/02/29 03:09:07 dawes Exp $ */ /* * BIGFONT extension for sharing font metrics between clients (if possible) * and for transmitting font metrics to clients in a compressed form. @@ -40,7 +40,10 @@ #ifdef CSRG_BASED #include #endif -#ifdef linux +#if defined(linux) && !defined(__GNU_LIBRARY__) +/* Linux libc4 and libc5 only (because glibc doesn't include kernel headers): + Linux 2.0.x and 2.2.x define SHMLBA as PAGE_SIZE, but forget to define + PAGE_SIZE. It is defined in . */ #include #endif #ifdef SVR4 @@ -53,6 +56,8 @@ #include #include #include +#include +#include #include #endif @@ -85,6 +90,11 @@ #ifdef HAS_SHM +/* A random signature, transmitted to the clients so they can verify that the + shared memory segment they are attaching to was really established by the + X server they are talking to. */ +static CARD32 signature; + /* Index for additional information stored in a FontRec's devPrivates array. */ static int FontShmdescIndex; @@ -147,7 +157,14 @@ return; } #endif + + srand((unsigned int) time(NULL)); + signature = ((unsigned int) (65536.0/(RAND_MAX+1.0) * rand()) << 16) + + (unsigned int) (65536.0/(RAND_MAX+1.0) * rand()); + /* fprintf(stderr, "signature = 0x%08X\n", signature); */ + FontShmdescIndex = AllocateFontPrivateIndex(); + pagesize = SHMLBA; #endif } @@ -301,7 +318,14 @@ reply.minorVersion = XF86BIGFONT_MINOR_VERSION; reply.uid = geteuid(); reply.gid = getegid(); - reply.capabilities = 0; /* may add some bits here in future versions */ + reply.signature = signature; + reply.capabilities = +#ifdef HAS_SHM + (LocalClient(client) && !client->swapped ? XF86Bigfont_CAP_LocalShm : 0) +#else + 0 +#endif + ; /* may add more bits here in future versions */ if (client->swapped) { char tmp; swaps(&reply.sequenceNumber, tmp); @@ -310,6 +334,7 @@ swaps(&reply.minorVersion, tmp); swapl(&reply.uid, tmp); swapl(&reply.gid, tmp); + swapl(&reply.signature, tmp); } WriteToClient(client, sizeof(xXF86BigfontQueryVersionReply), (char *)&reply); @@ -343,6 +368,7 @@ { FontPtr pFont; REQUEST(xXF86BigfontQueryFontReq); + CARD32 stuff_flags; xCharInfo* pmax; xCharInfo* pmin; int nCharInfos; @@ -357,7 +383,20 @@ CARD16* pUniqIndex2Index; CARD32 nUniqCharInfos; +#if 0 REQUEST_SIZE_MATCH(xXF86BigfontQueryFontReq); +#else + switch (client->req_len) { + case 2: /* client with version 1.0 libX11 */ + stuff_flags = (LocalClient(client) && !client->swapped ? XF86Bigfont_FLAGS_Shm : 0); + break; + case 3: /* client with version 1.1 libX11 */ + stuff_flags = stuff->flags; + break; + default: + return BadLength; + } +#endif client->errorValue = stuff->id; /* EITHER font or gc */ pFont = (FontPtr)SecurityLookupIDByType(client, stuff->id, RT_FONT, SecurityReadAccess); @@ -392,11 +431,12 @@ pDesc = (ShmDescPtr) FontGetPrivate(pFont, FontShmdescIndex); if (pDesc) { pCI = (xCharInfo *) pDesc->attach_addr; - if (LocalClient(client) && !client->swapped) + if (stuff_flags & XF86Bigfont_FLAGS_Shm) shmid = pDesc->shmid; } else { - if (LocalClient(client) && !client->swapped) - pDesc = shmalloc(nCharInfos * sizeof(xCharInfo)); + if (stuff_flags & XF86Bigfont_FLAGS_Shm) + pDesc = shmalloc(nCharInfos * sizeof(xCharInfo) + + sizeof(CARD32)); if (pDesc) { pCI = (xCharInfo *) pDesc->attach_addr; shmid = pDesc->shmid; @@ -440,6 +480,7 @@ } #ifdef HAS_SHM if (pDesc) { + *(CARD32 *)(pCI + nCharInfos) = signature; if (!FontSetPrivate(pFont, FontShmdescIndex, pDesc)) { shmdealloc(pDesc); return BadAlloc; Index: xc/programs/Xserver/fb/Imakefile diff -u xc/programs/Xserver/fb/Imakefile:1.3 xc/programs/Xserver/fb/Imakefile:1.4 --- xc/programs/Xserver/fb/Imakefile:1.3 Wed Mar 8 16:29:47 2000 +++ xc/programs/Xserver/fb/Imakefile Wed Mar 8 16:29:47 2000 @@ -1,7 +1,7 @@ -XCOMM $XFree86: xc/programs/Xserver/fb/Imakefile,v 1.3 2000/02/14 19:20:26 dawes Exp $ +XCOMM $XFree86: xc/programs/Xserver/fb/Imakefile,v 1.4 2000/02/23 20:29:40 dawes Exp $ XCOMM XCOMM -XCOMM $Id: Imakefile,v 1.1 1999/11/02 03:54:44 keithp Exp $ +XCOMM Id: Imakefile,v 1.1 1999/11/02 03:54:44 keithp Exp $ #define IHaveModule #include Index: xc/programs/Xserver/fb/fb.h diff -u xc/programs/Xserver/fb/fb.h:1.11 xc/programs/Xserver/fb/fb.h:1.13 --- xc/programs/Xserver/fb/fb.h:1.11 Wed Mar 8 16:29:48 2000 +++ xc/programs/Xserver/fb/fb.h Wed Mar 8 16:29:48 2000 @@ -1,5 +1,5 @@ /* - * $Id: fb.h,v 1.1 1999/11/02 03:54:45 keithp Exp $ + * Id: fb.h,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fb.h,v 1.11 2000/02/18 16:23:12 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fb.h,v 1.13 2000/03/01 00:25:14 dawes Exp $ */ #ifndef _FB_H_ #define _FB_H_ @@ -1356,6 +1356,12 @@ int mode, int npt, DDXPointPtr ppt); + +void +fbZeroSegment (DrawablePtr pDrawable, + GCPtr pGC, + int nseg, + xSegment *pSegs); void fbPolyLine (DrawablePtr pDrawable, Index: xc/programs/Xserver/fb/fballpriv.c diff -u xc/programs/Xserver/fb/fballpriv.c:1.2 xc/programs/Xserver/fb/fballpriv.c:1.3 --- xc/programs/Xserver/fb/fballpriv.c:1.2 Wed Dec 29 21:33:58 1999 +++ xc/programs/Xserver/fb/fballpriv.c Wed Mar 8 16:29:48 2000 @@ -1,5 +1,5 @@ /* - * $Id: fballpriv.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ + * Id: fballpriv.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fballpriv.c,v 1.2 1999/12/30 02:33:58 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fballpriv.c,v 1.3 2000/02/23 20:29:41 dawes Exp $ */ #include "fb.h" Index: xc/programs/Xserver/fb/fbarc.c diff -u xc/programs/Xserver/fb/fbarc.c:1.2 xc/programs/Xserver/fb/fbarc.c:1.3 --- xc/programs/Xserver/fb/fbarc.c:1.2 Wed Mar 8 16:29:48 2000 +++ xc/programs/Xserver/fb/fbarc.c Wed Mar 8 16:29:48 2000 @@ -1,5 +1,5 @@ /* - * $Id: fbarc.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ + * Id: fbarc.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbarc.c,v 1.2 2000/02/14 19:20:26 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbarc.c,v 1.3 2000/02/23 20:29:41 dawes Exp $ */ #include "fb.h" #include "mizerarc.h" Index: xc/programs/Xserver/fb/fbbits.c diff -u xc/programs/Xserver/fb/fbbits.c:1.5 xc/programs/Xserver/fb/fbbits.c:1.6 --- xc/programs/Xserver/fb/fbbits.c:1.5 Wed Mar 8 16:29:48 2000 +++ xc/programs/Xserver/fb/fbbits.c Wed Mar 8 16:29:48 2000 @@ -1,5 +1,5 @@ /* - * $Id: fbbits.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ + * Id: fbbits.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbbits.c,v 1.5 2000/02/17 14:16:22 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbbits.c,v 1.6 2000/02/23 20:29:41 dawes Exp $ */ #include "fb.h" #include "miline.h" Index: xc/programs/Xserver/fb/fbbits.h diff -u xc/programs/Xserver/fb/fbbits.h:1.6 xc/programs/Xserver/fb/fbbits.h:1.8 --- xc/programs/Xserver/fb/fbbits.h:1.6 Wed Mar 8 16:29:49 2000 +++ xc/programs/Xserver/fb/fbbits.h Wed Mar 8 16:29:49 2000 @@ -1,5 +1,5 @@ /* - * $Id: fbbits.h,v 1.1 1999/11/02 03:54:45 keithp Exp $ + * Id: fbbits.h,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbbits.h,v 1.6 2000/02/14 19:20:27 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbbits.h,v 1.8 2000/03/01 00:25:14 dawes Exp $ */ /* * This file defines functions for drawing some primitives using @@ -140,9 +140,8 @@ UNIT *bits; FbStride bitsStride; FbStride majorStep, minorStep; - BITS xor = (BITS) pPriv->xor; - BITS bgxor = (BITS) pPriv->bgxor; - unsigned char *dash, *lastDash; + BITS xorfg, xorbg; + unsigned char *dash, *lastDash, *firstDash; int dashlen; Bool even; Bool doOdd; @@ -150,17 +149,19 @@ fbGetDrawable (pDrawable, dst, dstStride, dstBpp); doOdd = pGC->lineStyle == LineDoubleDash; even = TRUE; - dash = pGC->dash; - lastDash = dash + pGC->numInDashList; - dashOffset %= pPriv->dashLength; - while (dashOffset >= *dash) + xorfg = (BITS) pPriv->xor; + xorbg = (BITS) pPriv->bgxor; + firstDash = pGC->dash; + lastDash = firstDash + pGC->numInDashList; + dash = firstDash; + while (dashOffset >= (dashlen = *dash++)) { - dashOffset -= *dash++; + dashOffset -= dashlen; if (dash == lastDash) - dash = pGC->dash; - even = !even; + dash = firstDash; + even ^= 1; } - dashlen = *dash - dashOffset; + dashlen -= dashOffset; bits = ((UNIT *) (dst + (y1 * dstStride))) + x1 * MUL; bitsStride = dstStride * (sizeof (FbBits) / sizeof (UNIT)); if (signdy < 0) @@ -175,25 +176,92 @@ majorStep = bitsStride; minorStep = signdx * MUL; } - while (len--) - { - if (even) - STORE(bits,xor); - else if (doOdd) - STORE(bits,bgxor); - bits += majorStep; - e += e1; - if (e >= 0) + if (dashlen >= len) + dashlen = len; + if (doOdd) + { + if (!even) + goto doubleOdd; + for (;;) { - bits += minorStep; - e += e3; + len -= dashlen; + while (dashlen--) + { + STORE(bits,xorfg); + bits += majorStep; + if ((e += e1) >= 0) + { + e += e3; + bits += minorStep; + } + } + if (!len) + break; + dashlen = *dash++; + if (dash == lastDash) + dash = firstDash; + if (dashlen >= len) + dashlen = len; +doubleOdd: + len -= dashlen; + while (dashlen--) + { + STORE(bits,xorbg); + bits += majorStep; + if ((e += e1) >= 0) + { + e += e3; + bits += minorStep; + } + } + if (!len) + break; + dashlen = *dash++; + /* numInDashList is even, no need to check here */ + if (dashlen >= len) + dashlen = len; } - if (!--dashlen) + } + else + { + if (!even) + goto onOffOdd; + for (;;) { - if (++dash == lastDash) - dash = pGC->dash; - dashlen = *dash; - even = !even; + len -= dashlen; + while (dashlen--) + { + STORE(bits,xorfg); + bits += majorStep; + if ((e += e1) >= 0) + { + e += e3; + bits += minorStep; + } + } + if (!len) + break; + dashlen = *dash++; + if (dash == lastDash) + dash = firstDash; + if (dashlen >= len) + dashlen = len; +onOffOdd: + len -= dashlen; + while (dashlen--) + { + bits += majorStep; + if ((e += e1) >= 0) + { + e += e3; + bits += minorStep; + } + } + if (!len) + break; + dashlen = *dash++; + if (dashlen >= len) + dashlen = len; } } } @@ -215,7 +283,8 @@ INT32 *pts = (INT32 *) ptsOrig; UNIT *bits = (UNIT *) dst; UNIT *point; - BITS fg = (BITS) xor; + BITS bxor = (BITS) xor; + BITS band = (BITS) and; FbStride bitsStride = dstStride * (sizeof (FbBits) / sizeof (UNIT)); INT32 ul, lr; INT32 off; @@ -228,13 +297,28 @@ bits += bitsStride * yoff + xoff * MUL; - while (npt--) + if (and == 0) + { + while (npt--) + { + pt = *pts++; + if (!isClipped(pt,ul,lr)) + { + point = bits + intToY(pt) * bitsStride + intToX(pt) * MUL; + STORE(point,bxor); + } + } + } + else { - pt = *pts++; - if (!isClipped(pt,ul,lr)) + while (npt--) { - point = bits + intToY(pt) * bitsStride + intToX(pt) * MUL; - STORE(point,fg); + pt = *pts++; + if (!isClipped(pt,ul,lr)) + { + point = bits + intToY(pt) * bitsStride + intToX(pt) * MUL; + RROP(point,band,bxor); + } } } } @@ -282,10 +366,20 @@ if (!(arc->width & 1)) { - if (mask & 2) - ARCRROP(yorgp + info.xorgo); - if (mask & 8) - ARCRROP(yorgop + info.xorgo); + if (andBits == 0) + { + if (mask & 2) + ARCCOPY(yorgp + info.xorgo); + if (mask & 8) + ARCCOPY(yorgop + info.xorgo); + } + else + { + if (mask & 2) + ARCRROP(yorgp + info.xorgo); + if (mask & 8) + ARCRROP(yorgop + info.xorgo); + } } if (!info.end.x || !info.end.y) { @@ -405,16 +499,33 @@ } if ((x == info.start.x) || (y == info.start.y)) mask = info.start.mask; - if (mask & 1) - ARCRROP(yorgp + yoffset + info.xorg + x * MUL); - if (mask & 4) - ARCRROP(yorgop - yoffset + info.xorgo - x * MUL); - if (arc->height & 1) - { - if (mask & 2) - ARCRROP(yorgp + yoffset + info.xorgo - x * MUL); - if (mask & 8) - ARCRROP(yorgop - yoffset + info.xorg + x * MUL); + if (andBits == 0) + { + if (mask & 1) + ARCCOPY(yorgp + yoffset + info.xorg + x * MUL); + if (mask & 4) + ARCCOPY(yorgop - yoffset + info.xorgo - x * MUL); + if (arc->height & 1) + { + if (mask & 2) + ARCCOPY(yorgp + yoffset + info.xorgo - x * MUL); + if (mask & 8) + ARCCOPY(yorgop - yoffset + info.xorg + x * MUL); + } + } + else + { + if (mask & 1) + ARCRROP(yorgp + yoffset + info.xorg + x * MUL); + if (mask & 4) + ARCRROP(yorgop - yoffset + info.xorgo - x * MUL); + if (arc->height & 1) + { + if (mask & 2) + ARCRROP(yorgp + yoffset + info.xorgo - x * MUL); + if (mask & 8) + ARCRROP(yorgop - yoffset + info.xorg + x * MUL); + } } } #undef ARCCOPY Index: xc/programs/Xserver/fb/fbblt.c diff -u xc/programs/Xserver/fb/fbblt.c:1.5 xc/programs/Xserver/fb/fbblt.c:1.6 --- xc/programs/Xserver/fb/fbblt.c:1.5 Wed Mar 8 16:29:49 2000 +++ xc/programs/Xserver/fb/fbblt.c Wed Mar 8 16:29:49 2000 @@ -1,5 +1,5 @@ /* - * $Id: fbblt.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ + * Id: fbblt.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbblt.c,v 1.5 2000/02/14 19:20:27 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbblt.c,v 1.6 2000/02/23 20:29:42 dawes Exp $ */ #include "fb.h" Index: xc/programs/Xserver/fb/fbbltone.c diff -u xc/programs/Xserver/fb/fbbltone.c:1.6 xc/programs/Xserver/fb/fbbltone.c:1.7 --- xc/programs/Xserver/fb/fbbltone.c:1.6 Wed Mar 8 16:29:49 2000 +++ xc/programs/Xserver/fb/fbbltone.c Wed Mar 8 16:29:49 2000 @@ -1,5 +1,5 @@ /* - * $Id: fbbltone.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ + * Id: fbbltone.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbbltone.c,v 1.6 2000/02/14 19:20:27 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbbltone.c,v 1.7 2000/02/23 20:29:42 dawes Exp $ */ #include "fb.h" Index: xc/programs/Xserver/fb/fbbstore.c diff -u xc/programs/Xserver/fb/fbbstore.c:1.1 xc/programs/Xserver/fb/fbbstore.c:1.2 --- xc/programs/Xserver/fb/fbbstore.c:1.1 Fri Nov 19 08:53:42 1999 +++ xc/programs/Xserver/fb/fbbstore.c Wed Mar 8 16:29:50 2000 @@ -1,5 +1,5 @@ /* - * $Id: fbbstore.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ + * Id: fbbstore.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbbstore.c,v 1.1 1999/11/19 13:53:42 hohndel Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbbstore.c,v 1.2 2000/02/23 20:29:42 dawes Exp $ */ #include "fb.h" Index: xc/programs/Xserver/fb/fbcopy.c diff -u xc/programs/Xserver/fb/fbcopy.c:1.3 xc/programs/Xserver/fb/fbcopy.c:1.4 --- xc/programs/Xserver/fb/fbcopy.c:1.3 Wed Mar 8 16:29:50 2000 +++ xc/programs/Xserver/fb/fbcopy.c Wed Mar 8 16:29:50 2000 @@ -1,5 +1,5 @@ /* - * $Id: fbcopy.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ + * Id: fbcopy.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbcopy.c,v 1.3 2000/02/14 19:20:28 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbcopy.c,v 1.4 2000/02/23 20:29:43 dawes Exp $ */ #include "fb.h" Index: xc/programs/Xserver/fb/fbfill.c diff -u xc/programs/Xserver/fb/fbfill.c:1.2 xc/programs/Xserver/fb/fbfill.c:1.3 --- xc/programs/Xserver/fb/fbfill.c:1.2 Wed Mar 8 16:29:50 2000 +++ xc/programs/Xserver/fb/fbfill.c Wed Mar 8 16:29:50 2000 @@ -1,5 +1,5 @@ /* - * $Id: fbfill.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ + * Id: fbfill.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbfill.c,v 1.2 2000/01/21 15:06:16 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbfill.c,v 1.3 2000/02/23 20:29:43 dawes Exp $ */ #include "fb.h" Index: xc/programs/Xserver/fb/fbfillrect.c diff -u xc/programs/Xserver/fb/fbfillrect.c:1.1 xc/programs/Xserver/fb/fbfillrect.c:1.2 --- xc/programs/Xserver/fb/fbfillrect.c:1.1 Fri Nov 19 08:53:43 1999 +++ xc/programs/Xserver/fb/fbfillrect.c Wed Mar 8 16:29:50 2000 @@ -1,5 +1,5 @@ /* - * $Id: fbfillrect.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ + * Id: fbfillrect.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbfillrect.c,v 1.1 1999/11/19 13:53:43 hohndel Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbfillrect.c,v 1.2 2000/02/23 20:29:43 dawes Exp $ */ #include "fb.h" Index: xc/programs/Xserver/fb/fbfillsp.c diff -u xc/programs/Xserver/fb/fbfillsp.c:1.1 xc/programs/Xserver/fb/fbfillsp.c:1.2 --- xc/programs/Xserver/fb/fbfillsp.c:1.1 Fri Nov 19 08:53:43 1999 +++ xc/programs/Xserver/fb/fbfillsp.c Wed Mar 8 16:29:50 2000 @@ -1,5 +1,5 @@ /* - * $Id: fbfillsp.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ + * Id: fbfillsp.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbfillsp.c,v 1.1 1999/11/19 13:53:43 hohndel Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbfillsp.c,v 1.2 2000/02/23 20:29:43 dawes Exp $ */ #include "fb.h" Index: xc/programs/Xserver/fb/fbgc.c diff -u xc/programs/Xserver/fb/fbgc.c:1.5 xc/programs/Xserver/fb/fbgc.c:1.6 --- xc/programs/Xserver/fb/fbgc.c:1.5 Wed Mar 8 16:29:51 2000 +++ xc/programs/Xserver/fb/fbgc.c Wed Mar 8 16:29:51 2000 @@ -1,5 +1,5 @@ /* - * $Id: fbgc.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ + * Id: fbgc.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbgc.c,v 1.5 2000/02/14 19:20:28 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbgc.c,v 1.6 2000/02/23 20:29:44 dawes Exp $ */ #include "fb.h" Index: xc/programs/Xserver/fb/fbgetsp.c diff -u xc/programs/Xserver/fb/fbgetsp.c:1.3 xc/programs/Xserver/fb/fbgetsp.c:1.4 --- xc/programs/Xserver/fb/fbgetsp.c:1.3 Wed Mar 8 16:29:51 2000 +++ xc/programs/Xserver/fb/fbgetsp.c Wed Mar 8 16:29:51 2000 @@ -1,5 +1,5 @@ /* - * $Id: fbgetsp.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ + * Id: fbgetsp.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbgetsp.c,v 1.3 2000/02/14 19:20:29 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbgetsp.c,v 1.4 2000/02/23 20:29:44 dawes Exp $ */ #include "fb.h" Index: xc/programs/Xserver/fb/fbglyph.c diff -u xc/programs/Xserver/fb/fbglyph.c:1.6 xc/programs/Xserver/fb/fbglyph.c:1.7 --- xc/programs/Xserver/fb/fbglyph.c:1.6 Wed Mar 8 16:29:51 2000 +++ xc/programs/Xserver/fb/fbglyph.c Wed Mar 8 16:29:51 2000 @@ -1,5 +1,5 @@ /* - * $Id: fbglyph.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ + * Id: fbglyph.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbglyph.c,v 1.6 2000/02/18 16:23:13 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbglyph.c,v 1.7 2000/02/23 20:29:44 dawes Exp $ */ #include "fb.h" #include "fontstruct.h" Index: xc/programs/Xserver/fb/fbimage.c diff -u xc/programs/Xserver/fb/fbimage.c:1.4 xc/programs/Xserver/fb/fbimage.c:1.5 --- xc/programs/Xserver/fb/fbimage.c:1.4 Wed Mar 8 16:29:51 2000 +++ xc/programs/Xserver/fb/fbimage.c Wed Mar 8 16:29:51 2000 @@ -1,5 +1,5 @@ /* - * $Id: fbimage.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ + * Id: fbimage.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbimage.c,v 1.4 2000/02/14 19:20:29 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbimage.c,v 1.5 2000/02/23 20:29:45 dawes Exp $ */ #include "fb.h" #ifdef XFree86LOADER Index: xc/programs/Xserver/fb/fbline.c diff -u xc/programs/Xserver/fb/fbline.c:1.3 xc/programs/Xserver/fb/fbline.c:1.6 --- xc/programs/Xserver/fb/fbline.c:1.3 Wed Mar 8 16:29:52 2000 +++ xc/programs/Xserver/fb/fbline.c Wed Mar 8 16:29:52 2000 @@ -1,5 +1,5 @@ /* - * $Id: fbline.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ + * Id: fbline.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbline.c,v 1.3 2000/02/14 19:20:29 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbline.c,v 1.6 2000/03/07 01:37:33 dawes Exp $ */ #include "fb.h" @@ -68,6 +68,30 @@ } void +fbZeroSegment (DrawablePtr pDrawable, + GCPtr pGC, + int nseg, + xSegment *pSegs) +{ + int dashOffset; + int x, y; + Bool drawLast = pGC->capStyle != CapNotLast; + + x = pDrawable->x; + y = pDrawable->y; + while (nseg--) + { + dashOffset = 0; + fbSegment (pDrawable, pGC, + pSegs->x1 + x, pSegs->y1 + y, + pSegs->x2 + x, pSegs->y2 + y, + drawLast, + &dashOffset); + pSegs++; + } +} + +void fbFixCoordModePrevious (int npt, DDXPointPtr ppt) { @@ -130,22 +154,28 @@ { void (*seg) (DrawablePtr pDrawable, GCPtr pGC, int nseg, xSegment *pseg); - seg = miPolySegment; + if (pGC->lineWidth == 0) + { + seg = fbZeroSegment; #ifndef FBNOPIXADDR - if (pGC->lineWidth == 0 && - pGC->fillStyle == FillSolid && - pGC->lineStyle == LineSolid && - REGION_NUM_RECTS (fbGetCompositeClip(pGC)) == 1) - { - switch (pDrawable->bitsPerPixel) { - case 8: seg = fbPolySegment8; break; - case 16: seg = fbPolySegment16; break; + if (pGC->fillStyle == FillSolid && + pGC->lineStyle == LineSolid && + REGION_NUM_RECTS (fbGetCompositeClip(pGC)) == 1) + { + switch (pDrawable->bitsPerPixel) { + case 8: seg = fbPolySegment8; break; + case 16: seg = fbPolySegment16; break; #ifdef FB_24BIT - case 24: seg = fbPolySegment24; break; + case 24: seg = fbPolySegment24; break; #endif - case 32: seg = fbPolySegment32; break; + case 32: seg = fbPolySegment32; break; + } } - } #endif + } + else + { + seg = miPolySegment; + } (*seg) (pDrawable, pGC, nseg, pseg); } Index: xc/programs/Xserver/fb/fbpixmap.c diff -u xc/programs/Xserver/fb/fbpixmap.c:1.2 xc/programs/Xserver/fb/fbpixmap.c:1.3 --- xc/programs/Xserver/fb/fbpixmap.c:1.2 Sun Dec 26 20:26:21 1999 +++ xc/programs/Xserver/fb/fbpixmap.c Wed Mar 8 16:29:52 2000 @@ -1,5 +1,5 @@ /* - * $Id: fbpixmap.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ + * Id: fbpixmap.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbpixmap.c,v 1.2 1999/12/27 01:26:21 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbpixmap.c,v 1.3 2000/02/23 20:29:45 dawes Exp $ */ #include "fb.h" Index: xc/programs/Xserver/fb/fbpoint.c diff -u xc/programs/Xserver/fb/fbpoint.c:1.4 xc/programs/Xserver/fb/fbpoint.c:1.6 --- xc/programs/Xserver/fb/fbpoint.c:1.4 Wed Mar 8 16:29:52 2000 +++ xc/programs/Xserver/fb/fbpoint.c Wed Mar 8 16:29:52 2000 @@ -1,5 +1,5 @@ /* - * $Id: fbpoint.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ + * Id: fbpoint.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbpoint.c,v 1.4 2000/02/14 19:20:30 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbpoint.c,v 1.6 2000/03/01 00:25:15 dawes Exp $ */ #include "fb.h" @@ -139,16 +139,13 @@ xor = pPriv->xor; dots = fbDots; #ifndef FBNOPIXADDR - if (and == 0) - { - switch (dstBpp) { - case 8: dots = fbDots8; break; - case 16: dots = fbDots16; break; + switch (dstBpp) { + case 8: dots = fbDots8; break; + case 16: dots = fbDots16; break; #ifdef FB_24BIT - case 24: dots = fbDots24; break; + case 24: dots = fbDots24; break; #endif - case 32: dots = fbDots32; break; - } + case 32: dots = fbDots32; break; } #endif for (nBox = REGION_NUM_RECTS (pClip), pBox = REGION_RECTS (pClip); Index: xc/programs/Xserver/fb/fbpush.c diff -u xc/programs/Xserver/fb/fbpush.c:1.3 xc/programs/Xserver/fb/fbpush.c:1.4 --- xc/programs/Xserver/fb/fbpush.c:1.3 Wed Mar 8 16:29:53 2000 +++ xc/programs/Xserver/fb/fbpush.c Wed Mar 8 16:29:53 2000 @@ -1,5 +1,5 @@ /* - * $Id: fbpush.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ + * Id: fbpush.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbpush.c,v 1.3 2000/02/14 19:20:30 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbpush.c,v 1.4 2000/02/23 20:29:46 dawes Exp $ */ #include "fb.h" Index: xc/programs/Xserver/fb/fbrop.h diff -u xc/programs/Xserver/fb/fbrop.h:1.3 xc/programs/Xserver/fb/fbrop.h:1.4 --- xc/programs/Xserver/fb/fbrop.h:1.3 Wed Mar 8 16:29:53 2000 +++ xc/programs/Xserver/fb/fbrop.h Wed Mar 8 16:29:53 2000 @@ -1,5 +1,5 @@ /* - * $Id: fbrop.h,v 1.1 1999/11/02 03:54:45 keithp Exp $ + * Id: fbrop.h,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbrop.h,v 1.3 2000/02/14 19:20:30 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbrop.h,v 1.4 2000/02/23 20:29:46 dawes Exp $ */ #ifndef _FBROP_H_ #define _FBROP_H_ Index: xc/programs/Xserver/fb/fbscreen.c diff -u xc/programs/Xserver/fb/fbscreen.c:1.7 xc/programs/Xserver/fb/fbscreen.c:1.8 --- xc/programs/Xserver/fb/fbscreen.c:1.7 Wed Mar 8 16:29:53 2000 +++ xc/programs/Xserver/fb/fbscreen.c Wed Mar 8 16:29:53 2000 @@ -1,5 +1,5 @@ /* - * $Id: fbscreen.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ + * Id: fbscreen.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbscreen.c,v 1.7 2000/02/14 19:20:30 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbscreen.c,v 1.8 2000/02/23 20:29:46 dawes Exp $ */ #include "fb.h" Index: xc/programs/Xserver/fb/fbseg.c diff -u xc/programs/Xserver/fb/fbseg.c:1.4 xc/programs/Xserver/fb/fbseg.c:1.5 --- xc/programs/Xserver/fb/fbseg.c:1.4 Wed Mar 8 16:29:53 2000 +++ xc/programs/Xserver/fb/fbseg.c Wed Mar 8 16:29:53 2000 @@ -1,5 +1,5 @@ /* - * $Id: fbseg.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ + * Id: fbseg.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbseg.c,v 1.4 2000/02/14 19:20:31 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbseg.c,v 1.5 2000/02/23 20:29:46 dawes Exp $ */ #include "fb.h" #include "miline.h" Index: xc/programs/Xserver/fb/fbsetsp.c diff -u xc/programs/Xserver/fb/fbsetsp.c:1.2 xc/programs/Xserver/fb/fbsetsp.c:1.3 --- xc/programs/Xserver/fb/fbsetsp.c:1.2 Wed Mar 8 16:29:53 2000 +++ xc/programs/Xserver/fb/fbsetsp.c Wed Mar 8 16:29:53 2000 @@ -1,5 +1,5 @@ /* - * $Id: fbsetsp.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ + * Id: fbsetsp.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbsetsp.c,v 1.2 2000/02/14 19:20:31 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbsetsp.c,v 1.3 2000/02/23 20:29:47 dawes Exp $ */ #include "fb.h" Index: xc/programs/Xserver/fb/fbsolid.c diff -u xc/programs/Xserver/fb/fbsolid.c:1.5 xc/programs/Xserver/fb/fbsolid.c:1.6 --- xc/programs/Xserver/fb/fbsolid.c:1.5 Wed Mar 8 16:29:53 2000 +++ xc/programs/Xserver/fb/fbsolid.c Wed Mar 8 16:29:53 2000 @@ -1,5 +1,5 @@ /* - * $Id: fbsolid.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ + * Id: fbsolid.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbsolid.c,v 1.5 2000/02/14 19:20:31 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbsolid.c,v 1.6 2000/02/23 20:29:47 dawes Exp $ */ #define FbSelectPart(xor,o,t) xor Index: xc/programs/Xserver/fb/fbstipple.c diff -u xc/programs/Xserver/fb/fbstipple.c:1.5 xc/programs/Xserver/fb/fbstipple.c:1.6 --- xc/programs/Xserver/fb/fbstipple.c:1.5 Wed Mar 8 16:29:54 2000 +++ xc/programs/Xserver/fb/fbstipple.c Wed Mar 8 16:29:54 2000 @@ -1,5 +1,5 @@ /* - * $Id: fbstipple.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ + * Id: fbstipple.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbstipple.c,v 1.5 2000/02/14 19:20:31 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbstipple.c,v 1.6 2000/02/23 20:29:47 dawes Exp $ */ #include "fb.h" Index: xc/programs/Xserver/fb/fbtile.c diff -u xc/programs/Xserver/fb/fbtile.c:1.3 xc/programs/Xserver/fb/fbtile.c:1.4 --- xc/programs/Xserver/fb/fbtile.c:1.3 Wed Mar 8 16:29:54 2000 +++ xc/programs/Xserver/fb/fbtile.c Wed Mar 8 16:29:54 2000 @@ -1,5 +1,5 @@ /* - * $Id: fbtile.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ + * Id: fbtile.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbtile.c,v 1.3 2000/02/12 03:39:43 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbtile.c,v 1.4 2000/02/23 20:29:48 dawes Exp $ */ #include "fb.h" Index: xc/programs/Xserver/fb/fbutil.c diff -u xc/programs/Xserver/fb/fbutil.c:1.3 xc/programs/Xserver/fb/fbutil.c:1.4 --- xc/programs/Xserver/fb/fbutil.c:1.3 Wed Mar 8 16:29:55 2000 +++ xc/programs/Xserver/fb/fbutil.c Wed Mar 8 16:29:55 2000 @@ -1,5 +1,5 @@ /* - * $Id: fbutil.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ + * Id: fbutil.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbutil.c,v 1.3 2000/02/14 19:20:32 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbutil.c,v 1.4 2000/02/23 20:29:48 dawes Exp $ */ #include "fb.h" Index: xc/programs/Xserver/fb/fbwindow.c diff -u xc/programs/Xserver/fb/fbwindow.c:1.2 xc/programs/Xserver/fb/fbwindow.c:1.3 --- xc/programs/Xserver/fb/fbwindow.c:1.2 Wed Mar 8 16:29:55 2000 +++ xc/programs/Xserver/fb/fbwindow.c Wed Mar 8 16:29:55 2000 @@ -1,5 +1,5 @@ /* - * $Id: fbwindow.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ + * Id: fbwindow.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * * Copyright © 1998 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbwindow.c,v 1.2 2000/02/14 19:20:32 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbwindow.c,v 1.3 2000/02/23 20:29:48 dawes Exp $ */ #include "fb.h" Index: xc/programs/Xserver/hw/kdrive/kasync.c diff -u xc/programs/Xserver/hw/kdrive/kasync.c:1.3 xc/programs/Xserver/hw/kdrive/kasync.c:1.4 --- xc/programs/Xserver/hw/kdrive/kasync.c:1.3 Wed Mar 8 16:30:04 2000 +++ xc/programs/Xserver/hw/kdrive/kasync.c Wed Mar 8 16:30:04 2000 @@ -1,5 +1,5 @@ /* - * $Id: kasync.c,v 1.3 1999/11/24 04:29:28 keithp Exp $ + * Id: kasync.c,v 1.3 1999/11/24 04:29:28 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/kasync.c,v 1.3 2000/01/21 18:41:49 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/kasync.c,v 1.4 2000/02/23 20:29:52 dawes Exp $ */ #include "kdrive.h" Index: xc/programs/Xserver/hw/kdrive/kcmap.c diff -u xc/programs/Xserver/hw/kdrive/kcmap.c:1.1 xc/programs/Xserver/hw/kdrive/kcmap.c:1.2 --- xc/programs/Xserver/hw/kdrive/kcmap.c:1.1 Fri Nov 19 08:53:48 1999 +++ xc/programs/Xserver/hw/kdrive/kcmap.c Wed Mar 8 16:30:04 2000 @@ -1,5 +1,5 @@ /* - * $Id: kcmap.c,v 1.1 1999/11/02 03:54:46 keithp Exp $ + * Id: kcmap.c,v 1.1 1999/11/02 03:54:46 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/kcmap.c,v 1.1 1999/11/19 13:53:48 hohndel Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/kcmap.c,v 1.2 2000/02/23 20:29:52 dawes Exp $ */ #include "kdrive.h" Index: xc/programs/Xserver/hw/kdrive/kcolor.c diff -u xc/programs/Xserver/hw/kdrive/kcolor.c:1.2 xc/programs/Xserver/hw/kdrive/kcolor.c:1.3 --- xc/programs/Xserver/hw/kdrive/kcolor.c:1.2 Wed Dec 29 22:03:05 1999 +++ xc/programs/Xserver/hw/kdrive/kcolor.c Wed Mar 8 16:30:04 2000 @@ -1,5 +1,5 @@ /* - * $Id: kcolor.c,v 1.1 1999/11/02 03:54:46 keithp Exp $ + * Id: kcolor.c,v 1.1 1999/11/02 03:54:46 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/kcolor.c,v 1.2 1999/12/30 03:03:05 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/kcolor.c,v 1.3 2000/02/23 20:29:52 dawes Exp $ */ #include "kdrive.h" #include Index: xc/programs/Xserver/hw/kdrive/kcurscol.c diff -u xc/programs/Xserver/hw/kdrive/kcurscol.c:1.1 xc/programs/Xserver/hw/kdrive/kcurscol.c:1.2 --- xc/programs/Xserver/hw/kdrive/kcurscol.c:1.1 Wed Dec 29 22:03:05 1999 +++ xc/programs/Xserver/hw/kdrive/kcurscol.c Wed Mar 8 16:30:05 2000 @@ -1,5 +1,5 @@ /* - * $Id: kcurscol.c,v 1.3 1999/12/21 03:51:56 keithp Exp $ + * Id: kcurscol.c,v 1.3 1999/12/21 03:51:56 keithp Exp $ * * Copyright © 1999 Keith Packard * Index: xc/programs/Xserver/hw/kdrive/kdrive.c diff -u xc/programs/Xserver/hw/kdrive/kdrive.c:1.2 xc/programs/Xserver/hw/kdrive/kdrive.c:1.3 --- xc/programs/Xserver/hw/kdrive/kdrive.c:1.2 Wed Dec 29 22:03:05 1999 +++ xc/programs/Xserver/hw/kdrive/kdrive.c Wed Mar 8 16:30:05 2000 @@ -1,5 +1,5 @@ /* - * $Id: kdrive.c,v 1.1 1999/11/02 03:54:46 keithp Exp $ + * Id: kdrive.c,v 1.1 1999/11/02 03:54:46 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/kdrive.c,v 1.2 1999/12/30 03:03:05 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/kdrive.c,v 1.3 2000/02/23 20:29:53 dawes Exp $ */ #include "kdrive.h" #ifdef PSEUDO8 Index: xc/programs/Xserver/hw/kdrive/kdrive.h diff -u xc/programs/Xserver/hw/kdrive/kdrive.h:1.3 xc/programs/Xserver/hw/kdrive/kdrive.h:1.4 --- xc/programs/Xserver/hw/kdrive/kdrive.h:1.3 Wed Mar 8 16:30:05 2000 +++ xc/programs/Xserver/hw/kdrive/kdrive.h Wed Mar 8 16:30:05 2000 @@ -1,5 +1,5 @@ /* - * $Id: kdrive.h,v 1.1 1999/11/02 03:54:46 keithp Exp $ + * Id: kdrive.h,v 1.1 1999/11/02 03:54:46 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/kdrive.h,v 1.3 2000/01/21 01:12:01 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/kdrive.h,v 1.4 2000/02/23 20:29:53 dawes Exp $ */ #include #include "X.h" Index: xc/programs/Xserver/hw/kdrive/kinfo.c diff -u xc/programs/Xserver/hw/kdrive/kinfo.c:1.1 xc/programs/Xserver/hw/kdrive/kinfo.c:1.2 --- xc/programs/Xserver/hw/kdrive/kinfo.c:1.1 Fri Nov 19 08:53:49 1999 +++ xc/programs/Xserver/hw/kdrive/kinfo.c Wed Mar 8 16:30:06 2000 @@ -1,5 +1,5 @@ /* - * $Id: kinfo.c,v 1.1 1999/11/02 03:54:46 keithp Exp $ + * Id: kinfo.c,v 1.1 1999/11/02 03:54:46 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/kinfo.c,v 1.1 1999/11/19 13:53:49 hohndel Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/kinfo.c,v 1.2 2000/02/23 20:29:53 dawes Exp $ */ #include "kdrive.h" Index: xc/programs/Xserver/hw/kdrive/kinput.c diff -u xc/programs/Xserver/hw/kdrive/kinput.c:1.2 xc/programs/Xserver/hw/kdrive/kinput.c:1.3 --- xc/programs/Xserver/hw/kdrive/kinput.c:1.2 Wed Dec 29 22:03:06 1999 +++ xc/programs/Xserver/hw/kdrive/kinput.c Wed Mar 8 16:30:06 2000 @@ -1,5 +1,5 @@ /* - * $Id: kinput.c,v 1.1 1999/11/02 03:54:46 keithp Exp $ + * Id: kinput.c,v 1.1 1999/11/02 03:54:46 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/kinput.c,v 1.2 1999/12/30 03:03:06 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/kinput.c,v 1.3 2000/02/23 20:29:54 dawes Exp $ */ #include "kdrive.h" #include "inputstr.h" Index: xc/programs/Xserver/hw/kdrive/kkeymap.c diff -u xc/programs/Xserver/hw/kdrive/kkeymap.c:1.1 xc/programs/Xserver/hw/kdrive/kkeymap.c:1.2 --- xc/programs/Xserver/hw/kdrive/kkeymap.c:1.1 Fri Nov 19 08:53:49 1999 +++ xc/programs/Xserver/hw/kdrive/kkeymap.c Wed Mar 8 16:30:06 2000 @@ -1,5 +1,5 @@ /* - * $Id: kkeymap.c,v 1.1 1999/11/02 03:54:46 keithp Exp $ + * Id: kkeymap.c,v 1.1 1999/11/02 03:54:46 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/kkeymap.c,v 1.1 1999/11/19 13:53:49 hohndel Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/kkeymap.c,v 1.2 2000/02/23 20:29:54 dawes Exp $ */ #include "kdrive.h" #include Index: xc/programs/Xserver/hw/kdrive/kkeymap.h diff -u xc/programs/Xserver/hw/kdrive/kkeymap.h:1.1 xc/programs/Xserver/hw/kdrive/kkeymap.h:1.2 --- xc/programs/Xserver/hw/kdrive/kkeymap.h:1.1 Fri Nov 19 08:53:50 1999 +++ xc/programs/Xserver/hw/kdrive/kkeymap.h Wed Mar 8 16:30:06 2000 @@ -1,5 +1,5 @@ /* - * $Id: kkeymap.h,v 1.1 1999/11/02 03:54:46 keithp Exp $ + * Id: kkeymap.h,v 1.1 1999/11/02 03:54:46 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/kkeymap.h,v 1.1 1999/11/19 13:53:50 hohndel Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/kkeymap.h,v 1.2 2000/02/23 20:29:54 dawes Exp $ */ /* * All global variables and functions pertaining to keyboard key mapping * live in this header file. Index: xc/programs/Xserver/hw/kdrive/kloadmap.c diff -u xc/programs/Xserver/hw/kdrive/kloadmap.c:1.1 xc/programs/Xserver/hw/kdrive/kloadmap.c:1.2 --- xc/programs/Xserver/hw/kdrive/kloadmap.c:1.1 Fri Nov 19 08:53:50 1999 +++ xc/programs/Xserver/hw/kdrive/kloadmap.c Wed Mar 8 16:30:07 2000 @@ -1,5 +1,5 @@ /* - * $Id: kloadmap.c,v 1.1 1999/11/02 03:54:46 keithp Exp $ + * Id: kloadmap.c,v 1.1 1999/11/02 03:54:46 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/kloadmap.c,v 1.1 1999/11/19 13:53:50 hohndel Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/kloadmap.c,v 1.2 2000/02/23 20:29:54 dawes Exp $ */ #include "kdrive.h" #include "kkeymap.h" Index: xc/programs/Xserver/hw/kdrive/kmap.c diff -u xc/programs/Xserver/hw/kdrive/kmap.c:1.2 xc/programs/Xserver/hw/kdrive/kmap.c:1.3 --- xc/programs/Xserver/hw/kdrive/kmap.c:1.2 Wed Dec 29 22:03:06 1999 +++ xc/programs/Xserver/hw/kdrive/kmap.c Wed Mar 8 16:30:08 2000 @@ -1,5 +1,5 @@ /* - * $Id: kmap.c,v 1.1 1999/11/02 03:54:46 keithp Exp $ + * Id: kmap.c,v 1.1 1999/11/02 03:54:46 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/kmap.c,v 1.2 1999/12/30 03:03:06 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/kmap.c,v 1.3 2000/02/23 20:29:55 dawes Exp $ */ #include "kdrive.h" Index: xc/programs/Xserver/hw/kdrive/kmode.c diff -u xc/programs/Xserver/hw/kdrive/kmode.c:1.1 xc/programs/Xserver/hw/kdrive/kmode.c:1.2 --- xc/programs/Xserver/hw/kdrive/kmode.c:1.1 Wed Dec 29 22:03:06 1999 +++ xc/programs/Xserver/hw/kdrive/kmode.c Wed Mar 8 16:30:09 2000 @@ -1,5 +1,5 @@ /* - * $Id: kmode.c,v 1.2 1999/12/21 03:50:49 keithp Exp $ + * Id: kmode.c,v 1.2 1999/12/21 03:50:49 keithp Exp $ * * Copyright 1999 SuSE, Inc. * Index: xc/programs/Xserver/hw/kdrive/knoop.c diff -u xc/programs/Xserver/hw/kdrive/knoop.c:1.1 xc/programs/Xserver/hw/kdrive/knoop.c:1.2 --- xc/programs/Xserver/hw/kdrive/knoop.c:1.1 Fri Nov 19 08:53:50 1999 +++ xc/programs/Xserver/hw/kdrive/knoop.c Wed Mar 8 16:30:09 2000 @@ -1,5 +1,5 @@ /* - * $Id: knoop.c,v 1.2 1999/11/02 06:16:28 keithp Exp $ + * Id: knoop.c,v 1.2 1999/11/02 06:16:28 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/knoop.c,v 1.1 1999/11/19 13:53:50 hohndel Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/knoop.c,v 1.2 2000/02/23 20:29:55 dawes Exp $ */ /* * GC ops that don't do anything Index: xc/programs/Xserver/hw/kdrive/ktest.c diff -u xc/programs/Xserver/hw/kdrive/ktest.c:1.1 xc/programs/Xserver/hw/kdrive/ktest.c:1.2 --- xc/programs/Xserver/hw/kdrive/ktest.c:1.1 Fri Nov 19 08:53:50 1999 +++ xc/programs/Xserver/hw/kdrive/ktest.c Wed Mar 8 16:30:09 2000 @@ -1,5 +1,5 @@ /* - * $Id: ktest.c,v 1.1 1999/11/02 03:54:46 keithp Exp $ + * Id: ktest.c,v 1.1 1999/11/02 03:54:46 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/ktest.c,v 1.1 1999/11/19 13:53:50 hohndel Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/ktest.c,v 1.2 2000/02/23 20:29:55 dawes Exp $ */ #include "kdrive.h" Index: xc/programs/Xserver/hw/kdrive/vga.c diff -u xc/programs/Xserver/hw/kdrive/vga.c:1.2 xc/programs/Xserver/hw/kdrive/vga.c:1.3 --- xc/programs/Xserver/hw/kdrive/vga.c:1.2 Wed Dec 29 22:03:07 1999 +++ xc/programs/Xserver/hw/kdrive/vga.c Wed Mar 8 16:30:09 2000 @@ -1,5 +1,5 @@ /* - * $Id: vga.c,v 1.1 1999/11/02 03:54:46 keithp Exp $ + * Id: vga.c,v 1.1 1999/11/02 03:54:46 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/vga.c,v 1.2 1999/12/30 03:03:07 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/vga.c,v 1.3 2000/02/23 20:29:56 dawes Exp $ */ #include "vga.h" #include Index: xc/programs/Xserver/hw/kdrive/vga.h diff -u xc/programs/Xserver/hw/kdrive/vga.h:1.2 xc/programs/Xserver/hw/kdrive/vga.h:1.3 --- xc/programs/Xserver/hw/kdrive/vga.h:1.2 Wed Dec 29 22:03:07 1999 +++ xc/programs/Xserver/hw/kdrive/vga.h Wed Mar 8 16:30:10 2000 @@ -1,5 +1,5 @@ /* - * $Id: vga.h,v 1.1 1999/11/02 03:54:46 keithp Exp $ + * Id: vga.h,v 1.1 1999/11/02 03:54:46 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/vga.h,v 1.2 1999/12/30 03:03:07 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/vga.h,v 1.3 2000/02/23 20:29:56 dawes Exp $ */ #ifndef _VGA_H_ #define _VGA_H_ Index: xc/programs/Xserver/hw/kdrive/fbdev/fbdev.c diff -u xc/programs/Xserver/hw/kdrive/fbdev/fbdev.c:1.2 xc/programs/Xserver/hw/kdrive/fbdev/fbdev.c:1.3 --- xc/programs/Xserver/hw/kdrive/fbdev/fbdev.c:1.2 Wed Dec 29 22:03:08 1999 +++ xc/programs/Xserver/hw/kdrive/fbdev/fbdev.c Wed Mar 8 16:30:10 2000 @@ -1,5 +1,5 @@ /* - * $Id: fbdev.c,v 1.1 1999/11/02 03:54:46 keithp Exp $ + * Id: fbdev.c,v 1.1 1999/11/02 03:54:46 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/fbdev/fbdev.c,v 1.2 1999/12/30 03:03:08 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/fbdev/fbdev.c,v 1.3 2000/02/23 20:29:57 dawes Exp $ */ #include "fbdev.h" Index: xc/programs/Xserver/hw/kdrive/fbdev/fbdev.h diff -u xc/programs/Xserver/hw/kdrive/fbdev/fbdev.h:1.2 xc/programs/Xserver/hw/kdrive/fbdev/fbdev.h:1.3 --- xc/programs/Xserver/hw/kdrive/fbdev/fbdev.h:1.2 Wed Dec 29 22:03:08 1999 +++ xc/programs/Xserver/hw/kdrive/fbdev/fbdev.h Wed Mar 8 16:30:10 2000 @@ -1,5 +1,5 @@ /* - * $Id: fbdev.h,v 1.1 1999/11/02 03:54:46 keithp Exp $ + * Id: fbdev.h,v 1.1 1999/11/02 03:54:46 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/fbdev/fbdev.h,v 1.2 1999/12/30 03:03:08 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/fbdev/fbdev.h,v 1.3 2000/02/23 20:29:58 dawes Exp $ */ #ifndef _FBDEV_H_ #define _FBDEV_H_ Index: xc/programs/Xserver/hw/kdrive/fbdev/fbinit.c diff -u xc/programs/Xserver/hw/kdrive/fbdev/fbinit.c:1.2 xc/programs/Xserver/hw/kdrive/fbdev/fbinit.c:1.3 --- xc/programs/Xserver/hw/kdrive/fbdev/fbinit.c:1.2 Wed Dec 29 22:03:08 1999 +++ xc/programs/Xserver/hw/kdrive/fbdev/fbinit.c Wed Mar 8 16:30:10 2000 @@ -1,5 +1,5 @@ /* - * $Id: fbinit.c,v 1.1 1999/11/02 03:54:46 keithp Exp $ + * Id: fbinit.c,v 1.1 1999/11/02 03:54:46 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/fbdev/fbinit.c,v 1.2 1999/12/30 03:03:08 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/fbdev/fbinit.c,v 1.3 2000/02/23 20:29:58 dawes Exp $ */ #include Index: xc/programs/Xserver/hw/kdrive/itsy/itsy.c diff -u xc/programs/Xserver/hw/kdrive/itsy/itsy.c:1.2 xc/programs/Xserver/hw/kdrive/itsy/itsy.c:1.3 --- xc/programs/Xserver/hw/kdrive/itsy/itsy.c:1.2 Wed Dec 29 22:03:09 1999 +++ xc/programs/Xserver/hw/kdrive/itsy/itsy.c Wed Mar 8 16:30:11 2000 @@ -1,5 +1,5 @@ /* - * $Id: itsy.c,v 1.1 1999/11/02 18:39:28 keithp Exp $ + * Id: itsy.c,v 1.1 1999/11/02 18:39:28 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/itsy/itsy.c,v 1.2 1999/12/30 03:03:09 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/itsy/itsy.c,v 1.3 2000/02/23 20:29:58 dawes Exp $ */ #include "itsy.h" Index: xc/programs/Xserver/hw/kdrive/itsy/itsy.h diff -u xc/programs/Xserver/hw/kdrive/itsy/itsy.h:1.1 xc/programs/Xserver/hw/kdrive/itsy/itsy.h:1.2 --- xc/programs/Xserver/hw/kdrive/itsy/itsy.h:1.1 Fri Nov 19 08:53:53 1999 +++ xc/programs/Xserver/hw/kdrive/itsy/itsy.h Wed Mar 8 16:30:11 2000 @@ -1,5 +1,5 @@ /* - * $Id: itsy.h,v 1.1 1999/11/02 18:39:28 keithp Exp $ + * Id: itsy.h,v 1.1 1999/11/02 18:39:28 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/itsy/itsy.h,v 1.1 1999/11/19 13:53:53 hohndel Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/itsy/itsy.h,v 1.2 2000/02/23 20:29:59 dawes Exp $ */ #include "kdrive.h" #include Index: xc/programs/Xserver/hw/kdrive/itsy/kbd.c diff -u xc/programs/Xserver/hw/kdrive/itsy/kbd.c:1.1 xc/programs/Xserver/hw/kdrive/itsy/kbd.c:1.2 --- xc/programs/Xserver/hw/kdrive/itsy/kbd.c:1.1 Fri Nov 19 08:53:53 1999 +++ xc/programs/Xserver/hw/kdrive/itsy/kbd.c Wed Mar 8 16:30:11 2000 @@ -1,5 +1,5 @@ /* - * $Id: kbd.c,v 1.1 1999/11/02 18:39:28 keithp Exp $ + * Id: kbd.c,v 1.1 1999/11/02 18:39:28 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/itsy/kbd.c,v 1.1 1999/11/19 13:53:53 hohndel Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/itsy/kbd.c,v 1.2 2000/02/23 20:29:59 dawes Exp $ */ #include "itsy.h" #include "kkeymap.h" Index: xc/programs/Xserver/hw/kdrive/itsy/ts.c diff -u xc/programs/Xserver/hw/kdrive/itsy/ts.c:1.1 xc/programs/Xserver/hw/kdrive/itsy/ts.c:1.2 --- xc/programs/Xserver/hw/kdrive/itsy/ts.c:1.1 Fri Nov 19 08:53:54 1999 +++ xc/programs/Xserver/hw/kdrive/itsy/ts.c Wed Mar 8 16:30:11 2000 @@ -1,5 +1,5 @@ /* - * $Id: ts.c,v 1.1 1999/11/02 18:39:28 keithp Exp $ + * Id: ts.c,v 1.1 1999/11/02 18:39:28 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/itsy/ts.c,v 1.1 1999/11/19 13:53:54 hohndel Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/itsy/ts.c,v 1.2 2000/02/23 20:29:59 dawes Exp $ */ #define NEED_EVENTS #include "itsy.h" Index: xc/programs/Xserver/hw/kdrive/linux/keyboard.c diff -u xc/programs/Xserver/hw/kdrive/linux/keyboard.c:1.1 xc/programs/Xserver/hw/kdrive/linux/keyboard.c:1.2 --- xc/programs/Xserver/hw/kdrive/linux/keyboard.c:1.1 Wed Dec 29 22:03:09 1999 +++ xc/programs/Xserver/hw/kdrive/linux/keyboard.c Wed Mar 8 16:30:12 2000 @@ -1,5 +1,5 @@ /* - * $Id: keyboard.c,v 1.2 1999/11/08 06:22:01 keithp Exp $ + * Id: keyboard.c,v 1.2 1999/11/08 06:22:01 keithp Exp $ * * Copyright © 1999 Keith Packard * Index: xc/programs/Xserver/hw/kdrive/linux/linux.c diff -u xc/programs/Xserver/hw/kdrive/linux/linux.c:1.1 xc/programs/Xserver/hw/kdrive/linux/linux.c:1.2 --- xc/programs/Xserver/hw/kdrive/linux/linux.c:1.1 Wed Dec 29 22:03:09 1999 +++ xc/programs/Xserver/hw/kdrive/linux/linux.c Wed Mar 8 16:30:12 2000 @@ -1,5 +1,5 @@ /* - * $Id: linux.c,v 1.2 1999/11/23 04:21:09 keithp Exp $ + * Id: linux.c,v 1.2 1999/11/23 04:21:09 keithp Exp $ * * Copyright © 1999 Keith Packard * Index: xc/programs/Xserver/hw/kdrive/linux/ps2.c diff -u xc/programs/Xserver/hw/kdrive/linux/ps2.c:1.1 xc/programs/Xserver/hw/kdrive/linux/ps2.c:1.2 --- xc/programs/Xserver/hw/kdrive/linux/ps2.c:1.1 Wed Dec 29 22:03:10 1999 +++ xc/programs/Xserver/hw/kdrive/linux/ps2.c Wed Mar 8 16:30:12 2000 @@ -1,5 +1,5 @@ /* - * $Id: ps2.c,v 1.1 1999/11/02 03:54:46 keithp Exp $ + * Id: ps2.c,v 1.1 1999/11/02 03:54:46 keithp Exp $ * * Copyright © 1999 Keith Packard * Index: xc/programs/Xserver/hw/kdrive/savage/s3.c diff -u xc/programs/Xserver/hw/kdrive/savage/s3.c:1.2 xc/programs/Xserver/hw/kdrive/savage/s3.c:1.3 --- xc/programs/Xserver/hw/kdrive/savage/s3.c:1.2 Wed Dec 29 22:03:10 1999 +++ xc/programs/Xserver/hw/kdrive/savage/s3.c Wed Mar 8 16:30:13 2000 @@ -1,5 +1,5 @@ /* - * $Id: s3.c,v 1.3 1999/11/02 08:17:24 keithp Exp $ + * Id: s3.c,v 1.3 1999/11/02 08:17:24 keithp Exp $ * * Copyright 1999 SuSE, Inc. * @@ -22,7 +22,7 @@ * * Author: Keith Packard, SuSE, Inc. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/savage/s3.c,v 1.2 1999/12/30 03:03:10 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/savage/s3.c,v 1.3 2000/02/23 20:30:01 dawes Exp $ */ #include "s3.h" Index: xc/programs/Xserver/hw/kdrive/savage/s3.h diff -u xc/programs/Xserver/hw/kdrive/savage/s3.h:1.2 xc/programs/Xserver/hw/kdrive/savage/s3.h:1.3 --- xc/programs/Xserver/hw/kdrive/savage/s3.h:1.2 Wed Dec 29 22:03:10 1999 +++ xc/programs/Xserver/hw/kdrive/savage/s3.h Wed Mar 8 16:30:13 2000 @@ -1,5 +1,5 @@ /* - * $Id: s3.h,v 1.2 1999/11/02 08:17:24 keithp Exp $ + * Id: s3.h,v 1.2 1999/11/02 08:17:24 keithp Exp $ * * Copyright 1999 SuSE, Inc. * @@ -22,7 +22,7 @@ * * Author: Keith Packard, SuSE, Inc. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/savage/s3.h,v 1.2 1999/12/30 03:03:10 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/savage/s3.h,v 1.3 2000/02/23 20:30:02 dawes Exp $ */ #ifndef _S3_H_ #define _S3_H_ Index: xc/programs/Xserver/hw/kdrive/savage/s3clock.c diff -u xc/programs/Xserver/hw/kdrive/savage/s3clock.c:1.2 xc/programs/Xserver/hw/kdrive/savage/s3clock.c:1.3 --- xc/programs/Xserver/hw/kdrive/savage/s3clock.c:1.2 Wed Dec 29 22:03:11 1999 +++ xc/programs/Xserver/hw/kdrive/savage/s3clock.c Wed Mar 8 16:30:13 2000 @@ -1,5 +1,5 @@ /* - * $Id: s3clock.c,v 1.2 1999/11/02 06:16:29 keithp Exp $ + * Id: s3clock.c,v 1.2 1999/11/02 06:16:29 keithp Exp $ * * Copyright 1999 SuSE, Inc. * @@ -22,7 +22,7 @@ * * Author: Keith Packard, SuSE, Inc. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/savage/s3clock.c,v 1.2 1999/12/30 03:03:11 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/savage/s3clock.c,v 1.3 2000/02/23 20:30:02 dawes Exp $ */ #include "s3.h" Index: xc/programs/Xserver/hw/kdrive/savage/s3cmap.c diff -u xc/programs/Xserver/hw/kdrive/savage/s3cmap.c:1.2 xc/programs/Xserver/hw/kdrive/savage/s3cmap.c:1.3 --- xc/programs/Xserver/hw/kdrive/savage/s3cmap.c:1.2 Wed Dec 29 22:03:11 1999 +++ xc/programs/Xserver/hw/kdrive/savage/s3cmap.c Wed Mar 8 16:30:13 2000 @@ -1,5 +1,5 @@ /* - * $Id: s3cmap.c,v 1.2 1999/11/02 06:16:29 keithp Exp $ + * Id: s3cmap.c,v 1.2 1999/11/02 06:16:29 keithp Exp $ * * Copyright 1999 SuSE, Inc. * @@ -22,7 +22,7 @@ * * Author: Keith Packard, SuSE, Inc. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/savage/s3cmap.c,v 1.2 1999/12/30 03:03:11 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/savage/s3cmap.c,v 1.3 2000/02/23 20:30:02 dawes Exp $ */ #include "s3.h" Index: xc/programs/Xserver/hw/kdrive/savage/s3curs.c diff -u xc/programs/Xserver/hw/kdrive/savage/s3curs.c:1.2 xc/programs/Xserver/hw/kdrive/savage/s3curs.c:1.3 --- xc/programs/Xserver/hw/kdrive/savage/s3curs.c:1.2 Wed Dec 29 22:03:11 1999 +++ xc/programs/Xserver/hw/kdrive/savage/s3curs.c Wed Mar 8 16:30:14 2000 @@ -1,5 +1,5 @@ /* - * $Id: s3curs.c,v 1.2 1999/11/02 06:16:29 keithp Exp $ + * Id: s3curs.c,v 1.2 1999/11/02 06:16:29 keithp Exp $ * * Copyright 1999 SuSE, Inc. * @@ -22,7 +22,7 @@ * * Author: Keith Packard, SuSE, Inc. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/savage/s3curs.c,v 1.2 1999/12/30 03:03:11 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/savage/s3curs.c,v 1.3 2000/02/23 20:30:03 dawes Exp $ */ #include "s3.h" #include "s3draw.h" Index: xc/programs/Xserver/hw/kdrive/savage/s3draw.c diff -u xc/programs/Xserver/hw/kdrive/savage/s3draw.c:1.2 xc/programs/Xserver/hw/kdrive/savage/s3draw.c:1.3 --- xc/programs/Xserver/hw/kdrive/savage/s3draw.c:1.2 Wed Dec 29 22:03:11 1999 +++ xc/programs/Xserver/hw/kdrive/savage/s3draw.c Wed Mar 8 16:30:14 2000 @@ -1,5 +1,5 @@ /* - * $Id: s3draw.c,v 1.1 1999/11/02 03:54:47 keithp Exp $ + * Id: s3draw.c,v 1.1 1999/11/02 03:54:47 keithp Exp $ * * Copyright 1999 SuSE, Inc. * @@ -22,7 +22,7 @@ * * Author: Keith Packard, SuSE, Inc. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/savage/s3draw.c,v 1.2 1999/12/30 03:03:11 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/savage/s3draw.c,v 1.3 2000/02/23 20:30:03 dawes Exp $ */ #include "s3.h" #include "s3draw.h" Index: xc/programs/Xserver/hw/kdrive/savage/s3draw.h diff -u xc/programs/Xserver/hw/kdrive/savage/s3draw.h:1.2 xc/programs/Xserver/hw/kdrive/savage/s3draw.h:1.3 --- xc/programs/Xserver/hw/kdrive/savage/s3draw.h:1.2 Wed Dec 29 22:03:12 1999 +++ xc/programs/Xserver/hw/kdrive/savage/s3draw.h Wed Mar 8 16:30:14 2000 @@ -1,5 +1,5 @@ /* - * $Id: s3draw.h,v 1.2 1999/11/02 06:16:29 keithp Exp $ + * Id: s3draw.h,v 1.2 1999/11/02 06:16:29 keithp Exp $ * * Copyright 1999 SuSE, Inc. * @@ -22,7 +22,7 @@ * * Author: Keith Packard, SuSE, Inc. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/savage/s3draw.h,v 1.2 1999/12/30 03:03:12 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/savage/s3draw.h,v 1.3 2000/02/23 20:30:04 dawes Exp $ */ #ifndef _S3DRAW_H_ #define _S3DRAW_H_ Index: xc/programs/Xserver/hw/kdrive/savage/s3gc.c diff -u xc/programs/Xserver/hw/kdrive/savage/s3gc.c:1.3 xc/programs/Xserver/hw/kdrive/savage/s3gc.c:1.4 --- xc/programs/Xserver/hw/kdrive/savage/s3gc.c:1.3 Wed Mar 8 16:30:15 2000 +++ xc/programs/Xserver/hw/kdrive/savage/s3gc.c Wed Mar 8 16:30:15 2000 @@ -1,5 +1,5 @@ /* - * $Id: s3gc.c,v 1.2 1999/11/02 06:16:29 keithp Exp $ + * Id: s3gc.c,v 1.2 1999/11/02 06:16:29 keithp Exp $ * * Copyright 1999 SuSE, Inc. * @@ -22,7 +22,7 @@ * * Author: Keith Packard, SuSE, Inc. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/savage/s3gc.c,v 1.3 2000/01/21 01:12:02 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/savage/s3gc.c,v 1.4 2000/02/23 20:30:04 dawes Exp $ */ #include "s3.h" #include "s3draw.h" Index: xc/programs/Xserver/hw/kdrive/savage/s3reg.c diff -u xc/programs/Xserver/hw/kdrive/savage/s3reg.c:1.2 xc/programs/Xserver/hw/kdrive/savage/s3reg.c:1.3 --- xc/programs/Xserver/hw/kdrive/savage/s3reg.c:1.2 Wed Dec 29 22:03:12 1999 +++ xc/programs/Xserver/hw/kdrive/savage/s3reg.c Wed Mar 8 16:30:15 2000 @@ -1,5 +1,5 @@ /* - * $Id: s3reg.c,v 1.1 1999/11/02 03:54:47 keithp Exp $ + * Id: s3reg.c,v 1.1 1999/11/02 03:54:47 keithp Exp $ * * Copyright 1999 SuSE, Inc. * @@ -22,7 +22,7 @@ * * Author: Keith Packard, SuSE, Inc. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/savage/s3reg.c,v 1.2 1999/12/30 03:03:12 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/savage/s3reg.c,v 1.3 2000/02/23 20:30:04 dawes Exp $ */ #include "s3reg.h" Index: xc/programs/Xserver/hw/kdrive/savage/s3reg.h diff -u xc/programs/Xserver/hw/kdrive/savage/s3reg.h:1.2 xc/programs/Xserver/hw/kdrive/savage/s3reg.h:1.3 --- xc/programs/Xserver/hw/kdrive/savage/s3reg.h:1.2 Wed Dec 29 22:03:12 1999 +++ xc/programs/Xserver/hw/kdrive/savage/s3reg.h Wed Mar 8 16:30:16 2000 @@ -1,5 +1,5 @@ /* - * $Id: s3reg.h,v 1.1 1999/11/02 03:54:47 keithp Exp $ + * Id: s3reg.h,v 1.1 1999/11/02 03:54:47 keithp Exp $ * * Copyright 1999 SuSE, Inc. * @@ -22,7 +22,7 @@ * * Author: Keith Packard, SuSE, Inc. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/savage/s3reg.h,v 1.2 1999/12/30 03:03:12 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/savage/s3reg.h,v 1.3 2000/02/23 20:30:05 dawes Exp $ */ #ifndef _S3REG_H_ #define _S3REG_H_ Index: xc/programs/Xserver/hw/kdrive/savage/s3rtst.c diff -u xc/programs/Xserver/hw/kdrive/savage/s3rtst.c:1.1 xc/programs/Xserver/hw/kdrive/savage/s3rtst.c:1.2 --- xc/programs/Xserver/hw/kdrive/savage/s3rtst.c:1.1 Fri Nov 19 08:53:57 1999 +++ xc/programs/Xserver/hw/kdrive/savage/s3rtst.c Wed Mar 8 16:30:16 2000 @@ -1,5 +1,5 @@ /* - * $Id: s3rtst.c,v 1.1 1999/11/02 03:54:47 keithp Exp $ + * Id: s3rtst.c,v 1.1 1999/11/02 03:54:47 keithp Exp $ * * Copyright 1999 SuSE, Inc. * @@ -22,7 +22,7 @@ * * Author: Keith Packard, SuSE, Inc. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/savage/s3rtst.c,v 1.1 1999/11/19 13:53:57 hohndel Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/savage/s3rtst.c,v 1.2 2000/02/23 20:30:05 dawes Exp $ */ #include #include "s3reg.h" Index: xc/programs/Xserver/hw/kdrive/savage/s3stub.c diff -u xc/programs/Xserver/hw/kdrive/savage/s3stub.c:1.2 xc/programs/Xserver/hw/kdrive/savage/s3stub.c:1.3 --- xc/programs/Xserver/hw/kdrive/savage/s3stub.c:1.2 Wed Dec 29 22:03:13 1999 +++ xc/programs/Xserver/hw/kdrive/savage/s3stub.c Wed Mar 8 16:30:17 2000 @@ -1,5 +1,5 @@ /* - * $Id: s3stub.c,v 1.1 1999/11/02 08:19:15 keithp Exp $ + * Id: s3stub.c,v 1.1 1999/11/02 08:19:15 keithp Exp $ * * Copyright 1999 SuSE, Inc. * @@ -22,7 +22,7 @@ * * Author: Keith Packard, SuSE, Inc. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/savage/s3stub.c,v 1.2 1999/12/30 03:03:13 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/savage/s3stub.c,v 1.3 2000/02/23 20:30:05 dawes Exp $ */ #include "s3.h" Index: xc/programs/Xserver/hw/kdrive/sis530/sis.c diff -u xc/programs/Xserver/hw/kdrive/sis530/sis.c:1.2 xc/programs/Xserver/hw/kdrive/sis530/sis.c:1.3 --- xc/programs/Xserver/hw/kdrive/sis530/sis.c:1.2 Wed Dec 29 22:03:14 1999 +++ xc/programs/Xserver/hw/kdrive/sis530/sis.c Wed Mar 8 16:30:17 2000 @@ -1,5 +1,5 @@ /* - * $Id: sis.c,v 1.1 1999/11/02 08:17:24 keithp Exp $ + * Id: sis.c,v 1.1 1999/11/02 08:17:24 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/sis530/sis.c,v 1.2 1999/12/30 03:03:14 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/sis530/sis.c,v 1.3 2000/02/23 20:30:06 dawes Exp $ */ #include "sis.h" Index: xc/programs/Xserver/hw/kdrive/sis530/sis.h diff -u xc/programs/Xserver/hw/kdrive/sis530/sis.h:1.2 xc/programs/Xserver/hw/kdrive/sis530/sis.h:1.3 --- xc/programs/Xserver/hw/kdrive/sis530/sis.h:1.2 Wed Dec 29 22:03:14 1999 +++ xc/programs/Xserver/hw/kdrive/sis530/sis.h Wed Mar 8 16:30:17 2000 @@ -1,5 +1,5 @@ /* - * $Id: sis.h,v 1.1 1999/11/02 08:17:24 keithp Exp $ + * Id: sis.h,v 1.1 1999/11/02 08:17:24 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/sis530/sis.h,v 1.2 1999/12/30 03:03:14 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/sis530/sis.h,v 1.3 2000/02/23 20:30:07 dawes Exp $ */ #ifndef _SIS_H_ #define _SIS_H_ Index: xc/programs/Xserver/hw/kdrive/sis530/sisclock.c diff -u xc/programs/Xserver/hw/kdrive/sis530/sisclock.c:1.1 xc/programs/Xserver/hw/kdrive/sis530/sisclock.c:1.2 --- xc/programs/Xserver/hw/kdrive/sis530/sisclock.c:1.1 Fri Nov 19 08:53:59 1999 +++ xc/programs/Xserver/hw/kdrive/sis530/sisclock.c Wed Mar 8 16:30:18 2000 @@ -1,5 +1,5 @@ /* - * $Id: sisclock.c,v 1.1 1999/11/02 08:17:24 keithp Exp $ + * Id: sisclock.c,v 1.1 1999/11/02 08:17:24 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/sis530/sisclock.c,v 1.1 1999/11/19 13:53:59 hohndel Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/sis530/sisclock.c,v 1.2 2000/02/23 20:30:07 dawes Exp $ */ #include "sis.h" #include Index: xc/programs/Xserver/hw/kdrive/sis530/siscmap.c diff -u xc/programs/Xserver/hw/kdrive/sis530/siscmap.c:1.1 xc/programs/Xserver/hw/kdrive/sis530/siscmap.c:1.2 --- xc/programs/Xserver/hw/kdrive/sis530/siscmap.c:1.1 Fri Nov 19 08:53:59 1999 +++ xc/programs/Xserver/hw/kdrive/sis530/siscmap.c Wed Mar 8 16:30:18 2000 @@ -1,5 +1,5 @@ /* - * $Id: siscmap.c,v 1.1 1999/11/02 08:17:24 keithp Exp $ + * Id: siscmap.c,v 1.1 1999/11/02 08:17:24 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/sis530/siscmap.c,v 1.1 1999/11/19 13:53:59 hohndel Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/sis530/siscmap.c,v 1.2 2000/02/23 20:30:07 dawes Exp $ */ #include "sis.h" Index: xc/programs/Xserver/hw/kdrive/sis530/siscurs.c diff -u xc/programs/Xserver/hw/kdrive/sis530/siscurs.c:1.1 xc/programs/Xserver/hw/kdrive/sis530/siscurs.c:1.2 --- xc/programs/Xserver/hw/kdrive/sis530/siscurs.c:1.1 Fri Nov 19 08:53:59 1999 +++ xc/programs/Xserver/hw/kdrive/sis530/siscurs.c Wed Mar 8 16:30:18 2000 @@ -1,5 +1,5 @@ /* - * $Id: siscurs.c,v 1.1 1999/11/02 08:17:24 keithp Exp $ + * Id: siscurs.c,v 1.1 1999/11/02 08:17:24 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/sis530/siscurs.c,v 1.1 1999/11/19 13:53:59 hohndel Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/sis530/siscurs.c,v 1.2 2000/02/23 20:30:08 dawes Exp $ */ #include "sis.h" #include "cursorstr.h" Index: xc/programs/Xserver/hw/kdrive/sis530/sisdraw.c diff -u xc/programs/Xserver/hw/kdrive/sis530/sisdraw.c:1.2 xc/programs/Xserver/hw/kdrive/sis530/sisdraw.c:1.3 --- xc/programs/Xserver/hw/kdrive/sis530/sisdraw.c:1.2 Wed Dec 29 22:03:14 1999 +++ xc/programs/Xserver/hw/kdrive/sis530/sisdraw.c Wed Mar 8 16:30:18 2000 @@ -1,5 +1,5 @@ /* - * $Id: sisdraw.c,v 1.1 1999/11/02 08:17:24 keithp Exp $ + * Id: sisdraw.c,v 1.1 1999/11/02 08:17:24 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/sis530/sisdraw.c,v 1.2 1999/12/30 03:03:14 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/sis530/sisdraw.c,v 1.3 2000/02/23 20:30:08 dawes Exp $ */ #include "sis.h" #include "sisdraw.h" Index: xc/programs/Xserver/hw/kdrive/sis530/sisdraw.h diff -u xc/programs/Xserver/hw/kdrive/sis530/sisdraw.h:1.1 xc/programs/Xserver/hw/kdrive/sis530/sisdraw.h:1.2 --- xc/programs/Xserver/hw/kdrive/sis530/sisdraw.h:1.1 Fri Nov 19 08:53:59 1999 +++ xc/programs/Xserver/hw/kdrive/sis530/sisdraw.h Wed Mar 8 16:30:19 2000 @@ -1,5 +1,5 @@ /* - * $Id: sisdraw.h,v 1.1 1999/11/02 08:17:24 keithp Exp $ + * Id: sisdraw.h,v 1.1 1999/11/02 08:17:24 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/sis530/sisdraw.h,v 1.1 1999/11/19 13:53:59 hohndel Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/sis530/sisdraw.h,v 1.2 2000/02/23 20:30:08 dawes Exp $ */ #ifndef _SISDRAW_H_ #define _SISDRAW_H_ Index: xc/programs/Xserver/hw/kdrive/sis530/sisio.c diff -u xc/programs/Xserver/hw/kdrive/sis530/sisio.c:1.1 xc/programs/Xserver/hw/kdrive/sis530/sisio.c:1.2 --- xc/programs/Xserver/hw/kdrive/sis530/sisio.c:1.1 Fri Nov 19 08:54:00 1999 +++ xc/programs/Xserver/hw/kdrive/sis530/sisio.c Wed Mar 8 16:30:19 2000 @@ -1,5 +1,5 @@ /* - * $Id: sisio.c,v 1.1 1999/11/02 08:17:24 keithp Exp $ + * Id: sisio.c,v 1.1 1999/11/02 08:17:24 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/sis530/sisio.c,v 1.1 1999/11/19 13:54:00 hohndel Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/sis530/sisio.c,v 1.2 2000/02/23 20:30:09 dawes Exp $ */ #ifdef linux #define extern Index: xc/programs/Xserver/hw/kdrive/sis530/sisstub.c diff -u xc/programs/Xserver/hw/kdrive/sis530/sisstub.c:1.2 xc/programs/Xserver/hw/kdrive/sis530/sisstub.c:1.3 --- xc/programs/Xserver/hw/kdrive/sis530/sisstub.c:1.2 Wed Dec 29 22:03:15 1999 +++ xc/programs/Xserver/hw/kdrive/sis530/sisstub.c Wed Mar 8 16:30:19 2000 @@ -1,5 +1,5 @@ /* - * $Id: sisstub.c,v 1.1 1999/11/02 08:20:07 keithp Exp $ + * Id: sisstub.c,v 1.1 1999/11/02 08:20:07 keithp Exp $ * * Copyright 1999 SuSE, Inc. * @@ -22,7 +22,7 @@ * * Author: Keith Packard, SuSE, Inc. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/sis530/sisstub.c,v 1.2 1999/12/30 03:03:15 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/sis530/sisstub.c,v 1.3 2000/02/23 20:30:09 dawes Exp $ */ #include "sis.h" Index: xc/programs/Xserver/hw/kdrive/trident/trident.c diff -u xc/programs/Xserver/hw/kdrive/trident/trident.c:1.3 xc/programs/Xserver/hw/kdrive/trident/trident.c:1.4 --- xc/programs/Xserver/hw/kdrive/trident/trident.c:1.3 Wed Mar 8 16:30:19 2000 +++ xc/programs/Xserver/hw/kdrive/trident/trident.c Wed Mar 8 16:30:19 2000 @@ -1,5 +1,5 @@ /* - * $Id: trident.c,v 1.2 1999/11/02 08:17:24 keithp Exp $ + * Id: trident.c,v 1.2 1999/11/02 08:17:24 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/trident/trident.c,v 1.3 2000/01/21 01:12:02 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/trident/trident.c,v 1.4 2000/02/23 20:30:10 dawes Exp $ */ #include "trident.h" #define extern Index: xc/programs/Xserver/hw/kdrive/trident/trident.h diff -u xc/programs/Xserver/hw/kdrive/trident/trident.h:1.2 xc/programs/Xserver/hw/kdrive/trident/trident.h:1.3 --- xc/programs/Xserver/hw/kdrive/trident/trident.h:1.2 Wed Dec 29 22:03:16 1999 +++ xc/programs/Xserver/hw/kdrive/trident/trident.h Wed Mar 8 16:30:20 2000 @@ -1,5 +1,5 @@ /* - * $Id: trident.h,v 1.2 1999/11/02 08:17:24 keithp Exp $ + * Id: trident.h,v 1.2 1999/11/02 08:17:24 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/trident/trident.h,v 1.2 1999/12/30 03:03:16 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/trident/trident.h,v 1.3 2000/02/23 20:30:10 dawes Exp $ */ #ifndef _TRIDENT_H_ #define _TRIDENT_H_ Index: xc/programs/Xserver/hw/kdrive/trident/tridentcurs.c diff -u xc/programs/Xserver/hw/kdrive/trident/tridentcurs.c:1.2 xc/programs/Xserver/hw/kdrive/trident/tridentcurs.c:1.3 --- xc/programs/Xserver/hw/kdrive/trident/tridentcurs.c:1.2 Wed Dec 29 22:03:17 1999 +++ xc/programs/Xserver/hw/kdrive/trident/tridentcurs.c Wed Mar 8 16:30:20 2000 @@ -1,5 +1,5 @@ /* - * $Id: tridentcurs.c,v 1.1 1999/11/02 03:54:47 keithp Exp $ + * Id: tridentcurs.c,v 1.1 1999/11/02 03:54:47 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/trident/tridentcurs.c,v 1.2 1999/12/30 03:03:17 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/trident/tridentcurs.c,v 1.3 2000/02/23 20:30:10 dawes Exp $ */ #include "trident.h" #include "cursorstr.h" Index: xc/programs/Xserver/hw/kdrive/trident/tridentdraw.c diff -u xc/programs/Xserver/hw/kdrive/trident/tridentdraw.c:1.2 xc/programs/Xserver/hw/kdrive/trident/tridentdraw.c:1.3 --- xc/programs/Xserver/hw/kdrive/trident/tridentdraw.c:1.2 Wed Dec 29 22:03:17 1999 +++ xc/programs/Xserver/hw/kdrive/trident/tridentdraw.c Wed Mar 8 16:30:21 2000 @@ -1,5 +1,5 @@ /* - * $Id: tridentdraw.c,v 1.1 1999/11/02 03:54:47 keithp Exp $ + * Id: tridentdraw.c,v 1.1 1999/11/02 03:54:47 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/trident/tridentdraw.c,v 1.2 1999/12/30 03:03:17 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/trident/tridentdraw.c,v 1.3 2000/02/23 20:30:11 dawes Exp $ */ #include "trident.h" #include "tridentdraw.h" Index: xc/programs/Xserver/hw/kdrive/trident/tridentdraw.h diff -u xc/programs/Xserver/hw/kdrive/trident/tridentdraw.h:1.2 xc/programs/Xserver/hw/kdrive/trident/tridentdraw.h:1.3 --- xc/programs/Xserver/hw/kdrive/trident/tridentdraw.h:1.2 Wed Dec 29 22:03:18 1999 +++ xc/programs/Xserver/hw/kdrive/trident/tridentdraw.h Wed Mar 8 16:30:21 2000 @@ -1,5 +1,5 @@ /* - * $Id: tridentdraw.h,v 1.1 1999/11/02 03:54:47 keithp Exp $ + * Id: tridentdraw.h,v 1.1 1999/11/02 03:54:47 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/trident/tridentdraw.h,v 1.2 1999/12/30 03:03:18 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/trident/tridentdraw.h,v 1.3 2000/02/23 20:30:11 dawes Exp $ */ #ifndef _TRIDENTDRAW_H_ #define _TRIDENTDRAW_H_ Index: xc/programs/Xserver/hw/kdrive/trident/tridentstub.c diff -u xc/programs/Xserver/hw/kdrive/trident/tridentstub.c:1.2 xc/programs/Xserver/hw/kdrive/trident/tridentstub.c:1.3 --- xc/programs/Xserver/hw/kdrive/trident/tridentstub.c:1.2 Wed Dec 29 22:03:18 1999 +++ xc/programs/Xserver/hw/kdrive/trident/tridentstub.c Wed Mar 8 16:30:21 2000 @@ -1,5 +1,5 @@ /* - * $Id: tridentstub.c,v 1.1 1999/11/02 08:19:15 keithp Exp $ + * Id: tridentstub.c,v 1.1 1999/11/02 08:19:15 keithp Exp $ * * Copyright 1999 SuSE, Inc. * @@ -22,7 +22,7 @@ * * Author: Keith Packard, SuSE, Inc. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/trident/tridentstub.c,v 1.2 1999/12/30 03:03:18 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/trident/tridentstub.c,v 1.3 2000/02/23 20:30:11 dawes Exp $ */ #include "trident.h" Index: xc/programs/Xserver/hw/kdrive/trio/s3.c diff -u xc/programs/Xserver/hw/kdrive/trio/s3.c:1.2 xc/programs/Xserver/hw/kdrive/trio/s3.c:1.3 --- xc/programs/Xserver/hw/kdrive/trio/s3.c:1.2 Wed Dec 29 22:03:19 1999 +++ xc/programs/Xserver/hw/kdrive/trio/s3.c Wed Mar 8 16:30:21 2000 @@ -1,5 +1,5 @@ /* - * $Id: s3.c,v 1.1 1999/11/02 08:17:24 keithp Exp $ + * Id: s3.c,v 1.1 1999/11/02 08:17:24 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/trio/s3.c,v 1.2 1999/12/30 03:03:19 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/trio/s3.c,v 1.3 2000/02/23 20:30:12 dawes Exp $ */ #include "s3.h" Index: xc/programs/Xserver/hw/kdrive/trio/s3.h diff -u xc/programs/Xserver/hw/kdrive/trio/s3.h:1.2 xc/programs/Xserver/hw/kdrive/trio/s3.h:1.3 --- xc/programs/Xserver/hw/kdrive/trio/s3.h:1.2 Wed Dec 29 22:03:19 1999 +++ xc/programs/Xserver/hw/kdrive/trio/s3.h Wed Mar 8 16:30:22 2000 @@ -1,5 +1,5 @@ /* - * $Id: s3.h,v 1.1 1999/11/02 08:17:24 keithp Exp $ + * Id: s3.h,v 1.1 1999/11/02 08:17:24 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/trio/s3.h,v 1.2 1999/12/30 03:03:19 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/trio/s3.h,v 1.3 2000/02/23 20:30:12 dawes Exp $ */ #ifndef _S3_H_ #define _S3_H_ Index: xc/programs/Xserver/hw/kdrive/trio/s3clock.c diff -u xc/programs/Xserver/hw/kdrive/trio/s3clock.c:1.2 xc/programs/Xserver/hw/kdrive/trio/s3clock.c:1.3 --- xc/programs/Xserver/hw/kdrive/trio/s3clock.c:1.2 Wed Dec 29 22:03:19 1999 +++ xc/programs/Xserver/hw/kdrive/trio/s3clock.c Wed Mar 8 16:30:22 2000 @@ -1,5 +1,5 @@ /* - * $Id: s3clock.c,v 1.1 1999/11/02 08:17:24 keithp Exp $ + * Id: s3clock.c,v 1.1 1999/11/02 08:17:24 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/trio/s3clock.c,v 1.2 1999/12/30 03:03:19 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/trio/s3clock.c,v 1.3 2000/02/23 20:30:13 dawes Exp $ */ #include "s3.h" Index: xc/programs/Xserver/hw/kdrive/trio/s3cmap.c diff -u xc/programs/Xserver/hw/kdrive/trio/s3cmap.c:1.1 xc/programs/Xserver/hw/kdrive/trio/s3cmap.c:1.2 --- xc/programs/Xserver/hw/kdrive/trio/s3cmap.c:1.1 Fri Nov 19 08:54:05 1999 +++ xc/programs/Xserver/hw/kdrive/trio/s3cmap.c Wed Mar 8 16:30:22 2000 @@ -1,5 +1,5 @@ /* - * $Id: s3cmap.c,v 1.1 1999/11/02 08:17:24 keithp Exp $ + * Id: s3cmap.c,v 1.1 1999/11/02 08:17:24 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/trio/s3cmap.c,v 1.1 1999/11/19 13:54:05 hohndel Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/trio/s3cmap.c,v 1.2 2000/02/23 20:30:13 dawes Exp $ */ #include "s3.h" Index: xc/programs/Xserver/hw/kdrive/trio/s3curs.c diff -u xc/programs/Xserver/hw/kdrive/trio/s3curs.c:1.2 xc/programs/Xserver/hw/kdrive/trio/s3curs.c:1.3 --- xc/programs/Xserver/hw/kdrive/trio/s3curs.c:1.2 Wed Dec 29 22:03:19 1999 +++ xc/programs/Xserver/hw/kdrive/trio/s3curs.c Wed Mar 8 16:30:22 2000 @@ -1,5 +1,5 @@ /* - * $Id: s3curs.c,v 1.1 1999/11/02 08:17:24 keithp Exp $ + * Id: s3curs.c,v 1.1 1999/11/02 08:17:24 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/trio/s3curs.c,v 1.2 1999/12/30 03:03:19 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/trio/s3curs.c,v 1.3 2000/02/23 20:30:13 dawes Exp $ */ #include "s3.h" #include "s3draw.h" Index: xc/programs/Xserver/hw/kdrive/trio/s3stub.c diff -u xc/programs/Xserver/hw/kdrive/trio/s3stub.c:1.2 xc/programs/Xserver/hw/kdrive/trio/s3stub.c:1.3 --- xc/programs/Xserver/hw/kdrive/trio/s3stub.c:1.2 Wed Dec 29 22:03:20 1999 +++ xc/programs/Xserver/hw/kdrive/trio/s3stub.c Wed Mar 8 16:30:23 2000 @@ -1,5 +1,5 @@ /* - * $Id: s3stub.c,v 1.1 1999/11/02 08:19:15 keithp Exp $ + * Id: s3stub.c,v 1.1 1999/11/02 08:19:15 keithp Exp $ * * Copyright 1999 SuSE, Inc. * @@ -22,7 +22,7 @@ * * Author: Keith Packard, SuSE, Inc. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/trio/s3stub.c,v 1.2 1999/12/30 03:03:20 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/trio/s3stub.c,v 1.3 2000/02/23 20:30:13 dawes Exp $ */ #include "s3.h" Index: xc/programs/Xserver/hw/kdrive/ts300/ts300.c diff -u xc/programs/Xserver/hw/kdrive/ts300/ts300.c:1.2 xc/programs/Xserver/hw/kdrive/ts300/ts300.c:1.3 --- xc/programs/Xserver/hw/kdrive/ts300/ts300.c:1.2 Wed Dec 29 22:03:20 1999 +++ xc/programs/Xserver/hw/kdrive/ts300/ts300.c Wed Mar 8 16:30:23 2000 @@ -1,5 +1,5 @@ /* - * $Id: ts300.c,v 1.1 1999/11/02 08:17:24 keithp Exp $ + * Id: ts300.c,v 1.1 1999/11/02 08:17:24 keithp Exp $ * * Copyright © 1999 Keith Packard * @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/kdrive/ts300/ts300.c,v 1.2 1999/12/30 03:03:20 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/kdrive/ts300/ts300.c,v 1.3 2000/02/23 20:30:14 dawes Exp $ */ #include "kdrive.h" Index: xc/programs/Xserver/hw/kdrive/vxworks/vxkbd.c diff -u xc/programs/Xserver/hw/kdrive/vxworks/vxkbd.c:1.1 xc/programs/Xserver/hw/kdrive/vxworks/vxkbd.c:1.2 --- xc/programs/Xserver/hw/kdrive/vxworks/vxkbd.c:1.1 Wed Dec 29 22:03:21 1999 +++ xc/programs/Xserver/hw/kdrive/vxworks/vxkbd.c Wed Mar 8 16:30:23 2000 @@ -1,5 +1,5 @@ /* - * $Id: vxkbd.c,v 1.1 1999/11/24 08:35:24 keithp Exp $ + * Id: vxkbd.c,v 1.1 1999/11/24 08:35:24 keithp Exp $ * * Copyright © 1999 Network Computing Devices, Inc. All rights reserved. * Index: xc/programs/Xserver/hw/kdrive/vxworks/vxmouse.c diff -u xc/programs/Xserver/hw/kdrive/vxworks/vxmouse.c:1.1 xc/programs/Xserver/hw/kdrive/vxworks/vxmouse.c:1.2 --- xc/programs/Xserver/hw/kdrive/vxworks/vxmouse.c:1.1 Wed Dec 29 22:03:21 1999 +++ xc/programs/Xserver/hw/kdrive/vxworks/vxmouse.c Wed Mar 8 16:30:23 2000 @@ -1,5 +1,5 @@ /* - * $Id: vxmouse.c,v 1.1 1999/11/24 08:35:24 keithp Exp $ + * Id: vxmouse.c,v 1.1 1999/11/24 08:35:24 keithp Exp $ * * Copyright © 1999 Network Computing Devices, Inc. All rights reserved. * Index: xc/programs/Xserver/hw/kdrive/vxworks/vxworks.c diff -u xc/programs/Xserver/hw/kdrive/vxworks/vxworks.c:1.1 xc/programs/Xserver/hw/kdrive/vxworks/vxworks.c:1.2 --- xc/programs/Xserver/hw/kdrive/vxworks/vxworks.c:1.1 Wed Dec 29 22:03:21 1999 +++ xc/programs/Xserver/hw/kdrive/vxworks/vxworks.c Wed Mar 8 16:30:24 2000 @@ -1,5 +1,5 @@ /* - * $Id: vxworks.c,v 1.1 1999/11/24 08:35:24 keithp Exp $ + * Id: vxworks.c,v 1.1 1999/11/24 08:35:24 keithp Exp $ * * Copyright © 1999 Network Computing Devices, Inc. All rights reserved. * Index: xc/programs/Xserver/hw/xfree86/CHANGELOG diff -u xc/programs/Xserver/hw/xfree86/CHANGELOG:3.1021 xc/programs/Xserver/hw/xfree86/CHANGELOG:3.1079 --- xc/programs/Xserver/hw/xfree86/CHANGELOG:3.1021 Wed Mar 8 16:30:29 2000 +++ xc/programs/Xserver/hw/xfree86/CHANGELOG Wed Mar 8 16:30:30 2000 @@ -1,3 +1,261 @@ +XFree86 4.0 (8 March 2000) +3972. Possible fix for a cirrus driver crash when using -configure + (David Dawes). +3971. R128 driver doc update (#3813, Ove Kaaven). +3970. Update Unicode/ISO 10646 information in the release notes (#3812, + Markus Kuhn). +3969. Fix an apm driver crash when using -configure (#3811, Loic Grenie). +3968. Release notes updates (David Dawes). +3967. Major updates to the XF86Config man page (David Dawes). +3966. Update the Cyrix driver documentation (#3810, Richard Hecker). +3965. Update the APM driver documentation (#3809, Loic Grenie). +3964. Fix a name clash in XF86OffscreenImageRec (Mark Vojkovich). + +XFree86 3.9.18Za (7 March 2000) +3963. GCC/egcs bug workaround and other more minor ATI fixes (Marc La France). +3962. Split HasGlide into HasGlide2 and HasGlide3 (David Dawes). +3961. Enable known gcc optmisation work arounds by default (David Dawes). +3960. Fix uninitialized screen function (RestackWindow) (#3806, Keith Packard). +3959. Added DRI users guide documentation (Brian Paul and Kevin Martin). +3958. Update the -misc-fixed-* BDF fonts. New glyphs have been added and + some old ones fixed. 10x20.bdf and 9x15.bdf now also cover the + ISO 8859-6 characters (Arabic), and 18x18ja.bdf covers now all + characters necessary to display the full ISO-2022-JP-2 repertoire + (#3799, Markus Kuhn). +3957. Make sure the fbdevhw module is loaded by the glint driver when it + is needed, and add some memory barriers to some register access macros + (#3804, Michel Dänzer). +3956. Update the glint driver man page and release notes (#3804, + Michel Dänzer). +3955. Remove some noisy messages from the mga driver (#3803, Mark Vojkovich). +3954. The last segment in any zero-width polysegment drawing request to + a window with more than one clipping rectangle gets dropped in the + fb code (#3802, Keith Packard). +3953. Fix the versions for which HasMTRRSupport is enabled for OpenBSD + (#3800, Matthieu Herrb). +3952. Fix some "ambiguous" else statements in some of the driver Probe() + functions (David Dawes). +3951. Don't make the VBEInit call in the chips driver dependent on the loader + server (David Dawes). +3950. Register vbe symbols as "referenced" with the loader in drivers that + use them (David Dawes). +3949. Fixed the unresolved VBE symbols in the r128 driver and a crash + related to referencing vgahw symbols before the module is loaded + (Kevin Martin). +3948. Fix a -configure crash in the tdfx driver (David Dawes). +3947. Fix a mouse driver bug that prevented the X server from seeing the + mouse button 4 and above when three button emulation is enabled + (#3773, Yoshihiko Sarumau, Kazutaka Yokota). +3946. Add NO_GXCOPY to the s3virge driver's imagewrite flags, which fixes + a crash (#3783, Kevin Brosius). +3945. Fix a parser build problem for Interactive Unix, and update the + docs (#3796, Michael Rohleder). +3944. Fix the r128 hw cursor for big endian machines, and enable building + the r128 driver for PPC (#3975, Kostas Gewrgiou). +3943. Update lnxResource.c to allow builds to succeed on PPC platforms + (#3795, Kostas Gewrgiou). +3942. B&H Lucidux fonts (#3794, donated by Charles Bigelow, Kris Holmes + from Bigelow and Holmes Inc, with hinting donated by Berthold Horn and + Blenda Horn from Y&Y, Inc). +3941. Doc update for the sis driver (#3793, R Horn). +3940. Fix an xman build problem on LynxOS (#3792, Thomas Mueller). +3939. Fix some 24-plane problems with the tga driver, and update the docs + (#3789, Martin Lucina). +3938. Rage 128 documentation update (Kevin Martin). +3937. Fix an unresolved reference to VErrorF from the int10 module + (David Dawes). +3936. Reduce some of the noise in the server startup messages (David Dawes). +3935. Static library objects don't use THREADS_CFLAGS (#3790, Matthieu Herrb). +3934. Fix a fatal error related to shared memory pixmaps in Xinerama (#3788, + Mark Vojkovich). +3933. Fix IA64 build fixes (#3787, Mark Vojkovich). +3932. Fill out the rendition man page (#3785, Dejan Ilic). +3931. Update the s3virge man page (#3784, Kevin Brosius). +3930. Fix the FreeBSD/alpha code to track changes made to the Linux memory + mapping code (#3782, Doug Rabson). +3929. Update email addresses for C&T driver authors (#3781, Nozomi Ytow). + +XFree86 3.9.18Z (3 March 2000) +3928. Restrict the X server -configure option to root, and fix a crash + when the server fails to read the first stage config file that it + writes when run with this option (David Dawes). +3927. Modify the parser's xf86WriteConfigFile() function to write the + file using the real user id when the real and effective ids are + different (David Dawes). +3926. Fix a problem with VT switching disabling direct rendering 3D apps + (Kevin Martin). +3925. Add an imake parameter called XFree86Devel that can be set in host.def + to enable devel-specific settings (like more verbose compiler warnings), + and adjust GccWarningOptions to use this (David Dawes). +3924. Various doc updates, and don't install out of date docs (David Dawes). +3923. Fix a thread related problem in the Xv client library (Mark Vojkovich). +3922. Fix a Xinerama problem with XShapeMask (Mark Vojkovich). +3921. LynxOS documentation and bindist updates, and an os-support fix (#3779, + Thomas Mueller). +3920. Update the wacom input driver to suppor the PL400 model and the + stroking pen on the Intuos model (#3778, Frederic Lepied). +3919. Xterm patch #131 (#3777, Thomas Dickey). +3918. - +3917. Add prototypes for xman, and eliminate most of the compiler warnings + (#3772, Thomas Dickey). +3916. Xterm patch #130 (#3771, Thomas Dickey). +3915. Fix a segfault in XAA caused by reading beyond shared memory bitmaps + when hardware clipping is not available (Mark Vojkovich). +3914. Update the mga man page (Mark Vojkovich). +3913. A Q&D fix for GLX segment violation in loader server (Marc La France). +3912. Add Mach64 screen-to-screen copy acceleration (Marc La France). +3911. IA-64 fixes (Mark Vojkovich). +3910. Add skeleton man pages for the video and input drivers that don't + already have one (David Dawes). +3909. Add man pages for the mouse, keyboard and void input drivers + (David Dawes). +3908. Enable building the "void" input driver by default (David Dawes). +3907. Keep xf86RegisterRootWindowProperty from freeing data it didn't + allocate (Mark Vojkovich). +3906. Add an extra file name to the server config file search path -- + XF86Config-M, where M is the major version number (David Dawes). +3905. DRI megapatch II. This includes DRI enhancements, 3dfx fixes and + updates, updates Mesa to version 3.3 beta, adds new GLX dispatch + code and adds i810 2D support (Precision Insight). +3904. Add SERVER_OVERLAY_VISUALS root window property (Mark Vojkovich). +3903. Remove unnecessary VGA CRTC unlock/relock in cyrix driver + (Marc La France). +3902. Fix ATI driver's 8514/A probe delay when one isn't present + (Marc La France). +3901. Changes to -configure: ATI driver interface; Move default monitor + tolerances to xf86ValidateModes(); Let drivers decide on default depth + and mode; Don't "special-case" VGA driver. (Marc La France) +3900. Fix xc/lib/Imakefile for BuildServersOnly (Marc La France). + +XFree86 3.9.18b (29 February 2000) +3899. Fix a bug in lnx_apm.c that causes fd 0 to be closed instead + of the just opened /proc/apm (#3766, Kars de Jong). +3898. Fix a SuperProbe build problem on UnixWare 7 (#3765, Thanh Ma). +3897. Mouse doc updates (#3764, Kazutaka Yokota). +3896. Speed up dashed lines and conic sections in fb, including changing + mi to use PolyPoint instead of FillSpans for dashed arcs (#3763, + Keith Packard). +3895. Add shadowfb support to the rendition driver (#3762, Dejan Ilic). +3894. Allow Rage128 driver to Probe DDC too (Alan Hourihane). +3893. Allow i740 driver to Probe DDC (using vbe) for -configure, and remove + one liner from tdfx driver to enable it too (Alan Hourihane). +3892. Make GNU make -j workaround separately configurable (Marc La France). +3891. Replace remaining occurrences of BuildXTT imake symbol with + BuildXTrueType (Marc La France). +3890. Fix some problems using the UTF-8 -locale: + - Add proper side (GL/GR) handling to the UTF-8 locale + - No more need to define ISO10646-1 in en_US.UTF-8. It is already + defined in lcCT.c + - The fontset loading routines would access invalid memory when + not all fonts for a fontset were found + (#3761, Bruno Haible). +3889. Avoid spurious warnings from the XFree86-Bigfont extension (#3760, + Bruno Haible). +3888. Fix an error in the XtAppMainLoop() man page related to its return + behaviour (#3759, Bruno Haible). +3887. Make it possible for gcc to compile the Linux int10 module with -fPIC + (#3758, Bruno Haible). +3886. Fix typos in fontcacheP.h and RELNOTES (#3757, Bruno Haible). +3885. Disable stripping programs when they are installed to make it + easier to debug problems that may show up within libraries (#3756, + Bruno Haible). +3884. Add support for reading power management events for NetBSD and + OpenBSD (#3755, Matthieu Herrb). +3883. Update Xinstall.sh for NetBSD-current-ELF (#3754, Matthieu Herrb). +3882. Update NetBSD and OpenBSD bindist files (#3753, Matthieu Herrb). +3881. Apm driver update, including extending the Rush extension to allow + initialisation of the Rush chip in a legal way (#3751, Loic Grenie). +3880. Xterm patch #129 (#3751, Thomas Dickey). +3879. Add DDC support to the tdfx driver via the vbe interface (#3750, + Jarno Paananen). +3878. Enable double scan and interlaced modes for the tdfx and nv drivers + (#3750, Jarno Paananen). +3877. Fix 8bpp initialisation problem with the rendition driver (#3749, + Dejan Ilic). +3876. Update the XThrStub library version with that in the 3.3.x branch, + and enable thread-safe libraries for OpenBSD 2.6 and later (#3748, + Matthieu Herrb). +3875. Fix some REGION_BROKEN related stuff with the overlays (Mark Vojkovich). +3874. Fix a bug with unaccelerated pixmap cache uploads when virtualX + was larger than the displayWidth (Mark Vojkovich). +3873. Xinerama changes (Mark Vojkovich). + - extend the Xinerama protocol and change the version number to 1.1. + - add a new client API in the "Xinerama" namespace with more + functionality than the previous "PanoramiX" functions. + - move Xinerama functions out of libXext and into libXinerama.a. + - some Xinerama bug fixes. +3872. Add a flags field to the XF86OffscreenImageRec (Mark Vojkovich). +3871. Fix a malloc/free problem in Xnest on 64-bit platforms (David Dawes). +3870. Update bindist definition files (David Dawes). +3869. More installer updates (David Dawes). +3868. Make -configure generate multihead configs (Alan Hourihane). + +XFree86 3.9.18a (25 February 2000) +3867. Add a preliminary Install document (David Dawes). +3866. Remove obsolete XF98 and XF68 definitions from xfree86.cf (David Dawes). +3865. Fix some rendition driver problems (#3746, Dejan Ilic). +3864. Add build-time support for using fb instead of cfb with the nv + driver (#3744, Jarno Paananen). +3863. Add missing xf86_ansic.h include for the nv driver, and avoid a + gcc 2.96-generated memcpy call in Mesa (#3743, Jarno Paananen). +3862. Glint driver updates: + - removed obsolete NoWriteBitmap option + - reworked pm2_accel.c (cleaned up swapping/mirroring, removed + obsolete hacks) + - fixed setting of mode sync flags + - fixed PolySegmentThinSolidWrapper functions + (#3742, Michel Dänzer). +3861. Change the positioning of $(XF86INT10LIB) to fix some static server + linking problems (#3741, Kevin Brosius). +3860. Make xclock's -brief option off by default, and document it in the + man page (#3740, Nozomi Ytow). +3859. Improve the default converters set in libX11, and use it for all + "one byte" locales (#3737, Ivan Pascal). +3858. Some improvements to the generic converters set in libX11, including: + - some converter optimization + - actions that can be done once at initialization step moved to + lcGeneric.c + - converters from CharSet to MultiByte/WideChar added + (#3731, Ivan Pascal). +3857. Add a "showCurrent" resource for Xaw, which makes the list widget + always show the selected item (#3728, Paulo Cesar Pereira de Andrade). +3856. Use fb for the fbdev driver, and check if the fbdev modes are suitable + for the monitor (#3709, Michel Dänzer). +3855. Add support for finding VT devices for Linux kernels compiled with + devfs (#3692, Christopher Sekiya). +3854. Implmenent the Font Type font properties for the Speedo, Type 1 and + TrueType backends (#3688, Juliusz Chroboczek). +3853. Add an installation script (Xinstall.sh) for installing binary + distributions (David Dawes). +3852. Fix bitmap installation location for xditview (#3724, Harald Koenig). +3851. Make -probe and -configure deal with vendor-supplied modules again + (Marc La France). +3850. Fix an exposure problem that occured in 8+32 mode when the root + window was in depth 24 (Mark Vojkovich). +3849. The MGA driver now recognizes a "VideoKey" option that sets the + default video key for YUV overlays (Mark Vojkovich). +3848. Add some missing cfbDrawableEnabled checks to the 8+32 and 24+32 + framebuffers (Mark Vojkovich). +3847. Fix a segfault introduced by the workaround in 3546 below. +3846. Fix big endian problems in XAA stipple code (Michel Dänzer). +3845. Fix xf86MatchPciInstances() to not cause r128 to report detection of + other ATI adapters to -probe (Marc La France). +3844. Fix bug in xf86MatchDevices() with -probe or -configure (Marc La France). +3843. More compilation fixups (Marc La France). +3842. Make -probe and -configure use compiled-in driver lists. Make -configure + work in the static server (Marc La France). +3841. A second attempt at fixing DPS compilation (Marc La France). +3840. Add DDC probing to the -configure option and enable it in the trident + driver (Alan Hourihane). +3839. Bring xditview over from the contrib dist. +3838. Fix drm free list bug (Jeff Hartmann and Rik Faith, Precision Insight). +3837. Remove deprecated keywords (Kevin Martin). +3836. Support for YUV offscreen surfaces in Xv and have the MGA driver + offer them (Mark Vojkovich). +3835. Reorder generic Xv adaptor registration to allow V4L to use + driver-managed YUV offscreen surfaces (Gerd Knorr). +3834. Preliminary IA-64 support (Mark Vojkovich, Johannes Erdfelt). + XFree86 3.9.18 (21 February 2000) 3833. Bump the minor version number for libXaw since it has some symbols that are not present in 6.0. @@ -4513,7 +4771,7 @@ 1201. Move most common extensions into a module (#889, Matthieu Herrb). 1200. OpenBSD multi-architecture support (#888, Matthieu Herrb). 1199. Disable disables broken software/hardware cursor switching in s3/svga - (#887, Mark Voikovich). + (#887, Mark Vojkovich). 1198. Some fixes for PC98. XF86Setup, mga driver, VideoBoards98, Cards98 (#886, Takaaki Nomura, Takefumi Tsukada). 1197. Acceleration fixes for Trident and accelerated ImageWrite (#883,884,885 @@ -5434,7 +5692,7 @@ values for 150MHz through 229MHz dot clocks. Set clock limits correctly for Laguna chips. (#280, Corey Anderson). 678. Fix problem in xf86gcmisc.c that could cause a segfault (#279, - Mark Voikovich). + Mark Vojkovich). 677. Fix problems with NonTE text in XAA (#278, David Bateman). 676. Fix loader under SVR4.0.4 (lstat,fstat,mknod)(#277, Richard Coley). 675. Speedups for dashed lines in SVGA/S3 (#276, Mark Vojkovich). @@ -9777,4 +10035,4 @@ -$XFree86: xc/programs/Xserver/hw/xfree86/CHANGELOG,v 3.1021 2000/02/21 20:44:40 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/CHANGELOG,v 3.1079 2000/03/08 19:27:44 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/DGA diff -u xc/programs/Xserver/hw/xfree86/DGA:1.1 xc/programs/Xserver/hw/xfree86/DGA:removed --- xc/programs/Xserver/hw/xfree86/DGA:1.1 Fri Nov 19 08:54:09 1999 +++ xc/programs/Xserver/hw/xfree86/DGA Wed Mar 8 16:30:30 2000 @@ -1,476 +0,0 @@ - - -#include - - - XFree86 DGA is not intended as a direct rendering API, but rather, -as a mechanism to "get the X-Server out of the way" so that a direct -rendering API, such as OpenGL, can have full access to the hardware. -With this in mind, DGA does provide clients some direct access to -the hardware without requiring a separate rendering API, but this -access is limited to direct linear framebuffer access. - - DGA is initialized by passing a number corresponding to a valid -XDGAMode to XDGASetMode(). Clients can get a list of valid modes -from XDGAQueryModes(). Each XDGAMode corresponds to a different -framebuffer layout. - -typedef struct { - int num; - char *name; - float verticalRefresh; - int flags; - int imageWidth; - int imageHeight; - int pixmapWidth; - int pixmapHeight; - int bytesPerScanline; - int byteOrder; - int depth; - int bitsPerPixel; - unsigned long redMask; - unsigned long greenMask; - unsigned long blueMask; - short visualClass; - int viewportWidth; - int viewportHeight; - int xViewportStep; - int yViewportStep; - int maxViewportX; - int maxViewportY; - int viewportFlags; -} XDGAMode; - - num - - A unique identifying number (num > 0) for the mode. This is the - number referenced when initializing the mode. - - name - - The name of the corresponding modeline as given in the XF86Config file. - - verticalRefresh - - The vertical refresh rate for the modeline (in Hz). - - flags - - Any of the following may be OR'd together: - - XDGAConcurrentAccess - - Indicates that concurrent client/server access to the - framebuffer is possible. If this flag is not set it is - very important to call XDGASync() before directly accessing - the framebuffer if a call to XDGAFillRectangle(), - XDGACopyArea() or XDGACopyTransparentArea() or any Xlib - rendering function has been made prior to such accesses. - - XDGASolidFillRect - - Indicates that XDGAFillRectangle() is supported. - - XDGABlitRect - - Indicates that XDGACopyArea() is supported. - - XDGABlitTransRect - - Indicates that XDGACopyTransparentArea() is supported. - - XDGAPixmap - - Indicates that a Pixmap will be returned when the mode is - initialized. This means that rendering with Xlib is possible - for this mode. - - XDGAInterlaced - XDGADoublescan - - Indicates that the mode is an interlaced or doublescan mode. - - - imageWidth - imageHeight - - The width and height of the framebuffer area accessible by the client. - This rectangle is always justified to the upper left-hand corner. - - pixmapWidth - pixmapHeight - - The width and height of the framebuffer area accessible by Xlib. - This rectangle is always justified to the upper left-hand corner. - These fields are only valid if the XDGAPixmap flag is set in the - "flags" field. - - bytesPerScanline - - The pitch of the framebuffer in bytes. - - byteOrder - - MSBFirst or LSBFirst. - - depth - - The number of bits in each pixel which contain usable data. - - bitsPerPixel - - The number of bits taken up by each pixel. - - redMask - greenMask - blueMask - - The RGB masks. These do not apply to color-indexed modes. - - visualClass - - TrueColor, PseudoColor, DirectColor, etc... - - viewportWidth - viewportHeight - - The dimensions of the portion of the framebuffer which will be - displayed on the screen. - - xViewPortStep - yViewPortStep - - The granularity of the x,y viewport positioning possible with - the XDGASetViewport function. - - maxViewportX - maxViewportY - - The maximimum x and y positions possible with the XDGASetViewport - function. - - viewportFlags - - Any of the following may be OR'd together: - - XDGAFlipRetrace - - Indicates that the hardware can switch viewports during - the vertical retrace. - - XDGAFlipImmediate - - Indicates that the hardware can switch viewports immediately - without waiting for the vertical retrace. - - - -XDGAMode* XDGAQueryModes( - Display *dpy, - int screen, - int *num -); - - XDGAQueryModes() returns a pointer to an array of XDGAModes which -are valid for the given screen. "num" is the number of elements in the -array. The returned array can be freed with XFree(); - - - -XDGADevice* XDGASetMode( - Display *dpy, - int screen, - int num -); - - A XDGAMode will be initialized when its "num" is passed to -XDGASetMode(). To exit DGA mode and return to normal server operation, -pass number zero to XDGASetMode(). XDGASetMode() returns a pointer -to an XDGADevice if successful. The XDGADevice can be freed with -XFree(). - - struct { - XDGAMode mode; - unsigned char *data; - Pixmap pixmap; - } XDGADevice; - - - mode - - The XDGAMode structure, identical to the information returned - by XDGAQueryModes. - - data - - If direct framebuffer access is desired and possible, this field - will contain a pointer to the mapped framebuffer memory. Generally, - this field will be zero unless a call to XDGAOpenFramebuffer() - is made prior to initialization of the mode. - - pixmap - - If the mode supports Xlib rendering as indicated by XDGAPixmap - in the flags field, this will contain a Pixmap handle suitable - for passing as the drawable argument to Xlib functions. This - field will be zero if Xlib rendering is not supported. - - -Bool XDGAQueryExtension( - Display *dpy, - int *eventBase, - int *errorBase -); - - XDGAQueryExtension() checks for the prescence of the extension -and returns the event and error bases. - - -Bool XDGAQueryVersion( - Display *dpy, - int *majorVersion, - int *minorVersion -); - - XDGAQueryVersion() returns the major and minor version numbers (duh). - - -Bool XDGAOpenFramebuffer( - Display *dpy, - int screen -); - -void XDGACloseFramebuffer( - Display *dpy, - int screen -); - - - XDGAOpenFramebuffer() maps the framebuffer memory. The client -needs sufficient privledges to be able to do this. - - XDGAOpenFramebuffer() should be called prior to initializing -a dga mode if direct framebuffer access is desired for that mode. -XDGAOpenFramebuffer() does not need to be called if direct framebuffer -access is not required. If the framebuffer is opened, -XDGACloseFramebuffer() should be called prior to client exit to -unmap the memory. - - - -void XDGAChangePixmapMode( - Display *dpy, - int screen, - int *x, - int *y, - int mode -); - - In the case where a Pixmap is available for Xlib rendering, this -function allows changing between two pixmap sizes. The following -values for "mode" are possible. - - XDGAPixmapModeLarge - - The pixmap size is defined by the pixmapWidth and pixmapHeight - fields in the XDGAMode structure. The "x" and "y" values are - ignored in this case. - - XDGAPixmapModeSmall - - The pixmap size is defined by the viewportWidth and viewportHeight - fields in the XDGAMode structure. In this mode, the "x" and "y" - values specify where in the framebuffer this pixmap rectangle - is located. It may be placed anywhere within the Xlib renderable - region described by the pixmapWidth and pixmapHeight fields in - the XDGAMode. The "x" and "y" values returned are the resultant - location of the pixmap and may be different from the requested - x,y location due to platform specific alignment constraints. - All Xlib rendering is clipped to this pixmap rectangle. - - -void XDGASetViewport( - Display *dpy, - int screen, - int x, - int y, - int flags -); - - Set the upper left-hand corner of the rectangle of framebuffer -that is to be displayed on the screen. Not all locations may be -supported by the hardware and requested locations will be adjusted -according to the xViewPortStep and yViewPortStep fields in the XDGAMode. - - "flags" can be XDGAFlipRetrace or XDGAFlipImmediate to adjust -the viewport location at the next vertical retrace or immediately. -Values other than the supported values advertised in the mode's -viewportFlags field will result in hardware-specific default behavior. -XDGAFlipImmediate will block until the flip is completed. -XDGAFlipRetrace will generally NOT block so it is necessary to -monitor the viewport status with XDGAGetViewportStatus(). - - FlipImmediate requests during pending FlipRetrace requests -will be ignored. - - -int XDGAGetViewportStatus( - Display *dpy, - int screen -); - - - XDGAGetViewportStatus() keeps track of the XDGASetViewport() -requests still pending. The return value of the function will -have consecutive bits set (LSB justified), each bit representing -a pending viewport change. For example: - - while(XDGAGetViewportStatus(dpy, screen)); - - waits for all pending viewport changes to finish. - - while(0x2 & XDGAGetViewportStatus(dpy, screen)); - - waits until all but the last viewport changes have completed. - - -Colormap XDGACreateColormap( - Display *dpy, - int screen, - XDGADevice *device, - int alloc -); - -void XDGAInstallColormap( - Display *dpy, - int screen, - Colormap cmap -); - - XDGACreateColormap() is similar to the Xlib function XCreateColormap() -except that it takes an XDGADevice as an argument instead of a Window -and Visual. Though XCreateColormap() may create useable colormaps in -some cases, XDGACreateColormap() is the prefered method for creating -colormaps in DGA since there may not be an advertised visual compatible -with the DGA device. - - XDGAInstallColormap() must be used to install colormaps in DGA -mode. XInstallColormap() will not work. - - - -void XDGASelectInput( - Display *dpy, - int screen, - long event_mask -); - - DGA provides its own events. These can be enabled by calling -XDGASelectInput(). This function is similar to XSelectInput() -and all Xlib Key, Button and Motion masks are supported. - - - The following DGA events are defined. - -typedef struct { - int type; /* ButtonPress or ButtonRelease + the DGA event base*/ - unsigned long serial; /* # or last request processed by the server */ - Display *display; /* Display the event was read from */ - int screen; /* The screen number the event came from */ - Time time; /* milliseconds */ - unsigned int state; /* key or button mask */ - unsigned int button; /* detail */ -} XDGAButtonEvent; - -typedef struct { - int type; /* KeyPress or KeyRelease + the DGA event base*/ - unsigned long serial; /* # or last request processed by the server */ - Display *display; /* Display the event was read from */ - int screen; /* The screen number the event came from */ - Time time; /* milliseconds */ - unsigned int state; /* key or button mask */ - unsigned int keycode; /* detail */ -} XDGAKeyEvent; - -typedef struct { - int type; /* MotionNotify + the DGA event base*/ - unsigned long serial; /* # or last request processed by the server */ - Display *display; /* Display the event was read from */ - int screen; /* The screen number the event came from */ - Time time; /* milliseconds */ - unsigned int state; /* key or button mask */ - int dx; /* relative pointer motion */ - int dy; /* relative pointer motion */ -} XDGAMotionEvent; - - -void -XDGAKeyEventToXKeyEvent(XDGAKeyEvent* dk, XKeyEvent* xk); - - XDGAKeyEventToXKeyEvent() is a helper function to translate -XDGAKeyEvents into XKeyEvents suitable for use with XLookupKeysym(). - - -void XDGAFillRectangle( - Display *dpy, - int screen, - int x, - int y, - unsigned int width, - unsigned int height, - unsigned long color -); - - -void XDGACopyArea( - Display *dpy, - int screen, - int srcx, - int srcy, - unsigned int width, - unsigned int height, - int dstx, - int dsty -); - - -void XDGACopyTransparentArea( - Display *dpy, - int screen, - int srcx, - int srcy, - unsigned int width, - unsigned int height, - int dstx, - int dsty, - unsigned long key /* source pixels of this value will not be copied */ -); - - These three functions are included with some reserveration since -DGA is not intended as a rendering API. These are merely convience -routines and are optionally supported. The associated flags will -be set in the XDGAMode's "flags" field if these functions are supported. -These functions will be no-ops otherwise. - - These functions do not provide direct access to the hardware, -but are merely context-less operations performed by the server. - - -void XDGASync( - Display *dpy, - int screen -); - - This function blocks until all server rendering to the framebuffer -completes. If Xlib or the 3 rendering functions above are used, XDGASync() -must be called before the client directly accesses the framebuffer as -the server rendering is asynchronous with the client and may have not -completed. This is especially important if the XDGAConcurrentAccess -flag is not set in the XDGAMode's "flags" field since concurrent access -by the server and client may result in a system lockup. - - - - - -$XFree86: xc/programs/Xserver/hw/xfree86/DGA,v 1.1 1999/11/19 13:54:09 hohndel Exp $ Index: xc/programs/Xserver/hw/xfree86/Imakefile diff -u xc/programs/Xserver/hw/xfree86/Imakefile:3.62 xc/programs/Xserver/hw/xfree86/Imakefile:3.64 --- xc/programs/Xserver/hw/xfree86/Imakefile:3.62 Wed Mar 8 16:30:30 2000 +++ xc/programs/Xserver/hw/xfree86/Imakefile Wed Mar 8 16:30:30 2000 @@ -3,7 +3,7 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/Imakefile,v 3.62 2000/02/13 03:06:31 dawes Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/Imakefile,v 3.64 2000/03/08 05:38:30 dawes Exp $ #include #define IHaveSubdirs @@ -188,8 +188,12 @@ InstallDriverSDKNonExecFile($(XF98CONFIG),$(DRIVERSDKDIR)) #endif +EXTRAMANCPPDEFS=-D__logdir__=$(LOGDIRECTORY) +CppManTarget(XFree86,$(EXTRAMANCPPDEFS)) +CppManTarget(XF86Config,$(EXTRAMANCPPDEFS)) InstallManPage(XFree86,$(MANDIR)) -InstallGenManPageLong(XF86Conf,$(FILEMANDIR),XF86Config,$(FILEMANSUFFIX)) +InstallGenManPage(XF86Config,$(FILEMANDIR),$(FILEMANSUFFIX)) + InstallNamedNonExec($(XF86CONFIG),XF86Config.eg,$(LIBDIR)) InstallNamedNonExec($(XF98CONFIG),XF86Config.98,$(LIBDIR)) Index: xc/programs/Xserver/hw/xfree86/XF86Conf.man diff -u xc/programs/Xserver/hw/xfree86/XF86Conf.man:3.66 xc/programs/Xserver/hw/xfree86/XF86Conf.man:removed --- xc/programs/Xserver/hw/xfree86/XF86Conf.man:3.66 Wed Mar 8 16:30:31 2000 +++ xc/programs/Xserver/hw/xfree86/XF86Conf.man Wed Mar 8 16:30:30 2000 @@ -1,1234 +0,0 @@ -.\" $XFree86: xc/programs/Xserver/hw/xfree86/XF86Conf.man,v 3.66 2000/02/10 18:57:24 dawes Exp $ -.TH XF86Config 4/5 "Version 4.0" "XFree86" -.SH NAME -XF86Config - Configuration File for XFree86 -.SH WARNING -This man page is out of date. It does not describe the config file format -used in XFree86 3.9.x. -.SH DESCRIPTION -.I XFree86 -uses a configuration file called \fBXF86Config\fP for its initial -setup. This configuration file is searched for in the following -places: -.sp -.in 8 -.nf -/etc/XF86Config -/etc/X11/XF86Config -/usr/X11R6/etc/XF86Config -/lib/X11/XF86Config.\fIhostname\fP -/lib/X11/XF86Config -.fi -.in -8 -.LP -where refers to the root of the X11 install tree. -When an X server is started by a `root' user, it will first search for -an \fBXF86Config\fP file in that user's home directory. -.PP -This file is composed of a number of sections. Each section has -the form: -.sp -.in 8 -.nf -Section "\fISectionName\fP" - \fISectionEntry\fP - ... -EndSection -.fi -.in -8 -.PP -The section names are: -.sp -.in 8 -.nf -\fBFiles\fP (File pathnames) -\fBModule\fP (Dynamic module loading) -\fBServerFlags\fP (Server flags) -\fBKeyboard\fP (Keyboard configuration) -\fBPointer\fP (Pointer configuration) -\fBMonitor\fP (Monitor description) -\fBDevice\fP (Graphics device description) -\fBScreen\fP (Screen configuration) -\fBXInput\fP (Extended Input devices configuration) -.fi -.PP -The \fBFiles\fP section is used to specify the default font path -and the path to the RGB database. These paths can also be set from -the command line (see \fIXserver(1)\fP). The entries available -for this section are: -.TP 8 -.B FontPath \fI"path"\fP -sets the search path for fonts. This path is a comma separated -list of directories which the X server searches for font databases. -Multiple \fBFontPath\fP entries may be specified, and they will be -concatenated to build up the fontpath used by the server. -.sp -X11R6 allows the X server to request fonts from a font server. A -font server is specified by placing a "/:" -entry into the fontpath. For example, the fontpath -"/usr/X11R6/lib/X11/fonts/misc/,tcp/zok:7100" tells the X server -to first try to locate the font in the local directory -/usr/X11R6/lib/X11/fonts/misc. If that fails, then request the -font from the \fIfont server\fP running on machine zok listening -for connections on TCP port number 7100. -.TP 8 -.B RGBPath \fI"path"\fP -sets the path name for the RGB color database. -.TP 8 -.B ModulePath \fI"path"\fP -sets the search path for dynamic modules. This path is a comma separated -list fo directories which the X server searches for dynamic module loading -in the order specified. -Multiple \fBModulePath\fP entries may be specified, and they will be -concatenated to build the modulepath used by the server. -.PP -The -.B Module -section is used to specify which dynamic modules should be loaded. -At present dynamic modules are only used for XInput devices, and are -only supported on some systems (currently Linux ELF, FreeBSD 2.x and -NetBSD 1.x). The entry available for this section is: -.TP 8 -.B Load \fI"module"\fP -This instructs the server to load \fI"module"\fP. If the module -is not specified with a full pathname, the directories specified in -the \fBModulePath\fP are searched. -Modules are currently available to support extended input devices. The -names of these are: -.sp -.in 20 -.nf -.B xf86Elo.so -.B xf86Jstk.so -.B xf86Wacom.so -.B xf86Summa.so -.fi -.in -20 -The PEX and XIE extension are also be available as modules on some -systems. The names for these are: -.sp -.in 20 -.nf -.B pex5.so -.B xie.so -.fi -.in -20 -.RS 8 -For an up-to-date listing, check in /lib/modules. -.RE -.PP -The \fBServerFlags\fP section is used to specify some miscellaneous -X server options. The entries available for this section are: -.TP 8 -.B NoTrapSignals -This prevents the X server from trapping a range of unexpected -fatal signals and exiting cleanly. Instead, the X server will die -and drop core where the fault occurred. The default behaviour is -for the X server exit cleanly, but still drop a core file. In -general you never want to use this option unless you are debugging -an X server problem. -.TP 8 -.B DontZap -This disallows the use of the \fBCtrl+Alt+Backspace\fP sequence. -This sequence allows you to terminate the X server. -Setting \fBDontZap\fP allows this key sequence to be passed to clients. -.TP 8 -.B DontZoom -This disallows the use of the \fBCtrl+Alt+Keypad-Plus\fP and -\fBCtrl+Alt+Keypad-Minus\fP sequences. These sequences allows you to -switch between video modes. -Setting \fBDontZoom\fP allows these key sequences to be passed to clients. -.TP 8 -.B AllowNonLocalXvidtune -This allows the xvidtune client to connect from another host. By default -non-local connections are not allowed. -.TP 8 -.B DisableVidMode -This disables the parts of the VidMode extension used by the xvidtune client -that can be used to change the video modes. -.TP 8 -.B AllowNonLocalModInDev -This allows a client to connect from another host and change keyboard -and mouse settings in the running server. By default -non-local connections are not allowed. -.TP 8 -.B DisableModInDev -This disables the parts of the Misc extension that can be used to -modify the input device settings dynamically. -.TP 8 -.B AllowMouseOpenFail -This allows the server to start up even if the mouse device can't be -opened/initialised. -.PP -The \fBKeyboard\fP section is used to specify the keyboard input -device, parameters and some default keyboard mapping options. The -entries available for this section are: -.TP 8 -.B Protocol \fI"kbd-protocol"\fP -\fIkbd-protocol\fP may be either \fBStandard\fP or \fBXqueue\fP. -\fBXqueue\fP is specified when using the event queue driver on SVR3 -or SVR4. -.TP -.B AutoRepeat \fIdelay rate\fP -changes the behavior of the autorepeat of the keyboard. This does -not work on all platforms. -.TP 8 -.B ServerNumLock -forces the X server to handle the numlock key internally. The X -server sends a different set of keycodes for the numpad when the -numlock key is active. This enables applications to make use of -the numpad. -.PP -.nf -.B LeftAlt \fImapping\fP -.B RightAlt \fImapping\fP -.B AltGr \fImapping\fP -.B ScrollLock \fImapping\fP -.B RightCtl \fImapping\fP -.fi -.RS 8 -Allows a default mapping to be set for the above keys (note that -\fBAltGr\fP is a synonym for \fBRightAlt\fP). The values that may -be specified for \fImapping\fP are: -.sp -.in 20 -.nf -Meta -Compose -ModeShift -ModeLock -ScrollLock -Control -.fi -.PP -The default mapping when none of these options are specified is: -.sp -.in 20 -.nf -LeftAlt Meta -RightAlt Meta -ScrollLock Compose -RightCtl Control -.fi -.RE -.TP 8 -.B XLeds \fIled\fP ... -makes \fIled\fP available for clients instead of using the traditional -function (Scroll Lock, Caps Lock & Num Lock). \fIled\fP is a list -of numbers in the range 1 to 3. -.TP 8 -.B VTSysReq -enables the SYSV-style VT switch sequence for non-SYSV systems -which support VT switching. This sequence is Alt-SysRq followed -by a function key (Fn). This prevents the X server trapping the -keys used for the default VT switch sequence. -.TP 8 -.B VTInit \fI"command"\fP -Runs \fIcommand\fP after the VT used by the server has been opened. -The command string is passed to "/bin/sh -c", and is run with the -real user's id with stdin and stdout set to the VT. The purpose -of this option is to allow system dependent VT initialisation -commands to be run. One example is a command to disable the 2-key -VT switching sequence which is the default on some systems. -.TP 8 -.B XkbDisable -Turns the XKEYBOARD extension off, equivalent to using the -kb -command line option. -.PP -.nf -.B XkbRules \fI"rulesfile"\fP -.B XkbModel \fI"model"\fP -.B XkbLayout \fI"layout"\fP -.B XkbVariant \fI"variant"\fP -.B XkbOptions \fI"optionlist"\fP -.fi -.RS 8 -These specify the definitions which are used to determine which -XKEYBOARD components to use. The optionlist, should be a comma -separated list of options. -The default mappings for each these are: -.sp -.in 20 -.nf -XkbRules "xfree86" -XkbModel "pc101" -XkbLayout "us" -XkbVariant "" -XkbOptions "" -.fi -.RE -.PP -This is the preferred method of specifying the keyboard configuration, -however, you can also specify the components directly with: -.sp -.nf -.B XkbKeymap \fI"keymap"\fP -.B XkbKeycodes \fI"keycodes"\fP -.B XkbTypes \fI"types"\fP -.B XkbCompat \fI"compat"\fP -.B XkbSymbols \fI"symbols"\fP -.B XkbGeometry \fI"geometry"\fP -.fi -.RS 8 -If you specify only some of the components, the remaining components -will use these default values: -.sp -.in 20 -.nf -XkbKeymap none -XkbKeycodes "xfree86" -XkbTypes "default" -XkbCompat "default" -XkbSymbols "us(pc101)" -XkbGeometry "pc" -.fi -.RE -.PP -The \fBPointer\fP section is used to specify the pointer device -and parameters. The entries available for this section are: -.TP 8 -.B Protocol \fI"protocol-type\fP" -specifies the pointer device protocol type. The protocol types -available are: -.sp -.in 20 -.nf -.B Auto -.B BusMouse -.B GlidePoint -.B GlidePointPS/2 -.B IntelliMouse -.B IMPS/2 -.B Logitech -.B Microsoft -.B MMHitTab -.B MMSeries -.B Mouseman -.B MouseManPlusPS/2 -.B MouseSystems -.B NetMousePS/2 -.B NetScrollPS/2 -.B OSMouse -.B PS/2 -.B SysMouse -.B ThinkingMouse -.B ThinkingMousePS/2 -.B Xqueue -.fi -.in -20 -.RS 8 -.PP -One should specify \fBBusMouse\fP for the Logitech bus mouse and -bus or InPort mice from Microsoft and ATI. -The \fBLogitech\fP protocol is for old serial mouse models from Logitech. -Many newer Logitech serial mice use either the \fBMicrosoft\fP -or \fBMouseMan\fP protocol. \fBXqueue\fP should be specified here -if it was used in the \fBKeyboard\fP section. \fBOSMouse\fP refers -to the event-driver mouse interface available on SCO's SVR3, and the -mouse interface provided for OS/2. This -may optionally be followed by a number specifying the number of -buttons the mouse has. -\fBSysMouse\fP refers to the system mouse device, /dev/sysmouse, in -FreeBSD. -.PP -The \fBPS/2\fP and other \fBXXXXPS/2\fP protocol types are for PS/2 mice. -\fBPS/2\fP should always work with any PS/2 mouse -regardless of the model of the PS/2 mouse. -The other \fBXXXXPS/2\fP protocol types may or may not be supported by -your OS. -.PP -The rest of the protocol types are for serial mice. -If your serial mouse is of a relatively new model, you may specify -\fBAuto\fP, then the X server will try to select an appropriate -protocol type automatically. The \fBAuto\fP protocol type may -also work for the PS/2 and bus mice on some OSs. -.RE -.TP 8 -.B Device \fI"pointer-dev"\fP -specifies the device the server should open for pointer input (eg, -\fB/dev/tty00\fP or \fB/dev/mouse\fP). A device should not be -specified when using the \fBXqueue\fP or \fBOSMouse\fP protocols. -.TP 8 -.B Port \fI"pointer-dev"\fP -is an alternate form of the \fBDevice\fP entry. -.TP 8 -.B BaudRate \fIrate\fP -sets the baudrate of the serial mouse to \fIrate\fP. For mice that -allow dynamic speed adjustments (like older Logitechs) the baudrate is -changed in the mouse. Otherwise the rate is simply set on the -computer's side to allow mice with non-standard rates (the standard -rate is 1200). For 99% of mice you should not set this to anything -other than the default (1200). -.TP 8 -.B Buttons \fIN\fP -This option tells the X server the number of buttons on the mouse. -Currently there is no reliable way to automatically detect the correct -number. -This option is the only means for the X server to obtain it. -The default value is three. -Note that if you intend to assign Z axis movement to button events -using the \fBZAxisMapping\fP option below, you need to take account -of those buttons into \fIN\fP too. -.TP 8 -.B Emulate3Buttons -enables the emulation of the third mouse button for mice which only -have two physical buttons. The third button is emulated by pressing -both buttons simultaneously. -.TP 8 -.B Emulate3Timeout \fItimeout\fP -sets the time (in milliseconds) that the server waits before deciding if -two buttons were pressed ``simultaneously'' when 3 button emulation is -enabled. The default timeout is 50ms. -.TP 8 -.B ChordMiddle -handles mice which send left+right events when the middle button -is used (like some Logitech Mouseman mice). -.TP 8 -.B SampleRate \fIrate\fP -sets the number of motion/button-events the mouse sends per second. -This is currently only supported for some Logitech mice. -.TP 8 -.B Resolution \fIcount\fP -sets the resolution of the device in counts per inch. -This is not always supported by all the mice. -.TP 8 -.B ClearDTR -This option clears the DTR line on the serial port used by the -mouse. This option is only valid for a mouse using the \fBMouseSystems\fP -protocol. Some dual-protocol mice require DTR to be cleared to -operate in MouseSystems mode. Note, in versions of XFree86 prior -to 2.1, this option also cleared the RTS line. A separate -\fBClearRTS\fP option has since been added for mice which require -this. -.TP 8 -.B ClearRTS -This option clears the RTS line on the serial port used by the -mouse. This option is only valid for a mouse using the \fBMouseSystems\fP -protocol. Some dual-protocol mice require both DTR and RTS to be -cleared to operate in MouseSystems mode. Both the \fBClearDTR\fP -and \fBClearRTS\fP options should be used for such mice. -.TP 8 -.B ZAxisMapping X -.TP 8 -.B ZAxisMapping Y -.TP 8 -.B ZAxisMapping \fIN M\fP -Some mouse devices have a wheel or a roller. Its action is -reported as the Z (third) axis movement in the X server. -The Z axis movement can be assigned to another axis (\fIX\fP or \fIY\fP) -or a pair of buttons (the button \fIN\fP for negative movement -and \fIM\fP for positive movement) with this option. -.PP -The \fBMonitor\fP sections are used to define the specifications -of a monitor and a list of video modes suitable for use with a -monitor. More than one \fBMonitor\fP section may be present in an -XF86Config file. The entries available for this section are: -.TP 8 -.B Identifier \fI"ID string"\fP -This specifies a string by which the monitor can be referred to in -a later \fBScreen\fP section. Each \fBMonitor\fP section should -have a unique ID string. -.TP 8 -.B VendorName \fI"vendor"\fP -This optional entry specifies the monitor's manufacturer. -.TP 8 -.B ModelName \fI"model"\fP -This optional entry specifies the monitor's model. -.TP 8 -.B HorizSync \fIhorizsync-range\fP -gives the range(s) of horizontal sync frequencies supported by the -monitor. \fIhorizsync-range\fP may be a comma separated list of -either discrete values or ranges of values. A range of values is -two values separated by a dash. By default the values are in units -of kHz. They may be specified in MHz or Hz if \fBMHz\fP or \fBHz\fP -is added to the end of the line. The data given here is used by the X -server to determine if video modes are within the specifications -of the monitor. This information should be available in the -monitor's handbook. -.TP 8 -.B VertRefresh \fIvertrefresh-range\fP -gives the range(s) of vertical refresh frequencies supported by -the monitor. \fIvertrefresh-range\fP may be a comma separated list -of either discrete values or ranges of values. A range of values -is two values separated by a dash. By default the values are in -units of Hz. They may be specified in MHz or kHz if \fBMHz\fP or -\fBkHz\fP is added to the end of the line. The data given here is used -by the X server to determine if video modes are within the -specifications of the monitor. This information should be available -in the monitor's handbook. -.TP 8 -.B Gamma \fIgamma-value(s)\fP -This is an optional entry that can be used to specify the gamma -correction for the monitor. It may be specified as either a single -value or as three separate RGB values. Not all X servers are capable -of using this information. -.TP 8 -.B Mode \fI"name"\fP -indicates the start of a multi-line video mode description. The -mode description is terminated with an \fBEndMode\fP line. The -mode description consists of the following entries: -.sp -.RS 8 -.TP 4 -.B DotClock \fIclock\fP -is the dot clock rate to be used for the mode. -.TP 4 -.B HTimings \fIhdisp hsyncstart hsyncend htotal\fP -specifies the horizontal timings for the mode. -.TP 4 -.B VTimings \fIvdisp vsyncstart vsyncend vtotal\fP -specifies the vertical timings for the mode. -.TP 4 -.B Flags \fI"flag" ...\fP -specifies an optional set of mode flags. \fB"Interlace"\fP indicates -that the mode is interlaced. \fB"DoubleScan"\fP indicates a mode where -each scanline is doubled. \fB"+HSync"\fP and \fB"-HSync"\fP can -be used to select the polarity of the HSync signal. \fB"+VSync"\fP -and \fB"-VSync"\fP can be used to select the polarity of the VSync -signal. \fB"Composite"\fP, can be used to specify composite sync on -hardware where this is supported. Additionally, on some hardware, -\fB"+CSync"\fP and \fB"-CSync"\fP may be used to select the composite -sync polarity. -.TP 4 -.B HSkew \fIhskew\fP -specifies the number of pixels (towards the right edge of the screen) by which -the display enable signal is to be skewed. Not all drivers use this -information. This option might become necessary to override the default -value supplied by the server (if any). "Roving" horizontal lines indicate this -value needs to be increased. If the last few pixels on a scan line appear on -the left of the screen, this value should be decreased. -.TP 4 -.B VScan \fIvscan\fP -specifies the number of times each scanline is painted on the screen. Not all -drivers use this information. Values less than 1 are treated as 1, which is -the default. Generally, the \fB"DoubleScan"\fP flag mentionned above doubles -this value. -.RE -.TP 8 -.B Modeline \fI"name" mode-description\fP -is a single line format for specifying video modes. The -\fImode-description\fP is in four sections, the first three of -which are mandatory. The first is the pixel clock. This is a -single number specifying the pixel clock rate for the mode. The -second section is a list of four numbers specifying the horizontal -timings. These numbers are the \fIhdisp\fP, \fIhsyncstart\fP, -\fIhsyncend\fP, \fIhtotal\fP. The third section is a list of four -numbers specifying the vertical timings. These numbers are -\fIvdisp\fP, \fIvsyncstart\fP, \fIvsyncend\fP, \fIvtotal\fP. The -final section is a list of flags specifying other characteristics -of the mode. \fBInterlace\fP indicates that the mode is interlaced. -\fBDoubleScan\fP indicates a mode where each scanline is doubled. -\fB+HSync\fP and \fB\-HSync\fP can be used to select the polarity -of the HSync signal. \fB+VSync\fP and \fB\-VSync\fP can be used -to select the polarity of the VSync signal. \fBComposite\fP can be -used to specify composite sync on hardware where this is supported. -Additionally, on some hardware, -\fB+CSync\fP and \fB-CSync\fP may be used to select the composite -sync polarity. The \fBHSkew\fP and \fBVScan\fP options mentioned above can -also be used here. -.PP -The \fBDevice\fP sections are used to define a graphics device -(video board). More than one \fBDevice\fP section may be present -in an XF86Config file. The entries available for this section are: -.TP 8 -.B Identifier \fI"ID string"\fP -This specifies a string by which the graphics device can be referred -to in a later \fBScreen\fP section. Each \fBDevice\fP section -should have a unique ID string. -.TP 8 -.B VendorName \fI"vendor"\fP -This optional entry specifies the graphics device's manufacturer. -.TP 8 -.B BoardName \fI"model"\fP -This optional entry specifies the name of the graphics device. -.TP 8 -.B Chipset \fI"chipset-type"\fP -This optional entry specifies the chipset used on the graphics -board. In most cases this entry is not required because the X -servers will probe the hardware to determine the chipset type. -.TP 8 -.B Ramdac \fI"ramdac-type"\fP -This optional entry specifies the type of RAMDAC used on the graphics -board. This is only used by a few of the X servers, and in most -cases it is not required because the X servers will probe the -hardware to determine the RAMDAC type where possible. -.TP 8 -.B DacSpeed \fIspeed\fP -This optional entry specifies the RAMDAC speed rating (which is -usually printed on the RAMDAC chip). The speed is in MHz. This -is only used by a few of the X servers, and only needs to be -specified when the speed rating of the RAMDAC is different from -the default built in to the X server. -.TP 8 -.B Clocks \fIclock ...\fP -specifies the dotclocks that are on your graphics board. The clocks -are in MHz, and may be specified as a floating point number. The -value is stored internally to the nearest kHz. The ordering of -the clocks is important. It must match the order in which they -are selected on the graphics board. Multiple \fBClocks\fP lines -may be specified. For boards with programmable clock chips, the -\fBClockChip\fP entry should be used instead of this. A \fBClocks\fP -entry is not mandatory for boards with non-programmable clock chips, -but is highly recommended because it prevents the clock probing -phase during server startup. This clock probing phase can cause -problems for some monitors. -.TP 8 -.B ClockChip \fI"clockchip-type"\fP -This optional entry is used to specify the clock chip type on -graphics boards which have a programmable clock generator. Only -a few X servers support programmable clock chips. For details, -see the appropriate X server manual page. -.TP 8 -.B ClockProg \fI"command"\fP [\fItextclock\fP] -This optional entry runs \fIcommand\fP to set the clock on the -graphics board instead of using the internal code. The command -string must consist of the full pathname (and no flags). When -using this option, and no \fBClocks\fP entry is specified, -it is assumed that the card has a fully programmable clock -generator; for a card with a set of preset clocks a \fBClocks\fP -entry is required to specify which clock values are to be made -available to the server (up to 128 clocks may be specified). -The optional \fItextclock\fP value is used to tell the server that -\fIcommand\fP must be run to restore the textmode clock at server -exit (or when VT switching). \fItextclock\fP must match one of the -values in the \fBClocks\fP entry. This parameter is required when -the clock used for text mode is a programmable clock. - -The command is run with the real user's id with stdin and stdout -set to the graphics console device. Two arguments are passed to -the command. The first is the clock frequency in MHz as a floating -point number and the second is the index of the clock in the -\fBClocks\fP entry. The command should return an exit status of -0 when successful, and something in the range 1\-254 otherwise. - -The command is run when the initial graphics mode is set and when -changing screen resolution with the hot-key sequences. If the -program fails at initialisation the server exits. If it fails -during a mode switch, the mode switch is aborted but the server -keeps running. It is assumed that if the command fails the clock -has not been changed. -.TP 8 -.B Option \fI"optionstring"\fP -This optional entry allows the user to select certain options -provided by the drivers. Multiple \fBOption\fP entries may be -given. The supported values for \fIoptionstring\fP are given in -the appropriate X server manual pages. -.TP 8 -.B VideoRam \fImem\fP -This optional entry specifies the amount of videoram that is -installed on the graphics board. This is measured in kBytes. In -most cases this is not required because the X server probes the -graphics board to determine this quantity. -.TP 8 -.B BIOSBase \fIbaseaddress\fP -This optional entry specifies the base address of the video BIOS -for the VGA board. This address is normally 0xC0000, which is the -default the X servers will use. Some systems, particularly those -with on-board VGA hardware, have the BIOS located at an alternate -address, usually 0xE0000. If your video BIOS is at an address -other than 0xC0000, you must specify the base address in the -XF86Config file. Note that some X servers don't access the BIOS -at all, and those which do only use the BIOS when searching for -information during the hardware probe phase. -.TP 8 -.B MemBase \fIbaseaddress\fP -This optional entry specifies the memory base address of a graphics -board's linear frame buffer. This entry is only used by a few -X servers, and the interpretation of this base address may be different -for different X servers. Refer to the appropriate X server manual -page for details. -.TP 8 -.B IOBase \fIbaseaddress\fP -This optional entry specifies the IO base address. This entry is only -used for a few X servers. Refer to the appropriate X server manual page -for details. -.TP 8 -.B DACBase \fIbaseaddress\fP -This optional entry specifies the DAC base address. This entry is only -used for a few X servers. Refer to the appropriate X server manual page -for details. -.TP 8 -.B POSBase \fIbaseaddress\fP -This optional entry specifies the POS base address. This entry is only -used for a few X servers. Refer to the appropriate X server manual page -for details. -.TP 8 -.B COPBase \fIbaseaddress\fP -This optional entry specifies the coprocessor base address. This entry -is only used for a few X servers. Refer to the appropriate X server -manual page for details. -.TP 8 -.B VGABase \fIbaseaddress\fP -This optional entry specifies the VGA memory base address. This entry -is only used for a few X servers. Refer to the appropriate X server -manual page for details. -.TP 8 -.B Instance \fInumber\fP -This optional entry specifies the instance (which indicates if the -chip is integrated on the motherboard or on an expansion card). -This entry is only used for a few X servers. Refer to the appropriate -X server manual page for details. -.TP 8 -.B Speedup \fI"selection"\fP -This optional entry specifies the selection of speedups to be -enabled. This entry is only used for a few X servers. Refer to -the appropriate X server manual page for details. -.TP 8 -.B S3MNAdjust \fIM N\fP -This optional entry is specific to the S3 X server. For details, refer -to the \fIXF86_S3(1)\fP manual page. -.TP 8 -.B S3MClk \fIclock\fP -This optional entry is specific to the S3 X server. For details, refer -to the \fIXF86_S3(1)\fP manual page. -.TP 8 -.B S3RefClock \fIclock\fP -This optional entry is specific to the S3 X server. For details, refer -to the \fIXF86_S3(1)\fP manual page. -.PP -The \fBScreen\fP sections are used to specify which graphics boards -and monitors will be used with a particular X server, and the -configuration in which they are to be used. The entries available -for this section are: -.TP 8 -.B Driver \fI"driver-name"\fP -Each \fBScreen\fP section must begin with a \fBDriver\fP entry, -and the \fIdriver-name\fP given in each \fBScreen\fP section must -be unique. The driver name determines which X server (or driver -type within an X server when an X server supports more than one -head) reads and uses a particular \fBScreen\fP section. The driver -names available are: -.sp -.in 20 -.nf -.B Accel -.B Mono -.B SVGA -.B VGA2 -.B VGA16 -.fi -.in -20 -.RS 8 -.PP -\fBAccel\fP is used by all the accelerated X servers (see -\fIXF86_Accel(1)\fP). \fBMono\fP is used by the non-VGA mono -drivers in the 2-bit and 4-bit X servers (see \fIXF86_Mono(1)\fP -and \fIXF86_VGA16(1)\fP). \fBVGA2\fP and \fBVGA16\fP are used by -the VGA drivers in the 2-bit and 4-bit X servers respectively. -\fBSVGA\fP is used by the XF86_SVGA X server. -.RE -.TP 8 -.B Device \fI"device-id"\fP -specifies which graphics device description is to be used. -.TP 8 -.B Monitor \fI"monitor-id"\fP -specifies which monitor description is to be used. -.TP 8 -.B DefaultColorDepth \fIbpp-number\fP -specifies which color depth the server should use, when no -bpp command -line parameter was given. -.TP 8 -.B ScreenNo \fIscrnum\fP -This optional entry overrides the default screen numbering in a -multi-headed configuration. The default numbering is determined by -the ordering of the \fBScreen\fP sections in the \fIXF86Config\fP -file. To override this, all relevant \fBScreen\fP sections must have -this entry specified. -.TP 8 -.B BlankTime \fItime\fP -sets the inactivity timeout for the blanking phase of the screensaver. -\fItime\fP is in minutes, and the default is 10. -This is equivalent to the Xserver's `-s' flag, and the value can be -changed at run-time with \fIxset(1)\fP. -.TP 8 -.B StandbyTime \fItime\fP -sets the inactivity timeout for the ``standby'' phase of DPMS mode. -\fItime\fP is in minutes, the default is 20, and it can be changed -at run-time with \fIxset(1)\fP. -This is only suitable for VESA DPMS compatible monitors, and is only -supported currently by some Xservers. The "power_saver" -Option must be set for this to be enabled. -.TP 8 -.B SuspendTime \fItime\fP -sets the inactivity timeout for the ``suspend'' phase of DPMS mode. -\fItime\fP is in minutes, the default is 30, and it can be changed -at run-time with \fIxset(1)\fP. -This is only suitable for VESA DPMS compatible monitors, and is only -supported currently by some Xservers. The "power_saver" -Option must be set for this to be enabled. -.TP 8 -.B OffTime \fItime\fP -sets the inactivity timeout for the ``off'' phase of DPMS mode. -\fItime\fP is in minutes, the default is 40, and it can be changed -at run-time with \fIxset(1)\fP. -This is only suitable for VESA DPMS compatible monitors, and is only -supported currently by some Xservers. The "power_saver" -Option must be set for this to be enabled. -.TP -.B SubSection \fB"Display"\fP -This entry is a subsection which is used to specify some display -specific parameters. This subsection is terminated by an -\fBEndSubSection\fP entry. For some X servers and drivers (those -requiring a list of video modes) this subsection is mandatory. -For X servers which support multiple display depths, more than one -\fBDisplay\fP subsection may be present. When multiple \fBDisplay\fP -subsections are present, each must have a unique \fBDepth\fP entry. -The entries available for the \fBDisplay\fP subsection are: -.RS 8 -.TP 4 -.B Depth \fIbpp\fP -This entry is mandatory when more than one \fBDisplay\fP subsection -is present in a \fBScreen\fP section. When only one \fBDisplay\fP -subsection is present, it specifies the default depth that the X -server will run at. When more than one \fBDisplay\fP subsection -is present, the depth determines which gets used by the X server. -The subsection used is the one matching the depth at which the X -server is run at. Not all X servers (or drivers) support more than -one depth. Permitted values for \fIbpp\fP are 8, 15, 16, 24 and 32. -Not all X servers (or drivers) support all of these values. -\fIbpp\fP values of 24 and 32 are treated equivalently by those X -servers which support them. -.TP 4 -.B Weight \fIRGB\fP -This optional entry specifies the relative RGB weighting to be used -for an X server running at 16bpp. This may also be specified from -the command line (see \fIXFree86(1)\fP). Values supported by most -16bpp X servers are \fB555\fP and \fB565\fP. For further details, -refer to the appropriate X server manual page. -.TP 4 -.B Virtual \fIxdim ydim\fP -This optional entry specifies the virtual screen resolution to be -used. \fIxdim\fP must be a multiple of either 8 or 16 for most -colour X servers, and a multiple of 32 for the monochrome X server. -The given value will be rounded down if this is not the case. For -most X servers, video modes which are too large for the specified -virtual size will be rejected. If this entry is not present, the -virtual screen resolution will be set to accommodate all the valid -video modes given in the \fBModes\fP entry. Some X servers do not -support this entry. Refer to the appropriate X server manual pages -for details. -.TP 4 -.B ViewPort \fIx0 y0\fP -This optional entry sets the upper left corner of the initial -display. This is only relevant when the virtual screen resolution -is different from the resolution of the initial video mode. If -this entry is not given, then the initial display will be centered -in the virtual display area. -.TP 4 -.B Modes \fI"modename" ...\fP -This entry is mandatory for most X servers, and it specifies the -list of video modes to use. The video mode names must correspond -to those specified in the appropriate \fBMonitor\fP section. Most -X servers will delete modes from this list which don't satisfy -various requirements. The first valid mode in this list will be -the default display mode for startup. The list of valid modes is -converted internally into a circular list. It is possible to switch -to the next mode with \fBCtrl+Alt+Keypad-Plus\fP and to the previous -mode with \fBCtrl+Alt+Keypad-Minus\fP. -.TP 4 -.B InvertVCLK \fI"modename"\fP \fR0|1\fP -This optional entry is specific to the S3 server only. It may be used -to change the default VCLK invert/non-invert state for individual modes. -If \fI"modename"\fP is "\(**" the setting applies to all modes unless -unless overridden by later entries. -.TP 4 -.B EarlySC \fI"modename"\fP \fR0|1\fP -This optional entry is specific to the S3 server only. It may be used -to change the default EarlySC setting for individual modes. This -setting can affect screen wrapping. -If \fI"modename"\fP is "\(**" the setting applies to all modes unless -unless overridden by later entries. -.TP 4 -.B BlankDelay \fI"modename" value1 value2\fP -This optional entry is specific to the S3 server only. It may be used -to change the default blank delay settings for individual modes. This -can affect screen wrapping. \fIvalue1\fP and \fIvalue2\fP must be -integers in the range 0\-7. -If \fI"modename"\fP is "\(**" the setting applies to all modes unless -unless overridden by later entries. -.TP 4 -.B Visual \fI"visual-name"\fP -This optional entry sets the default root visual type. This may -also be specified from the command line (see \fIXserver(1)\fP). -The visual types available for 8bpp X servers are (default is -\fBPseudoColor\fP): -.RE -.sp -.in 20 -.nf -.B StaticGray -.B GrayScale -.B StaticColor -.B PseudoColor -.B TrueColor -.B DirectColor -.fi -.in -20 -.RS 12 -.PP -The visual type available for the 16bpp and 32bpp X servers is -\fBTrueColor\fP. -.PP -The visual type available for the 1bpp X server is \fBStaticGray\fP. -.PP -The visual types available for the 4bpp X server are (default is -\fBStaticColor\fP): -.RE -.sp -.in 20 -.nf -.B StaticGray -.B GrayScale -.B StaticColor -.B PseudoColor -.fi -.in -20 -.RS 8 -.TP 4 -.B Option \fI"optionstring"\fP -This optional entry allows the user to select certain options -provided by the drivers. Multiple \fBOption\fP entries may be -given. The supported values for \fIoptionstring\fP are given in -the appropriate X server manual pages. -.TP 4 -.B Black \fIred green blue\fP -This optional entry allows the ``black'' colour to be specified. This -is only supported with the VGA2 driver in the XF86_Mono server (for -details see \fIXF86_Mono(1)\fP). -.TP 4 -.B White \fIred green blue\fP -This optional entry allows the ``white'' colour to be specified. This -is only supported with the VGA2 driver in the XF86_Mono server (for -details see \fIXF86_Mono(1)\fP). -.RE -.PP -The optional \fBXInput\fP section is used to specify configuration options -for the extended input devices. For some OSs, the extended device support is -dynamically loaded, and in this case you need to specify which Modules to -load in the \fBModule\fP section (this is documented above). -Each extended device has its own -subsection. To enable an extended device the corresponding subsection -must appear. The subsections names are: -.sp -.in 8 -.nf -\fBJoystick\fP (only on supported systems ie. Linux, FreeBSD and NetBSD) -\fBWacomStylus\fP (stylus of a Wacom tablet) -\fBWacomEraser\fP (eraser of a Wacom tablet) -\fBWacomCursor\fP (cursor of a Wacom tablet) -\fBElographics\fP (Elographics touchscreen) -\fBMicrotouchFinger\fP (Microtouch touchscreen operated with finger) -\fBMicrotouchStylus\fP (Microtouch touchscreen operated with stylus) -\fBSummaSketch\fP (SummaSketch tablet) -\fBMouse\fP (Mouse) -.fi -.TP -The \fBJoystick\fP subsection supports the following entries: -.RS 8 -.TP 4 -.B Port \fI"path"\fP -sets the path to the special file which represents the device driver. -.TP 4 -.B DeviceName \fI"name"\fP -sets the name of the X device. -.TP 4 -.B TimeOut \fItimeout\fP -sets the time (in milliseconds) between two polls of the device driver. -The value given here may be overriden by the Operating System's joystick -driver. -.TP 4 -.B MaximumXPosition \fIvalue\fP -sets the maximum X value reported by the device driver. -.TP 4 -.B MinimumXPosition \fIvalue\fP -sets the minimum X value reported by the device driver. -.TP 4 -.B MaximumYPosition \fIvalue\fP -sets the maximum Y value reported by the device driver. -.TP 4 -.B MinimumYPosition \fIvalue\fP -sets the minimum Y value reported by the device driver. -.TP 4 -.B CenterX \fIvalue\fP -sets the X center reported by the device driver when the joystick -is idle. If this value is omitted, it is assumed that the joystick -is centered when it is first enabled. -.TP 4 -.B CenterY \fIvalue\fP -sets the Y center reported by the device driver when the joystick -is idle. If this value is omitted, it is assumed that the joystick -is centered when it is first enabled. -.TP 4 -.B Delta \fIvalue\fP -sets the maximum value reported to the X server. i.e. coordinates will -be incremented of \fI(+/\-)value/2\fP at maximum deflection. This determines -the sensitivity. -.TP 4 -.B AlwaysCore -enables the sharing of the core pointer. When this feature is enabled you -cannot put the device in extended mode (i.e. sending extended events). You -can also use the latest integer feedback to control this feature. When the -value of the feedback is zero, the feature is disabled. The feature -is enabled for any other value. -.RE -.TP -Multiple instances of the Wacom devices can cohabit. It can be useful -to define multiple devices with different active zones. The -\fBWacomStylus\fP, \fBWacomEraser\fP and \fBWacomCursor\fP subsections -support the following entries: -.RS 8 -.TP 4 -.B Port \fI"path"\fP -sets the path to the special file which represents serial line where -the tablet is plugged. You have to specify it for each subsection with -the same value if you want to have multiple devices with the same tablet. -.TP 4 -.B DeviceName \fI"name"\fP -sets the name of the X device. -.TP 4 -.B Suppress \fInumber\fP -sets the position increment under which not to transmit coordinates. -This entry must be specified only in the first Wacom subsection if you have -multiple devices for one tablet. -.TP 4 -.B Mode \fIRelative|Absolute\fP -sets the mode of the device. -.TP 4 -.B TiltMode -enables tilt report if your tablet supports it (ROM version 1.4 and above). -If this is enabled, multiple devices at the same time will not be reported. -.TP 4 -.B HistorySize \fInumber\fP -sets the motion history size. By default the value is zero. -.TP 4 -.B AlwaysCore -enables the sharing of the core pointer. When this feature is enabled you -cannot put the device in extended mode (i.e. sending extended events). You -can also use the latest integer feedback to control this feature. When the -value of the feedback is zero, the feature is disabled. The feature -is enabled for any other value. -.TP 4 -.B TopX \fInumber\fP -X coordinate of the top corner of the active zone. -.TP 4 -.B TopY \fInumber\fP -Y coordinate of the top corner of the active zone. -.TP 4 -.B BottomX \fInumber\fP -X coordinate of the bottom corner of the active zone. -.TP 4 -.B BottomY \fInumber\fP -Y coordinate of the bottom corner of the active zone. -.TP 4 -.B KeepShape -When this option is enabled, the active zone begins according to TopX -and TopY. The bottom corner is calculated to keep shapes ie. the -ratio width/heigth of the active zone is calculated to have the same -ratio as the one of the screen. -.RE -.TP -The \fBElographics\fP subsection support the following entries: -.RS 8 -.TP 4 -.B Port \fI"path"\fP -sets the path to the special file which represents the device driver. -.TP 4 -.B DeviceName \fI"name"\fP -sets the name of the X device. -.TP 4 -.B MaximumXPosition \fIposition\fP -sets the maximum X position reported by the touchscreen. -.TP 4 -.B MinimumXPosition \fIposition\fP -sets the minimum X position reported by the touchscreen. -.TP 4 -.B MaximumYPosition \fIposition\fP -sets the maximum Y position reported by the touchscreen. -.TP 4 -.B MinimumYPosition \fIposition\fP -sets the minimum Y position reported by the touchscreen. - -When an axis minimum is greater than its maximum the driver -reverse the axis. This is useful to cope with ill assembled -screens. - -.TP 4 -.B ScreenNo \fInumber\fP -sets the screen number where the touchscreen is connected. -.TP 4 -.B UntouchDelay \fIvalue\fP -sets the delay (in tens of milliseconds) after which the device -considers that an untouch occurs. -.TP 4 -.B ReportDelay \fIvalue\fP -sets the delay (in ten of milliseconds) between two reports -of positions. -.TP 4 -.B AlwaysCore -enables the sharing of the core pointer. When this feature is enabled you -cannot put the device in extended mode (i.e. sending extended events). You -can also use the latest integer feedback to control this feature. When the -value of the feedback is zero, the feature is disabled. The feature -is enabled for any other value. -.TP 4 -.B SwapXY -Exchange the X and Y axes at the driver level. This is useful to cope with -defective screen assemblies. -.TP 4 -.B PortraitMode \fIorientation\fP -configure the orientation of the screen. "Portrait" is to be used when the -screen has been turned 90 degrees clockwise, "PortraitCCW" is used when the -screen has been turned 90 degrees counter clockwise and "Landscape" (or not specifying -this option) is for a normal orientation. It is to be noted that this option -is applied after axes swap and reversal so it is possible to cope with defective -assembly and still change orientation. - -.RE -The \fBMicrotouchFinger\fP and \fBMicrotouchStylus\fP subsections support -the following entries: -.RS 8 -.TP 4 -.B Port \fI"path"\fP -sets the path to the special file which controls the serial port. The -driver supports two X input devices, the finger and the stylus, that share -the same port. This entry declare the port to be used and it should be -given identically for both X devices. Doing this, the driver knows that it -should bind both X devices to the same touchscreen. This must be the -first entry of the subsection. The default is /dev/ttyS1. -.TP 4 -.B DeviceName \fI"name"\fP -sets the name of the X device. It defaults to FINGER for the MicrotouchFinger -subsection and to STYLUS for the MicrotouchStylus subsection. -.TP 4 -.B LinkSpeed \fI \fP -sets the speed of the serial link connecting the touchscreen. Legal -values are: B300, B1200, B2400, B9600, B19200. The controller must -be configured to the corresponding speed before launching X. The -driver will not attempt to detect and change the speed. The default is -B9600. -.TP 4 -.B MaximumXPosition \fIposition\fP -sets the maximum X position reported by the touchscreen. -.TP 4 -.B MinimumXPosition \fIposition\fP -sets the minimum X position reported by the touchscreen. -.TP 4 -.B MaximumYPosition \fIposition\fP -sets the maximum Y position reported by the touchscreen. -.TP 4 -.B MinimumYPosition \fIposition\fP -sets the minimum Y position reported by the touchscreen. - -When an axis minimum is greater than its maximum the driver -reverse the axis. This is useful to cope with ill assembled -screens. - -.TP 4 -.B ScreenNo \fInumber\fP -sets the screen number where the touchscreen is mounted. -.TP 4 -.B AlwaysCore -enables the sharing of the core pointer. When this feature is enabled, the -device will take control of the core pointer (and thus will emit core events) -and at the same time will be able, when asked so, to report extended events. -You can use the last available integer feedback to control this feature. When -the value of the feedback is zero, the feature is disabled. The feature is -enabled for any other value. -.TP 4 -.B HistorySize \fInumber\fP -sets the motion history size. By default the value is zero. -.TP 4 -.B DebugLevel \fInumber \fP -sets the level of debugging info reported. Valid values range from 0 to 5. -A value of zero suppress all debugging reports and a value of 5 ask for the -maximum verbosity. -.TP 4 -.B SwapXY -Exchange the X and Y axes at the driver level. This is useful to cope with -defective screen assemblies. -.TP 4 -.B PortraitMode \fIorientation\fP -configure the orientation of the screen. "Portrait" is to be used when the -screen has been turned 90 degrees clockwise, "PortraitCCW" is used when the -screen has been turned 90 degrees counter clockwise and "Landscape" (or not specifying -this option) is for a normal orientation. It is to be noted that this option -is applied after axes swap and reversal so it is possible to cope with defective -assembly and still change orientation. -.TP 4 -.B Frequency \fInumber\fP -sets the frequency parameter for a ThruGlass Microtouch panel. - -.RE -.TP -The \fBSummaSketch\fP subsection support the following entries: -.RS 8 -.TP 4 -.B Port \fI"path"\fP -sets the path to the special file which represents the device driver. -.TP 4 -.B DeviceName \fI"name"\fP -sets the name of the X device. -.TP 4 -.B Mode \fIRelative|Absolute\fP -sets the mode of the device. -.TP 4 -.B Cursor \fIStylus|Puck\fP -sets the cursor type, stylus or 4 button puck. -.TP 4 -.B Increment \fIvalue\fP -sets the maximum change in coordinates before new report. -.TP 4 -.B ActiveArea \fIXValue YValue\fP -sets the size of the active area on the tablet, in 10ths of an inch. -.TP 4 -.B ActiveOffset \fIXValue YValue\fP -sets the upper left of the active area on the tablet, in 10ths of an inch. -If no value is specefied, it will center the active area. -.TP 4 -.B HistorySize \fInumber\fP -sets the motion history size. By default the value is zero. -.TP 4 -.B AlwaysCore -enables the sharing of the core pointer. When this feature is enabled you -cannot put the device in extended mode (i.e. sending extended events). You -can also use the latest integer feedback to control this feature. When the -value of the feedback is zero, the feature is disabled. The feature -is enabled for any other value. -.RE -.TP -The \fBMouse\fP subsection support the same entries as the -standard \fBPointer\fP section, plus the following: -.RS 8 -.TP 4 -.B DeviceName \fI"name"\fP -sets the name of the X device. -.TP 4 -.B AlwaysCore -enables the sharing of the core pointer. When this feature is enabled you -cannot put the device in extended mode (i.e. sending extended events). You -can also use the latest integer feedback to control this feature. When the -value of the feedback is zero, the feature is disabled. The feature -is enabled for any other value. -.RE -.PP -For an example of an XF86Config file, see the file installed as -/lib/X11/XF86Config.eg. -.SH FILES -.PP -.nf -/etc/XF86Config -/lib/X11/XF86Config.\fIhostname\fP -/lib/X11/XF86Config -.sp 1 -Note: refers to the root of the X11 install tree. -.fi -.SH "SEE ALSO" -X(1), Xserver(1), XFree86(1), XF86_SVGA(1), XF86_VGA16(1), -XF86_Mono(1), XF86_S3(1), XF86_8514(1), XF86_Mach8(1), XF86_Mach32(1), -XF86_P9000(1), XF86_AGX(1). -.SH AUTHORS -.PP -Refer to the -.I XFree86(1) -manual page. -.\" $TOG: XF86Conf.man /main/28 1997/07/19 09:22:00 kaleb $ Index: xc/programs/Xserver/hw/xfree86/XF86Config.cpp diff -u /dev/null xc/programs/Xserver/hw/xfree86/XF86Config.cpp:1.3 --- /dev/null Wed Mar 8 16:30:31 2000 +++ xc/programs/Xserver/hw/xfree86/XF86Config.cpp Wed Mar 8 16:30:31 2000 @@ -0,0 +1,1561 @@ +.\" $XFree86: xc/programs/Xserver/hw/xfree86/XF86Config.cpp,v 1.3 2000/03/08 19:12:44 dawes Exp $ +.TH XF86Config __filemansuffix__ "Version 4.0" "XFree86" +.SH NAME +XF86Config - Configuration File for XFree86 +.SH DESCRIPTION +.I XFree86 +uses a configuration file called +.B XF86Config +for its initial setup. This configuration file is searched for in the +following places when the server is started as a normal user: +.PP +.RS 4 +.nf +.RI /etc/X11/ +.RI __projectroot__/etc/X11/ +.RB /etc/X11/ $XF86CONFIG +.RB __projectroot__/etc/X11/ $XF86CONFIG +/etc/X11/XF86Config-4 +/etc/X11/XF86Config +/etc/XF86Config +.RI __projectroot__/etc/X11/XF86Config. +__projectroot__/etc/X11/XF86Config-4 +__projectroot__/etc/X11/XF86Config +.RI __projectroot__/lib/X11/XF86Config. +__projectroot__/lib/X11/XF86Config-4 +__projectroot__/lib/X11/XF86Config +.fi +.RE +.PP +where +.I +is a relative path (with no ".." components) specified with the +.B \-xf86config +command line option, +.B $XF86CONFIG +is the relative path (with no ".." components) specified by that +environment variable, and +.I +is the machines hostname as reported by gethostname(3). +.PP +When the X server is started by the "root" user, the config file search +locations are as follows: +.PP +.RS 4 +.nf +.I +.RI /etc/X11/ +.RI __projectroot__/etc/X11/ +.B $XF86CONFIG +.RB /etc/X11/ $XF86CONFIG +.RB __projectroot__/etc/X11/ $XF86CONFIG +.BR $HOME /XF86Config +/etc/X11/XF86Config-4 +/etc/X11/XF86Config +/etc/XF86Config +.RI __projectroot__/etc/X11/XF86Config. +__projectroot__/etc/X11/XF86Config-4 +__projectroot__/etc/X11/XF86Config +.RI __projectroot__/lib/X11/XF86Config. +__projectroot__/lib/X11/XF86Config-4 +__projectroot__/lib/X11/XF86Config +.fi +.RE +.PP +where +.I +is the path specified with the +.B \-xf86config +command line option (which may be absolute or relative), +.B $XF86CONFIG +is the path specified by that +environment variable (absolute or relative), +.B $HOME +is the path specified by that environment variable (usually the home +directory), and +.I +is the machines hostname as reported by gethostname(3). +.PP +The +.B XF86Config +file is composed of a number of sections which may be present in any +order. Each section has +the form: +.PP +.RS 4 +.nf +.BI "Section """ SectionName """" +.I " SectionEntry" + ... +.B EndSection +.fi +.RE +.PP +The section names are: +.PP +.RS 4 +.nf +.BR "Files " "File pathnames" +.BR "ServerFlags " "Server flags" +.BR "Module " "Dynamic module loading" +.BR "InputDevice " "Input device description" +.BR "Device " "Graphics device description" +.BR "VideoAdaptor " "Xv video adaptor description" +.BR "Monitor " "Monitor description" +.BR "Modes " "Video modes descriptions" +.BR "Screen " "Screen configuration" +.BR "ServerLayout " "Overall layout" +.BR "DRI " "DRI-specific configuration" +.BR "Vendor " "Vendor-specific configuration" +.fi +.RE +.PP +The following obsolete section names are still recognised for compatibility +purposes. In new config files, the +.B InputDevice +section should be used instead. +.PP +.RS 4 +.nf +.BR "Keyboard " "Keyboard configuration" +.BR "Pointer " "Pointer/mouse configuration" +.fi +.RE +.PP +The old +.B XInput +section is no longer recognised. +.PP +The +.B ServerLayout +sections are at the highest level. They bind together the input and +output devices that will be used in a session. The input devices +are described in the +.B InputDevice +sections. Output devices usually consist of multiple independent +components (e.g., and graphics board and a monitor). These multiple +components are bound together in the +.B Screen +sections, and it is these that are referenced by the +.B ServerLayout +section. Each +.B Screen +section binds together a graphics board and a monitor. The graphics +boards are described in the +.B Device +sections, and the monitors are described in the +.B Monitor +sections. +.PP +Config file keywords are case-insensitive, and "_" characters are +ignored. Most strings (including +.B Option +names) are also case-insensitive, and insensitive to white space and +"_" characters. +.PP +Each config file entry usually take up a single line in the file. +They consist of a keyword, which is possibly followed by one or +more arguments, with the number and types of the arguments depending +on the keyword. The argument types are: +.PP +.RS 4 +.nf +.BR "Integer " "an integer number in decimal, hex or octal" +.BR "Real " "a floating point number" +.BR "String " "a string enclosed in double quote marks ("")" +.fi +.RE +.PP +A special keyword called +.B Option +may be used to provide free-form data to various components of the server. +The +.B Option +keyword takes either one or two string arguments. The first is the option +name, and the optional second argument is the option value. Some commonly +used option value types include: +.PP +.RS 4 +.nf +.BR "Integer " "an integer number in decimal, hex or octal" +.BR "Real " "a floating point number" +.BR "String " "a sequence of characters" +.BR "Boolean " "a boolean value (see below)" +.BR "Frequency " "a frequency value (see below)" +.fi +.RE +.PP +Note that +.I all +.B Option +values, not just strings, must be enclosed in quotes. +.PP +Boolean options may optionally have a value specified. When no value +is specified, the option's value is +.BR TRUE . +The following boolean option values are recognised as +.BR TRUE : +.PP +.RS 4 +.BR 1 , +.BR on , +.BR true , +.B yes +.RE +.PP +and the following boolean option values are recognised as +.BR FALSE : +.PP +.RS 4 +.BR 0 , +.BR off , +.BR false , +.B no +.RE +.PP +If an option name is prefixed with +.RB """" No """", +then the option value is negated. +.PP +Example: the following option entries are equivalent: +.PP +.RS 4 +.nf +.B "Option ""Accel"" ""Off""" +.B "Option ""NoAccel""" +.B "Option ""NoAccel"" ""On""" +.B "Option ""Accel"" ""false""" +.B "Option ""Accel"" ""no""" +.fi +.RE +.PP +Frequency option values consist of a real number that is optionally +followed by one of the following frequency units: +.PP +.RS 4 +.BR Hz , +.BR k , +.BR kHz , +.BR M , +.B MHz +.RE +.PP +When the unit name is omitted, the correct units will be determined from +the value and the expectations of the appropriate range of the value. +It is recommended that the units always be specified when using frequency +option values to avoid any errors in determining the value. +.SH FILES SECTION +The +.B Files +section is used to specify some path names required by the server. +Some of these paths can also be set from the command line (see +.I Xserver(1) +and +.IR XFree86(1) ). +The command line settings override the values specified in the config +file. +The entries that can appear in this section are: +.TP 7 +.BI "FontPath """ path """" +sets the search path for fonts. This path is a comma separated +list of font path elements which the X server searches for font databases. +Multiple +.B FontPath +entries may be specified, and they will be +concatenated to build up the fontpath used by the server. +Font path elements may be either absolute directory paths, or the +a font server identifier. Font server identifiers have the form: +.PP +.RS 11 +.IR / : +.RE +.PP +.RS 7 +where +.I +is the transport type to use to connect to the font server (e.g., +.B unix +for UNIX-domain sockets or +.B tcp +for a TCP/IP connection), +.I +is the hostname of the machine running the font server, and +.I +is the port number that the font server is listening on (usually 7100). +.PP +When this entry is not specified in the config file, the server falls back +to the compiled-in default font path, which contains the following +font path elements: +.PP +.RS 4 +.nf +__projectroot__/lib/X11/fonts/misc/ +__projectroot__/lib/X11/fonts/Speedo/ +__projectroot__/lib/X11/fonts/Type1/ +__projectroot__/lib/X11/fonts/CID/ +__projectroot__/lib/X11/fonts/75dpi/ +__projectroot__/lib/X11/fonts/100dpi/ +.fi +.RE +.PP +The recommended font path contains the following font path elements: +.PP +.RS 4 +.nf +__projectroot__/lib/X11/fonts/local/ +__projectroot__/lib/X11/fonts/misc/ +__projectroot__/lib/X11/fonts/75dpi/:unscaled +__projectroot__/lib/X11/fonts/100dpi/:unscaled +__projectroot__/lib/X11/fonts/Type1/ +__projectroot__/lib/X11/fonts/CID/ +__projectroot__/lib/X11/fonts/Speedo/ +__projectroot__/lib/X11/fonts/75dpi/ +__projectroot__/lib/X11/fonts/100dpi/ +.fi +.RE +.PP +Font path elements that are found to be invalid are removed from the +font path when the server starts up. +.RE +.TP 7 +.BI "RGBPath """ path """" +sets the path name for the RGB color database. +When this entry is not specified in the config file, the server falls back +to the compiled-in default RGB path, which is: +.PP +.RS 11 +__projectroot__/lib/X11/rgb +.RE +.TP 7 +.BI "ModulePath """ path """" +sets the search path for loadable X server modules. This path is a +comma separated list of directories which the X server searches for +loadable modules loading in the order specified. Multiple +.B ModulePath +entries may be specified, and they will be concatenated to build the +module search path used by the server. +.\" The LogFile keyword is not currently implemented +.ig +.TP 7 +.BI "LogFile """ path """" +sets the name of the X server log file. The default log file name is +.PP +.RS 11 +.RI __logdir__/XFree86. .log +.RE +.PP +.RS 7 +where +.I +is the display number for the X server. +.. +.SH SERVERFLAGS SECTION +The +.B ServerFlags +section is used to specify some global +X server options. All of the entries in this section are +.BR Options , +although for compatibility purposes some of the old style entries are +still recognised. Those old style entries are not documented here, and +using them is discouraged. +.PP +.B Options +specified in this section may be overridden by +.B Options +specified in the active +.B ServerLayout +section. Options with command line equivalents are overridden when their +command line equivalent is used. The options recognised by this section +are: +.TP 7 +.BI "Option ""NoTrapSignals"" """ boolean """" +This prevents the X server from trapping a range of unexpected +fatal signals and exiting cleanly. Instead, the X server will die +and drop core where the fault occurred. The default behaviour is +for the X server exit cleanly, but still drop a core file. In +general you never want to use this option unless you are debugging +an X server problem and know how to deal with the consequences. +.TP 7 +.BI "Option ""DontZap"" """ boolean """" +This disallows the use of the +.B Ctrl+Alt+Backspace +sequence. That sequence is normally used to terminate the X server. +When this option is enabled, that key sequence has no special meaning +and is passed to clients. Default: off. +.TP 7 +.BI "Option ""DontZoom"" """ boolean """" +This disallows the use of the +.B Ctrl+Alt+Keypad-Plus +and +.B Ctrl+Alt+Keypad-Minus +sequences. These sequences allows you to switch between video modes. +When this option is enabled, those key sequences have no special meaning +and are passed to clients. Default: off. +.TP 7 +.BI "Option ""DisableVidModeExtension"" """ boolean """" +This disables the parts of the VidMode extension used by the xvidtune client +that can be used to change the video modes. Default: the VidMode extension +is enabled. +.TP 7 +.BI "Option ""AllowNonLocalXvidtune"" """ boolean """" +This allows the xvidtune client (and other clients that use the VidMode +extension) to connect from another host. Default: off. +.TP 7 +.BI "Option ""DisableModInDev"" """ boolean """" +This disables the parts of the XFree86-Misc extension that can be used to +modify the input device settings dynamically. Default: that functionality +is enabled. +.TP 7 +.BI "Option ""AllowNonLocalModInDev"" """ boolean """" +This allows a client to connect from another host and change keyboard +and mouse settings in the running server. Default: off. +.TP 7 +.BI "Option ""AllowMouseOpenFail"" """ boolean """" +This allows the server to start up even if the mouse device can't be +opened/initialised. Default: false. +.TP 7 +.BI "Option ""VTInit"" """ command """" +Runs +.I command +after the VT used by the server has been opened. +The command string is passed to "/bin/sh -c", and is run with the +real user's id with stdin and stdout set to the VT. The purpose +of this option is to allow system dependent VT initialisation +commands to be run. This option should rarely be needed. Default: not set. +.TP 7 +.BI "Option ""VTSysReq"" """ boolean """" +enables the SYSV-style VT switch sequence for non-SYSV systems +which support VT switching. This sequence is +.B Alt-SysRq +followed +by a function key +.RB ( Fn ). +This prevents the X server trapping the +keys used for the default VT switch sequence, which means that clients can +access them. Default: off. +.\" The following four options are "undocumented". +.ig +.TP 7 +.BI "Option ""PciProbe1""" +Use PCI probe method 1. Default: set. +.TP 7 +.BI "Option ""PciProbe2""" +Use PCI probe method 2. Default: not set. +.TP 7 +.BI "Option ""PciForceConfig1""" +Force the use PCI config type 1. Default: not set. +.TP 7 +.BI "Option ""PciForceConfig2""" +Force the use PCI config type 2. Default: not set. +.. +.TP 7 +.BI "Option ""BlankTime"" """ time """" +sets the inactivity timeout for the blanking phase of the screensaver. +.I time +is in minutes. This is equivalent to the Xserver's `-s' flag, and the +value can be changed at run-time with \fIxset(1)\fP. Default: 10 minutes. +.TP 7 +.BI "Option ""StandbyTime"" """ time """" +sets the inactivity timeout for the "standby" phase of DPMS mode. +.I time +is in minutes, and the value can be changed at run-time with \fIxset(1)\fP. +Default: 20 minutes. +This is only suitable for VESA DPMS compatible monitors, and may not be +supported by all video drivers. It is only enabled for screens that +have the +.B """DPMS""" +option set. +.TP 7 +.BI "Option ""SuspendTime"" """ time """" +sets the inactivity timeout for the "suspend" phase of DPMS mode. +.I time +is in minutes, and the value can be changed at run-time with \fIxset(1)\fP. +Default: 30 minutes. +This is only suitable for VESA DPMS compatible monitors, and may not be +supported by all video drivers. It is only enabled for screens that +have the +.B """DPMS""" +option set. +.TP 7 +.BI "Option ""OffTime"" """ time """" +sets the inactivity timeout for the "off" phase of DPMS mode. +.I time +is in minutes, and the value can be changed at run-time with \fIxset(1)\fP. +Default: 40 minutes. +This is only suitable for VESA DPMS compatible monitors, and may not be +supported by all video drivers. It is only enabled for screens that +have the +.B """DPMS""" +option set. +.TP 7 +.BI "Option ""Pixmap"" """ bpp """" +This sets the pixmap format to use for depth 24. Allowed values for +.I bpp +are 24 and 32. Default: 32 unless driver constraints don't allow this +(which is rare). Note: some clients don't behave well when +this value is set to 24. +.TP 7 +.BI "Option ""PC98"" """ boolean """" +Specify that the machine is a Japanese PC-98 machine. This should not +be enabled for anything other than the Japanese-specific PC-98 +architecture. Default: auto-detected. +.\" Doubt this should be documented. +.ig +.TP 7 +.BI "Option ""EstimateSizesAggressively"" """ value """" +This option affects the way that bus resource sizes are estimated. Default: 0. +.. +.TP 7 +.BI "Option ""NoPM"" """ boolean """" +Disables something to do with power management events. Default: PM enabled +on platforms that support it. +.SH MODULE SECTION +The +.B Module +section is used to specify which X server modules should be loaded. +This section is ignored when the X server is built in static form. +The types of modules normally loaded in this section are X server +extension modules, and font rasteriser modules. Most other module types +are loaded automatically when they are needed via other mechanisms. +.PP +Entries in this section may be in two forms. The first and most commonly +used form is an entry that uses the +.B Load +keyword, as described here: +.TP 7 +.BI "Load """ modulename """" +This instructs the server to load the module called +.IR modulename . +The module name given should be the module's standard name, not the +module file name. The standard name is case-sensitive, and does not +include the "lib" prefix, or the ".a", ".o", or ".so" suffixes. +.PP +.RS 7 +Example: the Type 1 font rasteriser can be loaded with the following entry: +.PP +.RS 4 +.B "Load ""type1""" +.RE +.RE +.PP +The second form of entry is a +.BR SubSection, +with the subsection name being the module name, and the contents of the +.B SubSection +being +.B Options +that are passed to the module when it is loaded. +.PP +Example: the extmod module (which contains a miscellaneous group of +server extensions) can be loaded, with the XFree86-DGA extension +disabled by using the following entry: +.PP +.RS 4 +.nf +.B "SubSection ""extmod""" +.B " Option ""omit XFree86-DGA""" +.B EndSubSection +.fi +.RE +.PP +Modules are searched for in each directory specified in the +.B ModulePath +search path, and in the drivers, input, extensions, fonts, and +internal subdirectories of each of those directories. +In addition to this, operating system specific subdirectories of all +the above are searched first if they exist. +.PP +To see what font and extension modules are available, check the contents +of the following directories: +.PP +.RS 4 +.nf +__projectroot__/lib/modules/fonts +__projectroot__/lib/modules/extensions +.fi +.RE +.PP +The "bitmap" font modules is loaded automatically. It is recommended +that at very least the "extmod" extension module be loaded. If it isn't +some commonly used server extensions (like the SHAPE extension) will not be +available. +.SH INPUTDEVICE SECTION +The config file may have multiple +.B InputDevice +sections. There will normally be at least two: one for the core (primary) +keyboard, and one of the core pointer. +.PP +.B InputDevice +sections have the following format: +.PP +.RS 4 +.nf +.B "Section ""InputDevice""" +.BI " Identifier """ name """" +.BI " Driver """ inputdriver """" +.I " options" +.I " ..." +.B "EndSection" +.fi +.RE +.PP +The +.B Identifier +entry specifies the unique name for this input device. The +.B Driver +entry specifies the name of the driver to use for this input device. +When using the loadable server, the input driver module +.RI """ inputdriver """ +will be loaded for each active +.B InputDevice +section. An +.B InputDevice +section is considered active if it is referenced by an active +.B ServerLayout +section, or if it is referenced by the +.B \-keyboard +or +.B \-pointer +command line options. +The most commonly used input drivers are "keyboard" and "mouse". +.PP +.B InputDevice +sections recognise some driver-independent +.BR Options , +which are described here. See the individual input driver manual pages +for a description of the device-specific options. +.TP 7 +.BI "Option ""CorePointer""" +When this is set, the input device is installed as the core (primary) +pointer device. There must be exactly one core pointer. If this option +is not set here, or in the +.B ServerLayout +section, or from the +.B \-pointer +command line option, then the first input device that is capable of +being used as a core pointer will be selected as the core pointer. +This option is implicitly set when the obsolete +.B Pointer +section is used. +.TP 7 +.BI "Option ""CoreKeyboard""" +When this is set, the input device is to be installed as the core +(primary) keyboard device. There must be exactly one core keyboard. If +this option is not set here, in the +.B ServerLayout +section, or from the +.B \-keyboard +command line option, then the first input device that is capable of +being used as a core keyboard will be selected as the core keyboard. +This option is implicitly set when the obsolete +.B Keyboard +section is used. +.TP 7 +.BI "Option ""AlwaysCore"" """ boolean """" +.TP 7 +.BI "Option ""SendCoreEvents"" """ boolean """" +Both of these options are equivalent, and when enabled cause the +input device to always report core events. This can be used, for +example, to allow an additional pointer device to generate core +pointer events (like moving the cursor, etc). +.TP 4 +.BI "Option ""HistorySize"" """ number """" +Sets the motion history size. Default: 0. +.TP 7 +.BI "Option ""SendDragEvents"" """ boolean """" +??? +.SH DEVICE SECTION +The config file may have multiple +.B Device +sections. There must be at least one, for the video card being used. +.PP +.B Device +sections have the following format: +.PP +.RS 4 +.nf +.B "Section ""Device""" +.BI " Identifier """ name """" +.BI " Driver """ driver """" +.I " entries" +.I " ..." +.B "EndSection" +.fi +.RE +.PP +The +.B Identifier +entry specifies the unique name for this graphics device. The +.B Driver +entry specifies the name of the driver to use for this graphics device. +When using the loadable server, the driver module +.RI """ driver """ +will be loaded for each active +.B Device +section. A +.B Device +section is considered active if it is referenced by an active +.B Screen +section. +.PP +.B Device +sections recognise some driver-independent entries and +.BR Options , +which are described here. Not all drivers make use of these +driver-independent entries, and many of those that do don't require them +to be specified because the information is auto-detected. See the +individual graphics driver manual pages for further information about +this, and for a description of the device-specific options. +Note that most of the +.B Options +listed here (but not the other entries) may be specified in the +.B Screen +section instead of here in the +.B Device +section. +.TP 7 +.BI "BusID """ bus-id """" +This specifies the bus location of the graphics card. For PCI/AGP cards, +the +.I bus-id +string has the form +.BI PCI: bus : device : function +(e.g., "PCI:1:0:0" might be appropriate for an AGP card). +This field is usually optional in single-head configurations when using +the primary graphics card. In multi-head configurations, or when using +a secondary graphics card in a single-head configuration, this entry is +mandatory. Its main purpose is to make an unambiguous connection between +the device section and the hardware it is representing. This information +can usually be found by running the X server with the +.B \-scanpci +command line option. +.TP 7 +.BI "Chipset """ chipset """" +This usually optional entry specifies the chipset used on the graphics +board. In most cases this entry is not required because the drivers +will probe the hardware to determine the chipset type. Don't +specify it unless the driver-specific documentation recommends that you +do. +.TP 7 +.BI "Ramdac """ ramdac-type """" +This optional entry specifies the type of RAMDAC used on the graphics +board. This is only used by a few of the drivers, and in most cases it +is not required because the drivers will probe the hardware to determine +the RAMDAC type where possible. Don't specify it unless the +driver-specific documentation recommends that you do. +.TP 7 +.BI "DacSpeed " speed +.TP 7 +.BI "DacSpeed " "speed-8 speed-16 speed-24 speed-32" +This optional entry specifies the RAMDAC speed rating (which is usually +printed on the RAMDAC chip). The speed is in MHz. When one value is +given, it applies to all framebuffer pixel sizes. When multiple values +are give, they apply to the framebuffer pixel sizes 8, 16, 24 and 32 +respectively. This is not used by many drivers, and only needs to be +specified when the speed rating of the RAMDAC is different from the +defaults built in to driver, or when the driver can't auto-detect the +correct defaults. Don't specify it unless the driver-specific +documentation recommends that you do. +.TP 7 +.BI "Clocks " "clock ..." +specifies the pixel that are on your graphics board. The clocks are in +MHz, and may be specified as a floating point number. The value is +stored internally to the nearest kHz. The ordering of the clocks is +important. It must match the order in which they are selected on the +graphics board. Multiple +.B Clocks +lines may be specified, and each is concatenated to form the list. Most +drivers do not use this entry, and it is only required for some older +boards with non-programmable clocks. Don't specify this entry unless +the driver-specific documentation explicitly recommends that you do. +.TP +.BI "ClockChip """ clockchip-type """" +This optional entry is used to specify the clock chip type on +graphics boards which have a programmable clock generator. Only +a few X servers support programmable clock chips. For details, +see the appropriate X server manual page. +.TP 7 +.BI "VideoRam " "mem" +This optional entry specifies the amount of video ram that is installed +on the graphics board. This is measured in kBytes. In most cases this +is not required because the X server probes the graphics board to +determine this quantity. The driver-specific documentation should +indicate when it might be needed. +.TP 7 +.BI "BiosBase " "baseaddress" +This optional entry specifies the base address of the video BIOS +for the VGA board. This address is normally auto-detected, and should +only be specified if the driver-specific documentation recommends it. +.TP 7 +.BI "MemBase " "baseaddress" +This optional entry specifies the memory base address of a graphics +board's linear frame buffer. This entry is not used by many drivers, +and it should only be specified if the driver-specific documentation +recommends it. +.TP 7 +.BI "IOBase " "baseaddress" +This optional entry specifies the IO base address. This entry is not +used by many drivers, and it should only be specified if the +driver-specific documentation recommends it. +.TP 7 +.BI "ChipID " "id" +This optional entry specifies a numerical ID representing the chip type. +For PCI cards, it is usually the device ID. This can be used to override +the auto-detection, but that should only be done when the driver-specific +documentation recommends it. +.TP 7 +.BI "ChipRev " "rev" +This optional entry specifies the chip revision number. This can be +used to override the auto-detection, but that should only be done when +the driver-specific documentation recommends it. +.TP 7 +.BI "TextClockFreq " "freq" +This optional entry specifies the pixel clock frequency that is used +for the regular text mode. The frequency is specified in MHz. This is +rarely used. +.ig +.TP 7 +This optional entry allows an IRQ number to be specified. +.. +.TP 7 +.B Options +Option flags may be specified in the +.B Device +sections. These include driver-specific options and driver-independent +options. The former are described in the driver-specific documentation. +Some of the latter are described below in the section about the +.B Screen +section, and they may also be included here. + +.SH VIDEOADAPTOR SECTION +Nobody wants to say how this works. Maybe nobody knows ... + +.SH MONITOR SECTION +The config file may have multiple +.B Monitor +sections. There must be at least one, for the monitor being used. +.PP +.B Monitor +sections have the following format: +.PP +.RS 4 +.nf +.B "Section ""Monitor""" +.BI " Identifier """ name """" +.I " entries" +.I " ..." +.B "EndSection" +.fi +.RE +.PP +The +.B Identifier +entry specifies the unique name for this monitor. The +.B Monitor +section provides information about the specifications of the monitor, +monitor-specific +.BR Options , +and information about the video modes to use with the monitor. Specifying +video modes is optional because the server now has a built-in list of +VESA standard modes. When modes are specified explicitly in the +.B Monitor +section (with the +.BR Modes , +.BR ModeLine , +or +.B UseModes +keywords), built-in modes with the same names are not included. Built-in +modes with different names are, however, still implicitly included. +.PP +The entries that may be used in +.B Monitor +sections are described below. +.TP 7 +.BI "VendorName """ vendor """" +This optional entry specifies the monitor's manufacturer. +.TP 7 +.BI "ModelName """ model """" +This optional entry specifies the monitor's model. +.TP 7 +.BI "HorizSync " "horizsync-range" +gives the range(s) of horizontal sync frequencies supported by the +monitor. +.I horizsync-range +may be a comma separated list of either discrete values or ranges of +values. A range of values is two values separated by a dash. By default +the values are in units of kHz. They may be specified in MHz or Hz if +.B MHz +or +.B Hz +is added to the end of the line. The data given here is used by the X +server to determine if video modes are within the specifications of the +monitor. This information should be available in the monitor's handbook. +If this entry is omitted, a default range of 28\-33kHz is used. +.TP 7 +.BI "VertRefresh " "vertrefresh-range" +gives the range(s) of vertical refresh frequencies supported by the +monitor. +.I vertrefresh-range +may be a comma separated list of either discrete values or ranges of +values. A range of values is two values separated by a dash. By default +the values are in units of Hz. They may be specified in MHz or kHz if +.B MHz +or +.B kHz +is added to the end of the line. The data given here is used by the X +server to determine if video modes are within the specifications of the +monitor. This information should be available in the monitor's handbook. +If this entry is omitted, a default range of 43-72Hz is used. +.TP 7 +.BI "Gamma " "gamma-value" +.TP 7 +.BI "Gamma " "red-gamma green-gamma blue-gamma" +This is an optional entry that can be used to specify the gamma +correction for the monitor. It may be specified as either a single +value or as three separate RGB values. The values should be in the range +0.1 to 10.0, and the default is 1.0. Not all drivers are capable +of using this information. +.TP 7 +.BI "UseModes """ modesection-id """" +Include the set of modes listed in the +.B Modes +section called +.IR modesection-id. +This make all of the modes defined in that section available for use +by this monitor. +.TP 7 +.B Mode \fI"name"\fP +This is an optional multi-line entry that can be used to provide +definitions for video modes for the monitor. In most cases this isn't +necessary because the built-in set of VESA standard modes will be +sufficient. The +.B Mode +keyword indicates the start of a multi-line video mode description. +The mode description is terminated with the +.B EndMode +keyword. The mode description consists of the following entries: +.RS 7 +.TP 4 +.BI "DotClock " clock +is the dot (pixel) clock rate to be used for the mode. +.TP 4 +.BI "HTimings " "hdisp hsyncstart hsyncend htotal" +specifies the horizontal timings for the mode. +.TP 4 +.BI "VTimings " "vdisp vsyncstart vsyncend vtotal" +specifies the vertical timings for the mode. +.TP 4 +.BI "Flags """ flag """" " ..." +specifies an optional set of mode flags, each of which is a separate +string in double quotes. +.B """Interlace""" +indicates that the mode is interlaced. +.B """DoubleScan""" +indicates a mode where each scanline is doubled. +.B """+HSync""" +and +.B """\-HSync""" +can be used to select the polarity of the HSync signal. +.B """+VSync""" +and +.B """\-VSync""" +can be used to select the polarity of the VSync signal. +.B """Composite""" +can be used to specify composite sync on hardware where this is supported. +Additionally, on some hardware, +.B """+CSync""" +and +.B """\-CSync""" +may be used to select the composite sync polarity. +.TP 4 +.BI "HSkew " hskew +specifies the number of pixels (towards the right edge of the screen) +by which the display enable signal is to be skewed. Not all drivers +use this information. This option might become necessary to override +the default value supplied by the server (if any). "Roving" horizontal +lines indicate this value needs to be increased. If the last few pixels +on a scan line appear on the left of the screen, this value should be +decreased. +.TP 4 +.BI "VScan " vscan +specifies the number of times each scanline is painted on the screen. +Not all drivers use this information. Values less than 1 are treated +as 1, which is the default. Generally, the +.B """DoubleScan""" +.B Flag +mentioned above doubles this value. +.RE +.TP 7 +.BI "ModeLine """ name """" " mode-description" +This entry is a more compact version of the +.B Mode +entry, and it also can be used to specify video modes for the monitor. +is a single line format for specifying video modes. In most cases this +isn't necessary because the built-in set of VESA standard modes will be +sufficient. +.PP +.RS 7 +The +.I mode-description +is in four sections, the first three of which are mandatory. The first +is the dot (pixel) clock. This is a single number specifying the pixel +clock rate for the mode in MHz. The second section is a list of four +numbers specifying the horizontal timings. These numbers are the +.IR hdisp , +.IR hsyncstart , +.IR hsyncend , +and +.I htotal +values. The third section is a list of four numbers specifying the +vertical timings. These numbers are the +.IR vdisp , +.IR vsyncstart , +.IR vsyncend , +and +.I vtotal +values. The final section is a list of flags specifying other +characteristics of the mode. +.B Interlace +indicates that the mode is interlaced. +.B DoubleScan +indicates a mode where each scanline is doubled. +.B +HSync +and +.B \-HSync +can be used to select the polarity of the HSync signal. +.B +VSync +and +.B \-VSync +can be used to select the polarity of the VSync signal. +.B Composite +can be used to specify composite sync on hardware where this is supported. +Additionally, on some hardware, +.B +CSync +and +.B \-CSync +may be used to select the composite sync polarity. The +.B HSkew +and +.B VScan +options mentioned above in the +.B Modes +entry description can also be used here. +.RE +.TP 7 +.B Options +Some +.B Option +flags that may be useful to include in +.B Monitor +sections (when needed) include +.BR """DPMS""" , +and +.BR """SyncOnGreen""" . + +.SH MODES SECTION +The config file may have multiple +.B Modes +sections, or none. These sections provide a way of defining sets of +video modes independently of the +.B Monitor +sections. +.B Monitor +sections may include the definitions provided in these sections by +using the +.B UseModes +keyword. In most cases the +.B Modes +sections are not necessary because the built-in set of VESA standard modes +will be sufficient. +.PP +.B Modes +sections have the following format: +.PP +.RS 4 +.nf +.B "Section ""Modes""" +.BI " Identifier """ name """" +.I " entries" +.I " ..." +.B "EndSection" +.fi +.RE +.PP +The +.B Identifier +entry specifies the unique name for this set of mode descriptions. +The other entries permitted in +.B Modes +sections are the +.B Mode +and +.B ModeLine +entries that are described above in the +.B Monitor +section. +.SH SCREEN SECTION +The config file may have multiple +.B Screen +sections. There must be at least one, for the "screen" being used. +A "screen" represents the binding of a graphics device +.RB ( Device +section) and a monitor +.RB ( Monitor +section). A +.B Screen +section is considered "active" if it is referenced by an active +.B ServerLayout +section or by the +.B \-screen +command line option. If neither of those is present, the first +.B Screen +section found in the config file is considered the active one. +.PP +.B Screen +sections have the following format: +.PP +.RS 4 +.nf +.B "Section ""Screen""" +.BI " Identifier """ name """" +.BI " Device """ devid """" +.BI " Monitor """ monid """" +.I " entries" +.I " ..." +.BI " SubSection ""Display""" +.I " entries" +.I " ... +.B " EndSubSection" +.I " ..." +.B "EndSection" +.fi +.RE +.PP +The +.B Identifier +entry specifies the unique name for this screen. The +.B Screen +section provides information specific to the whole screen, including +screen-specific +.BR Options . +In multi-head configurations, there will be multiple active +.B Screen +sections, one for each head. +The entries available +for this section are: +.TP 7 +.BI "Device """ device-id """" +This specifies the +.B Device +section to be used for this screen. This is what ties a specific +graphics card to a screen. The +.I device-id +must match the +.B Identifier +of a +.B Device +section in the config file. +.TP 7 +.BI "Monitor """ monitor-id """" +specifies which monitor description is to be used for this screen. +.TP 7 +.BI "VideoAdaptor """ xv-id """" +specifies an optional Xv video adaptor description to be used with this +screen. +.TP 7 +.BI "DefaultDepth " depth +specifies which color depth the server should use by default. The +.B \-depth +command line option can be used to override this. If neither is specified, +the default depth is driver-specific, but in most cases is 8. +.TP 7 +.BI "DefaultFbBpp " bpp +specifies which framebuffer layout to use by default. The +.B \-fbbpp +command line option can be used to override this. In most cases the +driver will chose the best default value for this. The only case where +there is even a choice in this value is for depth 24, where some hardware +supports both a packed 24 bit framebuffer layout and a sparse 32 bit +framebuffer layout. +.TP 7 +.B Options +Various +.B Option +flags may be specified in the +.B Screen +section. Some are driver-specific and are described in the driver +documentation. Others are driver-independent, and will eventually be +described here. +.PP +Each +.B Screen +section must contain one or more +.B Display +subsections. Those subsections provide depth/fbbpp specific configuration +information, and the one chosen depends on the depth and/or fbbpp that +is being used for the screen. The +.B Display +subsection format is described in the section below. + +.SH DISPLAY SUBSECTION +Each +.B Screen +section may have multiple +.B Display +subsections. There must be at least one, which matches the depth +and/or fbbpp values that are being used for the screen. The "active" +.B Display +subsection is the first that matches the depth and/or fbbpp values being +used. +.PP +.B Display +subsections have the following format: +.PP +.RS 4 +.nf +.B " SubSection ""Display""" +.BI " Depth " depth +.I " entries" +.I " ..." +.B " EndSubSection" +.fi +.RE +.PP +.TP 7 +.BI "Depth " depth +This entry specifies what colour depth the +.B Display +subsection is to be used for. This entry is usually mandatory, +but it may be omitted in some cases providing an +.B FbBpp +entry is present. The range of +.I depth +values that are allowed depends on the driver. Most driver support +8, 15, 16 and 24. Some also support 1 and/or 4, and some may support +other values (like 30). Note: +.I depth +means the number of bits in a pixel that are actually used to determine +the pixel colour. 32 is not a valid +.I depth +value. Most hardware that uses 32 bits per pixel only uses 24 of them +to hold the colour information, which means that the colour depth is +24, not 32. +.TP 7 +.BI "FbBpp " bpp +This entry specifies the framebuffer format this +.B Display +subsection is to be used for. This entry is only needed when providing +depth 24 configurations that allow a choice between a 24 bpp packed +framebuffer format and a 32bpp sparse framebuffer format. In most cases +this entry should not be used. +.TP 7 +.BI "Weight " "red-weight green-weight blue-weight" +This optional entry specifies the relative RGB weighting to be used +for a screen is being used at depth 16 for drivers that allow multiple +formats. This may also be specified from the command line with the +.B \-weight +option (see +.IR XFree86(1) ). +.TP 7 +.BI "Virtual " "xdim ydim" +This optional entry specifies the virtual screen resolution to be used. +.I xdim +must be a multiple of either 8 or 16 for most drivers, and a multiple +of 32 when running in monochrome mode. The given value will be rounded +down if this is not the case. Video modes which are too large for the +specified virtual size will be rejected. If this entry is not present, +the virtual screen resolution will be set to accommodate all the valid +video modes given in the +.B Modes +entry. Some drivers/hardware combinations do not support virtual screens. +Refer to the appropriate driver-specific documentation for details. +.TP 7 +.BI "ViewPort " "x0 y0" +This optional entry sets the upper left corner of the initial display. +This is only relevant when the virtual screen resolution is different +from the resolution of the initial video mode. If this entry is not +given, then the initial display will be centered in the virtual display +area. +.TP 7 +.BI "Modes """ mode-name """" " ..." +This entry is highly desirable for most drivers, and it specifies the list +of video modes to use. Each +.I mode-name +specified must be in double quotes. They must correspond to those +specified or referenced in the appropriate +.B Monitor +section (including implicitly referenced built-in VESA standard modes). +The server will delete modes from this list which don't satisfy various +requirements. The first valid mode in this list will be the default +display mode for startup. The list of valid modes is converted internally +into a circular list. It is possible to switch to the next mode with +.B Ctrl+Alt+Keypad-Plus +and to the previous mode with +.BR Ctrl+Alt+Keypad-Minus . +When this entry is omitted, the largest valid mode referenced by the +appropriate +.B Monitor +section will be used. +.TP 7 +.BI "Visual """ visual-name """" +This optional entry sets the default root visual type. This may also +be specified from the command line (see the +.I Xserver(1) +man page). The visual types available for depth 8 are (default is +.BR PseudoColor ): +.PP +.RS 11 +.nf +.B StaticGray +.B GrayScale +.B StaticColor +.B PseudoColor +.B TrueColor +.B DirectColor +.fi +.RE +.PP +.RS 7 +The visual type available for the depths 15, 16 and 24 are (default is +.BR TrueColor ): +.PP +.RS 4 +.nf +.B TrueColor +.B DirectColor +.fi +.RE +.PP +Not all drivers support +.B DirectColor +at these depths. +.PP +The visual types available for the depth 4 are (default is +.BR StaticColor ): +.PP +.RS 4 +.nf +.B StaticGray +.B GrayScale +.B StaticColor +.B PseudoColor +.fi +.RE +.PP +The visual type available for the depth 1 (monochrome) is +.BR StaticGray . +.RE +.TP 7 +.BI "Black " "red green blue" +This optional entry allows the "black" colour to be specified. This +.TP 7 +.BI "White " "red green blue" +This optional entry allows the "white" colour to be specified. This +is only supported at depth 1. The default is white. +.TP 7 +.B Options +Option flags may be specified in the +.B Display +subsections. These may include driver-specific options and +driver-independent options. The former are described in the +driver-specific documentation. Some of the latter are described above +in the section about the +.B Screen +section, and they may also be included here. +.SH SERVERLAYOUT SECTION +The config file may have multiple +.B ServerLayout +sections. +A "server layout" represents the binding of one or more screens +.RB ( Screen +sections) and one or more input devices +.RB ( InputDevice +sections) to form a complete configuration. In multi-head configurations, +it also specifies the relative layout of the heads. A +.B ServerLayout +section is considered "active" if it is referenced by the +.B \-layout +command line option. If that option is not used, the first +.B ServerLayout +section found in the config file is considered the active one. If no +.B ServerLayout +sections are present, the single active screen and two active (core) +input devices are selected as described in the relevant sections above. +.PP +.B ServerLayout +sections have the following format: +.PP +.RS 4 +.nf +.B "Section ""ServerLayout""" +.BI " Identifier """ name """" +.BI " Screen """ screen-id """" +.I " ..." +.BI " InputDevice """ idev-id """" +.I " ..." +.I " options" +.I " ..." +.B "EndSection" +.fi +.RE +.PP +The +.B Identifier +entry specifies the unique name for this server layout. The +.B ServerLayout +section provides information specific to the whole session, including +session-specific +.BR Options . +The +.B ServerFlags +options (described above) may be specified here, and ones given here +override those given in the +.B ServerFlags +section. +.PP +The entries that may be used in this section are described here. +.TP 7 +.BI "Screen """ screen-id """" " screen-num position-information" +One of these entries must be given for each screen being used in +a session. The +.I screen-id +field is mandatory, and specifies the +.B Screen +section being referenced. The +.I screen-num +field is optional, and may be used to specify the screen number +in multi-head configurations. When this field is omitted, the +screens will be numbered in the order that they are listed in. +The numbering starts from 0, and must be consecutive. The +.I position-information +field describes the way multiple screens are positioned. There are +a number of different ways that this information can be provided: +.RS 7 +.TP 4 +.BI "Absolute " "x y" +This says that the upper left corner's coordinates are +.RI ( x , y ). +If the coordinates are omitted or if no positioning information +is given, (0,0) is assumed. +.TP 4 +.BI "RightOf """ screen-id """" +.TP 4 +.BI "LeftOf """ screen-id """" +.TP 4 +.BI "Above """ screen-id """" +.TP 4 +.BI "Below """ screen-id """" +.TP 4 +.BI "Relative """ screen-id """" " x y" +These give the screen's location relative to another screen. +.RE +.TP 7 +.BI "InputDevice """ idev-id """ """ option """" " ..." +One of these entries must be given for each input device being used in +a session. Normally at least two are required, one each for the core +pointer and keyboard devices. The +.I idev-id +field is mandatory, and specifies the name of the +.B InputDevice +section being referenced. Multiple +.I option +fields may be specified, each in double quotes. The options permitted +here are any that may also be given in the +.B InputDevice +sections. Normally only session-specific input device options would +be used here. The most commonly used options are: +.PP +.RS 11 +.nf +.B """CorePointer""" +.B """CoreKeyboard""" +.B """SendCoreEvents""" +.fi +.RE +.PP +.RS 7 +and the first two should normally be used to indicate the core pointer +and core keyboard devices respectively. +.RE +.TP 7 +.B Options +Any option permitted in the +.B ServerFlags +section may also be specified here. When the same option appears in both +places, the value given here overrides the one given in the +.B ServerFlags +section. +.PP +Here is an example of a +.B ServerLayout +section for a dual headed configuration with two mice: +.PP +.RS 4 +.nf +.B "Section ""ServerLayout""" +.B " Identifier ""Layout 1""" +.B " Screen ""MGA 1""" +.B " Screen ""MGA 2"" RightOf ""MGA 1""" +.B " InputDevice ""Keyboard 1"" ""CoreKeyboard""" +.B " InputDevice ""Mouse 1"" ""CorePointer""" +.B " InputDevice ""Mouse 2"" ""SendCoreEvents""" +.B " Option ""BlankTime"" ""5""" +.B "EndSection" +.fi +.RE +.SH DRI SECTION +This optional section is used to provide some information for the +Direct Rendering Infrastructure. Details about the format of this section +can be found in the README.DRI document, which is also available on-line +at +.IR . +.SH VENDOR SECTION +The optional +.B Vendor +section may be used to provide vendor-specific configuration information. +Multiple +.B Vendor +sections may be present, and they may contain an +.B Identifier +entry and multiple +.B Option +flags. The data therein is not used in this release. +.PP +.SH FILES +For an example of an XF86Config file, see the file installed as +__projectroot__/lib/X11/XF86Config.eg. +.fi +.SH "SEE ALSO" +X(1), Xserver(1), XFree86(1), +apm(__drivermansuffix__), +ati(__drivermansuffix__), +chips(__drivermansuffix__), +cirrus(__drivermansuffix__), +cyrix(__drivermansuffix__), +fbdev(__drivermansuffix__), +glide(__drivermansuffix__), +glint(__drivermansuffix__), +i740(__drivermansuffix__), +i810(__drivermansuffix__), +mga(__drivermansuffix__), +neomagic(__drivermansuffix__), +nv(__drivermansuffix__), +r128(__drivermansuffix__), +rendition(__drivermansuffix__), +s3virge(__drivermansuffix__), +sis(__drivermansuffix__), +tdfx(__drivermansuffix__), +tga(__drivermansuffix__), +trident(__drivermansuffix__), +tseng(__drivermansuffix__), +v4l(__drivermansuffix__), +vga(__drivermansuffix__), +.IR README , +.IR RELNOTES , +.IR README.mouse , +.IR README.DRI , +.IR Status , +.IR Install . +.SH AUTHORS +This manual page was largely rewritten for XFree86 4.0 by David Dawes +.IR . Index: xc/programs/Xserver/hw/xfree86/XFree86.cpp diff -u /dev/null xc/programs/Xserver/hw/xfree86/XFree86.cpp:1.1 --- /dev/null Wed Mar 8 16:30:31 2000 +++ xc/programs/Xserver/hw/xfree86/XFree86.cpp Wed Mar 8 16:30:31 2000 @@ -0,0 +1,577 @@ +.\" $XFree86: xc/programs/Xserver/hw/xfree86/XFree86.cpp,v 1.1 2000/03/07 01:37:42 dawes Exp $ +.TH XFree86 1 "Version 4.0" "XFree86" +.SH NAME +XFree86 - X11R6 X server +.SH SYNOPSIS +.B XFree86 +[:display] [option ...] +.SH DESCRIPTION +XFree86 is an X servers for UNIX-like OSs on Intel x86 and other platforms. +This work is derived from +.I "X386\ 1.2" +which was contributed to X11R5 by Snitily Graphics Consulting Service. +The current XFree86 release is based on X11R6.3. +The XFree86 X server architecture was redesigned for the 4.0 release, and +it includes among other things a loadable module system donated by +Metro Link, Inc. +.SH CONFIGURATIONS +.PP +.I XFree86 +operates under the following operating systems: +.RS .5i +.na +.PP +-- SVR3.2: SCO 3.2.2, 3.2.4, ISC 3.x, 4.x +.br +-- SVR4.0: ESIX, Microport, Dell, UHC, Consensys, MST, ISC, AT&T, NCR +.br +-- SVR4.2: Consensys, Univel (UnixWare) +.br +-- Solaris (x86) 2.5, 2.6 +.br +-- FreeBSD 2.1.x, 2.2.x, 3.0-current +.br +-- NetBSD 1.2, 1.3 +.br +-- OpenBSD +.ig +.br +-- BSD/386 version 1.1 and BSD/OS 2.0 +.br +-- Mach (from CMU) +.. +.br +-- Linux +.ig +.br +-- Amoeba version 5.1 +.br +-- Minix-386vm version 1.6.25.1 +.. +.br +-- LynxOS AT versions 2.2.1, 2.3.0 and 2.4.0, LynxOS microSPARC 2.4.0 +.ad +.RE +.PP +.SH "NETWORK CONNECTIONS" +\fIXFree86\fP supports connections made using the following reliable +byte-streams: +.TP 4 +.I "Local" +\fIXFree86\fP supports local connections via Streams pipe via various mechanisms, +using the following paths (\fIn\fP represents the display number): +.sp .5v +.in 8 +.nf +/dev/X/server.\fBn\fR (SVR3 and SVR4) +/dev/X/Nserver.\fBn\fR (SVR4) +.ig +/tmp/.X11-unix/X\fBn\fR (ISC SVR3) +.. +/dev/X\fBn\fRS and /dev/X\fBn\fRR (SCO SVR3) +.fi +.in +.sp .5v +On SVR4.0.4, if the \fIAdvanced Compatibility Package\fP +is installed, and in SVR4.2, \fIXFree86\fP supports local connections +from clients for SCO XSight/ODT, and (with modifications to the binary) +clients for ISC SVR3. +.TP 4 +.I "Unix Domain" +\fIXFree86\fP uses \fI/tmp/.X11-unix/X\fBn\fR as the filename for the socket, +where \fIn\fP is the display number. +.TP 4 +.I TCP\/IP +\fIXFree86\fP listens on port htons(6000+\fIn\fP), where \fIn\fP is the display +number. +.ig +.TP 4 +.I "Amoeba RPC" +This is the default communication medium used under native Amoeba. +Note that under Amoeba, the server should be started +with a ``\fIhostname\fP:\fIdisplaynumber\fP'' argument. +.. +.SH "ENVIRONMENT VARIABLES" +For operating systems that support local connections other than Unix Domain +sockets (SVR3 and SVR4), there is a compiled-in list specifying the order +in which local connections should be attempted. This list can be overridden by +the \fIXLOCAL\fP environment variable described below. If the display name +indicates a best-choice connection should be made (e.g. \fI:0.0\fP), each +connection mechanism is tried until a connection succeeds or no more +mechanisms are available. Note: for these OSs, the Unix Domain socket +connection is treated differently from the other local connection types. +To use it the connection must be made to \fIunix:0.0\fP. +.PP +The \fIXLOCAL\fP environment variable should contain a list of one more +more of the following: +.sp .5v +.in 8 +.nf +NAMED +PTS +SCO +ISC +.fi +.in +.sp .5v +which represent SVR4 Named Streams pipe, Old-style USL +Streams pipe, SCO XSight Streams pipe, and ISC Streams pipe, respectively. +You can select a single mechanism (e.g. \fIXLOCAL=NAMED\fP), or an ordered +list (e.g. \fIXLOCAL="NAMED:PTS:SCO"\fP). This variable overrides the +compiled-in defaults. For SVR4 it is recommended that \fINAMED\fP be +the first preference connection. The default setting is +\fIPTS:NAMED:ISC:SCO\fP. +.PP +To globally override the compiled-in defaults, you should define (and +export if using \fIsh\fP or \fIksh\fP) \fIXLOCAL\fP globally. If you +use \fIstartx/xinit\fP, the definition should be at the top of +your \fI.xinitrc\fP file. If you use \fIxdm\fP, the definitions should be +early on in the \fI/lib/X11/xdm/Xsession\fP script. +.SH OPTIONS +In addition to the normal server options described in the \fIXserver(1)\fP +manual page, \fIXFree86\fP accepts the following command line switches: +.TP 8 +.B vt\fIXX\fP +\fIXX\fP specifies the Virtual Terminal device number which +\fIXFree86\fP will use. Without this option, \fIXFree86\fP will pick the first +available Virtual Terminal that it can locate. This option applies only +to SVR3, SVR4, Linux, and BSD OSs with the `syscons' or `pcvt' driver. +.TP 8 +.B -crt /dev/tty\fIXX\fP +SCO only. This is the same as the \fBvt\fP option, and is provided for +compatibility with the native SCO X server. +.TP 8 +.B \-probeonly +Causes the server to exit after the device probing stage. The XF86Config file +is still used when this option is given, so information that can be +auto-detected should be commented out. +.TP 8 +.B \-quiet +Suppress most informational messages at startup. +.TP 8 +.B \-bpp \fIn\fP +No longer supported. Use \fB\-depth\fP to set the color depth, and +use \fB\-fbbpp\fP if you really need to force a non-default +framebuffer (hardware) pixel format. +.TP 8 +.B \-depth \fIn\fP +Sets the default color depth. Legal values are 8, 15, 16, and 24. +Not all servers support all values. +.TP 8 +.B \-fbbpp \fIn\fP +Sets the number of framebuffer bits per pixel. You should only set +this if you're sure it's necessary; normally the server can deduce the +correct value from \fB\-depth\fP above. Useful if you want to run a +depth 24 configuration with a 24 bpp framebuffer rather than the +(possibly default) 32 bpp framebuffer. Legal values are 8, 16, 24, +32. Not all servers support all values. +.TP 8 +.B \-weight \fInnn\fP +Set RGB weighting at 16 bpp. The default is 565. This applies +only to those servers which support 16 bpp. +.TP 8 +.B \-flipPixels +Swap the default values for the black and white pixels. +.TP 8 +.B \-disableVidMode +Disable the the parts of the VidMode extension used by the xvidtune client +that can be used to change the video modes. +.TP 8 +.B \-allowNonLocalXvidtune +Allow the xvidtune client to connect from another host. By default non-local +connections are not allowed. +.TP 8 +.B \-disableModInDev +Disable dynamic modification of input device settings. +.TP 8 +.B \-allowNonLocalModInDev +Allow changes to keyboard and mouse settings from non-local clients. +By default, connections from non-local clients are not allowed to do this. +.TP +.B \-allowMouseOpenFail +Allow the server to start up even if the mouse device can't be opened or +initialised. +.TP 8 +.B \-gamma \fIvalue\fP +Set the gamma correction. \fIvalue\fP must be between 0.1 and 10. The +default is 1.0 +This value is applied equally to the R, G and B values. Not all servers +support this. +.TP 8 +.B \-rgamma \fIvalue\fP +Set the red gamma correction. \fIvalue\fP must be between 0.1 and 10. The +default is 1.0 +Not all servers support this. +.TP 8 +.B \-ggamma \fIvalue\fP +Set the green gamma correction. \fIvalue\fP must be between 0.1 and 10. The +default is 1.0 +Not all servers support this. +.TP 8 +.B \-bgamma \fIvalue\fP +Set the blue gamma correction. \fIvalue\fP must be between 0.1 and 10. The +default is 1.0 +Not all servers support this. +.TP 8 +.B \-showconfig +Print out the server version, patchlevel, and a list of screen drivers +configured in the server. +.TP 8 +.B \-verbose +Multiple occurrences of this flag increase the amount of information printed on +stderr (more than the default). +.TP 8 +.B \-version +Same as \fB\-showconfig\fP. +.TP 8 +.B \-xf86config \fIfile\fP +Read the server configuration from \fIfile\fP. This option will work +for any file when the server is run as root (i.e, with real-uid 0), or +for files relative to a directory in the config search path for all +other users. +.TP 8 +.B \-keeptty +Prevent the server from detaching its initial controlling terminal. This +option is only useful when debugging the server. +.SH "KEYBOARD" +Multiple key presses recognized directly by \fIXFree86\fP are: +.TP 8 +.B Ctrl+Alt+Backspace +Immediately kills the server -- no questions asked. (Can be disabled by +specifying "DontZap" in the \fBServerFlags\fP section of the XF86Config file.) +.TP 8 +.B Ctrl+Alt+Keypad-Plus +Change video mode to next one specified in the configuration file, +(increasing video resolution order). +.TP 8 +.B Ctrl+Alt+Keypad-Minus +Change video mode to previous one specified in the configuration file, +(decreasing video resolution order). +.TP 8 +.B Ctrl+Alt+F1...F12 +For BSD systems using the syscons driver and Linux, these keystroke +combinations are used to switch to Virtual +Console 1 through 12. +.SH SETUP +.I XFree86 +uses a configuration file called \fBXF86Config\fP for its initial setup. +Refer to the +.I XF86Config(4/5) +manual page for more information. +.SH FILES +.TP 30 +/etc/XF86Config +Server configuration file +.TP 30 +/etc/X11/XF86Config +Server configuration file +.TP 30 +/usr/X11R6/etc/XF86Config +Server configuration file +.TP 30 +/lib/X11/XF86Config.\fIhostname\fP +Server configuration file +.TP 30 +/lib/X11/XF86Config +Server configuration file +.TP 30 +/bin/\(** +Client binaries +.TP 30 +/include/\(** +Header files +.TP 30 +/lib/\(** +Libraries +.TP 30 +/lib/X11/fonts/\(** +Fonts +.TP 30 +/lib/X11/rgb.txt +Color names to RGB mapping +.TP 30 +/lib/X11/XErrorDB +Client error message database +.TP 30 +/lib/X11/app-defaults/\(** +Client resource specifications +.TP 30 +/man/man?/\(** +Manual pages +.TP 30 +/etc/X\fIn\fP.hosts +Initial access control list for display \fIn\fP +.LP +Note: refers to the root of the X11 install tree. +.SH "SEE ALSO" +X(1), Xserver(1), xdm(1), xinit(1), XF86Config(4/5), xf86config(1), +XF86_SVGA(1), XF86_VGA16(1), XF86_Mono(1), XF86_Accel(1), xvidtune(1) +.SH AUTHORS +.PP +For X11R5, \fIXF86 1.2\fP was provided by: +.TP 8 +Thomas Roell, \fIroell@informatik.tu-muenchen.de\fP +TU-Muenchen: Server and SVR4 stuff +.TP 8 +Mark W. Snitily, \fImark@sgcs.com\fP +SGCS: SVR3 support, X Consortium Sponsor +.PP + ... and many more people out there on the net who helped with ideas and +bug-fixes. +.PP +XFree86 was integrated into X11R6 by the following team: +.PP +.nf +Stuart Anderson \fIanderson@metrolink.com\fP +Doug Anson \fIdanson@lgc.com\fP +Gertjan Akkerman \fIakkerman@dutiba.twi.tudelft.nl\fP +Mike Bernson \fImike@mbsun.mlb.org\fP +Robin Cutshaw \fIrobin@XFree86.org\fP +David Dawes \fIdawes@XFree86.org\fP +Marc Evans \fImarc@XFree86.org\fP +Pascal Haible \fIhaible@izfm.uni-stuttgart.de\fP +Matthieu Herrb \fIMatthieu.Herrb@laas.fr\fP +Dirk Hohndel \fIhohndel@XFree86.org\fP +David Holland \fIdavidh@use.com\fP +Alan Hourihane \fIalanh@fairlite.demon.co.uk\fP +Jeffrey Hsu \fIhsu@soda.berkeley.edu\fP +Glenn Lai \fIglenn@cs.utexas.edu\fP +Ted Lemon \fImellon@ncd.com\fP +Rich Murphey \fIrich@XFree86.org\fP +Hans Nasten \fInasten@everyware.se\fP +Mark Snitily \fImark@sgcs.com\fP +Randy Terbush \fIrandyt@cse.unl.edu\fP +Jon Tombs \fItombs@XFree86.org\fP +Kees Verstoep \fIversto@cs.vu.nl\fP +Paul Vixie \fIpaul@vix.com\fP +Mark Weaver \fIMark_Weaver@brown.edu\fP +David Wexelblat \fIdwex@XFree86.org\fP +Philip Wheatley \fIPhilip.Wheatley@ColumbiaSC.NCR.COM\fP +Thomas Wolfram \fIwolf@prz.tu-berlin.de\fP +Orest Zborowski \fIorestz@eskimo.com\fP +.fi +.PP +The \fIXFree86\fP enhancement package was provided by: +.TP 8 +David Dawes, \fIdawes@XFree86.org\fP +Release coordination, administration of FTP repository and mailing lists. +Source tree management +and integration, accelerated server integration, fixing, and coding. +.TP 8 +Glenn Lai, \fIglenn@cs.utexas.edu\fP +The SpeedUp code for ET4000 based SVGA cards, and ET4000/W32 accelerated +server. +.TP 8 +Jim Tsillas, \fIjtsilla@ccs.neu.edu\fP +Many server speedups from the fX386 series of enhancements. +.TP 8 +David Wexelblat, \fIdwex@XFree86.org\fP +Integration of the fX386 code into the default server, +many driver fixes, and driver documentation, assembly of the VGA +card/monitor database, development of the generic video mode listing. +Accelerated server integration, fixing, and coding. +.TP 8 +Dirk Hohndel, \fIhohndel@XFree86.org\fP +Linux shared libraries and release coordination. Accelerated server +integration and fixing. Generic administrivia and documentation. +.PP +.TP 8 +Amancio Hasty Jr., \fIhasty@netcom.com\fP +Porting to \fB386BSD\fP version 0.1 and XS3 development. +.TP 8 +Rich Murphey, \fIrich@XFree86.org\fP +Ported to \fB386BSD\fP version 0.1 based on the original port by Pace Willison. +Support for \fB386BSD\fP, \fBFreeBSD\fP, and \fBNetBSD\fP. +.TP 8 +Robert Baron, \fIRobert.Baron@ernst.mach.cs.cmu.edu\fP +Ported to \fBMach\fP. +.TP 8 +Orest Zborowski, \fIorestz@eskimo.com\fP +Ported to \fBLinux\fP. +.TP 8 +Doug Anson, \fIdanson@lgc.com\fP +Ported to \fBSolaris x86\fP. +.TP 8 +David Holland, \fIdavidh@use.com\fP +Ported to \fBSolaris x86\fP. +.TP 8 +David McCullough, \fIdavidm@stallion.oz.au\fP +Ported to \fBSCO SVR3\fP. +.TP 8 +Michael Rohleder, \fImichael.rohleder@stadt-frankfurt.de\fP +Ported to \fBISC SVR3\fP. +.TP 8 +Kees Verstoep, \fIversto@cs.vu.nl\fP +Ported to \fBAmoeba\fP based on Leendert van Doorn's original Amoeba port of +X11R5. +.TP 8 +Marc Evans, \fIMarc@XFree86.org\fP +Ported to \fBOSF/1\fP. +.TP 8 +Philip Homburg, \fIphilip@cs.vu.nl\fP +Ported to \fBMinix-386vm\fP. +.TP 8 +Thomas Mueller, \fItm@systrix.de\fP +Ported to \fBLynxOS\fP. +.TP 8 +Jon Tombs, \fItombs@XFree86.org\fP +S3 server and accelerated server coordination. +.TP 8 +Harald Koenig, \fIkoenig@tat.physik.uni-tuebingen.de\fP +S3 server development. +.TP 8 +Bernhard Bender, \fIbr@elsa.mhs.compuserve.com\fP +S3 server development. +.TP 8 +Kevin Martin, \fImartin@cs.unc.edu\fP +Overall work on the base accelerated servers (ATI and 8514/A), and Mach64 +server. +.TP 8 +Rik Faith, \fIfaith@cs.unc.edu\fP +Overall work on the base accelerated servers (ATI and 8514/A). +.TP 8 +Tiago Gons, \fItiago@comosjn.hobby.nl\fP +Mach8 and 8514/A server development +.TP 8 +Hans Nasten, \fInasten@everyware.se\fP +Mach8, 8514/A, and S3 server development and BSD/386 support +.TP 8 +Mike Bernson, \fImike@mbsun.mlb.org\fP +Mach32 server development. +.TP 8 +Mark Weaver, \fIMark_Weaver@brown.edu\fP +Mach32 server development. +.TP 8 +Craig Groeschel, \fIcraig@metrolink.com\fP +Mach32 server development. +.TP 8 +Henry Worth, \fIHenry.Worth@amail.amdahl.com\fP +AGX server. +.TP 8 +Erik Nygren, \fInygren@mit.edu\fP +P9000 server. +.TP 8 +Harry Langenbacher \fIharry@brain.jpl.nasa.gov\fP +P9000 server. +.TP 8 +Chris Mason, \fImason@mail.csh.rit.edu\fP +P9000 server. +.TP 8 +Henrik Harmsen \fIharmsen@eritel.se\fP +P9000 server. +.TP 8 +Simon Cooper, \fIscooper@vizlab.rutgers.edu\fP +Cirrus accelerated code (based on work by Bill Reynolds). +.TP 8 +Harm Hanemaayer, \fIhhanemaa@cs.ruu.nl\fP +Cirrus accelerated code, and ARK driver. +.TP 8 +Thomas Zerucha, \fIzerucha@shell.portal.com\fP +Support for Cirrus CL-GD7543. +.TP 8 +Leon Bottou, \fIbottou@laforia.ibp.fr\fP +ARK driver. +.TP 8 +Mike Tierney, \fIfloyd@eng.umd.edu\fP +WD accelerated code. +.TP 8 +Bill Conn, \fIconn@bnr.ca\fP +WD accelerated code. +.TP 8 +Brad Bosch, \fIbrad@lachman.com\fP +WD 90C24A support. +.TP 8 +Alan Hourihane, \fIalanh@fairlite.demon.co.uk\fP +Trident SVGA driver, SiS SVGA driver and DEC 21030 server. +.TP 8 +Marc Aurele La France, \fItsi@ualberta.ca\fP +ATI SVGA driver +.TP 8 +Steve Goldman, \fIsgoldman@encore.com\fP +Oak 067/077 SVGA driver. +.TP 8 +Jorge Delgado, \fIernar@dit.upm.es\fP +Oak SVGA driver, and 087 accelerated code. +.TP 8 +Bill Conn, \fIconn@bnr.ca\fP +WD accelerated code. +.TP 8 +Paolo Severini, \fIlendl@dist.dist.unige.it\fP +AL2101 SVGA driver +.TP 8 +Ching-Tai Chiu, \fIcchiu@netcom.com\fP +Avance Logic ALI SVGA driver +.TP 8 +Manfred Brands, \fImb@oceonics.nl\fP +Cirrus 64xx SVGA driver +.TP 8 +Randy Hendry, \fIrandy@sgi.com\fP +Cirrus 6440 support in the cl64xx SVGA driver +.TP 8 +Frank Dikker, \fIdikker@cs.utwente.nl\fP +MX SVGA driver +.TP 8 +Regis Cridlig, \fIcridlig@dmi.ens.fr\fP +Chips & Technologies driver +.TP 8 +Jon Block, \fIblock@frc.com\fP +Chips & Technologies driver +.TP 8 +Mike Hollick, \fIhollick@graphics.cis.upenn.edu\fP +Chips & Technologies driver +.TP 8 +Nozomi Ytow +Chips & Technologies driver +.TP 8 +Egbert Eich, \fIEgbert.Eich@Physik.TH-Darmstadt.DE\fP +Chips & Technologies driver +.TP 8 +David Bateman, \fIdbateman@ee.uts.edu.au\fP +Chips & Technologies driver +.TP 8 +Xavier Ducoin, \fIxavier@rd.lectra.fr\fP +Chips & Technologies driver +.TP 8 +Peter Trattler, \fIpeter@sbox.tu-graz.ac.at\fP +RealTek SVGA driver +.TP 8 +Craig Struble, \fIcstruble@acm.vt.edu\fP +Video7 SVGA driver +.TP 8 +Gertjan Akkerman, \fIakkerman@dutiba.twi.tudelft.nl\fP +16 colour VGA server, and XF86Config parser. +.TP 8 +Davor Matic, \fIdmatic@Athena.MIT.EDU\fP +Hercules driver. +.TP 8 +Pascal Haible, \fIhaible@izfm.uni-stuttgart.de\fP +Banked monochrome VGA support, Hercules support, and mono frame buffer +support for dumb monochrome devices +.TP 8 +Martin Schaller, +.TP 8 +Geert Uytterhoeven,\fIGeert.Uytterhoeven@cs.kuleuven.ac.be\fP +Linux/m68k Frame Buffer Device driver +.TP 8 +Andreas Schwab, \fIschwab@issan.informatik.uni-dortmund.de\fP +Linux/m68k Frame Buffer Device driver +.TP 8 +Guenther Kelleter, \fIguenther@Pool.Informatik.RWTH-Aachen.de\fP +Linux/m68k Frame Buffer Device driver +.TP 8 +Frederic Lepied, \fLepied@XFree86.Org\fP +XInput extension integration. Wacom, joystick and extended mouse drivers. +.TP 8 +Patrick Lecoanet, \flecoanet@cena.dgac.fr\fP +Elographics touchscreen driver. +.TP 8 +Steven Lang, \ftiger@tyger.org\fP +SummaSketch tablet driver. +.PP + ... and many more people out there on the net who helped with beta-testing +this enhancement. +.PP +\fIXFree86\fP source is available from the FTP server +\fIftp.XFree86.org\fP, among others. Send email to +\fIXFree86@XFree86.org\fP for details. +.\" $XConsortium: XFree86.man /main/25 1996/12/09 17:33:22 kaleb $ Index: xc/programs/Xserver/hw/xfree86/XFree86.man diff -u xc/programs/Xserver/hw/xfree86/XFree86.man:3.45 xc/programs/Xserver/hw/xfree86/XFree86.man:removed --- xc/programs/Xserver/hw/xfree86/XFree86.man:3.45 Wed Mar 8 16:30:31 2000 +++ xc/programs/Xserver/hw/xfree86/XFree86.man Wed Mar 8 16:30:31 2000 @@ -1,577 +0,0 @@ -.\" $XFree86: xc/programs/Xserver/hw/xfree86/XFree86.man,v 3.45 2000/02/10 18:57:25 dawes Exp $ -.TH XFree86 1 "Version 4.0" "XFree86" -.SH NAME -XFree86 - X11R6 X server -.SH SYNOPSIS -.B XFree86 -[:display] [option ...] -.SH DESCRIPTION -XFree86 is an X servers for UNIX-like OSs on Intel x86 and other platforms. -This work is derived from -.I "X386\ 1.2" -which was contributed to X11R5 by Snitily Graphics Consulting Service. -The current XFree86 release is based on X11R6.3. -The XFree86 X server architecture was redesigned for the 4.0 release, and -it includes among other things a loadable module system donated by -Metro Link, Inc. -.SH CONFIGURATIONS -.PP -.I XFree86 -operates under the following operating systems: -.RS .5i -.na -.PP --- SVR3.2: SCO 3.2.2, 3.2.4, ISC 3.x, 4.x -.br --- SVR4.0: ESIX, Microport, Dell, UHC, Consensys, MST, ISC, AT&T, NCR -.br --- SVR4.2: Consensys, Univel (UnixWare) -.br --- Solaris (x86) 2.5, 2.6 -.br --- FreeBSD 2.1.x, 2.2.x, 3.0-current -.br --- NetBSD 1.2, 1.3 -.br --- OpenBSD -.ig -.br --- BSD/386 version 1.1 and BSD/OS 2.0 -.br --- Mach (from CMU) -.. -.br --- Linux -.ig -.br --- Amoeba version 5.1 -.br --- Minix-386vm version 1.6.25.1 -.. -.br --- LynxOS AT versions 2.2.1, 2.3.0 and 2.4.0, LynxOS microSPARC 2.4.0 -.ad -.RE -.PP -.SH "NETWORK CONNECTIONS" -\fIXFree86\fP supports connections made using the following reliable -byte-streams: -.TP 4 -.I "Local" -\fIXFree86\fP supports local connections via Streams pipe via various mechanisms, -using the following paths (\fIn\fP represents the display number): -.sp .5v -.in 8 -.nf -/dev/X/server.\fBn\fR (SVR3 and SVR4) -/dev/X/Nserver.\fBn\fR (SVR4) -.ig -/tmp/.X11-unix/X\fBn\fR (ISC SVR3) -.. -/dev/X\fBn\fRS and /dev/X\fBn\fRR (SCO SVR3) -.fi -.in -.sp .5v -On SVR4.0.4, if the \fIAdvanced Compatibility Package\fP -is installed, and in SVR4.2, \fIXFree86\fP supports local connections -from clients for SCO XSight/ODT, and (with modifications to the binary) -clients for ISC SVR3. -.TP 4 -.I "Unix Domain" -\fIXFree86\fP uses \fI/tmp/.X11-unix/X\fBn\fR as the filename for the socket, -where \fIn\fP is the display number. -.TP 4 -.I TCP\/IP -\fIXFree86\fP listens on port htons(6000+\fIn\fP), where \fIn\fP is the display -number. -.ig -.TP 4 -.I "Amoeba RPC" -This is the default communication medium used under native Amoeba. -Note that under Amoeba, the server should be started -with a ``\fIhostname\fP:\fIdisplaynumber\fP'' argument. -.. -.SH "ENVIRONMENT VARIABLES" -For operating systems that support local connections other than Unix Domain -sockets (SVR3 and SVR4), there is a compiled-in list specifying the order -in which local connections should be attempted. This list can be overridden by -the \fIXLOCAL\fP environment variable described below. If the display name -indicates a best-choice connection should be made (e.g. \fI:0.0\fP), each -connection mechanism is tried until a connection succeeds or no more -mechanisms are available. Note: for these OSs, the Unix Domain socket -connection is treated differently from the other local connection types. -To use it the connection must be made to \fIunix:0.0\fP. -.PP -The \fIXLOCAL\fP environment variable should contain a list of one more -more of the following: -.sp .5v -.in 8 -.nf -NAMED -PTS -SCO -ISC -.fi -.in -.sp .5v -which represent SVR4 Named Streams pipe, Old-style USL -Streams pipe, SCO XSight Streams pipe, and ISC Streams pipe, respectively. -You can select a single mechanism (e.g. \fIXLOCAL=NAMED\fP), or an ordered -list (e.g. \fIXLOCAL="NAMED:PTS:SCO"\fP). This variable overrides the -compiled-in defaults. For SVR4 it is recommended that \fINAMED\fP be -the first preference connection. The default setting is -\fIPTS:NAMED:ISC:SCO\fP. -.PP -To globally override the compiled-in defaults, you should define (and -export if using \fIsh\fP or \fIksh\fP) \fIXLOCAL\fP globally. If you -use \fIstartx/xinit\fP, the definition should be at the top of -your \fI.xinitrc\fP file. If you use \fIxdm\fP, the definitions should be -early on in the \fI/lib/X11/xdm/Xsession\fP script. -.SH OPTIONS -In addition to the normal server options described in the \fIXserver(1)\fP -manual page, \fIXFree86\fP accepts the following command line switches: -.TP 8 -.B vt\fIXX\fP -\fIXX\fP specifies the Virtual Terminal device number which -\fIXFree86\fP will use. Without this option, \fIXFree86\fP will pick the first -available Virtual Terminal that it can locate. This option applies only -to SVR3, SVR4, Linux, and BSD OSs with the `syscons' or `pcvt' driver. -.TP 8 -.B -crt /dev/tty\fIXX\fP -SCO only. This is the same as the \fBvt\fP option, and is provided for -compatibility with the native SCO X server. -.TP 8 -.B \-probeonly -Causes the server to exit after the device probing stage. The XF86Config file -is still used when this option is given, so information that can be -auto-detected should be commented out. -.TP 8 -.B \-quiet -Suppress most informational messages at startup. -.TP 8 -.B \-bpp \fIn\fP -No longer supported. Use \fB\-depth\fP to set the color depth, and -use \fB\-fbbpp\fP if you really need to force a non-default -framebuffer (hardware) pixel format. -.TP 8 -.B \-depth \fIn\fP -Sets the default color depth. Legal values are 8, 15, 16, and 24. -Not all servers support all values. -.TP 8 -.B \-fbbpp \fIn\fP -Sets the number of framebuffer bits per pixel. You should only set -this if you're sure it's necessary; normally the server can deduce the -correct value from \fB\-depth\fP above. Useful if you want to run a -depth 24 configuration with a 24 bpp framebuffer rather than the -(possibly default) 32 bpp framebuffer. Legal values are 8, 16, 24, -32. Not all servers support all values. -.TP 8 -.B \-weight \fInnn\fP -Set RGB weighting at 16 bpp. The default is 565. This applies -only to those servers which support 16 bpp. -.TP 8 -.B \-flipPixels -Swap the default values for the black and white pixels. -.TP 8 -.B \-disableVidMode -Disable the the parts of the VidMode extension used by the xvidtune client -that can be used to change the video modes. -.TP 8 -.B \-allowNonLocalXvidtune -Allow the xvidtune client to connect from another host. By default non-local -connections are not allowed. -.TP 8 -.B \-disableModInDev -Disable dynamic modification of input device settings. -.TP 8 -.B \-allowNonLocalModInDev -Allow changes to keyboard and mouse settings from non-local clients. -By default, connections from non-local clients are not allowed to do this. -.TP -.B \-allowMouseOpenFail -Allow the server to start up even if the mouse device can't be opened or -initialised. -.TP 8 -.B \-gamma \fIvalue\fP -Set the gamma correction. \fIvalue\fP must be between 0.1 and 10. The -default is 1.0 -This value is applied equally to the R, G and B values. Not all servers -support this. -.TP 8 -.B \-rgamma \fIvalue\fP -Set the red gamma correction. \fIvalue\fP must be between 0.1 and 10. The -default is 1.0 -Not all servers support this. -.TP 8 -.B \-ggamma \fIvalue\fP -Set the green gamma correction. \fIvalue\fP must be between 0.1 and 10. The -default is 1.0 -Not all servers support this. -.TP 8 -.B \-bgamma \fIvalue\fP -Set the blue gamma correction. \fIvalue\fP must be between 0.1 and 10. The -default is 1.0 -Not all servers support this. -.TP 8 -.B \-showconfig -Print out the server version, patchlevel, and a list of screen drivers -configured in the server. -.TP 8 -.B \-verbose -Multiple occurrences of this flag increase the amount of information printed on -stderr (more than the default). -.TP 8 -.B \-version -Same as \fB\-showconfig\fP. -.TP 8 -.B \-xf86config \fIfile\fP -Read the server configuration from \fIfile\fP. This option will work -for any file when the server is run as root (i.e, with real-uid 0), or -for files relative to a directory in the config search path for all -other users. -.TP 8 -.B \-keeptty -Prevent the server from detaching its initial controlling terminal. This -option is only useful when debugging the server. -.SH "KEYBOARD" -Multiple key presses recognized directly by \fIXFree86\fP are: -.TP 8 -.B Ctrl+Alt+Backspace -Immediately kills the server -- no questions asked. (Can be disabled by -specifying "DontZap" in the \fBServerFlags\fP section of the XF86Config file.) -.TP 8 -.B Ctrl+Alt+Keypad-Plus -Change video mode to next one specified in the configuration file, -(increasing video resolution order). -.TP 8 -.B Ctrl+Alt+Keypad-Minus -Change video mode to previous one specified in the configuration file, -(decreasing video resolution order). -.TP 8 -.B Ctrl+Alt+F1...F12 -For BSD systems using the syscons driver and Linux, these keystroke -combinations are used to switch to Virtual -Console 1 through 12. -.SH SETUP -.I XFree86 -uses a configuration file called \fBXF86Config\fP for its initial setup. -Refer to the -.I XF86Config(4/5) -manual page for more information. -.SH FILES -.TP 30 -/etc/XF86Config -Server configuration file -.TP 30 -/etc/X11/XF86Config -Server configuration file -.TP 30 -/usr/X11R6/etc/XF86Config -Server configuration file -.TP 30 -/lib/X11/XF86Config.\fIhostname\fP -Server configuration file -.TP 30 -/lib/X11/XF86Config -Server configuration file -.TP 30 -/bin/\(** -Client binaries -.TP 30 -/include/\(** -Header files -.TP 30 -/lib/\(** -Libraries -.TP 30 -/lib/X11/fonts/\(** -Fonts -.TP 30 -/lib/X11/rgb.txt -Color names to RGB mapping -.TP 30 -/lib/X11/XErrorDB -Client error message database -.TP 30 -/lib/X11/app-defaults/\(** -Client resource specifications -.TP 30 -/man/man?/\(** -Manual pages -.TP 30 -/etc/X\fIn\fP.hosts -Initial access control list for display \fIn\fP -.LP -Note: refers to the root of the X11 install tree. -.SH "SEE ALSO" -X(1), Xserver(1), xdm(1), xinit(1), XF86Config(4/5), xf86config(1), -XF86_SVGA(1), XF86_VGA16(1), XF86_Mono(1), XF86_Accel(1), xvidtune(1) -.SH AUTHORS -.PP -For X11R5, \fIXF86 1.2\fP was provided by: -.TP 8 -Thomas Roell, \fIroell@informatik.tu-muenchen.de\fP -TU-Muenchen: Server and SVR4 stuff -.TP 8 -Mark W. Snitily, \fImark@sgcs.com\fP -SGCS: SVR3 support, X Consortium Sponsor -.PP - ... and many more people out there on the net who helped with ideas and -bug-fixes. -.PP -XFree86 was integrated into X11R6 by the following team: -.PP -.nf -Stuart Anderson \fIanderson@metrolink.com\fP -Doug Anson \fIdanson@lgc.com\fP -Gertjan Akkerman \fIakkerman@dutiba.twi.tudelft.nl\fP -Mike Bernson \fImike@mbsun.mlb.org\fP -Robin Cutshaw \fIrobin@XFree86.org\fP -David Dawes \fIdawes@XFree86.org\fP -Marc Evans \fImarc@XFree86.org\fP -Pascal Haible \fIhaible@izfm.uni-stuttgart.de\fP -Matthieu Herrb \fIMatthieu.Herrb@laas.fr\fP -Dirk Hohndel \fIhohndel@XFree86.org\fP -David Holland \fIdavidh@use.com\fP -Alan Hourihane \fIalanh@fairlite.demon.co.uk\fP -Jeffrey Hsu \fIhsu@soda.berkeley.edu\fP -Glenn Lai \fIglenn@cs.utexas.edu\fP -Ted Lemon \fImellon@ncd.com\fP -Rich Murphey \fIrich@XFree86.org\fP -Hans Nasten \fInasten@everyware.se\fP -Mark Snitily \fImark@sgcs.com\fP -Randy Terbush \fIrandyt@cse.unl.edu\fP -Jon Tombs \fItombs@XFree86.org\fP -Kees Verstoep \fIversto@cs.vu.nl\fP -Paul Vixie \fIpaul@vix.com\fP -Mark Weaver \fIMark_Weaver@brown.edu\fP -David Wexelblat \fIdwex@XFree86.org\fP -Philip Wheatley \fIPhilip.Wheatley@ColumbiaSC.NCR.COM\fP -Thomas Wolfram \fIwolf@prz.tu-berlin.de\fP -Orest Zborowski \fIorestz@eskimo.com\fP -.fi -.PP -The \fIXFree86\fP enhancement package was provided by: -.TP 8 -David Dawes, \fIdawes@XFree86.org\fP -Release coordination, administration of FTP repository and mailing lists. -Source tree management -and integration, accelerated server integration, fixing, and coding. -.TP 8 -Glenn Lai, \fIglenn@cs.utexas.edu\fP -The SpeedUp code for ET4000 based SVGA cards, and ET4000/W32 accelerated -server. -.TP 8 -Jim Tsillas, \fIjtsilla@ccs.neu.edu\fP -Many server speedups from the fX386 series of enhancements. -.TP 8 -David Wexelblat, \fIdwex@XFree86.org\fP -Integration of the fX386 code into the default server, -many driver fixes, and driver documentation, assembly of the VGA -card/monitor database, development of the generic video mode listing. -Accelerated server integration, fixing, and coding. -.TP 8 -Dirk Hohndel, \fIhohndel@XFree86.org\fP -Linux shared libraries and release coordination. Accelerated server -integration and fixing. Generic administrivia and documentation. -.PP -.TP 8 -Amancio Hasty Jr., \fIhasty@netcom.com\fP -Porting to \fB386BSD\fP version 0.1 and XS3 development. -.TP 8 -Rich Murphey, \fIrich@XFree86.org\fP -Ported to \fB386BSD\fP version 0.1 based on the original port by Pace Willison. -Support for \fB386BSD\fP, \fBFreeBSD\fP, and \fBNetBSD\fP. -.TP 8 -Robert Baron, \fIRobert.Baron@ernst.mach.cs.cmu.edu\fP -Ported to \fBMach\fP. -.TP 8 -Orest Zborowski, \fIorestz@eskimo.com\fP -Ported to \fBLinux\fP. -.TP 8 -Doug Anson, \fIdanson@lgc.com\fP -Ported to \fBSolaris x86\fP. -.TP 8 -David Holland, \fIdavidh@use.com\fP -Ported to \fBSolaris x86\fP. -.TP 8 -David McCullough, \fIdavidm@stallion.oz.au\fP -Ported to \fBSCO SVR3\fP. -.TP 8 -Michael Rohleder, \fImichael.rohleder@stadt-frankfurt.de\fP -Ported to \fBISC SVR3\fP. -.TP 8 -Kees Verstoep, \fIversto@cs.vu.nl\fP -Ported to \fBAmoeba\fP based on Leendert van Doorn's original Amoeba port of -X11R5. -.TP 8 -Marc Evans, \fIMarc@XFree86.org\fP -Ported to \fBOSF/1\fP. -.TP 8 -Philip Homburg, \fIphilip@cs.vu.nl\fP -Ported to \fBMinix-386vm\fP. -.TP 8 -Thomas Mueller, \fItm@systrix.de\fP -Ported to \fBLynxOS\fP. -.TP 8 -Jon Tombs, \fItombs@XFree86.org\fP -S3 server and accelerated server coordination. -.TP 8 -Harald Koenig, \fIkoenig@tat.physik.uni-tuebingen.de\fP -S3 server development. -.TP 8 -Bernhard Bender, \fIbr@elsa.mhs.compuserve.com\fP -S3 server development. -.TP 8 -Kevin Martin, \fImartin@cs.unc.edu\fP -Overall work on the base accelerated servers (ATI and 8514/A), and Mach64 -server. -.TP 8 -Rik Faith, \fIfaith@cs.unc.edu\fP -Overall work on the base accelerated servers (ATI and 8514/A). -.TP 8 -Tiago Gons, \fItiago@comosjn.hobby.nl\fP -Mach8 and 8514/A server development -.TP 8 -Hans Nasten, \fInasten@everyware.se\fP -Mach8, 8514/A, and S3 server development and BSD/386 support -.TP 8 -Mike Bernson, \fImike@mbsun.mlb.org\fP -Mach32 server development. -.TP 8 -Mark Weaver, \fIMark_Weaver@brown.edu\fP -Mach32 server development. -.TP 8 -Craig Groeschel, \fIcraig@metrolink.com\fP -Mach32 server development. -.TP 8 -Henry Worth, \fIHenry.Worth@amail.amdahl.com\fP -AGX server. -.TP 8 -Erik Nygren, \fInygren@mit.edu\fP -P9000 server. -.TP 8 -Harry Langenbacher \fIharry@brain.jpl.nasa.gov\fP -P9000 server. -.TP 8 -Chris Mason, \fImason@mail.csh.rit.edu\fP -P9000 server. -.TP 8 -Henrik Harmsen \fIharmsen@eritel.se\fP -P9000 server. -.TP 8 -Simon Cooper, \fIscooper@vizlab.rutgers.edu\fP -Cirrus accelerated code (based on work by Bill Reynolds). -.TP 8 -Harm Hanemaayer, \fIhhanemaa@cs.ruu.nl\fP -Cirrus accelerated code, and ARK driver. -.TP 8 -Thomas Zerucha, \fIzerucha@shell.portal.com\fP -Support for Cirrus CL-GD7543. -.TP 8 -Leon Bottou, \fIbottou@laforia.ibp.fr\fP -ARK driver. -.TP 8 -Mike Tierney, \fIfloyd@eng.umd.edu\fP -WD accelerated code. -.TP 8 -Bill Conn, \fIconn@bnr.ca\fP -WD accelerated code. -.TP 8 -Brad Bosch, \fIbrad@lachman.com\fP -WD 90C24A support. -.TP 8 -Alan Hourihane, \fIalanh@fairlite.demon.co.uk\fP -Trident SVGA driver, SiS SVGA driver and DEC 21030 server. -.TP 8 -Marc Aurele La France, \fItsi@ualberta.ca\fP -ATI SVGA driver -.TP 8 -Steve Goldman, \fIsgoldman@encore.com\fP -Oak 067/077 SVGA driver. -.TP 8 -Jorge Delgado, \fIernar@dit.upm.es\fP -Oak SVGA driver, and 087 accelerated code. -.TP 8 -Bill Conn, \fIconn@bnr.ca\fP -WD accelerated code. -.TP 8 -Paolo Severini, \fIlendl@dist.dist.unige.it\fP -AL2101 SVGA driver -.TP 8 -Ching-Tai Chiu, \fIcchiu@netcom.com\fP -Avance Logic ALI SVGA driver -.TP 8 -Manfred Brands, \fImb@oceonics.nl\fP -Cirrus 64xx SVGA driver -.TP 8 -Randy Hendry, \fIrandy@sgi.com\fP -Cirrus 6440 support in the cl64xx SVGA driver -.TP 8 -Frank Dikker, \fIdikker@cs.utwente.nl\fP -MX SVGA driver -.TP 8 -Regis Cridlig, \fIcridlig@dmi.ens.fr\fP -Chips & Technologies driver -.TP 8 -Jon Block, \fIblock@frc.com\fP -Chips & Technologies driver -.TP 8 -Mike Hollick, \fIhollick@graphics.cis.upenn.edu\fP -Chips & Technologies driver -.TP 8 -Nozomi Ytow -Chips & Technologies driver -.TP 8 -Egbert Eich, \fIEgbert.Eich@Physik.TH-Darmstadt.DE\fP -Chips & Technologies driver -.TP 8 -David Bateman, \fIdbateman@ee.uts.edu.au\fP -Chips & Technologies driver -.TP 8 -Xavier Ducoin, \fIxavier@rd.lectra.fr\fP -Chips & Technologies driver -.TP 8 -Peter Trattler, \fIpeter@sbox.tu-graz.ac.at\fP -RealTek SVGA driver -.TP 8 -Craig Struble, \fIcstruble@acm.vt.edu\fP -Video7 SVGA driver -.TP 8 -Gertjan Akkerman, \fIakkerman@dutiba.twi.tudelft.nl\fP -16 colour VGA server, and XF86Config parser. -.TP 8 -Davor Matic, \fIdmatic@Athena.MIT.EDU\fP -Hercules driver. -.TP 8 -Pascal Haible, \fIhaible@izfm.uni-stuttgart.de\fP -Banked monochrome VGA support, Hercules support, and mono frame buffer -support for dumb monochrome devices -.TP 8 -Martin Schaller, -.TP 8 -Geert Uytterhoeven,\fIGeert.Uytterhoeven@cs.kuleuven.ac.be\fP -Linux/m68k Frame Buffer Device driver -.TP 8 -Andreas Schwab, \fIschwab@issan.informatik.uni-dortmund.de\fP -Linux/m68k Frame Buffer Device driver -.TP 8 -Guenther Kelleter, \fIguenther@Pool.Informatik.RWTH-Aachen.de\fP -Linux/m68k Frame Buffer Device driver -.TP 8 -Frederic Lepied, \fLepied@XFree86.Org\fP -XInput extension integration. Wacom, joystick and extended mouse drivers. -.TP 8 -Patrick Lecoanet, \flecoanet@cena.dgac.fr\fP -Elographics touchscreen driver. -.TP 8 -Steven Lang, \ftiger@tyger.org\fP -SummaSketch tablet driver. -.PP - ... and many more people out there on the net who helped with beta-testing -this enhancement. -.PP -\fIXFree86\fP source is available from the FTP server -\fIftp.XFree86.org\fP, among others. Send email to -\fIXFree86@XFree86.org\fP for details. -.\" $XConsortium: XFree86.man /main/25 1996/12/09 17:33:22 kaleb $ Index: xc/programs/Xserver/hw/xfree86/xf86Version.h diff -u xc/programs/Xserver/hw/xfree86/xf86Version.h:3.420 xc/programs/Xserver/hw/xfree86/xf86Version.h:3.428 --- xc/programs/Xserver/hw/xfree86/xf86Version.h:3.420 Wed Mar 8 16:30:31 2000 +++ xc/programs/Xserver/hw/xfree86/xf86Version.h Wed Mar 8 16:30:31 2000 @@ -1,11 +1,11 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/xf86Version.h,v 3.420 2000/02/21 18:05:40 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/xf86Version.h,v 3.428 2000/03/08 15:14:43 dawes Exp $ */ -#define XF86_VERSION " 3.9.18 " +#define XF86_VERSION " 4.0 " /* The finer points in versions... */ -#define XF86_VERSION_MAJOR 3 -#define XF86_VERSION_MINOR 9 -#define XF86_VERSION_SUBMINOR 18 +#define XF86_VERSION_MAJOR 4 +#define XF86_VERSION_MINOR 0 +#define XF86_VERSION_SUBMINOR 0 #define XF86_VERSION_BETA 0 /* 0="", 1="A", 2="B", etc... */ #define XF86_VERSION_ALPHA 0 /* 0="", 1="a", 2="b", etc... */ @@ -18,6 +18,6 @@ XF86_VERSION_BETA, \ XF86_VERSION_ALPHA) -#define XF86_DATE "21 February 2000" +#define XF86_DATE "8 March 2000" /* $XConsortium: xf86Version.h /main/78 1996/10/28 05:42:10 kaleb $ */ Index: xc/programs/Xserver/hw/xfree86/SuperProbe/AsmMacros.h diff -u xc/programs/Xserver/hw/xfree86/SuperProbe/AsmMacros.h:3.15 xc/programs/Xserver/hw/xfree86/SuperProbe/AsmMacros.h:3.16 --- xc/programs/Xserver/hw/xfree86/SuperProbe/AsmMacros.h:3.15 Wed Mar 8 16:30:31 2000 +++ xc/programs/Xserver/hw/xfree86/SuperProbe/AsmMacros.h Wed Mar 8 16:30:32 2000 @@ -57,7 +57,7 @@ * */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/SuperProbe/AsmMacros.h,v 3.15 2000/02/12 20:45:13 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/SuperProbe/AsmMacros.h,v 3.16 2000/02/22 01:00:15 mvojkovi Exp $ */ #if defined(__GNUC__) #if defined(linux) && defined(__alpha__) @@ -67,6 +67,11 @@ #define outb(p,v) _outb((v),(p)) #define outw(p,v) _outw((v),(p)) #define outl(p,v) _outl((v),(p)) +#elif defined(linux) && defined(__ia64__) +#include +#include +#include +#include #else #if defined(__sparc__) #ifndef ASI_PL Index: xc/programs/Xserver/hw/xfree86/SuperProbe/OS_SYSV.c diff -u xc/programs/Xserver/hw/xfree86/SuperProbe/OS_SYSV.c:3.20 xc/programs/Xserver/hw/xfree86/SuperProbe/OS_SYSV.c:3.21 --- xc/programs/Xserver/hw/xfree86/SuperProbe/OS_SYSV.c:3.20 Sat Sep 25 10:36:59 1999 +++ xc/programs/Xserver/hw/xfree86/SuperProbe/OS_SYSV.c Wed Mar 8 16:30:32 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/SuperProbe/OS_SYSV.c,v 3.20 1999/09/25 14:36:59 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/SuperProbe/OS_SYSV.c,v 3.21 2000/02/29 22:39:32 dawes Exp $ */ /* * (c) Copyright 1993,1994 by David Wexelblat * @@ -88,7 +88,7 @@ #ifdef __STDC__ int sysi86(int, ...); int syscall(int, ...); -#ifndef SCO +#if !defined(SCO) && !defined(SVR4) int munmap(caddr_t, size_t); #endif #else Index: xc/programs/Xserver/hw/xfree86/SuperProbe/PatchLevel.h diff -u xc/programs/Xserver/hw/xfree86/SuperProbe/PatchLevel.h:3.25 xc/programs/Xserver/hw/xfree86/SuperProbe/PatchLevel.h:3.26 --- xc/programs/Xserver/hw/xfree86/SuperProbe/PatchLevel.h:3.25 Sat Sep 25 10:37:00 1999 +++ xc/programs/Xserver/hw/xfree86/SuperProbe/PatchLevel.h Wed Mar 8 16:30:32 2000 @@ -26,10 +26,10 @@ * */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/SuperProbe/PatchLevel.h,v 3.25 1999/09/25 14:37:00 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/SuperProbe/PatchLevel.h,v 3.26 2000/03/08 19:23:25 dawes Exp $ */ #define VERSION 2 -#define PATCHLEV 21 -#define RELDATE "1999 September 9" +#define PATCHLEV 22 +#define RELDATE "2000 March 6" #define PRINT_VERSION printf("\n%s Version %d.%d (%s)\n", \ MyName,VERSION,PATCHLEV,RELDATE) Index: xc/programs/Xserver/hw/xfree86/SuperProbe/Probe.h diff -u xc/programs/Xserver/hw/xfree86/SuperProbe/Probe.h:3.72 xc/programs/Xserver/hw/xfree86/SuperProbe/Probe.h:3.73 --- xc/programs/Xserver/hw/xfree86/SuperProbe/Probe.h:3.72 Wed Mar 8 16:30:32 2000 +++ xc/programs/Xserver/hw/xfree86/SuperProbe/Probe.h Wed Mar 8 16:30:32 2000 @@ -26,7 +26,7 @@ * */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/SuperProbe/Probe.h,v 3.72 2000/02/12 20:45:14 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/SuperProbe/Probe.h,v 3.73 2000/02/22 01:00:15 mvojkovi Exp $ */ /* * Includes @@ -45,6 +45,10 @@ #endif /* MACH386 */ #include #if defined(SYSV) || defined(SVR4) || defined(linux) || defined(__QNX__) || defined(__QNXNTO__) +#if defined(__ia64__) +#include +#include +#endif # include #if !(defined(__QNX__) && !defined(__QNXNTO__)) # include Index: xc/programs/Xserver/hw/xfree86/common/Imakefile diff -u xc/programs/Xserver/hw/xfree86/common/Imakefile:3.112 xc/programs/Xserver/hw/xfree86/common/Imakefile:3.114 --- xc/programs/Xserver/hw/xfree86/common/Imakefile:3.112 Wed Mar 8 16:30:42 2000 +++ xc/programs/Xserver/hw/xfree86/common/Imakefile Wed Mar 8 16:30:42 2000 @@ -4,7 +4,7 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/common/Imakefile,v 3.112 2000/02/12 20:45:17 dawes Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/common/Imakefile,v 3.114 2000/02/24 05:36:48 tsi Exp $ @@ -148,9 +148,8 @@ -I$(SERVERSRC)/Xi -I$(XF86SRC)/ddc -I$(XF86SRC)/i2c \ -I$(FONTLIBSRC)/include -I$(XF86SRC) -I$(XF86PARSERSRC) \ -I$(XF86SRC)/loader $(VGAINCLUDES) -I$(XF86SRC)/rac \ - -I$(XF86SRC)/scanpci - - + -I$(XF86SRC)/scanpci -I$(XF86OSSRC)/vbe -I$(XF86SRC)/int10 \ + -I$(XF86SRC)/ddc OSNAME = OSName OSVENDOR = OSVendor @@ -158,7 +157,11 @@ CONSDEFINES = XFree86ConsoleDefines EXP_DEFINES = -DEXPIRY_TIME=XF86ServerExpiry $(EXP_FORCE_DEFINES) PROJECTROOT = ProjectRoot -XCONFIGDEFINES = -DPROJECTROOT='"$(PROJECTROOT)"' + DRIVERS = XF86CardDrivers + IDRIVERS = mouse XInputDrivers +XCONFIGDEFINES = -DPROJECTROOT='"$(PROJECTROOT)"' \ + -DDRIVERS='"$(DRIVERS)"' \ + -DIDRIVERS='"$(IDRIVERS)"' #if defined(SunArchitecture) && defined(SVR4Architecture) && OSMinorVersion >= 8 OSDEFINES = -DSOL8 Index: xc/programs/Xserver/hw/xfree86/common/compiler.h diff -u xc/programs/Xserver/hw/xfree86/common/compiler.h:3.55 xc/programs/Xserver/hw/xfree86/common/compiler.h:3.58 --- xc/programs/Xserver/hw/xfree86/common/compiler.h:3.55 Wed Mar 8 16:30:42 2000 +++ xc/programs/Xserver/hw/xfree86/common/compiler.h Wed Mar 8 16:30:42 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/common/compiler.h,v 3.55 2000/02/21 18:05:44 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/common/compiler.h,v 3.58 2000/03/05 16:59:10 dawes Exp $ */ /* * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany. * @@ -362,6 +362,34 @@ #else /* ECOFF gas 2.6 doesn't know "wmb" :-( */ #define write_mem_barrier() mem_barrier() #endif + + +#elif defined(linux) && defined(__ia64__) +#define inline __inline__ + +#include +#include +#include +#include +#include + +#define ldq_u(p) __uldq(p) +#define ldl_u(p) __uldl(p) +#define ldw_u(p) __uldw(p) +#define stq_u(v,p) __ustq(v,p) +#define stl_u(v,p) __ustl(v,p) +#define stw_u(v,p) __ustw(v,p) + +#define mem_barrier() __asm__ __volatile__ ("mf" ::: "memory") +#define write_mem_barrier() __asm__ __volatile__ ("mf" ::: "memory") + +#undef outb +#undef outw +#undef outl + +#define outb(a,b) _outb(b,a) +#define outw(a,b) _outw(b,a) +#define outl(a,b) _outl(b,a) #elif (defined(linux) || defined(Lynx)) && defined(__sparc__) Index: xc/programs/Xserver/hw/xfree86/common/xf86.h diff -u xc/programs/Xserver/hw/xfree86/common/xf86.h:3.128 xc/programs/Xserver/hw/xfree86/common/xf86.h:3.131 --- xc/programs/Xserver/hw/xfree86/common/xf86.h:3.128 Wed Mar 8 16:30:43 2000 +++ xc/programs/Xserver/hw/xfree86/common/xf86.h Wed Mar 8 16:30:43 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86.h,v 3.128 2000/02/21 19:22:51 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86.h,v 3.131 2000/03/02 23:15:03 tsi Exp $ */ /* * Copyright (c) 1997 by The XFree86 Project, Inc. @@ -23,9 +23,7 @@ /* General parameters */ extern int xf86DoConfigure; -extern int FoundPciCards; -extern pciVideoPtr ConfiguredPciCard; -extern int ConfiguredIsaCard; +extern Bool xf86DoConfigurePass1; extern int xf86ScreenIndex; /* Index into pScreen.devPrivates */ extern int xf86CreateRootWindowIndex; /* Index into pScreen.devPrivates */ extern int xf86PixmapIndex; @@ -123,6 +121,9 @@ Bool xf86QueueAsyncEvent(void (*func)(pointer),pointer arg); #endif +/* xf86Configure.c */ +GDevPtr xf86AddDeviceToConfigure(const char *driver, pciVideoPtr pVideo, + int chipset); /* xf86Cursor.c */ Index: xc/programs/Xserver/hw/xfree86/common/xf86Bus.c diff -u xc/programs/Xserver/hw/xfree86/common/xf86Bus.c:1.43 xc/programs/Xserver/hw/xfree86/common/xf86Bus.c:1.44 --- xc/programs/Xserver/hw/xfree86/common/xf86Bus.c:1.43 Wed Mar 8 16:30:43 2000 +++ xc/programs/Xserver/hw/xfree86/common/xf86Bus.c Wed Mar 8 16:30:43 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Bus.c,v 1.43 2000/02/12 23:59:09 eich Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Bus.c,v 1.44 2000/03/05 23:47:44 dawes Exp $ */ /* * Copyright (c) 1997-1999 by The XFree86 Project, Inc. */ @@ -2357,15 +2357,15 @@ needRAC = TRUE; #ifdef XFree86LOADER - ErrorF("do I need RAC?\n"); + xf86MsgVerb(X_INFO, 3, "do I need RAC?"); if (needRAC) { - ErrorF(" Yes, I do.\n"); + xf86ErrorFVerb(3, " Yes, I do.\n"); if (!xf86LoadOneModule("rac",NULL)) FatalError("Cannot load RAC module\n"); } else - ErrorF(" No, I don't.\n"); + xf86ErrorFVerb(3, " No, I don't.\n"); #endif xf86MsgVerb(X_INFO, 3, "resource ranges after preInit:\n"); Index: xc/programs/Xserver/hw/xfree86/common/xf86Bus.h diff -u xc/programs/Xserver/hw/xfree86/common/xf86Bus.h:1.12 xc/programs/Xserver/hw/xfree86/common/xf86Bus.h:1.13 --- xc/programs/Xserver/hw/xfree86/common/xf86Bus.h:1.12 Wed Mar 8 16:30:43 2000 +++ xc/programs/Xserver/hw/xfree86/common/xf86Bus.h Wed Mar 8 16:30:43 2000 @@ -1,5 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Bus.h,v 1.12 2000/02/12 23:59:09 eich Exp $ */ -#define DEBUG +/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Bus.h,v 1.13 2000/03/05 17:04:10 dawes Exp $ */ /* * Copyright (c) 1997 by The XFree86 Project, Inc. */ Index: xc/programs/Xserver/hw/xfree86/common/xf86Config.c diff -u xc/programs/Xserver/hw/xfree86/common/xf86Config.c:3.209 xc/programs/Xserver/hw/xfree86/common/xf86Config.c:3.214 --- xc/programs/Xserver/hw/xfree86/common/xf86Config.c:3.209 Wed Mar 8 16:30:43 2000 +++ xc/programs/Xserver/hw/xfree86/common/xf86Config.c Wed Mar 8 16:30:43 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Config.c,v 3.209 2000/02/18 00:47:35 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Config.c,v 3.214 2000/03/08 05:38:36 dawes Exp $ */ /* @@ -50,15 +50,19 @@ "%E," "%F," \ "/etc/X11/%F," "%P/etc/X11/%F," \ "%D/%X," \ - "/etc/X11/%X," "/etc/%X," "%P/etc/X11/%X.%H," \ - "%P/etc/X11/%X," "%P/lib/X11/%X.%H," \ + "/etc/X11/%X-%M," "/etc/X11/%X," "/etc/%X," \ + "%P/etc/X11/%X.%H," "%P/etc/X11/%X-%M," \ + "%P/etc/X11/%X," \ + "%P/lib/X11/%X.%H," "%P/lib/X11/%X-%M," \ "%P/lib/X11/%X" #endif #ifndef USER_CONFIGPATH #define USER_CONFIGPATH "/etc/X11/%S," "%P/etc/X11/%S," \ "/etc/X11/%G," "%P/etc/X11/%G," \ - "/etc/X11/%X," "/etc/%X," "%P/etc/X11/%X.%H," \ - "%P/etc/X11/%X," "%P/lib/X11/%X.%H," \ + "/etc/X11/%X-%M," "/etc/X11/%X," "/etc/%X," \ + "%P/etc/X11/%X.%H," "%P/etc/X11/%X-%M," \ + "%P/etc/X11/%X," \ + "%P/lib/X11/%X.%H," "%P/lib/X11/%X-%M," \ "%P/lib/X11/%X" #endif #ifndef PROJECTROOT @@ -242,6 +246,8 @@ optarray[count] = NULL; if (optlist) *optlist = optarray; + else + xfree(optarray); return modulearray; } @@ -380,6 +386,134 @@ /* + * Generate a compiled-in list of driver names. This is used to produce a + * consistent probe order. For the loader server, we also look for vendor- + * provided modules, pre-pending them to our own list. + */ +static char ** +GenerateDriverlist(char * dirname, char * drivernames) +{ + char *cp, **driverlist; + int count; + + /* Count the number needed */ + count = 0; + cp = drivernames; + while (*cp) { + while (*cp && isspace(*cp)) cp++; + if (!*cp) break; + count++; + while (*cp && !isspace(*cp)) cp++; + } + + if (!count) + return NULL; + + /* Now allocate the array of pointers to 0-terminated driver names */ + driverlist = (char **)xnfalloc((count + 1) * sizeof(char *)); + count = 0; + cp = drivernames; + while (*cp) { + while (*cp && isspace(*cp)) cp++; + if (!*cp) break; + driverlist[count++] = cp; + while (*cp && !isspace(*cp)) cp++; + if (!*cp) break; + *cp++ = 0; + } + driverlist[count] = NULL; + +#ifdef XFree86LOADER + { + const char *subdirs[] = {NULL, NULL}; + static const char *patlist[] = {"(.*)_drv\\.so", "(.*)_drv\\.o", NULL}; + char **dlist, **clist, **dcp, **ccp; + + subdirs[0] = dirname; + + /* Get module list */ + dlist = LoaderListDirs(subdirs, patlist); + if (!dlist) { + xfree(driverlist); + return NULL; /* No modules, no list */ + } + + clist = driverlist; + + /* The resulting list cannot be longer than the module list */ + for (dcp = dlist, count = 0; *dcp++; count++); + driverlist = (char **)xnfalloc((count + 1) * sizeof(char *)); + + /* First, add modules not in compiled-in list */ + for (count = 0, dcp = dlist; *dcp; dcp++) { + for (ccp = clist; ; ccp++) { + if (!*ccp) { + driverlist[count++] = *dcp; + break; + } + if (!strcmp(*ccp, *dcp)) + break; + } + } + + /* Next, add compiled-in names that are also modules */ + for (ccp = clist; *ccp; ccp++) { + for (dcp = dlist; *dcp; dcp++) { + if (!strcmp(*ccp, *dcp)) { + driverlist[count++] = *ccp; + break; + } + } + } + + driverlist[count++] = NULL; + xfree(clist); + xfree(dlist); + driverlist = xnfrealloc(driverlist, count * sizeof(char *)); + } +#endif /* XFree86LOADER */ + + return driverlist; +} + + +char ** +xf86DriverlistFromCompile(void) +{ + static char **driverlist = NULL; + static Bool generated = FALSE; + + /* This string is modified in-place */ + static char drivernames[] = DRIVERS; + + if (!generated) { + generated = TRUE; + driverlist = GenerateDriverlist("drivers", drivernames); + } + + return driverlist; +} + + +char ** +xf86InputDriverlistFromCompile(void) +{ + static char **driverlist = NULL; + static Bool generated = FALSE; + + /* This string is modified in-place */ + static char drivernames[] = IDRIVERS; + + if (!generated) { + generated = TRUE; + driverlist = GenerateDriverlist("input", drivernames); + } + + return driverlist; +} + + +/* * xf86ConfigError -- * Print a READABLE ErrorMessage!!! All information that is * available is printed. @@ -573,6 +707,8 @@ {0}, FALSE }, { FLAG_PIXMAP, "Pixmap", OPTV_INTEGER, {0}, FALSE }, + { FLAG_PC98, "PC98", OPTV_BOOLEAN, + {0}, FALSE }, { FLAG_ESTIMATE_SIZES_AGGRESSIVELY,"EstimateSizesAggressively",OPTV_INTEGER, {0}, FALSE }, { FLAG_NOPM, "NoPM", OPTV_BOOLEAN, @@ -671,6 +807,10 @@ xf86Info.pciFlags = PCIForceConfig1; if (xf86IsOptionSet(FlagOptions, FLAG_PCIFORCECONFIG2)) xf86Info.pciFlags = PCIForceConfig2; + /* + * XXX This should be handled like a proper boolean option -- see further + * above for examples. + */ if (xf86IsOptionSet(FlagOptions, FLAG_NOPM)) xf86Info.pmFlag = FALSE; else @@ -1174,7 +1314,6 @@ } } -#define LAYOUT_DEBUG #ifdef LAYOUT_DEBUG ErrorF("Layout \"%s\"\n", conf_layout->lay_identifier); for (i = 0; i < count; i++) { @@ -1662,9 +1801,6 @@ xf86Msg(X_CONFIG, "|-->Inactive Device \"%s\"\n", conf_device->dev_identifier); - /* - * some things (like clocks) are missing here - */ devicep->identifier = conf_device->dev_identifier; devicep->vendor = conf_device->dev_vendor; devicep->board = conf_device->dev_board; Index: xc/programs/Xserver/hw/xfree86/common/xf86Config.h diff -u xc/programs/Xserver/hw/xfree86/common/xf86Config.h:1.4 xc/programs/Xserver/hw/xfree86/common/xf86Config.h:1.5 --- xc/programs/Xserver/hw/xfree86/common/xf86Config.h:1.4 Wed May 5 10:29:51 1999 +++ xc/programs/Xserver/hw/xfree86/common/xf86Config.h Wed Mar 8 16:30:43 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Config.h,v 1.4 1999/05/05 14:29:51 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Config.h,v 1.5 2000/02/24 05:36:50 tsi Exp $ */ /* * Copyright 1997 by The XFree86 Project, Inc */ @@ -18,7 +18,9 @@ */ char ** xf86ModulelistFromConfig(pointer **); char ** xf86DriverlistFromConfig(void); +char ** xf86DriverlistFromCompile(void); char ** xf86InputDriverlistFromConfig(void); +char ** xf86InputDriverlistFromCompile(void); Bool xf86BuiltinInputDriver(const char *); Bool xf86HandleConfigFile(void); Index: xc/programs/Xserver/hw/xfree86/common/xf86Configure.c diff -u xc/programs/Xserver/hw/xfree86/common/xf86Configure.c:3.15 xc/programs/Xserver/hw/xfree86/common/xf86Configure.c:3.27 --- xc/programs/Xserver/hw/xfree86/common/xf86Configure.c:3.15 Wed Mar 8 16:30:43 2000 +++ xc/programs/Xserver/hw/xfree86/common/xf86Configure.c Wed Mar 8 16:30:43 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Configure.c,v 3.15 2000/02/18 00:47:36 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Configure.c,v 3.27 2000/03/04 03:58:05 dawes Exp $ */ /* * Copyright 2000 by Alan Hourihane, Sychdyn, North Wales. * @@ -33,35 +33,47 @@ #include "loaderProcs.h" #endif #include "xf86.h" +#include "xf86Config.h" #include "xf86Priv.h" #include "xf86PciInfo.h" #include "xf86Parser.h" #include "xf86tokens.h" #include "Configint.h" +#include "vbe.h" +#include "xf86DDC.h" -pciVideoPtr ConfiguredPciCard; -int ConfiguredIsaCard; -int FoundPciCards = 0; -static int haveVGA = -1; -Bool havePrimary = FALSE; +typedef struct _DevToConfig { + GDevRec GDev; + pciVideoPtr pVideo; + int iDriver; +} DevToConfigRec, *DevToConfigPtr; + +static DevToConfigPtr DevToConfig = NULL; +static int nDevToConfig = 0, CurrentDriver; + +xf86MonPtr ConfiguredMonitor; +Bool xf86DoConfigurePass1 = TRUE; +Bool foundMouse = FALSE; static void -GetPciCard(int id, int *vendor1, int *vendor2, int *card) +GetPciCard(int vendor, int chipType, int *vendor1, int *vendor2, int *card) { int k, j; + k = 0; while (xf86PCIVendorNameInfo[k].token) { - if (xf86PCIVendorNameInfo[k].token == ConfiguredPciCard[id].vendor) + if (xf86PCIVendorNameInfo[k].token == vendor) { *vendor1 = k; + break; + } k++; } k = 0; while(xf86PCIVendorInfo[k].VendorID) { - if (xf86PCIVendorInfo[k].VendorID == ConfiguredPciCard[id].vendor) { + if (xf86PCIVendorInfo[k].VendorID == vendor) { j = 0; while (xf86PCIVendorInfo[k].Device[j].DeviceName) { - if (xf86PCIVendorInfo[k].Device[j].DeviceID == - ConfiguredPciCard[id].chipType) { + if (xf86PCIVendorInfo[k].Device[j].DeviceID == chipType) { *vendor2 = k; *card = j; break; @@ -74,23 +86,115 @@ } } -XF86ConfInputPtr +/* + * This is called by the driver, either through xf86Match???Instances() or + * directly. We allocate a GDevRec and fill it in as much as we can, letting + * the caller fill in the rest and/or change it as it sees fit. + */ +GDevPtr +xf86AddDeviceToConfigure(const char *driver, pciVideoPtr pVideo, int chipset) +{ + int busType, i, j; + + if (xf86DoProbe || !xf86DoConfigure || !xf86DoConfigurePass1) + return NULL; + + /* Check for duplicates */ + if (pVideo) { + for (i = 0; i < nDevToConfig; i++) + if ((DevToConfig[i].pVideo->bus == pVideo->bus) && + (DevToConfig[i].pVideo->device == pVideo->device) && + (DevToConfig[i].pVideo->func == pVideo->func)) + return NULL; + } else { + /* + * This needs to be revisited as it doesn't allow for non-PCI + * multihead. + */ + if (!xf86IsPrimaryIsa()) + return NULL; + for (i = 0; i < nDevToConfig; i++) + if (!DevToConfig[i].pVideo) + return NULL; + } + + /* Allocate new structure occurrence */ + i = nDevToConfig++; + DevToConfig = + xnfrealloc(DevToConfig, nDevToConfig * sizeof(DevToConfigRec)); + memset(DevToConfig + i, 0, sizeof(DevToConfigRec)); + +# define NewDevice DevToConfig[i] + + NewDevice.GDev.chipID = NewDevice.GDev.chipRev = NewDevice.GDev.irq = -1; + + NewDevice.iDriver = CurrentDriver; + NewDevice.pVideo = pVideo; + + /* Fill in what we know, converting the driver name to lower case */ + NewDevice.GDev.driver = xnfalloc(strlen(driver) + 1); + for (j = 0; (NewDevice.GDev.driver[j] = tolower(driver[j])); j++); + + if (pVideo) { + int vendor1, vendor2, card; + + GetPciCard(pVideo->vendor, pVideo->chipType, + &vendor1, &vendor2, &card); + +# define VendorName xf86PCIVendorNameInfo[vendor1].name +# define CardName xf86PCIVendorInfo[vendor2].Device[card].DeviceName + + NewDevice.GDev.identifier = + xnfalloc(strlen(VendorName) + strlen(CardName) + 2); + sprintf(NewDevice.GDev.identifier, "%s %s", VendorName, CardName); + + NewDevice.GDev.vendor = (char *)VendorName; + NewDevice.GDev.board = CardName; + + NewDevice.GDev.busID = xnfalloc(16); + sprintf(NewDevice.GDev.busID, "PCI:%d:%d:%d", + pVideo->bus, pVideo->device, pVideo->func); + + NewDevice.GDev.chipID = pVideo->chipType; + NewDevice.GDev.chipRev = pVideo->chipRev; + +# undef VendorName +# undef CardName + + busType = BUS_PCI; + if (chipset < 0) + chipset = (pVideo->vendor << 16) || pVideo->chipType; + } else { + NewDevice.GDev.identifier = "ISA Adapter"; + NewDevice.GDev.busID = "ISA"; + busType = BUS_ISA; + } + + /* Get driver's available options */ + if (xf86DriverList[CurrentDriver]->AvailableOptions) + NewDevice.GDev.options = + (*xf86DriverList[CurrentDriver]->AvailableOptions)(chipset, + busType); + + return &NewDevice.GDev; + +# undef NewDevice +} + +static XF86ConfInputPtr configureInputSection (void) { XF86ConfInputPtr mouse = NULL; - Bool foundMouse = FALSE; parsePrologue (XF86ConfInputPtr, XF86ConfInputRec) - ptr->inp_identifier = "Keyboard1"; + ptr->inp_identifier = "Keyboard0"; ptr->inp_driver = "keyboard"; ptr->list.next = NULL; -/* -ErrorF("Supported Mice are : 0x%x\n",SupportedInterfaces()); -*/ /* Crude mechanism to auto-detect mouse (os dependent) */ { int fd; + fd = open("/dev/mouse", 0); if (fd != -1) { foundMouse = TRUE; @@ -98,23 +202,20 @@ } } - if (foundMouse) { - mouse = xf86confmalloc(sizeof(XF86ConfInputRec)); - memset((XF86ConfInputPtr)mouse,0,sizeof(XF86ConfInputRec)); - mouse->inp_identifier = "Mouse1"; - mouse->inp_driver = "mouse"; - mouse->list.next = NULL; - mouse->inp_option_lst = + mouse = xf86confmalloc(sizeof(XF86ConfInputRec)); + memset((XF86ConfInputPtr)mouse,0,sizeof(XF86ConfInputRec)); + mouse->inp_identifier = "Mouse0"; + mouse->inp_driver = "mouse"; + mouse->inp_option_lst = addNewOption(mouse->inp_option_lst, "Protocol", "auto"); - mouse->inp_option_lst = + mouse->inp_option_lst = addNewOption(mouse->inp_option_lst, "Device", "/dev/mouse"); - ptr = (XF86ConfInputPtr)addListItem((glp)ptr, (glp)mouse); - } + ptr = (XF86ConfInputPtr)addListItem((glp)ptr, (glp)mouse); return ptr; } -XF86ConfDRIPtr +static XF86ConfDRIPtr configureDRISection (void) { parsePrologue (XF86ConfDRIPtr, XF86ConfDRIRec) @@ -122,162 +223,81 @@ return ptr; } -XF86ConfVendorPtr +static XF86ConfVendorPtr configureVendorSection (void) { parsePrologue (XF86ConfVendorPtr, XF86ConfVendorRec) - ptr->vnd_identifier = "Vendor1"; - + return NULL; +#if 0 return ptr; +#endif } -XF86ConfScreenPtr -configureScreenSection (char *driver) +static XF86ConfScreenPtr +configureScreenSection (int screennum) { - pciVideoPtr xf86PciCard; - int i = 0; - int vendor1, vendor2, card; + int i; + int depths[] = { 1, 4, 8, 15, 16, 24 }; parsePrologue (XF86ConfScreenPtr, XF86ConfScreenRec) - ptr->scrn_identifier = "Screen1"; - ptr->scrn_monitor_str = "Monitor1"; - - xf86PciCard = ConfiguredPciCard; - for (i = 0; i < FoundPciCards; i++) { - if (xf86IsPrimaryPci(xf86PciCard)) { - havePrimary = TRUE; - GetPciCard(i, &vendor1, &vendor2, &card); - ptr->scrn_device_str = xalloc( - strlen(xf86PCIVendorNameInfo[vendor1].name) + - strlen(xf86PCIVendorInfo[vendor2].Device[card].DeviceName) + 2); - sprintf(ptr->scrn_device_str, "%s %s", - xf86PCIVendorNameInfo[vendor1].name, - xf86PCIVendorInfo[vendor2].Device[card].DeviceName); - } - xf86PciCard++; - } - if (xf86IsPrimaryIsa()) { - havePrimary = TRUE; - ptr->scrn_device_str = "ISA Card"; - } - - /* Make sure we use depth 4 for vga driver and depth 8 for direct */ - /* Just to get a usable 640x480 display */ - if ((driver == NULL) && (haveVGA != -1)) - ptr->scrn_defaultdepth = 4; - else - ptr->scrn_defaultdepth = 8; + ptr->scrn_identifier = xf86confmalloc(18); + sprintf(ptr->scrn_identifier, "Screen%d", screennum); + ptr->scrn_monitor_str = xf86confmalloc(19); + sprintf(ptr->scrn_monitor_str, "Monitor%d", screennum); + ptr->scrn_device_str = strdup(DevToConfig[screennum].GDev.identifier); + for (i=0; i<6; i++) { XF86ConfDisplayPtr display; - display = xf86confmalloc(sizeof(XF86ConfDisplayRec)); - memset((XF86ConfDisplayPtr)display,0,sizeof(XF86ConfDisplayRec)); - /* Make sure we use depth 4 for vga driver and depth 8 for direct */ - /* Just to get a usable 640x480 display */ - if ((driver == NULL) && (haveVGA != -1)) - display->disp_depth = 4; - else - display->disp_depth = 8; - display->disp_mode_lst = - display->list.next = NULL; - ptr->scrn_display_lst = (XF86ConfDisplayPtr)addListItem( - (glp)ptr->scrn_display_lst, (glp)display); - { - XF86ModePtr mode; - mode = xf86confmalloc(sizeof(XF86ModeRec)); - memset((XF86ModePtr)mode,0,sizeof(XF86ModeRec)); - mode->mode_name = "640x480"; - mode->list.next = NULL; - display->disp_mode_lst = (XF86ModePtr)addListItem( - (glp)display->disp_mode_lst, (glp)mode); - } - } - { - XF86ConfDisplayPtr display; display = xf86confmalloc(sizeof(XF86ConfDisplayRec)); memset((XF86ConfDisplayPtr)display,0,sizeof(XF86ConfDisplayRec)); - display->disp_depth = 15; - display->disp_mode_lst = - display->list.next = NULL; + display->disp_depth = depths[i]; ptr->scrn_display_lst = (XF86ConfDisplayPtr)addListItem( (glp)ptr->scrn_display_lst, (glp)display); - { - XF86ModePtr mode; - mode = xf86confmalloc(sizeof(XF86ModeRec)); - memset((XF86ModePtr)mode,0,sizeof(XF86ModeRec)); - mode->mode_name = "640x480"; - mode->list.next = NULL; - display->disp_mode_lst = (XF86ModePtr)addListItem( - (glp)display->disp_mode_lst, (glp)mode); - } - } - - { - XF86ConfDisplayPtr display; - display = xf86confmalloc(sizeof(XF86ConfDisplayRec)); - memset((XF86ConfDisplayPtr)display,0,sizeof(XF86ConfDisplayRec)); - display->disp_depth = 16; - display->disp_mode_lst = - display->list.next = NULL; - ptr->scrn_display_lst = (XF86ConfDisplayPtr)addListItem( - (glp)ptr->scrn_display_lst, (glp)display); - { - XF86ModePtr mode; - mode = xf86confmalloc(sizeof(XF86ModeRec)); - memset((XF86ModePtr)mode,0,sizeof(XF86ModeRec)); - mode->mode_name = "640x480"; - mode->list.next = NULL; - display->disp_mode_lst = (XF86ModePtr)addListItem( - (glp)display->disp_mode_lst, (glp)mode); - } - } - - { - XF86ConfDisplayPtr display; - display = xf86confmalloc(sizeof(XF86ConfDisplayRec)); - memset((XF86ConfDisplayPtr)display,0,sizeof(XF86ConfDisplayRec)); - display->disp_depth = 24; - display->disp_mode_lst = - display->list.next = NULL; - ptr->scrn_display_lst = (XF86ConfDisplayPtr)addListItem( - (glp)ptr->scrn_display_lst, (glp)display); - { - XF86ModePtr mode; - mode = xf86confmalloc(sizeof(XF86ModeRec)); - memset((XF86ModePtr)mode,0,sizeof(XF86ModeRec)); - mode->mode_name = "640x480"; - mode->list.next = NULL; - display->disp_mode_lst = (XF86ModePtr)addListItem( - (glp)display->disp_mode_lst, (glp)mode); - } } return ptr; } -XF86ConfDevicePtr -configureDeviceSection (char *driver, OptionInfoPtr devoptions) +static XF86ConfDevicePtr +configureDeviceSection (int screennum) { OptionInfoPtr p; - pciVideoPtr xf86PciCard; int i = 0; - int vendor1, vendor2, card; Bool foundFBDEV = FALSE; parsePrologue (XF86ConfDevicePtr, XF86ConfDeviceRec) - ptr->dev_driver = driver; - ptr->dev_chipid = -1; - ptr->dev_chiprev = -1; - ptr->dev_irq = -1; + /* Move device info to parser structure */ + ptr->dev_identifier = DevToConfig[screennum].GDev.identifier; + ptr->dev_vendor = DevToConfig[screennum].GDev.vendor; + ptr->dev_board = DevToConfig[screennum].GDev.board; + ptr->dev_chipset = DevToConfig[screennum].GDev.chipset; + ptr->dev_busid = DevToConfig[screennum].GDev.busID; + ptr->dev_driver = DevToConfig[screennum].GDev.driver; + ptr->dev_ramdac = DevToConfig[screennum].GDev.ramdac; + for (i = 0; (i < MAXDACSPEEDS) && (i < CONF_MAXDACSPEEDS); i++) + ptr->dev_dacSpeeds[i] = DevToConfig[screennum].GDev.dacSpeeds[i]; + ptr->dev_videoram = DevToConfig[screennum].GDev.videoRam; + ptr->dev_textclockfreq = DevToConfig[screennum].GDev.textClockFreq; + ptr->dev_bios_base = DevToConfig[screennum].GDev.BiosBase; + ptr->dev_mem_base = DevToConfig[screennum].GDev.MemBase; + ptr->dev_io_base = DevToConfig[screennum].GDev.IOBase; + ptr->dev_clockchip = DevToConfig[screennum].GDev.clockchip; + for (i = 0; (i < MAXCLOCKS) && (i < DevToConfig[screennum].GDev.numclocks); i++) + ptr->dev_clock[i] = DevToConfig[screennum].GDev.clock[i]; + ptr->dev_clocks = i; + ptr->dev_chipid = DevToConfig[screennum].GDev.chipID; + ptr->dev_chiprev = DevToConfig[screennum].GDev.chipRev; + ptr->dev_irq = DevToConfig[screennum].GDev.irq; /* Make sure older drivers don't segv */ - if (devoptions != NULL) { + if (DevToConfig[screennum].GDev.options) { /* Fill in the available driver options for people to use */ - ptr->dev_comment = xalloc(32 + 1); + ptr->dev_comment = xnfalloc(32 + 1); strcpy(ptr->dev_comment, "Available Driver options are:-\n"); - for (p = devoptions; p->name != NULL; p++) { + for (p = DevToConfig[screennum].GDev.options; p->name != NULL; p++) { ptr->dev_comment = xrealloc(ptr->dev_comment, strlen(ptr->dev_comment) + strlen(p->name) + 24 + 1); strcat(ptr->dev_comment, " #Option \""); @@ -286,38 +306,12 @@ } } - xf86PciCard = ConfiguredPciCard; - for (i = 0; i < FoundPciCards; i++) { - ErrorF("Card Found vendor = 0x%x, card = 0x%x, %s\n", - xf86PciCard->vendor, - xf86PciCard->chipType,(xf86IsPrimaryPci(xf86PciCard) ? - "Primary! - Configuring this one." : "Secondary.")); - if (xf86IsPrimaryPci(xf86PciCard)) { - havePrimary = TRUE; - GetPciCard(i, &vendor1, &vendor2, &card); - ptr->dev_identifier = xalloc( - strlen(xf86PCIVendorNameInfo[vendor1].name) + - strlen(xf86PCIVendorInfo[vendor2].Device[card].DeviceName) + 2); - sprintf(ptr->dev_identifier, "%s %s", - xf86PCIVendorNameInfo[vendor1].name, - xf86PCIVendorInfo[vendor2].Device[card].DeviceName); - ptr->dev_busid = xalloc(9 + 1); - sprintf(ptr->dev_busid, "PCI:%d:%d:%d", xf86PciCard->bus, - xf86PciCard->device, xf86PciCard->func); - } - xf86PciCard++; - } - if (xf86IsPrimaryIsa()) { - havePrimary = TRUE; - ptr->dev_identifier = "ISA Card"; - ptr->dev_busid = "ISA"; - } - /* Crude mechanism to auto-detect fbdev (os dependent) */ /* Skip it for now. Options list it anyway, and we can't * determine which screen/driver this belongs too anyway. { int fd; + fd = open("/dev/fb0", 0); if (fd != -1) { foundFBDEV = TRUE; @@ -327,6 +321,7 @@ if (foundFBDEV) { XF86OptionPtr fbdev; + fbdev = xf86confmalloc(sizeof(XF86OptionRec)); memset((XF86OptionPtr)fbdev,0,sizeof(XF86OptionRec)); fbdev->opt_name = "UseFBDev"; @@ -339,47 +334,15 @@ return ptr; } -XF86ConfLayoutPtr +static XF86ConfLayoutPtr configureLayoutSection (void) { pciVideoPtr xf86PciCard; int i = 0; - int vendor1, vendor2, card; + int scrnum = 0; parsePrologue (XF86ConfLayoutPtr, XF86ConfLayoutRec) - xf86PciCard = ConfiguredPciCard; - for (i = 0; i < FoundPciCards; i++) { - if (xf86IsPrimaryPci(xf86PciCard)) { - havePrimary = TRUE; - GetPciCard(i, &vendor1, &vendor2, &card); - ptr->lay_identifier = xalloc( - strlen(xf86PCIVendorNameInfo[vendor1].name) + - strlen(xf86PCIVendorInfo[vendor2].Device[card].DeviceName) + 2); - sprintf(ptr->lay_identifier, "%s %s", - xf86PCIVendorNameInfo[vendor1].name, - xf86PCIVendorInfo[vendor2].Device[card].DeviceName); - } - xf86PciCard++; - } - if (xf86IsPrimaryIsa()) { - havePrimary = TRUE; - ptr->lay_identifier = "ISA Card"; - } - - { - XF86ConfAdjacencyPtr aptr; - - aptr = xf86confmalloc (sizeof (XF86ConfAdjacencyRec)); - aptr->list.next = NULL; - aptr->adj_x = 0; - aptr->adj_y = 0; - aptr->adj_refscreen = NULL; - aptr->adj_scrnum = 1; - aptr->adj_screen_str = "Screen1"; - aptr->adj_where = CONF_ADJ_ABSOLUTE; - ptr->lay_adjacency_lst = (XF86ConfAdjacencyPtr) - addListItem ((glp) ptr->lay_adjacency_lst, (glp) aptr); - } + ptr->lay_identifier = "XFree86 Configured"; { XF86ConfInputrefPtr iptr; @@ -387,7 +350,7 @@ iptr = xf86confmalloc (sizeof (XF86ConfInputrefRec)); iptr->list.next = NULL; iptr->iref_option_lst = NULL; - iptr->iref_inputdev_str = "Mouse1"; + iptr->iref_inputdev_str = "Mouse0"; iptr->iref_option_lst = addNewOption (iptr->iref_option_lst, "CorePointer", NULL); ptr->lay_input_lst = (XF86ConfInputrefPtr) @@ -400,17 +363,34 @@ iptr = xf86confmalloc (sizeof (XF86ConfInputrefRec)); iptr->list.next = NULL; iptr->iref_option_lst = NULL; - iptr->iref_inputdev_str = "Keyboard1"; + iptr->iref_inputdev_str = "Keyboard0"; iptr->iref_option_lst = addNewOption (iptr->iref_option_lst, "CoreKeyboard", NULL); ptr->lay_input_lst = (XF86ConfInputrefPtr) addListItem ((glp) ptr->lay_input_lst, (glp) iptr); } + for (scrnum = 0; scrnum < nDevToConfig; scrnum++) { + XF86ConfAdjacencyPtr aptr; + + aptr = xf86confmalloc (sizeof (XF86ConfAdjacencyRec)); + aptr->list.next = NULL; + aptr->adj_x = 0; + aptr->adj_y = 0; + aptr->adj_refscreen = 0; + aptr->adj_scrnum = 0; + aptr->adj_screen_str = xnfalloc(18); + sprintf(aptr->adj_screen_str, "Screen%d", scrnum); + aptr->adj_where = CONF_ADJ_ABSOLUTE; + ptr->lay_adjacency_lst = + (XF86ConfAdjacencyPtr)addListItem((glp)ptr->lay_adjacency_lst, + (glp)aptr); + } + return ptr; } -XF86ConfModesPtr +static XF86ConfModesPtr configureModesSection (void) { parsePrologue (XF86ConfModesPtr, XF86ConfModesRec) @@ -418,7 +398,7 @@ return ptr; } -XF86ConfVideoAdaptorPtr +static XF86ConfVideoAdaptorPtr configureVideoAdaptorSection (void) { parsePrologue (XF86ConfVideoAdaptorPtr, XF86ConfVideoAdaptorRec) @@ -429,7 +409,7 @@ #endif } -XF86ConfFlagsPtr +static XF86ConfFlagsPtr configureFlagsSection (void) { parsePrologue (XF86ConfFlagsPtr, XF86ConfFlagsRec) @@ -437,11 +417,11 @@ return ptr; } -XF86ConfModulePtr +static XF86ConfModulePtr configureModuleSection (void) { - char **elist, **el; #ifdef XFree86LOADER + char **elist, **el; /* Find the list of extension modules. */ const char *esubdirs[] = { "extensions", @@ -455,19 +435,21 @@ if (elist) { for (el = elist; *el; el++) { XF86LoadPtr module; + module = xf86confmalloc(sizeof(XF86LoadRec)); memset((XF86LoadPtr)module,0,sizeof(XF86LoadRec)); module->load_name = *el; ptr->mod_load_lst = (XF86LoadPtr)addListItem( (glp)ptr->mod_load_lst, (glp)module); } + xfree(elist); } #endif return ptr; } -XF86ConfFilesPtr +static XF86ConfFilesPtr configureFilesSection (void) { parsePrologue (XF86ConfFilesPtr, XF86ConfFilesRec) @@ -475,22 +457,54 @@ return ptr; } -XF86ConfMonitorPtr -configureMonitorSection (void) +static XF86ConfMonitorPtr +configureMonitorSection (int screennum) { parsePrologue (XF86ConfMonitorPtr, XF86ConfMonitorRec) - ptr->mon_identifier = "Monitor1"; - ptr->mon_vendor = "Monitor Vendor"; - ptr->mon_modelname = "Monitor Model"; - - /* Set monitor for allowable 640x480@25MHz */ - ptr->mon_n_hsync = 1; - ptr->mon_hsync[0].lo = 28; - ptr->mon_hsync[0].hi = 33; - ptr->mon_n_vrefresh = 1; - ptr->mon_vrefresh[0].lo = 43; - ptr->mon_vrefresh[0].hi = 72; + ptr->mon_identifier = xf86confmalloc(19); + sprintf(ptr->mon_identifier, "Monitor%d", screennum); + ptr->mon_vendor = strdup("Monitor Vendor"); + ptr->mon_modelname = strdup("Monitor Model"); + + return ptr; +} + +static XF86ConfMonitorPtr +configureDDCMonitorSection (int screennum) +{ + int i = 0; + parsePrologue (XF86ConfMonitorPtr, XF86ConfMonitorRec) + + ptr->mon_identifier = xf86confmalloc(19); + sprintf(ptr->mon_identifier, "Monitor%d", screennum); + ptr->mon_vendor = strdup(ConfiguredMonitor->vendor.name); + ptr->mon_modelname = xf86confmalloc(12); + sprintf(ptr->mon_modelname, "%x", ConfiguredMonitor->vendor.prod_id); + + for (i=0;i<4;i++) { + switch (ConfiguredMonitor->det_mon[i].type) { + case DT: + case DS_STD_TIMINGS: + case DS_WHITE_P: + case DS_NAME: + case DS_ASCII_STR: + case DS_SERIAL: + break; + case DS_RANGES: + ptr->mon_n_hsync = 1; + ptr->mon_hsync[0].lo = + ConfiguredMonitor->det_mon[i].section.ranges.min_h; + ptr->mon_hsync[0].hi = + ConfiguredMonitor->det_mon[i].section.ranges.max_h; + ptr->mon_n_vrefresh = 1; + ptr->mon_vrefresh[0].lo = + ConfiguredMonitor->det_mon[i].section.ranges.min_v; + ptr->mon_vrefresh[0].hi = + ConfiguredMonitor->det_mon[i].section.ranges.max_v; + break; + } + } return ptr; } @@ -498,164 +512,84 @@ void DoConfigure() { - int i; - Bool probeResultPci = FALSE; - Bool probeResultIsa = FALSE; - char *foundDriver = NULL; + int i,j, screennum = -1; char *home = NULL; char *filename = NULL; - OptionInfoPtr options = NULL; XF86ConfigPtr xf86config = NULL; - char **vlist, **ilist, **vl, **il; + char **vlist, **vl; -#ifdef XFree86LOADER - /* Find the list of video driver modules. */ - const char *vsubdirs[] = { - "drivers", - NULL - }; - const char *isubdirs[] = { - "input", - NULL - }; + vlist = xf86DriverlistFromCompile(); - vlist = LoaderListDirs(vsubdirs, NULL); - ilist = LoaderListDirs(isubdirs, NULL); - if (vlist) { - ErrorF("List of video driver modules:\n"); - for (vl = vlist; *vl; vl++) - ErrorF("\t%s\n", *vl); - } else { - ErrorF("No video driver modules found\n"); - } - if (ilist) { - ErrorF("List of input modules:\n"); - for (il = ilist; *il; il++) - ErrorF("\t%s\n", *il); - } else { - ErrorF("No input modules found\n"); + if (!vlist) { + ErrorF("Missing output drivers. Configuration failed.\n"); + goto bail; } + ErrorF("List of video drivers:\n"); + for (vl = vlist; *vl; vl++) + ErrorF("\t%s\n", *vl); + +#ifdef XFree86LOADER /* Load all the drivers that were found. */ xf86LoadModules(vlist, NULL); - xf86LoadModules(ilist, NULL); -#endif +#endif /* XFree86LOADER */ + + xfree(vlist); /* Disable PCI devices */ + xf86ResourceBrokerInit(); xf86AccessInit(); xf86FindPrimaryDevice(); - vl = vlist; + /* Create XF86Config file structure */ + xf86config = malloc(sizeof(XF86ConfigRec)); + memset ((XF86ConfigPtr)xf86config, 0, sizeof(XF86ConfigRec)); + xf86config->conf_device_lst = NULL; + xf86config->conf_screen_lst = NULL; + xf86config->conf_monitor_lst = NULL; + /* Call all of the probe functions, reporting the results. */ - for (i = 0; i < xf86NumDrivers; i++) { - probeResultPci = FALSE; - probeResultIsa = FALSE; - - /* We don't allow vga as we want direct support */ - /* Then fallback later if no driver found */ - if (strcmp(*vl,"vga")) { - if (xf86DriverList[i]->Probe != NULL) - probeResultPci = xf86DriverList[i]->Probe(xf86DriverList[i], - PROBE_DETECTPCI); - if (!probeResultPci) - probeResultIsa = xf86DriverList[i]->Probe(xf86DriverList[i], - PROBE_DETECTISA); - - } else { - haveVGA = i; - } + for (CurrentDriver = 0; CurrentDriver < xf86NumDrivers; CurrentDriver++) { - /* Bail when we find the primary card ! */ - if (probeResultPci) { - ErrorF("We have found a PCI %s driver\n",*vl); - if (foundDriver == NULL) { - foundDriver = *vl; - if (xf86DriverList[i]->Identify != NULL) - xf86DriverList[i]->Identify(0); - if (xf86DriverList[i]->AvailableOptions != NULL) - options = xf86DriverList[i]->AvailableOptions( - (ConfiguredPciCard->vendor << 16) | - ConfiguredPciCard->chipType, BUS_PCI); - } - } else - if (probeResultIsa) { - ErrorF("We have found an ISA %s driver\n",*vl); - if (foundDriver == NULL) { - foundDriver = *vl; - if (xf86DriverList[i]->Identify != NULL) - xf86DriverList[i]->Identify(0); - if (xf86DriverList[i]->AvailableOptions != NULL) - options = xf86DriverList[i]->AvailableOptions( - ConfiguredIsaCard, BUS_ISA); - } - } + if (xf86DriverList[CurrentDriver]->Probe == NULL) continue; - vl++; + if ((*xf86DriverList[CurrentDriver]->Probe)( + xf86DriverList[CurrentDriver], PROBE_DETECT) && + xf86DriverList[CurrentDriver]->Identify) + (*xf86DriverList[CurrentDriver]->Identify)(0); } - /* Try vga driver if we haven't found any direct modules */ - if ((haveVGA != -1) && (foundDriver == NULL)) { - probeResultPci = FALSE; - probeResultIsa = FALSE; - - if (xf86DriverList[haveVGA]->Probe != NULL) { - probeResultPci = - xf86DriverList[haveVGA]->Probe(xf86DriverList[haveVGA], - PROBE_DETECTPCI); - if (!probeResultPci) - xf86DriverList[haveVGA]->Probe(xf86DriverList[haveVGA], - PROBE_DETECTISA); - } - - /* Bail when we find the primary card ! */ - if (probeResultPci) { - ErrorF("Failed to find a direct driver but....\n"); - ErrorF("We have found a PCI vga driver\n"); - foundDriver = "vga"; - if (xf86DriverList[haveVGA]->Identify != NULL) - xf86DriverList[haveVGA]->Identify(0); - if (xf86DriverList[haveVGA]->AvailableOptions != NULL) - options = xf86DriverList[i]->AvailableOptions(( - ConfiguredPciCard->vendor << 16) | - ConfiguredPciCard->chipType, BUS_PCI); - } - if (probeResultIsa) { - ErrorF("Failed to find a direct driver but....\n"); - ErrorF("We have found an ISA vga driver\n"); - foundDriver = "vga"; - if (xf86DriverList[haveVGA]->Identify != NULL) - xf86DriverList[haveVGA]->Identify(0); - if (xf86DriverList[haveVGA]->AvailableOptions != NULL) - options = xf86DriverList[i]->AvailableOptions( - ConfiguredIsaCard, BUS_ISA); - } + if (nDevToConfig <= 0) { + ErrorF("No devices to configure. Configuration failed.\n"); + goto bail; } - if ((haveVGA == -1) && (foundDriver == NULL)) { - ErrorF("Unable to configure XFree86 - no able drivers found.\n"); - goto bail; + /* Add device, monitor and screen sections for detected devices */ + for (screennum = 0; screennum < nDevToConfig; screennum++) { + XF86ConfDevicePtr DevicePtr; + XF86ConfMonitorPtr MonitorPtr; + XF86ConfScreenPtr ScreenPtr; + + DevicePtr = configureDeviceSection(screennum); + xf86config->conf_device_lst = (XF86ConfDevicePtr)addListItem( + (glp)xf86config->conf_device_lst, (glp)DevicePtr); + MonitorPtr = configureMonitorSection(screennum); + xf86config->conf_monitor_lst = (XF86ConfMonitorPtr)addListItem( + (glp)xf86config->conf_monitor_lst, (glp)MonitorPtr); + ScreenPtr = configureScreenSection(screennum); + xf86config->conf_screen_lst = (XF86ConfScreenPtr)addListItem( + (glp)xf86config->conf_screen_lst, (glp)ScreenPtr); } - /* Let's write the config file now ! */ - xf86config = malloc(sizeof(XF86ConfigRec)); - memset ((XF86ConfigPtr)xf86config, 0, sizeof(XF86ConfigRec)); - xf86config->conf_monitor_lst = configureMonitorSection(); xf86config->conf_files = configureFilesSection(); xf86config->conf_modules = configureModuleSection(); xf86config->conf_flags = configureFlagsSection(); xf86config->conf_videoadaptor_lst = configureVideoAdaptorSection(); xf86config->conf_modes_lst = configureModesSection(); - xf86config->conf_layout_lst = configureLayoutSection(); - xf86config->conf_device_lst = configureDeviceSection(foundDriver, options); - xf86config->conf_screen_lst = configureScreenSection(foundDriver); xf86config->conf_vendor_lst = configureVendorSection(); xf86config->conf_dri = configureDRISection(); xf86config->conf_input_lst = configureInputSection(); - - if (!havePrimary) { - ErrorF("Unable to configure XFree86 - Primary card driver not found.\n"); - goto bail; - } + xf86config->conf_layout_lst = configureLayoutSection(); if (!(home = getenv("HOME"))) home = "/"; @@ -677,17 +611,76 @@ xf86WriteConfigFile(filename, xf86config); - ErrorF("\nXFree86 has configured your server for your primary card\n"); - ErrorF("\nYour XF86Config file is located in %s\n",home); - ErrorF("\nTo test the server, type 'cd ' to take you back to\n"); - ErrorF("Your home directory. Then type 'XFree86 -xf86config XF86Config.new'\n"); + xf86DoConfigurePass1 = FALSE; + /* Try to get DDC information filled in */ + xf86ConfigFile = filename; + if (!xf86HandleConfigFile()) { + goto bail; + } -bail: -#ifdef XFree86LOADER - LoaderFreeDirList(vlist); - LoaderFreeDirList(ilist); -#endif /* XFree86LOADER */ + xf86DoConfigurePass1 = FALSE; + + for (screennum = 0; screennum < nDevToConfig; screennum++) { + i = DevToConfig[screennum].iDriver; + (*xf86DriverList[i]->Probe)(xf86DriverList[i], 0); + + xf86SetPciVideo(NULL,NONE); + } + + xf86PostProbe(); + xf86EntityInit(); + + for (j = 0; j < xf86NumScreens; j++) { + xf86Screens[j]->scrnIndex = j; + } + + freeMonitorList(xf86config->conf_monitor_lst); + xf86config->conf_monitor_lst = NULL; + freeScreenList(xf86config->conf_screen_lst); + xf86config->conf_screen_lst = NULL; + for (j = 0; j < xf86NumScreens; j++) { + XF86ConfMonitorPtr MonitorPtr; + XF86ConfScreenPtr ScreenPtr; + + ConfiguredMonitor = NULL; + + xf86EnableAccess(xf86Screens[j]); + if ((*xf86Screens[j]->PreInit)(xf86Screens[j], PROBE_DETECT) && + ConfiguredMonitor) { + MonitorPtr = configureDDCMonitorSection(j); + } else { + MonitorPtr = configureMonitorSection(j); + } + ScreenPtr = configureScreenSection(j); + xf86config->conf_monitor_lst = (XF86ConfMonitorPtr)addListItem( + (glp)xf86config->conf_monitor_lst, (glp)MonitorPtr); + xf86config->conf_screen_lst = (XF86ConfScreenPtr)addListItem( + (glp)xf86config->conf_screen_lst, (glp)ScreenPtr); + } + + xf86WriteConfigFile(filename, xf86config); + + ErrorF("\n"); + + if (!foundMouse) { + ErrorF("\nXFree86 is not able to detect your mouse.\n" + "Edit the file and correct the Device.\n"); + } else { + ErrorF("\nXFree86 detected your mouse at device /dev/mouse.\n" + "Please check your config if the mouse is still not\n" + "operational, as by default XFree86 tries to autodetect\n" + "the protocol.\n"); + } + + if (xf86NumScreens > 1) { + ErrorF("\nXFree86 has configured a multihead system, please check your config.\n"); + } + + ErrorF("\nYour XF86Config file is %s\n\n", filename); + ErrorF("To test the server, run 'XFree86 -xf86config %s'\n\n", filename); + +bail: OsCleanup(); AbortDDX(); fflush(stderr); Index: xc/programs/Xserver/hw/xfree86/common/xf86DoProbe.c diff -u xc/programs/Xserver/hw/xfree86/common/xf86DoProbe.c:1.7 xc/programs/Xserver/hw/xfree86/common/xf86DoProbe.c:1.9 --- xc/programs/Xserver/hw/xfree86/common/xf86DoProbe.c:1.7 Wed Mar 8 16:30:44 2000 +++ xc/programs/Xserver/hw/xfree86/common/xf86DoProbe.c Wed Mar 8 16:30:44 2000 @@ -1,5 +1,5 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86DoProbe.c,v 1.7 2000/02/18 17:16:25 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86DoProbe.c,v 1.9 2000/03/01 16:00:51 tsi Exp $ */ /* * finish setting up the server * Load the driver modules and call their probe functions. @@ -15,7 +15,8 @@ #include "os.h" #ifdef XFree86LOADER #include "loaderProcs.h" -#endif +#include "xf86Config.h" +#endif /* XFree86LOADER */ #include "xf86.h" #include "xf86Priv.h" @@ -28,22 +29,13 @@ DoProbe() { int i; - Bool probeResultISA, probeResultPCI, probeResultFBDEV; + Bool probeResult; #ifdef XFree86LOADER /* Find the list of video driver modules. */ - char **list, **l; - const char *subdirs[] = { - "drivers", - NULL - }; - const char *patlist[] = { - "(.*)_drv\\.so", - "(.*)_drv\\.o", - NULL - }; + char **list = xf86DriverlistFromCompile(); + char **l; - list = LoaderListDirs(subdirs, NULL); if (list) { ErrorF("List of video driver modules:\n"); for (l = list; *l; l++) @@ -61,37 +53,20 @@ /* Call all of the probe functions, reporting the results. */ for (i = 0; i < xf86NumDrivers; i++) { - probeResultISA = probeResultPCI = probeResultFBDEV = FALSE; - if (xf86DriverList[i]->Probe != NULL) { - probeResultISA = - xf86DriverList[i]->Probe(xf86DriverList[i], PROBE_DETECTISA); - ErrorF("Probe ISA capabilities in driver `%s' returns %s\n", - xf86DriverList[i]->driverName, BOOLTOSTRING(probeResultISA)); - } - if (xf86DriverList[i]->Probe != NULL) { - probeResultPCI = - xf86DriverList[i]->Probe(xf86DriverList[i], PROBE_DETECTPCI); - ErrorF("Probe PCI capabilities in driver `%s' returns %s\n", - xf86DriverList[i]->driverName, BOOLTOSTRING(probeResultPCI)); - } - if (xf86DriverList[i]->Probe != NULL) { - probeResultFBDEV = - xf86DriverList[i]->Probe(xf86DriverList[i], PROBE_DETECTFBDEV); - ErrorF("Probe FBDEV capabilities in driver `%s' returns %s\n", - xf86DriverList[i]->driverName, BOOLTOSTRING(probeResultFBDEV)); - } + if (xf86DriverList[i]->Probe == NULL) continue; + + probeResult = + (*xf86DriverList[i]->Probe)(xf86DriverList[i], PROBE_DETECT); + ErrorF("Probe in driver `%s' returns %s\n", + xf86DriverList[i]->driverName, BOOLTOSTRING(probeResult)); /* If we have a result, then call driver's Identify function */ - if (probeResultISA || probeResultPCI || probeResultFBDEV) { + if (probeResult) { if (xf86DriverList[i]->Identify != NULL) { - xf86DriverList[i]->Identify(0); + (*xf86DriverList[i]->Identify)(0); } } } - -#ifdef XFree86LOADER - LoaderFreeDirList(list); -#endif /* XFree86LOADER */ OsCleanup(); AbortDDX(); Index: xc/programs/Xserver/hw/xfree86/common/xf86DoScanPci.c diff -u xc/programs/Xserver/hw/xfree86/common/xf86DoScanPci.c:1.10 xc/programs/Xserver/hw/xfree86/common/xf86DoScanPci.c:1.11 --- xc/programs/Xserver/hw/xfree86/common/xf86DoScanPci.c:1.10 Wed Mar 8 16:30:44 2000 +++ xc/programs/Xserver/hw/xfree86/common/xf86DoScanPci.c Wed Mar 8 16:30:44 2000 @@ -1,5 +1,5 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86DoScanPci.c,v 1.10 2000/02/21 20:34:30 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86DoScanPci.c,v 1.11 2000/02/24 05:36:50 tsi Exp $ */ /* * finish setting up the server * call the functions from the scanpci module @@ -27,9 +27,11 @@ void DoScanPci(int argc, char **argv, int i) { int j,skip,globalVerbose,scanpciVerbose; - void (*xf86ScanPciFunc)(int); - void (*DataSetupFunc)(SymTabPtr *, pciVendorDeviceInfo **, - pciVendorCardInfo **); + typedef void ScanPciFuncType(int); + typedef void DataSetupFuncType(SymTabPtr *, pciVendorDeviceInfo **, + pciVendorCardInfo **); + ScanPciFuncType *xf86ScanPciFunc; + DataSetupFuncType *DataSetupFunc; #ifdef XFree86LOADER int errmaj, errmin; #endif @@ -80,8 +82,8 @@ /* For now, just a warning */ xf86Msg(X_WARNING, "Some symbols could not be resolved!\n"); } - xf86ScanPciFunc = LoaderSymbol("xf86DisplayPCICardInfo"); - DataSetupFunc = LoaderSymbol("xf86SetupScanPci"); + xf86ScanPciFunc = (ScanPciFuncType *)LoaderSymbol("xf86DisplayPCICardInfo"); + DataSetupFunc = (DataSetupFuncType *)LoaderSymbol("xf86SetupScanPci"); #else xf86ScanPciFunc = xf86DisplayPCICardInfo; DataSetupFunc = xf86SetupScanPci; Index: xc/programs/Xserver/hw/xfree86/common/xf86Globals.c diff -u xc/programs/Xserver/hw/xfree86/common/xf86Globals.c:1.27 xc/programs/Xserver/hw/xfree86/common/xf86Globals.c:1.28 --- xc/programs/Xserver/hw/xfree86/common/xf86Globals.c:1.27 Wed Mar 8 16:30:44 2000 +++ xc/programs/Xserver/hw/xfree86/common/xf86Globals.c Wed Mar 8 16:30:44 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Globals.c,v 1.27 2000/01/25 00:18:28 alanh Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Globals.c,v 1.28 2000/03/08 05:38:37 dawes Exp $ */ /* * Copyright (c) 1997 by The XFree86 Project, Inc. @@ -133,10 +133,12 @@ FALSE, /* miscModInDevAllowNonLocal */ PCIProbe1, /* pciFlags */ Pix24DontCare, /* pixmap24 */ - X_DEFAULT /* pix24From */ + X_DEFAULT, /* pix24From */ #if defined(i386) || defined(__i386__) - ,FALSE /* pc98 */ + FALSE, /* pc98 */ #endif + TRUE, /* pmFlag */ + 0 /* estimateSizesAggressively */ }; const char *xf86ConfigFile = NULL; const char *xf86ModulePath = DEFAULT_MODULE_PATH; Index: xc/programs/Xserver/hw/xfree86/common/xf86Helper.c diff -u xc/programs/Xserver/hw/xfree86/common/xf86Helper.c:1.76 xc/programs/Xserver/hw/xfree86/common/xf86Helper.c:1.83 --- xc/programs/Xserver/hw/xfree86/common/xf86Helper.c:1.76 Wed Mar 8 16:30:44 2000 +++ xc/programs/Xserver/hw/xfree86/common/xf86Helper.c Wed Mar 8 16:30:44 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Helper.c,v 1.76 2000/02/21 19:22:52 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Helper.c,v 1.83 2000/03/06 19:07:15 dawes Exp $ */ /* * Copyright (c) 1997-1998 by The XFree86 Project, Inc. @@ -137,6 +137,7 @@ xf86Screens[i]->CurrentAccess = &xf86CurrentAccess; xf86Screens[i]->resourceType = MEM_IO; +#ifdef DEBUG /* OOps -- What's this ? */ ErrorF("xf86AllocateScreen - xf86Screens[%d]->pScreen = %p\n", i, xf86Screens[i]->pScreen ); @@ -144,6 +145,7 @@ ErrorF("xf86Screens[%d]->pScreen->CreateWindow = %p\n", i, xf86Screens[i]->pScreen->CreateWindow ); } +#endif return xf86Screens[i]; } @@ -1448,8 +1450,12 @@ static int count[MAXDRIVERS]; confScreenPtr screensecptr; int i,j; + + *driversectlist = NULL; -if (xf86DoProbe || xf86DoConfigure) return 1; + if (xf86DoProbe) return 1; + + if (xf86DoConfigure && xf86DoConfigurePass1) return 1; /* * This is a very important function that matches the device sections @@ -1554,7 +1560,6 @@ return count[i]; } -#define DEBUG struct Inst { pciVideoPtr pci; GDevPtr dev; @@ -1603,6 +1608,7 @@ instances[allocatedInstances - 1].claimed = FALSE; instances[allocatedInstances - 1].foundHW = TRUE; instances[allocatedInstances - 1].chip = id->numChipset; + numFound++; } } } @@ -1618,6 +1624,7 @@ instances[allocatedInstances - 1].claimed = FALSE; instances[allocatedInstances - 1].foundHW = TRUE; instances[allocatedInstances - 1].chip = id->numChipset; + numFound++; } } } @@ -1639,6 +1646,7 @@ instances[allocatedInstances - 1].chip = id->numChipset; instances[allocatedInstances - 1].foundHW = TRUE; + numFound++; break; } } @@ -1654,28 +1662,30 @@ xfree(instances); return 0; } - if (xf86DoProbe) return 1; - if (xf86DoConfigure) { - pciVideoPtr ConfCard; + if (xf86DoProbe) { + xfree(instances); + return numFound; + } + + if (xf86DoConfigure && xf86DoConfigurePass1) { + GDevPtr pGDev; int actualcards = 0; - ConfiguredPciCard = xnfrealloc((pciVideoPtr)ConfiguredPciCard, sizeof(pciVideoRec) * (allocatedInstances + FoundPciCards)); - ConfCard = ConfiguredPciCard; - for (i = 0; i < FoundPciCards; i++) - ConfCard++; for (i = 0; i < allocatedInstances; i++) { if (instances[i].foundHW) { actualcards++; - pPci = instances[i].pci; - ConfCard->vendor = pPci->vendor; - ConfCard->chipType = pPci->chipType; - ConfCard->device = pPci->device; - ConfCard->bus = pPci->bus; - ConfCard->func = pPci->func; - ConfCard++; + pGDev = xf86AddDeviceToConfigure(driverName, + instances[i].pci, -1); + if (pGDev) { + /* + * XF86Match???Instances() treat chipID and chipRev as + * overrides, so clobber them here. + */ + pGDev->chipID = pGDev->chipRev = -1; + } } } - FoundPciCards += actualcards; + xfree(instances); return actualcards; } @@ -1815,6 +1825,7 @@ * Of the claimed instances, check that another driver hasn't already * claimed its slot. */ + numFound = 0; for (i = 0; i < allocatedInstances && numClaimedInstances > 0; i++) { if (!instances[i].claimed) @@ -1836,7 +1847,6 @@ pPci->func,drvp, instances[i].chip, instances[i].dev,instances[i].dev->active ? TRUE : FALSE); - } xfree(instances); if (numFound > 0) { @@ -1856,25 +1866,24 @@ IsaChipsets *Chips; int i; int numFound = 0; + int foundChip = -1; int *retEntities = NULL; *foundEntities = NULL; - /* For now, bail here when xf86DoProbe is set. */ - if (xf86DoProbe) + if (xf86DoProbe || (xf86DoConfigure && xf86DoConfigurePass1)) { + if (FindIsaDevice && + ((foundChip = (*FindIsaDevice)(NULL)) != -1)) { + xf86AddDeviceToConfigure(driverName, NULL, foundChip); + return 1; + } return 0; - - if (xf86DoConfigure) { - if (FindIsaDevice) ConfiguredIsaCard = (*FindIsaDevice)(NULL); - if (ConfiguredIsaCard != -1) return 1; - else return 0; } for (i = 0; i < numDevs; i++) { MessageType from = X_CONFIG; GDevPtr dev = NULL; GDevPtr devBus = NULL; - int foundChip = -1; if (devList[i]->busID && *devList[i]->busID) { if (xf86ParseIsaBusString(devList[i]->busID)) { @@ -2545,8 +2554,10 @@ PropertyPtr pNewProp, pRegProp; int i; -ErrorF("xf86RegisterRootWindowProperty(%d, %d, %d, %d, %d, %p)\n", - ScrnIndex, property, type, format, len, value); +#ifdef DEBUG + ErrorF("xf86RegisterRootWindowProperty(%d, %d, %d, %d, %d, %p)\n", + ScrnIndex, property, type, format, len, value); +#endif if (ScrnIndex<0 || ScrnIndex>=xf86NumScreens) { return(BadMatch); @@ -2566,11 +2577,15 @@ */ pNewProp->next = NULL; +#ifdef DEBUG ErrorF("new property filled\n"); +#endif if (NULL==xf86RegisteredPropertiesTable) { +#ifdef DEBUG ErrorF("creating xf86RegisteredPropertiesTable[] size %d\n", xf86NumScreens); +#endif if ( NULL==(xf86RegisteredPropertiesTable=(PropertyPtr*)xnfcalloc(sizeof(PropertyPtr),xf86NumScreens) )) { return(BadAlloc); } @@ -2579,22 +2594,28 @@ } } +#ifdef DEBUG ErrorF("xf86RegisteredPropertiesTable %p\n", xf86RegisteredPropertiesTable); ErrorF("xf86RegisteredPropertiesTable[%d] %p\n", ScrnIndex, xf86RegisteredPropertiesTable[ScrnIndex]); +#endif if ( xf86RegisteredPropertiesTable[ScrnIndex] == NULL) { xf86RegisteredPropertiesTable[ScrnIndex] = pNewProp; } else { pRegProp = xf86RegisteredPropertiesTable[ScrnIndex]; while (pRegProp->next != NULL) { +#ifdef DEBUG ErrorF("- next %p\n", pRegProp); +#endif pRegProp = pRegProp->next; } pRegProp->next = pNewProp; } -ErrorF("xf86RegisterRootWindowProperty succeeded\n"); +#ifdef DEBUG + ErrorF("xf86RegisterRootWindowProperty succeeded\n"); +#endif return(Success); } @@ -2613,5 +2634,3 @@ return TRUE; } } - - Index: xc/programs/Xserver/hw/xfree86/common/xf86Init.c diff -u xc/programs/Xserver/hw/xfree86/common/xf86Init.c:3.152 xc/programs/Xserver/hw/xfree86/common/xf86Init.c:3.157 --- xc/programs/Xserver/hw/xfree86/common/xf86Init.c:3.152 Wed Mar 8 16:30:44 2000 +++ xc/programs/Xserver/hw/xfree86/common/xf86Init.c Wed Mar 8 16:30:44 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Init.c,v 3.152 2000/02/21 19:22:52 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Init.c,v 3.157 2000/03/05 23:47:46 dawes Exp $ */ /* * Copyright 1991-1999 by The XFree86 Project, Inc. @@ -115,7 +115,9 @@ CreateWindowProcPtr CreateWindow = (CreateWindowProcPtr)(pScreen->devPrivates[xf86CreateRootWindowIndex].ptr); -ErrorF("xf86CreateRootWindow(%p)\n", pWin); +#ifdef DEBUG + ErrorF("xf86CreateRootWindow(%p)\n", pWin); +#endif if ( pScreen->CreateWindow != xf86CreateRootWindow ) { /* Can't find hook we are hung on */ @@ -162,23 +164,22 @@ /* free memory */ pOldRegProp = xf86RegisteredPropertiesTable[pScreen->myNum]; - while (pOldRegProp!=NULL) { - xfree(pOldRegProp->data); - pOldRegProp->data = NULL; - + while (pOldRegProp!=NULL) { pRegProp = pOldRegProp->next; xfree(pOldRegProp); pOldRegProp = pRegProp; } xf86RegisteredPropertiesTable[pScreen->myNum] = NULL; } else { - ErrorF("xf86CreateRootWindow unexpectedly called with non-root window %p (parent %p)\n", - pWin, pWin->parent); + xf86Msg(X_ERROR, "xf86CreateRootWindow unexpectedly called with " + "non-root window %p (parent %p)\n", pWin, pWin->parent); ret = FALSE; } } +#ifdef DEBUG ErrorF("xf86CreateRootWindow() returns %d\n", ret); +#endif return (ret); } @@ -348,18 +349,25 @@ #ifdef XFree86LOADER /* Load all modules specified explicitly in the config file */ - if ((modulelist = xf86ModulelistFromConfig(&optionlist))) + if ((modulelist = xf86ModulelistFromConfig(&optionlist))) { xf86LoadModules(modulelist, optionlist); + xfree(modulelist); + xfree(optionlist); + } /* Load all driver modules specified in the config file */ - if ((modulelist = xf86DriverlistFromConfig())) + if ((modulelist = xf86DriverlistFromConfig())) { xf86LoadModules(modulelist, NULL); + xfree(modulelist); + } /* Setup the builtin input drivers */ xf86AddInputDriver(&xf86KEYBOARD, NULL, 0); /* Load all input driver modules specified in the config file. */ - if ((modulelist = xf86InputDriverlistFromConfig())) + if ((modulelist = xf86InputDriverlistFromConfig())) { xf86LoadModules(modulelist, NULL); + xfree(modulelist); + } /* * It is expected that xf86AddDriver()/xf86AddInputDriver will be @@ -808,10 +816,12 @@ FatalError("AddScreen/ScreenInit failed for driver %d\n", i); } +#ifdef DEBUG ErrorF("InitOutput - xf86Screens[%d]->pScreen = %p\n", i, xf86Screens[i]->pScreen ); ErrorF("xf86Screens[%d]->pScreen->CreateWindow = %p\n", i, xf86Screens[i]->pScreen->CreateWindow ); +#endif screenInfo.screens[scr_index]->devPrivates[xf86CreateRootWindowIndex].ptr = (void*)(xf86Screens[i]->pScreen->CreateWindow); @@ -1431,7 +1441,12 @@ } if (!strcmp(argv[i], "-configure")) { + if (getuid() != 0) { + ErrorF("The '-configure' option can only be used by root.\n"); + exit(1); + } xf86DoConfigure = TRUE; + xf86AllowMouseOpenFail = TRUE; return 1; } /* OS-specific processing */ @@ -1455,7 +1470,7 @@ ErrorF("-xf86config file specify a configuration file\n"); ErrorF("-modulepath paths specify the module search path\n"); ErrorF("-logfile file specify a log file name\n"); - ErrorF("-scanpci execute the scanpci module and exit\n"); + ErrorF("-configure probe for devices and write an XF86Config\n"); } else { @@ -1463,6 +1478,7 @@ ErrorF(" XF86Config search path, only root can use absolute\n"); } ErrorF("-probeonly probe for devices, then exit\n"); + ErrorF("-scanpci execute the scanpci module and exit\n"); ErrorF("-verbose [n] verbose startup messages\n"); ErrorF("-logverbose [n] verbose log messages\n"); ErrorF("-quiet minimal startup messages\n"); @@ -1479,6 +1495,7 @@ ErrorF("-screen name specify the Screen section name\n"); ErrorF("-keyboard name specify the core keyboard InputDevice name\n"); ErrorF("-pointer name specify the core pointer InputDevice name\n"); + ErrorF("-nosilk disable Silken Mouse\n"); ErrorF("-flipPixels swap default black/white Pixel values\n"); #ifdef XF86VIDMODE ErrorF("-disableVidMode disable mode adjustments with xvidtune\n"); Index: xc/programs/Xserver/hw/xfree86/common/xf86MiscExt.c diff -u xc/programs/Xserver/hw/xfree86/common/xf86MiscExt.c:1.3 xc/programs/Xserver/hw/xfree86/common/xf86MiscExt.c:1.4 --- xc/programs/Xserver/hw/xfree86/common/xf86MiscExt.c:1.3 Sat Sep 4 09:04:34 1999 +++ xc/programs/Xserver/hw/xfree86/common/xf86MiscExt.c Wed Mar 8 16:30:45 2000 @@ -1,7 +1,7 @@ /* * Copyright (c) 1999 by The XFree86 Project, Inc. */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86MiscExt.c,v 1.3 1999/09/04 13:04:34 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86MiscExt.c,v 1.4 2000/03/05 17:04:15 dawes Exp $ */ /* * This file contains the Pointer/Keyboard functions needed by the @@ -36,7 +36,6 @@ #include "../input/mouse/mouse.h" const char * xf86ProtocolIDToName(ProtocolID id); -#define DEBUG #ifdef DEBUG # define DEBUG_P(x) ErrorF(x"\n"); #else Index: xc/programs/Xserver/hw/xfree86/common/xf86Mode.c diff -u xc/programs/Xserver/hw/xfree86/common/xf86Mode.c:1.25 xc/programs/Xserver/hw/xfree86/common/xf86Mode.c:1.27 --- xc/programs/Xserver/hw/xfree86/common/xf86Mode.c:1.25 Sun Dec 12 20:39:46 1999 +++ xc/programs/Xserver/hw/xfree86/common/xf86Mode.c Wed Mar 8 16:30:45 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Mode.c,v 1.25 1999/12/13 01:39:46 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Mode.c,v 1.27 2000/03/05 23:47:47 dawes Exp $ */ /* * Copyright (c) 1997,1998 by The XFree86 Project, Inc. @@ -1106,14 +1106,20 @@ strategy &= ~LOOKUP_OPTIONAL_TOLERANCES; } else { if (scrp->monitor->nHsync <= 0) { - ErrorF("xf86ValidateModes: called with missing monitor horizontal" - " sync rates\n"); - return -1; + xf86DrvMsg(scrp->scrnIndex, X_WARNING, + "%s: Using default hsync range of 28-33kHz\n", + scrp->monitor->id); + scrp->monitor->hsync[0].lo = 28; + scrp->monitor->hsync[0].hi = 33; + scrp->monitor->nHsync = 1; } if (scrp->monitor->nVrefresh <= 0) { - ErrorF("xf86ValidateModes: called with missing monitor vertical" - " refresh rates\n"); - return -1; + xf86DrvMsg(scrp->scrnIndex, X_WARNING, + "%s: using default vrefresh range of 43-72Hz\n", + scrp->monitor->id); + scrp->monitor->vrefresh[0].lo = 43; + scrp->monitor->vrefresh[0].hi = 72; + scrp->monitor->nVrefresh = 1; } } Index: xc/programs/Xserver/hw/xfree86/common/xf86Module.h diff -u xc/programs/Xserver/hw/xfree86/common/xf86Module.h:1.20 xc/programs/Xserver/hw/xfree86/common/xf86Module.h:1.21 --- xc/programs/Xserver/hw/xfree86/common/xf86Module.h:1.20 Wed Mar 8 16:30:45 2000 +++ xc/programs/Xserver/hw/xfree86/common/xf86Module.h Wed Mar 8 16:30:45 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Module.h,v 1.20 2000/02/08 13:13:05 eich Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Module.h,v 1.21 2000/03/01 23:54:33 dawes Exp $ */ /* * Copyright (c) 1997-1999 by The XFree86 Project, Inc. @@ -63,9 +63,9 @@ */ #define ABI_ANSIC_VERSION SET_ABI_VERSION(0, 1) #define ABI_VIDEODRV_VERSION SET_ABI_VERSION(0, 1) -#define ABI_XINPUT_VERSION SET_ABI_VERSION(0, 0) -#define ABI_EXTENSION_VERSION SET_ABI_VERSION(0, 0) -#define ABI_FONT_VERSION SET_ABI_VERSION(0, 0) +#define ABI_XINPUT_VERSION SET_ABI_VERSION(0, 1) +#define ABI_EXTENSION_VERSION SET_ABI_VERSION(0, 1) +#define ABI_FONT_VERSION SET_ABI_VERSION(0, 1) #define MODINFOSTRING1 0xef23fdc5 #define MODINFOSTRING2 0x10dc023a Index: xc/programs/Xserver/hw/xfree86/common/xf86PciInfo.h diff -u xc/programs/Xserver/hw/xfree86/common/xf86PciInfo.h:1.50 xc/programs/Xserver/hw/xfree86/common/xf86PciInfo.h:1.51 --- xc/programs/Xserver/hw/xfree86/common/xf86PciInfo.h:1.50 Wed Mar 8 16:30:45 2000 +++ xc/programs/Xserver/hw/xfree86/common/xf86PciInfo.h Wed Mar 8 16:30:45 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86PciInfo.h,v 1.50 2000/02/12 20:45:18 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86PciInfo.h,v 1.51 2000/02/24 20:39:14 dawes Exp $ */ /* * PCI Probe * @@ -933,7 +933,7 @@ {0x0001, "PT86C52x Vesuvius",0 }, {0x0000, NULL,0}}}, {PCI_VENDOR_MYLEX, { - {0x0010, "AccelRAID 250",0 }, + {0x0010, "RAID Controller",0 }, {0x0000, NULL,0}}}, {PCI_VENDOR_APPLE, { {0x0001, "Bandit",0 }, @@ -1270,7 +1270,7 @@ {0x1223, "SAA7116",0}, {0x1226, "82596",0}, {0x1227, "82865",0}, - {0x1229, "82557/8 10/100MBit network controller",0 }, + {0x1229, "82557/8/9 10/100MBit network controller",0 }, {0x122D, "82437 Triton",0}, {0x122E, "82471 Triton",0}, {0x1230, "82371 bus-master IDE controller",0}, Index: xc/programs/Xserver/hw/xfree86/common/xf86Priv.h diff -u xc/programs/Xserver/hw/xfree86/common/xf86Priv.h:3.64 xc/programs/Xserver/hw/xfree86/common/xf86Priv.h:3.65 --- xc/programs/Xserver/hw/xfree86/common/xf86Priv.h:3.64 Wed Mar 8 16:30:45 2000 +++ xc/programs/Xserver/hw/xfree86/common/xf86Priv.h Wed Mar 8 16:30:45 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Priv.h,v 3.64 2000/02/08 13:13:06 eich Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Priv.h,v 3.65 2000/03/08 05:38:37 dawes Exp $ */ /* * Copyright (c) 1997 by The XFree86 Project, Inc. @@ -68,7 +68,6 @@ extern unsigned short xf86MouseCflags[]; extern Bool xf86SupportedMouseTypes[]; extern int xf86NumMouseTypes; -extern int xf86EstimateSizesAggressively; #ifdef XFree86LOADER extern DriverPtr *xf86DriverList; Index: xc/programs/Xserver/hw/xfree86/common/xf86pciBus.c diff -u xc/programs/Xserver/hw/xfree86/common/xf86pciBus.c:3.10 xc/programs/Xserver/hw/xfree86/common/xf86pciBus.c:3.13 --- xc/programs/Xserver/hw/xfree86/common/xf86pciBus.c:3.10 Wed Mar 8 16:30:46 2000 +++ xc/programs/Xserver/hw/xfree86/common/xf86pciBus.c Wed Mar 8 16:30:46 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86pciBus.c,v 3.10 2000/02/21 18:09:59 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86pciBus.c,v 3.13 2000/03/05 23:47:48 dawes Exp $ */ /* * Copyright (c) 1997-1999 by The XFree86 Project, Inc. @@ -7,7 +7,6 @@ /* * This file contains the interfaces to the bus-specific code */ -#define DEBUG #include #include #include @@ -350,35 +349,35 @@ xf86Msg(X_PROBED, "PCI: (%d:%d:%d) ", info->bus, info->device, info->func); if (vendorname) - ErrorF("%s ", vendorname); + xf86ErrorF("%s ", vendorname); else - ErrorF("unknown vendor (0x%04x) ", info->vendor); + xf86ErrorF("unknown vendor (0x%04x) ", info->vendor); if (chipname) - ErrorF("%s ", chipname); + xf86ErrorF("%s ", chipname); else - ErrorF("unknown chipset (0x%04x) ", info->chipType); - ErrorF("rev %d", info->chipRev); + xf86ErrorF("unknown chipset (0x%04x) ", info->chipType); + xf86ErrorF("rev %d", info->chipRev); for (i = 0; i < 6; i++) { if (info->memBase[i]) { if (!memdone) { - ErrorF(", Mem @ "); + xf86ErrorF(", Mem @ "); memdone = TRUE; } else - ErrorF(", "); - ErrorF("0x%08x/%d", info->memBase[i], info->size[i]); + xf86ErrorF(", "); + xf86ErrorF("0x%08x/%d", info->memBase[i], info->size[i]); } } for (i = 0; i < 6; i++) { if (info->ioBase[i]) { if (!iodone) { - ErrorF(", I/O @ "); + xf86ErrorF(", I/O @ "); iodone = TRUE; } else - ErrorF(", "); - ErrorF("0x%04x/%d", info->ioBase[i], info->size[i]); + xf86ErrorF(", "); + xf86ErrorF("0x%04x/%d", info->ioBase[i], info->size[i]); } } - ErrorF("\n"); + xf86ErrorF("\n"); } } } @@ -1397,14 +1396,15 @@ void xf86PciProbe(void) { - void (* DataSetupFunc)(SymTabPtr *, pciVendorDeviceInfo **, - pciVendorCardInfo **); + typedef void DataSetupFuncType(SymTabPtr *, pciVendorDeviceInfo **, + pciVendorCardInfo **); + DataSetupFuncType *DataSetupFunc; #ifdef XFree86LOADER /* * we need to get the pointer to the pci data structures initialized */ - DataSetupFunc = LoaderSymbol("xf86SetupPciData"); + DataSetupFunc = (DataSetupFuncType *)LoaderSymbol("xf86SetupPciData"); #else DataSetupFunc = xf86SetupScanPci; #endif Index: xc/programs/Xserver/hw/xfree86/common/xf86str.h diff -u xc/programs/Xserver/hw/xfree86/common/xf86str.h:1.66 xc/programs/Xserver/hw/xfree86/common/xf86str.h:1.67 --- xc/programs/Xserver/hw/xfree86/common/xf86str.h:1.66 Wed Mar 8 16:30:46 2000 +++ xc/programs/Xserver/hw/xfree86/common/xf86str.h Wed Mar 8 16:30:47 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86str.h,v 1.66 2000/02/12 23:59:10 eich Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86str.h,v 1.67 2000/03/01 16:00:54 tsi Exp $ */ /* * Copyright (c) 1997-2000 by The XFree86 Project, Inc. @@ -669,10 +669,8 @@ * Flags for driver Probe() functions. */ #define PROBE_DEFAULT 0x00 -#define PROBE_DETECTPCI 0x01 -#define PROBE_DETECTISA 0x02 -#define PROBE_DETECTFBDEV 0x04 -#define PROBE_DETECT (PROBE_DETECTPCI | PROBE_DETECTISA | PROBE_DETECTFBDEV) +#define PROBE_DETECT 0x01 +#define PROBE_TRYHARD 0x02 /* * ScrnInfoRec Index: xc/programs/Xserver/hw/xfree86/common/xf86xv.c diff -u xc/programs/Xserver/hw/xfree86/common/xf86xv.c:1.18 xc/programs/Xserver/hw/xfree86/common/xf86xv.c:1.19 --- xc/programs/Xserver/hw/xfree86/common/xf86xv.c:1.18 Wed Mar 8 16:30:47 2000 +++ xc/programs/Xserver/hw/xfree86/common/xf86xv.c Wed Mar 8 16:30:47 2000 @@ -6,7 +6,7 @@ */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86xv.c,v 1.18 2000/02/11 20:39:20 mvojkovi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86xv.c,v 1.19 2000/02/22 01:58:06 mvojkovi Exp $ */ #include "misc.h" #include "xf86.h" @@ -102,36 +102,48 @@ #endif -static XF86VideoAdaptorPtr *GenAdaptors = NULL; -static int NumGenAdaptors = 0; +static xf86XVInitGenericAdaptorPtr *GenDrivers = NULL; +static int NumGenDrivers = 0; int -xf86XVRegisterGenericAdaptor( - XF86VideoAdaptorPtr *adaptors, - int num +xf86XVRegisterGenericAdaptorDriver( + xf86XVInitGenericAdaptorPtr InitFunc ){ - int i; - XF86VideoAdaptorPtr *newadaptors; + xf86XVInitGenericAdaptorPtr *newdrivers; - newadaptors = xrealloc(GenAdaptors, sizeof(XF86VideoAdaptorPtr) * - (num + NumGenAdaptors)); - if (!newadaptors) + newdrivers = xrealloc(GenDrivers, sizeof(xf86XVInitGenericAdaptorPtr) * + (1 + NumGenDrivers)); + if (!newdrivers) return 0; - GenAdaptors = newadaptors; + GenDrivers = newdrivers; - for (i=0; imyNum].num = num; + OffscreenImages[pScreen->myNum].images = images; + + return TRUE; +} + +XF86OffscreenImagePtr +xf86XVQueryOffscreenImages( + ScreenPtr pScreen, + int *num +){ + if(!offscreenInited) { + *num = 0; + return NULL; + } + + *num = OffscreenImages[pScreen->myNum].num; + return OffscreenImages[pScreen->myNum].images; +} Index: xc/programs/Xserver/hw/xfree86/common/xf86xv.h diff -u xc/programs/Xserver/hw/xfree86/common/xf86xv.h:1.10 xc/programs/Xserver/hw/xfree86/common/xf86xv.h:1.13 --- xc/programs/Xserver/hw/xfree86/common/xf86xv.h:1.10 Wed Mar 8 16:30:47 2000 +++ xc/programs/Xserver/hw/xfree86/common/xf86xv.h Wed Mar 8 16:30:47 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86xv.h,v 1.10 2000/02/11 20:39:20 mvojkovi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86xv.h,v 1.13 2000/03/08 01:14:00 mvojkovi Exp $ */ #ifndef _XVDIX_H_ #define _XVDIX_H_ @@ -42,6 +42,16 @@ } XF86ImageRec, *XF86ImagePtr; +typedef struct { + ScrnInfoPtr pScrn; + int id; + unsigned short width, height; + int *pitches; /* bytes */ + int *offsets; /* in bytes from start of framebuffer */ + DevUnion devPrivate; +} XF86SurfaceRec, *XF86SurfacePtr; + + typedef int (* PutVideoFuncPtr)( ScrnInfoPtr pScrn, short vid_x, short vid_y, short drw_x, short drw_y, short vid_w, short vid_h, short drw_w, short drw_h, @@ -125,6 +135,29 @@ QueryImageAttributesFuncPtr QueryImageAttributes; } XF86VideoAdaptorRec, *XF86VideoAdaptorPtr; +typedef struct { + XF86ImagePtr image; + int flags; + int (*alloc_surface)(ScrnInfoPtr pScrn, + int id, + unsigned short width, + unsigned short height, + XF86SurfacePtr surface); + int (*free_surface)(XF86SurfacePtr surface); + int (*display) (XF86SurfacePtr surface, + short vid_x, short vid_y, + short drw_x, short drw_y, + short vid_w, short vid_h, + short drw_w, short drw_h, + RegionPtr clipBoxes); + int (*stop) (XF86SurfacePtr surface); + int (*getAttribute) (XF86SurfacePtr surface, Atom attr, INT32 *value); + int (*setAttribute) (XF86SurfacePtr surface, Atom attr, INT32 value); + int max_width; + int max_height; + int num_attributes; + XF86AttributePtr attributes; +} XF86OffscreenImageRec, *XF86OffscreenImagePtr; Bool xf86XVScreenInit( @@ -133,17 +166,33 @@ int num ); +typedef int (* xf86XVInitGenericAdaptorPtr)(ScrnInfoPtr pScrn, + XF86VideoAdaptorPtr **Adaptors); + int -xf86XVRegisterGenericAdaptor( - XF86VideoAdaptorPtr *Adaptors, - int num +xf86XVRegisterGenericAdaptorDriver( + xf86XVInitGenericAdaptorPtr InitFunc ); int xf86XVListGenericAdaptors( - XF86VideoAdaptorPtr **Adaptors + ScrnInfoPtr pScrn, + XF86VideoAdaptorPtr **Adaptors ); +Bool +xf86XVRegisterOffscreenImages( + ScreenPtr pScreen, + XF86OffscreenImagePtr images, + int num +); + +XF86OffscreenImagePtr +xf86XVQueryOffscreenImages( + ScreenPtr pScreen, + int *num +); + /*** These are DDX layer privates ***/ Index: xc/programs/Xserver/hw/xfree86/ddc/ddcProperty.c diff -u xc/programs/Xserver/hw/xfree86/ddc/ddcProperty.c:1.2 xc/programs/Xserver/hw/xfree86/ddc/ddcProperty.c:1.3 --- xc/programs/Xserver/hw/xfree86/ddc/ddcProperty.c:1.2 Fri Nov 19 09:59:16 1999 +++ xc/programs/Xserver/hw/xfree86/ddc/ddcProperty.c Wed Mar 8 16:30:47 2000 @@ -3,7 +3,7 @@ * * Copyright 1999 by Andrew C Aitchison */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/ddc/ddcProperty.c,v 1.2 1999/11/19 14:59:16 hohndel Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/ddc/ddcProperty.c,v 1.3 2000/03/05 23:47:50 dawes Exp $ */ #include "misc.h" #include "xf86.h" @@ -27,15 +27,19 @@ CARD8 *VDIFrawdata = NULL; int i, ret; +#ifdef DEBUG ErrorF("xf86SetXDDCprop(%p, %p)\n", pScrnInfo, DDC); +#endif if (pScrnInfo==NULL || pScrnInfo->monitor==NULL || DDC==NULL) { return FALSE; } +#ifdef DEBUG ErrorF("pScrnInfo->scrnIndex %d\n", pScrnInfo->scrnIndex); ErrorF("pScrnInfo->monitor was %p\n", pScrnInfo->monitor); +#endif pScrnInfo->monitor->DDC = DDC; @@ -52,11 +56,13 @@ EDID1rawdata[i] = DDC->rawData[i]; } +#ifdef DEBUG ErrorF("xf86RegisterRootWindowProperty %p(%d,%d,%d,%d,%d,%p)\n", xf86RegisterRootWindowProperty, pScrnInfo->scrnIndex, EDID1Atom, XA_STRING, 8, 128, (unsigned char *)EDID1rawdata ); +#endif ret = xf86RegisterRootWindowProperty(pScrnInfo->scrnIndex, EDID1Atom, XA_INTEGER, 8, @@ -68,7 +74,9 @@ EDID1_DUMMY_STRING #endif ); +#ifdef DEBUG ErrorF("xf86RegisterRootWindowProperty returns %d\n", ret ); +#endif } else if (DDC->ver.version == 2) { if ( (EDID2rawdata = xalloc(256*sizeof(CARD8)))==NULL ) { @@ -89,12 +97,14 @@ if (DDC->vdif) { #define VDIF_DUMMY_STRING "setting dummy VDIF property - please insert correct values\n" +#ifdef DEBUG ErrorF("xf86RegisterRootWindowProperty %p(%d,%d,%d,%d,%d,%p)\n", xf86RegisterRootWindowProperty, pScrnInfo->scrnIndex, VDIFAtom, XA_STRING, 8, strlen(VDIF_DUMMY_STRING), VDIF_DUMMY_STRING ); +#endif VDIFAtom = MakeAtom(VDIF_ATOM_NAME, sizeof(VDIF_ATOM_NAME), TRUE); @@ -104,7 +114,9 @@ strlen(VDIF_DUMMY_STRING), VDIF_DUMMY_STRING ); +#ifdef DEBUG ErrorF("xf86RegisterRootWindowProperty returns %d\n", ret ); +#endif } return TRUE; Index: xc/programs/Xserver/hw/xfree86/ddc/xf86DDC.c diff -u xc/programs/Xserver/hw/xfree86/ddc/xf86DDC.c:1.12 xc/programs/Xserver/hw/xfree86/ddc/xf86DDC.c:1.13 --- xc/programs/Xserver/hw/xfree86/ddc/xf86DDC.c:1.12 Fri Dec 3 14:17:26 1999 +++ xc/programs/Xserver/hw/xfree86/ddc/xf86DDC.c Wed Mar 8 16:30:48 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/ddc/xf86DDC.c,v 1.12 1999/12/03 19:17:26 eich Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/ddc/xf86DDC.c,v 1.13 2000/03/06 19:07:16 dawes Exp $ */ /* xf86DDC.c * @@ -184,8 +184,8 @@ #ifdef DEBUG if (!tmp) ErrorF("Cannot interpret EDID block\n"); -#endif ErrorF("Sections to follow: %i\n",tmp->no_sections); +#endif VDIF_Block = VDIFRead(scrnIndex, pBus, EDID1_LEN * (tmp->no_sections + 1)); tmp->vdif = xf86InterpretVdif(VDIF_Block); @@ -276,7 +276,9 @@ Buffer = DDCRead_DDC2(scrnIndex, pBus,start,64); if (Buffer == NULL) return NULL; +#ifdef DEBUG ErrorF("number of 64 bit blocks: %i\n",Buffer[0]); +#endif if ((num = Buffer[0]) > 0) v_buffer = v_bufferp = xalloc(sizeof(unsigned char) * 64 * num); Index: xc/programs/Xserver/hw/xfree86/doc/BetaReport diff -u xc/programs/Xserver/hw/xfree86/doc/BetaReport:3.6 xc/programs/Xserver/hw/xfree86/doc/BetaReport:removed --- xc/programs/Xserver/hw/xfree86/doc/BetaReport:3.6 Wed Jan 22 05:59:45 1997 +++ xc/programs/Xserver/hw/xfree86/doc/BetaReport Wed Mar 8 16:30:48 2000 @@ -1,57 +0,0 @@ - XFree86 Beta Test Report Form - -Please fill in as many of the fields a possible, and return this form to -report@XFree86.org. Replace the comments in [] with your own text. - -VERSION: - -3.2A - -XSERVER: - -[e.g. XF86_S3] - -OPERATING SYSTEM: - -[e.g. Linux] - -VIDEO CARD: - - [Fill out each relevant entry. If you don't know some of the details, - just leave them blank.] - - MODEL: - - [Include a precise description of the model. There are often subtle - differences in card model names.] - - GRAPHICS CHIPSET: - - [e.g. S3 968] - - RAMDAC: - - [e.g. AT&T 20C498 Note: visual inspection of the card is the most - reliable way to determine the RAMDAC type] - - CLOCKCHIP: - - [e.g. ICD2061A Note: visual inspection of the card is the most reliable - way to determine the ClockChip type] - - VIDEO MEMORY: - - [e.g. 2MB DRAM Include both the amount, and type (if known)] - - BUS TYPE: - - [e.g. PCI] - -REPORT: - - [Include details of any problems you encountered. If you didn't have - any problems, just say "no problems". Indicate what modes and colour - depths you tested. If you found a bug, give a description of how to - reproduce it.] - - Index: xc/programs/Xserver/hw/xfree86/doc/BugReport diff -u /dev/null xc/programs/Xserver/hw/xfree86/doc/BugReport:1.1 --- /dev/null Wed Mar 8 16:30:48 2000 +++ xc/programs/Xserver/hw/xfree86/doc/BugReport Wed Mar 8 16:30:48 2000 @@ -0,0 +1,55 @@ + XFree86 Bug/Test Report Form + +Please fill in as many of the fields a possible, and return this form to +XFree86@XFree86.org. Replace the comments in [] with your own text. + +VERSION: + +3.9.18 + +VIDEO DRIVER: + +[e.g. mga] + +OPERATING SYSTEM: + +[e.g. Linux] + +VIDEO CARD: + + [Fill out each relevant entry. If you don't know some of the details, + just leave them blank.] + + MODEL: + + [Include a precise description of the model. There are often subtle + differences in card model names.] + + GRAPHICS CHIPSET: + + [e.g. Matrox G200] + + RAMDAC: + + [Usually only relevant for old cards] + + CLOCKCHIP: + + [Usually only relevant for old cards] + + VIDEO MEMORY: + + [e.g. 2MB DRAM Include both the amount, and type (if known)] + + BUS TYPE: + + [e.g. PCI] + +REPORT: + + [Include details of any problems you encountered. If you didn't have + any problems, just say "no problems". Indicate what modes and colour + depths you tested. If you found a bug, give a description of how to + reproduce it.] + + Index: xc/programs/Xserver/hw/xfree86/doc/DESIGN diff -u xc/programs/Xserver/hw/xfree86/doc/DESIGN:1.20 xc/programs/Xserver/hw/xfree86/doc/DESIGN:1.21 --- xc/programs/Xserver/hw/xfree86/doc/DESIGN:1.20 Wed Mar 8 16:30:48 2000 +++ xc/programs/Xserver/hw/xfree86/doc/DESIGN Wed Mar 8 16:30:48 2000 @@ -6256,4 +6256,4 @@ Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/DESIGN.sgml,v 1.23 2000/02/15 18:00:57 dawes Exp $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/DESIGN,v 1.20 2000/02/21 22:44:16 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/DESIGN,v 1.21 2000/03/01 01:47:59 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/Imakefile diff -u xc/programs/Xserver/hw/xfree86/doc/Imakefile:3.60 xc/programs/Xserver/hw/xfree86/doc/Imakefile:3.67 --- xc/programs/Xserver/hw/xfree86/doc/Imakefile:3.60 Wed Mar 8 16:30:48 2000 +++ xc/programs/Xserver/hw/xfree86/doc/Imakefile Wed Mar 8 16:30:48 2000 @@ -4,7 +4,7 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/doc/Imakefile,v 3.60 2000/01/23 21:59:53 dawes Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/doc/Imakefile,v 3.67 2000/03/08 05:38:40 dawes Exp $ #include #include @@ -23,62 +23,62 @@ all:: -#if XFree86Version % 10 -REPORTFORM = BetaReport -#endif +REPORTFORM = BugReport #if !BuildLinuxDocText OSREADMES = \ /*ReadmeFile(Bsdi)*/ \ - ReadmeFile(DGux) \ - ReadmeFile(FreeBSD) \ + /*ReadmeFile(DGUX)*/ \ + /*ReadmeFile(FreeBSD)*/ \ ReadmeFile(isc) \ - ReadmeFile(Linux) \ + /*ReadmeFile(Linux)*/ \ ReadmeFile(LynxOS) \ ReadmeFile(NetBSD) \ ReadmeFile(OpenBSD) \ - ReadmeFile(OS2) \ - OS2.Notes \ - ReadmeFile(SCO) \ - ReadmeFile(SOLX86) \ - ReadmeFile(SVR4) \ + /*ReadmeFile(OS2)*/ \ + /*OS2.Notes*/ \ + /*ReadmeFile(SCO)*/ \ + /*ReadmeFile(SOLX86)*/ \ + /*ReadmeFile(SVR4)*/ \ $(_NULLENTRY_) HWREADME = \ - ReadmeFile(3Dlabs) \ + /*ReadmeFile(3Dlabs)*/ \ ReadmeFile(apm) \ /*ReadmeFile(agx)*/ \ /*ReadmeFile(ark)*/ \ ReadmeFile(ati) \ ReadmeFile(chips) \ - ReadmeFile(cirrus) \ - /*ReadmeFile(cyrix)*/ \ + /*ReadmeFile(cirrus)*/ \ + ReadmeFile(cyrix) \ ReadmeFile(DECtga) \ /*ReadmeFile(epson)*/ \ - ReadmeFile(fbdev) \ + /*ReadmeFile(fbdev)*/ \ /*ReadmeFile(I128)*/ \ - /*ReadmeFile(i740)*/ \ + ReadmeFile(i740) \ + ReadmeFile(i810) \ /*ReadmeFile(Mach32)*/ \ /*ReadmeFile(Mach64)*/ \ - ReadmeFile(MGA) \ - ReadmeFile(NVIDIA) \ + /*ReadmeFile(MGA)*/ \ + /*ReadmeFile(NVIDIA)*/ \ /*ReadmeFile(Oak)*/ \ /*ReadmeFile(P9000)*/ \ + ReadmeFile(r128) \ ReadmeFile(rendition) \ /*ReadmeFile(S3)*/ \ - ReadmeFile(SiS) \ ReadmeFile(s3virge) \ - ReadmeFile(trident) \ - ReadmeFile(tseng) \ + ReadmeFile(SiS) \ + /*ReadmeFile(trident)*/ \ + /*ReadmeFile(tseng)*/ \ /*ReadmeFile(Video7)*/ \ /*ReadmeFile(WstDig)*/ \ $(_NULLENTRY_) MAINDOCS = LICENSE README /*ReadmeFile(Config)*/ /*BUILD*/ RELNOTES \ - Status DESIGN + Install Status DESIGN -OTHERDOCS = VideoModes.doc /*QuickStart.doc*/ xinput \ - ReadmeFile(fonts) ReadmeFile(mouse) +OTHERDOCS = /*VideoModes.doc*/ /*QuickStart.doc*/ /*xinput*/ \ + ReadmeFile(fonts) ReadmeFile(mouse) ReadmeFile(DRI) #endif MISCDOCS = ServersOnly /*LbxproxyOnly*/ $(REPORTFORM) ReadmeFile(DGA) \ Index: xc/programs/Xserver/hw/xfree86/doc/Install diff -u /dev/null xc/programs/Xserver/hw/xfree86/doc/Install:1.3 --- /dev/null Wed Mar 8 16:30:48 2000 +++ xc/programs/Xserver/hw/xfree86/doc/Install Wed Mar 8 16:30:48 2000 @@ -0,0 +1,329 @@ + Installation Details for XFree86[tm] 4.0 + + The XFree86 Project, Inc + + 29 February 2000 + + Abstract + + This document contains information about installing XFree86 4.0. + +1. Introduction + +This document contains information about installing XFree86 4.0 binary dis- +tributions as provided by The XFree86 Project. The installation procedures +for binary distributions provided by others may be different. + +The XFree86 binary distributions that we provide for UNIX-like OSs are pack- +aged in the platform-independent gzipped tar format (referred to as "tar- +balls"). Our tarballs can be identified by the ".tgz" suffix. We do not +provide binaries in RPM format or any other platform specific package format. +If you need them in such a format, you should contact your OS vendor. +Together with the binary distributions, we provide a customised version of +GNU tar called "extract", and an installation script. We recommend that +these be used to install the binary distributions. + +2. How to get the XFree86 4.0 binary distributions + +We, The XFree86 Project, provide XFree86 4.0 binaries for a range of operat- +ing systems at our ftp site . Our ftp site is also mirrored by many sites around the world. There +is a sub-directory for each OS/platform that we have binaries for. The first +thing you need to do is to decide which of these suits you. In most cases, +the choice is straightforward. In some cases (e.g., Linux) there may be a +number of choices depending on what architecture or libc version you are +using. We recommend that you first download the Xinstall.sh script, and run +it as follows to find out which binary distribution you should download. + + sh Xinstall.sh -check + +This should tell you which binary distribution is the correct one for your +system. Getting this right may save from wasting time downloading the wrong +distribution. + +The next step is to download the necessary files. The mandatory files for +all installations are listed below. All of them must be downloaded to do the +installation. The installer script will complain if they are not all pre- +sent. + + Xinstall.sh The installer script + extract The utility for extracting tarballs + Xbin.tgz X clients/utilities and run-time libraries + Xlib.tgz Some data files required at run-time + Xman.tgz Manual pages + Xdoc.tgz XFree86 documentation + Xfnts.tgz Base set of fonts + Xfenc.tgz Base set of font encoding data + Xetc.tgz Run-time configuration files + Xvar.tgz Run-time data + Xxserv.tgz XFree86 X server + Xmod.tgz XFree86 X server modules + +NOTES: + + o Some web browsers have a problem downloading the extract utility cor- + rectly. If you encounter this problem, download the version called + extract.exe instead. The ".exe" suffix is only there to make the trou- + blesome web browsers do the right thing. It is not a DOS/Windows exe- + cutable. + + o A few distributions don't have or require the Xvar.tgz tarball. If it + is present in the binaries sub-directory for your platform, then it is + required. + + o Some distributions may have additional mandatory tarballs. This is + rare. In these cases, the installer script will tell you if any are + missing. + +The following tarballs are optional. You should download the ones you want +to install. + + Xfsrv.tgz Font server + Xnest.tgz Nested X server + Xprog.tgz X header files, config files and compile-time libs + Xprt.tgz X Print server + Xvfb.tgz Virtual framebuffer X server + Xf100.tgz 100dpi fonts + Xfcyr.tgz Cyrillic fonts + Xflat2.tgz Latin-2 fonts + Xfnon.tgz Some large bitmap fonts + Xfscl.tgz Scalable fonts (Speedo and Type1) + Xhtml.tgz HTML version of the documentation + Xps.tgz PostScript version of the documentation + Xjdoc.tgz Documentation in Japanese + +NOTES: + + o Some distributions may have some additional optional tarballs. + +If you miss some and want to install them later, you can do so by following +the appropriate part of the section that describes manual installation. + +3. Installing XFree86 4.0 using the Xinstall.sh script + +We strongly recommend that our XFree86 4.0 binary distributions be installed +using the Xinstall.sh script that we provide. The main reason that we make +this recommendation is that there are a lot of steps in the manual installa- +tion process, and those steps can vary according to the situation. There is, +however, a description of the manual installation process for the most common +cases below for those who might need it. + +Put all of the downloaded files into a single directory (choose some tempo- +rary location with enough space). Become the super user (root), cd to that +directory, then run the installer script as follows: + + sh Xinstall.sh + +Answer the prompts that come up. If you are missing something that is +required to run this version of XFree86, the installer may tell you to +install it before trying again. If you don't have all of the mandatory files +listed above, then the installer will tell you which ones are missing and ask +you to download them before trying again. + +3.1 Answering the questions that the installer may ask + +The installer asks some questions that may not have obvious answers. The +information here should help you answer them. In most cases, apart from the +first question, the default answers should be OK. + +If you run the installer from within an X session (the installer checks if +$DISPLAY is set), you will be warned that doing so is not a good idea. +Unless you have a good reason for knowing that this won't be a problem, you +should exit your X session, including stopping xdm or equivalent if it is +running, before continuing. If you ignore this warning and run into prob- +lems, well, you were warned! + +If you have an existing X installation, you will be warned that proceeding +with this installation will overwrite it. Only those things that are part of +our standard distribution will be overwritten. Other X applications that you +may have installed will not be removed. Some configuration files may be +overwritten though, but the installer should prompt you before doing so. As +the opening greeting says, it is strongly recommended that you backup any +existing installation before proceeding. If you want your old applications +to still be there after you've installed, don't do the "backup" by simply +renaming your old /usr/X11R6 directory. It is better to make a copy of it, +and then install over the top of the original one. If you run into problems +and want to revert to the old installation, you can then delete the overwrit- +ten one and copy the saved version back. + +During the first part of the installation over an existing version, the +script may remove some old files or directories that would get in the way of +the new installation. It will list which files/directories have been +removed. If none are listed, then none were removed. + +The next step when installing over an existing version is to check for exist- +ing configuration files. As of XFree86 version 3.9.18, the run-time configu- +ration files are installed by default under /etc/X11 instead of under +/usr/X11R6/lib/X11. The installer will move the existing ones for you and +create the necessary symbolic links. If you don't want to have these config- +uration files under /etc/X11, then you should answer "no" when asked about +it. Answering "no" here also means that the new configuration files will be +installed in the old /usr/X11R6/lib/X11 location. Note: for the rare systems +that don't have symbolic links, this question will not be asked. The default +answer is "yes" because that is best for most situations. It is our new +default. It makes it easier to share the /usr/X11R6 directory between multi- +ple hosts, and allows it to be mounted read-only. If you don't need these +features, then you can safely answer "no" if you don't want them moved. + +When installing over an existing version, you will be prompted before each +set of configuration files is installed. If you haven't made any customisa- +tions to your existing configuration files, then you can safely answer "yes" +for each of these. If you have made customisations, you can try answering +"no". If you run into problems later, you may need to manually merge your +customisations into the the new version of the configuration files. The con- +figuration files can all be found in the Xetc.tgz tarball. See the section +below about manual installation for information about extracting them sepa- +rately. + +After the configuration files have been dealt with, the other mandatory com- +ponents of the binary distribution will be installed. This should proceed +without any user intervention. + +If you downloaded any of the optional components, the installer will ask you +about each one before it is installed. The default answer is "yes". If +there are any that you've since decided that you don't want to install, +answer "no" when prompted. + +After that is done, the main part of the installation is complete. The next +steps are to tidy up some aspects of the installation. The first of these is +to run "ldconfig" on systems that require it, so that the newly installed +shared libraries are accessible. Then the fonts.dir files in some directo- +ries are updated so that the fonts can be accessed correctly. Next, the +installer checks to see if your system has a termcap file or terminfo files. +If it finds the former, it tells you how my may update the entries in that +file. If it finds the latter, it asks you if you want it to update them for +you. + +Finally, the installer asks you if you want a link created for the rstart +utility. On most modern systems, the link isn't essential, so the default +answer is "no". Answer "yes" if you know that you need it. If you find +later that you need it, you can create it easily by running: + + rm -f /usr/bin/rstartd + ln -s /usr/X11R6/bin/rstartd /usr/bin/rstartd + +3.2 After the installation is complete + +The next step is to configure the X server. That is covered in detail in an +as-yet unwritten document :-(. In the meantime, there are two ways to create +a basic X server configuration file for XFree86 4.0. One is to run the +xf86config utility. Another is to use the new -configure X server option: + + XFree86 -configure + +The X server config file (XF86Config) format has changed compared to 3.3.x. +Also, its default location is now /etc/X11. Finally, there is now only one X +server for driving video hardware, and it is called "XFree86". Once you're +satisfied with the operation of the new X server, you can safely remove the +old XF86_* and/or XF98_* X server binaries from /usr/X11R6/bin. + +After the X server configuration is done, it may be advisable to reboot, +especially if you run xdm (or equivalent) or the font server (xfs). + +4. Installing XFree86 4.0 manually + +This section describes how to manually install the XFree86 4.0 binary distri- +butions. You should only use this method if you know what you're doing. The +information here covers some common cases, but not every possible case. + +Put all of the downloaded files into a single directory (choose some tempo- +rary location with enough space). Become the super user (root). All of the +following commands should be run as root, and they should be run from the +directory that has all of the downloaded files. The "extract" utility should +be used to unpack the tarballs. This is a customised version of GNU tar that +has the gzip code built-in, and which has a different usage when run under +the name "extract". One important thing that extract does that most versions +of tar do not do by default is that it unlinks existing files before writing +new ones. This is important when installing over an existing version of X. +If you choose to use some other utility to extract the tarballs, you're on +your own. + +4.1 A new installation + +The simplest case is when there is no existing X installation. The installa- +tion procedure for this case is as follows: + + chmod +x extract + mkdir /usr/X11R6 + mkdir /etc/X11 + ./extract -C /usr/X11R6 X[a-df-uw-z]*.tgz + ./extract -C /usr/X11R6 Xvfb.tgz # If you are installing Xvfb + ./extract -C /etc/X11 Xetc.tgz + ./extract -C /var Xvar.tgz + ln -s /etc/X11/app-defaults /usr/X11R6/lib/X11 + ln -s /etc/X11/fs /usr/X11R6/lib/X11 + ln -s /etc/X11/lbxproxy /usr/X11R6/lib/X11 + ln -s /etc/X11/proxymngr /usr/X11R6/lib/X11 + ln -s /etc/X11/rstart /usr/X11R6/lib/X11 + ln -s /etc/X11/twm /usr/X11R6/lib/X11 + ln -s /etc/X11/xdm /usr/X11R6/lib/X11 + ln -s /etc/X11/xinit /usr/X11R6/lib/X11 + ln -s /etc/X11/xsm /usr/X11R6/lib/X11 + ln -s /etc/X11/xserver /usr/X11R6/lib/X11 + /sbin/ldconfig /usr/X11R6/lib # For Linux + /sbin/ldconfig -m /usr/X11R6/lib # For FreeBSD, NetBSD, OpenBSD + /usr/X11R6/bin/mkfontdir /usr/X11R6/lib/X11/fonts/misc + +4.2 Installing over an old installation + +If you have an existing installation of X, you should make a backup copy of +it before installing the new version over the top of it. + +Before doing anything else, make sure the extract command is executable, and +also link it to the name "gnu-tar" so that it can be used as a regular tar +command: + + chmod +x extract + rm -f gnu-tar + ln extract gnu-tar + +The first part of the procedure is to move the old run-time config files from +/usr/X11R6/lib/X11 to /etc/X11. Create /etc/X11 if it doesn't already exist. +For each of the following sub-directories (app-defaults, fs, lbxproxy, prox- +ymngr, rstart, twm, xdm, xinit, xsm, xserver) that you want to move, check +that there is a sub-directory of this name in /usr/X11R6/lib/X11. Create a +sub-directory of the same name under /etc/X11, then copy the files over by +running: + + ./gnu-tar -C /usr/X11R6/lib/X11/subdir -c -f - . | \ + ./gnu-tar -C /etc/X11/subdir -v -x -p -U -f - + +For each subdirectory that is moved, remove the one under /usr/X11R6/lib/X11 +and create a symbolic link to the new location: + + rm -fr /usr/X11R6/lib/X11/subdir + ln -s /etc/X11/subdir /usr/X11R6/lib/X11 + +For those subdirectories that didn't already exist under /usr/X11R6/lib/X11, +create one under /etc/X11 and create the symbolic link to it: + + mkdir /etc/X11/subdir + ln -s /etc/X11/subdir /usr/X11R6/lib/X11 + +Once that is done, extract the config files from the Xetc.tgz tarball into a +temporary directory: + + mkdir tmpdir + ./extract -C tmpdir Xetc.tgz + +and then copy each sub-directory over to the installed location: + + ./gnu-tar -C tmpdir/subdir -c -f - . | \ + ./gnu-tar -C /usr/X11R6/lib/X11/subdir -v -x -p -U -f - + +If you have customised any config files in your old installation, you may +want to omit those sub-directories, or copy selected files over by hand. + +Once that's done, the main part of the installation can be done: + + ./extract -C /usr/X11R6 X[a-df-uw-z]*.tgz + ./extract -C /usr/X11R6 Xvfb.tgz # If you are installing Xvfb + ./extract -C /var Xvar.tgz + /sbin/ldconfig /usr/X11R6/lib # For Linux + /sbin/ldconfig -m /usr/X11R6/lib # For FreeBSD, NetBSD, OpenBSD + /usr/X11R6/bin/mkfontdir /usr/X11R6/lib/X11/fonts/misc + + Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/Install.sgml,v 1.4 2000/02/29 18:01:17 dawes Exp $ + + +$XFree86: xc/programs/Xserver/hw/xfree86/doc/Install,v 1.3 2000/03/01 01:48:01 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/LICENSE diff -u xc/programs/Xserver/hw/xfree86/doc/LICENSE:1.7 xc/programs/Xserver/hw/xfree86/doc/LICENSE:1.9 --- xc/programs/Xserver/hw/xfree86/doc/LICENSE:1.7 Wed Mar 8 16:30:48 2000 +++ xc/programs/Xserver/hw/xfree86/doc/LICENSE Wed Mar 8 16:30:48 2000 @@ -552,7 +552,47 @@ solely in object code form, Recipient may replace the words "this file" with "this software" in both the first and second sentences.] - Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/LICENSE.sgml,v 1.6 2000/01/19 22:37:33 dawes Exp $ +2.6 Bigelow & Holmes Inc and Y&Y Inc Lucidux font license +Copyright (C) 2000 Bigelow & Holmes Inc. and Y&Y, Inc. Patents pending. All +Rights Reserved. Lucidux is a trademark of Bigelow & Holmes Inc. -$XFree86: xc/programs/Xserver/hw/xfree86/doc/LICENSE,v 1.7 2000/02/21 22:44:18 dawes Exp $ +Permission is hereby granted, free of charge, to any person obtaining a copy +of these Fonts and associated documentation files (the "Font Software"), to +deal in the Font Software, including without limitation the rights to use, +copy, merge, publish, distribute, sublicense, and/or sell copies of the Font +Software, and to permit persons to whom the Font Software is furnished to do +so, subject to the following conditions: + +The above copyright, trademark, patent notices and this permission notice +shall be included in all copies of one or more of the Font Software. + +The Font Software may not be modified, altered, or added to, and in particu- +lar the designs of glyphs or characters in the Fonts may not be modified nor +may additional glyphs or characters be added to the Fonts, except that com- +posite characters composed of two or more characters in the Fonts may be cre- +ated using the seac (Standard Encoding Accented Character) Type 1 operator. + +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, +TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BIGELOW & HOLMES INC. OR Y&Y, +INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GEN- +ERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR +INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFT- +WARE. + +Except as contained in this notice, the names of Bigelow & Holmes Inc. and +Y&Y, Inc. shall not be used in advertising or otherwise to promote the sale, +use or other dealings in this Font Software without prior written authoriza- +tion from the Bigelow & Holmes Inc. and Y&Y, Inc. + +For further information, contact: + + or + + Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/LICENSE.sgml,v 1.7 2000/03/06 22:59:23 dawes Exp $ + + +$XFree86: xc/programs/Xserver/hw/xfree86/doc/LICENSE,v 1.9 2000/03/07 14:55:04 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/OS2.Notes diff -u xc/programs/Xserver/hw/xfree86/doc/OS2.Notes:3.13 xc/programs/Xserver/hw/xfree86/doc/OS2.Notes:3.14 --- xc/programs/Xserver/hw/xfree86/doc/OS2.Notes:3.13 Wed Mar 8 16:30:49 2000 +++ xc/programs/Xserver/hw/xfree86/doc/OS2.Notes Wed Mar 8 16:30:49 2000 @@ -224,4 +224,4 @@ $XConsortium: OS2note.sgml /main/1 1996/02/24 10:08:59 kaleb $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/OS2.Notes,v 3.13 2000/02/21 22:44:19 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/OS2.Notes,v 3.14 2000/03/01 01:48:02 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README diff -u xc/programs/Xserver/hw/xfree86/doc/README:3.100 xc/programs/Xserver/hw/xfree86/doc/README:3.102 --- xc/programs/Xserver/hw/xfree86/doc/README:3.100 Wed Mar 8 16:30:49 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README Wed Mar 8 16:30:49 2000 @@ -1,75 +1,75 @@ - README for XFree86[tm] 3.9.18 + README for XFree86[tm] 4.0 The XFree86 Project, Inc - 21 February 2000 + 26 February 2000 Abstract XFree86 is a port of X11R6.4 that supports several UNIX(R) and UNIX-like operating systems on Intel and other platforms. -1. What is XFree86 3.9.18? +1. What is XFree86 4.0? -XFree86 3.9.18 is a ``work in progress'' snapshot of the XFree86 4.0 develop- -ment code. It is one of a series of snapshot releases leading up the the 4.0 -release. The plan is to release a new snapshot every four to six weeks. The -target audience for this release is developers and others who are comfortable -on the bleeding edge. This release is not targeted at beginners. Also, most -end users will find life easier using our latest 3.3.x release. While we -welcome bug reports and feedback about this release, we don't have the -resources to provide user-level support for it. If you're not comfortable -dealing with those sorts of things yourself, then the snapshot releases are -probably not for you. - -This code is very much work in progress. Many of the interfaces may change -without notice between now and the 4.0 release. The driver design has -changed significantly compared with the 3.3.x versions, and only a small num- -ber of drivers have been converted so far. That means that this release does -not support a wide range of video hardware. Some of the drivers and new fea- -tures are well developed and reasonably stable, while others are not. +XFree86 4.0 is the first + full release of the new XFree86 4 series. The road to XFree86 4 began in +mid 1997, with serious work starting in early 1998. The first pre-4.0 snap- +shot was released in mid 1999, and 4.0 was released in early 2000. A lot has +been completed in that time, and even more has been started since the "4.0" +design was drafted. The result is that this release contains a lot of new +features, some new drivers, and some significant performance improvements. +This release contains components in various stages of development, ranging +from stable and well tested to new and not-so-well tested. One the other +side, there are drivers from the 3.3.x series that have not yet been ported +to XFree86 4. Most of these are for old hardware. To find more information +about which hardware is supported, see the Driver Status document. + +XFree86 4 uses a very modular design. We had hoped to finalise and fully +document the driver module API/ABI in time for the 4.0 release, but instead +we are planning to have this done for a subsequent release. We will try +where possible to retain backward compatibility with the module interfaces in +4.0 in future releases, but we can't make guarantees about that until the +interfaces have been fully documented. Information on this release's features and their status can be found in the Release Notes. -2. Redistribution of the Snapshots +Information about obtaining and installing binary distributions of this +release can be found in the Installation Document. -While the XFree86 License doesn't prohibit vendors and others redistributing -binaries of this release, we don't recommend it. We ask that if you do dis- -tribute such binaries, you make it clear that people using then should con- -tact you for support and not XFree86. +Copyright and Licensing information for this release can be found in the +License Document. -3. Developers +2. Developers -If you would like to work on the development on XFree86 4.0, then it is rec- -ommended that you join the XFree86 development team +If you would like to work on the development of XFree86 4, then it is recom- +mended that you join the XFree86 development team . That way you will have access to the latest source and to other developers. -4. How to get XFree86 3.9.18 +3. How to get XFree86 4.0 -XFree86 3.9.18 can be found at the XFree86 ftp server -, and at mirrors of -this server. This snapshot is available primarily in source form. Binaries -for some platforms may be made available at a later time. - -The source for version 3.9.18 is split into three tarballs: X3918src-1.tgz, -X3918src-2.tgz, X3918src-3.tgz. The first contains everything except the -fonts and general X11 documentation. It is sufficient for building XFree86 -is you already have a set of fonts. The second contains the fonts and the -source for the general X11 documentation. The third contains the general X11 -documentation in hardcopy format. - -A source patch relative to version 3.9.17 is also available. Because of its -size, it is split into three parts. The patch files are -3.9.17-3.9.18.diff1.gz, 3.9.17-3.9.18.diff2.gz and 3.9.17-3.9.18.diff3.gz. -These patches should be applied to a clean 3.9.17 source tree, working from -the directory containing the xc/ directory. The patches should be applied by -running: - - gunzip < 3.9.17-3.9.18.diff1.gz | patch -p0 -E - gunzip < 3.9.17-3.9.18.diff2.gz | patch -p0 -E - gunzip < 3.9.17-3.9.18.diff3.gz | patch -p0 -E +XFree86 4.0 can be found at the XFree86 ftp server +, 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 obtain- +ing the release in source form is given below. + +The source for version 4.0 is split into three tarballs: X400src-1.tgz, +X400src-2.tgz, X400src-3.tgz. The first contains everything except the fonts +and general X11 documentation. It is sufficient for building XFree86 is you +already have a set of fonts. The second contains the fonts and the source +for the general X11 documentation. The third contains the general X11 docu- +mentation in hardcopy format. + +A source patch relative to version 3.9.18 is also available. Because of its +size, it is split into two parts. The patch files are 3.9.18-4.0.diff1.gz +and 3.9.18-4.0.diff2.gz. These patches should be applied to a clean 3.9.18 +source tree, working from the directory containing the xc/ directory. The +patches should be applied by running: + + gunzip < 3.9.18-4.0.diff1.gz | patch -p0 -E + gunzip < 3.9.18-4.0.diff2.gz | patch -p0 -E The contrib part of the distribution has now been folded into the main source tree, so a separate contrib tarball is no longer required. @@ -77,7 +77,7 @@ To format the XFree86 documentation, the latest version of our doctools pack- age. That is available as doctools-1.1.2.tgz. -5. Reporting Bugs +4. Reporting Bugs Bugs should be reported to . Before reporting bugs, please check the X server log file, which can be found at @@ -91,7 +91,7 @@ mit for inclusion in a future version of XFree86, please send them to . - Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/README.sgml,v 3.100 2000/02/21 22:41:41 dawes Exp $ + Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/README.sgml,v 3.103 2000/03/08 20:36:43 dawes Exp $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README,v 3.100 2000/02/21 22:44:20 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README,v 3.102 2000/03/08 20:39:21 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.3Dlabs diff -u xc/programs/Xserver/hw/xfree86/doc/README.3Dlabs:1.3 xc/programs/Xserver/hw/xfree86/doc/README.3Dlabs:1.4 --- xc/programs/Xserver/hw/xfree86/doc/README.3Dlabs:1.3 Wed Mar 8 16:30:49 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.3Dlabs Wed Mar 8 16:30:49 2000 @@ -96,4 +96,4 @@ Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/3Dlabs.sgml,v 1.2 1999/08/24 02:01:07 dawes Exp $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.3Dlabs,v 1.3 2000/02/21 22:44:20 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.3Dlabs,v 1.4 2000/03/01 01:48:04 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.DECtga diff -u xc/programs/Xserver/hw/xfree86/doc/README.DECtga:3.13 xc/programs/Xserver/hw/xfree86/doc/README.DECtga:3.15 --- xc/programs/Xserver/hw/xfree86/doc/README.DECtga:3.13 Wed Mar 8 16:30:49 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.DECtga Wed Mar 8 16:30:49 2000 @@ -2,14 +2,15 @@ The XFree86 Project, Inc. - April 29th, 1999 + March 5th, 2000 1. DEC 21030 - o The DEC 21030 is supported by XFree86 3.9.18. The driver is now par- - tially accelerated. The built-in graphics on the Multia is supported in + o The DEC 21030 is supported by XFree86 4.0. 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. + in 24-plane mode. TGA2 (aka PowerStorm 3D30/4D20) cards are not cur- + rently supported. o Current Known Problems @@ -21,7 +22,12 @@ 3. After the server has been run using the hardware cursor, the Linux TGA console cursor (which also uses the hardware cursor) is - shifted down by one pixel. + shifted down by one pixel. This problem does not affect Linux ker- + nels 2.2.10 and above, which do not use the hardware cursor. + + 4. The XAA PolySegment() method is buggy. If you experience server + crashes with SIGFPE, or server hangs, try disabling it (see + below). o The following options may be specified for the 21030 driver: @@ -31,7 +37,7 @@ bus, device, and function numbers in the 21030 section. On a Multia, this should be "PCI:0:11:0". - MemBase "0x???????" + MemBase 0x??????? If the server does not detect the base address of the 21030, then check /proc/pci for the 21030 and look for the "Prefetchable 32 bit memory at 0x???????" and enter this as @@ -43,15 +49,20 @@ Option "swcursor" Disables the hardware cursor. + Option "NoXaaPolySegment" + Disables the XAA PolySegment() method. + 2. Authors o Matthew Grossman, o Alan Hourihane, + o Martin Lucina, + o Tim Rowley, - Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/DECtga.sgml,v 3.8 1999/07/19 13:36:20 dawes Exp $ + Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/DECtga.sgml,v 3.9 2000/03/06 22:59:23 dawes Exp $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.DECtga,v 3.13 2000/02/21 22:44:21 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.DECtga,v 3.15 2000/03/07 14:55:05 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.DGA diff -u xc/programs/Xserver/hw/xfree86/doc/README.DGA:3.5 xc/programs/Xserver/hw/xfree86/doc/README.DGA:3.6 --- xc/programs/Xserver/hw/xfree86/doc/README.DGA:3.5 Fri Oct 18 11:03:04 1996 +++ xc/programs/Xserver/hw/xfree86/doc/README.DGA Wed Mar 8 16:30:49 2000 @@ -1,103 +1,481 @@ + XFree86-DGA Extension version 2.0 - XFree86-DGA Extension - -The XFree86-DGA extension is an X server extension for allowing client + The XFree86-DGA extension is an X server extension for allowing client programs direct access to the video frame buffer. -This is a brief description of the programming interface for the -XFree86-DGA extension. This describes version 1.0, which is the first -official version. The interface should remain compatible in future -versions. The functions described here are found in the library -libXxf86dga.a. + This is a brief description of the programming interface for the +XFree86-DGA extension. This describes version 2.0, which is the second +official version. The functions described here are found in the library +libXxf86dga.a, and their prototypes are in . + + XFree86 DGA is not intended as a direct rendering API, but rather, +as a mechanism to "get the X-Server out of the way" so that a direct +rendering API, such as OpenGL, can have full access to the hardware. +With this in mind, DGA does provide clients some direct access to +the hardware without requiring a separate rendering API, but this +access is limited to direct linear framebuffer access. + + DGA is initialized by passing a number corresponding to a valid +XDGAMode to XDGASetMode(). Clients can get a list of valid modes +from XDGAQueryModes(). Each XDGAMode corresponds to a different +framebuffer layout. + +typedef struct { + int num; + char *name; + float verticalRefresh; + int flags; + int imageWidth; + int imageHeight; + int pixmapWidth; + int pixmapHeight; + int bytesPerScanline; + int byteOrder; + int depth; + int bitsPerPixel; + unsigned long redMask; + unsigned long greenMask; + unsigned long blueMask; + short visualClass; + int viewportWidth; + int viewportHeight; + int xViewportStep; + int yViewportStep; + int maxViewportX; + int maxViewportY; + int viewportFlags; +} XDGAMode; + + num + + A unique identifying number (num > 0) for the mode. This is the + number referenced when initializing the mode. + + name + + The name of the corresponding modeline as given in the XF86Config file. + + verticalRefresh + + The vertical refresh rate for the modeline (in Hz). + + flags + + Any of the following may be OR'd together: + + XDGAConcurrentAccess + + Indicates that concurrent client/server access to the + framebuffer is possible. If this flag is not set it is + very important to call XDGASync() before directly accessing + the framebuffer if a call to XDGAFillRectangle(), + XDGACopyArea() or XDGACopyTransparentArea() or any Xlib + rendering function has been made prior to such accesses. + + XDGASolidFillRect + + Indicates that XDGAFillRectangle() is supported. + + XDGABlitRect + + Indicates that XDGACopyArea() is supported. + + XDGABlitTransRect + + Indicates that XDGACopyTransparentArea() is supported. + + XDGAPixmap + + Indicates that a Pixmap will be returned when the mode is + initialized. This means that rendering with Xlib is possible + for this mode. + + XDGAInterlaced + XDGADoublescan + + Indicates that the mode is an interlaced or doublescan mode. + + + imageWidth + imageHeight + + The width and height of the framebuffer area accessible by the client. + This rectangle is always justified to the upper left-hand corner. + + pixmapWidth + pixmapHeight + + The width and height of the framebuffer area accessible by Xlib. + This rectangle is always justified to the upper left-hand corner. + These fields are only valid if the XDGAPixmap flag is set in the + "flags" field. + + bytesPerScanline + + The pitch of the framebuffer in bytes. + + byteOrder + + MSBFirst or LSBFirst. + + depth + + The number of bits in each pixel which contain usable data. + + bitsPerPixel + + The number of bits taken up by each pixel. + + redMask + greenMask + blueMask + + The RGB masks. These do not apply to color-indexed modes. + + visualClass + + TrueColor, PseudoColor, DirectColor, etc... + + viewportWidth + viewportHeight + + The dimensions of the portion of the framebuffer which will be + displayed on the screen. + + xViewPortStep + yViewPortStep + + The granularity of the x,y viewport positioning possible with + the XDGASetViewport function. + + maxViewportX + maxViewportY + + The maximimum x and y positions possible with the XDGASetViewport + function. + + viewportFlags + + Any of the following may be OR'd together: + + XDGAFlipRetrace + + Indicates that the hardware can switch viewports during + the vertical retrace. + + XDGAFlipImmediate + + Indicates that the hardware can switch viewports immediately + without waiting for the vertical retrace. + + + +XDGAMode* XDGAQueryModes( + Display *dpy, + int screen, + int *num +); + + XDGAQueryModes() returns a pointer to an array of XDGAModes which +are valid for the given screen. "num" is the number of elements in the +array. The returned array can be freed with XFree(); + + + +XDGADevice* XDGASetMode( + Display *dpy, + int screen, + int num +); + + A XDGAMode will be initialized when its "num" is passed to +XDGASetMode(). To exit DGA mode and return to normal server operation, +pass number zero to XDGASetMode(). XDGASetMode() returns a pointer +to an XDGADevice if successful. The XDGADevice can be freed with +XFree(). + + struct { + XDGAMode mode; + unsigned char *data; + Pixmap pixmap; + } XDGADevice; + + + mode + + The XDGAMode structure, identical to the information returned + by XDGAQueryModes. + + data + + If direct framebuffer access is desired and possible, this field + will contain a pointer to the mapped framebuffer memory. Generally, + this field will be zero unless a call to XDGAOpenFramebuffer() + is made prior to initialization of the mode. + + pixmap + + If the mode supports Xlib rendering as indicated by XDGAPixmap + in the flags field, this will contain a Pixmap handle suitable + for passing as the drawable argument to Xlib functions. This + field will be zero if Xlib rendering is not supported. + + +Bool XDGAQueryExtension( + Display *dpy, + int *eventBase, + int *errorBase +); + + XDGAQueryExtension() checks for the prescence of the extension +and returns the event and error bases. + + +Bool XDGAQueryVersion( + Display *dpy, + int *majorVersion, + int *minorVersion +); + + XDGAQueryVersion() returns the major and minor version numbers (duh). + + +Bool XDGAOpenFramebuffer( + Display *dpy, + int screen +); + +void XDGACloseFramebuffer( + Display *dpy, + int screen +); + + + XDGAOpenFramebuffer() maps the framebuffer memory. The client +needs sufficient privledges to be able to do this. + + XDGAOpenFramebuffer() should be called prior to initializing +a dga mode if direct framebuffer access is desired for that mode. +XDGAOpenFramebuffer() does not need to be called if direct framebuffer +access is not required. If the framebuffer is opened, +XDGACloseFramebuffer() should be called prior to client exit to +unmap the memory. + + + +void XDGAChangePixmapMode( + Display *dpy, + int screen, + int *x, + int *y, + int mode +); + + In the case where a Pixmap is available for Xlib rendering, this +function allows changing between two pixmap sizes. The following +values for "mode" are possible. + + XDGAPixmapModeLarge + + The pixmap size is defined by the pixmapWidth and pixmapHeight + fields in the XDGAMode structure. The "x" and "y" values are + ignored in this case. + + XDGAPixmapModeSmall + + The pixmap size is defined by the viewportWidth and viewportHeight + fields in the XDGAMode structure. In this mode, the "x" and "y" + values specify where in the framebuffer this pixmap rectangle + is located. It may be placed anywhere within the Xlib renderable + region described by the pixmapWidth and pixmapHeight fields in + the XDGAMode. The "x" and "y" values returned are the resultant + location of the pixmap and may be different from the requested + x,y location due to platform specific alignment constraints. + All Xlib rendering is clipped to this pixmap rectangle. + + +void XDGASetViewport( + Display *dpy, + int screen, + int x, + int y, + int flags +); + + Set the upper left-hand corner of the rectangle of framebuffer +that is to be displayed on the screen. Not all locations may be +supported by the hardware and requested locations will be adjusted +according to the xViewPortStep and yViewPortStep fields in the XDGAMode. + + "flags" can be XDGAFlipRetrace or XDGAFlipImmediate to adjust +the viewport location at the next vertical retrace or immediately. +Values other than the supported values advertised in the mode's +viewportFlags field will result in hardware-specific default behavior. +XDGAFlipImmediate will block until the flip is completed. +XDGAFlipRetrace will generally NOT block so it is necessary to +monitor the viewport status with XDGAGetViewportStatus(). + + FlipImmediate requests during pending FlipRetrace requests +will be ignored. + + +int XDGAGetViewportStatus( + Display *dpy, + int screen +); + + + XDGAGetViewportStatus() keeps track of the XDGASetViewport() +requests still pending. The return value of the function will +have consecutive bits set (LSB justified), each bit representing +a pending viewport change. For example: + + while(XDGAGetViewportStatus(dpy, screen)); -Prototypes for these functions can be found in + waits for all pending viewport changes to finish. - XF86DGAQueryVersion(Display *display, int *majorVersion, int *minorVersion) + while(0x2 & XDGAGetViewportStatus(dpy, screen)); - query the XFree86-DGA version + waits until all but the last viewport changes have completed. - XF86DGAQueryExtension(Display *display, int *eventBase, int *errorBase) +Colormap XDGACreateColormap( + Display *dpy, + int screen, + XDGADevice *device, + int alloc +); - returns the eventBase and errorBase for the XFree86-DGA extension +void XDGAInstallColormap( + Display *dpy, + int screen, + Colormap cmap +); + XDGACreateColormap() is similar to the Xlib function XCreateColormap() +except that it takes an XDGADevice as an argument instead of a Window +and Visual. Though XCreateColormap() may create useable colormaps in +some cases, XDGACreateColormap() is the prefered method for creating +colormaps in DGA since there may not be an advertised visual compatible +with the DGA device. - XF86DGAQueryDirectVideo(Display *display, int screen, int *flags) + XDGAInstallColormap() must be used to install colormaps in DGA +mode. XInstallColormap() will not work. - Query the DirectVideo capabilities of the graphics device. Flags - are returned, which may be interpreted as follows (bit masks): - XF86DGADirectPresent DirectVideo support is present +void XDGASelectInput( + Display *dpy, + int screen, + long event_mask +); - XF86DGAGetVideo(Display *display, int screen, char **addr, int *width, - int *bankSize, int *memSize); + DGA provides its own events. These can be enabled by calling +XDGASelectInput(). This function is similar to XSelectInput() +and all Xlib Key, Button and Motion masks are supported. - returns a pointer to the start of the video framebuffer (*addr), - the line width (*width), memory bank size (*bankSize) and total - memory size (*memSize). Mapping the video framebuffer is a - privileged operation on most OSs (usually mmap of /dev/mem), - so a program using this must usually be setuid (or perhaps setgid) - at least up until the point the function is called. + The following DGA events are defined. - XF86DGAGetViewPortSize(Display *display, int screen, int *width, - int *height) +typedef struct { + int type; /* ButtonPress or ButtonRelease + the DGA event base*/ + unsigned long serial; /* # or last request processed by the server */ + Display *display; /* Display the event was read from */ + int screen; /* The screen number the event came from */ + Time time; /* milliseconds */ + unsigned int state; /* key or button mask */ + unsigned int button; /* detail */ +} XDGAButtonEvent; - Returns the width (*width) and height (*height) of the view port, - which is the part of the framebuffer that is visible on the monitor. +typedef struct { + int type; /* KeyPress or KeyRelease + the DGA event base*/ + unsigned long serial; /* # or last request processed by the server */ + Display *display; /* Display the event was read from */ + int screen; /* The screen number the event came from */ + Time time; /* milliseconds */ + unsigned int state; /* key or button mask */ + unsigned int keycode; /* detail */ +} XDGAKeyEvent; +typedef struct { + int type; /* MotionNotify + the DGA event base*/ + unsigned long serial; /* # or last request processed by the server */ + Display *display; /* Display the event was read from */ + int screen; /* The screen number the event came from */ + Time time; /* milliseconds */ + unsigned int state; /* key or button mask */ + int dx; /* relative pointer motion */ + int dy; /* relative pointer motion */ +} XDGAMotionEvent; - XF86DGADirectVideo(Display *display, int screen, int flags) - enables/disables Direct Video mode. When Direct Video mode is - enabled, the X server gives up control of the framebuffer to the - client. When flags is zero, Direct Video mode is disabled. flags - may be a bit-wise combination of the following: +void +XDGAKeyEventToXKeyEvent(XDGAKeyEvent* dk, XKeyEvent* xk); - XF86DGADirectGraphics enable Direct Video mode - XF86DGADirectMouse enable reporting of pointer movement - as relative motion - XF86DGADirectKeyb enable direct reporting of keyboard - events + XDGAKeyEventToXKeyEvent() is a helper function to translate +XDGAKeyEvents into XKeyEvents suitable for use with XLookupKeysym(). - XF86DGASetVidPage(Display *display, int screen, int page) +void XDGAFillRectangle( + Display *dpy, + int screen, + int x, + int y, + unsigned int width, + unsigned int height, + unsigned long color +); - Set the framebuffer page. This is only required for hardware which - has a banked memory layout (ie, bankSize < memSize). +void XDGACopyArea( + Display *dpy, + int screen, + int srcx, + int srcy, + unsigned int width, + unsigned int height, + int dstx, + int dsty +); - XF86DGASetViewPort(Display *display, int screen, int x, int y) - Set the coordinates of the upper-left corner of the view port to (x,y). +void XDGACopyTransparentArea( + Display *dpy, + int screen, + int srcx, + int srcy, + unsigned int width, + unsigned int height, + int dstx, + int dsty, + unsigned long key /* source pixels of this value will not be copied */ +); + These three functions are included with some reserveration since +DGA is not intended as a rendering API. These are merely convience +routines and are optionally supported. The associated flags will +be set in the XDGAMode's "flags" field if these functions are supported. +These functions will be no-ops otherwise. - Bool XF86DGAViewPortChanged(Display *display, int screen, int n) + These functions do not provide direct access to the hardware, +but are merely context-less operations performed by the server. - Checks whether a previous SetViewPort command has been performed - by the hardware, that is, whether a vertical retrace has occurred - since a previous SetViewPort. This can (must, in fact) be used - with page-flipping; you can start writing to the next page only when - this function returns TRUE. For some devices this will be the - case immediately after SetViewPort, however this may be changed in - in the future. The number of pages used is specified with n; it - should be 2 for simple page flipping. If n is greater than two - (triple or multi-buffering), the function checks whether the - (n - 2)-before-last SetViewPort has been performed. +void XDGASync( + Display *dpy, + int screen +); - XF86DGAInstallColormap(Display *display, int screen, Colormap cmap) + This function blocks until all server rendering to the framebuffer +completes. If Xlib or the 3 rendering functions above are used, XDGASync() +must be called before the client directly accesses the framebuffer as +the server rendering is asynchronous with the client and may have not +completed. This is especially important if the XDGAConcurrentAccess +flag is not set in the XDGAMode's "flags" field since concurrent access +by the server and client may result in a system lockup. - Set the current colormap of the display to cmap. XF86DGADirectGraphics - must be active on the display/screen before calling - XF86DGAInstallColormap or it will produce the error XF86DGAScreenNotActive - or XF86DGADirectNotActivated. - int XF86DGAForkApp(int screen) - Fork the app, parent process hangs around to return non DGA mode should - the child exit for any reason. Returns 0, or error returned by fork(). -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.DGA,v 3.5 1996/10/18 15:03:04 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.DGA,v 3.6 2000/03/04 00:58:15 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.DGUX diff -u /dev/null xc/programs/Xserver/hw/xfree86/doc/README.DGUX:1.2 --- /dev/null Wed Mar 8 16:30:49 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.DGUX Wed Mar 8 16:30:49 2000 @@ -0,0 +1,695 @@ + Instructions for Building XFree86 on an Intel Pentium Aviion machine with + DG/UX R4.20MU04 + + Takis Psarogiannakopoulos + + July 27, 1999 + +1. Whats new + +July 27, 1999 + +DG has fix the streams bug in /usr/lib/tcpip.so . (Read below) The workaround +in the July 25 source code has been removed. I've been told from DG that BSD +sockets perform better in DGUX than SVR4 native STREAMS. From R4.20MU06 DG/UX +will have the correct tcpip.so lib (no bug in STREAMS). If you have MU05,MU04 +and you want for some reason STREAMS definitely contact DG for an updated +/usr/lib/tcpip.so in /usr/lib (patch for your MU04,5). + +DG/UX at the moment lacks the sysi86 syscall and the definition of SYSI86IOPL +(that is in but guarded by a UNIXWARE defintion that of course +cannot be applicable to DG/UX). Until this header is accessible by a simple +-DDGUX , and _sysi86, sysi86 subroutines added to libc (or some other extra +library) we need to define the DG_NO_SYSI86 to be 1. If DG makes the above +modifications , you will need to manually edit the files (before building!) +xc/programs/Xserver/hw/xfree86/SuperProbe/OS_DGUX.c xc/pro- +grams/Xserver/hw/xfree86/etc/scanpci.c xc/programs/Xserver/hw/xfree86/os-sup- +port/dgux/dgux_video.c and eliminate DG_NO_SYSI86 flag by changing +DG_NO_SYSI86 1-->0. + +July 25, 1999 + +A major bug has now been corrected in this release. According to this since +the STREAMS interface of DG/UX were broken the server was listening not to +port 6000 (= 0x1770) but to 0x7017. All binaries that you have from 3.3.3.1, +3.3.3 they will work locally (if you run them in the same machine) but NOT +remotely because they use an Xlib that tries to connect to port 28365. If +you want to run them remotely YOU MUST recompile them! Steve thank you for +bringing this to my attention initially but was too busy then to look at it +in detail... Perhaps I should have... + +We now use sockets instead of ioctls. But I've fix and tested the STREAMS +also. + +David thanks for making me realize that this was indeed a problem in DG/UX. + +I've also take the trouble to port gdb-4.17/8 and ddd (X inter) in +pub/XFree86/3.3.5/binaries/DGUX-ix86/GDB_BETA (both binaries and source code) +in order to be able to send me traces of core files produced by Xservers. Try + + gdb /usr/X11R6/bin/X location of core/core + gdb: where + +and send me what you see. (I suppose that the Xserver executable is in +/usr/X11R6.3/bin) + +From 3.3.3.1: Several bugs are now fixed. DG/UX support is on this official +patch. All configuration is in xc/config/cf/DGUX.cf and in xf86site.def. Also +Imake autodetects (thanks to David Dawes) the DGUX OS (including Release ver- +sion). So only a simple "make World" is needed anymore to build in ix86 +DG/UX. Usually the process to build is (after unpacking and patching the +source "xc" tree) to go to xc/config/cf copy the file xf86site.def to +site.def and edit the files DGUX.cf ,site.def for whatever changes you need +to do. + +Default ProjectRoot in 3.3.5 is /usr/X11R6 (except if you set this specifi- +cally in DGUX.cf either as /usr/X11R6.3-- --my choice, or in whatever you +like). + +From: December 1, 1998 IMPORTANT: PLEASE READ THE FILE README-GCC-2.8.1 GCC +VERSION 2.8.1 is recommended for the DGUX build of X11R6.3 You can ignore +below the _old_ conversation about gcc compiler if you already run a +gcc-2.8.1 in your machine. + +2. GENERAL: + +Get from ftp.xfree86.org the XFree 3.3.x source code: + + ftp ftp.xfree86.org + login: ftp + passwd: your e-mail address + cd pub/XFree86/3.3.5/source + You need the files: + X335src-1.tgz + X335src-2.tgz + X335src-3.tgz + +Get also the contributed X software + + cd /pub/XFree86/3.3.5/source + X335contrib.tgz + +If you have the source tarballs of 3.3.3 go to /pub/XFree86/3.3.5/bina- +ries/DGUX-ix86/SOURCE get the DGUX source patch + + 3.3.3-3.3.5-DGUX.diff.gz + X335contrib-DGUX.diff.gz (patch for the contrib software). + +to avoid downloading all the source code again. + +Sorry some DGUX changes they didn't make in time for the official release +date of 3.3.4... I do this for free, so some times I may be excused for +something like this... + +To build X11R6.3 you need also the tools for DG/UX (see discussion below). +They will be in ftp dpmms.cam.ac.uk (University of Cambridge,Department of +Pure Mathematics) in /pub/takis/DGUX-Tools/BuildXtools.tar.gz (anonymous ftp) +or in the ftp.xfree86.org ... (pub/XFree86/3.3.5/binaries/DGUX- +ix86/SOURCE/BUILD-TOOLS/ BuildXtools.tar.gz). + +Using a big filesystem (I use a virtual disk "xf86work" mounted on /xf86work +of size 1400000 blocks) copy the source as: + + cp X335src-1.tgz /xf86work/X335src-1.tar.gz + cp X335src-2.tgz /xf86work/X335src-2.tar.gz + cp X335src-3.tgz /xf86work/X335src-3.tar.gz + +(or X333src-1,2,3.tar.gz as above plus the DG/UX patch to 3.3.5 i.e. the file +3.3.3-3.3.5-DGUX.diff.gz) + +And maybe the contributed software: + + cp X335contrib.tgz /xf86work + + (cp X335contrib-DGUX.diff.gz /xf86work). + +If you get the patches from DGUX-ix86, to build from source 3.3.3 your first +problem is that in order to apply the source patch you need "patch" a very +common GNU program that DG/UX doesn't have!? This program is in BuildX- +tools.tar.gz (or ftp prep.ai.mit.edu cd/pub/gnu get patch-2.5.tar.gz) So lets +speak about these tools before anything else: Using "sysadm" mount a filesys- +tem usr_local under /usr/local with size 200000 blocks. Then copy the BuildX- +tools file in /usr and give: + + gzip -d < BuildXtools.tar.gz | tar xvf - + +It will unfold in the new filesystem /usr/local. Then go to your ".profile" +(in your Home dir , mine eg is /admin) and add the /usr/local/bin in your +path and the /usr/local/lib in your lib-path. + +What you need is like that: (vi .profile) + + PATH=/usr/local/bin:/sbin:/usr/sbin:/usr/bin + if [ -d /usr/opt/X11/bin ] + then + PATH=$PATH:/usr/opt/X11/bin + fi + export PATH + (/usr/local/bin is before any other path!) + + LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/usr/ccs/lib + export LD_LIBRARY_PATH + +then exit and re-login so that your new modified .profile will take effect. + +Now do the following: + + cd /usr/sbin + cp install install_dg + rm install + cp /usr/local/bin + cp install /usr/bin *(make the GNU install the default install)* + (DG/UX install is useless) + (Look also the file xc/config/cf/DGUX.cf , below). + + (Or get GNU make-3.77 and copy install.sh (or -sh) to a /usr/bin/install) + + cd /usr/bin + cp true /usr/local/bin + cd /usr/local/bin + ln -s true ranlib (Install true as ranlib in the DG/UX system) + +Usually giving -v,-V or --version will give you build info on all the tools +in /usr/local/bin (try it). + +**Look the discussion for gcc before you build (below)** + +Now untar the source tree: In /xf86work (or whatever name you gave to the big +filesystem for the build) + + gzip -d < X335src-1.tar.gz | tar xvf - + gzip -d < X335src-2.tar.gz | tar xvf - + gzip -d < X335src-3.tar.gz | tar xvf - + +(If you have X-3.3.3 do the same for the 3.3.3 sources and then apply the +3.3.5-DGUX source patch + + gzip -d < 3.3.3-3.3.5-DGUX.diff.gz | patch -p0 -E). + +The directory xc in now present in your build filesystem. + +3. Configuration for the build: + +Almost all you need is in "DGUX.cf" located in xc/config/cf. Edit the file +DGUX.cf and site.def and change what ever you need. Remember DGUX.cf over- +writes site.def. The default ProjectRoot for XFree86-3.3.5 is now /usr/X11R6 +(located in site.def). If you want to change this to whatever you like (I +prefer /usr/X11R6.3 and a link in /usr X11R6->X11R6.3) edit DGUX.cf and +locate the entry: + + #if 0 + #define ProjectRoot /usr/X11R6.3 + #endif + +Eliminate the #if 0 , #endif. Then change this to whatever you prefer. (I +prefer the above for the pre-compiled binaries) + +The DG/UX malloc is crap and keeps bringing problems with some X software so +I don't use it. Instead there is a port of GNU malloc in /usr/local (it came +with the BuildXtools file). Don't try to build with the /lib/libmalloc.a of +DG/UX and then send me e-mails that some programs they don't work properly. +In my build I use tcl8.0 and tk8.0 since the xconfig of R4.20MU03 is report- +ing incorrect values for the monitors and XF86Setup need to be build in order +to manage to adjust the display. If you don't have this (or don't want this) +comment out the lines about tcl,tk, (in DGUX.cf) + + /*******TCL TK DEFINITIONS ***********/ + #define HasTk YES-->NO + ... + #define HasTcl YES-->NO + +Also 'GNU make' is required for the correct X11R6.3 build. (it is in Buildx- +tools file). If you decide yes to tcl,tk obtain the files + + tcl8.0.3.tar.gz + tk8.0.3.tar.gz (from some ftp) + +(or newer versions) and compile them before the building of X11R6.3 (Build +first tcl8.0.3 then tk8.0.3). + +4. DISCUSSION ABOUT GCC + +There are so much things that I can say for the system gcc of DG/UX. If I was +keeping track for the programs that fail using this compiler I will certainly +have fill a book (conveniently for the DG of course). But my work is not to +correct bugs for the DG/UX compiler or anything else) , and in particular to +collect reports for the genius of DG. (DG:Sorry guys nothing personal. I am +a pure Mathematician , I am doing all this work for pleasure, I don't want +any money from DG or anybody else , I am not looking to become a employer of +DG,and I am NOT a trouble shooter of the DG/UX in general. But maybe some +times if you help I may be able to help you also). + +What I wanted to do is to build X11. Thats why you will find in BuildXtools a +new gcc. This gcc is build for DG/UX R4.20MU02. so you have to upgrade your +DG/UX OS version to the above. But it is solid to build not only X11 but +whatever else you want. DO NOT use gcc of DG/UX. If you do I cannot tell you +anything about any problems that you have. To complete the installation of +this new gcc do the following: + + cp -r /usr/local/gcc-dgux /usr/opt/sdk/sde/ix86dgux/usr/lib + cd /usr/opt/sdk/sde/ix86dgux/usr/lib + rm gcc + ln -s gcc-dgux gcc (set link gcc--->gcc-dgux) + + cd /usr/local + cp -r /usr/local/gcc-dgux /usr/sde/ix86dgux/usr/lib + cd /usr/sde/ix86dgux/usr/lib + rm gcc + ln -s gcc-dgux gcc (set link gcc-->gcc-dgux) + +To come back to your old DG/UX gcc just change the above two links gcc-->gcc- +dgux to gcc-->gcc-2 with the command: (in both the above two dirs) + + rm gcc + ln -s gcc-2 gcc + +/usr/bin/gcc -v should report the version that you have. To build success- +fully this version of X11 gcc is a *MUST*. + +Dynamic loading Servers: Edit xc/config/cf/DGUX.cf and change the entry + +#ifndef BuildDynamicLoading #define BuildDynamicLoading NO --->YES. #endif + +Remember when you build you will see lots of errors and the servers will NOT +build! This is because the dynamic linker doesn't know the locations of the +newly created R6 libX's. So after the (seem faulty) building do a + +make DESTDIR=ProjectRoot/lib install + +(look below for install, ProjectRoot the location that you choose in the file +xc/config/cf/DGUX.cf above) + +So that all your new libXR6 libraries will go there. (do a cd Project- +Root/lib to make sure). + +Then go to your home dir and declare the path ProjectRoot/lib dir in you +LD_LIBRARY_PATH (your profile) as: + +LD_LIBRARY_PATH=ProjectRoot/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH + +Then relogin! + +Now just _rebuild_ A FULL XFree86-3.3.5 with the entry + +#define BuildDynamicLoading YES in your DGUX.cf. + +This time you will build _all_ XFree86-3.3.5 correctly. + +5. BUILD + +In the usual X11R5 of DG (mwm) open an xterm and give: (/bin/sh = Bourne +shell) + + cd xc + make World > Build-dg.log + +In that way you will get all the error messages in your screen. Don't worry +with messages about -znodefs. + +Note: the old command + + make World BOOTSTRAPCFLAGS="-DDGUX" > Build-dg.log + +is no longer needed since imake will detect the DGUX OS (in Version => +3.3.3.1) and set up things. However this command will also work. + +And in another xterm give cd xc tail -f Build-dg.log to watch the building +progress. + +To install X11R6.3 XFree version 3.3.5 after the build you must have a +filesystem say usr_X11R6.3 mounted to the directory /usr/X11R6 size 350000 +blocks. (or whatever you choose to be your ProjectRoot, if you modify +DGUX.cf for another ProjectRoot than the default /usr/X11R6 in site.def). +Then give + + make install + make install.man (install the man pages) + +The installation will not put an XF86Config in your /usr/X11R6.3/lib/X11/ and +so if you give startx the new X11 will not start. Read the file README- +X3331.DGUX in this ftp site (located in the binaries) about the whole instal- +lation procedure of X11R6.3. Or quickly you can do: (I remind: DG/UX mouse +device "/dev/mouse") cd /usr/X11R6.3/bin ln -s XF86_VGA16 X Then put in your +.profile the path /usr/X11R6.3/bin and run the XF86Setup program. Adjust +first the mouse device then everything else. (You need to read really the +file README-DGUX.INSTALL-> look in the end of this file). + +To build the contributed software with XFree86-3.3.5 get the X335contrib.tgz +and do + + gzip -d < X335contrib.tgz | tar xvf - + +(Or for 3.3.3 sources unpack X333contrib.tgz and apply the DGUX patch as + + gzip -d < X335contrib-DGUX.diff.gz | patch -p0 -E ). + +Please note: You must have already install and active the X11R6.3 that you +build so that the imake is working properly for your system. Read below for +how to install this X window system. After that you could do: + + cd contrib + xmkmf -a + make + make install + make install.man (for installing the man pages) + +6. INSTALLATION OF THE BINARY: + +NOTE:This executable has been compiled with the macro -DPENTIUM_CHANGE (that +all the new Aviion machines support). If you have an old i486 (rather +unlikely) the executable will NOT RUN correctly. But we haven't use +-mcpu=pentiumpro, so the executable will work on ALL PENTIUM machines. + + o About Project Root: I choose as ProjectRoot for ix86 DG/UX the location + /usr/X11R6.3. The default (in 3.3.5 sources) is the /usr/X11R6. To cover + this we make a link in /usr as X11R6->X11R6.3 (read below); so don't + forget to do this link. I don't like the location /usr/opt/X11 (default + location of DG X11) that some of you have suggested to me, I believe it + is a good idea to keep the original X11 as is for several reasons. + + o Make a filesystem,using sysadm, mounted under "/usr/X11R6.3". This is + the default location of X11R6.3 , you cannot change this except if you + recompile the whole source of X. (Please don't send e-mails about + this). The size of this filesystem should be around 175 MB(350000 + blocks). + + The list of files is: + + X3353DL.tgz 3D_Labs XServer ... etc + X3358514.tgz + X335AGX.tgz + X335I128.tgz + X335Ma32.tgz Mach32 Xserver + X335Ma64.tgz Mach64 Xserver + X335Ma8.tgz + X335Mono.tgz + X335P9K.tgz + X335S3.tgz + X335S3V.tgz + X335SVGA.tgz SuperVGA Xserver (Supports AV3700 Cirrus) + X335VG16.tgz VGA16 Xserver (needed by XF86Setup) + X335W32.tgz + X335bin.tgz BIN (you must have this) + X335cfg.tgz + X335doc.tgz + X335f100.tgz + X335fcyr.tgz + X335fnon.tgz + X335fnts.tgz + X335fscl.tgz + X335fsrv.tgz + X335lib.tgz LIB (you must have this) + X335lkit.tgz Linkkit (X development) + X335man.tgz Man pages + X335nest.tgz + X335prog.tgz + X335prt.tgz + X335set.tgz + X335vfb.tgz + preinst.sh Install script + extract The XFree86 extract program (for ix86 DG/UX) + + SUMS.md5 Checksums for the integrity of the files + + (Try compile the GNU textutils-1.22.tar.gz from prep.ai.mit.edu + /pub/gnu. md5sum is there). + + You need at least: + + X335bin.tgz + X335lib.tgz + + And the correct Xserver for your machine/Graphics card. In my opinion + take all files , in the future you may need to switch to another graph- + ics device etc ... (mget *). Generally it is good to have the full dis- + tribution of the X11R6.3 window system ,it should make life easier in + DG/UX. + + (Trivial:you must have root privilege). + + o Unpack the *.tgz files in your / so that it will go directly inside to + the new filesystem /usr/X11R6.3. After you do that cd /usr and do a link + : ln -s X11R6.3 X11R6. (Use the install script). This link will indi- + cate in XF86 programs like XF86Setup where the new X11 window system is. + + o cd your home dir and backup your .profile as "cp .profile myprofile". + Then cd /usr/X11R6.3. Copy the file HOME.profile-X11R6.3 to your home + dir as "cp HOME.profile-X11R6.3 your home dir/.profile" ,then cd your + home dir and "chmod 644 .profile" to make sure that the new profile is + active. This is because you need to tell to the system to look for the X + software in a different location than the usual /usr/bin/X11 of DG/UX. + Also you need to tell to the system that the new X libraries are in + /usr/X11R6.3/lib. + + **You NEED to re-login in order to make the new .profile active !** ** + DO NOT GIVE "startx" AFTER THAT, READ Configuration below !** + + o About Configuration: DG/UX has a program (actually a script) called + xconfig that makes the configuration for you. Usually when you run xcon- + fig in the DG/UX-X11R5 it creates a file XdgConfig in /var/X11/Xserver + which is the corresponding of the XF86-configuration file located in + /usr/X11R6.3/lib/X11/XF86Config. This file ,in the section monitor, has + all values for your monitor. Please Note: Unfortunately in DG/UX + R4.20MU02 things change. Instead of going forwards we going backwards... + xconfig reports crazy values for my DG-DA1765VA monitor. So if you have + a CDROM of DG/UX R4.11MU02,or MU03 use it to find an xconfig that will + give you reliable values for your monitor. + + Your best bet is to use XF86Setup for correct adjustments. + + Thats the reason that in this binary there is a minimum tcl,tk(version + 8.0). Before you run XF86Setup read the relevant documents found in + www.xfree86.org. (Or read below for a hand-made configuration). + + Notice about XF86Setup: You will will see the message "The program is + running on a different virtual" "Please switch to the correct virtual + terminal" + + DG/UX does NOT have any virtual terminals. But XF86Setup uses a script + that doesn't checks for this. So it is printing this message anyway. + Ignore it and don't send e-mails asking how to set the virtual terminal! + XF86Setup WORKS for SURE (if you use it correctly) to set your configu- + ration. Just remember: + + 1. make a link in /usr/X11R6.3/bin: ln -s XF86_VGA16 X + + 2. set mouse device in your XF86Config to /dev/mouse (this the mouse + in DGUX) + + 3. set the correct mouse protocol. (usually for a typical AViiON + PS/2). + + Or just cd /usr/X11R6.3/lib/X11 and copy XF86Config.eg.dgux to XF86Con- + fig (it is for a PS/2 protocol mouse that almost all AViiON's have) , + then run XF86Setup and choose to use this XF86Config file as default (so + mouse works). + + Alternatively, you can run xf86config, a non-graphical configuration + utility but you will need to enter manually the values for your monitor. + If you have the small booklet that came with the monitor they are + inside. + + Hand made configuration: I have an DG/UX Medium resolution (1280x1024) + 17 inch DG-26059,DA1765VA. ONLY IF YOU HAVE THE ***EXACT SAME*** MONI- + TOR USE THE FILE XF86Config_SVGA_DGUX that you will find in + /usr/X11R6.3/. IT IS IN YOUR OWN RISK IF YOU DECIDE TO USE THIS FILE + WHEN YOU DON'T HAVE THE SAME MONITOR AS MINE. YOU CAN DAMAGE YOUR VIDEO + MONITOR OR YOUR GRAPHICS CARD. + + An example of how to use the Accel Servers (eg ATI=XF86_Mach64) is in + the file XF86Config_ATI_DGUX. Again remember: I have an DG/UX Medium + resolution (1280x1024) 17 inch DG-26059,DA1765VA. ONLY IF YOU HAVE THE + ***EXACT SAME*** MONITOR USE THE FILE XF86Config_ATI_DGUX that you will + find in /usr/X11R6.3/. IT IS IN YOUR OWN RISK IF YOU DECIDE TO USE THIS + FILE WHEN YOU DON'T HAVE THE SAME MONITOR AS MINE. YOU CAN DAMAGE YOUR + VIDEO MONITOR. + + Start with the file XF86Config.eg as a prototype. READ the README.Config + . In Cirrus chips you need to read the file README.cirrus located in + /usr/X11R6.3 There is a problem with the accelerated XAA code ,so you + need to try to put the following option in your XF86Config: + + Option "no_mmio" (in Section Screen ,subsection display). + + Look in the XF86Config_SVGA_DGUX to see how this can be done . If this + doesn't work (it will probably) try Option "noaccel" or "no_bit- + blt".Again READ the file README.cirrus (and README.Config). I suggest + to print (in paper) the file XdgConfig and have a look in it. Then it + should be quite trivial to figure out what you have to do with the XF86 + file ie XF86Config in the sections mouse, keyboard, screen ... After + you have a correct XF86Config in /usr/X11R6.3/lib/X11 give + + chmod 444 XF86Config. + + Supposing that you have already re-login so that the new .profile is + active and you have the correct XF86Config file (as your XdgConfig sug- + gest) (DO not forget for a cirrus to put the Option "no_mmio" in section + screen !), give startx and the new X11 will start . Remember: You can + shut down at any point the Xserver by pressing CONTROL+ALT+BACKSPACE (if + something goes wrong). Also Xservers don't produce messages unless to + want them to do so. This is because the DG/UX console driver some times + causes corruption of the screen if you print text during the startup of + the Xserver. If you require messages try in bash shell to give: (bash# + ) + + X -verbose >& info1 or even + X -verbose -verbose >& info2 for more messages. + + Then when the server is up press CONTROL+ALT+BACKSPACE to shutdown the + Xserver. File info1 (or info2) have all relevant info about your graph- + ics card , display memory etc ... I suggest you do that at least one + time before start using the new X11R6.3. Read this info file to see if + all ok. If not try change settings in your XF86Config to make thinks + correct. + + If you have an ATI Rage II (or RageII+) use the server XF86_Mach64 (make + a link link X--->XF86_MACH64, or run xf86config, or use XF86Setup + above). + + o If you want to compile programs with the X11R6.3 the headers in + /usr/include /X11 pointing to /usr/opt/X11 of DG/UX is a problem . Do: + + a): unmounting the /usr/opt/X11 will prevent the sysadm to use the X + graphical interface. But this will be the only thing that you loose. + The correct thing to do for X11R6.3 is to delete the filesystem + /usr/opt/X11 and make a link /usr/opt/X11--->/usr/X11R6.3 , so that the + libraries from dglib and /usr/lib point correctly to the new ones in + /usr/X11r6.3/lib. Before you unmount this filesystem you need to do + this: + + cd /usr/opt/X11/include + cp -r Mrm /usr/X11R6.3/include + cp -r uil /usr/X11R6.3/include + cp -r Xm /usr/X11R6.3/include + cd /usr/X11R6.3/include + ln -s uil Uil + + LIBRARIES: + + and cd /usr/opt/X11/lib + cp libXm.a /usr/X11R6.3/lib + + and similarly copy the following libraries: + + libX11.so.2, libX11.so.5, libXIM.so.1, libXaw.so.1, libXaw.so.2, + libXext.so.2, libXi.so.2, libXimp.so.1, libXm.so.2, libXmu.so.2, + libXsess.so.1, libXsi.so.1, libXt.so.2, libXt.so.5.0, libMrm.a, + libUil.a, libX11_s, libXR4sco_s + + into /usr/X11R6.3/lib. + + Then cd /usr/X11R6.3/lib and make links: + + ln -s libXm.so.2 libXm.so + ln -s libXm.so.2 libXm.so.1 + ln -s libXm.so.2 libXm.so.5.0 + + ln -s libX11.so.5.0 libX11.so.1 + + ln -s libXIM.so.1 libXIM.so.5.0 + + ln -s libXaw.so.2 libXaw.so.5.0 + + ln -s libXext.so.2 libXext.so.5.0 + ln -s libXext.so.2 libXext.so.1 + + ln -s libXi.so.2 libXi.so.1 + ln -s libXi.so.2 libXi.so.5.0 + + ln -s libXimp.so.1 libXimp.so.5.0 + + ln -s libXmu.so.2 libXmu.so.5.0 + + ln -s libXt.so.2 libXt.so.5.0 + + ln -s libXsi.so.1 libXi.so.5.0 + + cd /usr/X11R6.3/lib + rm libXmu.so (to avoid undefs when building X software) + + Also you need to correct the links in /usr/dglib at least! (the correct + thing to do is modify also /usr/lib links to /usr/opt/X11 libs). Try + + cd /usr/ + tar -cvf dglib-orig.tar dglib + gzip dglib-orig.tar + + (to minimize the space dglib-backup takes) then + + cd /usr/dglib + + and delete ALL links to libraries in /usr/opt/X11. Then copy the script + create_new_links_in_dglib (found in /usr/X11R6.3 to /usr/dglib and cd + /usr/dglib execute script. This will create all new links with the + X11R6.3 X window system. + + But remember to do in the end : + + cd /usr/dglib + rm *.a (no static libs links in dglib) + + Then unmount (delete) the old X11 by giving "umount /usr/opt/X11". + + NOTE: If you compile programs in the X11R6 make sure that you unmount + /usr/opt/X11 or you eliminate the links in /usr/lib to the OLD libX's in + /usr/opt/X11/lib. Otherwise gcc will link these old libraries! and the + binary will not run correctly. Always after an R6 compilation do "ldd + prog" to make sure that the binary loads only R6 version libraries + (except maybe the motif library libXm.so.2), --if you don't use the + static libXm.a + + b:) + + cd /usr/include + tar -cvf old-X11headers.tar X11 + gzip old-X11headers.tar + + so that you store your old headers in /usr/include. + + Then cd /usr/include/ and delete + + rm -r X11 + rm Xm + rm Mrm + rm Uil + rm uil + Make new links as: + cd /usr/include + ln -s ../X11R6.3/include/X11 X11 + ln -s ../X11R6.3/include/uil Uil + ln -s ../X11R6.3/include/uil uil + ln -s ../X11R6.3/include/Xm Xm + ln -s ../X11R6.3/include/Mrm Mrm + +7. What is about: + +This new X11R6 are not simply an upgrade of the servers to the latest ones. +It is a new programming platform in your DG/UX system to allow you to import +all this *FREE* or not software for the X window system. This software will +not compile in the old (and ugly) X11 of Data General. The imake command +that is implemented in almost all the (source) software for X11 (free or not) +will not work with the totally broken "imake" command of /usr/opt/X11 of +DG/UX. + +The imake of DG/UX X11R5 is badly broken: I have seen DG/UX releases +R4.11,MU01, ...MU04, R420, R4.20MU02 ,R4.20MU03 and nobody bother to look in +all these releases the imake command... + +While until now DG was rather hostile to the prospect of a new X11 in DG/UX +some new folks there they have turn their interest in X11R6 (XFree86) these +days. That is good of course because the ultimate target is to make XFree86 +(3.3.5 or whatever version) to run in _their_ DG/UX Unix! I will be able to +make a much better X11 in DG/UX if I could had some access to DG/UX sources +(i.e. the original R5 sources , but not only --eg kernel driver sources as +for example the DG/UX kernel console driver sources). + +I have compile almost anything that runs for Linux in DG/UX using this X11. +In doing this work in XFree86 I would like to express my thanks to David +Dawes that he help me all the time with several technical questions. Also +D.T. is one of the people that offer valuable help. Finally I want to +express my thanks to John H. for enlightening me in some syscall issues. + + Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/DGUX.sgml,v 1.1 2000/02/24 20:43:23 dawes Exp $ + + +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.DGUX,v 1.2 2000/03/01 01:48:04 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.DGux diff -u xc/programs/Xserver/hw/xfree86/doc/README.DGux:1.5 xc/programs/Xserver/hw/xfree86/doc/README.DGux:removed --- xc/programs/Xserver/hw/xfree86/doc/README.DGux:1.5 Wed Mar 8 16:30:49 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.DGux Wed Mar 8 16:30:49 2000 @@ -1,695 +0,0 @@ - Instructions for Building XFree86 on an Intel Pentium Aviion machine with - DG/ux R4.20MU04 - - Takis Psarogiannakopoulos - - July 27, 1999 - -1. Whats new - -July 27, 1999 - -DG has fix the streams bug in /usr/lib/tcpip.so . (Read below) The workaround -in the July 25 source code has been removed. I've been told from DG that BSD -sockets perform better in DGUX than SVR4 native STREAMS. From R4.20MU06 DG/ux -will have the correct tcpip.so lib (no bug in STREAMS). If you have MU05,MU04 -and you want for some reason STREAMS definitely contact DG for an updated -/usr/lib/tcpip.so in /usr/lib (patch for your MU04,5). - -DG/ux at the moment lacks the sysi86 syscall and the definition of SYSI86IOPL -(that is in but guarded by a UNIXWARE defintion that of course -cannot be applicable to DG/ux). Until this header is accessible by a simple --DDGUX , and _sysi86, sysi86 subroutines added to libc (or some other extra -library) we need to define the DG_NO_SYSI86 to be 1. If DG makes the above -modifications , you will need to manually edit the files (before building!) -xc/programs/Xserver/hw/xfree86/SuperProbe/OS_DGUX.c xc/pro- -grams/Xserver/hw/xfree86/etc/scanpci.c xc/programs/Xserver/hw/xfree86/os-sup- -port/dgux/dgux_video.c and eliminate DG_NO_SYSI86 flag by changing -DG_NO_SYSI86 1-->0. - -July 25, 1999 - -A major bug has now been corrected in this release. According to this since -the STREAMS interface of DG/ux were broken the server was listening not to -port 6000 (= 0x1770) but to 0x7017. All binaries that you have from 3.3.3.1, -3.3.3 they will work locally (if you run them in the same machine) but NOT -remotely because they use an Xlib that tries to connect to port 28365. If -you want to run them remotely YOU MUST recompile them! Steve thank you for -bringing this to my attention initially but was too busy then to look at it -in detail... Perhaps I should have... - -We now use sockets instead of ioctls. But I've fix and tested the STREAMS -also. - -David thanks for making me realize that this was indeed a problem in DG/ux. - -I've also take the trouble to port gdb-4.17/8 and ddd (X inter) in -pub/XFree86/3.3.5/binaries/DGUX-ix86/GDB_BETA (both binaries and source code) -in order to be able to send me traces of core files produced by Xservers. Try - - gdb /usr/X11R6/bin/X location of core/core - gdb: where - -and send me what you see. (I suppose that the Xserver executable is in -/usr/X11R6.3/bin) - -From 3.3.3.1: Several bugs are now fixed. DG/ux support is on this official -patch. All configuration is in xc/config/cf/DGUX.cf and in xf86site.def. Also -Imake autodetects (thanks to David Dawes) the DGUX OS (including Release ver- -sion). So only a simple "make World" is needed anymore to build in ix86 -DG/ux. Usually the process to build is (after unpacking and patching the -source "xc" tree) to go to xc/config/cf copy the file xf86site.def to -site.def and edit the files DGUX.cf ,site.def for whatever changes you need -to do. - -Default ProjectRoot in 3.3.5 is /usr/X11R6 (except if you set this specifi- -cally in DGUX.cf either as /usr/X11R6.3-- --my choice, or in whatever you -like). - -From: December 1, 1998 IMPORTANT: PLEASE READ THE FILE README-GCC-2.8.1 GCC -VERSION 2.8.1 is recommended for the DGUX build of X11R6.3 You can ignore -below the _old_ conversation about gcc compiler if you already run a -gcc-2.8.1 in your machine. - -2. GENERAL: - -Get from ftp.xfree86.org the XFree 3.3.x source code: - - ftp ftp.xfree86.org - login: ftp - passwd: your e-mail address - cd pub/XFree86/3.3.5/source - You need the files: - X335src-1.tgz - X335src-2.tgz - X335src-3.tgz - -Get also the contributed X software - - cd /pub/XFree86/3.3.5/source - X335contrib.tgz - -If you have the source tarballs of 3.3.3 go to /pub/XFree86/3.3.5/bina- -ries/DGUX-ix86/SOURCE get the DGUX source patch - - 3.3.3-3.3.5-DGUX.diff.gz - X335contrib-DGUX.diff.gz (patch for the contrib software). - -to avoid downloading all the source code again. - -Sorry some DGUX changes they didn't make in time for the official release -date of 3.3.4... I do this for free, so some times I may be excused for -something like this... - -To build X11R6.3 you need also the tools for DG/ux (see discussion below). -They will be in ftp dpmms.cam.ac.uk (University of Cambridge,Department of -Pure Mathematics) in /pub/takis/DGUX-Tools/BuildXtools.tar.gz (anonymous ftp) -or in the ftp.xfree86.org ... (pub/XFree86/3.3.5/binaries/DGUX- -ix86/SOURCE/BUILD-TOOLS/ BuildXtools.tar.gz). - -Using a big filesystem (I use a virtual disk "xf86work" mounted on /xf86work -of size 1400000 blocks) copy the source as: - - cp X335src-1.tgz /xf86work/X335src-1.tar.gz - cp X335src-2.tgz /xf86work/X335src-2.tar.gz - cp X335src-3.tgz /xf86work/X335src-3.tar.gz - -(or X333src-1,2,3.tar.gz as above plus the DG/ux patch to 3.3.5 i.e. the file -3.3.3-3.3.5-DGUX.diff.gz) - -And maybe the contributed software: - - cp X335contrib.tgz /xf86work - - (cp X335contrib-DGUX.diff.gz /xf86work). - -If you get the patches from DGUX-ix86, to build from source 3.3.3 your first -problem is that in order to apply the source patch you need "patch" a very -common GNU program that DG/ux doesn't have!? This program is in BuildX- -tools.tar.gz (or ftp prep.ai.mit.edu cd/pub/gnu get patch-2.5.tar.gz) So lets -speak about these tools before anything else: Using "sysadm" mount a filesys- -tem usr_local under /usr/local with size 200000 blocks. Then copy the BuildX- -tools file in /usr and give: - - gzip -d < BuildXtools.tar.gz | tar xvf - - -It will unfold in the new filesystem /usr/local. Then go to your ".profile" -(in your Home dir , mine eg is /admin) and add the /usr/local/bin in your -path and the /usr/local/lib in your lib-path. - -What you need is like that: (vi .profile) - - PATH=/usr/local/bin:/sbin:/usr/sbin:/usr/bin - if [ -d /usr/opt/X11/bin ] - then - PATH=$PATH:/usr/opt/X11/bin - fi - export PATH - (/usr/local/bin is before any other path!) - - LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/usr/ccs/lib - export LD_LIBRARY_PATH - -then exit and re-login so that your new modified .profile will take effect. - -Now do the following: - - cd /usr/sbin - cp install install_dg - rm install - cp /usr/local/bin - cp install /usr/bin *(make the GNU install the default install)* - (DG/ux install is useless) - (Look also the file xc/config/cf/DGUX.cf , below). - - (Or get GNU make-3.77 and copy install.sh (or -sh) to a /usr/bin/install) - - cd /usr/bin - cp true /usr/local/bin - cd /usr/local/bin - ln -s true ranlib (Install true as ranlib in the DG/ux system) - -Usually giving -v,-V or --version will give you build info on all the tools -in /usr/local/bin (try it). - -**Look the discussion for gcc before you build (below)** - -Now untar the source tree: In /xf86work (or whatever name you gave to the big -filesystem for the build) - - gzip -d < X335src-1.tar.gz | tar xvf - - gzip -d < X335src-2.tar.gz | tar xvf - - gzip -d < X335src-3.tar.gz | tar xvf - - -(If you have X-3.3.3 do the same for the 3.3.3 sources and then apply the -3.3.5-DGUX source patch - - gzip -d < 3.3.3-3.3.5-DGUX.diff.gz | patch -p0 -E). - -The directory xc in now present in your build filesystem. - -3. Configuration for the build: - -Almost all you need is in "DGUX.cf" located in xc/config/cf. Edit the file -DGUX.cf and site.def and change what ever you need. Remember DGUX.cf over- -writes site.def. The default ProjectRoot for XFree86-3.3.5 is now /usr/X11R6 -(located in site.def). If you want to change this to whatever you like (I -prefer /usr/X11R6.3 and a link in /usr X11R6->X11R6.3) edit DGUX.cf and -locate the entry: - - #if 0 - #define ProjectRoot /usr/X11R6.3 - #endif - -Eliminate the #if 0 , #endif. Then change this to whatever you prefer. (I -prefer the above for the pre-compiled binaries) - -The DG/ux malloc is crap and keeps bringing problems with some X software so -I don't use it. Instead there is a port of GNU malloc in /usr/local (it came -with the BuildXtools file). Don't try to build with the /lib/libmalloc.a of -DG/ux and then send me e-mails that some programs they don't work properly. -In my build I use tcl8.0 and tk8.0 since the xconfig of R4.20MU03 is report- -ing incorrect values for the monitors and XF86Setup need to be build in order -to manage to adjust the display. If you don't have this (or don't want this) -comment out the lines about tcl,tk, (in DGUX.cf) - - /*******TCL TK DEFINITIONS ***********/ - #define HasTk YES-->NO - ... - #define HasTcl YES-->NO - -Also 'GNU make' is required for the correct X11R6.3 build. (it is in Buildx- -tools file). If you decide yes to tcl,tk obtain the files - - tcl8.0.3.tar.gz - tk8.0.3.tar.gz (from some ftp) - -(or newer versions) and compile them before the building of X11R6.3 (Build -first tcl8.0.3 then tk8.0.3). - -4. DISCUSSION ABOUT GCC - -There are so much things that I can say for the system gcc of DG/ux. If I was -keeping track for the programs that fail using this compiler I will certainly -have fill a book (conveniently for the DG of course). But my work is not to -correct bugs for the DG/ux compiler or anything else) , and in particular to -collect reports for the genius of DG. (DG:Sorry guys nothing personal. I am -a pure Mathematician , I am doing all this work for pleasure, I don't want -any money from DG or anybody else , I am not looking to become a employer of -DG,and I am NOT a trouble shooter of the DG/ux in general. But maybe some -times if you help I may be able to help you also). - -What I wanted to do is to build X11. Thats why you will find in BuildXtools a -new gcc. This gcc is build for DG/ux R4.20MU02. so you have to upgrade your -DG/ux OS version to the above. But it is solid to build not only X11 but -whatever else you want. DO NOT use gcc of DG/ux. If you do I cannot tell you -anything about any problems that you have. To complete the installation of -this new gcc do the following: - - cp -r /usr/local/gcc-dgux /usr/opt/sdk/sde/ix86dgux/usr/lib - cd /usr/opt/sdk/sde/ix86dgux/usr/lib - rm gcc - ln -s gcc-dgux gcc (set link gcc--->gcc-dgux) - - cd /usr/local - cp -r /usr/local/gcc-dgux /usr/sde/ix86dgux/usr/lib - cd /usr/sde/ix86dgux/usr/lib - rm gcc - ln -s gcc-dgux gcc (set link gcc-->gcc-dgux) - -To come back to your old DG/ux gcc just change the above two links gcc-->gcc- -dgux to gcc-->gcc-2 with the command: (in both the above two dirs) - - rm gcc - ln -s gcc-2 gcc - -/usr/bin/gcc -v should report the version that you have. To build success- -fully this version of X11 gcc is a *MUST*. - -Dynamic loading Servers: Edit xc/config/cf/DGUX.cf and change the entry - -#ifndef BuildDynamicLoading #define BuildDynamicLoading NO --->YES. #endif - -Remember when you build you will see lots of errors and the servers will NOT -build! This is because the dynamic linker doesn't know the locations of the -newly created R6 libX's. So after the (seem faulty) building do a - -make DESTDIR=ProjectRoot/lib install - -(look below for install, ProjectRoot the location that you choose in the file -xc/config/cf/DGUX.cf above) - -So that all your new libXR6 libraries will go there. (do a cd Project- -Root/lib to make sure). - -Then go to your home dir and declare the path ProjectRoot/lib dir in you -LD_LIBRARY_PATH (your profile) as: - -LD_LIBRARY_PATH=ProjectRoot/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH - -Then relogin! - -Now just _rebuild_ A FULL XFree86-3.3.5 with the entry - -#define BuildDynamicLoading YES in your DGUX.cf. - -This time you will build _all_ XFree86-3.3.5 correctly. - -5. BUILD - -In the usual X11R5 of DG (mwm) open an xterm and give: (/bin/sh = Bourne -shell) - - cd xc - make World > Build-dg.log - -In that way you will get all the error messages in your screen. Don't worry -with messages about -znodefs. - -Note: the old command - - make World BOOTSTRAPCFLAGS="-DDGUX" > Build-dg.log - -is no longer needed since imake will detect the DGUX OS (in Version => -3.3.3.1) and set up things. However this command will also work. - -And in another xterm give cd xc tail -f Build-dg.log to watch the building -progress. - -To install X11R6.3 XFree version 3.3.5 after the build you must have a -filesystem say usr_X11R6.3 mounted to the directory /usr/X11R6 size 350000 -blocks. (or whatever you choose to be your ProjectRoot, if you modify -DGUX.cf for another ProjectRoot than the default /usr/X11R6 in site.def). -Then give - - make install - make install.man (install the man pages) - -The installation will not put an XF86Config in your /usr/X11R6.3/lib/X11/ and -so if you give startx the new X11 will not start. Read the file README- -X3331.DGUX in this ftp site (located in the binaries) about the whole instal- -lation procedure of X11R6.3. Or quickly you can do: (I remind: DG/ux mouse -device "/dev/mouse") cd /usr/X11R6.3/bin ln -s XF86_VGA16 X Then put in your -.profile the path /usr/X11R6.3/bin and run the XF86Setup program. Adjust -first the mouse device then everything else. (You need to read really the -file README-DGUX.INSTALL-> look in the end of this file). - -To build the contributed software with XFree86-3.3.5 get the X335contrib.tgz -and do - - gzip -d < X335contrib.tgz | tar xvf - - -(Or for 3.3.3 sources unpack X333contrib.tgz and apply the DGUX patch as - - gzip -d < X335contrib-DGUX.diff.gz | patch -p0 -E ). - -Please note: You must have already install and active the X11R6.3 that you -build so that the imake is working properly for your system. Read below for -how to install this X window system. After that you could do: - - cd contrib - xmkmf -a - make - make install - make install.man (for installing the man pages) - -6. INSTALLATION OF THE BINARY: - -NOTE:This executable has been compiled with the macro -DPENTIUM_CHANGE (that -all the new Aviion machines support). If you have an old i486 (rather -unlikely) the executable will NOT RUN correctly. But we haven't use --mcpu=pentiumpro, so the executable will work on ALL PENTIUM machines. - - o About Project Root: I choose as ProjectRoot for ix86 DG/ux the location - /usr/X11R6.3. The default (in 3.3.5 sources) is the /usr/X11R6. To cover - this we make a link in /usr as X11R6->X11R6.3 (read below); so don't - forget to do this link. I don't like the location /usr/opt/X11 (default - location of DG X11) that some of you have suggested to me, I believe it - is a good idea to keep the original X11 as is for several reasons. - - o Make a filesystem,using sysadm, mounted under "/usr/X11R6.3". This is - the default location of X11R6.3 , you cannot change this except if you - recompile the whole source of X. (Please don't send e-mails about - this). The size of this filesystem should be around 175 MB(350000 - blocks). - - The list of files is: - - X3353DL.tgz 3D_Labs XServer ... etc - X3358514.tgz - X335AGX.tgz - X335I128.tgz - X335Ma32.tgz Mach32 Xserver - X335Ma64.tgz Mach64 Xserver - X335Ma8.tgz - X335Mono.tgz - X335P9K.tgz - X335S3.tgz - X335S3V.tgz - X335SVGA.tgz SuperVGA Xserver (Supports AV3700 Cirrus) - X335VG16.tgz VGA16 Xserver (needed by XF86Setup) - X335W32.tgz - X335bin.tgz BIN (you must have this) - X335cfg.tgz - X335doc.tgz - X335f100.tgz - X335fcyr.tgz - X335fnon.tgz - X335fnts.tgz - X335fscl.tgz - X335fsrv.tgz - X335lib.tgz LIB (you must have this) - X335lkit.tgz Linkkit (X development) - X335man.tgz Man pages - X335nest.tgz - X335prog.tgz - X335prt.tgz - X335set.tgz - X335vfb.tgz - preinst.sh Install script - extract The XFree86 extract program (for ix86 DG/ux) - - SUMS.md5 Checksums for the integrity of the files - - (Try compile the GNU textutils-1.22.tar.gz from prep.ai.mit.edu - /pub/gnu. md5sum is there). - - You need at least: - - X335bin.tgz - X335lib.tgz - - And the correct Xserver for your machine/Graphics card. In my opinion - take all files , in the future you may need to switch to another graph- - ics device etc ... (mget *). Generally it is good to have the full dis- - tribution of the X11R6.3 window system ,it should make life easier in - DG/ux. - - (Trivial:you must have root privilege). - - o Unpack the *.tgz files in your / so that it will go directly inside to - the new filesystem /usr/X11R6.3. After you do that cd /usr and do a link - : ln -s X11R6.3 X11R6. (Use the install script). This link will indi- - cate in XF86 programs like XF86Setup where the new X11 window system is. - - o cd your home dir and backup your .profile as "cp .profile myprofile". - Then cd /usr/X11R6.3. Copy the file HOME.profile-X11R6.3 to your home - dir as "cp HOME.profile-X11R6.3 your home dir/.profile" ,then cd your - home dir and "chmod 644 .profile" to make sure that the new profile is - active. This is because you need to tell to the system to look for the X - software in a different location than the usual /usr/bin/X11 of DG/ux. - Also you need to tell to the system that the new X libraries are in - /usr/X11R6.3/lib. - - **You NEED to re-login in order to make the new .profile active !** ** - DO NOT GIVE "startx" AFTER THAT, READ Configuration below !** - - o About Configuration: DG/ux has a program (actually a script) called - xconfig that makes the configuration for you. Usually when you run xcon- - fig in the DG/ux-X11R5 it creates a file XdgConfig in /var/X11/Xserver - which is the corresponding of the XF86-configuration file located in - /usr/X11R6.3/lib/X11/XF86Config. This file ,in the section monitor, has - all values for your monitor. Please Note: Unfortunately in DG/ux - R4.20MU02 things change. Instead of going forwards we going backwards... - xconfig reports crazy values for my DG-DA1765VA monitor. So if you have - a CDROM of DG/ux R4.11MU02,or MU03 use it to find an xconfig that will - give you reliable values for your monitor. - - Your best bet is to use XF86Setup for correct adjustments. - - Thats the reason that in this binary there is a minimum tcl,tk(version - 8.0). Before you run XF86Setup read the relevant documents found in - www.xfree86.org. (Or read below for a hand-made configuration). - - Notice about XF86Setup: You will will see the message "The program is - running on a different virtual" "Please switch to the correct virtual - terminal" - - DG/ux does NOT have any virtual terminals. But XF86Setup uses a script - that doesn't checks for this. So it is printing this message anyway. - Ignore it and don't send e-mails asking how to set the virtual terminal! - XF86Setup WORKS for SURE (if you use it correctly) to set your configu- - ration. Just remember: - - 1. make a link in /usr/X11R6.3/bin: ln -s XF86_VGA16 X - - 2. set mouse device in your XF86Config to /dev/mouse (this the mouse - in DGUX) - - 3. set the correct mouse protocol. (usually for a typical AViiON - PS/2). - - Or just cd /usr/X11R6.3/lib/X11 and copy XF86Config.eg.dgux to XF86Con- - fig (it is for a PS/2 protocol mouse that almost all AViiON's have) , - then run XF86Setup and choose to use this XF86Config file as default (so - mouse works). - - Alternatively, you can run xf86config, a non-graphical configuration - utility but you will need to enter manually the values for your monitor. - If you have the small booklet that came with the monitor they are - inside. - - Hand made configuration: I have an DG/ux Medium resolution (1280x1024) - 17 inch DG-26059,DA1765VA. ONLY IF YOU HAVE THE ***EXACT SAME*** MONI- - TOR USE THE FILE XF86Config_SVGA_DGUX that you will find in - /usr/X11R6.3/. IT IS IN YOUR OWN RISK IF YOU DECIDE TO USE THIS FILE - WHEN YOU DON'T HAVE THE SAME MONITOR AS MINE. YOU CAN DAMAGE YOUR VIDEO - MONITOR OR YOUR GRAPHICS CARD. - - An example of how to use the Accel Servers (eg ATI=XF86_Mach64) is in - the file XF86Config_ATI_DGUX. Again remember: I have an DG/ux Medium - resolution (1280x1024) 17 inch DG-26059,DA1765VA. ONLY IF YOU HAVE THE - ***EXACT SAME*** MONITOR USE THE FILE XF86Config_ATI_DGUX that you will - find in /usr/X11R6.3/. IT IS IN YOUR OWN RISK IF YOU DECIDE TO USE THIS - FILE WHEN YOU DON'T HAVE THE SAME MONITOR AS MINE. YOU CAN DAMAGE YOUR - VIDEO MONITOR. - - Start with the file XF86Config.eg as a prototype. READ the README.Config - . In Cirrus chips you need to read the file README.cirrus located in - /usr/X11R6.3 There is a problem with the accelerated XAA code ,so you - need to try to put the following option in your XF86Config: - - Option "no_mmio" (in Section Screen ,subsection display). - - Look in the XF86Config_SVGA_DGUX to see how this can be done . If this - doesn't work (it will probably) try Option "noaccel" or "no_bit- - blt".Again READ the file README.cirrus (and README.Config). I suggest - to print (in paper) the file XdgConfig and have a look in it. Then it - should be quite trivial to figure out what you have to do with the XF86 - file ie XF86Config in the sections mouse, keyboard, screen ... After - you have a correct XF86Config in /usr/X11R6.3/lib/X11 give - - chmod 444 XF86Config. - - Supposing that you have already re-login so that the new .profile is - active and you have the correct XF86Config file (as your XdgConfig sug- - gest) (DO not forget for a cirrus to put the Option "no_mmio" in section - screen !), give startx and the new X11 will start . Remember: You can - shut down at any point the Xserver by pressing CONTROL+ALT+BACKSPACE (if - something goes wrong). Also Xservers don't produce messages unless to - want them to do so. This is because the DG/ux console driver some times - causes corruption of the screen if you print text during the startup of - the Xserver. If you require messages try in bash shell to give: (bash# - ) - - X -verbose >& info1 or even - X -verbose -verbose >& info2 for more messages. - - Then when the server is up press CONTROL+ALT+BACKSPACE to shutdown the - Xserver. File info1 (or info2) have all relevant info about your graph- - ics card , display memory etc ... I suggest you do that at least one - time before start using the new X11R6.3. Read this info file to see if - all ok. If not try change settings in your XF86Config to make thinks - correct. - - If you have an ATI Rage II (or RageII+) use the server XF86_Mach64 (make - a link link X--->XF86_MACH64, or run xf86config, or use XF86Setup - above). - - o If you want to compile programs with the X11R6.3 the headers in - /usr/include /X11 pointing to /usr/opt/X11 of DG/ux is a problem . Do: - - a): unmounting the /usr/opt/X11 will prevent the sysadm to use the X - graphical interface. But this will be the only thing that you loose. - The correct thing to do for X11R6.3 is to delete the filesystem - /usr/opt/X11 and make a link /usr/opt/X11--->/usr/X11R6.3 , so that the - libraries from dglib and /usr/lib point correctly to the new ones in - /usr/X11r6.3/lib. Before you unmount this filesystem you need to do - this: - - cd /usr/opt/X11/include - cp -r Mrm /usr/X11R6.3/include - cp -r uil /usr/X11R6.3/include - cp -r Xm /usr/X11R6.3/include - cd /usr/X11R6.3/include - ln -s uil Uil - - LIBRARIES: - - and cd /usr/opt/X11/lib - cp libXm.a /usr/X11R6.3/lib - - and similarly copy the following libraries: - - libX11.so.2, libX11.so.5, libXIM.so.1, libXaw.so.1, libXaw.so.2, - libXext.so.2, libXi.so.2, libXimp.so.1, libXm.so.2, libXmu.so.2, - libXsess.so.1, libXsi.so.1, libXt.so.2, libXt.so.5.0, libMrm.a, - libUil.a, libX11_s, libXR4sco_s - - into /usr/X11R6.3/lib. - - Then cd /usr/X11R6.3/lib and make links: - - ln -s libXm.so.2 libXm.so - ln -s libXm.so.2 libXm.so.1 - ln -s libXm.so.2 libXm.so.5.0 - - ln -s libX11.so.5.0 libX11.so.1 - - ln -s libXIM.so.1 libXIM.so.5.0 - - ln -s libXaw.so.2 libXaw.so.5.0 - - ln -s libXext.so.2 libXext.so.5.0 - ln -s libXext.so.2 libXext.so.1 - - ln -s libXi.so.2 libXi.so.1 - ln -s libXi.so.2 libXi.so.5.0 - - ln -s libXimp.so.1 libXimp.so.5.0 - - ln -s libXmu.so.2 libXmu.so.5.0 - - ln -s libXt.so.2 libXt.so.5.0 - - ln -s libXsi.so.1 libXi.so.5.0 - - cd /usr/X11R6.3/lib - rm libXmu.so (to avoid undefs when building X software) - - Also you need to correct the links in /usr/dglib at least! (the correct - thing to do is modify also /usr/lib links to /usr/opt/X11 libs). Try - - cd /usr/ - tar -cvf dglib-orig.tar dglib - gzip dglib-orig.tar - - (to minimize the space dglib-backup takes) then - - cd /usr/dglib - - and delete ALL links to libraries in /usr/opt/X11. Then copy the script - create_new_links_in_dglib (found in /usr/X11R6.3 to /usr/dglib and cd - /usr/dglib execute script. This will create all new links with the - X11R6.3 X window system. - - But remember to do in the end : - - cd /usr/dglib - rm *.a (no static libs links in dglib) - - Then unmount (delete) the old X11 by giving "umount /usr/opt/X11". - - NOTE: If you compile programs in the X11R6 make sure that you unmount - /usr/opt/X11 or you eliminate the links in /usr/lib to the OLD libX's in - /usr/opt/X11/lib. Otherwise gcc will link these old libraries! and the - binary will not run correctly. Always after an R6 compilation do "ldd - prog" to make sure that the binary loads only R6 version libraries - (except maybe the motif library libXm.so.2), --if you don't use the - static libXm.a - - b:) - - cd /usr/include - tar -cvf old-X11headers.tar X11 - gzip old-X11headers.tar - - so that you store your old headers in /usr/include. - - Then cd /usr/include/ and delete - - rm -r X11 - rm Xm - rm Mrm - rm Uil - rm uil - Make new links as: - cd /usr/include - ln -s ../X11R6.3/include/X11 X11 - ln -s ../X11R6.3/include/uil Uil - ln -s ../X11R6.3/include/uil uil - ln -s ../X11R6.3/include/Xm Xm - ln -s ../X11R6.3/include/Mrm Mrm - -7. What is about: - -This new X11R6 are not simply an upgrade of the servers to the latest ones. -It is a new programming platform in your DG/ux system to allow you to import -all this *FREE* or not software for the X window system. This software will -not compile in the old (and ugly) X11 of Data General. The imake command -that is implemented in almost all the (source) software for X11 (free or not) -will not work with the totally broken "imake" command of /usr/opt/X11 of -DG/ux. - -The imake of DG/ux X11R5 is badly broken: I have seen DG/ux releases -R4.11,MU01, ...MU04, R420, R4.20MU02 ,R4.20MU03 and nobody bother to look in -all these releases the imake command... - -While until now DG was rather hostile to the prospect of a new X11 in DG/ux -some new folks there they have turn their interest in X11R6 (XFree86) these -days. That is good of course because the ultimate target is to make XFree86 -(3.3.5 or whatever version) to run in _their_ DG/ux Unix! I will be able to -make a much better X11 in DG/ux if I could had some access to DG/ux sources -(i.e. the original R5 sources , but not only --eg kernel driver sources as -for example the DG/ux kernel console driver sources). - -I have compile almost anything that runs for Linux in DG/ux using this X11. -In doing this work in XFree86 I would like to express my thanks to David -Dawes that he help me all the time with several technical questions. Also -D.T. is one of the people that offer valuable help. Finally I want to -express my thanks to John H. for enlightening me in some syscall issues. - - Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/DGux.sgml,v 1.4 2000/01/24 19:38:27 dawes Exp $ - - -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.DGux,v 1.5 2000/02/21 22:44:21 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.DRI diff -u xc/programs/Xserver/hw/xfree86/doc/README.DRI:1.1 xc/programs/Xserver/hw/xfree86/doc/README.DRI:1.4 --- xc/programs/Xserver/hw/xfree86/doc/README.DRI:1.1 Sun Jun 27 12:17:30 1999 +++ xc/programs/Xserver/hw/xfree86/doc/README.DRI Wed Mar 8 16:30:49 2000 @@ -1,115 +1,544 @@ -Direct Rendering Infrastructure Alpha release ---------------------------------------------- + DRI Users Guide -Patches for the final sample implementation (SI) of Precision Insight's -Direct Rendering Infrastructure (DRI) have been submitted to XFree86. + Precision Insight, Inc. + 6 March 2000 +1. Preamble -Please direct all comments about this release to glx@xfree86.org. - - - - -* What comes with this release? - - There are four main parts of this patch: - - 1. the client- and server-side DRI, - 2. a 2D DDX driver for 3Dlabs' GMX2000, - 3. an OpenGL client side direct rendering driver for the GMX2000, and - 4. a generic kernel driver for Linux 2.2.x (x <= 10) and Linux 2.3.y (y - <= 8). - - The DRI handles the communication and synchronization between the X - server, the client driver and the kernel driver. - - The 3Dlabs XFree86 DDX driver has been enhanced to support the - GMX2000. It has also been extended to communicate with and provide - callbacks for the DRI. - - The client driver implements a subset of OpenGL. The subset required - for id Software's Quake 2 was chosen to demonstrate the capabilities - of the DRI. This driver communicates with the device by filling DMA - buffers and sending them to the kernel driver. Note that the Gamma - chip implements OpenGL 1.1 in hardware, and therefore, does not use - the Mesa internals at this time. However, support for the majority of - current generation of 3D hardware devices will require integration - with Mesa, so an example DRI driver using the Mesa software-only - pipeline was implemented (and is mostly complete for the alpha - release). - - The generic kernel driver handles the allocation of the DMA buffers, - distribution of the buffers to the clients, sending the buffers to the - device, and the management of synchronization between the client - driver, the X server, and the kernel driver (this includes the device - lock and a shared memory region). Note that hardware that does not - support DMA or that does support special synchronization methods will - only make use of a subset of these capabilities. - -* What changed between the alpha release and the sample implementation? - - - Dynamic loading of the OpenGL client driver is implemented - - 3D client death while holding the drawable lock does not cause deadlock - - The kernel module works with Linux 2.2.x [x <= 10] and 2.3.y [y <= 8] - - A better authentication mechanism has been implemented - - XF86Config options for the DRI are supported - -* What are the known problems and/or limitations of the sample - implementation? - - Here are other problems that we did not have time to fix for the SI. - However, we and other open source developers could continue developing - and extending the DRI in follow-on projects. - - - The X server seg faults due to a context switching bug when there - are 10 or more 3D clients running simultaneously - - A better DMA buffer queuing algorithm needs to be implemented - - A device specific shared memory region needs to be added to SAREA - - The DRI protocol request for the framebuffer layout needs to be - extended to support FB width and depth information (for 24 vs. 32 - bpp, 8+24 layouts, etc) - - Direct rendering to a pixmap is not supported - - A more sophisticated texture management routine is required to - handle texture swapping efficiently - - Multi-threaded OpenGL clients are not supported - - glXCopyContext and glXUseXFont are not supported in the DRI - - SwapBuffers does not wait on vertical retrace - - Support wait for vertical retrace in kernel driver - - Handling overlays is not currently supported - - Integrate with DBE - - Completing the software-only Mesa example driver - - Completing the other OpenGL paths for the GMX2000 - - Support for video modes other than 640x480 in both the GMX2000 2D - DDX driver and the 3D client driver - - More than minimal 2D acceleration of the GMX2000 2D DDX driver - should be implemented - - Implement finer grained locking scheme in X server to improve - interactivity - - Only grab the drawable lock and update the drawable stamp when a 3D - window is altered - - The viewport does not scale properly when a 3D window is resized - - Double buffered 3D windows are not clipped to the screen - - glXSwapBuffers is not clipped to the client's viewport - - Only one client is allowed to use texture memory - - glFinish does not wait until the HW completes processing the - outstanding DMA buffers - - Version numbers of the DDX and kernel driver are not verified - - Make lock available during SIGSTOP - - Make drmFinish work while holding the device lock - - Improve /proc/drm - - Improve documentation - - Improve example device-specific kernel driver (not used for SI) - -* Where can I get more information? - - We have made our design and implementation documents available on our - website: +1.1 Copyright - http://www.precisioninsight.com/piinsights.html +Copyright © 2000 by Precision Insight, Inc., Cedar Park, Texas. All Rights +Reserved. - More documentation will be available with the SI release. +Permission is granted to make and distribute verbatim copies of this document +provided the copyright notice and this permission notice are preserved on all +copies. -* Where should I send comments? +1.2 Trademarks - Please send all comments and questions to the glx@xfree86.org list +OpenGL is a registered trademark and SGI is a trademark of Silicon Graphics, +Inc. Unix is a registered trademark of The Open Group. The `X' device and X +Window System are trademarks of The Open Group. XFree86 is a trademark of +The XFree86 Project. Linux is a registered trademark of Linus Torvalds. +Intel is a registered trademark of Intel Corporation. 3Dlabs, GLINT, and +Oxygen are either registered trademarks or trademarks of 3Dlabs Inc. Ltd. +3dfx, Voodoo3, Voodoo4, and Voodoo5 are registered trademarks of 3dfx Inter- +active, Incorporated. All other trademarks mentioned are the property of +their respective owners. + +2. Introduction + +With XFree86 4.0 and Precision Insight's Direct Rendering Interface (DRI), +hardware accelerated 3D graphics can be considered a standard feature on +Linux workstations. Support for other operating systems, such as FreeBSD, is +underway. + +This document describes how to use the DRI system and troubleshoot problems +which may occur. Readers should have a basic understanding of Linux, X and +OpenGL. See the resources section at the end for more documentation and +software downloads. + +This document does not cover compilation or installation of XFree86 4.0; it +is assumed that you've already installed a Linux distribution which includes +XFree86 4.0. + +3. Supported Hardware + +3D acceleration is currently only available for systems with Intel-compatible +CPUs. Support for Alpha, and perhaps other CPUs, should be available in the +future. + +XFree86 4.0 includes 3D acceleration for the following graphics hardware: + + o 3dfx: + + o Voodoo3 3500 TV + + o Voodoo3 3000 AGP + + o Voodoo3 3000 PCI + + o Voodoo3 2000 AGP + + o Voodoo3 2000 PCI + + o Voodoo Banshee + + o Velocity 100/200 + + There are many configurations of 3dfx cards on the market. Not all have + been tested. + + o 3Dlabs Oxygen GMX 2000 (MX/Gamma based) + +Support for the following hardware is underway: + + o Intel i810 + + o Matrox G400 + + o ATI Rage 128 + + o 3dfx Voodoo4 and Voodoo5 series + +4. Prerequisite Software + + o XFree86 4.0 + + o Linux kernel 2.2.x (later kernels will be supported in the near future, + and may be required for some chipsets) + +Mesa 3.3 (beta) is included with XFree86 4.0; there is no need to download +the stand-alone Mesa distribution. + +5. X Server Start-up + +This section describes the steps needed to start the X server with 3D accel- +eration support. + +5.1 Kernel module + +Before starting the X server you must install the correct kernel module for +your hardware. + +This can be done by executing the following as root: + + insmod XXX/drivername.o + +For example, on 3dfx hardware, the kernel module is called tdfx.o so you you +would type insmod XXX/tdfx.o + +Verify that the kernel module was installed by checking that /proc/dri/0 +exists. + +5.2 XF86Config file + +First, the XF86Config file must load the GLX and DRI modules: + + Section "Module" + ... + # This loads the GLX module + Load "glx" + # This loads the DRI module + Load "dri" + EndSection + +Next, the DRI section can be used to restrict access to direct rendering. + +If you want all of the users on your system to be able to use direct-render- +ing, then use a simple DRI section: + + Section "DRI" + Mode 0666 + EndSection + +This section will allow any user with a current connection to the X server to +use direct rendering. + +If you want to restrict the use of direct-rendering to a certain group of +users, then create a group for those users by editing the /etc/group file on +your system. For example, you may want to create a group called xf86dri and +place two users (e.g., fred and jane) in that group. To do that, you might +add the following line to /etc/group: + + xf86dri:x:8000:fred,jane + +You have to be careful that the group id (8000 in this example) is unique. + +Then you would use the following DRI section: + + Section "DRI" + Group "xf86dri" + Mode 0660 + EndSection + +This would limit access to direct-rendering to those users in the xf86dri +group (fred and jane in this example). When other users tried to use direct +rendering, they would fall back to unaccelerated indirect rendering. + +[Note that there is a known bug in XFree86 4.0 that prevents some changes to +the DRI section from taking effect. Until this bug is fixed, if you change +the DRI section, please also remove the /dev/dri directory with the rm -rf +/dev/dri command.] + +Next, the Device section of the XF86Config file must describe your particular +hardware. For example, here's the Device section for a 3dfx Voodoo3 card: + + Section "Device" + Identifier "Voodoo3" + VendorName "3dfx" + Driver "tdfx" + EndSection + +Finally, the Screen section of the XF86Config file may have to be specially +configured as well. For example, Voodoo3 hardware acceleration is only +available in 16bpp mode. + + Section "Screen" + Identifier "Screen 1" + Device "Voodoo3" + Monitor "High Res Monitor" + DefaultDepth 16 + Subsection "Display" + Depth 16 + Modes "1280x1024" "1024x768" "800x600" "640x480" + ViewPort 0 0 + EndSubsection + EndSection + +If there are errors in the XF86Config file, the X server will log errors to +the file /var/log/XFree86.0.log + +5.3 Memory usage + +Using the 3D features of a graphics card requires more memory than when it's +just used as a 2D device. Double buffering, depth buffering, stencil +buffers, textures, etc. all require extra graphics memory. These features +may require four times the memory used for a simple 2D display. + +If your graphics card doesn't have a lot of memory (less than 16MB, for exam- +ple), you may have to reduce your screen size and/or color depth in order to +use 3D features. + +The documentation included with your card should have information about maxi- +mum screen size when using 3D. + +6. Using 3D Acceleration + +This section describes how to link your application with libGL.so and verify +that you are in fact using 3D acceleration. + +6.1 libGL.so + +Your OpenGL program must link with the libGL.so.1.2 library provided by +XFree86 4.0. The libGL.so.1.2 library contains a GLX protocol encoder for +indirect/remote rendering and DRI code for accessing hardware drivers. In +particular, be sure you're not using libGL.so from another source such as +Mesa or the Utah GLX project. + +Unless it was built in a special way, the libGL.so library does not contain +any 3D hardware driver code. Instead, libGL.so dynamically loads the appro- +priate 3D driver during initialization. + +Most simple OpenGL programs also use the GLUT and GLU libraries. A source +for these libraries is listed in the Resources section below. + +6.2 Compiling and linking an OpenGL program + +A simple GLUT/OpenGL program may be compiled and linked as follows: + + gcc program.c -I/usr/local/include -L/usr/local/lib -L/usr/X11R6/lib -lglut -lGLU -lGL -o program + +The -I option is used to specify where the GL/glut.h (and possibly the +GL/gl.h and GL/glu.h) header file may be found. + +The -L options specify where the libglut.so, libGLU.so and X libraries are +located. + +The -lglut -lGLU -lGL arguments specify that the application should link with +the GLUT, GLU and GL libraries. + +6.3 Running your OpenGL program + +Simply typing ./program in your shell should execute the program. + +If you get an error message such as + + gears: error in loading shared libraries: libGL.so.1: cannot + open shared object file: No such file or directory + +if means that the libGL.so.1 file is not the right location. Proceed to the +trouble shooting section. + +6.4 glxinfo + +glxinfo is a useful program for checking which version of libGL you're using +as well as which DRI-based driver. Simply type glxinfo and examine the +OpenGL vendor, renderer, and version lines. Among the output you should see +something like this: + + OpenGL vendor string: Precision Insight, Inc. + OpenGL renderer string: Mesa DRI Voodoo3 20000224 + OpenGL version string: 1.2 Mesa 3.3 beta + +or this: + + OpenGL vendor string: Precision Insight, Inc. + OpenGL renderer string: Mesa GLX Indirect + OpenGL version string: 1.2 Mesa 3.3 beta + +The first example indicates that the 3dfx driver is using Voodoo3 hardware. +The second example indicates that no hardware driver was found and indirect, +unaccelerated rendering is being used. + +If you see that indirect rendering is being used when direct rendering was +expected, proceed to the troubleshooting section. + +glxinfo also lists all of the GLX-enhanced visuals available. Here you can +determine which visuals may have depth buffers, stencil buffers, accumulation +buffers, etc. + +6.5 Environment Variables + +The libGL.so library recognizes three environment variables. Normally, none +of them need to be defined. If you're using the csh or tcsh shells, type +setenv VARNAME value to set the variable. Otherwise, if you're using sh or +bash, type export VARNAME=value. + + 1. LIBGL_DEBUG, if defined will cause libGL.so to print error and diagnos- + tic messages. This can help to solve problems. + + 2. LIBGL_ALWAYS_INDIRECT, if defined this will force libGL.so to always + use indirect rendering instead of hardware acceleration. This can be + useful to isolate rendering errors. + + 3. LIBGL_DRIVERS_DIR can be used to override the default directory which + is searched for 3D drivers. In a typical XFree86 installation, the 3D + drivers should be in /usr/X11R6/lib/modules/dri/. This environment + variable can be used to specify a different directory. Note that this + feature is disabled for set-uid programs. + +Mesa-based drivers (this includes most of the drivers listed above) also +observe many of the existing Mesa environment variables. These include the +MESA_DEBUG and MESA_INFO variables. + +7. General Trouble Shooting + +This section contains information to help you diagnose general problems. See +below for additional information for specific hardware. + +7.1 Starting the X server + + 1. Before you start the X server, verify the appropriate 3D kernel module + is installed. Type lsmod and look for the appropriate kernel module. + For 3dfx hardware you should see tdfx, for example. + + 2. Verify you're running XFree86 4.0 and not an older version. If you run + xdpyinfo and look for the following line near the top: + + vendor release number: 4000 + + 3. Verify that your XF86Config file (usually found at /etc/X11/XF86Config) + loads the glx and dri modules and has a DRI section. + + See the Software Resources section below for sample XF86Config files. + + 4. Examine the messages printed during X server startup and check that the + DRM module loaded. Using the Voodoo3 as an example: + + (==) TDFX(0): Write-combining range (0xf0000000,0x2000000) + (II) TDFX(0): Textures Memory 7.93 MB + (0): [drm] created "tdfx" driver at busid "PCI:1:0:0" + (0): [drm] added 4096 byte SAREA at 0xc65dd000 + (0): [drm] mapped SAREA 0xc65dd000 to 0x40013000 + (0): [drm] framebuffer handle = 0xf0000000 + (0): [drm] added 1 reserved context for kernel + (II) TDFX(0): [drm] Registers = 0xfc000000 + (II) TDFX(0): visual configs initialized + (II) TDFX(0): Using XFree86 Acceleration Architecture (XAA) + Screen to screen bit blits + Solid filled rectangles + 8x8 mono pattern filled rectangles + Indirect CPU to Screen color expansion + Solid Lines + Dashed Lines + Offscreen Pixmaps + Driver provided NonTEGlyphRenderer replacement + Setting up tile and stipple cache: + 10 128x128 slots + (==) TDFX(0): Backing store disabled + (==) TDFX(0): Silken mouse enabled + (0): X context handle = 0x00000001 + (0): [drm] installed DRM signal handler + (0): [DRI] installation complete + (II) TDFX(0): direct rendering enabled + + 5. After the X server has started, verify that the required X server + extensions are loaded. Run xdpyinfo and look for the following entries + in the extensions list: + + GLX + SGI-GLX + XFree86-DRI + +7.2 Linking, running and verifying 3D acceleration + +After you've verified that the X server and DRI have started correctly it's +time to verify that the GL library and hardware drivers are working cor- +rectly. + + 1. Verify that you're using the correct libGL.so library with ldd. The + /usr/lib and /usr/X11R6/lib directories are expected locations for + libGL.so. + + Example: + + % ldd /usr/local/bin/glxinfo + libglut.so.3 => /usr/local/lib/libglut.so.3 (0x40019000) + libGLU.so.1 => /usr/local/lib/libGLU.so.1 (0x40051000) + libGL.so.1 => /usr/lib/libGL.so.1 (0x40076000) + libXmu.so.6 => /usr/X11R6/lib/libXmu.so.6 (0x402ee000) + libXi.so.6 => /usr/X11R6/lib/libXi.so.6 (0x40301000) + libm.so.6 => /lib/libm.so.6 (0x40309000) + libc.so.6 => /lib/libc.so.6 (0x40325000) + libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x40419000) + libXt.so.6 => /usr/X11R6/lib/libXt.so.6 (0x404bd000) + libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x40509000) + libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x40512000) + libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x40529000) + libvga.so.1 => /usr/lib/libvga.so.1 (0x40537000) + libpthread.so.0 => /lib/libpthread.so.0 (0x4057d000) + /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) + + 2. You may also double check that libGL.so is in fact DRI-capable. Run + strings libGL.so.1.2 | grep DRI and look for symbols prefixed with + "XF86DRI", such as "XF86DRIQueryExtension". + + 3. To be safe one should run ldconfig after installing libGL.so to be sure + the runtime loader will find the proper library. + + 4. Verify that the appropriate 3D driver is in /usr/X11R6/lib/modules/dri/ + For example, the 3dfx driver will be named tdfx_dri.so. + + 5. Set the LIBGL_DEBUG environment variable. This will cause libGL.so to + print an error message if it fails to load a DRI driver. Any error + message printed should be self-explanatory. + + 6. Run glxinfo. Note the line labeled "OpenGL renderer string". It + should have a value which starts with "Mesa DRI" followed by the name + of your hardware. + + 7. Older Linux OpenGL applications may have been linked against Mesa's GL + library and will not automatically use libGL.so. In some cases, making + symbolic links from the Mesa GL library to libGL.so.1 will solve the + problem: + + ln -s libGL.so.1 libMesaGL.so.3 + + In other cases, the application will have to be relinked against the + new XFree86 libGL.so. + + It is reported that part of the problem is that running ldconfig will + silently rewrite symbolic links based on the SONAME field in libraries. + +If you're still having trouble, look in the next section for information spe- +cific to your graphics card. + +8. Hardware-Specific Information and Troubleshooting + +This section presents hardware-specific information for normal use and trou- +bleshooting. + +8.1 3dfx Voodoo3 + +8.1.1 Troubleshooting + + o 3D acceleration for Voodoo3 is only supported in the 16 bit/pixel screen + mode. Use xdpyinfo to verify that all your visuals are depth 16. Edit + your XF86Config file if needed. + +8.1.2 Performance + + o Normally, buffer swapping in double-buffered applications is synchro- + nized to your monitor's refresh rate. This may be overridden by setting + the FX_GLIDE_SWAPINTERNVAL environment variable. The value of this + variable indicates the maximum number of swap buffer commands can be + buffered. Zero allows maximum frame rate. + + o The glTexEnv mode GL_BLEND is not directly supported by the 3dfx hard- + ware. It can be accomplished with a multipass algorithm but it's not + implemented at this time. Applications which use that mode, such as the + Performer Town demo, may become sluggish when falling back to software + rendering to render in that mode. + +8.1.3 Known Problems + + o SSystem has problems because of poorly set near and far clipping planes. + The office.unc Performer model also suffers from this problem. + +8.2 Intel i810 + +8.3 Matrox G400 + +8.4 ATI Rage 128 + +8.5 3DLabs Oxygen GMX 2000 + +The driver for this hardware was experimental and is no longer being devel- +oped or supported. + +9. Limitations and Known Bugs + +9.1 OpenGL + +The following OpenGL features are not supported at this time: overlays, +stereo, hardware-accelerated indirect rendering. + +OpenGL-like functionality is provided with the Mesa library. XFree86 4.0 +uses a beta version Mesa 3.3. When newer versions of Mesa are available, the +3D drivers can be updated without reinstalling XFree86 or libGL.so. + +9.2 GLX + +The GLX 1.3 API is exported but none of the new 1.3 functions are opera- +tional. + +The new glXGetProcAddressARB function is fully supported. + +9.3 Signal Handling + +There are several understood, but unresolved problems relating to hardware +locking and signal handling. Hitting CTRL-z to suspend a 3D application can +sometimes cause the X server to lock-up if executing device driver code at +that moment. Also, using a debugger to step through OpenGL/Mesa device +driver functions code could cause a lock-up. These problems will be fixed in +the future. + +9.4 Scheduling + +When you run multiple GL applications at once you may notice poor time slic- +ing. This is due to an interaction problem with the Linux scheduler which +will be addressed in the future. + +9.5 Bug Database + +The DRI bug database which includes bugs related to specific drivers is at +the SourceForge DRI Bug Database + +Please scan both the open and closed bug lists to determine if your problem +has already been reported and perhaps fixed. + +10. Resources + +10.1 Software + +A collection of useful configuration files, libraries, headers, utilities and +demo programs is available from http://dri.source- +forge.net/resources/resources.html + +10.2 Documentation + + o General OpenGL information is available at the OpenGL Home Page + + o XFree86 information is available at the XFree86 Home Page + + o Information about the design of the DRI is available from Precision + Insight, Inc. + + o Visit the DRI project on SourceForge.net for the latest development news + about the DRI and 3D drivers. + +10.3 Support + + o The DRI-users mailing list at SourceForge is a forum for people to dis- + cuss DRI problems. + + o XXX IHV support? + + o XXX Linux distro support? + + Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/DRI.sgml,v 1.3 2000/03/08 05:38:41 dawes Exp $ + + +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.DRI,v 1.4 2000/03/08 20:39:22 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.FreeBSD diff -u xc/programs/Xserver/hw/xfree86/doc/README.FreeBSD:1.5 xc/programs/Xserver/hw/xfree86/doc/README.FreeBSD:1.6 --- xc/programs/Xserver/hw/xfree86/doc/README.FreeBSD:1.5 Wed Mar 8 16:30:49 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.FreeBSD Wed Mar 8 16:30:49 2000 @@ -298,4 +298,4 @@ $XConsortium: FreeBSD.sgml /main/12 1996/10/28 05:43:08 kaleb $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.FreeBSD,v 1.5 2000/02/21 22:44:21 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.FreeBSD,v 1.6 2000/03/01 01:48:05 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.I128 diff -u xc/programs/Xserver/hw/xfree86/doc/README.I128:1.5 xc/programs/Xserver/hw/xfree86/doc/README.I128:1.6 --- xc/programs/Xserver/hw/xfree86/doc/README.I128:1.5 Wed Mar 8 16:30:50 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.I128 Wed Mar 8 16:30:50 2000 @@ -92,4 +92,4 @@ Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/I128.sgml,v 1.3 1999/08/28 10:43:32 dawes Exp $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.I128,v 1.5 2000/02/21 22:44:22 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.I128,v 1.6 2000/03/01 01:48:05 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.Linux diff -u xc/programs/Xserver/hw/xfree86/doc/README.Linux:3.25 xc/programs/Xserver/hw/xfree86/doc/README.Linux:3.26 --- xc/programs/Xserver/hw/xfree86/doc/README.Linux:3.25 Wed Mar 8 16:30:50 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.Linux Wed Mar 8 16:30:50 2000 @@ -125,4 +125,4 @@ $XConsortium: Linux.sgml /main/6 1996/10/28 04:47:37 kaleb $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.Linux,v 3.25 2000/02/21 22:44:22 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.Linux,v 3.26 2000/03/01 01:48:05 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.LynxOS diff -u xc/programs/Xserver/hw/xfree86/doc/README.LynxOS:3.24 xc/programs/Xserver/hw/xfree86/doc/README.LynxOS:3.26 --- xc/programs/Xserver/hw/xfree86/doc/README.LynxOS:3.24 Wed Mar 8 16:30:50 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.LynxOS Wed Mar 8 16:30:50 2000 @@ -1,54 +1,50 @@ - README for XFree86 on LynxOS + README for XFree86 4.0 on LynxOS Thomas Mueller - Last modified on: 30 May 1999 + 25 February 2000 1. What and Where is XFree86? -XFree86 is a port of X11R6.3 that supports several versions of Intel-based +XFree86 is a port of X11R6.4 that supports several versions of Intel-based Unix. It is derived from X386 1.2, which was the X server distributed with X11R5. This release consists of many new features and performance improve- -ments as well as many bug fixes. The release is available as source patches -against the X Consortium X11R6.3 code, as well as binary distributions for -many architectures. +ments as well as many bug fixes. -See the Copyright Notice in Copyright Notice. +See the Copyright Notice. -The sources for XFree86 are available by anonymous ftp from: +The sources for XFree86 4.0 are available by anonymous ftp from: -ftp://ftp.XFree86.org/pub/XFree86/current +ftp://ftp.XFree86.org/pub/XFree86/4.0 -Binaries of XFree86 for LynxOS AT are available from: +Binaries of XFree86 for LynxOS x86 are available from: -ftp://ftp.XFree86.org/pub/XFree86/current/binaries/LynxOS +ftp://ftp.XFree86.org/pub/XFree86/4.0/binaries/LynxOS -The binaries were built on `LynxOS x86 3.0.1'. Because of changes made to the -object format they don't run on LynxOS versions earlier than 3.0.0. +A list of mirror sites is provided by ftp://ftp.XFree86.org/pub/XFree86/MIR- +RORS + +The binaries on the FTP site were built on the latest released LynxOS version +at the time XFree86 4.0 was released. In this case it is `LynxOS x86 3.0.1'. +Because of changes made to the object format they don't run on LynxOS ver- +sions earlier than 3.0.0. Building of this XFree86 version has never been tested on LynxOS versions -earlier than 2.4.0. Binaries built on LynxOS 2.4.0 are expected to run on -2.3.0 as well. +earlier than 2.5.1. -XFree86 supports LynxOS on the AT, on the microSPARC and on the PowerPC plat- -form. X servers are currently available on the AT and microSPARC platform. -Refer to section Building on microSPARC and PowerPC (section 7., page 1) for -details on XFree86 on the non-AT platforms. +XFree86 4.0 supports LynxOS on the x86 and on the PowerPC platform. X servers +are currently available only on the x86 platform. The X server may work with +some PowerPC platforms supported by LynxOS though this has not (yet) been +thoroughly tested. If you need binaries for other platforms than the one on the XFree86 FTP -server contact me (tmueller@sysgo.de). - -Send email to tmueller@sysgo.de (Thomas Mueller) or XFree86@XFree86.org if -you have comments or suggestions about this file and we'll revise it. +server or if you have comments or suggestions about this document contact me +(). 2. Installing the Binaries -Please refer to section "Installing the XFree86 3.3.4 Release" of the Release -Notes for detailed installation instructions. - -If you plan to install XF86Setup you'll have to install X333prog as well -since XF86Setup checks for the existence of a certain file name pattern which -is satisfied only if you install the library files from X333prog. +Please refer to the Installation Document for detailed installation instruc- +tions. It may be necessary to increase the process stack limit in order to run XFree86 on your system. Edit /etc/startab and reboot your system to make the @@ -60,96 +56,91 @@ information on necessary configuration steps before running XFree86 on LynxOS. +2.1 Accessing XFree86 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 XFree86 This section describes the changes to the LynxOS environment which may be necessary to successfully run XFree86. -Read Quick-Start Guide to XFree86 Setup to learn more about how to configure -XFree86 for your hardware. - -3.1 System requirements - -A minimum of 16MB of memory is required to run X. If you want to run real- -world applications you should think of upgrading to 32MB (or more). +3.1 System tuning -3.2 System tuning - -3.2.1 Tunable parameters +3.1.1 Tunable parameters To reasonably run XFree86 you may have to adjust a few system parameters. On LynxOS 2.5.x and 3.0.x include a line - #define X_WINDOWS + #define X_WINDOWS in /sys/lynx.os/uparam.h. -For earlier versions you'll have to edit /usr/include/param.h: +3.1.2 Adjustment for "nv" driver for NVidia graphics cards - Tunable Old New - USR_NFDS number of open files per process 20 64 - NPROC number of tasks 50 150 - NFILES number of open files in system 100 250 - NINODES number of incore inodes (same value as NFILES) - QUANTUM clock ticks until preemption 64 20 - CACHEBLKS number of cache memory blocks 202 >= 4096 - -The new values are those suggested by the LynxOS documentation for their X -Window package. - -3.2.2 Adjustment for Riva 128 and Riva TNT driver> - -If you're using the nVidia driver (Riva 128, TNT, TNT2) of the SVGA server, -you will have to increase the value of the SMEMS parameter in -/sys/lynx.os/uparam.h from 10 to 20." +If you're using the "nv" driver (Riva 128, nVidia TNT, TNT2, GeForce), you +will have to increase the value of the SMEMS parameter in +/sys/lynx.os/uparam.h from 10 to 20. -3.2.3 Increase number of ptys +3.1.3 Increase number of ptys You should also increase the number of ptys to be able run a couple more -xterms. You may replace /sys/lynx.os/pty.cfg with -/usr/X11R6/lib/X11/etc/pty.cfg. +xterms. You may replace /sys/cfg/pty.cfg with /usr/X11R6/lib/X11/etc/pty.cfg. + +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 XFree86 +X server to manipulate the CPU memory type range registers which may improve +performance on certain systems. + +To install the driver (on LynxOS x86 2.5.0 systems an higher) follow these +steps: + + # cd / + # bash /usr/X11R6/lib/X11/etc/MTRR-Lynx.shar + # cd sys/drivers/mtrr + # make install + +Then add a line + + I:../drivers/mtrr/mtrr.cfg -3.2.4 Kernel build +to /sys/lynx.os/CONFIG.TBL and rebuild the kernel (see next section). -If you plan to use PS/2 or Bus mice refer to the following section before -rebuilding the kernel, if not, you should rebuild the kernel now: +3.1.5 Kernel build + +If you plan to use a PS/2 mouse to the following sections before rebuilding +the kernel, if not, you should rebuild the kernel now: # cd /sys/lynx.os # make install # reboot -N -3.3 Mouse support in XFree86 +3.2 Mouse support in XFree86 XFree86 includes support for PnP mice (see also Mouse Support in XFree86). 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.4 Bus mouse drivers +3.3 PS/2 mouse drivers -Starting with LynxOS AT 2.4.0 LynxOS includes a PS/2 mouse driver. Currently -this driver is not fully supported by XFree86 (you'll probably have to spec- -ify the mouse type as Microsoft regardless of real mouse type and in some -cases you won't have all mouse buttons supported). -/usr/X11R6/lib/X11/etc/BM-Lynx.shar contains a LynxOS port of the Linux bus -mouse drivers. To install the drivers unpack the shar archive - - # cd / - # bash /usr/X11R6/lib/X11/etc/BM-Lynx.shar - -and follow the notes in /BMOUSE.Readme for further installation and configu- -ration notes. - -The XFree86 PS/2 mouse driver works also with MetroLink X 2.3.3.1 as shipped -with LynxOS AT 2.4.0 unless you have the LynxOS patch 000055-00 installed. - -3.5 ATC console driver and VT switching - -The XFree86 servers will only run with the default LynxOS console driver, -sorry for those of you who use the alternative vdt console driver. Currently -there is no support for virtual terminal switching once the server has -started. +LynxOS x86 comes with a PS/2 mouse driver. If it is not currently installed +on your system install it with /usr/bin/Install.ps2mouse. Older versions of +this driver contained code to translate the PS/2 mouse protocol to the format +of a serial mouse, thus you'll have to specify "Microsoft" as the mouse pro- +tocol format. The mouse driver contained in LynxOS x86 patchlevel 015 (and +higher) does no longer perform the protocol translation an therefore can be +defined as "PS/2" protocol format. + +3.4 ATC console driver and VT switching + +Currently there is no support for virtual terminal switching once the server +has started. Support for this feature may be added in future versions (it +requires a patch to the vt100 LynxOS terminal driver). You will need a free console which the X server will use for keyboard input. You must disable login on at least one of the four virtual terminals in @@ -164,253 +155,69 @@ /dev/atc3:0:default:vt100at:/bin/login ^ -3.6 X Server debug diagnostics output and other VT peculiarities +3.5 X Server debug diagnostics output and other VT peculiarities -The XFree86 X servers will produce a lot of diagnostics output on stderr dur- -ing startup. This output will be lost after the server reached a certain -point in its console initialization process. You should redirect stdout and -stderr if you want to analyze the diagnostics produced by the server. +Output made by the XFree86 X on its stdout or stderr will be lost after the +server switches to graphics mode. The XFree86 4.0 server stores its output in +/usr/adm/XFree86.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. Installing XFree86 manual pages +4. Compiling the XFree86 Distribution -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). Starting with LynxOS 2.3.0 it should -compile right out of the box (or better tar archive). +The next sections contain LynxOS specific notes with respect to the build +process. -XFree86 manual pages may be installed using - - make install.man - -The index and whatis database for the XFree86 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: - - for i in 1 3 5 - do - rm -f /tmp/tmpfile - sort /usr/X11R6/man/cat$i/LIST$i | uniq > /tmp/tmpfile - mv /tmp/tmpfile /usr/X11R6/man/cat$i/LIST$i - done - sort /usr/X11R6/man/whatis | uniq > /tmp/tmpfile - mv /tmp/tmpfile /usr/X11R6/man/whatis - -With LynxOS 2.3.0 you should include /usr/X11R6/man in the MANPATH environ- -ment variable. - - bash: MANPATH=$MANPATH:/usr/X11R6/man - -The man command of LynxOS 2.2.1 does not support the MANPATH environment -variable properly. The XFree86 manual pages must be copied (or linked) to the -standard manual page locations (/usr/man/catx) in order to be read the man -command: - - for i in 1 3 5 - do - ln -s /usr/X11R6/man/cat$i/*.* /usr/man/cat$i - cat /usr/X11R6/man/cat$i/LIST$i >> /usr/man/cat$i/LIST$i - sort -o /usr/man/cat$i/LIST$i /usr/man/cat$i/LIST$i - cat /usr/X11R6/man/cat$i/whatis$i >> /usr/man/whatis - done - -5. Using XFree86 with Motif - -The Motif libraries shipped with LynxOS AT 2.3.0 and 2.4.0 can be used with -the XFree86 libraries. Follow the steps outlined below after you have -installed XFree86 and LynxOS Motif on your system. - -5.1 Copy Motif files - -You must create symbolic links for the Motif libraries and utilities in the -/usr/X11R6 directory tree. - - ln -s /usr/bin/X11/uil /usr/X11R6/bin - ln -s /usr/lib/libUil.a /usr/X11R6/lib - ln -s /usr/lib/libMrm.a /usr/X11R6/lib - ln -s /usr/lib/libXm.a /usr/X11R6/lib - ln -s /usr/lib/X11/uid /usr/X11R6/lib/X11 - ln -s /usr/include/Xm /usr/X11R6/include - ln -s /usr/include/Mrm /usr/X11R6/include - ln -s /usr/include/uil /usr/X11R6/include - -The Motif imake-configuration files are part of the LynxOS X Window package. -They must be copied to the /usr/X11R6 directory tree. - - cp /usr/lib/X11/config/Motif.* /usr/X11R6/lib/X11/config - -5.2 Motif library patch for LynxOS AT 2.3.0 - -The XFree86 libraries are compiled with the -mposix compiler option while the -Motif libraries shipped with LynxOS AT 2.3.0 are not. This incompatibility -will cause Motif XmFileSelection widgets to be linked with the wrong (i.e. -POSIX) directory routines. To circumvent this problem apply the following -patch to the library: - - cp /usr/lib/libXm.a /usr/X11R6/lib - ar x /usr/X11R6/lib/libXm.a Xmos.o - ar x /lib/libc.a directory.s.o - ld -r -o x.o Xmos.o directory.s.o - mv x.o Xmos.o - ar r /usr/X11R6/lib/libXm.a Xmos.o - -This patch is not necessary for LynxOS revisions after 2.3.0. - -5.3 X11R6 config file patch - -Edit /usr/X11R6/lib/X11/config/lynx.cf and change the definition of HasMotif -from - - #define HasMotif NO - -to - - #define HasMotif YES - -5.4 Motif config file patch - -The file Motif.tmpl shipped with LynxOS Motif must be modified to work with -XFree86. In every reference to UnsharedLibReferences the first argument must -be changed from - - UnsharedLibReferences(LIB, Arg2, Arg3) - -to - - UnsharedLibReferences(, Arg2, Arg3) - -Be sure to apply the change to the file copied to /usr/X11R6/lib/X11/config. - -6. Compiling the XFree86 Distribution - -Before trying to rebuild XFree86 from source read Building XFree86 for a -detailed description of the build process. The next sections contain LynxOS -specific notes with respect to the build process. - -6.1 Disk space requirements +4.1 Disk space requirements Currently there is no support for shared libraries in the LynxOS XFree86 port. A complete binary installation along with manual pages will require -approximately 90-100 MBytes of disk space. To compile the system you will -need at least 230 MBytes of free disk space. +approximately 100 MBytes of disk space. To compile the system you will need +at least 250 MBytes of free disk space. -6.2 Changes to system environment (LynxOS AT) +4.2 Changes to system environment (LynxOS x86) Before compiling the XFree86 distribution you will have to make a few little adjustments to your system: - LynxOS AT 2.5 - - o Create a shell script named /lib/cpp as follows: - - #!/bin/sh - /usr/lib/gcc-lib/i386-unknown-lynxos2.5/2.7-96q1/cpp \ - -traditional "$@" - - On other platforms than the AT the paths for the compiler - support programs are different. You may use - - gcc -v - - to find out the correct path. Set the file mode of /lib/cpp - with - - # chown root /lib/cpp - # chmod 755 /lib/cpp - - o Modify /lib/liblynx.a. The X servers need the smem_create() - system call to map the frame buffer into their address - space. The system call is in liblynx library along with - other Lynx proprietary calls which (unfortunately) overlap - with calls in libc. To reduce confusion you should modify - liblynx as follows: - - # mv /lib/liblynx.a /lib/liblynx.a.ORG - # mkdir /tmp/xx; cd /tmp/xx - # ar xv /lib/liblynx.a.ORG - # ar rv /lib/liblynx.a *smem* - # ranlib /lib/liblynx.a - - LynxOS AT 2.4 - - o Use the CYGNUS GNU-C Compiler to build XFree86. With LynxOS - 2.4.0 you must execute the shell script /CYGNUS.bash to - apply the necessary changes to your environment. - - o Create a shell script named /lib/cpp as follows: - - #!/bin/sh - /cygnus/94q4-lynxos-x86/lib/gcc-lib/i386-lynx/2.6-94q4/cpp \ - -traditional "$@" - - It is possible that future releases use a different path for - the CYGNUS compiler support programs. You may use - - gcc -v + o If not already installed on your system create a shell script named + /lib/cpp as follows: - to find out the correct path. Set the file mode of /lib/cpp - with + #!/bin/sh + /usr/lib/gcc-lib/i386-unknown-lynxos2.5/2.7-96q1/cpp \ + -traditional "$@" - # chown root /lib/cpp - # chmod 755 /lib/cpp + On other platforms than the x86 the paths for the compiler support pro- + grams are different. You may use - LynxOS AT 2.3 - This has actually not been tested, but the steps for described - for 2.4 should apply to 2.3 as well. + gcc -v - LynxOS AT 2.2.1 - This has actually never been tested, be prepared that the build - will fail somewhere! + to find out the correct path. Set the file mode of /lib/cpp with - o Create a shell script named /lib/cpp as follows: + # chown root /lib/cpp + # chmod 755 /lib/cpp - #!/bin/sh - /usr/local/lib/gcc-cpp -traditional "$@" + o Modify /lib/liblynx.a. The X servers need the smem_create() system call + to map the frame buffer into their address space. The system call is in + liblynx library along with other Lynx proprietary calls which (unfortu- + nately) overlap with calls in libc. To reduce confusion you should mod- + ify liblynx as follows: - o The loader /bin/ld of LynxOS 2.2.1 does not support the -L - option which is heavily used by X11R6 makefiles. To work - around this problem you must install a small wrapper program - which replaces the original /bin/ld program. Use the follow- - ing steps to install it: + # mv /lib/liblynx.a /lib/liblynx.a.ORG + # mkdir /tmp/xx; cd /tmp/xx + # ar xv /lib/liblynx.a.ORG + # ar rv /lib/liblynx.a *smem* + # ranlib /lib/liblynx.a - # cd xc/programs/Xserver/hw/xfree/etc - # cc -o ld ld-wrapper.c - # mv /bin/ld /bin/ld.org - # mv ld /bin/ld - # chmod 511 /bin/ld - # chown root /bin/ld +4.3 make World - o Modify system header files as follows: +If you have the MTRR device driver installed, add a line - /usr/include/uio.h - surrounded by + #define HasMTRRSupport YES - #ifndef _UIO_H - #define _UIO_H - ... - #endif - - /usr/include/utmp.h - surrounded by - - #ifndef _UTMP_H - #define _UTMP_H - ... - #endif - - /usr/include/unistd.h - add - - extern int read(); - -6.3 make World - -Read Building XFree86 before trying to rebuild XFree86 from the source dis- -tribution. +to the config/cf/host.def file. You may then issue a @@ -422,73 +229,36 @@ make install You must be logged in as super-user (root) when you invoke `make install'. -Be sure to set your environment to use the same compiler (LynxOS 2.3.0/2.4.0, -CYGNUS GNU-C) as you did during the `make World'. To install the LinkKit use - - make install.linkkit -With LynxOS 2.2.1 programs will not be stripped during installation. This is -due to a problem with the strip program which shows up when installing across -file system boundaries. - -Refer to section Installing XFree86 manual pages (section 4., page 1) for -manual page installation. - -On LynxOS AT 2.5.0 you may encounter problems with make in deeply nested sub- -directories (eg core dumps, hangups). In this case update to GNU make version -3.75 or higher. - -7. Building on microSPARC and PowerPC - -XFree86 3.3 compiles on LynxOS microSPARC and on LynxOS PPC as well. On the -microSPARC there is X server support for the colour frame buffers CG3 and CG6 -while on the PPC there is no X server available at this time. Before you -start the build (on versions earlier than 2.5.0) you must create a symbolic -link from the CYGNUS gcc to a file named cc somewhere in a directory included -in your PATH environment variable. - -7.1 Console driver patch for microSPARC - -Before building on the microSPARC you should install the patch for the con- -sole driver supplied in xc/programs/Xserver/hw/sunLynx/patch.Console. -(xc/programs/Xserver/hw/sunLynx/patch.Console-2.4.0 for LynxOS revisions ear- -lier than 2.5.0). The patch fixes minor problems in the original LynxOS -driver and adds functionalities to detect the keyboard type and control the -key click. To create a backup of the original driver and install the patch -issue the commands - - # cd / - # tar cf /sys/drivers/console.tar /sys/drivers/console - # patch -p -E < xc/programs/Xserver/hw/sunLynx/patch.Console - # cd /sys/drivers/console - # make install - # cd /sys/lynx.os - # make install - # reboot -a +On LynxOS x86 2.5.0 you may encounter problems with make in deeply nested +subdirectories (eg core dumps, hangups). In this case update to GNU make ver- +sion 3.75 or higher. -If you opt not to install the patch you must edit xc/config/cf/lynx.cf and -change the definition of SparcConsoleDefines from +4.4 Installing XFree86 manual pages - #define SparcConsoleDefines -DPATCHED_CONSOLE - -to - - #define SparcConsoleDefines /* -DPATCHED_CONSOLE */ +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). -7.2 Known Bug of the microSPARC server +XFree86 manual pages may be installed using -On the first start of the X server on the microSPARC you will notice that the -pointer follows mouse movements with a certain delay (especially if you're -moving the mouse real fast). You will also notice that moving windows with -certain window managers (eg mwm) is not working correctly. These effects -should go away on the next server start. + make install.man -The server for monochrome cards builds properly if you enable it in lynx.cf -but it has never been tested (reports are welcome). +The index and whatis database for the XFree86 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: - Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/LynxOS.sgml,v 3.17 1999/08/23 06:38:47 dawes Exp $ + for i in 1 3 5 + do + rm -f /tmp/tmpfile + sort /usr/X11R6/man/cat$i/LIST$i | uniq > /tmp/tmpfile + mv /tmp/tmpfile /usr/X11R6/man/cat$i/LIST$i + done + sort /usr/X11R6/man/whatis | uniq > /tmp/tmpfile + mv /tmp/tmpfile /usr/X11R6/man/whatis - $XConsortium: LynxOS.sgml /main/10 1996/10/28 05:13:07 kaleb $ + Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/LynxOS.sgml,v 3.19 2000/03/03 21:28:08 dawes Exp $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.LynxOS,v 3.24 2000/02/21 22:44:23 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.LynxOS,v 3.26 2000/03/04 00:51:29 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.MGA diff -u xc/programs/Xserver/hw/xfree86/doc/README.MGA:3.13 xc/programs/Xserver/hw/xfree86/doc/README.MGA:3.14 --- xc/programs/Xserver/hw/xfree86/doc/README.MGA:3.13 Wed Mar 8 16:30:50 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.MGA Wed Mar 8 16:30:50 2000 @@ -195,4 +195,4 @@ Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/MGA.sgml,v 3.9 1999/11/19 13:54:27 hohndel Exp $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.MGA,v 3.13 2000/02/21 22:44:23 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.MGA,v 3.14 2000/03/01 01:48:07 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.NVIDIA diff -u xc/programs/Xserver/hw/xfree86/doc/README.NVIDIA:1.4 xc/programs/Xserver/hw/xfree86/doc/README.NVIDIA:1.5 --- xc/programs/Xserver/hw/xfree86/doc/README.NVIDIA:1.4 Wed Mar 8 16:30:50 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.NVIDIA Wed Mar 8 16:30:50 2000 @@ -54,4 +54,4 @@ Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/NVIDIA.sgml,v 1.2 1999/08/23 06:18:33 dawes Exp $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.NVIDIA,v 1.4 2000/02/21 22:44:24 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.NVIDIA,v 1.5 2000/03/01 01:48:07 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.NetBSD diff -u xc/programs/Xserver/hw/xfree86/doc/README.NetBSD:3.66 xc/programs/Xserver/hw/xfree86/doc/README.NetBSD:3.68 --- xc/programs/Xserver/hw/xfree86/doc/README.NetBSD:3.66 Wed Mar 8 16:30:50 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.NetBSD Wed Mar 8 16:30:50 2000 @@ -1,4 +1,4 @@ - README for XFree86 3.9.18 on NetBSD + README for XFree86 4.0 on NetBSD Rich Murphey, David Dawes, Marc Wandschneider, Mark Weaver, Matthieu Herrb @@ -15,10 +15,10 @@ The sources for XFree86 are available by anonymous ftp from: -ftp://ftp.XFree86.org/pub/XFree86/snapshots/3.9.18 +ftp://ftp.XFree86.org/pub/XFree86/4.0 Binaries for NetBSD 1.3 and later are available from: -ftp://ftp.XFree86.org/pub/XFree86/snapshots/3.9.18/binaries/NetBSD +ftp://ftp.XFree86.org/pub/XFree86/4.0/binaries/NetBSD A list of mirror sites is provided by ftp://ftp.XFree86.org/pub/XFree86/MIR- RORS @@ -30,19 +30,23 @@ 2. Bug Reports for This Document -Send email to herrb@XFree86.Org (Matthieu Herrb) or XFree86@XFree86.org if -you have comments or suggestions about this file and we'll revise it. +Send email to (Matthieu Herrb) or +if you have comments or suggestions about this file and we'll revise it. -3. New OS dependant features +3. New OS dependent features -See the Release Notes for non-OS dependent new features in XFree86 3.9.18. +See the Release Notes for non-OS dependent new features in XFree86 4.0. -3.1 New OS dependent features in 3.9.18 +3.1 New OS dependent features in 4.0 + + o Preliminary APM support. + +3.2 New OS dependent features in 3.9.18 o Soft-booting secondary cards through the int10 BIOS interface is now possible using the x86emu real mode emulator. -3.2 New OS dependent features in 3.9.17 +3.3 New OS dependent features in 3.9.17 o Support for silken mouse with the wsmouse protocol has been added. @@ -51,8 +55,7 @@ 4. Installing the Binaries -Refer to section 5 of the Release Notes for detailed installation instruc- -tions. +Refer to the Installation Document for detailed installation instructions. 5. Configuring X for Your Hardware @@ -84,10 +87,10 @@ send more than three bytes at a time (especially Intellimouse, or MouseMan+ with a ``3D'' roller) are not supported yet. -XFree86 3.9.18 also has support for the mouse driver included in the new -wscons console driver introduced by NetBSD 1.4. Specify ``wsmouse'' as the -protocol and ``/dev/wsmouse0'' as the device in /etc/XF86Config if you're -using NetBSD 1.4 with wscons. +XFree86 4.0 also has support for the mouse driver included in the new wscons +console driver introduced by NetBSD 1.4. Specify ``wsmouse'' as the protocol +and ``/dev/wsmouse0'' as the device in /etc/XF86Config if you're using NetBSD +1.4 with wscons. See README.mouse for general instruction on mouse configuration in XFree86. @@ -191,14 +194,14 @@ access to the /dev/mem device when in multi-users mode. But XFree86 servers can take advantage (or require) linear access to the display memory. -Most XFree86 3.9.18 card drivers require linear memory access. There are two +Most XFree86 4.0 card drivers require linear memory access. There are two ways to allow XFree86 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 XFree86 3.9.18 source +xc/programs/Xserver/hw/xfree86/etc/apNetBSD.shar in the XFree86 4.0 source distribution. Unpack it in a new directory of your choice by running: sh apNetBSD.shar @@ -245,9 +248,6 @@ 8. Rebuilding the XFree86 Distribution -See INSTALL for instructions on unbundling and building the source distribu- -tion. - You should configure the distribution by editing xc/config/cf/host.def before compiling. To compile the sources, invoke ``make World'' in the xc directory. @@ -318,7 +318,7 @@ particular, David Dawes, Pace Willison, Amancio Hasty, Christoph Robitschko, Nate Williams, Rod Grimes, Jack Velte and Michael Smith. - Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/NetBSD.sgml,v 3.52 2000/02/21 18:05:47 dawes Exp $ + Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/NetBSD.sgml,v 3.55 2000/03/03 21:28:09 dawes Exp $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.NetBSD,v 3.66 2000/02/21 22:44:24 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.NetBSD,v 3.68 2000/03/04 00:51:30 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.OS2 diff -u xc/programs/Xserver/hw/xfree86/doc/README.OS2:3.20 xc/programs/Xserver/hw/xfree86/doc/README.OS2:3.21 --- xc/programs/Xserver/hw/xfree86/doc/README.OS2:3.20 Wed Mar 8 16:30:50 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.OS2 Wed Mar 8 16:30:50 2000 @@ -686,4 +686,4 @@ $XConsortium: OS2.sgml /main/4 1996/03/11 10:46:06 kaleb $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.OS2,v 3.20 2000/02/21 22:44:25 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.OS2,v 3.21 2000/03/01 01:48:08 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.Oak diff -u xc/programs/Xserver/hw/xfree86/doc/README.Oak:3.21 xc/programs/Xserver/hw/xfree86/doc/README.Oak:3.22 --- xc/programs/Xserver/hw/xfree86/doc/README.Oak:3.21 Wed Mar 8 16:30:50 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.Oak Wed Mar 8 16:30:50 2000 @@ -168,4 +168,4 @@ $XConsortium: Oak.sgml /main/8 1996/05/12 20:58:00 kaleb $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.Oak,v 3.21 2000/02/21 22:44:26 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.Oak,v 3.22 2000/03/01 01:48:09 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.OpenBSD diff -u xc/programs/Xserver/hw/xfree86/doc/README.OpenBSD:1.9 xc/programs/Xserver/hw/xfree86/doc/README.OpenBSD:1.11 --- xc/programs/Xserver/hw/xfree86/doc/README.OpenBSD:1.9 Wed Mar 8 16:30:50 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.OpenBSD Wed Mar 8 16:30:50 2000 @@ -1,4 +1,4 @@ - README for XFree86 3.9.18 on OpenBSD + README for XFree86 4.0 on OpenBSD Matthieu Herrb @@ -13,13 +13,13 @@ See the Copyright Notice. -The sources for XFree86 3.9.18 are available by anonymous ftp from: +The sources for XFree86 4.0 are available by anonymous ftp from: -ftp://ftp.XFree86.org/pub/XFree86/snapshots/3.9.18 +ftp://ftp.XFree86.org/pub/XFree86/4.0 Binaries for OpenBSD/i386 2.6 and later are available from: -ftp://ftp.XFree86.org/pub/XFree86/snapshots/3.9.18/binaries/OpenBSD +ftp://ftp.XFree86.org/pub/XFree86/4.0/binaries/OpenBSD A list of mirror sites is provided by ftp://ftp.XFree86.org/pub/XFree86/MIR- RORS @@ -29,21 +29,28 @@ 2. Bug Reports for This Document -Send email to herrb@xfree86.org (Matthieu Herrb) or XFree86@XFree86.org if -you have comments or suggestions about this file and we'll revise it. +Send email to (Matthieu Herrb) or +if you have comments or suggestions about this file and we'll revise it. -3. New OS dependant features +3. New OS dependent features -See the Release Notes for non-OS dependent new features in XFree86 3.9.18. +See the Release Notes for non-OS dependent new features in XFree86 4.0. -3.1 New OS dependent features in 3.9.18 +3.1 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.2 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.2 New OS dependent features in 3.9.17 +3.3 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. @@ -52,8 +59,7 @@ 4. Installing the Binaries -Refer to section 5 of the Release Notes for detailed installation instruc- -tions. +Refer to the Installation Document for detailed installation instructions. 5. Configuring X for Your Hardware @@ -184,9 +190,6 @@ the xf86site.def, type ``./mkmf'' and ``make'' to link the server. See /usr/X11R6/lib/Server/README for more info. -See INSTALL for instructions on unbundling and building the source distribu- -tion. - You should configure the distribution by editing xc/config/cf/host.def before compiling. To compile the sources, invoke ``make World'' in the xc directory. @@ -226,7 +229,7 @@ particular, David Dawes, Pace Willison, Amancio Hasty, Christoph Robitschko, Nate Williams, Rod Grimes, Jack Velte and Michael Smith. - Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/OpenBSD.sgml,v 1.7 2000/02/21 18:05:47 dawes Exp $ + Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/OpenBSD.sgml,v 1.10 2000/03/03 21:28:10 dawes Exp $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.OpenBSD,v 1.9 2000/02/21 22:44:26 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.OpenBSD,v 1.11 2000/03/04 00:51:31 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.P9000 diff -u xc/programs/Xserver/hw/xfree86/doc/README.P9000:3.39 xc/programs/Xserver/hw/xfree86/doc/README.P9000:3.40 --- xc/programs/Xserver/hw/xfree86/doc/README.P9000:3.39 Wed Mar 8 16:30:50 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.P9000 Wed Mar 8 16:30:51 2000 @@ -469,4 +469,4 @@ $XConsortium: P9000.sgml /main/9 1996/05/12 20:58:05 kaleb $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.P9000,v 3.39 2000/02/21 22:44:27 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.P9000,v 3.40 2000/03/01 01:48:10 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.S3 diff -u xc/programs/Xserver/hw/xfree86/doc/README.S3:3.55 xc/programs/Xserver/hw/xfree86/doc/README.S3:3.56 --- xc/programs/Xserver/hw/xfree86/doc/README.S3:3.55 Wed Mar 8 16:30:51 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.S3 Wed Mar 8 16:30:51 2000 @@ -810,4 +810,4 @@ $XConsortium: S3.sgml /main/14 1996/02/21 17:45:58 kaleb $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.S3,v 3.55 2000/02/21 22:44:28 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.S3,v 3.56 2000/03/01 01:48:11 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.SCO diff -u xc/programs/Xserver/hw/xfree86/doc/README.SCO:3.30 xc/programs/Xserver/hw/xfree86/doc/README.SCO:3.31 --- xc/programs/Xserver/hw/xfree86/doc/README.SCO:3.30 Wed Mar 8 16:30:51 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.SCO Wed Mar 8 16:30:51 2000 @@ -549,4 +549,4 @@ $XConsortium: SCO.sgml /main/11 1996/10/23 11:45:55 kaleb $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.SCO,v 3.30 2000/02/21 22:44:29 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.SCO,v 3.31 2000/03/01 01:48:12 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.SOLX86 diff -u xc/programs/Xserver/hw/xfree86/doc/README.SOLX86:3.26 xc/programs/Xserver/hw/xfree86/doc/README.SOLX86:3.27 --- xc/programs/Xserver/hw/xfree86/doc/README.SOLX86:3.26 Wed Mar 8 16:30:51 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.SOLX86 Wed Mar 8 16:30:51 2000 @@ -228,4 +228,4 @@ $XConsortium: SOLX86.sgml /main/7 1996/10/28 05:43:28 kaleb $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.SOLX86,v 3.26 2000/02/21 22:44:32 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.SOLX86,v 3.27 2000/03/01 01:48:13 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.SVR4 diff -u xc/programs/Xserver/hw/xfree86/doc/README.SVR4:3.28 xc/programs/Xserver/hw/xfree86/doc/README.SVR4:3.29 --- xc/programs/Xserver/hw/xfree86/doc/README.SVR4:3.28 Wed Mar 8 16:30:51 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.SVR4 Wed Mar 8 16:30:51 2000 @@ -405,4 +405,4 @@ $XConsortium: SVR4.sgml /main/8 1996/10/27 11:06:06 kaleb $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.SVR4,v 3.28 2000/02/21 22:44:32 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.SVR4,v 3.29 2000/03/01 01:48:13 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.SiS diff -u xc/programs/Xserver/hw/xfree86/doc/README.SiS:3.12 xc/programs/Xserver/hw/xfree86/doc/README.SiS:3.14 --- xc/programs/Xserver/hw/xfree86/doc/README.SiS:3.12 Wed Mar 8 16:30:51 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.SiS Wed Mar 8 16:30:51 2000 @@ -1,8 +1,8 @@ Information for SiS Users - Juanjo Santamarta (santamarta@ctv.es) + Juanjo Santamarta () - 17 April 1999 + 5 March 2000 1. Introduction @@ -22,21 +22,11 @@ o XAA support (XFree86 Acceleration Architecture) -2. Supported chips - - SiS 530, SiS 86c2x5, SiS 5597/5598, SiS 6326 - -This driver needs linear framebuffer support in the card. Because this SiS -86C201 and 86C202 based cards don't work with this driver. - -Color expansion is not supported by the engine in 16M-color graphic mode. - -3. XF86Config Options +2. XF86Config Options The following options are of particular interest for the SiS driver. Each of -them must be specified in the `svga' driver section of the XF86Config file, -within the Screen subsections of the depths to which they are applicable (you -can enable options for all depths by specifying them in the Device section). +them must be specified in the Device section of the XF86Config file for this +card. Option "SetMclk" This option lets you to modify the memory clocking of your card. @@ -69,7 +59,19 @@ reduces the possibility of glitches and noise on high resolution modes. -4. Modelines + Option "PciRetry" + + Option "NoAccel" + Disables various hardware accelerations. + + VideoRAM size + The SiS chips can only directly address 4096K bytes of video RAM. + Some video cards using these chips are shipped with additional + video RAM. The videoRAM must be explicitly limited to 4096 for + those cards. Attempting to use the additional RAM leads to a + variety of scrambled screen artifacts. + +3. Modelines When constructing a modeline for use with the Sis driver you'll need to con- sider several points: @@ -101,17 +103,14 @@ 1600x1200 : 4, 8 bpp at 65Hz Non-interlaced -5. Troubleshooting - -The generic VGA driver don't work with 6326, so XF86Setup can't be used for -this card. Please use xf86config instead. +4. Troubleshooting Some video modes with high dot-clocks don't work at all, resulting on black screen. Lowering dotclock in that case could solve the problem. Document based on 3.3 version written by Xavier Ducoin. - Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/SiS.sgml,v 3.6 1999/10/13 04:21:08 dawes Exp $ + Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/SiS.sgml,v 3.7 2000/03/06 22:59:24 dawes Exp $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.SiS,v 3.12 2000/02/21 22:44:33 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.SiS,v 3.14 2000/03/07 14:55:06 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.Video7 diff -u xc/programs/Xserver/hw/xfree86/doc/README.Video7:3.18 xc/programs/Xserver/hw/xfree86/doc/README.Video7:3.19 --- xc/programs/Xserver/hw/xfree86/doc/README.Video7:3.18 Wed Mar 8 16:30:51 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.Video7 Wed Mar 8 16:30:51 2000 @@ -99,4 +99,4 @@ $XConsortium: Video7.sgml /main/3 1996/02/21 17:46:22 kaleb $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.Video7,v 3.18 2000/02/21 22:44:33 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.Video7,v 3.19 2000/03/01 01:48:17 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.WstDig diff -u xc/programs/Xserver/hw/xfree86/doc/README.WstDig:3.20 xc/programs/Xserver/hw/xfree86/doc/README.WstDig:3.21 --- xc/programs/Xserver/hw/xfree86/doc/README.WstDig:3.20 Wed Mar 8 16:30:51 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.WstDig Wed Mar 8 16:30:51 2000 @@ -193,4 +193,4 @@ $XConsortium: WstDig.sgml /main/5 1996/02/21 17:46:29 kaleb $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.WstDig,v 3.20 2000/02/21 22:44:34 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.WstDig,v 3.21 2000/03/01 01:48:18 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.agx diff -u xc/programs/Xserver/hw/xfree86/doc/README.agx:3.40 xc/programs/Xserver/hw/xfree86/doc/README.agx:3.41 --- xc/programs/Xserver/hw/xfree86/doc/README.agx:3.40 Wed Mar 8 16:30:51 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.agx Wed Mar 8 16:30:51 2000 @@ -534,4 +534,4 @@ $XConsortium: agx.sgml /main/9 1996/10/19 18:03:50 kaleb $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.agx,v 3.40 2000/02/21 22:44:34 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.agx,v 3.41 2000/03/01 01:48:18 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.apm diff -u xc/programs/Xserver/hw/xfree86/doc/README.apm:1.4 xc/programs/Xserver/hw/xfree86/doc/README.apm:1.6 --- xc/programs/Xserver/hw/xfree86/doc/README.apm:1.4 Wed Mar 8 16:30:51 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.apm Wed Mar 8 16:30:51 2000 @@ -1,17 +1,19 @@ Information for Alliance Promotion chipset users - Henrik Harmsen (Henrik.Harmsen@erv.ericsson.se) + Loïc Grenié (), Henrik Harmsen () - 23 February 1998 + 6 March 2000 1. Support chipsets -The apm driver in the SVGA server is for Alliance Promotion (www.alsc.com) -graphics chipsets. The following chipsets are supported: +The apm driver in the SVGA server is for Alliance Promotion graphics +chipsets. The following chipsets are supported: o 6422 - Old chipset without color expansion hardware (text accel). + Old chipset. The driver is still very unstable, including computer + crashes. You would prefer using XFree86 3.3.x for this chipset. o AT24 @@ -34,26 +36,61 @@ o Filled rectangles - o CPU->Screen colour expansion (text accel). Not for 6422. + o CPU->Screen image transfers. - o Hardware cursor + o CPU->Screen colour expansion (text accel). -All in 8, 16 and 32 bpp modes. No 24bpp mode is supported. Also VESA DPMS -power save mode is fully supported with "standby", "suspend" and "off" modes -(set with with the "xset dpms" command). + o Screen->Screen colour expansion (cached text accel). -3. Configuration + o Mono 8x8 pattern fill. Not for 6422. -First: Please run the XF86Setup program to create a correct configuration. + o Colour 8x8 pattern fill (in 8bpp). Not for 6422. + + o Hardware cursor. + + o Pixmap caching. + +All in 8, 16 and 32 bpp modes. In 24bpp mode only Bitblts and Filled rectan- +gles is supported. Also VESA DPMS power save mode is fully supported with +"standby", "suspend" and "off" modes (set with with the "xset dpms" command). + +3. DGA + +Full DGA 2.0 support with framebuffer access and drawing acceleration. + +4. Video + +A limited hardware support for video decoding on AT24 and AT25/3D. It can +display an image in YUV colours inside the desktop. There are some more +exotic formats (YUV 4.1.1, YUV 4.0.0, RGB 8,16.32bpp). + +5. Shadow framebuffer + +There is a mode, called shadow framebuffer, where the graphics is only used +to display the images. All rendering is done in memory in a so-called shadow +framebuffer. This mode is useful if you need lots of reading in the video +memory. You will have to put + + Option "ShadowFB" + +in your XF86Config file. + +6. Configuration + +First: Please run the xf86config program to create a correct configuration. You can turn off hardware cursor by inserting the following line in the Device section of the XF86Config file: -Option "sw_cursor" + Option "SWcursor" Or turn off hardware acceleration: -Option "noaccel" + Option "noaccel" + +Or turn off MMIO + + Option "nolinear" Please don't specify the amount of video RAM you have or which chipset you have in the config file, let the driver probe for this. Also please don't put @@ -62,7 +99,16 @@ fail at some specific clock values but you should just try a slightly differ- ent clock and it should work. - Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/apm.sgml,v 1.2 1999/08/23 06:18:33 dawes Exp $ +7. glide2x + +There is support for the XF86Rush extension for use with the glide2x library. + +8. Questions + +Any questions regarding this driver should be sent to Loïc Grenié. It should +be possible to add support for the 3210 chipset if someone needs it. + + Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/apm.sgml,v 1.3 2000/03/08 05:38:43 dawes Exp $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.apm,v 1.4 2000/02/21 22:44:35 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.apm,v 1.6 2000/03/08 20:39:22 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.ark diff -u xc/programs/Xserver/hw/xfree86/doc/README.ark:3.17 xc/programs/Xserver/hw/xfree86/doc/README.ark:3.18 --- xc/programs/Xserver/hw/xfree86/doc/README.ark:3.17 Wed Mar 8 16:30:51 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.ark Wed Mar 8 16:30:52 2000 @@ -205,4 +205,4 @@ $XConsortium: ark.sgml /main/6 1996/10/28 05:24:04 kaleb $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.ark,v 3.17 2000/02/21 22:44:35 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.ark,v 3.18 2000/03/01 01:48:20 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.ati diff -u xc/programs/Xserver/hw/xfree86/doc/README.ati:3.45 xc/programs/Xserver/hw/xfree86/doc/README.ati:3.46 --- xc/programs/Xserver/hw/xfree86/doc/README.ati:3.45 Wed Mar 8 16:30:52 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.ati Wed Mar 8 16:30:52 2000 @@ -576,4 +576,4 @@ Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/ati.sgml,v 3.29 2000/02/18 12:19:08 tsi Exp $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.ati,v 3.45 2000/02/21 22:44:36 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.ati,v 3.46 2000/03/01 01:48:20 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.chips diff -u xc/programs/Xserver/hw/xfree86/doc/README.chips:3.28 xc/programs/Xserver/hw/xfree86/doc/README.chips:3.30 --- xc/programs/Xserver/hw/xfree86/doc/README.chips:3.28 Wed Mar 8 16:30:52 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.chips Wed Mar 8 16:30:52 2000 @@ -1,13 +1,13 @@ Information for Chips and Technologies Users - David Bateman (dbateman@eng.uts.edu.au), - Egbert Eich (Egbert.Eich@Physik.TH-Darmstadt.DE) + David Bateman (), + Egbert Eich () 19th July 1999 1. Introduction -With the release of XFree86 version 3.9.18, the Chips and Technologies driver +With the release of XFree86 version 4.0, the Chips and Technologies driver has been extensively rewritten and contains many new features. This driver must be considered work in progress, and those users wanting stability are encouraged to use the older XFree86 3.3.x versions. However this version of @@ -788,7 +788,7 @@ startx -- -depth 24 -fbbpp 32 8-8-8 RGB truecolor - however as XFree86 version 3.9.18 allows 32bpp pixmaps to be used + however as XFree86 version 4.0 allows 32bpp pixmaps to be used with framebuffers operating in 24bpp, this mode of operating will cost performance for no gain in functionality. @@ -816,8 +816,8 @@ If you are having driver-related problems that are not addressed by this doc- ument, or if you have found bugs in accelerated functions, you can try con- tacting the XFree86 team (the current driver maintainer can be reached at -dbateman@eng.uts.edu.au or Egbert.Eich@Physik.TH-Darmstadt.DE), or post in -the Usenet newsgroup "comp.windows.x.i386unix". + or ), or post in the Usenet +newsgroup "comp.windows.x.i386unix". 7. Disclaimer @@ -858,7 +858,7 @@ We also thank the many people on the net who have contributed by reporting bugs and extensively testing this server. - Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/chips.sgml,v 3.29 1999/08/28 11:18:16 dawes Exp $ + Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/chips.sgml,v 3.30 2000/03/05 16:59:11 dawes Exp $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.chips,v 3.28 2000/02/21 22:44:37 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.chips,v 3.30 2000/03/07 14:55:07 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.cirrus diff -u xc/programs/Xserver/hw/xfree86/doc/README.cirrus:3.40 xc/programs/Xserver/hw/xfree86/doc/README.cirrus:3.41 --- xc/programs/Xserver/hw/xfree86/doc/README.cirrus:3.40 Wed Mar 8 16:30:52 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.cirrus Wed Mar 8 16:30:52 2000 @@ -887,4 +887,4 @@ $XConsortium: cirrus.sgml /main/12 1996/10/28 05:43:32 kaleb $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.cirrus,v 3.40 2000/02/21 22:44:38 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.cirrus,v 3.41 2000/03/01 01:48:22 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.cyrix diff -u xc/programs/Xserver/hw/xfree86/doc/README.cyrix:1.4 xc/programs/Xserver/hw/xfree86/doc/README.cyrix:1.6 --- xc/programs/Xserver/hw/xfree86/doc/README.cyrix:1.4 Wed Mar 8 16:30:52 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.cyrix Wed Mar 8 16:30:52 2000 @@ -2,13 +2,12 @@ The XFree86 Project Inc. - 22 June 1999 + 7 March 2000 1. Supported hardware -This driver (as used in the SVGA (VGA256), VGA16 and VGA_Mono servers) sup- -ports a single chipset `mediagx' that should work on the following Cyrix CPUs -with integrated graphics: +This driver supports a single chipset `mediagx' that should work on the fol- +lowing Cyrix CPUs with integrated graphics: o MediaGX @@ -18,63 +17,37 @@ 2. Features - o accelerated - - o hardware cursor - - o support color depths 1, 4, 8 and 16 + o Rather sparse (color depth hardcoded to 8) 3. XF86Config Option Option "sw_cursor" - disable the hardware cursor. + disable the hardware cursor. (Code not verified yet!) Option "no_accel" completely disables acceleration. Usually not recommended. 4. Bugs and Limitations + o As a first cut at the new design, known problems are everywhere. The + console font is corrupted upon exit. The server seems stable if the + virtual desktop and resolution size match. I found 1024x768 usable and + that's why I released this version. Geeks can have fun with this but + NEWBIES should use the 3.3.3.1 release instead! + o On some older chipsets, the driver may trigger an illegal instruction just after probing for the ``scratchpad size''. If this is the case, - email to hecker@cat.dfrc.nasa.gov with the output of + email to with the output of - XF86_SVGA -probeonly -verbose + XFree86 -probeonly -verbose and this will be fixed. - o There are limitations to the modeline values that can be specified. - Particularly, the difference between the first two horizontal timings - (e.g. 640 656, 1024 1048) must be at least 16 and at most 24. The mode- - line values are not used in the 3.3.4 server since there is a static - array used to load the registers. The modeline only identifies that a - particular resolution is desired. The standard VESA modes up to - 1280x768 are supported. For more specific information, consult the - source code. - - o The 4 colour server is slow due to the VGA banking mode used. Moreover, - it does not work the way it is run by XF86Setup, which is probably due - to the timing limitations. - - o The 3.3.4 server MAY totally hang the machine at times. It is reported - to be stable on a BSD platform using twm. It has crashed when using - resolutions greater than 800x600 on a Linux (Debian based) system using - wm as the window manager. The safest course is to use the 3.3.3.1 - server instead. Efforts are under way to resolve this issue and provide - a more robust server under the 4.x release. - 5. Authors - o Annius Groenink - - o Dirk Hohndel - - o Brian Falardeau - - o Special thanks to Cyrix and Wyse for helping us with the development of - this server. Brian, a Cyrix employee, made the 3.3.4 update possible - since the new 4.0 server has been our top priority. + o Richard Hecker - Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/cyrix.sgml,v 1.2 1999/08/23 06:18:33 dawes Exp $ + Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/cyrix.sgml,v 1.3 2000/03/08 05:38:43 dawes Exp $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.cyrix,v 1.4 2000/02/21 22:44:39 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.cyrix,v 1.6 2000/03/08 20:39:23 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.epson diff -u xc/programs/Xserver/hw/xfree86/doc/README.epson:1.5 xc/programs/Xserver/hw/xfree86/doc/README.epson:1.6 --- xc/programs/Xserver/hw/xfree86/doc/README.epson:1.5 Wed Mar 8 16:30:52 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.epson Wed Mar 8 16:30:52 2000 @@ -131,4 +131,4 @@ Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/epson.sgml,v 1.3 1999/08/28 10:43:33 dawes Exp $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.epson,v 1.5 2000/02/21 22:44:39 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.epson,v 1.6 2000/03/01 01:48:24 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.fbdev diff -u xc/programs/Xserver/hw/xfree86/doc/README.fbdev:1.4 xc/programs/Xserver/hw/xfree86/doc/README.fbdev:1.5 --- xc/programs/Xserver/hw/xfree86/doc/README.fbdev:1.4 Wed Mar 8 16:30:52 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.fbdev Wed Mar 8 16:30:52 2000 @@ -338,4 +338,4 @@ Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/fbdev.sgml,v 1.2 1999/08/23 06:38:53 dawes Exp $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.fbdev,v 1.4 2000/02/21 22:44:39 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.fbdev,v 1.5 2000/03/01 01:48:24 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.fonts diff -u xc/programs/Xserver/hw/xfree86/doc/README.fonts:1.7 xc/programs/Xserver/hw/xfree86/doc/README.fonts:1.9 --- xc/programs/Xserver/hw/xfree86/doc/README.fonts:1.7 Wed Mar 8 16:30:52 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.fonts Wed Mar 8 16:30:52 2000 @@ -2,12 +2,11 @@ Juliusz Chroboczek, Juliusz.Chroboczek@ens.fr - 14 February 2000 + 5 March 2000 -This version of XFree86 includes a number of improvements to the handling of -fonts, including +XFree86 contains a number of improvements related to fonts, including - o new Unicode-encoded bitmap fonts; + o inclusion of new fonts; o internationalisation of the scalable font backends (Type 1, Speedo, and TrueType); @@ -97,14 +96,16 @@ When used in X11, Unicode-encoded fonts should have the last two fields of their XLFD set to `iso10646-1'. -2. Unicode-encoded bitmap fonts +2. New fonts + +2.1 Bitmap fonts XFree86 includes two new Unicode-encoded fonts with a large collection of non-ideographic glyphs. While it is possible to use these fonts as main fonts, applications may also use them as fallbacks when a given glyph is not available in the current font. -2.1 The Unicode `fixed' font +2.1.1 The Unicode `fixed' font The font file @@ -134,7 +135,7 @@ The standard aliases `fixed' and `6x13' still point at the ISO 8859-1 ver- sions of the font. -2.2 The ClearlyU Unicode font +2.1.2 The ClearlyU Unicode font The ClearlyU font set of fonts provides a set of 12pt, 100dpi proportional fonts with many of the glyphs needed for Unicode text. Together, the fonts @@ -158,6 +159,44 @@ -mutt-ClearlyU PUA-medium-r-normal--17-120-100-100-p-111-iso10646-1 +2.2 Scalable fonts + +XFree86 includes the ``Lucidux'' family of Type 1 fonts. This family con- +sists of the fonts ``Lucidux Serif'', with XLFD + + -b&h-lucidux serif-medium-*-normal--*-*-*-*-p-*-*-* + +``Lucidux Sans'', with XLFD + + -b&h-lucidux sans-medium-*-normal--*-*-*-*-p-*-*-* + +and ``Lucidux Mono'', with XLFD + + -b&h-lucidux mono-medium-*-normal--*-*-*-*-m-*-*-* + +Each of these fonts currently comes in Roman and oblique variants (bold vari- +ants will be included in a future release) and has 337 glyphs covering the +basic ``ASCII'' glyph set, the Latin 1 glyph set, as well as the ``Extended +Latin'' glyph set. In particular, these fonts include all the glyphs needed +for ISO 8859 parts 1, 2, 3, 4, 9 and 15. + +The Lucidux fonts are original designs by Charles Bigelow and Kris Holmes. +Lucidux fonts include seriffed, sans-serif, and monospaced styles which share +the same stem weight, x-height, capital height, ascent and descent. Lucidux +fonts harmonise with Lucida (R) fonts of the same vertical proportions and +weights. The character width metrics of Lucidux roman fonts match those of +core fonts bundled with several window systems. + +Each PFA file has a copy of the license terms in PS comment lines. The +license terms are also included in the file COPYRIGHT.BH for convenience, and +in the License document. + +The design and font outlines were donated by Charles Bigelow and Kris Holmes +from Bigelow and Holmes Inc., and the hinting was donated by Berthold Horn +and Blenda Horn from Y&Y, Inc. For more information, please contact + or , or consult Y&Y's web site +. + 3. Internationalisation of scalable font backends. The scalable font backends (Type 1, Speedo, TrueType) can now automatically @@ -730,7 +769,7 @@ `KSC-EUC-V'). This limitation is due to the fact that the core X11 protocol only provides support for horizontal writing. - Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/fonts.sgml,v 1.6 2000/02/14 19:20:44 dawes Exp $ + Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/fonts.sgml,v 1.7 2000/03/06 22:59:25 dawes Exp $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.fonts,v 1.7 2000/02/21 22:44:40 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.fonts,v 1.9 2000/03/07 14:55:08 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.i740 diff -u xc/programs/Xserver/hw/xfree86/doc/README.i740:1.4 xc/programs/Xserver/hw/xfree86/doc/README.i740:1.6 --- xc/programs/Xserver/hw/xfree86/doc/README.i740:1.4 Wed Mar 8 16:30:52 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.i740 Wed Mar 8 16:30:52 2000 @@ -6,16 +6,16 @@ 1. Supported Hardware - o Intel 740 based cards + o Intel 740 based cards. 2. Features - o Full support for 8, 15, 16, 24 and 32 bit per pixel depths. + o Full support for 8, 15, 16, and 24 bit pixel depths. o Hardware cursor support to reduce sprite flicker. o Hardware accelerated 2D drawing engine support for 8, 15, 16 and 24 bit - per pixel depths. + pixel depths. o Support for high resolution video modes up to 1600x1200. @@ -29,7 +29,8 @@ 3. Technical Notes - o Hardware acceleration is not possible in 32 bit per pixel depth. + o Hardware acceleration is not possible when using the framebuffer in 32 + bit per pixel format. o Interlace modes cannot be supported. @@ -118,10 +119,11 @@ file are: Section "Device" - Identifier "i740" + Identifier "Intel i740" + Driver "i740" EndSection -or let xf86config or XF86Setup do this for you. +or let xf86config do this for you. However, if you have problems with auto-detection, you can specify: @@ -135,15 +137,20 @@ 6. Driver Options - o "hw_cursor" - request hardware cursor (default) + o "NoAccel" - Turn off hardware acceleration - o "sw_cursor" - software cursor only + o "SWCursor" - Request a software cursor (hardware is default) - o "no_accel" - software rendering only + o "SDRAM" - Force the use of SDRAM timings - o "sgram" - force the use of SGRAM timing info + o "SGRAM" - Force the use of SGRAM timings - o "sdram" - force the use of SDRAM timing info + o "SlowRam" - Force the use of slower ram timings + + o "Dac6Bit" - Force the use of a 6 Bit Dac (8 Bit is the default) + + o "UsePIO - Force the use of programmed IO (Memory mapped is the + default) Note: the i740 X server should automatically detect whether your card has SGRAM or SDRAM. Use the "sgram" and "sdram" options if it is incorrectly @@ -151,12 +158,14 @@ 7. Known Limitations - o Certain drawing operations are very slow when using 24 bit per pixel - depth mode. We hope to fix this in a future release. + o Certain drawing operations are very slow when using 24 bit pixel depth + mode. 8. Author - o Kevin E. Martin + o Original version by Kevin E Martin + + o Daryll Strauss This driver was donated to The XFree86 Project by: @@ -166,7 +175,7 @@ http://www.precisioninsight.com - Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/i740.sgml,v 1.2 1999/08/23 06:18:34 dawes Exp $ + Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/i740.sgml,v 1.3 2000/03/04 00:26:30 dawes Exp $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.i740,v 1.4 2000/02/21 22:44:40 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.i740,v 1.6 2000/03/04 00:51:32 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.i810 diff -u /dev/null xc/programs/Xserver/hw/xfree86/doc/README.i810:1.3 --- /dev/null Wed Mar 8 16:30:52 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.i810 Wed Mar 8 16:30:52 2000 @@ -0,0 +1,110 @@ + Information for i810 Users + + Precision Insight, Inc. + + 3 March 2000 + +1. Supported Hardware + + o Intel 810 motherboards: + + o i810, + + o i810-dc100, + + o i810e + +2. Features + + o Full support for 8, 15, 16, and 24 bit pixel depths. + + o Hardware cursor support to reduce sprite flicker. + + o Hardware accelerated 2D drawing engine support for 8, 15, 16 and 24 bit + pixel depths. + + o Support for high resolution video modes up to 1600x1200. + + o Fully programmable clock supported. + + o Robust text mode restore for VT switching. + +3. Technical Notes + + o Hardware acceleration is not possible when using the framebuffer in 32 + bit per pixel format, and this mode is not supported by this driver. + + o Interlace modes cannot be supported. + + o This driver currently only works for Linux/ix86, and normal use requires + the agpgart.o kernel module, included in Linux kernels 2.3.42 and + higher. + +4. Reported Working Video Cards + + o Intel evaluation hardware - i810, i810-dc100 and i810e. + + o Tyan Tomcat Motherboard. + + o HappyPC set-top box. + +5. Configuration + +The driver auto-detects all device information necessary to initialize the +card. The only lines you need in the "Device" section of your XF86Config +file are: + + Section "Device" + Identifier "Intel i810" + Driver "i810" + EndSection + +or let xf86config do this for you. + +However, if you have problems with auto-detection, you can specify: + + o DacSpeed - in MHz + + o MemBase - physical address of the linear framebuffer + + o IOBase - physical address of the memory mapped IO registers + +In order to use most resolutions, it is necessary to install the 'agpgart.o' +module. You will probably have to compile the module yourself (see the notes +in the module). + +Note: the i810 driver detects whether your motherboard has display cache +video memory. This memory is has reduced bandwidth compared to normal system +memory, and isn't used by the server. The main function of this memory is +for ancillary buffers (eg. z buffer) in a forthcoming 3d capable server. + +6. Driver Options + + o "NoAccel" - Turn off hardware acceleration + + o "SWCursor" - Request a software cursor (hardware is default) + + o "Dac6Bit" - Force the use of a 6 Bit Dac (8 Bit is the default) + +7. Known Limitations + + o No 3D support in this release. + + o Running two X servers on different VTs is not supported at this time. + +8. Author + + o Keith Whitwell + +This driver was donated to The XFree86 Project by: + + Precision Insight, Inc. + Cedar Park, TX + USA + +http://www.precisioninsight.com + + Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/i810.sgml,v 1.2 2000/03/04 00:00:30 dawes Exp $ + + +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.i810,v 1.3 2000/03/04 00:51:32 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.isc diff -u xc/programs/Xserver/hw/xfree86/doc/README.isc:3.34 xc/programs/Xserver/hw/xfree86/doc/README.isc:3.37 --- xc/programs/Xserver/hw/xfree86/doc/README.isc:3.34 Wed Mar 8 16:30:52 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.isc Wed Mar 8 16:30:52 2000 @@ -2,7 +2,7 @@ Michael Rohleder - 06 March 1999 + 05 March 2000 1. X11R6/XFree86 on Interactive Unix @@ -27,6 +27,11 @@ Server with X11R5 and X11R4 clients. And only compile clients who need the new facilities provided in the X11R6 Libraries against them. + Please note: + XFree86 Version 4.0 will be the last version which is known + to compile on Interactive Unix. + I've only tested this version on Interactive Unix, Version 4.1mu. + 2. Things needed for compiling the sources gcc @@ -312,105 +317,53 @@ 3Dlabs GLINT Permedia rev 1 3Dlabs GLINT Delta rev 1 -6. XKeyboard Extension - - o Sample Setup ... - - Here is a sample XKeyboard Definition to include inside the Keyboard - Section of your XF86Config File. - - Xkbkeycodes "xfree86" - /* XkbSymbols "us(pc101)+de_nodead" */ - /* This has changed between 3.1.2E and 3.1.2F */ - /* it is now: */ - XkbSymbols "us(pc102)+de(nodeadkeys)" - XkbTypes "default" - XkbCompat "default" - XkbGeometry "pc" - - or you could use this one with the new Options: - - XkbRules "xfree86" - XkbModel "pc102" - XkbLayout "de" - XkbVariant "nodeadkeys" - -7. Multibuffer Extension +6. Multibuffer Extension This is an obsolete Extension. Anyway, if you want to include this Extension inside your build, you have to add: #define BuildMultibuffer YES inside xf86site.def Please note, this Extension should be disabled when building the Loader Server. -8. Default Definitions +7. Default Definitions These are default options defined inside isc.cf. You can redefine them inside host.def. - /* Disable the use of /var/X11 */ - #ifndef HasVarDirectory - #define HasVarDirectory NO - #endif +Here is a sample host.def (the one I use for XFree86 4.0): - /* Use mmap Driver */ - #ifndef HasSVR3mmapDrv - # define HasSVR3mmapDrv YES - #endif + /* Disable the use of /var/X11 and /etc/X11 */ + #define HasVarDirectory NO + #define UseEtcX11 NO /* Use inline Math from linux ;-) package inline-math-2.6.tar.gz */ /* should be available on your favorite linux ftp */ - #ifndef UseInlineMath # define UseInlineMath YES - #endif /* Use cbrt from liboptm.a (Interactive icc Compiler) */ - #ifndef HasCbrt # define HasCbrt YES - #endif /* Use GNUs MallocLibrary (and the Location for the Lib) */ - #ifndef UseGnuMalloc # define UseGnuMalloc YES - #endif - - /* Install Zlib Headers - used in lib/zlib/Imakefile */ - #ifndef OsNeedZlibHeaders - # define OsNeedZlibHeaders YES - #endif /* Expand Manual Pages (needs S5L) */ - #ifndef ExpandManNames # define ExpandManNames YES - #endif /* if you have groff or the TextProcessingWorkbench - don't preformat*/ - #ifndef FormattedManPages # define FormattedManPages NO - #endif - - #ifndef HasSgmlFmt /* HasLinuxDoc */ - # define HasSgmlFmt YES - #endif /* XF86Setup Util */ - #ifndef HasTk - #define HasTk YES - #define HasTcl YES - #endif - - #ifndef HasPosixRegex /* Need extra/regex since 3.9Ns */ - #define HasPosixRegex NO - #endif + # define HasTk YES + # define HasTcl YES - #ifndef DoLoadableServer - #define DoLoadableServer YES - #endif + /* use doctools */ + # define HasSgmlFmt YES + # define BuildAllDocs YES + # define BuildLinuxDocText NO + # define BuildLinuxDocPS NO - #ifndef CpuOption - #define CpuOption -mpentium - #endif + #define GlxBuiltInMesa YES -9. Installation +8. Installation After your make World BOOTSTRAPCFLAGS="... succeed, @@ -425,10 +378,6 @@ to install the compressed nroff versions of the manual pages into /usr/X11R6/man. This directory will be generated if it doesn't exist. - make install.linkkit - -to install the server binary LinkKit into /usr/X11R6/lib/Server. - You should tune the Kernel using the command-file /usr/X11R6/lib/X11/etc/xf86install @@ -468,26 +417,13 @@ You could do this automatically with menu entry no. 5. -10. Using ... +9. Using ... o Xprt: The new Xprint Server is configured to use lpr as its print helper so you have to install and configure lpr to use Xprt. - o Keyboard: - - You don't need any modmap-File to get your keyboard working with any - iso-8859-1 Font. Simply enable - - o LeftAlt Meta - - o RightAlt ModeShift - - o RightCtl Compose - - in your XF86Config - Section "Keyboard" - o xpcterm: if you want to get the German 'Umlaut' inside your ISC X11R4 client xpc- @@ -544,13 +480,13 @@ This message either isn't critical. Interactive doesn't support this kind of connection. -11. Acknowledgements +10. Acknowledgements All thanks should go to the members of the XFree86 Team for their great work and the X Consortium for their Public Release of X11R6, as to all who con- tribute to this excellent piece of free software. - Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/isc.sgml,v 3.22 1999/08/28 10:43:33 dawes Exp $ + Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/isc.sgml,v 3.24 2000/03/06 22:59:25 dawes Exp $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.isc,v 3.34 2000/02/21 22:44:40 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.isc,v 3.37 2000/03/07 14:55:09 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.mouse diff -u xc/programs/Xserver/hw/xfree86/doc/README.mouse:1.8 xc/programs/Xserver/hw/xfree86/doc/README.mouse:1.9 --- xc/programs/Xserver/hw/xfree86/doc/README.mouse:1.8 Wed Mar 8 16:30:53 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.mouse Wed Mar 8 16:30:53 2000 @@ -6,7 +6,7 @@ 1. Introduction -This document describes mouse support in XFree86 3.9.18. +This document describes mouse support in XFree86 4.0. Mouse configuration has often been mysterious task for novice users. How- ever, once you learn several basics, it is straightforward to write the mouse @@ -406,8 +406,7 @@ 5.2 ZAxisMappping -This option maps the Z axis (wheel) motion to a pair of buttons or to another -axis. +This option maps the Z axis (wheel) motion to buttons or to another axis. Option "ZAxisMapping" "X" Option "ZAxisMapping" "Y" @@ -423,10 +422,21 @@ won't be detected by the X server. The last example is useful for the mouse with two wheels of which the second -wheel is used to generate horizontal scroll action. The motion of the second -wheel will be mapped to the buttons N3, for the negative direction, and N4, -for the positive direction. If the buttons N3 and N4 actually exist in this -mouse, their actions won't be detected by the X server. +wheel is used to generate horizontal scroll action, and the mouse which has a +knob or a stick which can detect the horizontal force applied by the user. +The motion of the second wheel will be mapped to the buttons N3, for the neg- +ative direction, and N4, for the positive direction. If the buttons N3 and +N4 actually exist in this mouse, their actions won't be detected by the X +server. + +NOTE #1: horizontal movement may not always be detected by the current ver- +sion of the XFree86 X servers, because there appears to be no accepted stan- +dard 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 +mounted vertically, and the direction of the second vertical wheel does not +match the first one's. Currently this option can not be set in the XF86Setup program. You need to edit the XF86Config file by hand to add this option. @@ -843,7 +853,7 @@ xmodmap -e "pointer = 1 6 3 2 4 5" -After this command is run, the correspondance between the buttons and button +After this command is run, the correspondence between the buttons and button numbers will be as shown in the following table. Physical Buttons Reported as: @@ -869,7 +879,7 @@ The IntelliMouse Explorer has 5 buttons, thus, you should give "7" to the Buttons option if you want to map the wheel movement to buttons (6 and 7). -With this configuration, the correspondance between the buttons and button +With this configuration, the correspondence between the buttons and button numbers will be as follows: Physical Buttons Reported as: @@ -915,7 +925,7 @@ The movement of the first wheel is mapped to the button 4 and 5. The second wheel's movement will be reported as the buttons 6 and 7. - Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/mouse.sgml,v 1.9 2000/02/12 20:45:20 dawes Exp $ + Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/mouse.sgml,v 1.11 2000/03/01 00:25:23 dawes Exp $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.mouse,v 1.8 2000/02/21 22:44:41 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.mouse,v 1.9 2000/03/01 01:48:26 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.neomagic diff -u xc/programs/Xserver/hw/xfree86/doc/README.neomagic:1.2 xc/programs/Xserver/hw/xfree86/doc/README.neomagic:1.3 --- xc/programs/Xserver/hw/xfree86/doc/README.neomagic:1.2 Wed Mar 8 16:30:53 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.neomagic Wed Mar 8 16:30:53 2000 @@ -195,4 +195,4 @@ Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/neomagic.sgml,v 1.1 1999/08/23 06:59:39 dawes Exp $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.neomagic,v 1.2 2000/02/21 22:44:42 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.neomagic,v 1.3 2000/03/01 01:48:26 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.r128 diff -u xc/programs/Xserver/hw/xfree86/doc/README.r128:1.5 xc/programs/Xserver/hw/xfree86/doc/README.r128:1.10 --- xc/programs/Xserver/hw/xfree86/doc/README.r128:1.5 Wed Mar 8 16:30:53 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.r128 Wed Mar 8 16:30:53 2000 @@ -11,7 +11,7 @@ 2. Features o Full support (including hardware accelerated 2D drawing) for 8, 15, 16, - 24, and 32 bit per pixel depths. + 24 bit pixel depths. o Hardware cursor support to reduce sprite flicker. @@ -44,11 +44,11 @@ file are: Section "Device" - Identifier "Rage 128" - Driver "r128" + Identifier "Rage 128" + Driver "r128" EndSection -or let xf86config or XF86Setup do this for you. +or let xf86config do this for you. However, if you have problems with auto-detection, you can specify: @@ -74,31 +74,31 @@ 7. Known Limitations - o None + o DGA is not supported yet 8. Authors -The XFree86 3.9 driver was ported from XFree86 3.3 and enhanced by: +The XFree86 4 driver was ported from XFree86 3.3.x and enhanced by: o Rickard E. (Rik) Faith o Kevin E. Martin -The XFree86 3.9 driver was funded by ATI and was donated to The XFree86 Pro- -ject by: +The XFree86 4 driver was funded by ATI and was donated to The XFree86 Project +by: Precision Insight, Inc. Cedar Park, TX USA -The XFree86 3.3 driver used for the port was written by: +The XFree86 3.3.x driver used for the port was written by: o Rickard E. (Rik) Faith o Kevin E. Martin -The XFree86 3.3 driver was funded by ATI and was donated to The XFree86 Pro- -ject by Precision Insight, Inc. It was based in part on an earlier driver +The XFree86 3.3.x driver was funded by ATI and was donated to The XFree86 +Project by Precision Insight, Inc. It was based in part on an earlier driver that was written by: o Alan Hourihane @@ -116,7 +116,7 @@ http://www.suse.com - Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/r128.sgml,v 1.4 2000/01/24 19:38:30 dawes Exp $ + Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/r128.sgml,v 1.7 2000/03/08 15:14:48 dawes Exp $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.r128,v 1.5 2000/02/21 22:44:42 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.r128,v 1.10 2000/03/08 20:39:23 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.rendition diff -u xc/programs/Xserver/hw/xfree86/doc/README.rendition:1.7 xc/programs/Xserver/hw/xfree86/doc/README.rendition:1.9 --- xc/programs/Xserver/hw/xfree86/doc/README.rendition:1.7 Wed Mar 8 16:30:53 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.rendition Wed Mar 8 16:30:53 2000 @@ -8,8 +8,8 @@ All cards based on the V1000 or the V2x00 should be supported. The server was tested on a miroCRYSTAL VRX (V1000), Intergraph Intense-100 3D (V1000), Dia- -mond Stealth II S220 (V2100), Hercules Thriller3D (V2200) and Innovision War- -rior3D (V2200). +mond Stealth II S220 (V2100), Hercules Thriller3D (V2200), Innovision War- +rior3D (V2200) and Genoa V-Raptor (v2200). 2. Limitations @@ -81,15 +81,41 @@ poses. This might change before final XFree86 4.0 release. Safe to disable if you experience problems during startup of X-server. + Option "ShadowFB" + If this option is enabled, the driver will cause the CPU to do + each drawing operation first into a shadow frame buffer in system + virtual memory and then copy the result into video memory. If + this option is not active, the CPU will draw directly into video + memory. Enabling this option is beneficial for those systems + where reading from video memory is, on average, slower than the + corresponding read/modify/write operation in system virtual mem- + ory. This is normally the case for PCI or AGP adapters, and, so, + this option is enabled by default unless acceleration is enabled. + + Option "Rotate" + The option expect a value "CW" for clockwise or "CCW" for coun- + terclockwise rotation of the screen. This is useful when you need + more height then width on the screen. Desktop publishing is one + example where a monitor could display the whole page at once on a + monitor laying on the side. Notice that this option requires + "ShadowFB" and automatically enable it. It also disables the + acceleration. The option is not activated by default. + 6. News in this release o Acceleration! Disabled for the moment. -7. Major fixes in this release +7. Major changes in this release + + o ShadowFB support added o To be determined before final release. -8. Known problems in current driver +8. Bugfixes + + o 8bpp finally works correctly again + +9. Known problems in current driver o The acceleration code hangs the computer during X-server startup. @@ -103,13 +129,13 @@ around. V2x00 does not exhibit this problem. Probably a bug in the driver rather than a limitation of the chip. -9. Work in progress (not finished in time for release) +10. Work in progress (not finished in time for release) o Acceleration is disabled for the moment. If you want to play with it enable the "USE_ACCEL" define in rendition.c file! Beware as it has sev- eral bugs left to clear out before if is stable for general use. - Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/rendition.sgml,v 1.6 2000/01/24 19:38:30 dawes Exp $ + Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/rendition.sgml,v 1.8 2000/03/01 23:54:34 dawes Exp $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.rendition,v 1.7 2000/02/21 22:44:42 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.rendition,v 1.9 2000/03/04 00:51:33 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.s3virge diff -u xc/programs/Xserver/hw/xfree86/doc/README.s3virge:1.3 xc/programs/Xserver/hw/xfree86/doc/README.s3virge:1.4 --- xc/programs/Xserver/hw/xfree86/doc/README.s3virge:1.3 Wed Mar 8 16:30:53 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.s3virge Wed Mar 8 16:30:53 2000 @@ -6,7 +6,7 @@ 1. Supported hardware -The s3virge driver in XFree86 3.9.18 supports the S3 ViRGE, ViRGE DX, GX, MX, +The s3virge driver in XFree86 4.0 supports the S3 ViRGE, ViRGE DX, GX, MX, MX+, and VX chipsets. A majority of testing is done on ViRGE DX chips, mak- ing them the most stable to date. This release has improved support for 24 bit color depths and resolves all the known issues with Netscape and other @@ -62,4 +62,4 @@ Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/s3virge.sgml,v 1.2 1999/07/10 12:17:25 dawes Exp $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.s3virge,v 1.3 2000/02/21 22:44:42 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.s3virge,v 1.4 2000/03/01 01:48:27 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.trident diff -u xc/programs/Xserver/hw/xfree86/doc/README.trident:3.37 xc/programs/Xserver/hw/xfree86/doc/README.trident:3.38 --- xc/programs/Xserver/hw/xfree86/doc/README.trident:3.37 Wed Mar 8 16:30:53 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.trident Wed Mar 8 16:30:53 2000 @@ -177,4 +177,4 @@ $XConsortium: trident.sgml /main/11 1996/10/28 04:24:08 kaleb $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.trident,v 3.37 2000/02/21 22:44:43 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.trident,v 3.38 2000/03/01 01:48:28 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/README.tseng diff -u xc/programs/Xserver/hw/xfree86/doc/README.tseng:3.40 xc/programs/Xserver/hw/xfree86/doc/README.tseng:3.41 --- xc/programs/Xserver/hw/xfree86/doc/README.tseng:3.40 Wed Mar 8 16:30:53 2000 +++ xc/programs/Xserver/hw/xfree86/doc/README.tseng Wed Mar 8 16:30:53 2000 @@ -1014,4 +1014,4 @@ $XConsortium: tseng.sgml /main/6 1996/10/27 11:06:09 kaleb $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.tseng,v 3.40 2000/02/21 22:44:43 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.tseng,v 3.41 2000/03/01 01:48:28 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/RELNOTES diff -u xc/programs/Xserver/hw/xfree86/doc/RELNOTES:3.78 xc/programs/Xserver/hw/xfree86/doc/RELNOTES:3.82 --- xc/programs/Xserver/hw/xfree86/doc/RELNOTES:3.78 Wed Mar 8 16:30:53 2000 +++ xc/programs/Xserver/hw/xfree86/doc/RELNOTES Wed Mar 8 16:30:53 2000 @@ -1,143 +1,79 @@ - Release Notes for XFree86[tm] 3.9.18 + Release Notes for XFree86[tm] 4.0 The XFree86 Project, Inc - 21 February 2000 + 7 March 2000 Abstract This document contains some information about the features present - in XFree86 3.9.18 and their status. + in XFree86 4.0 and their status. -1. Summary of new features in 3.9.18 compared with 3.9.17. +1. Introduction -This section contains a brief summary of what has changed since the previous -snapshot. Unfortunately, only a small number of changes are listed here. -For detailed information, refer to the CHANGELOG file in the xc/pro- -grams/Xserver/hw/xfree86 directory in the source tree. The sections that -follow this one have details of features that are new to the pre-4.0 snapshot -series. +XFree86 4.0 is the first official release of the new XFree86 4. XFree86 4 +represents a significant redesign of the XFree86 X server. It is very impor- +tant to keep in mind that XFree86 4 is still very much in development, and it +contains a lot of new work. That means two things: there is a lot of new +exciting stuff to try, but being new code, it hasn't had nearly as much of a +workout as the stable 3.3.x releases. If you're looking for a well-tested, +stable release, and can't afford the inconveniences that new software can +sometimes cause, then you are probably better off sticking with the 3.3.x +releases for now. If you have the resources to try out the new version and +investigate its features, or if you just like being on the bleeding edge, +then please try 4.0! + +This release isn't quite as complete as we would have liked. The main miss- +ing pieces are a nice configuration tool and support for some of the hardware +that 3.3.x supports. The first point means that configuring the server might +be more painful than usual. The second means that your hardware might not be +supported by 4.0, or it might be supported at a lesser level (conversely, +some hardware is better supported in 4.0). We've attempted to provide some +information about the second point in our Driver Status document. Please +check there first before trying 4.0. Unfortunately that document is still +fairly basic, but it should at least give you an idea of whether you're +likely to be able to use 4.0 at all or not. + +On the subject of configuration, we have updated the basic text-based tool +"xf86config" to generate config files in the format required by 4.0 (3.3.x +config files won't really work with 4.0). We're also working on some other +configuration tools, including one that is built-in to the X server. An +early version of this is included in the release, and it works well for some +hardware. To try it out, just run (as root) "XFree86 -configure". Both of +these configuration options will at worst give you a reasonable starting +point for a suitable configuration file. We've put some effort into docu- +menting the 4.0 config file format, and you can find that information in the +XF86Config manual page. Please check that and the driver manual pages and +related documentation for further information about that. + +Oh, another thing you might notice is that our documentation is rather +patchy. Most of what is present should be in reasonable shape, but there are +gaps. We thought it better to leave out docs that were very out of date +rather than providing inaccurate and misleading information. + +Finally, before you download and install the binary distributions for this +release, please have a quick read through the Installation Document. It may +save you some time. + +If those cautionary notes haven't turned you away (and we certainly hope +not), please read on... The sections below describe some of the new features +and changes between 3.3.x and 4.0. There is a lot of new stuff, and we defi- +nitely don't have enough space to cover it all here. - o The NVIDIA (nv) driver now uses MMIO for VGA port access and has DDC - support. - - o The 8+24 support used by the Matrox (mga) and 3Dlabs (glint) drivers is - now a non-destructive overlay. - - o The Xinerama extension has been completely rewritten for improved per- - formance and correctness. - - o The server can now load/initialise extension modules that it doesn't - have built-in knowledge of. - - o More PS/2 mice (Microsoft IntelliMouse Explorer, Genius NetScroll Mouse - Optical, IBM ScrollPoint) and serial PnP mice (A4 Tech 4D/4D+, MouseSys- - tems SmartScroll, Logitech Cordless MouseMan Wheel, 8D Scroll mouse) are - recognized and supported. USB mice support is also available in FreeBSD - and OpenBSD. - - o A DPS extension for XFree86 is currently under development. The DPS - client library is now part of the XFree86 source tree; the extension - code itself, however, cannot be integrated for licensing reasons and is - distributed separately. For more information, please consult the DPS - site at SourceForge . - - o The "apm" driver (Alliance Pro Motion) has been updated. Support for - the AT24 has been added in this release, and acceleration has been - improved. Further details can be found in the APM section (section - 4.12.1, page 1) below. - - o Preliminary support has been added to the X server for the extended keys - on some "Internet" keyboards. - - o A new X server extension has been added for optimising access to metric - data for large fonts. - -2. Summary of new features in 3.9.17 compared with 3.9.16. - - o The 3dfx driver is now supported by the DRI. - - o Tiny-X for the Itsy has been added. - - o Significant font and font server enhancements. - - o New driver for ATI Rage 128. The driver is called "r128". - - o Xterm enhancements and fixes. - - o DPS support hooks have been added. Display Postscript support is being - maintained outside of the server tree due to licensing issues. A web - page for DPS resources under XFree86 will be available shortly. - - o DRI enhancements including Mesa update to version 3.2, full support and - fifo code for 3dfx hardware, and device driver updates for Linux 2.3 - kernels. - - o Significant enhancements to Xv including support for XvImages (YUV XIm- - ages). - - o Add initial VESA VBE support including initialization and DDC. - - o Several PCI enhancements. - - o "SilkenMouse" (asynchronous pointer handling) for smoother mouse move- - ment. - - o Add GeForce/Quadro support to the NVIDIA driver. - - o Int10 "soft-booting" support for Linux. - - o Resource allocation infrastructure added. - - o Syntax of the layout section has changed to make multi-head configura- - tion easier. - - o Some Xinerama bug fixes. - - o The DGA 2.0 interface is mostly finalized and includes some preliminary - documentation. - - o ViRGE MX Melco BIOS support has been added. - - o Keyboard AutoRepeat now works correctly on Linux. This means that the - AutoRepeat keyword in XF86Config is now obeyed; you may be more comfort- - able using "250 30" rather than the default setting of "500 5". - -3. Summary of new features in 3.9.16 compared with 3.9.15. - - o The "apm" driver has been updated. See the APM section (section 4.12.1, - page 1) below. - - o A driver for NVIDIA chipsets is now included. The driver is called - "nv". Some very basic information can be found in the nv(4) man page. - - o The default xdm config file now has a line to disable listening for - XDMCP requests. This is fine when xdm is only managing a local X - server. The line must be commented out when xdm is used to manage - external X servers (e.g., X terminals). - - o New driver for Intel i740. The driver is called "i740". - - o New driver for 3Dfx Banshee and Voodoo 3. The driver is called "tdfx". - - o Some work on adding WYSIWYG capabilities to the Xaw text widget. - - o Some preliminary support for programming modes has been added to xedit. - -4. X server +2. X server Unlike XFree86 3.3.x where there are multiple X server binaries, each of -which drive different hardware, XFree86 3.9.18 has a single X server binary -(called XFree86). This binary can either have one or more video drivers -linked in statically, or, more usually, dynamically load the video drivers -and other modules that are needed. +which drive different hardware, XFree86 4.0 has a single X server binary +called XFree86. This binary can either have one or more video drivers linked +in statically, or, more usually, dynamically load the video drivers and other +modules that are needed. -XFree86 3.9.18 has X server support for most UNIX(R) and UNIX-like operating +XFree86 4.0 has X server support for most UNIX(R) and UNIX-like operating systems on Intel/x86 platforms, plus support for Linux on Alpha and PowerPC -platforms. Support for additional architectures and operating systems is -planned for future releases. +platforms. Work on support for additional architectures and operating sys- +tems is in progress, and is planned for future releases. -4.1 Loader and Modules +2.1 Loader and Modules The XFree86 X server has a built-in run-time loader, donated by Metro Link . This loader can load normal object files and @@ -149,41 +85,47 @@ Linux/x86 can be loaded by an X server running on Solaris/x86, or FreeBSD, or even OS/2. One of the main benefits of this is that when modules are updated, they don't need to be recompiled for each different operating sys- -tem. +tem. We're planning to take advantage of this to provide more frequent +driver module updates in between major releases. -The loader in version 3.9.18 has support for Intel (x86), Alpha and PowerPC -platforms. It also has preliminary support for Sparc platforms. +The loader in version 4.0 has support for Intel (x86), Alpha and PowerPC +platforms. It also has preliminary support for Sparc platforms but this +isn't used yet. The X server makes use of modules for video drivers, X server extensions, font rasterisers, input device drivers, framebuffer layers (like mfb, cfb, etc), and internal components used by some drivers (like XAA), -The module interfaces (API and ABI) used in the snapshot releases are subject -to change without notice. This means that there is no guarantee that modules -built for one snapshot release will function with another snapshot release. -As of the 4.0 release we plan to make every effort to provide backward com- -patibility for the module interfaces (that means older modules working with -newer core X server binaries). +The module interfaces (API and ABI) used in this release is still subject to +change without notice. While we'll attempt to provide backward compatibility +for the module interfaces as of the 4.0 release (meaning that 4.0 modules +will work with future core X server binaries), we can't guarantee that this +will be the case. We are planning to fully document and stabilise the module +interfaces in a future release, and at that point backward compatibility will +be easier to achieve. Note about module security The XFree86 X server runs with root privileges, which means that the X server loadable modules also run with these privileges. For this reason we recommend that all users be careful to only use - loadable modules from reliable sources. By the time that XFree86 - 4.0 is released, we hope to have implemented a method for sign- - ing/verifying modules that we provide. + loadable modules from reliable sources. We hope to have a mecha- + nism for signing/verifying the modules that we provide available in + a future release. -4.2 Configuration File +2.2 Configuration File The X server configuration file format has been extended to handle some of the new functionality. The xf86config utility can be used to generate a -basic config file, that may require some manual editing. Alternatively, the -sample config file XF86Config.eg that is installed in /usr/X11R6/lib/X11 may -be used as a starting point. The XF86Setup utility is currently not usable, -but work is continuing in this area. +basic config file, that may require some manual editing. The X server also +has preliminary support for generating a basic config file. This is done by +running (as root) "XFree86 -configure". Alternatively, the sample config +file XF86Config.eg that is installed in /usr/X11R6/lib/X11 may be used as a +starting point. The XF86Setup utility is currently not usable, but work is +continuing in this area. -The main changes are: +The main changes are covered here, but please refer to the XF86Config manual +page for more comprehensive information: o The Module section is used to load server extension modules and font modules, but not XInput drivers. The .so suffix should no longer be @@ -191,11 +133,13 @@ loading the module via a SubSection instead of the usual Load keyword. The bitmap module is the only font module that is loaded by default. No server extensions are loaded by default, but some are built-in to the - server. The following example shows how to load all the server exten- - sions plus the Type1 and TrueType fonts support, and a commented example - that shows how to pass options to an extension (this one is for loading - the misc extensions (extmod) with the XFree86-VidModeExtension dis- - abled): + server. It is strongly recommended that the extension module containing + a range of small miscellaneous extensions (extmod) be loaded because + some commonly used things won't work correctly without it. The follow- + ing example shows how to load all the server extensions plus the Type1 + and TrueType fonts support, and a commented example that shows how to + pass options to an extension (this one is for loading the misc exten- + sions (extmod) with the XFree86-VidModeExtension disabled): Section "Module" @@ -236,7 +180,8 @@ false. Frequency options can have the strings Hz, kHz, or MHz appended to the numerical value specified. - Note: the value must always be enclosed in double quotes ("). + Note: the value must always be enclosed in double quotes ("), even when + it is numerical. o The ServerFlags section now accepts its parameters as Options instead of as special keywords. The older keyword format is still recognised for @@ -249,15 +194,15 @@ Option "blank time" "10" Option "standby time" "20" Option "suspend time" "30" - Option "off time" "60" + Option "off time" "40" o The Keyboard, Pointer and XInput sections have been replaced by a more general InputDevice section. The old Keyboard and Pointer sections are still recognised for compatibility purposes, but they are deprecated and - support for them may be dropped in future releases. The keywords from - the old sections are expressed as Options in the InputDevice sections. - The following example shows typical InputDevice sections for the core - mouse and keyboard. + support for them may be dropped in future releases. The old XInput sec- + tions are no longer recognised. The keywords from the old sections are + expressed as Options in the InputDevice sections. The following example + shows typical InputDevice sections for the core mouse and keyboard. Section "InputDevice" Identifier "Keyboard 1" @@ -272,23 +217,21 @@ Driver "mouse" Option "Protocol" "PS/2" Option "Device" "/dev/mouse" - SampleRate 80 + Option "SampleRate" "80" EndSection - Note: Additional sample rates have been added for some mice. Matching - the mouse sampling rate with the vertical refresh rate can yield very - noticeable improvements in smoothness of pointer event driven operations - such as window moves and scrolling. - o The Monitor section is mostly unchanged. The main difference is that a set of VESA modes is defined internally in the server, and so for most monitors, it isn't necessary to specify any modes explicitly in the Mon- - itor section. The Monitor section may also include Options. Options - that are monitor-specific, like the "DPMS" and "Sync on Green" options - are best specified in the Monitor sections. + itor section. There is also a new Modes section that can be used to + define a set of modes separately from the Monitor section, and the Moni- + tor section may "include" them with the "UseModes" keyword. The Monitor + section may also include Options. Options that are monitor-specific, + like the "DPMS" and "Sync on Green" options are best specified in the + Monitor sections. o The Device sections are mostly unchanged. The main difference is the - new (and mandatory) Driver keyword, that specifies which video driver + new (and mandatory) Driver keyword that specifies which video driver should be loaded to drive the video card. Another difference is the BusID keyword that is used to specify which of possibly multiple video cards the Device section is for. The following is an example for a @@ -323,13 +266,14 @@ Option "BlankTime" "5" EndSection - See the document xc/programs/Xserver/hw/xfree86/doc/DESIGN for a more - detailed explanation of the new ServerLayout section syntax. + See the XF86Config man page for a more detailed explanation of the for- + mat of the new ServerLayout section. The config file search patch has been extended, with the directories /etc/X11 -and /usr/X11R6/etc being added. +and /usr/X11R6/etc/X11 being added. The full search path details are docu- +mented in the XF86Config manual page. -4.3 Command Line Options +2.3 Command Line Options The following new X server command line options have been added: @@ -408,16 +352,13 @@ -logfile file This specifies the log file name. When specified here, - it overrides the value specified in the config file. - This option is only available when the server is started - by the root user. + it overrides the default value. This option is only + available when the server is started by the root user. -scanpci This specifies that the scanpci module should be loaded - and executed. This does a scan of the PCI bus. This - option is only available when the server is started by - the root user. + and executed. This does a scan of the PCI bus. -logverbose [n] @@ -443,29 +384,29 @@ This makes it possible for users to choose from multiple config files that the the sysadmin has provided. -4.4 XAA +2.4 XAA The XFree86 Acceleration Architecture (XAA) has been completely rewritten from scratch. Most drivers implement acceleration by making use of the XAA module. -4.5 Multi-head +2.5 Multi-head Some multi-head configurations are supported in this release, primarily with multiple PCI/AGP cards. However, this is an area that is still being worked on, and we expect that the range of configurations for which it works well -will increase in future snapshots. A configuration that is known to work -well in most cases is multiple (supported) Matrox cards. +will increase in future releases. A configuration that is known to work well +in most cases is multiple (supported) Matrox cards. One of the main problems is with drivers not sufficiently initialising cards -that were not initialised at boot time. Normally only the primary video card -gets initialised at boot time. Some combinations can be made to work better -by changing which card is the primary card (either by using a different PCI -slot, or by changing the system BIOS's preference for the primary card). We -are investigating options for ``soft-booting'' secondary video cards to deal -with this problem, and we've had some very encouraging results. +that were not initialised at boot time. This has been improved somewhat with +the INT10 support that is used by most drivers (which allows secondary card +to be "soft-booted", but in some cases there are other issues that still need +to be resolved. Some combinations can be made to work better by changing +which card is the primary card (either by using a different PCI slot, or by +changing the system BIOS's preference for the primary card). -4.6 Xinerama +2.6 Xinerama Xinerama is an X server extension that allows multiple physical screens to behave as a single screen. With traditional multi-head in X11, windows can- @@ -477,98 +418,72 @@ 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 this snapshot -contains many bug fixes. This is an area that we are still working on, and -we expect it to be improved further in future snapshots. +Xinerama was included with X11R6.4. The version included in this release was +completely rewritten for improved performance and correctness. Known problems: - o It appears that there are still some bugs that cause unexpected - behaviour from time to time. - o Most (all?) window managers are not Xinerama-aware, and so some opera- tions like window placement and resizing might not behave in an ideal way. This is an issue that needs to be dealt with in the individual window managers, and isn't specifically an XFree86 problem. -4.7 DGA version 2 +2.7 XVideo extension + +The XVideo extension is included in this release, but nobody seems interested +in writing up some information about it. + +2.8 DGA version 2 DGA 2.0 is nearly completed but still not implemented by all drivers. Pre- liminary documentation for the client libraries can be found in the xc/pro- grams/Xserver/hw/xfree86/DGA document. Some degree of backwards compatibil- -ity with version 1.0 is provided. - -4.8 DDC - -The VESA(R) Display Data Channel (DDC[tm]) standard (related to, but separate -from, the VESA(R) Plug and Display standard) allows the monitor to tell the -video card (or on some cases the computer directly) about itself; particu- -larly the supported screen resolutions and refresh rates. - -Partial or complete DDC support is available in the following hardware mod- -ules: - - o APM - - o Chips +ity with version 1.0 is provided. This information is out of date. - o Cirrus +2.9 DDC - o Glint - - o MGA - - o Neomagic - - o S3 ViRGE - - o SIS - - o Trident +The VESA(R) Display Data Channel (DDC[tm]) standard allows the monitor to +tell the video card (or on some cases the computer directly) about itself; +particularly the supported screen resolutions and refresh rates. +Partial or complete DDC support is available in most of the video drivers. DDC is enabled by default, but can be disabled with a "Device" section entry: Option "NoDDC". We have support for DDC versions 1 and 2; these can be dis- abled independently with Option "NoDDC1" and Option "NoDDC2". At startup the server prints out DDC information from the display, but it -does not yet use it the determine modelines. +does not yet use it the determine modelines. For some drivers, the X +server's new -configure option uses the DDC information when generating the +config file. Changed behavior caused by DDC. Several drivers uses DDC information to set -the monitor gamma (brightness) curve, and the screen size and pitch. - - o The gamma is particularly noticeable; every monitor I have tried has a - gamma setting > 2, which means that the picture is much lighter than - under 3.3.x or without DDC. To revert to the previous behavior put - - Gamma 1.0 1.0 1.0 - - in the appropriate "Monitor" section of the config file. - - o Similarly, you can override the DDC probed "dpi" value by explicitly - resetting it to the 3.3.x and non-DDC default value 75 with the -dpi 75 - command line option for the X server, or by specifying appropriate - screen dimensions with the "DisplaySize" keyword in the "Monitor" sec- - tion of the config file. +the screen size and pitch. This can be overridden by explicitly resetting it +to the and non-DDC default value 75 with the -dpi 75 command line option for +the X server, or by specifying appropriate screen dimensions with the "Dis- +playSize" keyword in the "Monitor" section of the config file. -4.9 GLX and the Direct Rendering Infrastructure (DRI) +2.10 GLX and the Direct Rendering Infrastructure (DRI) Precision Insight has been provided -with funding and support from Red Hat and SGI - to integrate the GLX extension for 3D rendering in -an X11 window. The 3D core rendering component is the Mesa - library. SGI has released the sources to the +with funding and support from Red Hat , SGI +, 3Dfx , Intel +, ATI , and Matrox + to integrate the GLX extension for 3D rendering +in an X11 window. The 3D core rendering component is the Mesa + library. SGI has released the sources to the GLX extension framework under an open license, which essentially provides the glue between the 3D library and this windowing system. Precision Insight has -integrated these components into this XFree86 X Server and added a Direct -Rendering Infrastructure. Direct Rendering provides a highly optimized path -for sending 3D data directly to the graphics hardware. This release demon- -strates a sample implementation of direct rendering by providing a single path of 3D hardware acceler- -ated rendering for the GMX2000 and 3dfx voodoo graphics cards. Future -releases will support much broader implementations of hardware accelerated -direct rendering on a wide range of 3D capable graphics devices. +integrated these components into the XFree86 X Server and added a Direct Ren- +dering Infrastructure (DRI). Direct Rendering provides a highly optimized +path for sending 3D data directly to the graphics hardware. This release +provides a complete implementation of direct rendering support for the 3Dfx +Banshee and Voodoo3 graphics cards. Additional direct rendering drivers will +be available for 3Dfx, Intel, ATI and Matrox boards during the second quarter +of 2000. Updated information on DRI compatible drivers can be found at the +DRI Project on SourceForge +. -4.10 X-Video Extension (Xv) +2.11 X-Video Extension (Xv) 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 @@ -576,10 +491,10 @@ display YUV data with high quality hardware scaling and filtering. XvImages are only supported by the Matrox G200/G400 cards at the moment. -4.11 Other extensions +2.12 Other extensions The XFree86-Misc extension has not been fully ported to the new server archi- -tecture yet. This should be completed in a future snapshot. +tecture yet. This should be completed in a future release. The XFree86-VidModeExtension extension has been updated, and mostly ported to the new server architecture. The area of mode validation needs further work, @@ -587,11 +502,11 @@ changing the gamma setting at run-time, for modes where this is possible. The new xgamma utility makes use of this feature. Compatibility with the 3.3.x version of the extension is provided. The missing parts of this exten- -sion and some new features should be completed in a future snapshot. +sion and some new features should be completed in a future release. -4.12 Drivers +2.13 Drivers -XFree86 3.9.18 includes the following drivers: +XFree86 4.0 includes the following drivers: +------------+----------------------+ |Driver Name | Description | @@ -603,7 +518,7 @@ |cyrix (*) | Cyrix MediaGX | |fbdev | Linux fbdev | |glide | Glide2x (3Dfx) | - |glint | 3Dlabs | + |glint | 3Dlabs, TI | |i740 | Intel i740 | |i810 | Intel i810 | |mga | Matrox | @@ -623,41 +538,23 @@ Drivers marked with (*) are present in a preliminary form in this release, but are not complete and/or stable yet. -4.12.1 APM +2.13.1 APM -It's the driver for Alliance AT3D/AT25 and AT24 chips. There is a rather com- -plete support for the functions with acceleration at 8,15,16,24 and 32 bits -(limited by the chip at 24bpp). There is preliminary, still buggy, support -for the AP6422 chip, which is still supported in 3.3.x servers. The Xv driver -is almost ok. The Rush extension for glide2x works, with some additions, -including overlay of the result. DGA and DGA2 have been tested ok. +This is the driver for Alliance AT3D/AT25 and AT24 chips. There is a rather +complete support for the functions with acceleration at 8,15,16,24 and 32 +bits (limited by the chip at 24bpp). There is preliminary, still buggy, sup- +port for the AP6422 chip, which is still supported in 3.3.x servers. The Xv +driver is almost ok. The Rush extension for glide2x works, with some addi- +tions, including overlay of the result. DGA and DGA2 have been tested ok. +Further information can be found in README.apm. -Main useful options: - - SetMclk - to set the memory clock (default should be OK). - - SWCursor - to force the software cursor. - - HWCursor - to force the hardware cursor. - - NoAccel - to disable (XAA) acceleration. - - ShadowFB - to enable shadow framebuffer operation (the rendering is done in - system memory and then copied to the framebuffer, useful when - acceleration is disabled). - -4.12.2 Chips & Technologies +2.13.2 Chips & Technologies Information about the C&T driver can be found in README.chips. -4.12.3 s3virge +2.13.3 s3virge -The s3virge driver is a port of the 3.3.3.1 SVGA S3 ViRGE driver. As such it +The s3virge driver is a port of the 3.3.x SVGA S3 ViRGE driver. As such it should be as stable and functional as previous XFree86 releases. There are a couple additional benefits included primarily due to common enhancements: @@ -672,27 +569,33 @@ o The s3virge man page lists options and has configuration notes for this release of the driver. + o Trio 3D and Trio 3D/2X support has been added, matching the 3.3.6 + driver. + + o Supports screen rotation and shadow framebuffer. + Outstanding items not implemented or fully tested: o DGA support is implemented, but preliminary and untested. -4.12.4 TGA +Further information can be found in README.s3virge. + +2.13.4 TGA The TGA driver is now accelerated and supports both 8 and 32 plane frame- buffers. It is known to work under Linux/Alpha. Please see the README.DECtga file for further information. -4.12.5 Matrox +2.13.5 Matrox The MGA driver supports the same range or hardware as XFree86 3.3.4, but has -a number of enhancements including multi-head support and support for over- -lays (8-bit + 24-bit). +a number of enhancements including multi-head support and support for (non- +destructive) overlays (8-bit + 24-bit). Option "overlay" when the server is started in 32bpp (-fbbpp 32) will enable the 8+24 mode. The current implementation doesn't optimize away unnecessary exposures yet so the performance of this option will be better in future -snapshots. The option is not supported on the G100 due to a missing hardware -feature. By default, the color key for the overlays is 255, but this can be +release. By default, the color key for the overlays is 255, but this can be changed with the "ColorKey" option to work around problems in specific pro- grams. Valid values for the key are 2-255. @@ -702,21 +605,20 @@ Further information can be found in the mga man page. -4.12.6 ATI +2.13.6 ATI Information about the ATI driver can be found in README.ati . The current version is not accelerated. Acceleration support is planned for -a future snapshot. +a future release. -4.12.7 NVIDIA +2.13.7 NVIDIA The "nv" driver supports all Riva TNT accelerators as well as the new GeForce -and Quadro accelerators. 3.9.17 adds DGA 2.0 support and performance -improvements as well as resolving some rendering correctness issues. +and Quadro accelerators. DGA 2.0 support is included. Further information can be found in the nv man page. -4.12.8 Glide +2.13.8 Glide This driver is for Voodoo 1 and Voodoo 2 boards. It runs X on top of the 3DFX Glide API (where this is available, like for Linux). You need to have Glide @@ -737,9 +639,19 @@ For Voodoo Banshee and Voodoo 3 boards or later: Please use the tdfx driver which talks directly to the hardware and is much faster. -5. X libraries and clients +2.13.9 GLINT -5.1 Xaw +The "glint" driver supports most 3Dlabs/Texas Instruments GLINT/Permedia +chips. There is a rather complete support (better than in 3.3.x) for acceler- +ation at 8, 15, 16, and 24 bit depths (limited by some chips at some depths). +8+24 overlay is supported. The Xv extension is supported for some boards. + +Further information about this driver can be found in the 'glint' driver man +page. + +3. X libraries and clients + +3.1 Xaw Two versions of the Xaw library are provided in this release. A version with bug fixes and a few binary compatible improvements and a new version with @@ -786,12 +698,6 @@ o Text indentation support is also available. - o This snapshot shows the current state of the work to add to the Xaw text - widget WYSIWYG capabilities. The state is very initial, and can be seen - as a candidate to a candidate to a very early alpha snapshot. There is - no public interface for programming yet, because the current one is very - likely to change before ready to use. - Bug fixes: o The simple menu widget geometry management code was improved to solve @@ -804,11 +710,11 @@ o Several bugs were fixed in the text code, while some code was rewritten from scratch. -5.2 Xpm +3.2 Xpm Version 3.4k of the Xpm (X pixmap) library is now integrated into XFree86. -5.3 xterm +3.3 xterm New Features: @@ -985,7 +891,7 @@ o Various improvements to configure script, e.g., tests for utmp. -5.4 xedit +3.4 xedit Xedit have been changed to use most of the new features added to the new ver- sion of the Xaw library, and some xedit only features were added. Emacs users @@ -1019,27 +925,23 @@ o The interface also checks for repeated words. - o A first tentative to add programming modes was done. Currently, there - are two modes: + o A first tentative to add programming modes was done. Currently, there is + one mode: o C-mode: this mode is expected to be stable, and fully usable. - o Html-mode: a lot of work needs to be done yet. It is included in - this snapshot only to show what the new text widget capabilities - can do. - -6. Fonts and Internationalisation +4. Fonts and Internationalisation Details about the font support in this version of XFree86 can be found in the README.fonts document. -6.1 TrueType support +4.1 TrueType support This version of XFree86 comes with two TrueType backends, known as `xfsft' (the "freetype" module) and `X-TrueType' (the "xtt" module). Both of these backends are based on the FreeType library. -6.2 CID font support +4.2 CID font support Support for CID-keyed fonts is included in this version of XFree86. The CID- keyed font format was designed by Adobe Systems @@ -1047,7 +949,7 @@ was donated by SGI . See the LICENSE document for a copy of the CID Font Code Public License. -6.3 Internationalisation of the scalable font backends +4.3 Internationalisation of the scalable font backends A new ``fontenc'' layer has been added to allow the scalable font backends to use a common method of font re-encoding. This re-encoding makes it possible @@ -1056,21 +958,37 @@ TrueType backend. The `X-TrueType' version of the TrueType backend uses a different re-encoding method based on loadable encoding modules. -6.4 Large font optimisation +4.4 Large font optimisation The glyph metrics array, which all the X clients using a particular font have access to, is now placed in shared memory, so as to reduce redundant memory -consumption. For non-local clients, the glyph metrics array is trasmitted in -a compressed format. +consumption. For non-local clients, the glyph metrics array is transmitted +in a compressed format. -6.5 Unicode support +4.5 Unicode/ISO 10646 support What is included: - o ISO 10646-1 extension of ``fixed'' BDF fonts added that cover over 2000 - characters including all Latin, Greek, Cyrillic, Armenian, and Gregorian - characters, plus numerous scientific and technical symbols (further - fonts are under preparation). + o All ``-misc-fixed-*'' BDF fonts are now available in the ISO10646-1 + encoding and cover at least the 614 characters found in ISO + 8859-{1-5,7-10,14,15}, CP1252, and MES-1. The non-bold fonts also cover + all Windows Glyph List 4 (WGL4) characters, including those found in all + 8-bit MS-DOS/Windows code pages. The 8-bit variants of the ``-misc- + fixed-*'' BDF fonts (ISO8859-1, ISO8859-2, KOI8-R, etc.) have all been + automatically generated from the new ISO10646-1 master fonts. + + o Some ``-misc-fixed-*'' BDF ISO10646-1 fonts now cover a comprehensive + Unicode repertoire of over 3000 characters including all Latin, Greek, + Cyrillic, Armenian, Gregorian, Hebrew, IPA, and APL characters, plus + numerous scientific, typographic, technical, and backwards-compatibility + symbols. Some of these fonts also cover Arabic, Ethiopian, Thai, + Han/Kanji, Hangul, full ISO 8859, and more. For the 6x13 font there is + now a 12x13ja Kanji extension and for the 9x18 font there is a 18x18ja + Kanji/Han/Hangul extension, which covers all ISO-2022-JP-2 (RFC 1554) + characters. The 9x18 font can also be used to implement simple combining + characters by accent overstriking. For more information, read Markus + Kuhn's UTF-8 and Unicode FAQ . o Mark Leisher's ClearlyU proportional font (similar to Computer Modern). @@ -1082,29 +1000,48 @@ Known problems: - o Xlib does not yet support UTF-8 as a locale, which means that xterm - UTF-8 keyboard support is at the moment a temporary hack. - - o ISO 10646-1 cell-spaced fonts such as ``fixed'' work nicely, but mono- - spaced and proportional fonts are handled inefficiently by the X proto- - col, resulting in metrics for 64k glyphs even if only 2000 glyphs are - used. - - o ISO 10646 Level 2 combining characters not yet supported by xterm (will - be needed for instance for the Thai script). - -7. Miscellaneous - -7.1 Directory rearrangements + o Xlib does not yet fully support UTF-8 as a locale, which means that + xterm UTF-8 keyboard support is at the moment a temporary hack. -Some changes to the installed XFree86 directory structure have been planned -for 4.0. Not all of these changes have been implemented in this snapshot, -and they will appear in a future snapshot. One important change that has -been implemented is a modified search path for the X server's XF86Config -file. The details of this can be found above in the Configuration File (sec- -tion 4.2, page 1) section. + o Most ISO10646-1 fonts encode no characters above U+31FF. This avoids the + inefficient allocation and transmission of a >700 kB large XFontStruct + structure, which would happen if the (not very important) ligatures and + symbols above U+f000 were present. + + o ISO 10646 Level 2 combining characters are not yet supported by xterm + (will be needed for instance for Thai and IPA). + + o Switching between a half-width and full-width font pair (such as 9x18 + and 18x18ja) is not yet supported by xterm (will be needed for CJK + scripts). + +4.6 Lucidux fonts from Bigelow and Holmes + +XFree86 now includes the ``Lucidux'' family of professionally hinted Type 1 +fonts. This family consists of the fonts ``Lucidux Serif'', ``Lucidux Sans'' +and ``Lucidux Mono'' in Roman and oblique variants, and includes over 370 +glyphs in each font covering among others the glyphs needed for ISO 8859-1, +2, 3, 4, 9 and 15. Bold variants will be included in a future release. The +design and font outlines were donated by Charles Bigelow and Kris Holmes from +Bigelow and Holmes Inc., and the hinting was donated by Berthold Horn and +Blenda Horn from Y&Y, Inc. For more information, please contact + or , or consult Y&Y's web site +. + +5. Miscellaneous + +5.1 Directory rearrangements + +Some changes to the installed XFree86 directory structure have been imple- +mented for 4.0. One important change is a modified search path for the X +server's XF86Config file. The details of this can be found in the XF86Config +manual page. The other main change is moving most of the run-time configura- +tion files to /etc/X11, with symbolic links in the old /usr/X11R6/lib/X11 +location pointing to the new location. Some run-time generated files are now +located under the appropriate subdirectories of /var, again with the relevant +symbolic links in the old location. - Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/RELNOTES.sgml,v 1.29 2000/02/21 22:29:07 dawes Exp $ + Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/RELNOTES.sgml,v 1.37 2000/03/08 20:11:55 dawes Exp $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/RELNOTES,v 3.78 2000/02/21 22:44:45 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/RELNOTES,v 3.82 2000/03/08 20:39:24 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/Status diff -u xc/programs/Xserver/hw/xfree86/doc/Status:1.8 xc/programs/Xserver/hw/xfree86/doc/Status:1.11 --- xc/programs/Xserver/hw/xfree86/doc/Status:1.8 Wed Mar 8 16:30:53 2000 +++ xc/programs/Xserver/hw/xfree86/doc/Status Wed Mar 8 16:30:53 2000 @@ -1,23 +1,23 @@ - Driver Status for XFree86[tm] 3.9.18 + Driver Status for XFree86[tm] 4.0 The XFree86 Project, Inc - 12 February 2000 + 3 March 2000 Abstract This document provides information about the status of the driver - and hardware support in XFree86 3.9.18 compared with that in - XFree86 3.3.6. Please send updates for this document to + and hardware support in XFree86 4.0 compared with that in XFree86 + 3.3.6. Please send updates for this document to 1. Introduction This document contains one section per vendor (organised alphabetically) for -each chipset family that is supported in XFree86 3.3.6 or XFree86 3.9.18. It +each chipset family that is supported in XFree86 3.3.6 or XFree86 4.0. It includes information about the status of the drivers and the hardware they support, including a comparison of the level of support between versions -3.3.6 and 3.9.18. +3.3.6 and 4.0. NOTE: Status information needs to be checked carefully and expanded where possible. E.g., include information about acceleration, multi-head, known @@ -31,7 +31,7 @@ Support is provided by the XF86_SVGA server with the tdfx driver). - 3.9.18: + 4.0: Support for Voodoo 1 and Voodoo 2 via glide on platforms where glide is available (Linux and FreeBSD(?)). Support is provided by the "glide" driver (requires Glide 2x). @@ -40,7 +40,7 @@ Support is provided by the "tdfx" driver. Summary: - All hardware supported in 3.3.6 is also supported in 3.9.18. + All hardware supported in 3.3.6 is also supported in 4.0. 3. 3Dlabs @@ -50,13 +50,13 @@ ramdacs), Permedia with IBM RGB526 ramdac, Permedia 2, 2a, 2v. Support is provided by the XF86_3DLabs server. - 3.9.18: + 4.0: Support (including acceleration) for Permedia, Permedia 2, 2v (and 2a??) GLINT 500TX, GLINT MX, GLINT Gamma, and Glint Delta coproc. Support is provided by the "glint" driver. Summary: - All hardware supported in 3.3.6 is also supported in 3.9.18. + All hardware supported in 3.3.6 is also supported in 4.0. 4. Alliance @@ -64,15 +64,14 @@ Support (including acceleration) for the AT24, AP6422, AT3D. Support is provided by the XF86_SVGA server with the apm driver. - 3.9.18: + 4.0: Support (including acceleration?) for the AT24, AT25 and AT3D. This support is provided by the "apm" driver. This driver cur- - rently has only incomplete support for the AP6422. NEED TO CHECK - IF THESE CARDS WILL WORK WITH fbdev. + rently has only incomplete support for the AP6422. Summary: - The AP6422 is supported in 3.3.6 but not fully in 3.9.18. The - AT25 is supported in 3.9.18 but not in 3.3.6. + The AP6422 is supported in 3.3.6 but not fully in 4.0. The AT25 + is supported in 4.0 but not in 3.3.6. 5. ARK Logic @@ -81,13 +80,12 @@ and ARK2000MT. Support is provided by the XF86_SVGA server with the ark driver. - 3.9.18: + 4.0: No native support for these chipsets, because the old driver has - not been ported. NEED TO CHECK IF THESE CARDS WILL WORK WITH - fbdev. + not been ported. Summary: - No ARK Logic chips are supported in 3.9.18. + No ARK Logic chips are supported in 4.0. 6. ATI @@ -105,16 +103,16 @@ driver. Accelerated support is provided for the Rage 128 chips by the XF86_SVGA server with the r128 driver. - 3.9.18: + 4.0: Accelerated support is provided for the Rage 128 chips by the "r128" driver. Unaccelerated support is provided for all of the others except the Mach8 and some early Mach32 chips by the "ati" driver. Summary: - All chips supported in 3.3.6 are supported in 3.9.18 except for - Mach8 and some old Mach32 chips. The support in 3.9.18 is, how- - ever, unaccelerated for all chips except the Rage 128. + All chips supported in 3.3.6 are supported in 4.0 except for + Mach8 and some old Mach32 chips. The support in 4.0 is, however, + unaccelerated for all chips except the Rage 128. 7. Avance Logic @@ -126,13 +124,12 @@ don't have any recent test reports, and these drivers have no maintainer. - 3.9.18: + 4.0: No native support for these chipsets, because the old drivers - have not been ported. NEED TO CHECK IF THESE CARDS WILL WORK - WITH fbdev. + have not been ported. Summary: - No Avance Logic chips are supported in 3.9.18. + No Avance Logic chips are supported in 4.0. 8. Chips and Technologies @@ -142,13 +139,13 @@ 64300. This support is provided by the XF86_SVGA server with the chips driver. - 3.9.18: + 4.0: Support (accelerated) for the 65520, 65525, 65530, 65535, 65540, 65545, 65546, 65548, 65550, 65554, 65555, 68554, 69000, 64200 and 64300. This support is provided by the "chips" driver. Summary: - All chips supported in 3.3.6 are also supported in 3.9.18. + All chips supported in 3.3.6 are also supported in 4.0. 9. Cirrus Logic @@ -160,16 +157,15 @@ 7541, 7542, 7543, 7548, 7555 and 7556 is provided by the XF86_SVGA server with the cirrus driver. - 3.9.18: + 4.0: Support (accelerated) for the Alpine (5430, 5434, 5436, 5446, 5480), and Laguna (5462, 5464, 5465) chips is provided by the - "cirrus" driver. NEED TO CHECK IF THE OTHERS WILL WORK WITH - fbdev. + "cirrus" driver. Summary: - The following chips are supported in 3.3.6 but not in 3.9.18: - 6410, 6412, 6420, 6440, 5420, 5422, 5424, 5426, 5428, 5429, 6205, - 6215, 6225, 6235, 7541, 7542, 7543, 7548, 7555 and 7556. + The following chips are supported in 3.3.6 but not in 4.0: 6410, + 6412, 6420, 6440, 5420, 5422, 5424, 5426, 5428, 5429, 6205, 6215, + 6225, 6235, 7541, 7542, 7543, 7548, 7555 and 7556. 10. Compaq/Digital @@ -183,7 +179,7 @@ 24 plane 3D chips (on Alpha platforms) is provided by the XF86_TGA server. - 3.9.18: + 4.0: No support for the Compaq AVGA (driver hasn't been ported). Support (accelerated) for the DEC 21030 TGA 8 plane, 24 plane and @@ -191,8 +187,8 @@ the "tga" driver. Summary: - No Compaq AVGA support in 3.9.18. DEC TGA support is equivalent - in both versions. + No Compaq AVGA support in 4.0. DEC TGA support is equivalent in + both versions. 11. Cyrix @@ -200,13 +196,12 @@ Support (accelerated) for the Cyrix MediaGX is provided by the XF86_SVGA server with the cyrix driver. - 3.9.18: + 4.0: A preliminary port of the driver is available, but it isn't ready - for widespread use. NEED TO CHECK IF THESE CARDS WILL WORK WITH - fbdev. + for widespread use. Summary: - No Cyrix chips are well-supported in 3.9.18. + No Cyrix chips are well-supported in 4.0. 12. Epson @@ -214,13 +209,12 @@ Support (accelerated) for the Epson SPC8110 is provided by the XF86_SVGA server with the spc8100 driver. - 3.9.18: + 4.0: No native support for this chipset, because the old driver has - not been ported. NEED TO CHECK IF THESE CARDS WILL WORK WITH - fbdev. + not been ported. Summary: - No Epson chips are supported in 3.9.18. + No Epson chips are supported in 4.0. 13. Genoa @@ -230,13 +224,12 @@ because we don't have any recent test reports, and this driver has no maintainer. - 3.9.18: + 4.0: No native support for this chipset, because the old driver has - not been ported. NEED TO CHECK IF THESE CARDS WILL WORK WITH - fbdev. + not been ported. Summary: - No Genoa chips are supported in 3.9.18. + No Genoa chips are supported in 4.0. 14. IBM @@ -251,7 +244,7 @@ Support for the IBM XGA-2 chip is provided by the XF86_AGX server. - 3.9.18: + 4.0: Support for the standard IBM VGA chip (and compatibles) is pro- vided by the "vga" driver. @@ -260,7 +253,7 @@ Summary: The standard VGA core is supported in both versions, but there is - no support for the 8514/A or XGA-2 in 3.9.18. + no support for the 8514/A or XGA-2 in 4.0. 15. IIT @@ -268,13 +261,12 @@ Support (accelerated) for the AGX-016, AGX-015 and AGX-014 is provided by the XF86_AGX server.. - 3.9.18: + 4.0: No native support for these chipsets, because the old driver has - not been ported. NEED TO CHECK IF THESE CARDS WILL WORK WITH - fbdev. + not been ported. Summary: - No IIT chips are supported in 3.9.18. + No IIT chips are supported in 4.0. 16. Intel @@ -285,14 +277,15 @@ Linux, and requires the agpgart.o kernel module in order to use modes that require more than 1MB of video memory. - 3.9.18: + 4.0: Support (accelerated) for the Intel i740 is provided by the - "i740" driver. The i810 driver has not yet been ported and/or - contributed. + "i740" driver, and support for the Intel i810 is provided by the + "i810" driver. The "i810" driver is currently Linux-only, and + requires the agpgart.o kernel module. Summary: - The i740 is supported in both version, but the i810 is not sup- - ported in 3.9.18 or on non-Linux/x86 platforms. + The i740 and i810 are supported in both versions, but the i810 is + only supported on Linux/x86 platforms at present. 17. Matrox @@ -301,13 +294,13 @@ (Mystique), MGA2164W (Millennium II) (PCI and AGP), G100, G200 and G400 is provided by the XF86_SVGA server with the mga driver. - 3.9.18: + 4.0: Support (accelerated) for the MGA2064W (Millennium I), MGA1064SG (Mystique), MGA2164W (Millennium II) (PCI and AGP), G100, G200 and G400 is provided by the "mga" driver. Summary: - All chips supported in 3.3.6 are also supported in 3.9.18. + All chips supported in 3.3.6 are also supported in 4.0. 18. MX (???) @@ -317,13 +310,12 @@ is unknown because we don't have any recent test reports, and this driver has no maintainer. - 3.9.18: + 4.0: No native support for this chipset, because the old driver has - not been ported. NEED TO CHECK IF THESE CARDS WILL WORK WITH - fbdev. + not been ported. Summary: - No MX (???) chips are supported in 3.9.18. + No MX (???) chips are supported in 4.0. 19. NCR @@ -332,13 +324,12 @@ XF86_SVGA server and the ncr77c22 driver. The status of this support is unknown because we don't have any recent test reports. - 3.9.18: + 4.0: No native support for this chipset, because the old driver has - not been ported. NEED TO CHECK IF THESE CARDS WILL WORK WITH - fbdev. + not been ported. Summary: - No NCR chips are supported in 3.9.18. + No NCR chips are supported in 4.0. 20. NeoMagic @@ -347,13 +338,13 @@ NM2097, NM2160 and NM2200 chipsets is provided by the XF86_SVGA server with the neo driver. - 3.9.18: + 4.0: Support (accelerated) for the NeoMagic NM2070, NM2090, NM2093, NM2097, NM2160 and NM2200 chipsets is provided by the "neomagic" driver. Summary: - All chips supported in 3.3.6 are also supported in 3.9.18. + All chips supported in 3.3.6 are also supported in 4.0. 21. NVIDIA @@ -362,14 +353,14 @@ (Ultra, Vanta, M64), GeForce (DDR) and Quadro is provided by the XF86_SVGA server and the nv driver. - 3.9.18: + 4.0: Support (accelerated) for the Riva 128, 128ZX, TNT, TNT2 (Ultra, Vanta, M64), GeForce (DDR) and Quadro is provided by the XF86_SVGA server and the nv driver. Summary: All chipsets supported in 3.3.6 except the NV1 are also supported - in 3.9.18. + in 4.0. 22. Number Nine @@ -377,13 +368,12 @@ Support (accelerated) for the Imagine 128, Ticket 2 Ride, Revolu- tion 3D and Revolution IV is provided by the XF86_I128 server. - 3.9.18: + 4.0: No native support for these chipsets, because the old driver has - not been ported. NEED TO CHECK IF THESE CARDS WILL WORK WITH - fbdev. + not been ported. Summary: - No Number Nine chips are supported in 3.9.18. + No Number Nine chips are supported in 4.0. 23. Oak Technologies Inc @@ -392,13 +382,12 @@ acceleration) is provided by the XF86_SVGA server and the oak driver. - 3.9.18: + 4.0: No native support for these chipsets, because the old driver has - not been ported. NEED TO CHECK IF THESE CARDS WILL WORK WITH - fbdev. + not been ported. Summary: - No Oak chips are supported in 3.9.18. + No Oak chips are supported in 4.0. 24. Paradise/Western Digital @@ -409,13 +398,12 @@ port for some of these chipsets is uncertain because we don't have any recent test reports, and this driver has no maintainer. - 3.9.18: + 4.0: No native support for these chipsets, because the old driver has - not been ported. NEED TO CHECK IF THESE CARDS WILL WORK WITH - fbdev. + not been ported. Summary: - No Paradise/Western Digital chips are supported in 3.9.18. + No Paradise/Western Digital chips are supported in 4.0. 25. RealTek @@ -425,13 +413,12 @@ unknown because we don't have any recent test reports, and this driver has no maintainer. - 3.9.18: + 4.0: No native support for these chipsets, because the old driver has - not been ported. NEED TO CHECK IF THESE CARDS WILL WORK WITH - fbdev. + not been ported. Summary: - No RealTek chips are supported in 3.9.18. + No RealTek chips are supported in 4.0. 26. Rendition/Micron @@ -439,12 +426,12 @@ Support for the Verite 1000, 2100 and 2200 is provided by the XF86_SVGA server with the rendition driver. - 3.9.18: + 4.0: Support for the Verite 1000, 2100 and 2200 is provided by the "rendition" driver. Summary: - All chips supported in 3.3.6 are also supported in 3.9.18. + All chips supported in 3.3.6 are also supported in 4.0. 27. S3 @@ -462,15 +449,15 @@ by the XF86_SVGA server with the s3_savage driver (CHECK: is this support Linux-only?). - 3.9.18: + 4.0: Support (accelerated) for the ViRGE, ViRGE/VX, ViRGE/DX, ViRGE/GX, ViRGE/GX2, ViRGE/MX, ViRGE/MX+, Trio3D and Trio3D/2X is provided by the "s3virge" driver. Support for the other S3 chipsets has not yet been ported. Summary: - Only the ViRGE and Trio3D chipsets are supported in 3.9.18. All - of the other chipsets are only supported in 3.3.6. + Only the ViRGE and Trio3D chipsets are supported in 4.0. All of + the other chipsets are only supported in 3.3.6. 28. Silicon Integrated Systems (SiS) @@ -479,16 +466,15 @@ 86C225, 5597, 5598, 6326, 530, 620, 300, 630 and 540 is provided by the XF86_SVGA server with the sis driver. - 3.9.18: + 4.0: Support (accelerated) for the SiS 530, 620, 6326 is provided by the "sis" driver. The 630, 300, and 540 are also supported, but this code is new and there are some problems with it in this version. Summary: - Support for the older (CHECK: are they all older than the sup- - ported chips?) chips: 86C201, 86C202 and 620, is only available - in 3.3.6. + Support for the 86C201, 86C202, 86C215, 86C225, 5597 and 5598 is + currently only available in 3.3.6. 29. Silicon Motion, Inc @@ -497,12 +483,12 @@ LynxEM+ and Lynx3DM chips is provided by the XF86_SVGA server with the smi driver. - 3.9.18: + 4.0: No native support for these chipsets, because the driver has not - been ported. NEED TO CHECK IF THESE CARDS WILL WORK WITH fbdev. + been ported. Summary: - No SMI chips are supported in 3.9.18. + No SMI chips are supported in 4.0. 30. Trident Microsystems @@ -517,18 +503,17 @@ CyberBlade/DSTN/i7 and CyberBlade/i1 is provided by the XF86_SVGA server with the tvga8900 driver. - 3.9.18: + 4.0: Support (accelerated where the chip supports it) for the TVGA8900D, TGUI9420DGi, TGUI9440AGi, TGUI9660, TGUI9680, ProVidia 9682, ProVidia 9685, Cyber9320, Cyber9382, Cyber9385, Cyber9388, Cyber9397, Cyber9520, Cyber9397/DVD, Cyber9525/DVD, 3DImage975, 3DImage875, Blade3D, CyberBlade/i7, CyberBlade/DSTN/i7 and - CyberBlade/i1 is provided by the "trident" driver. NEED TO CHECK - IF THE OTHERS WILL WORK WITH fbdev. + CyberBlade/i1 is provided by the "trident" driver. Summary: The following (older) chipsets that are supported in 3.3.6 are - not supported in 3.9.18: TVGA8200LX, TVGA8800CS, TVGA8900B, + not supported in 4.0: TVGA8200LX, TVGA8800CS, TVGA8900B, TVGA8900C, TVGA8900CL, TVGA9000, TVGA9000i, TVGA9100B, TVGA9200CXr, TGUI9400CXi, TGUI9420, TGUI9430DGi. @@ -542,14 +527,14 @@ driver. Support (accelerated) for the ET4000/W32 series and the ET6000 is also provided by the deprecated XF86_W32 server. - 3.9.18: + 4.0: Support for the ET4000AX, and accelerated support for the ET4000/W32, ET4000/W32i, ET4000/W32p, ET6000 and ET6100 is pro- vided by the "tseng" driver. Summary: - All cards supported by 3.3.6 are also supported by 3.9.18 except - for the old ET3000. + All cards supported by 3.3.6 are also supported by 4.0 except for + the old ET3000. 32. Video 7 @@ -559,13 +544,12 @@ unknown because we don't have any recent test reports, and this driver has no maintainer. - 3.9.18: + 4.0: No native support for these chipsets, because the old driver has - not been ported. NEED TO CHECK IF THESE CARDS WILL WORK WITH - fbdev. + not been ported. Summary: - No Video 7 chips are supported in 3.9.18. + No Video 7 chips are supported in 4.0. 33. Weitek @@ -574,15 +558,14 @@ server and accelerated support for the P9100 is provided by the XF86_SVGA server with the p9x00 driver. - 3.9.18: + 4.0: No native support for these chipsets, because the old drivers - have not been ported. NEED TO CHECK IF THESE CARDS WILL WORK - WITH fbdev. + have not been ported. Summary: - No Weitek chips are supported in 3.9.18. + No Weitek chips are supported in 4.0. - Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/Status.sgml,v 1.13 2000/02/21 22:29:08 dawes Exp $ + Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/Status.sgml,v 1.15 2000/03/03 21:28:10 dawes Exp $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/Status,v 1.8 2000/02/21 22:44:46 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/Status,v 1.11 2000/03/04 00:51:35 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/VideoModes.doc diff -u xc/programs/Xserver/hw/xfree86/doc/VideoModes.doc:3.20 xc/programs/Xserver/hw/xfree86/doc/VideoModes.doc:3.22 --- xc/programs/Xserver/hw/xfree86/doc/VideoModes.doc:3.20 Wed Mar 8 16:30:54 2000 +++ xc/programs/Xserver/hw/xfree86/doc/VideoModes.doc Wed Mar 8 16:30:54 2000 @@ -1123,7 +1123,7 @@ # # Do `modeplot -?' to see the control options. # - # ($Id: video-modes.sgml,v 1.2 1997/08/08 15:07:24 esr Exp $) + # (Id: video-modes.sgml,v 1.2 1997/08/08 15:07:24 esr Exp $) # Monitor description. Bandwidth in MHz, horizontal frequencies in kHz # and vertical frequencies in Hz. @@ -1162,7 +1162,7 @@ The modeplot tool was created by Eric S. Raymond based on analysis and scratch code by Martin Lottermoser - This is modeplot $Revision: 1.2 $ + This is modeplot Revision: 1.2 $ EOF exit;; esac @@ -1314,9 +1314,9 @@ modeplot. The distributed modeplot was redesigned and generalized by ESR from Martin's original gnuplot code for one case. - Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/VidModes.sgml,v 3.15 2000/01/24 19:38:29 dawes Exp $ + Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/VidModes.sgml,v 3.16 2000/02/23 20:30:16 dawes Exp $ $XConsortium: VidModes.sgml /main/7 1996/02/21 17:46:17 kaleb $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/VideoModes.doc,v 3.20 2000/02/21 22:44:46 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/VideoModes.doc,v 3.22 2000/03/01 01:48:31 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/xinput diff -u xc/programs/Xserver/hw/xfree86/doc/xinput:3.10 xc/programs/Xserver/hw/xfree86/doc/xinput:3.11 --- xc/programs/Xserver/hw/xfree86/doc/xinput:3.10 Wed Mar 8 16:30:54 2000 +++ xc/programs/Xserver/hw/xfree86/doc/xinput Wed Mar 8 16:30:54 2000 @@ -239,4 +239,4 @@ $XConsortium: xinput.sgml /main/3 1996/10/27 11:06:13 kaleb $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/xinput,v 3.10 2000/02/21 22:44:47 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/xinput,v 3.11 2000/03/01 01:48:32 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/man/Imakefile diff -u xc/programs/Xserver/hw/xfree86/doc/man/Imakefile:3.4 xc/programs/Xserver/hw/xfree86/doc/man/Imakefile:3.5 --- xc/programs/Xserver/hw/xfree86/doc/man/Imakefile:3.4 Sun Aug 1 03:57:14 1999 +++ xc/programs/Xserver/hw/xfree86/doc/man/Imakefile Wed Mar 8 16:30:56 2000 @@ -1,15 +1,31 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/doc/man/Imakefile,v 3.4 1999/08/01 07:57:14 dawes Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/doc/man/Imakefile,v 3.5 2000/03/04 01:07:33 dawes Exp $ MANDIR = $(LIBMANDIR) MANSUFFIX = $(LIBMANSUFFIX) all:: +#if 0 + InstallManPage(XF86DGA,$(MANDIR)) +#if ExpandNamNames +InstallManPageAliases(XF86DGA,$(MANDIR),XF86DGAQueryExtension XF86DGAQueryVersion XF86DGAQueryDirectVideo XF86DGAGetVideo XF86DGADirectVideo XF86DGASetVidPage XF86DGASetViewPort XF86DGAViewPortChanged XF86DGAGetViewPortSize XF86DGAInstallColormap XF86DGAForkApp) +#endif + +#endif + +#if 0 + InstallManPage(XF86Misc,$(MANDIR)) +#if ExpandNamNames +InstallManPageAliases(XF86Misc,$(MANDIR),XF86MiscQueryExtension XF86MiscQueryVersion XF86MiscGetSaver XF86MiscSetSaver XF86MiscGetMouseSettings XF86MiscSetMouseSettings XF86MiscGetKbdSettings XF86MiscSetKbdSettings) +#endif + +#endif + +/* XXX Check if this is up to date */ InstallManPageLong(XF86VM,$(MANDIR),XF86VidMode) #if ExpandManNames -InstallManPageAliases(XF86DGA,$(MANDIR),XF86DGAQueryExtension XF86DGAQueryVersion XF86DGAQueryDirectVideo XF86DGAGetVideo XF86DGADirectVideo XF86DGASetVidPage XF86DGASetViewPort XF86DGAViewPortChanged XF86DGAGetViewPortSize XF86DGAInstallColormap XF86DGAForkApp) -InstallManPageAliases(XF86Misc,$(MANDIR),XF86MiscQueryExtension XF86MiscQueryVersion XF86MiscGetSaver XF86MiscSetSaver XF86MiscGetMouseSettings XF86MiscSetMouseSettings XF86MiscGetKbdSettings XF86MiscSetKbdSettings) InstallManPageAliases(XF86VidMode,$(MANDIR),XF86VidModeQueryExtension XF86VidModeQueryVersion XF86VidModeGetModeLine XF86VidModeGetAllModeLines XF86VidModeDeleteModeLine XF86VidModeModModeLine XF86VidModeSwitchMode XF86VidModeSwitchToMode XF86VidModeLockModeSwitch XF86VidModeGetMonitor XF86VidModeGetViewPort XF86VidModeSetViewPort) #endif + Index: xc/programs/Xserver/hw/xfree86/doc/sgml/DECtga.sgml diff -u xc/programs/Xserver/hw/xfree86/doc/sgml/DECtga.sgml:3.8 xc/programs/Xserver/hw/xfree86/doc/sgml/DECtga.sgml:3.9 --- xc/programs/Xserver/hw/xfree86/doc/sgml/DECtga.sgml:3.8 Mon Jul 19 09:36:20 1999 +++ xc/programs/Xserver/hw/xfree86/doc/sgml/DECtga.sgml Wed Mar 8 16:30:56 2000 @@ -5,10 +5,10 @@ Information for DEC 21030 Users (aka TGA) <author>The XFree86 Project, Inc. -<date>April 29th, 1999 +<date>March 5th, 2000 <ident> -$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/DECtga.sgml,v 3.8 1999/07/19 13:36:20 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/DECtga.sgml,v 3.9 2000/03/06 22:59:23 dawes Exp $ </ident> <toc> @@ -20,7 +20,8 @@ <item>The DEC 21030 is supported by XFree86 &relvers;. 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. +are supported in 24-plane mode. TGA2 (aka PowerStorm 3D30/4D20) +cards are not currently supported. <item>Current Known Problems @@ -34,7 +35,11 @@ <item>After the server has been run using the hardware cursor, the Linux TGA console cursor (which also uses the hardware cursor) is -shifted down by one pixel. +shifted down by one pixel. This problem does not affect Linux kernels +2.2.10 and above, which do not use the hardware cursor. + +<item>The XAA PolySegment() method is buggy. If you experience server +crashes with SIGFPE, or server hangs, try disabling it (see below). </enum> @@ -46,7 +51,7 @@ numbers in the 21030 section. On a Multia, this should be &dquot;PCI:0:11:0&dquot;. -<tag>MemBase "0x???????"</tag> If the server does not +<tag>MemBase 0x???????</tag> If the server does not detect the base address of the 21030, then check /proc/pci for the 21030 and look for the "Prefetchable 32 bit memory at 0x???????" and enter this as your MemBase setting. @@ -57,6 +62,9 @@ <tag>Option "swcursor"</tag> Disables the hardware cursor. +<tag>Option "NoXaaPolySegment"</tag> + Disables the XAA PolySegment() method. + </descrip> </itemize> @@ -65,6 +73,7 @@ <itemize> <item>Matthew Grossman, <email>mattg@oz.net</email> <item>Alan Hourihane, <email>alanh@fairlite.demon.co.uk</email> +<item>Martin Lucina, <email>mato@kotelna.sk</email> <item>Tim Rowley, <email>tor@cs.brown.edu</email> </itemize> Index: xc/programs/Xserver/hw/xfree86/doc/sgml/DGUX.sgml diff -u /dev/null xc/programs/Xserver/hw/xfree86/doc/sgml/DGUX.sgml:1.1 --- /dev/null Wed Mar 8 16:30:56 2000 +++ xc/programs/Xserver/hw/xfree86/doc/sgml/DGUX.sgml Wed Mar 8 16:30:56 2000 @@ -0,0 +1,789 @@ + +<!DOCTYPE linuxdoc PUBLIC "-//XFree86//DTD linuxdoc//EN"> + +<article> + +<title>Instructions for Building XFree86 on an Intel Pentium Aviion machine with DG/UX R4.20MU04 +<author>Takis Psarogiannakopoulos +<date>July 27, 1999 +<toc> + +<sect>Whats new <p> + +July 27, 1999<p> + DG has fix the streams bug in /usr/lib/tcpip.so . (Read below) + The workaround in the July 25 source code has been removed. + I've been told from DG that BSD sockets perform better in DGUX + than SVR4 native STREAMS. From R4.20MU06 DG/UX will have the correct + tcpip.so lib (no bug in STREAMS). If you have MU05,MU04 and you + want for some reason STREAMS definitely contact DG for an updated + /usr/lib/tcpip.so in /usr/lib (patch for your MU04,5). +<p> + DG/UX at the moment lacks the sysi86 syscall and the definition + of SYSI86IOPL (that is in <sys/sysi86.h> but guarded by a + UNIXWARE defintion that of course cannot be applicable to DG/UX). + Until this header is accessible by a simple -DDGUX , and _sysi86, + sysi86 subroutines added to libc (or some other extra library) + we need to define the DG_NO_SYSI86 to be 1. If DG makes the above + modifications , you will need to manually edit the files (before + building!) + xc/programs/Xserver/hw/xfree86/SuperProbe/OS_DGUX.c + xc/programs/Xserver/hw/xfree86/etc/scanpci.c + xc/programs/Xserver/hw/xfree86/os-support/dgux/dgux_video.c + and eliminate DG_NO_SYSI86 flag by changing DG_NO_SYSI86 1-->0. +<p> +July 25, 1999<p> + A major bug has now been corrected in this release. According to this + since the STREAMS interface of DG/UX were broken the server was + listening not to port 6000 (= 0x1770) but to 0x7017. + All binaries that you have from 3.3.3.1, 3.3.3 they will work + locally (if you run them in the same machine) but NOT remotely + because they use an Xlib that tries to connect to port 28365. + If you want to run them remotely YOU MUST recompile them! + Steve thank you for bringing this to my attention initially but + was too busy then to look at it in detail... Perhaps I should + have... +<p> + We now use sockets instead of ioctls. + But I've fix and tested the STREAMS also. +<p> + David thanks for making me realize that this was indeed a problem + in DG/UX. +<p> + I've also take the trouble to port gdb-4.17/8 and ddd (X inter) + in pub/XFree86/3.3.5/binaries/DGUX-ix86/GDB_BETA (both binaries + and source code) in order to be able to send me traces of core + files produced by Xservers. Try +<verb> + gdb /usr/X11R6/bin/X location of core/core + gdb: where +</verb> + and send me what you see. + (I suppose that the Xserver executable is in /usr/X11R6.3/bin) +<p> + From 3.3.3.1: + Several bugs are now fixed. DG/UX support is on this official + patch. All configuration is in xc/config/cf/DGUX.cf and in + xf86site.def. Also Imake autodetects (thanks to David Dawes) + the DGUX OS (including Release version). So only a simple + "make World" is needed anymore to build in ix86 DG/UX. + Usually the process to build is (after unpacking and patching + the source "xc" tree) to go to xc/config/cf copy the file + xf86site.def to site.def and edit the files DGUX.cf ,site.def + for whatever changes you need to do. +<p> + Default ProjectRoot in 3.3.5 is /usr/X11R6 (except if you + set this specifically in DGUX.cf either as /usr/X11R6.3-- + --my choice, or in whatever you like). +<p> + From: + December 1, 1998 + IMPORTANT: PLEASE READ THE FILE README-GCC-2.8.1 + GCC VERSION 2.8.1 is recommended for the DGUX build of X11R6.3 + You can ignore below the _old_ conversation about gcc compiler + if you already run a gcc-2.8.1 in your machine. + +<sect> GENERAL: <p> + + Get from ftp.xfree86.org the XFree 3.3.x source code: +<verb> + ftp ftp.xfree86.org + login: ftp + passwd: your e-mail address + cd pub/XFree86/3.3.5/source + You need the files: + X335src-1.tgz + X335src-2.tgz + X335src-3.tgz +</verb> +<p> + Get also the contributed X software +<verb> + cd /pub/XFree86/3.3.5/source + X335contrib.tgz +</verb> +<p> + If you have the source tarballs of 3.3.3 go to + /pub/XFree86/3.3.5/binaries/DGUX-ix86/SOURCE get the DGUX source + patch +<p> +<verb> + 3.3.3-3.3.5-DGUX.diff.gz + X335contrib-DGUX.diff.gz (patch for the contrib software). +</verb> +<p> + to avoid downloading all the source code again. +<p> + Sorry some DGUX changes they didn't make in time for the official + release date of 3.3.4... + I do this for free, so some times I may be excused for something + like this... +<p> + To build X11R6.3 you need also the tools for DG/UX (see discussion + below). They will be in + ftp dpmms.cam.ac.uk + (University of Cambridge,Department of Pure Mathematics) + in /pub/takis/DGUX-Tools/BuildXtools.tar.gz (anonymous ftp) + or in the ftp.xfree86.org ... + (pub/XFree86/3.3.5/binaries/DGUX-ix86/SOURCE/BUILD-TOOLS/ + BuildXtools.tar.gz). +<p> + Using a big filesystem (I use a virtual disk "xf86work" mounted on + /xf86work of size 1400000 blocks) copy the source as: +<p> +<verb> + cp X335src-1.tgz /xf86work/X335src-1.tar.gz + cp X335src-2.tgz /xf86work/X335src-2.tar.gz + cp X335src-3.tgz /xf86work/X335src-3.tar.gz +</verb> +<p> + (or X333src-1,2,3.tar.gz as above plus the DG/UX patch to 3.3.5 + i.e. the file 3.3.3-3.3.5-DGUX.diff.gz) +<p> + And maybe the contributed software: +<verb> + cp X335contrib.tgz /xf86work + + (cp X335contrib-DGUX.diff.gz /xf86work). +</verb> +<p> + If you get the patches from DGUX-ix86, to build from source 3.3.3 + your first problem is that in order to apply the source patch you + need "patch" a very common GNU program that DG/UX doesn't have!? + This program is in BuildXtools.tar.gz + (or ftp prep.ai.mit.edu cd/pub/gnu get patch-2.5.tar.gz) + So lets speak about these tools before anything else: + Using "sysadm" mount a filesystem usr_local under /usr/local with + size 200000 blocks. Then copy the BuildXtools file in /usr and give: +<verb> + gzip -d < BuildXtools.tar.gz | tar xvf - +</verb> +<p> + It will unfold in the new filesystem /usr/local. + Then go to your ".profile" (in your Home dir , mine eg is /admin) + and add the /usr/local/bin in your path and the /usr/local/lib in + your lib-path. +<p> + What you need is like that: + (vi .profile) +<p> +<verb> + PATH=/usr/local/bin:/sbin:/usr/sbin:/usr/bin + if [ -d /usr/opt/X11/bin ] + then + PATH=$PATH:/usr/opt/X11/bin + fi + export PATH + (/usr/local/bin is before any other path!) + + LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/usr/ccs/lib + export LD_LIBRARY_PATH +</verb> +<p> + then exit and re-login so that your new modified .profile will take effect. +<p> + Now do the following: +<verb> + cd /usr/sbin + cp install install_dg + rm install + cp /usr/local/bin + cp install /usr/bin *(make the GNU install the default install)* + (DG/UX install is useless) + (Look also the file xc/config/cf/DGUX.cf , below). + + (Or get GNU make-3.77 and copy install.sh (or -sh) to a /usr/bin/install) + + cd /usr/bin + cp true /usr/local/bin + cd /usr/local/bin + ln -s true ranlib (Install true as ranlib in the DG/UX system) +</verb> + Usually giving -v,-V or --version will give you build info on all + the tools in /usr/local/bin (try it). +<p> + **Look the discussion for gcc before you build (below)** +<p> + Now untar the source tree: + In /xf86work (or whatever name you gave to the big filesystem for the build) +<verb> + gzip -d < X335src-1.tar.gz | tar xvf - + gzip -d < X335src-2.tar.gz | tar xvf - + gzip -d < X335src-3.tar.gz | tar xvf - +</verb> + + (If you have X-3.3.3 do the same for the 3.3.3 sources and + then apply the 3.3.5-DGUX source patch + +<verb> + gzip -d < 3.3.3-3.3.5-DGUX.diff.gz | patch -p0 -E). +</verb> + + The directory xc in now present in your build filesystem. + + +<sect> Configuration for the build:<p> + Almost all you need is in "DGUX.cf" located in xc/config/cf. + Edit the file DGUX.cf and site.def and change what ever you need. + Remember DGUX.cf overwrites site.def. + The default ProjectRoot for XFree86-3.3.5 is now /usr/X11R6 + (located in site.def). If you want to change this to whatever + you like (I prefer /usr/X11R6.3 and a link in /usr X11R6->X11R6.3) + edit DGUX.cf and locate the entry: +<p> +<verb> + #if 0 + #define ProjectRoot /usr/X11R6.3 + #endif +</verb> + Eliminate the #if 0 , #endif. + Then change this to whatever you prefer. + (I prefer the above for the pre-compiled binaries) +<p> + The DG/UX malloc is crap and keeps bringing problems with some + X software so I don't use it. Instead there is a port of GNU + malloc in /usr/local (it came with the BuildXtools file). + Don't try to build with the /lib/libmalloc.a of DG/UX and then + send me e-mails that some programs they don't work properly. + In my build I use tcl8.0 and tk8.0 since the xconfig of R4.20MU03 + is reporting incorrect values for the monitors and XF86Setup + need to be build in order to manage to adjust the display. + If you don't have this (or don't want this) comment out the lines + about tcl,tk, (in DGUX.cf) +<p> +<verb> + /*******TCL TK DEFINITIONS ***********/ + #define HasTk YES-->NO + ... + #define HasTcl YES-->NO +</verb> + Also 'GNU make' is required for the correct X11R6.3 build. + (it is in Buildxtools file). + If you decide yes to tcl,tk obtain the files +<verb> + tcl8.0.3.tar.gz + tk8.0.3.tar.gz (from some ftp) +</verb> + (or newer versions) and compile them before the building + of X11R6.3 (Build first tcl8.0.3 then tk8.0.3). +<p> +<sect> DISCUSSION ABOUT GCC<p> + There are so much things that I can say for the system gcc of + DG/UX. If I was keeping track for the programs that fail using + this compiler I will certainly have fill a book (conveniently + for the DG of course). + But my work is not to correct bugs for the DG/UX compiler or + anything else) , and in particular to collect reports for + the genius of DG. + (DG:Sorry guys nothing personal. I am a pure Mathematician , + I am doing all this work for pleasure, I don't want any money + from DG or anybody else , I am not looking to become a employer + of DG,and I am NOT a trouble shooter of the DG/UX in general. + But maybe some times if you help I may be able to help you also). +<p> + What I wanted to do is to build X11. Thats why you will find + in BuildXtools a new gcc. This gcc is build for DG/UX R4.20MU02. + so you have to upgrade your DG/UX OS version to the above. + But it is solid to build not only X11 but whatever else you want. + DO NOT use gcc of DG/UX. If you do I cannot tell you anything + about any problems that you have. + To complete the installation of this new gcc do the following: +<p> +<verb> + cp -r /usr/local/gcc-dgux /usr/opt/sdk/sde/ix86dgux/usr/lib + cd /usr/opt/sdk/sde/ix86dgux/usr/lib + rm gcc + ln -s gcc-dgux gcc (set link gcc--->gcc-dgux) + + cd /usr/local + cp -r /usr/local/gcc-dgux /usr/sde/ix86dgux/usr/lib + cd /usr/sde/ix86dgux/usr/lib + rm gcc + ln -s gcc-dgux gcc (set link gcc-->gcc-dgux) +</verb> + + To come back to your old DG/UX gcc just change the above two + links gcc-->gcc-dgux + to gcc-->gcc-2 + with the command: (in both the above two dirs) +<verb> + rm gcc + ln -s gcc-2 gcc +</verb> + + /usr/bin/gcc -v should report the version that you have. + To build successfully this version of X11 gcc is a *MUST*. +<p> + Dynamic loading Servers: + Edit xc/config/cf/DGUX.cf and change the entry +<p> + #ifndef BuildDynamicLoading + #define BuildDynamicLoading NO --->YES. + #endif +<p> + Remember when you build you will see lots of errors and the servers + will NOT build! This is because the dynamic linker doesn't know + the locations of the newly created R6 libX's. + So after the (seem faulty) building do a +<p> + make DESTDIR=ProjectRoot/lib install +<p> + (look below for install, ProjectRoot the location that you choose + in the file xc/config/cf/DGUX.cf above) +<p> + So that all your new libXR6 libraries will go there. + (do a cd ProjectRoot/lib to make sure). +<p> + Then go to your home dir and declare the path ProjectRoot/lib dir + in you LD_LIBRARY_PATH (your profile) as: +<p> + LD_LIBRARY_PATH=ProjectRoot/lib:$LD_LIBRARY_PATH + export LD_LIBRARY_PATH +<p> + Then relogin! +<p> + Now just _rebuild_ A FULL XFree86-3.3.5 with the entry +<p> + #define BuildDynamicLoading YES in your DGUX.cf. +<p> + This time you will build _all_ XFree86-3.3.5 correctly. +<p> + +<sect> BUILD <p> + In the usual X11R5 of DG (mwm) open an xterm and give: + (/bin/sh = Bourne shell) +<p> +<verb> + cd xc + make World > Build-dg.log +</verb> + + In that way you will get all the error messages in your + screen. + Don't worry with messages about -znodefs. +<p> + Note: the old command +<verb> + make World BOOTSTRAPCFLAGS="-DDGUX" > Build-dg.log +</verb> + is no longer needed since imake will detect the DGUX OS + (in Version => 3.3.3.1) and set up things. However this + command will also work. +<p> + And in another xterm give cd xc + tail -f Build-dg.log to watch the building progress. +<p> + To install X11R6.3 XFree version 3.3.5 after the build + you must have a filesystem say usr_X11R6.3 mounted to + the directory /usr/X11R6 size 350000 blocks. + (or whatever you choose to be your ProjectRoot, if you + modify DGUX.cf for another ProjectRoot than the default + /usr/X11R6 in site.def). + Then give +<verb> + make install + make install.man (install the man pages) +</verb> + The installation will not put an XF86Config in your + /usr/X11R6.3/lib/X11/ and so if you give startx the new + X11 will not start. Read the file README-X3331.DGUX in + this ftp site (located in the binaries) about the whole + installation procedure of X11R6.3. + Or quickly you can do: + (I remind: DG/UX mouse device "/dev/mouse") + cd /usr/X11R6.3/bin + ln -s XF86_VGA16 X + Then put in your .profile the path /usr/X11R6.3/bin and + run the XF86Setup program. Adjust first the mouse device + then everything else. + (You need to read really the file README-DGUX.INSTALL-> look + in the end of this file). +<p> + To build the contributed software with XFree86-3.3.5 get + the X335contrib.tgz and do +<verb> + gzip -d < X335contrib.tgz | tar xvf - +</verb> + + (Or for 3.3.3 sources unpack X333contrib.tgz and apply the DGUX + patch as +<verb> + gzip -d < X335contrib-DGUX.diff.gz | patch -p0 -E ). +</verb> + Please note: + You must have already install and active the X11R6.3 that you + build so that the imake is working properly for your system. + Read below for how to install this X window system. + After that you could do: + +<verb> + cd contrib + xmkmf -a + make + make install + make install.man (for installing the man pages) +</verb> + + +<sect> INSTALLATION OF THE BINARY:<p> + + NOTE:This executable has been compiled with the macro -DPENTIUM_CHANGE + (that all the new Aviion machines support). If you have an old i486 + (rather unlikely) the executable will NOT RUN correctly. + But we haven't use -mcpu=pentiumpro, so the executable will work on + ALL PENTIUM machines. + +<itemize> +<item> About Project Root: I choose as ProjectRoot for ix86 DG/UX the location + /usr/X11R6.3. The default (in 3.3.5 sources) is the /usr/X11R6. To + cover this we make a link in /usr as X11R6->X11R6.3 (read below); + so don't forget to do this link. I don't like the location /usr/opt/X11 + (default location of DG X11) that some of you have suggested to me, I + believe it is a good idea to keep the original X11 as is for several + reasons. + +<item> Make a filesystem,using sysadm, mounted under "/usr/X11R6.3". + This is the default location of X11R6.3 , you cannot change this + except if you recompile the whole source of X. + (Please don't send e-mails about this). + The size of this filesystem should be around 175 MB(350000 blocks). + + The list of files is: + +<verb> + X3353DL.tgz 3D_Labs XServer ... etc + X3358514.tgz + X335AGX.tgz + X335I128.tgz + X335Ma32.tgz Mach32 Xserver + X335Ma64.tgz Mach64 Xserver + X335Ma8.tgz + X335Mono.tgz + X335P9K.tgz + X335S3.tgz + X335S3V.tgz + X335SVGA.tgz SuperVGA Xserver (Supports AV3700 Cirrus) + X335VG16.tgz VGA16 Xserver (needed by XF86Setup) + X335W32.tgz + X335bin.tgz BIN (you must have this) + X335cfg.tgz + X335doc.tgz + X335f100.tgz + X335fcyr.tgz + X335fnon.tgz + X335fnts.tgz + X335fscl.tgz + X335fsrv.tgz + X335lib.tgz LIB (you must have this) + X335lkit.tgz Linkkit (X development) + X335man.tgz Man pages + X335nest.tgz + X335prog.tgz + X335prt.tgz + X335set.tgz + X335vfb.tgz + preinst.sh Install script + extract The XFree86 extract program (for ix86 DG/UX) + + SUMS.md5 Checksums for the integrity of the files +</verb> + (Try compile the GNU textutils-1.22.tar.gz from + prep.ai.mit.edu /pub/gnu. md5sum is there). +<p> + You need at least: +<verb> + X335bin.tgz + X335lib.tgz +</verb> + And the correct Xserver for your machine/Graphics card. + In my opinion take all files , in the future you may need to + switch to another graphics device etc ... (mget *). + Generally it is good to have the full distribution of the + X11R6.3 window system ,it should make life easier in DG/UX. +<p> + (Trivial:you must have root privilege). +<p> +<item> Unpack the *.tgz files in your / so that it will go directly inside to + the new filesystem /usr/X11R6.3. After you do that cd /usr and do a link : + ln -s X11R6.3 X11R6. (Use the install script). + This link will indicate in XF86 programs like XF86Setup where the new X11 + window system is. + +<item> cd your home dir and backup your .profile as "cp .profile myprofile". Then + cd /usr/X11R6.3. Copy the file HOME.profile-X11R6.3 to your home dir as + "cp HOME.profile-X11R6.3 your home dir/.profile" ,then cd your home dir and + "chmod 644 .profile" to make sure that the new profile is active. This is + because you need to tell to the system to look for the X software in a + different location than the usual /usr/bin/X11 of DG/UX. Also you need + to tell to the system that the new X libraries are in /usr/X11R6.3/lib. +<p> + **You NEED to re-login in order to make the new .profile active !** + ** DO NOT GIVE "startx" AFTER THAT, READ Configuration below !** + +<item> About Configuration: + DG/UX has a program (actually a script) called xconfig that makes the + configuration for you. Usually when you run xconfig in the DG/UX-X11R5 + it creates a file XdgConfig in /var/X11/Xserver which is the corresponding + of the XF86-configuration file located in /usr/X11R6.3/lib/X11/XF86Config. + This file ,in the section monitor, has all values for your monitor. + Please Note: + Unfortunately in DG/UX R4.20MU02 things change. Instead of going forwards we + going backwards... xconfig reports crazy values for my DG-DA1765VA monitor. + So if you have a CDROM of DG/UX R4.11MU02,or MU03 use it to find an xconfig + that will give you reliable values for your monitor. +<p> + Your best bet is to use XF86Setup for correct adjustments. +<p> + Thats the reason that in this binary there is a minimum tcl,tk(version 8.0). + Before you run XF86Setup read the relevant documents found in www.xfree86.org. + (Or read below for a hand-made configuration). +<p> + Notice about XF86Setup: You will will see the message + "The program is running on a different virtual" + "Please switch to the correct virtual terminal" +<p> + DG/UX does NOT have any virtual terminals. But XF86Setup uses a script + that doesn't checks for this. So it is printing this message anyway. + Ignore it and don't send e-mails asking how to set the virtual terminal! + XF86Setup WORKS for SURE (if you use it correctly) to set your configuration. + Just remember: + <enum> + <item> make a link in /usr/X11R6.3/bin: ln -s XF86_VGA16 X + <item> set mouse device in your XF86Config to /dev/mouse (this the mouse in DGUX) + <item> set the correct mouse protocol. (usually for a typical AViiON PS/2). + </enum> + Or just cd /usr/X11R6.3/lib/X11 and copy XF86Config.eg.dgux to XF86Config + (it is for a PS/2 protocol mouse that almost all AViiON's have) , then + run XF86Setup and choose to use this XF86Config file as default (so mouse + works). +<p> + Alternatively, you can run xf86config, a non-graphical configuration utility + but you will need to enter manually the values for your monitor. + If you have the small booklet that came with the monitor they are inside. +<p> + Hand made configuration: + I have an DG/UX Medium resolution (1280x1024) 17 inch DG-26059,DA1765VA. +<bf> + ONLY IF YOU HAVE THE + ***EXACT SAME*** + MONITOR USE THE FILE XF86Config_SVGA_DGUX that you will find in /usr/X11R6.3/. + IT IS IN YOUR OWN RISK IF YOU DECIDE TO USE THIS FILE WHEN YOU DON'T HAVE THE + SAME MONITOR AS MINE. YOU CAN DAMAGE YOUR VIDEO MONITOR OR YOUR GRAPHICS CARD. +</bf> +<p> + An example of how to use the Accel Servers (eg ATI=XF86_Mach64) is in the file + XF86Config_ATI_DGUX. + Again remember: + I have an DG/UX Medium resolution (1280x1024) 17 inch DG-26059,DA1765VA. +<bf> + ONLY IF YOU HAVE THE + ***EXACT SAME*** + MONITOR USE THE FILE XF86Config_ATI_DGUX that you will find in /usr/X11R6.3/. + IT IS IN YOUR OWN RISK IF YOU DECIDE TO USE THIS FILE WHEN YOU DON'T HAVE THE + SAME MONITOR AS MINE. YOU CAN DAMAGE YOUR VIDEO MONITOR. +</bf> +<p> + Start with the file XF86Config.eg as a prototype. READ the README.Config . + In Cirrus chips you need to read the file README.cirrus located in /usr/X11R6.3 + There is a problem with the accelerated XAA code ,so you need to try to put + the following option in your XF86Config: +<verb> + Option "no_mmio" (in Section Screen ,subsection display). +</verb> + Look in the XF86Config_SVGA_DGUX to see how this can be done . + If this doesn't work (it will probably) try Option "noaccel" or "no_bitblt".Again + READ the file README.cirrus (and README.Config). + I suggest to print (in paper) the file XdgConfig and have a look in it. Then it + should be quite trivial to figure out what you have to do with the XF86 file + ie XF86Config in the sections mouse, keyboard, screen ... + After you have a correct XF86Config in /usr/X11R6.3/lib/X11 give +<verb> + chmod 444 XF86Config. +</verb> +<p> + Supposing that you have already re-login so that the new .profile is active + and you have the correct XF86Config file (as your XdgConfig suggest) (DO not + forget for a cirrus to put the Option "no_mmio" in section screen !), give + startx and the new X11 will start . + Remember: You can shut down at any point the Xserver by pressing + CONTROL+ALT+BACKSPACE (if something goes wrong). + Also Xservers don't produce messages unless to want them to do so. This is + because the DG/UX console driver some times causes corruption of the screen + if you print text during the startup of the Xserver. + If you require messages try in bash shell to give: (bash# ) +<verb> + X -verbose >& info1 or even + X -verbose -verbose >& info2 for more messages. +</verb> + Then when the server is up press CONTROL+ALT+BACKSPACE to shutdown the + Xserver. File info1 (or info2) have all relevant info about your graphics + card , display memory etc ... + I suggest you do that at least one time before start using the new X11R6.3. + Read this info file to see if all ok. If not try change settings in your + XF86Config to make thinks correct. +<p> + If you have an ATI Rage II (or RageII+) use the server XF86_Mach64 (make + a link link X--->XF86_MACH64, or run xf86config, or use XF86Setup above). + +<item> If you want to compile programs with the X11R6.3 the headers in /usr/include + /X11 pointing to /usr/opt/X11 of DG/UX is a problem . + Do: +<p> + a): unmounting the /usr/opt/X11 will prevent the sysadm to use the X + graphical interface. But this will be the only thing that you loose. + The correct thing to do for X11R6.3 is to delete the filesystem /usr/opt/X11 + and make a link /usr/opt/X11--->/usr/X11R6.3 , so that the libraries + from dglib and /usr/lib point correctly to the new ones in /usr/X11r6.3/lib. + Before you unmount this filesystem you need to do this: +<verb> + cd /usr/opt/X11/include + cp -r Mrm /usr/X11R6.3/include + cp -r uil /usr/X11R6.3/include + cp -r Xm /usr/X11R6.3/include + cd /usr/X11R6.3/include + ln -s uil Uil +</verb> + + LIBRARIES: +<verb> + and cd /usr/opt/X11/lib + cp libXm.a /usr/X11R6.3/lib +</verb> + + and similarly copy the following libraries: + +<verb> + libX11.so.2, libX11.so.5, libXIM.so.1, libXaw.so.1, libXaw.so.2, + libXext.so.2, libXi.so.2, libXimp.so.1, libXm.so.2, libXmu.so.2, + libXsess.so.1, libXsi.so.1, libXt.so.2, libXt.so.5.0, libMrm.a, + libUil.a, libX11_s, libXR4sco_s +</verb> + + into /usr/X11R6.3/lib. +<p> + Then cd /usr/X11R6.3/lib and make links: + +<verb> + ln -s libXm.so.2 libXm.so + ln -s libXm.so.2 libXm.so.1 + ln -s libXm.so.2 libXm.so.5.0 + + ln -s libX11.so.5.0 libX11.so.1 + + ln -s libXIM.so.1 libXIM.so.5.0 + + ln -s libXaw.so.2 libXaw.so.5.0 + + ln -s libXext.so.2 libXext.so.5.0 + ln -s libXext.so.2 libXext.so.1 + + ln -s libXi.so.2 libXi.so.1 + ln -s libXi.so.2 libXi.so.5.0 + + ln -s libXimp.so.1 libXimp.so.5.0 + + ln -s libXmu.so.2 libXmu.so.5.0 + + ln -s libXt.so.2 libXt.so.5.0 + + ln -s libXsi.so.1 libXi.so.5.0 + + cd /usr/X11R6.3/lib + rm libXmu.so (to avoid undefs when building X software) +</verb> + + Also you need to correct the links in /usr/dglib at least! + (the correct thing to do is modify also /usr/lib links to + /usr/opt/X11 libs). + Try +<verb> + cd /usr/ + tar -cvf dglib-orig.tar dglib + gzip dglib-orig.tar +</verb> + (to minimize the space dglib-backup takes) then +<verb> + cd /usr/dglib +</verb> + and delete ALL links to libraries in + /usr/opt/X11. Then copy the script create_new_links_in_dglib (found + in /usr/X11R6.3 to /usr/dglib and cd /usr/dglib execute script. + This will create all new links with the X11R6.3 X window system. +<p> + But remember to do in the end : +<p> +<verb> + cd /usr/dglib + rm *.a (no static libs links in dglib) +</verb> + + Then unmount (delete) the old X11 by giving "umount /usr/opt/X11". +<p> + NOTE: If you compile programs in the X11R6 make sure that you + unmount /usr/opt/X11 or you eliminate the links in /usr/lib + to the OLD libX's in /usr/opt/X11/lib. + Otherwise gcc will link these old libraries! and the binary will + not run correctly. + Always after an R6 compilation do "ldd prog" to make sure that the + binary loads only R6 version libraries (except maybe the motif + library libXm.so.2), --if you don't use the static libXm.a +<p> + b:) +<verb> + cd /usr/include + tar -cvf old-X11headers.tar X11 + gzip old-X11headers.tar +</verb> + so that you store your old headers in /usr/include. + + Then cd /usr/include/ and delete +<verb> + rm -r X11 + rm Xm + rm Mrm + rm Uil + rm uil + Make new links as: + cd /usr/include + ln -s ../X11R6.3/include/X11 X11 + ln -s ../X11R6.3/include/uil Uil + ln -s ../X11R6.3/include/uil uil + ln -s ../X11R6.3/include/Xm Xm + ln -s ../X11R6.3/include/Mrm Mrm +</verb> +</itemize> + +<sect> What is about:<p> + This new X11R6 are not simply an upgrade of the servers to the latest ones. + It is a new programming platform in your DG/UX system to allow you to import + all this *FREE* or not software for the X window system. + This software will not compile in the old (and ugly) X11 of Data General. + The imake command that is implemented in almost all the (source) software + for X11 (free or not) will not work with the totally broken "imake" command + of /usr/opt/X11 of DG/UX. +<p> + The imake of DG/UX X11R5 is badly broken: + I have seen DG/UX releases R4.11,MU01, ...MU04, R420, R4.20MU02 ,R4.20MU03 + and nobody bother to look in all these releases the imake command... +<p> + While until now DG was rather hostile to the prospect of a new X11 in DG/UX + some new folks there they have turn their interest in X11R6 (XFree86) these + days. That is good of course because the ultimate target is to make XFree86 + (3.3.5 or whatever version) to run in _their_ DG/UX Unix! I will be able to + make a much better X11 in DG/UX if I could had some access to DG/UX sources + (i.e. the original R5 sources , but not only --eg kernel driver sources as + for example the DG/UX kernel console driver sources). +<p> + I have compile almost anything that runs for Linux in DG/UX using this X11. + In doing this work in XFree86 I would like to express my thanks to David Dawes + that he help me all the time with several technical questions. Also D.T. is one + of the people that offer valuable help. + Finally I want to express my thanks to John H. for enlightening me in some syscall + issues. + + +<verb> +$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/DGUX.sgml,v 1.1 2000/02/24 20:43:23 dawes Exp $ +</verb> + +</article> Index: xc/programs/Xserver/hw/xfree86/doc/sgml/DGux.sgml diff -u xc/programs/Xserver/hw/xfree86/doc/sgml/DGux.sgml:1.4 xc/programs/Xserver/hw/xfree86/doc/sgml/DGux.sgml:removed --- xc/programs/Xserver/hw/xfree86/doc/sgml/DGux.sgml:1.4 Wed Mar 8 16:30:57 2000 +++ xc/programs/Xserver/hw/xfree86/doc/sgml/DGux.sgml Wed Mar 8 16:30:57 2000 @@ -1,789 +0,0 @@ - -<!DOCTYPE linuxdoc PUBLIC "-//XFree86//DTD linuxdoc//EN"> - -<article> - -<title>Instructions for Building XFree86 on an Intel Pentium Aviion machine with DG/ux R4.20MU04 -<author>Takis Psarogiannakopoulos -<date>July 27, 1999 -<toc> - -<sect>Whats new <p> - -July 27, 1999<p> - DG has fix the streams bug in /usr/lib/tcpip.so . (Read below) - The workaround in the July 25 source code has been removed. - I've been told from DG that BSD sockets perform better in DGUX - than SVR4 native STREAMS. From R4.20MU06 DG/ux will have the correct - tcpip.so lib (no bug in STREAMS). If you have MU05,MU04 and you - want for some reason STREAMS definitely contact DG for an updated - /usr/lib/tcpip.so in /usr/lib (patch for your MU04,5). -<p> - DG/ux at the moment lacks the sysi86 syscall and the definition - of SYSI86IOPL (that is in <sys/sysi86.h> but guarded by a - UNIXWARE defintion that of course cannot be applicable to DG/ux). - Until this header is accessible by a simple -DDGUX , and _sysi86, - sysi86 subroutines added to libc (or some other extra library) - we need to define the DG_NO_SYSI86 to be 1. If DG makes the above - modifications , you will need to manually edit the files (before - building!) - xc/programs/Xserver/hw/xfree86/SuperProbe/OS_DGUX.c - xc/programs/Xserver/hw/xfree86/etc/scanpci.c - xc/programs/Xserver/hw/xfree86/os-support/dgux/dgux_video.c - and eliminate DG_NO_SYSI86 flag by changing DG_NO_SYSI86 1-->0. -<p> -July 25, 1999<p> - A major bug has now been corrected in this release. According to this - since the STREAMS interface of DG/ux were broken the server was - listening not to port 6000 (= 0x1770) but to 0x7017. - All binaries that you have from 3.3.3.1, 3.3.3 they will work - locally (if you run them in the same machine) but NOT remotely - because they use an Xlib that tries to connect to port 28365. - If you want to run them remotely YOU MUST recompile them! - Steve thank you for bringing this to my attention initially but - was too busy then to look at it in detail... Perhaps I should - have... -<p> - We now use sockets instead of ioctls. - But I've fix and tested the STREAMS also. -<p> - David thanks for making me realize that this was indeed a problem - in DG/ux. -<p> - I've also take the trouble to port gdb-4.17/8 and ddd (X inter) - in pub/XFree86/3.3.5/binaries/DGUX-ix86/GDB_BETA (both binaries - and source code) in order to be able to send me traces of core - files produced by Xservers. Try -<verb> - gdb /usr/X11R6/bin/X location of core/core - gdb: where -</verb> - and send me what you see. - (I suppose that the Xserver executable is in /usr/X11R6.3/bin) -<p> - From 3.3.3.1: - Several bugs are now fixed. DG/ux support is on this official - patch. All configuration is in xc/config/cf/DGUX.cf and in - xf86site.def. Also Imake autodetects (thanks to David Dawes) - the DGUX OS (including Release version). So only a simple - "make World" is needed anymore to build in ix86 DG/ux. - Usually the process to build is (after unpacking and patching - the source "xc" tree) to go to xc/config/cf copy the file - xf86site.def to site.def and edit the files DGUX.cf ,site.def - for whatever changes you need to do. -<p> - Default ProjectRoot in 3.3.5 is /usr/X11R6 (except if you - set this specifically in DGUX.cf either as /usr/X11R6.3-- - --my choice, or in whatever you like). -<p> - From: - December 1, 1998 - IMPORTANT: PLEASE READ THE FILE README-GCC-2.8.1 - GCC VERSION 2.8.1 is recommended for the DGUX build of X11R6.3 - You can ignore below the _old_ conversation about gcc compiler - if you already run a gcc-2.8.1 in your machine. - -<sect> GENERAL: <p> - - Get from ftp.xfree86.org the XFree 3.3.x source code: -<verb> - ftp ftp.xfree86.org - login: ftp - passwd: your e-mail address - cd pub/XFree86/3.3.5/source - You need the files: - X335src-1.tgz - X335src-2.tgz - X335src-3.tgz -</verb> -<p> - Get also the contributed X software -<verb> - cd /pub/XFree86/3.3.5/source - X335contrib.tgz -</verb> -<p> - If you have the source tarballs of 3.3.3 go to - /pub/XFree86/3.3.5/binaries/DGUX-ix86/SOURCE get the DGUX source - patch -<p> -<verb> - 3.3.3-3.3.5-DGUX.diff.gz - X335contrib-DGUX.diff.gz (patch for the contrib software). -</verb> -<p> - to avoid downloading all the source code again. -<p> - Sorry some DGUX changes they didn't make in time for the official - release date of 3.3.4... - I do this for free, so some times I may be excused for something - like this... -<p> - To build X11R6.3 you need also the tools for DG/ux (see discussion - below). They will be in - ftp dpmms.cam.ac.uk - (University of Cambridge,Department of Pure Mathematics) - in /pub/takis/DGUX-Tools/BuildXtools.tar.gz (anonymous ftp) - or in the ftp.xfree86.org ... - (pub/XFree86/3.3.5/binaries/DGUX-ix86/SOURCE/BUILD-TOOLS/ - BuildXtools.tar.gz). -<p> - Using a big filesystem (I use a virtual disk "xf86work" mounted on - /xf86work of size 1400000 blocks) copy the source as: -<p> -<verb> - cp X335src-1.tgz /xf86work/X335src-1.tar.gz - cp X335src-2.tgz /xf86work/X335src-2.tar.gz - cp X335src-3.tgz /xf86work/X335src-3.tar.gz -</verb> -<p> - (or X333src-1,2,3.tar.gz as above plus the DG/ux patch to 3.3.5 - i.e. the file 3.3.3-3.3.5-DGUX.diff.gz) -<p> - And maybe the contributed software: -<verb> - cp X335contrib.tgz /xf86work - - (cp X335contrib-DGUX.diff.gz /xf86work). -</verb> -<p> - If you get the patches from DGUX-ix86, to build from source 3.3.3 - your first problem is that in order to apply the source patch you - need "patch" a very common GNU program that DG/ux doesn't have!? - This program is in BuildXtools.tar.gz - (or ftp prep.ai.mit.edu cd/pub/gnu get patch-2.5.tar.gz) - So lets speak about these tools before anything else: - Using "sysadm" mount a filesystem usr_local under /usr/local with - size 200000 blocks. Then copy the BuildXtools file in /usr and give: -<verb> - gzip -d < BuildXtools.tar.gz | tar xvf - -</verb> -<p> - It will unfold in the new filesystem /usr/local. - Then go to your ".profile" (in your Home dir , mine eg is /admin) - and add the /usr/local/bin in your path and the /usr/local/lib in - your lib-path. -<p> - What you need is like that: - (vi .profile) -<p> -<verb> - PATH=/usr/local/bin:/sbin:/usr/sbin:/usr/bin - if [ -d /usr/opt/X11/bin ] - then - PATH=$PATH:/usr/opt/X11/bin - fi - export PATH - (/usr/local/bin is before any other path!) - - LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/usr/ccs/lib - export LD_LIBRARY_PATH -</verb> -<p> - then exit and re-login so that your new modified .profile will take effect. -<p> - Now do the following: -<verb> - cd /usr/sbin - cp install install_dg - rm install - cp /usr/local/bin - cp install /usr/bin *(make the GNU install the default install)* - (DG/ux install is useless) - (Look also the file xc/config/cf/DGUX.cf , below). - - (Or get GNU make-3.77 and copy install.sh (or -sh) to a /usr/bin/install) - - cd /usr/bin - cp true /usr/local/bin - cd /usr/local/bin - ln -s true ranlib (Install true as ranlib in the DG/ux system) -</verb> - Usually giving -v,-V or --version will give you build info on all - the tools in /usr/local/bin (try it). -<p> - **Look the discussion for gcc before you build (below)** -<p> - Now untar the source tree: - In /xf86work (or whatever name you gave to the big filesystem for the build) -<verb> - gzip -d < X335src-1.tar.gz | tar xvf - - gzip -d < X335src-2.tar.gz | tar xvf - - gzip -d < X335src-3.tar.gz | tar xvf - -</verb> - - (If you have X-3.3.3 do the same for the 3.3.3 sources and - then apply the 3.3.5-DGUX source patch - -<verb> - gzip -d < 3.3.3-3.3.5-DGUX.diff.gz | patch -p0 -E). -</verb> - - The directory xc in now present in your build filesystem. - - -<sect> Configuration for the build:<p> - Almost all you need is in "DGUX.cf" located in xc/config/cf. - Edit the file DGUX.cf and site.def and change what ever you need. - Remember DGUX.cf overwrites site.def. - The default ProjectRoot for XFree86-3.3.5 is now /usr/X11R6 - (located in site.def). If you want to change this to whatever - you like (I prefer /usr/X11R6.3 and a link in /usr X11R6->X11R6.3) - edit DGUX.cf and locate the entry: -<p> -<verb> - #if 0 - #define ProjectRoot /usr/X11R6.3 - #endif -</verb> - Eliminate the #if 0 , #endif. - Then change this to whatever you prefer. - (I prefer the above for the pre-compiled binaries) -<p> - The DG/ux malloc is crap and keeps bringing problems with some - X software so I don't use it. Instead there is a port of GNU - malloc in /usr/local (it came with the BuildXtools file). - Don't try to build with the /lib/libmalloc.a of DG/ux and then - send me e-mails that some programs they don't work properly. - In my build I use tcl8.0 and tk8.0 since the xconfig of R4.20MU03 - is reporting incorrect values for the monitors and XF86Setup - need to be build in order to manage to adjust the display. - If you don't have this (or don't want this) comment out the lines - about tcl,tk, (in DGUX.cf) -<p> -<verb> - /*******TCL TK DEFINITIONS ***********/ - #define HasTk YES-->NO - ... - #define HasTcl YES-->NO -</verb> - Also 'GNU make' is required for the correct X11R6.3 build. - (it is in Buildxtools file). - If you decide yes to tcl,tk obtain the files -<verb> - tcl8.0.3.tar.gz - tk8.0.3.tar.gz (from some ftp) -</verb> - (or newer versions) and compile them before the building - of X11R6.3 (Build first tcl8.0.3 then tk8.0.3). -<p> -<sect> DISCUSSION ABOUT GCC<p> - There are so much things that I can say for the system gcc of - DG/ux. If I was keeping track for the programs that fail using - this compiler I will certainly have fill a book (conveniently - for the DG of course). - But my work is not to correct bugs for the DG/ux compiler or - anything else) , and in particular to collect reports for - the genius of DG. - (DG:Sorry guys nothing personal. I am a pure Mathematician , - I am doing all this work for pleasure, I don't want any money - from DG or anybody else , I am not looking to become a employer - of DG,and I am NOT a trouble shooter of the DG/ux in general. - But maybe some times if you help I may be able to help you also). -<p> - What I wanted to do is to build X11. Thats why you will find - in BuildXtools a new gcc. This gcc is build for DG/ux R4.20MU02. - so you have to upgrade your DG/ux OS version to the above. - But it is solid to build not only X11 but whatever else you want. - DO NOT use gcc of DG/ux. If you do I cannot tell you anything - about any problems that you have. - To complete the installation of this new gcc do the following: -<p> -<verb> - cp -r /usr/local/gcc-dgux /usr/opt/sdk/sde/ix86dgux/usr/lib - cd /usr/opt/sdk/sde/ix86dgux/usr/lib - rm gcc - ln -s gcc-dgux gcc (set link gcc--->gcc-dgux) - - cd /usr/local - cp -r /usr/local/gcc-dgux /usr/sde/ix86dgux/usr/lib - cd /usr/sde/ix86dgux/usr/lib - rm gcc - ln -s gcc-dgux gcc (set link gcc-->gcc-dgux) -</verb> - - To come back to your old DG/ux gcc just change the above two - links gcc-->gcc-dgux - to gcc-->gcc-2 - with the command: (in both the above two dirs) -<verb> - rm gcc - ln -s gcc-2 gcc -</verb> - - /usr/bin/gcc -v should report the version that you have. - To build successfully this version of X11 gcc is a *MUST*. -<p> - Dynamic loading Servers: - Edit xc/config/cf/DGUX.cf and change the entry -<p> - #ifndef BuildDynamicLoading - #define BuildDynamicLoading NO --->YES. - #endif -<p> - Remember when you build you will see lots of errors and the servers - will NOT build! This is because the dynamic linker doesn't know - the locations of the newly created R6 libX's. - So after the (seem faulty) building do a -<p> - make DESTDIR=ProjectRoot/lib install -<p> - (look below for install, ProjectRoot the location that you choose - in the file xc/config/cf/DGUX.cf above) -<p> - So that all your new libXR6 libraries will go there. - (do a cd ProjectRoot/lib to make sure). -<p> - Then go to your home dir and declare the path ProjectRoot/lib dir - in you LD_LIBRARY_PATH (your profile) as: -<p> - LD_LIBRARY_PATH=ProjectRoot/lib:$LD_LIBRARY_PATH - export LD_LIBRARY_PATH -<p> - Then relogin! -<p> - Now just _rebuild_ A FULL XFree86-3.3.5 with the entry -<p> - #define BuildDynamicLoading YES in your DGUX.cf. -<p> - This time you will build _all_ XFree86-3.3.5 correctly. -<p> - -<sect> BUILD <p> - In the usual X11R5 of DG (mwm) open an xterm and give: - (/bin/sh = Bourne shell) -<p> -<verb> - cd xc - make World > Build-dg.log -</verb> - - In that way you will get all the error messages in your - screen. - Don't worry with messages about -znodefs. -<p> - Note: the old command -<verb> - make World BOOTSTRAPCFLAGS="-DDGUX" > Build-dg.log -</verb> - is no longer needed since imake will detect the DGUX OS - (in Version => 3.3.3.1) and set up things. However this - command will also work. -<p> - And in another xterm give cd xc - tail -f Build-dg.log to watch the building progress. -<p> - To install X11R6.3 XFree version 3.3.5 after the build - you must have a filesystem say usr_X11R6.3 mounted to - the directory /usr/X11R6 size 350000 blocks. - (or whatever you choose to be your ProjectRoot, if you - modify DGUX.cf for another ProjectRoot than the default - /usr/X11R6 in site.def). - Then give -<verb> - make install - make install.man (install the man pages) -</verb> - The installation will not put an XF86Config in your - /usr/X11R6.3/lib/X11/ and so if you give startx the new - X11 will not start. Read the file README-X3331.DGUX in - this ftp site (located in the binaries) about the whole - installation procedure of X11R6.3. - Or quickly you can do: - (I remind: DG/ux mouse device "/dev/mouse") - cd /usr/X11R6.3/bin - ln -s XF86_VGA16 X - Then put in your .profile the path /usr/X11R6.3/bin and - run the XF86Setup program. Adjust first the mouse device - then everything else. - (You need to read really the file README-DGUX.INSTALL-> look - in the end of this file). -<p> - To build the contributed software with XFree86-3.3.5 get - the X335contrib.tgz and do -<verb> - gzip -d < X335contrib.tgz | tar xvf - -</verb> - - (Or for 3.3.3 sources unpack X333contrib.tgz and apply the DGUX - patch as -<verb> - gzip -d < X335contrib-DGUX.diff.gz | patch -p0 -E ). -</verb> - Please note: - You must have already install and active the X11R6.3 that you - build so that the imake is working properly for your system. - Read below for how to install this X window system. - After that you could do: - -<verb> - cd contrib - xmkmf -a - make - make install - make install.man (for installing the man pages) -</verb> - - -<sect> INSTALLATION OF THE BINARY:<p> - - NOTE:This executable has been compiled with the macro -DPENTIUM_CHANGE - (that all the new Aviion machines support). If you have an old i486 - (rather unlikely) the executable will NOT RUN correctly. - But we haven't use -mcpu=pentiumpro, so the executable will work on - ALL PENTIUM machines. - -<itemize> -<item> About Project Root: I choose as ProjectRoot for ix86 DG/ux the location - /usr/X11R6.3. The default (in 3.3.5 sources) is the /usr/X11R6. To - cover this we make a link in /usr as X11R6->X11R6.3 (read below); - so don't forget to do this link. I don't like the location /usr/opt/X11 - (default location of DG X11) that some of you have suggested to me, I - believe it is a good idea to keep the original X11 as is for several - reasons. - -<item> Make a filesystem,using sysadm, mounted under "/usr/X11R6.3". - This is the default location of X11R6.3 , you cannot change this - except if you recompile the whole source of X. - (Please don't send e-mails about this). - The size of this filesystem should be around 175 MB(350000 blocks). - - The list of files is: - -<verb> - X3353DL.tgz 3D_Labs XServer ... etc - X3358514.tgz - X335AGX.tgz - X335I128.tgz - X335Ma32.tgz Mach32 Xserver - X335Ma64.tgz Mach64 Xserver - X335Ma8.tgz - X335Mono.tgz - X335P9K.tgz - X335S3.tgz - X335S3V.tgz - X335SVGA.tgz SuperVGA Xserver (Supports AV3700 Cirrus) - X335VG16.tgz VGA16 Xserver (needed by XF86Setup) - X335W32.tgz - X335bin.tgz BIN (you must have this) - X335cfg.tgz - X335doc.tgz - X335f100.tgz - X335fcyr.tgz - X335fnon.tgz - X335fnts.tgz - X335fscl.tgz - X335fsrv.tgz - X335lib.tgz LIB (you must have this) - X335lkit.tgz Linkkit (X development) - X335man.tgz Man pages - X335nest.tgz - X335prog.tgz - X335prt.tgz - X335set.tgz - X335vfb.tgz - preinst.sh Install script - extract The XFree86 extract program (for ix86 DG/ux) - - SUMS.md5 Checksums for the integrity of the files -</verb> - (Try compile the GNU textutils-1.22.tar.gz from - prep.ai.mit.edu /pub/gnu. md5sum is there). -<p> - You need at least: -<verb> - X335bin.tgz - X335lib.tgz -</verb> - And the correct Xserver for your machine/Graphics card. - In my opinion take all files , in the future you may need to - switch to another graphics device etc ... (mget *). - Generally it is good to have the full distribution of the - X11R6.3 window system ,it should make life easier in DG/ux. -<p> - (Trivial:you must have root privilege). -<p> -<item> Unpack the *.tgz files in your / so that it will go directly inside to - the new filesystem /usr/X11R6.3. After you do that cd /usr and do a link : - ln -s X11R6.3 X11R6. (Use the install script). - This link will indicate in XF86 programs like XF86Setup where the new X11 - window system is. - -<item> cd your home dir and backup your .profile as "cp .profile myprofile". Then - cd /usr/X11R6.3. Copy the file HOME.profile-X11R6.3 to your home dir as - "cp HOME.profile-X11R6.3 your home dir/.profile" ,then cd your home dir and - "chmod 644 .profile" to make sure that the new profile is active. This is - because you need to tell to the system to look for the X software in a - different location than the usual /usr/bin/X11 of DG/ux. Also you need - to tell to the system that the new X libraries are in /usr/X11R6.3/lib. -<p> - **You NEED to re-login in order to make the new .profile active !** - ** DO NOT GIVE "startx" AFTER THAT, READ Configuration below !** - -<item> About Configuration: - DG/ux has a program (actually a script) called xconfig that makes the - configuration for you. Usually when you run xconfig in the DG/ux-X11R5 - it creates a file XdgConfig in /var/X11/Xserver which is the corresponding - of the XF86-configuration file located in /usr/X11R6.3/lib/X11/XF86Config. - This file ,in the section monitor, has all values for your monitor. - Please Note: - Unfortunately in DG/ux R4.20MU02 things change. Instead of going forwards we - going backwards... xconfig reports crazy values for my DG-DA1765VA monitor. - So if you have a CDROM of DG/ux R4.11MU02,or MU03 use it to find an xconfig - that will give you reliable values for your monitor. -<p> - Your best bet is to use XF86Setup for correct adjustments. -<p> - Thats the reason that in this binary there is a minimum tcl,tk(version 8.0). - Before you run XF86Setup read the relevant documents found in www.xfree86.org. - (Or read below for a hand-made configuration). -<p> - Notice about XF86Setup: You will will see the message - "The program is running on a different virtual" - "Please switch to the correct virtual terminal" -<p> - DG/ux does NOT have any virtual terminals. But XF86Setup uses a script - that doesn't checks for this. So it is printing this message anyway. - Ignore it and don't send e-mails asking how to set the virtual terminal! - XF86Setup WORKS for SURE (if you use it correctly) to set your configuration. - Just remember: - <enum> - <item> make a link in /usr/X11R6.3/bin: ln -s XF86_VGA16 X - <item> set mouse device in your XF86Config to /dev/mouse (this the mouse in DGUX) - <item> set the correct mouse protocol. (usually for a typical AViiON PS/2). - </enum> - Or just cd /usr/X11R6.3/lib/X11 and copy XF86Config.eg.dgux to XF86Config - (it is for a PS/2 protocol mouse that almost all AViiON's have) , then - run XF86Setup and choose to use this XF86Config file as default (so mouse - works). -<p> - Alternatively, you can run xf86config, a non-graphical configuration utility - but you will need to enter manually the values for your monitor. - If you have the small booklet that came with the monitor they are inside. -<p> - Hand made configuration: - I have an DG/ux Medium resolution (1280x1024) 17 inch DG-26059,DA1765VA. -<bf> - ONLY IF YOU HAVE THE - ***EXACT SAME*** - MONITOR USE THE FILE XF86Config_SVGA_DGUX that you will find in /usr/X11R6.3/. - IT IS IN YOUR OWN RISK IF YOU DECIDE TO USE THIS FILE WHEN YOU DON'T HAVE THE - SAME MONITOR AS MINE. YOU CAN DAMAGE YOUR VIDEO MONITOR OR YOUR GRAPHICS CARD. -</bf> -<p> - An example of how to use the Accel Servers (eg ATI=XF86_Mach64) is in the file - XF86Config_ATI_DGUX. - Again remember: - I have an DG/ux Medium resolution (1280x1024) 17 inch DG-26059,DA1765VA. -<bf> - ONLY IF YOU HAVE THE - ***EXACT SAME*** - MONITOR USE THE FILE XF86Config_ATI_DGUX that you will find in /usr/X11R6.3/. - IT IS IN YOUR OWN RISK IF YOU DECIDE TO USE THIS FILE WHEN YOU DON'T HAVE THE - SAME MONITOR AS MINE. YOU CAN DAMAGE YOUR VIDEO MONITOR. -</bf> -<p> - Start with the file XF86Config.eg as a prototype. READ the README.Config . - In Cirrus chips you need to read the file README.cirrus located in /usr/X11R6.3 - There is a problem with the accelerated XAA code ,so you need to try to put - the following option in your XF86Config: -<verb> - Option "no_mmio" (in Section Screen ,subsection display). -</verb> - Look in the XF86Config_SVGA_DGUX to see how this can be done . - If this doesn't work (it will probably) try Option "noaccel" or "no_bitblt".Again - READ the file README.cirrus (and README.Config). - I suggest to print (in paper) the file XdgConfig and have a look in it. Then it - should be quite trivial to figure out what you have to do with the XF86 file - ie XF86Config in the sections mouse, keyboard, screen ... - After you have a correct XF86Config in /usr/X11R6.3/lib/X11 give -<verb> - chmod 444 XF86Config. -</verb> -<p> - Supposing that you have already re-login so that the new .profile is active - and you have the correct XF86Config file (as your XdgConfig suggest) (DO not - forget for a cirrus to put the Option "no_mmio" in section screen !), give - startx and the new X11 will start . - Remember: You can shut down at any point the Xserver by pressing - CONTROL+ALT+BACKSPACE (if something goes wrong). - Also Xservers don't produce messages unless to want them to do so. This is - because the DG/ux console driver some times causes corruption of the screen - if you print text during the startup of the Xserver. - If you require messages try in bash shell to give: (bash# ) -<verb> - X -verbose >& info1 or even - X -verbose -verbose >& info2 for more messages. -</verb> - Then when the server is up press CONTROL+ALT+BACKSPACE to shutdown the - Xserver. File info1 (or info2) have all relevant info about your graphics - card , display memory etc ... - I suggest you do that at least one time before start using the new X11R6.3. - Read this info file to see if all ok. If not try change settings in your - XF86Config to make thinks correct. -<p> - If you have an ATI Rage II (or RageII+) use the server XF86_Mach64 (make - a link link X--->XF86_MACH64, or run xf86config, or use XF86Setup above). - -<item> If you want to compile programs with the X11R6.3 the headers in /usr/include - /X11 pointing to /usr/opt/X11 of DG/ux is a problem . - Do: -<p> - a): unmounting the /usr/opt/X11 will prevent the sysadm to use the X - graphical interface. But this will be the only thing that you loose. - The correct thing to do for X11R6.3 is to delete the filesystem /usr/opt/X11 - and make a link /usr/opt/X11--->/usr/X11R6.3 , so that the libraries - from dglib and /usr/lib point correctly to the new ones in /usr/X11r6.3/lib. - Before you unmount this filesystem you need to do this: -<verb> - cd /usr/opt/X11/include - cp -r Mrm /usr/X11R6.3/include - cp -r uil /usr/X11R6.3/include - cp -r Xm /usr/X11R6.3/include - cd /usr/X11R6.3/include - ln -s uil Uil -</verb> - - LIBRARIES: -<verb> - and cd /usr/opt/X11/lib - cp libXm.a /usr/X11R6.3/lib -</verb> - - and similarly copy the following libraries: - -<verb> - libX11.so.2, libX11.so.5, libXIM.so.1, libXaw.so.1, libXaw.so.2, - libXext.so.2, libXi.so.2, libXimp.so.1, libXm.so.2, libXmu.so.2, - libXsess.so.1, libXsi.so.1, libXt.so.2, libXt.so.5.0, libMrm.a, - libUil.a, libX11_s, libXR4sco_s -</verb> - - into /usr/X11R6.3/lib. -<p> - Then cd /usr/X11R6.3/lib and make links: - -<verb> - ln -s libXm.so.2 libXm.so - ln -s libXm.so.2 libXm.so.1 - ln -s libXm.so.2 libXm.so.5.0 - - ln -s libX11.so.5.0 libX11.so.1 - - ln -s libXIM.so.1 libXIM.so.5.0 - - ln -s libXaw.so.2 libXaw.so.5.0 - - ln -s libXext.so.2 libXext.so.5.0 - ln -s libXext.so.2 libXext.so.1 - - ln -s libXi.so.2 libXi.so.1 - ln -s libXi.so.2 libXi.so.5.0 - - ln -s libXimp.so.1 libXimp.so.5.0 - - ln -s libXmu.so.2 libXmu.so.5.0 - - ln -s libXt.so.2 libXt.so.5.0 - - ln -s libXsi.so.1 libXi.so.5.0 - - cd /usr/X11R6.3/lib - rm libXmu.so (to avoid undefs when building X software) -</verb> - - Also you need to correct the links in /usr/dglib at least! - (the correct thing to do is modify also /usr/lib links to - /usr/opt/X11 libs). - Try -<verb> - cd /usr/ - tar -cvf dglib-orig.tar dglib - gzip dglib-orig.tar -</verb> - (to minimize the space dglib-backup takes) then -<verb> - cd /usr/dglib -</verb> - and delete ALL links to libraries in - /usr/opt/X11. Then copy the script create_new_links_in_dglib (found - in /usr/X11R6.3 to /usr/dglib and cd /usr/dglib execute script. - This will create all new links with the X11R6.3 X window system. -<p> - But remember to do in the end : -<p> -<verb> - cd /usr/dglib - rm *.a (no static libs links in dglib) -</verb> - - Then unmount (delete) the old X11 by giving "umount /usr/opt/X11". -<p> - NOTE: If you compile programs in the X11R6 make sure that you - unmount /usr/opt/X11 or you eliminate the links in /usr/lib - to the OLD libX's in /usr/opt/X11/lib. - Otherwise gcc will link these old libraries! and the binary will - not run correctly. - Always after an R6 compilation do "ldd prog" to make sure that the - binary loads only R6 version libraries (except maybe the motif - library libXm.so.2), --if you don't use the static libXm.a -<p> - b:) -<verb> - cd /usr/include - tar -cvf old-X11headers.tar X11 - gzip old-X11headers.tar -</verb> - so that you store your old headers in /usr/include. - - Then cd /usr/include/ and delete -<verb> - rm -r X11 - rm Xm - rm Mrm - rm Uil - rm uil - Make new links as: - cd /usr/include - ln -s ../X11R6.3/include/X11 X11 - ln -s ../X11R6.3/include/uil Uil - ln -s ../X11R6.3/include/uil uil - ln -s ../X11R6.3/include/Xm Xm - ln -s ../X11R6.3/include/Mrm Mrm -</verb> -</itemize> - -<sect> What is about:<p> - This new X11R6 are not simply an upgrade of the servers to the latest ones. - It is a new programming platform in your DG/ux system to allow you to import - all this *FREE* or not software for the X window system. - This software will not compile in the old (and ugly) X11 of Data General. - The imake command that is implemented in almost all the (source) software - for X11 (free or not) will not work with the totally broken "imake" command - of /usr/opt/X11 of DG/ux. -<p> - The imake of DG/ux X11R5 is badly broken: - I have seen DG/ux releases R4.11,MU01, ...MU04, R420, R4.20MU02 ,R4.20MU03 - and nobody bother to look in all these releases the imake command... -<p> - While until now DG was rather hostile to the prospect of a new X11 in DG/ux - some new folks there they have turn their interest in X11R6 (XFree86) these - days. That is good of course because the ultimate target is to make XFree86 - (3.3.5 or whatever version) to run in _their_ DG/ux Unix! I will be able to - make a much better X11 in DG/ux if I could had some access to DG/ux sources - (i.e. the original R5 sources , but not only --eg kernel driver sources as - for example the DG/ux kernel console driver sources). -<p> - I have compile almost anything that runs for Linux in DG/ux using this X11. - In doing this work in XFree86 I would like to express my thanks to David Dawes - that he help me all the time with several technical questions. Also D.T. is one - of the people that offer valuable help. - Finally I want to express my thanks to John H. for enlightening me in some syscall - issues. - - -<verb> -$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/DGux.sgml,v 1.4 2000/01/24 19:38:27 dawes Exp $ -</verb> - -</article> Index: xc/programs/Xserver/hw/xfree86/doc/sgml/DRI.sgml diff -u /dev/null xc/programs/Xserver/hw/xfree86/doc/sgml/DRI.sgml:1.3 --- /dev/null Wed Mar 8 16:30:57 2000 +++ xc/programs/Xserver/hw/xfree86/doc/sgml/DRI.sgml Wed Mar 8 16:30:57 2000 @@ -0,0 +1,719 @@ +<!DOCTYPE linuxdoc PUBLIC "-//XFree86//DTD linuxdoc//EN" [ +<!ENTITY % defs SYSTEM "defs.ent"> %defs; +]> + +<!-- Created: Mon Feb 28 13:00:00 2000 by brian@precisioninsight.com --> +<!-- Revised: Mon Mar 6 20:10:02 2000 by kevin@precisioninsight.com --> + + <article> + + <title>DRI Users Guide + <author><htmlurl url="http://www.precisioninsight.com/" + name="Precision Insight, Inc."> + <date>6 March 2000 + + <ident> + $XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/DRI.sgml,v 1.3 2000/03/08 05:38:41 dawes Exp $ + </ident> + + <toc> + + <sect>Preamble +<p> + <sect1>Copyright +<p> + <bf>Copyright © 2000 by Precision Insight, Inc., + Cedar Park, Texas. + All Rights Reserved.</bf> + <p> + <bf>Permission is granted to make and distribute verbatim copies + of this document provided the copyright notice and this permission + notice are preserved on all copies.</bf> + + <sect1>Trademarks +<p> + OpenGL is a registered trademark and SGI is a trademark of + Silicon Graphics, Inc. + Unix is a registered trademark of The Open Group. + The `X' device and X Window System are trademarks of The Open Group. + XFree86 is a trademark of The XFree86 Project. + Linux is a registered trademark of Linus Torvalds. + Intel is a registered trademark of Intel Corporation. + 3Dlabs, GLINT, and Oxygen are either registered trademarks or + trademarks of 3Dlabs Inc. Ltd. + 3dfx, Voodoo3, Voodoo4, and Voodoo5 are registered trademarks of + 3dfx Interactive, Incorporated. + All other trademarks mentioned are the property of their + respective owners. + + <sect>Introduction +<p> + With XFree86 4.0 and Precision Insight's Direct Rendering Interface + (DRI), hardware accelerated 3D graphics can be considered a standard + feature on Linux workstations. + Support for other operating systems, such as FreeBSD, is underway. + <p> + This document describes how to use the DRI system and troubleshoot + problems which may occur. + Readers should have a basic understanding of Linux, X and OpenGL. + See the resources section at the end for more documentation and + software downloads. + <p> + This document does not cover compilation or installation of + XFree86 4.0; + it is assumed that you've already installed a Linux distribution which + includes XFree86 4.0. + + <sect>Supported Hardware +<p> + 3D acceleration is currently only available for systems with + Intel-compatible CPUs. + Support for Alpha, and perhaps other CPUs, should be available in the + future. + <p> + XFree86 4.0 includes 3D acceleration for the following + graphics hardware: + + <itemize> + <item>3dfx: + <itemize> + <item>Voodoo3 3500 TV + <item>Voodoo3 3000 AGP + <item>Voodoo3 3000 PCI + <item>Voodoo3 2000 AGP + <item>Voodoo3 2000 PCI + <item>Voodoo Banshee + <item>Velocity 100/200 + </itemize> + There are many configurations of 3dfx cards on the market. + Not all have been tested. + <item>3Dlabs Oxygen GMX 2000 (MX/Gamma based) + </itemize> + + <p> + Support for the following hardware is underway: + <itemize> + <item>Intel i810 + <item>Matrox G400 + <item>ATI Rage 128 + <item>3dfx Voodoo4 and Voodoo5 series + </itemize> + + + <sect>Prerequisite Software +<p> + <itemize> + <item>XFree86 4.0 + <item>Linux kernel 2.2.x (later kernels will be supported in + the near future, and may be required for some chipsets) + </itemize> + <p> + Mesa 3.3 (beta) is included with XFree86 4.0; there is no need to + download the stand-alone Mesa distribution. + + + <sect>X Server Start-up +<p> + This section describes the steps needed to start the X server with + 3D acceleration support. + + <sect1>Kernel module +<p> + Before starting the X server you must install the correct kernel + module for your hardware. + <p> + This can be done by executing the following as root: + <verb> + insmod XXX/drivername.o + </verb> + <p> + For example, on 3dfx hardware, the kernel module is called tdfx.o + so you you would type insmod XXX/tdfx.o + + <p> + Verify that the kernel module was installed by checking that + /proc/dri/0 exists. + + <sect1>XF86Config file +<p> + First, the XF86Config file must load the GLX and DRI modules: + + <verb> + Section "Module" + ... + # This loads the GLX module + Load "glx" + # This loads the DRI module + Load "dri" + EndSection + </verb> + + Next, the DRI section can be used to restrict access to direct + rendering. + <p> + If you want all of the users on your system to be able to use + direct-rendering, then use a simple DRI section: + <verb> + Section "DRI" + Mode 0666 + EndSection + </verb> + <p> + This section will allow any user with a current connection to the X + server to use direct rendering. + <p> + If you want to restrict the use of direct-rendering to a + certain group of users, then create a group for those users by + editing the <tt>/etc/group</tt> file on your system. + For example, you may want to create a group called <tt>xf86dri</tt> + and place two users (e.g., <tt>fred</tt> and <tt>jane</tt>) in + that group. + To do that, you might add the following line to <tt>/etc/group</tt>: + + <verb> + xf86dri:x:8000:fred,jane + </verb> + + You have to be careful that the group id (8000 in this example) + is unique. + <p> + Then you would use the following DRI section: + + <verb> + Section "DRI" + Group "xf86dri" + Mode 0660 + EndSection + </verb> + + This would limit access to direct-rendering to those users in the + <tt>xf86dri</tt> group (<tt>fred</tt> and <tt>jane</tt> in this + example). When other users tried to use direct rendering, they + would fall back to unaccelerated indirect rendering. + <p> + [Note that there is a known bug in XFree86 4.0 that prevents some + changes to the DRI section from taking effect. Until this bug is + fixed, if you change the DRI section, please also remove the + <tt>/dev/dri</tt> directory with the <tt>rm -rf /dev/dri</tt> + command.] + <p> + Next, the Device section of the XF86Config file must describe your + particular hardware. + For example, here's the Device section for a 3dfx Voodoo3 card: + + <verb> + Section "Device" + Identifier "Voodoo3" + VendorName "3dfx" + Driver "tdfx" + EndSection + </verb> + + <p> + Finally, the Screen section of the XF86Config file may have to be + specially configured as well. + For example, Voodoo3 hardware acceleration is only available + in 16bpp mode. + <verb> + Section "Screen" + Identifier "Screen 1" + Device "Voodoo3" + Monitor "High Res Monitor" + DefaultDepth 16 + Subsection "Display" + Depth 16 + Modes "1280x1024" "1024x768" "800x600" "640x480" + ViewPort 0 0 + EndSubsection + EndSection + </verb> + + <p> + If there are errors in the XF86Config file, the X server will + log errors to the file /var/log/XFree86.0.log + + <sect1>Memory usage +<p> + Using the 3D features of a graphics card requires more memory + than when it's just used as a 2D device. + Double buffering, depth buffering, stencil buffers, textures, + etc. all require extra graphics memory. + These features may require four times the memory used for a simple + 2D display. + <p> + If your graphics card doesn't have a lot of memory (less than 16MB, + for example), you may have to reduce your screen size and/or + color depth in order to use 3D features. + <p> + The documentation included with your card should have information + about maximum screen size when using 3D. + + + <sect>Using 3D Acceleration +<p> + This section describes how to link your application with libGL.so + and verify that you are in fact using 3D acceleration. + + <sect1>libGL.so +<p> + Your OpenGL program must link with the libGL.so.1.2 library provided + by XFree86 4.0. + The libGL.so.1.2 library contains a GLX protocol encoder for + indirect/remote rendering and DRI code for accessing hardware + drivers. + In particular, be sure you're not using libGL.so from another + source such as Mesa or the Utah GLX project. + <p> + Unless it was built in a special way, the libGL.so library does + not contain any 3D hardware driver code. + Instead, libGL.so dynamically loads the appropriate 3D driver + during initialization. + <p> + Most simple OpenGL programs also use the GLUT and GLU libraries. + A source for these libraries is listed in the Resources + section below. + + <sect1>Compiling and linking an OpenGL program +<p> + A simple GLUT/OpenGL program may be compiled and linked as follows: + <verb> + gcc program.c -I/usr/local/include -L/usr/local/lib -L/usr/X11R6/lib -lglut -lGLU -lGL -o program + </verb> + <p> + The <tt/-I/ option is used to specify where the GL/glut.h (and + possibly the GL/gl.h and GL/glu.h) header file may be found. + <p> + The <tt/-L/ options specify where the libglut.so, libGLU.so and + X libraries are located. + <p> + The <tt/-lglut -lGLU -lGL/ arguments specify that the application + should link with the GLUT, GLU and GL libraries. + + <sect1>Running your OpenGL program +<p> + Simply typing ./program in your shell should execute the program. + <p> + If you get an error message such as + <verb> + gears: error in loading shared libraries: libGL.so.1: cannot + open shared object file: No such file or directory + </verb> + if means that the libGL.so.1 file is not the right location. + Proceed to the trouble shooting section. + + <sect1>glxinfo +<p> + glxinfo is a useful program for checking which version of + libGL you're using as well as which DRI-based driver. + Simply type <tt/glxinfo/ and examine the OpenGL vendor, renderer, + and version lines. + Among the output you should see something like this: + <p> + <verb> + OpenGL vendor string: Precision Insight, Inc. + OpenGL renderer string: Mesa DRI Voodoo3 20000224 + OpenGL version string: 1.2 Mesa 3.3 beta + </verb> + <p> + or this: + <p> + <verb> + OpenGL vendor string: Precision Insight, Inc. + OpenGL renderer string: Mesa GLX Indirect + OpenGL version string: 1.2 Mesa 3.3 beta + </verb> + <p> + The first example indicates that the 3dfx driver is using + Voodoo3 hardware. + The second example indicates that no hardware driver was + found and indirect, unaccelerated rendering is being used. + <p> + If you see that indirect rendering is being used when direct + rendering was expected, proceed to the troubleshooting section. + <p> + <tt/glxinfo/ also lists all of the GLX-enhanced visuals available. + Here you can determine which visuals may have depth buffers, stencil + buffers, accumulation buffers, etc. + + <sect1>Environment Variables +<p> + The libGL.so library recognizes three environment variables. + Normally, none of them need to be defined. + If you're using the csh or tcsh shells, type + <tt/setenv VARNAME value/ to set the variable. + Otherwise, if you're using sh or bash, type + <tt/export VARNAME=value/. + <enum> + <item> + <tt/LIBGL_DEBUG/, if defined will cause libGL.so to print error + and diagnostic messages. This can help to solve problems. + <item> + <tt/LIBGL_ALWAYS_INDIRECT/, if defined this will force libGL.so + to always use indirect rendering instead of hardware + acceleration. + This can be useful to isolate rendering errors. + <item> + <tt/LIBGL_DRIVERS_DIR/ can be used to override the default + directory which is searched for 3D drivers. + In a typical XFree86 installation, the 3D drivers should be in + /usr/X11R6/lib/modules/dri/. + This environment variable can be used to specify a different + directory. + Note that this feature is disabled for set-uid programs. + </enum> + <p> + Mesa-based drivers (this includes most of the drivers listed + above) also observe many of the existing Mesa environment variables. + These include the <tt/MESA_DEBUG/ and <tt/MESA_INFO/ variables. + + + <sect>General Trouble Shooting +<p> + This section contains information to help you diagnose general + problems. + See below for additional information for specific hardware. + + <sect1>Starting the X server +<p> + <enum> + <item> + Before you start the X server, verify the appropriate 3D kernel + module is installed. + Type <tt/lsmod/ and look for the appropriate kernel module. + For 3dfx hardware you should see <tt/tdfx/, for example. + + <item> + Verify you're running XFree86 4.0 and not an older version. + If you run <tt/xdpyinfo/ and look for the following line near + the top: + <verb> + vendor release number: 4000 + </verb> + + <item> + Verify that your XF86Config file (usually found at + /etc/X11/XF86Config) loads the glx and dri modules and + has a DRI section. + <p> + See the Software Resources section below for sample + XF86Config files. + + <item> + Examine the messages printed during X server startup and check + that the DRM module loaded. + Using the Voodoo3 as an example: + <verb> + (==) TDFX(0): Write-combining range (0xf0000000,0x2000000) + (II) TDFX(0): Textures Memory 7.93 MB + (0): [drm] created "tdfx" driver at busid "PCI:1:0:0" + (0): [drm] added 4096 byte SAREA at 0xc65dd000 + (0): [drm] mapped SAREA 0xc65dd000 to 0x40013000 + (0): [drm] framebuffer handle = 0xf0000000 + (0): [drm] added 1 reserved context for kernel + (II) TDFX(0): [drm] Registers = 0xfc000000 + (II) TDFX(0): visual configs initialized + (II) TDFX(0): Using XFree86 Acceleration Architecture (XAA) + Screen to screen bit blits + Solid filled rectangles + 8x8 mono pattern filled rectangles + Indirect CPU to Screen color expansion + Solid Lines + Dashed Lines + Offscreen Pixmaps + Driver provided NonTEGlyphRenderer replacement + Setting up tile and stipple cache: + 10 128x128 slots + (==) TDFX(0): Backing store disabled + (==) TDFX(0): Silken mouse enabled + (0): X context handle = 0x00000001 + (0): [drm] installed DRM signal handler + (0): [DRI] installation complete + (II) TDFX(0): direct rendering enabled + </verb> + + <item> + After the X server has started, verify that the required X server + extensions are loaded. + Run <tt/xdpyinfo/ and look for the following entries in the + extensions list: + <verb> + GLX + SGI-GLX + XFree86-DRI + </verb> + + </enum> + + <sect1>Linking, running and verifying 3D acceleration +<p> + After you've verified that the X server and DRI have started + correctly it's time to verify that the GL library and hardware + drivers are working correctly. + + <enum> + <item> + Verify that you're using the correct libGL.so library with + <tt/ldd/. + The /usr/lib and /usr/X11R6/lib directories are expected + locations for libGL.so. + <p> + Example: + <verb> + % ldd /usr/local/bin/glxinfo + libglut.so.3 => /usr/local/lib/libglut.so.3 (0x40019000) + libGLU.so.1 => /usr/local/lib/libGLU.so.1 (0x40051000) + libGL.so.1 => /usr/lib/libGL.so.1 (0x40076000) + libXmu.so.6 => /usr/X11R6/lib/libXmu.so.6 (0x402ee000) + libXi.so.6 => /usr/X11R6/lib/libXi.so.6 (0x40301000) + libm.so.6 => /lib/libm.so.6 (0x40309000) + libc.so.6 => /lib/libc.so.6 (0x40325000) + libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x40419000) + libXt.so.6 => /usr/X11R6/lib/libXt.so.6 (0x404bd000) + libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x40509000) + libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x40512000) + libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x40529000) + libvga.so.1 => /usr/lib/libvga.so.1 (0x40537000) + libpthread.so.0 => /lib/libpthread.so.0 (0x4057d000) + /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) + </verb> + + <item> + You may also double check that libGL.so is in fact DRI-capable. + Run <tt/strings libGL.so.1.2 | grep DRI/ and look for + symbols prefixed with "XF86DRI", such as "XF86DRIQueryExtension". + + <item> + To be safe one should run <tt/ldconfig/ after installing libGL.so + to be sure the runtime loader will find the proper library. + + <item> + Verify that the appropriate 3D driver is in + /usr/X11R6/lib/modules/dri/ + For example, the 3dfx driver will be named <tt/tdfx_dri.so/. + + <item> + Set the <tt/LIBGL_DEBUG/ environment variable. + This will cause libGL.so to print an error message if it fails + to load a DRI driver. + Any error message printed should be self-explanatory. + + <item> + Run <tt/glxinfo/. Note the line labeled "OpenGL renderer string". + It should have a value which starts with "Mesa DRI" followed by + the name of your hardware. + + <item> + Older Linux OpenGL applications may have been linked against + Mesa's GL library and will not automatically use libGL.so. + In some cases, making symbolic links from the Mesa GL library + to libGL.so.1 will solve the problem: + <verb> + ln -s libGL.so.1 libMesaGL.so.3 + </verb> + In other cases, the application will have to be relinked + against the new XFree86 libGL.so. + <P> + It is reported that part of the problem is that running + <tt/ldconfig/ will silently rewrite symbolic links based + on the SONAME field in libraries. + </enum> + + <p> + If you're still having trouble, look in the next section for + information specific to your graphics card. + + + + <sect>Hardware-Specific Information and Troubleshooting +<p> + This section presents hardware-specific information for normal + use and troubleshooting. + + <sect1>3dfx Voodoo3 +<p> + <sect2>Troubleshooting +<p> + <itemize> + <item> + 3D acceleration for Voodoo3 is only supported in the 16 + bit/pixel screen mode. + Use <tt/xdpyinfo/ to verify that all your visuals are depth 16. + Edit your XF86Config file if needed. + </itemize> + + <sect2>Performance +<p> + <itemize> + <item> + Normally, buffer swapping in double-buffered applications is + synchronized to your monitor's refresh rate. + This may be overridden by setting the <tt/FX_GLIDE_SWAPINTERNVAL/ + environment variable. + The value of this variable indicates the maximum number of + swap buffer commands can be buffered. + Zero allows maximum frame rate. + <item> + The <tt/glTexEnv/ mode <tt/GL_BLEND/ is not directly supported + by the 3dfx hardware. + It can be accomplished with a multipass algorithm but it's not + implemented at this time. + Applications which use that mode, such as the Performer Town + demo, may become sluggish when falling back to software + rendering to render in that mode. + </itemize> + <sect2>Known Problems +<p> + <itemize> + <item> + SSystem has problems because of poorly set near and far + clipping planes. + The office.unc Performer model also suffers from this problem. + </itemize> + + + <sect1>Intel i810 +<p> + <sect1>Matrox G400 +<p> + <sect1>ATI Rage 128 +<p> + <sect1>3DLabs Oxygen GMX 2000 +<p> + The driver for this hardware was experimental and is no longer being + developed or supported. + + + <sect>Limitations and Known Bugs +<p> + <sect1>OpenGL +<p> + The following OpenGL features are not supported at this time: + overlays, stereo, hardware-accelerated indirect rendering. + <p> + OpenGL-like functionality is provided with the Mesa library. + XFree86 4.0 uses a beta version Mesa 3.3. + When newer versions of Mesa are available, the 3D drivers can + be updated without reinstalling XFree86 or libGL.so. + + <sect1>GLX +<p> + The GLX 1.3 API is exported but none of the new 1.3 functions + are operational. + <p> + The new <tt/glXGetProcAddressARB/ function is fully supported. + + <sect1>Signal Handling +<p> + There are several understood, but unresolved problems relating + to hardware locking and signal handling. + Hitting CTRL-z to suspend a 3D application can sometimes cause + the X server to lock-up if executing device driver code at that + moment. + Also, using a debugger to step through OpenGL/Mesa device driver + functions code could cause a lock-up. + These problems will be fixed in the future. + + <sect1>Scheduling +<p> + When you run multiple GL applications at once you may notice poor + time slicing. + This is due to an interaction problem with the Linux scheduler + which will be addressed in the future. + + + <sect1>Bug Database +<p> + The DRI bug database which includes bugs related to specific + drivers is at the + <htmlurl url="http://sourceforge.net/bugs/?group_id=387" + name="SourceForge DRI Bug Database"> + <p> + Please scan both the open and closed bug lists to determine if your + problem has already been reported and perhaps fixed. + + + <sect>Resources +<p> + <sect1>Software +<p> + A collection of useful configuration files, libraries, headers, + utilities and demo programs is available from + <htmlurl url="http://dri.sourceforge.net/resources/resources.html" + name="http://dri.sourceforge.net/resources/resources.html"> + + <sect1>Documentation +<p> + <itemize> + <item>General OpenGL information is available at the + <htmlurl url="http://www.opengl.org" name="OpenGL Home Page"> + <item>XFree86 information is available at the + <htmlurl url="http://www.xfree86.org" name="XFree86 Home Page"> + <item>Information about the design of the DRI is available from + <htmlurl url="http://www.precisioninsight.com/piinsights.html" + name="Precision Insight, Inc."> + <item>Visit the <htmlurl url="http://dri.sourceforge.net" + name="DRI project on SourceForge.net"> for the latest development + news about the DRI and 3D drivers. + </itemize> + + <sect1>Support +<p> + <itemize> + <item> + The DRI-users mailing list at + <htmlurl url="http://sourceforge.net/mail/?group_id=387" + name="SourceForge"> is a forum for people to discuss DRI problems. + <item> + XXX IHV support? + <item> + XXX Linux distro support? + </itemize> + + </article> + + +<!-- +1. Introduction +2. Supported Hardware +3. Prerequisite Software +4. Start-Up +5. Using 3D Acceleration + 5.1 libGL.so + 5.2 glxinfo + 5.3 Environment variables +6. General Trouble Shooting +7. Hardware-Specific Information + 7.1 3dfx + 7.2 Intel i810 + 7.3 Matrox G400 + 7.4 ATI Rage 128 + 7.5 3DLabs Gamma +8. Limitation and Known Bugs + 8.1 OpenGL + 8.2 GLX + 8.3 Signal Handling + 8.4 Scheduling + 8.5 Bug Database +9. Resources + 9.1 Software Resources + GLU + GLUT + Glide3 + Utilities and demos + Sample XF86Config files + 9.2 Documentation + www.XFree86.org + www.opengl.org + www.linux.com + www.precisioninsight.com + sourceforge.net + 9.3 Support + IHVs + RedHat + --> + + <!-- Local Variables: --> + <!-- fill-column: 72 --> + <!-- End: --> + + Index: xc/programs/Xserver/hw/xfree86/doc/sgml/DocIndex.sgml diff -u xc/programs/Xserver/hw/xfree86/doc/sgml/DocIndex.sgml:3.34 xc/programs/Xserver/hw/xfree86/doc/sgml/DocIndex.sgml:removed --- xc/programs/Xserver/hw/xfree86/doc/sgml/DocIndex.sgml:3.34 Mon Aug 23 05:06:03 1999 +++ xc/programs/Xserver/hw/xfree86/doc/sgml/DocIndex.sgml Wed Mar 8 16:30:57 2000 @@ -1,132 +0,0 @@ -<!DOCTYPE linuxdoc PUBLIC "-//XFree86//DTD linuxdoc//EN"[ -<!ENTITY % defs SYSTEM "defs.ent"> %defs; -]> - -<article> - -<!-- Title information --> -<title>Documentation for XFree86™ version &relvers; -<author>The XFree86 Project, Inc -<date>19 July 1999 - -<ident> -$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/DocIndex.sgml,v 3.34 1999/08/23 09:06:03 dawes Exp $ -</ident> - -<p> -<itemize> -<item><htmlurl name="README for XFree86&tm; &relvers;" - url="README.html"> -<item><htmlurl name="Release Notes for XFree86™ &relvers;" - url="RELNOTES.html"> -<item><htmlurl name="Licenses" - url="LICENSE.html"> -<!-- -<item><htmlurl name="Quick Start Guide for XFree86" - url="QuickStart.html"> -<item><htmlurl name="The XInput extension in XFree86" - url="xinput.html"> ---> -<item><htmlurl name="XFree86 X server ``New Design'' (DRAFT)" - url="DESIGN.html"> -<item><htmlurl name="Mouse Support in XFree86" - url="mouse.html"> -<item><htmlurl name="Fonts in XFree86" - url="fonts.html"> -<!-- -<item><htmlurl name="README for XFree86 3.1.2 on BSD/OS 2.0" - url="Bsdi.html"> ---> -<!-- -<item><htmlurl name="README for XFree86 on FreeBSD" - url="FreeBSD.html"> ---> -<item><htmlurl name="Information for ISC Users" - url="isc.html"> -<!-- -<item><htmlurl name="Information for Linux Users" - url="Linux.html"> -<item><htmlurl name="README for XFree86 3.2A on LynxOS" - url="LynxOS.html"> ---> -<!-- -<item><htmlurl name="README for XFree86 3.1 on Mach" - url="Mach.html"> ---> -<!-- -<item><htmlurl name="README for XFree86 3.2 on NetBSD and OpenBSD" - url="NetBSD.html"> -<item><htmlurl name="README for XFree86 3.2 on OS/2" - url="OS2.html"> -<item><htmlurl name="Notes on Rebuilding XFree86/OS2 from Scratch" - url="OS2Notes.html"> -<item><htmlurl name="Information for SCO Users" - url="SCO.html"> -<item><htmlurl name="Information for Solaris for x86 Users" - url="SOLX86.html"> -<item><htmlurl name="Information for SVR4 Users" - url="SVR4.html"> -<item><htmlurl name="Configuring XFree86" - url="Config.html"> -<item><htmlurl name="Building XFre86" - url="BUILD.html"> ---> -<!-- -<item><htmlurl name="The Hitchhiker's Guide to X386/XFree86 Video Timing" - url="VideoModes.html"> -<item><htmlurl name="Readme for the XFree86 3.1.2 LinkKit" - url="LinkKit.html"> ---> -<!-- -<item><htmlurl name="How to add an (S)VGA driver to XFree86" - url="VGADriver.html"> -<item><htmlurl name="Notes on the AGX Server" - url="agx.html"> -<item><htmlurl name="Information for ARK Logic Chipset Users" - url="ark.html"> ---> -<item><htmlurl name="ATI Adapters README file" - url="ati.html"> -<item><htmlurl name="Information for Chips and Technologies Users" - url="chips.html"> -<!-- -<item><htmlurl name="Information for Cirrus Chipset Users" - url="cirrus.html"> ---> -<item><htmlurl name="Information for DEC 21030 Users (aka TGA)" - url="DECtga.html"> -<!-- -<item><htmlurl name="Notes for Mach32 X Server" - url="Mach32.html"> -<item><htmlurl name="Notes for Mach64 X Server" - url="Mach64.html"> -<item><htmlurl name="Information for Matrox Millennium Users" - url="MGA.html"> -<item><htmlurl name="Information for NVidia NV1 / SGS-Thomson Users" - url="NV1.html"> -<item><htmlurl name="Information for Oak Technologies Inc. Chipset Users" - url="Oak.html"> -<item><htmlurl name="XFree86 3.2 P9000 Server Release Notes" - url="P9000.html"> -<item><htmlurl name="Information for S3 Chipset Users" - url="S3.html"> ---> -<item><htmlurl name="Information for S3 ViRGE Users" - url="s3virge.html"> -<item><htmlurl name="Information for SiS Users" - url="SiS.html"> -<!-- -<item><htmlurl name="Information for Trident Chipset Users" - url="trident.html"> -<item><htmlurl name="Information for Tseng Chipset Users" - url="tseng.html"> -<item><htmlurl name="README.VIDEO7" - url="Video7.html"> -<item><htmlurl name="Information for Western Digital Chipset Users" - url="WstDig.html"> -<item><htmlurl name="The Linux/m68k Frame Buffer Device" - url="fbdev.html"> ---> -</itemize> - -</article> Index: xc/programs/Xserver/hw/xfree86/doc/sgml/Imakefile diff -u xc/programs/Xserver/hw/xfree86/doc/sgml/Imakefile:3.52 xc/programs/Xserver/hw/xfree86/doc/sgml/Imakefile:3.61 --- xc/programs/Xserver/hw/xfree86/doc/sgml/Imakefile:3.52 Wed Mar 8 16:30:57 2000 +++ xc/programs/Xserver/hw/xfree86/doc/sgml/Imakefile Wed Mar 8 16:30:57 2000 @@ -3,88 +3,111 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/Imakefile,v 3.52 2000/01/25 01:06:46 dawes Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/Imakefile,v 3.61 2000/03/08 05:38:42 dawes Exp $ #include <Server.tmpl> #include <lnxdoc.rules> SGMLDEPENDS = defs.ent - INDEXLIST = README.sgml RELNOTES.sgml Status.sgml LICENSE.sgml DESIGN.sgml \ - mouse.sgml fonts.sgml \ - isc.sgml NetBSD.sgml OpenBSD.sgml \ - ati.sgml chips.sgml DECtga.sgml r128.sgml rendition.sgml \ - s3virge.sgml SiS.sgml + INDEXLIST = README.sgml RELNOTES.sgml Status.sgml LICENSE.sgml Install.sgml \ + DESIGN.sgml \ + mouse.sgml fonts.sgml DRI.sgml \ + isc.sgml LynxOS.sgml NetBSD.sgml OpenBSD.sgml \ + apm.sgml ati.sgml chips.sgml cyrix.sgml DECtga.sgml \ + i740.sgml i810.sgml \ + r128.sgml rendition.sgml s3virge.sgml SiS.sgml -#if 0 +#ifdef DEADDOCS LinuxDocReadmeTarget(Bsdi) #endif -LinuxDocReadmeTarget(DGux) +#ifdef OUTOFDATE +LinuxDocReadmeTarget(DGUX) LinuxDocReadmeTarget(FreeBSD) -LinuxDocReadmeTarget(NetBSD) -LinuxDocReadmeTarget(OpenBSD) +#endif +LinuxDocReadmeTarget(isc) +#ifdef OUTOFDATE LinuxDocReadmeTarget(Linux) +#endif LinuxDocReadmeTarget(LynxOS) -LinuxDocReadmeTarget(SCO) -LinuxDocReadmeTarget(isc) +LinuxDocReadmeTarget(NetBSD) +LinuxDocReadmeTarget(OpenBSD) +#ifdef OUTOFDATE LinuxDocReadmeTarget(OS2) LinuxDocTargetLong(OS2note.sgml,OS2.Notes,OS2Notes) +LinuxDocReadmeTarget(SCO) LinuxDocReadmeTarget(SOLX86) LinuxDocReadmeTarget(SVR4) +#endif /* Hardware docs */ +#ifdef OUTOFDATE LinuxDocReadmeTarget(3Dlabs) -LinuxDocReadmeTarget(DECtga) -LinuxDocReadmeTarget(I128) -LinuxDocReadmeTarget(Mach32) -LinuxDocReadmeTarget(Mach64) -LinuxDocReadmeTarget(MGA) -LinuxDocReadmeTarget(NVIDIA) -LinuxDocReadmeTarget(Oak) -LinuxDocReadmeTarget(P9000) -LinuxDocReadmeTarget(Video7) -LinuxDocReadmeTarget(S3) -LinuxDocReadmeTarget(SiS) -LinuxDocReadmeTarget(WstDig) +#endif LinuxDocReadmeTarget(apm) +#ifdef OUTOFDATE LinuxDocReadmeTarget(ark) LinuxDocReadmeTarget(agx) +#endif LinuxDocReadmeTarget(ati) LinuxDocReadmeTarget(chips) +#ifdef OUTOFDATE LinuxDocReadmeTarget(cirrus) +#endif LinuxDocReadmeTarget(cyrix) +LinuxDocReadmeTarget(DECtga) +#ifdef OUTOFDATE LinuxDocReadmeTarget(epson) LinuxDocReadmeTarget(fbdev) +LinuxDocReadmeTarget(I128) +#endif LinuxDocReadmeTarget(i740) -LinuxDocReadmeTarget(r128) +LinuxDocReadmeTarget(i810) +#ifdef OUTOFDATE LinuxDocReadmeTarget(neomagic) +LinuxDocReadmeTarget(Mach32) +LinuxDocReadmeTarget(Mach64) +LinuxDocReadmeTarget(MGA) +LinuxDocReadmeTarget(NVIDIA) +LinuxDocReadmeTarget(Oak) +LinuxDocReadmeTarget(P9000) +#endif +LinuxDocReadmeTarget(r128) LinuxDocReadmeTarget(rendition) +#ifdef OUTOFDATE +LinuxDocReadmeTarget(S3) +#endif LinuxDocReadmeTarget(s3virge) +LinuxDocReadmeTarget(SiS) +#ifdef OUTOFDATE LinuxDocReadmeTarget(trident) LinuxDocReadmeTarget(tseng) +LinuxDocReadmeTarget(Video7) +LinuxDocReadmeTarget(WstDig) +#endif /* Main docs */ -LinuxDocTarget(LICENSE) -LinuxDocTarget(RELNOTES) -LinuxDocTarget(Status) -#ifdef UPTODATE -LinuxDocReadmeTarget(Config) +#ifdef OUTOFDATE LinuxDocTarget(BUILD) +LinuxDocReadmeTarget(Config) #endif -LinuxDocTarget(README) LinuxDocTarget(DESIGN) -#ifdef UPTODATE +LinuxDocTarget(Install) +LinuxDocTarget(LICENSE) +#ifdef OUTOFDATE LinuxDocTargetLong(QStart.sgml,QuickStart.doc,QuickStart) #endif -LinuxDocTarget(DocIndex) +LinuxDocTarget(README) +LinuxDocTarget(RELNOTES) +LinuxDocTarget(Status) /* Other docs */ -LinuxDocTarget(xinput) -LinuxDocReadmeTarget(mouse) LinuxDocReadmeTarget(fonts) +LinuxDocReadmeTarget(mouse) +#ifdef OUTOFDATE LinuxDocTargetLong(VidModes.sgml,VideoModes.doc,VideoModes) -#ifdef UPTODATE -LinuxDocTargetLong(VGADriv.sgml,VGADriver.Doc,VGADriver) +LinuxDocTarget(xinput) #endif +LinuxDocReadmeTarget(DRI) /* Generate the documentation index */ index.sgml: $(INDEXLIST) index.pre index.post add.sh Imakefile $(SGMLDEPENDS) Index: xc/programs/Xserver/hw/xfree86/doc/sgml/Install.sgml diff -u /dev/null xc/programs/Xserver/hw/xfree86/doc/sgml/Install.sgml:1.4 --- /dev/null Wed Mar 8 16:30:57 2000 +++ xc/programs/Xserver/hw/xfree86/doc/sgml/Install.sgml Wed Mar 8 16:30:57 2000 @@ -0,0 +1,398 @@ +<!DOCTYPE linuxdoc PUBLIC "-//XFree86//DTD linuxdoc//EN" [ +<!ENTITY % defs SYSTEM "defs.ent"> %defs; +]> + +<article> + +<title>Installation Details for XFree86™ &relvers; +<author>The XFree86 Project, Inc +<date>29 February 2000 + +<ident> +$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/Install.sgml,v 1.4 2000/02/29 18:01:17 dawes Exp $ +</ident> + +<abstract> + +This document contains information about installing +XFree86 &relvers;. + +</abstract> + +<toc> + +<sect>Introduction +<p> +This document contains information about installing XFree86 &relvers; +binary distributions as provided by The XFree86 Project. The installation +procedures for binary distributions provided by others may be different. + +The XFree86 binary distributions that we provide for UNIX-like OSs are +packaged in the platform-independent gzipped tar format (referred to as +"tarballs"). Our tarballs can be identified by the "<tt>.tgz</tt>" +suffix. We do not provide binaries in RPM format or any other platform +specific package format. If you need them in such a format, you should +contact your OS vendor. Together with the binary distributions, we +provide a customised version of GNU tar called "extract", and an +installation script. We recommend that these be used to install the +binary distributions. + +<sect>How to get the XFree86 &relvers; binary distributions +<p> +We, The XFree86 Project, provide XFree86 &relvers; binaries for a range +of operating systems at our +<![ %snapshot; [ +<url name="ftp site" +url="ftp://ftp.xfree86.org/pub/XFree86/snapshots/&relvers/binaries/">. +]]> +<![ %release; [ +<url name="ftp site" +url="ftp://ftp.xfree86.org/pub/XFree86/&relvers/binaries/">. +]]> +Our ftp site is also mirrored by many sites around the world. There is +a sub-directory for each OS/platform that we have binaries for. The +first thing you need to do is to decide which of these suits you. In +most cases, the choice is straightforward. In some cases (e.g., Linux) +there may be a number of choices depending on what architecture or libc +version you are using. We recommend that you first download the +<tt>Xinstall.sh</tt> script, and run it as follows to find out which +binary distribution you should download. + +<tscreen><verb> +sh Xinstall.sh -check +</verb></tscreen> + +This should tell you which binary distribution is the correct one for +your system. Getting this right may save from wasting time downloading +the wrong distribution. + +The next step is to download the necessary files. The mandatory files +for all installations are listed below. All of them must be downloaded +to do the installation. The installer script will complain if they are not +all present. + +<quote><verb> +Xinstall.sh The installer script +extract The utility for extracting tarballs +Xbin.tgz X clients/utilities and run-time libraries +Xlib.tgz Some data files required at run-time +Xman.tgz Manual pages +Xdoc.tgz XFree86 documentation +Xfnts.tgz Base set of fonts +Xfenc.tgz Base set of font encoding data +Xetc.tgz Run-time configuration files +Xvar.tgz Run-time data +Xxserv.tgz XFree86 X server +Xmod.tgz XFree86 X server modules +</verb></quote> + +NOTES: +<itemize> + <item>Some web browsers have a problem downloading the <tt>extract</tt> + utility correctly. If you encounter this problem, download the + version called <tt>extract.exe</tt> instead. The "<tt>.exe</tt>" + suffix is only there to make the troublesome web browsers do + the right thing. It is not a DOS/Windows executable. + + <item>A few distributions don't have or require the <tt>Xvar.tgz</tt> + tarball. If it is present in the <tt>binaries</tt> sub-directory + for your platform, then it is required. + + <item>Some distributions may have additional mandatory tarballs. This + is rare. In these cases, the installer script will tell you + if any are missing. + +</itemize> + +The following tarballs are optional. You should download the ones you +want to install. + +<quote><verb> +Xfsrv.tgz Font server +Xnest.tgz Nested X server +Xprog.tgz X header files, config files and compile-time libs +Xprt.tgz X Print server +Xvfb.tgz Virtual framebuffer X server +Xf100.tgz 100dpi fonts +Xfcyr.tgz Cyrillic fonts +Xflat2.tgz Latin-2 fonts +Xfnon.tgz Some large bitmap fonts +Xfscl.tgz Scalable fonts (Speedo and Type1) +Xhtml.tgz HTML version of the documentation +Xps.tgz PostScript version of the documentation +Xjdoc.tgz Documentation in Japanese +</verb></quote> + +NOTES: +<itemize> + <item>Some distributions may have some additional optional tarballs. + +</itemize> + +If you miss some and want to install them later, you can do so by following +the appropriate part of the section that describes manual installation. + +<sect>Installing XFree86 &relvers; using the <tt>Xinstall.sh</tt> script +<p> +We strongly recommend that our XFree86 &relvers; binary distributions +be installed using the <tt>Xinstall.sh</tt> script that we provide. +The main reason that we make this recommendation is that there are a lot +of steps in the manual installation process, and those steps can vary +according to the situation. There is, however, a description of the +manual installation process for the most common cases below for those who +might need it. + +Put all of the downloaded files into a single directory (choose some +temporary location with enough space). Become the super user (root), +cd to that directory, then run the installer script as follows: + +<tscreen><verb> +sh Xinstall.sh +</verb></tscreen> + +Answer the prompts that come up. If you are missing something that is +required to run this version of XFree86, the installer may tell you to +install it before trying again. If you don't have all of the mandatory +files listed above, then the installer will tell you which ones are +missing and ask you to download them before trying again. + +<sect1>Answering the questions that the installer may ask +<p> +The installer asks some questions that may not have obvious answers. The +information here should help you answer them. In most cases, apart from +the first question, the default answers should be OK. + +If you run the installer from within an X session (the installer checks +if <tt>$DISPLAY</tt> is set), you will be warned that doing so is not +a good idea. Unless you have a good reason for knowing that this won't +be a problem, you should exit your X session, including stopping xdm or +equivalent if it is running, before continuing. If you ignore this +warning and run into problems, well, you were warned! + +If you have an existing X installation, you will be warned that proceeding +with this installation will overwrite it. Only those things that are +part of our standard distribution will be overwritten. Other X +applications that you may have installed will not be removed. Some +configuration files may be overwritten though, but the installer should +prompt you before doing so. As the opening greeting says, it is +<bf>strongly</bf> recommended that you backup any existing installation +before proceeding. If you want your old applications to still be there +after you've installed, don't do the "backup" by simply renaming +your old <tt>/usr/X11R6</tt> directory. It is better to make a copy of +it, and then install over the top of the original one. If you run into +problems and want to revert to the old installation, you can then +delete the overwritten one and copy the saved version back. + +During the first part of the installation over an existing version, the +script may remove some old files or directories that would get in the +way of the new installation. It will list which files/directories have +been removed. If none are listed, then none were removed. + +The next step when installing over an existing version is to check for +existing configuration files. As of XFree86 version 3.9.18, the run-time +configuration files are installed by default under <tt>/etc/X11</tt> +instead of under <tt>/usr/X11R6/lib/X11</tt>. The installer will move +the existing ones for you and create the necessary symbolic links. If +you don't want to have these configuration files under <tt>/etc/X11</tt>, +then you should answer "no" when asked about it. Answering "no" here +also means that the new configuration files will be installed in the +old <tt>/usr/X11R6/lib/X11</tt> location. Note: for the rare systems +that don't have symbolic links, this question will not be asked. +The default answer is "yes" because that is best for most situations. +It is our new default. It makes it easier to share the <tt>/usr/X11R6</tt> +directory between multiple hosts, and allows it to be mounted read-only. +If you don't need these features, then you can safely answer "no" if you +don't want them moved. + +When installing over an existing version, you will be prompted before +each set of configuration files is installed. If you haven't made any +customisations to your existing configuration files, then you can safely +answer "yes" for each of these. If you have made customisations, you +can try answering "no". If you run into problems later, you may need +to manually merge your customisations into the the new version of the +configuration files. The configuration files can all be found in +the <tt>Xetc.tgz</tt> tarball. See the section below about manual +installation for information about extracting them separately. + +After the configuration files have been dealt with, the other mandatory +components of the binary distribution will be installed. This should +proceed without any user intervention. + +If you downloaded any of the optional components, the installer will +ask you about each one before it is installed. The default answer is +"yes". If there are any that you've since decided that you don't want +to install, answer "no" when prompted. + +After that is done, the main part of the installation is complete. The +next steps are to tidy up some aspects of the installation. The first +of these is to run "<tt>ldconfig</tt>" on systems that require it, so +that the newly installed shared libraries are accessible. Then +the <tt>fonts.dir</tt> files in some directories are updated so that +the fonts can be accessed correctly. Next, the installer checks to +see if your system has a termcap file or terminfo files. If it finds +the former, it tells you how my may update the entries in that file. +If it finds the latter, it asks you if you want it to update them +for you. + +Finally, the installer asks you if you want a link created for the +<tt>rstart</tt> utility. On most modern systems, the link isn't essential, +so the default answer is "no". Answer "yes" if you know that you need +it. If you find later that you need it, you can create it easily by +running: + +<tscreen><verb> +rm -f /usr/bin/rstartd +ln -s /usr/X11R6/bin/rstartd /usr/bin/rstartd +</verb></tscreen> + +<sect1>After the installation is complete +<p> +The next step is to configure the X server. That is covered in detail +in an as-yet unwritten document :-(. In the meantime, there are two +ways to create a basic X server configuration file for XFree86 &relvers;. +One is to run the <tt>xf86config</tt> utility. Another is to use the +new <tt>-configure</tt> X server option: + +<tscreen><verb> +XFree86 -configure +</verb></tscreen> + +The X server config file (<tt>XF86Config</tt>) format has changed +compared to 3.3.x. Also, its default location is now <tt>/etc/X11</tt>. +Finally, there is now only one X server for driving video hardware, +and it is called "<tt>XFree86</tt>". Once you're satisfied with the +operation of the new X server, you can safely remove the old +<tt>XF86_*</tt> and/or <tt>XF98_*</tt> X server binaries from +<tt>/usr/X11R6/bin</tt>. + +After the X server configuration is done, it may be advisable to reboot, +especially if you run xdm (or equivalent) or the font server (xfs). + +<sect>Installing XFree86 &relvers; manually +<p> +This section describes how to manually install the XFree86 &relvers; binary +distributions. You should only use this method if you know what you're +doing. The information here covers some common cases, but not every +possible case. + +Put all of the downloaded files into a single directory (choose some +temporary location with enough space). Become the super user (root). +All of the following commands should be run as root, and they should be +run from the directory that has all of the downloaded files. The +"<tt>extract</tt>" utility should be used to unpack the tarballs. This +is a customised version of GNU tar that has the gzip code built-in, and +which has a different usage when run under the name "extract". One +important thing that <tt>extract</tt> does that most versions of tar do +not do by default is that it unlinks existing files before writing new +ones. This is important when installing over an existing version of X. +If you choose to use some other utility to extract the tarballs, you're +on your own. + +<sect1>A new installation +<p> +The simplest case is when there is no existing X installation. The +installation procedure for this case is as follows: + +<tscreen><verb> +chmod +x extract +mkdir /usr/X11R6 +mkdir /etc/X11 +./extract -C /usr/X11R6 X[a-df-uw-z]*.tgz +./extract -C /usr/X11R6 Xvfb.tgz # If you are installing Xvfb +./extract -C /etc/X11 Xetc.tgz +./extract -C /var Xvar.tgz +ln -s /etc/X11/app-defaults /usr/X11R6/lib/X11 +ln -s /etc/X11/fs /usr/X11R6/lib/X11 +ln -s /etc/X11/lbxproxy /usr/X11R6/lib/X11 +ln -s /etc/X11/proxymngr /usr/X11R6/lib/X11 +ln -s /etc/X11/rstart /usr/X11R6/lib/X11 +ln -s /etc/X11/twm /usr/X11R6/lib/X11 +ln -s /etc/X11/xdm /usr/X11R6/lib/X11 +ln -s /etc/X11/xinit /usr/X11R6/lib/X11 +ln -s /etc/X11/xsm /usr/X11R6/lib/X11 +ln -s /etc/X11/xserver /usr/X11R6/lib/X11 +/sbin/ldconfig /usr/X11R6/lib # For Linux +/sbin/ldconfig -m /usr/X11R6/lib # For FreeBSD, NetBSD, OpenBSD +/usr/X11R6/bin/mkfontdir /usr/X11R6/lib/X11/fonts/misc +</verb></tscreen> + +<sect1>Installing over an old installation +<p> +If you have an existing installation of X, you should make a backup copy +of it before installing the new version over the top of it. + +Before doing anything else, make sure the <tt>extract</tt> command is +executable, and also link it to the name "<tt>gnu-tar</tt>" so that it +can be used as a regular <tt>tar</tt> command: + +<tscreen><verb> +chmod +x extract +rm -f gnu-tar +ln extract gnu-tar +</verb></tscreen> + +The first part of the procedure is to move the old run-time config files +from <tt>/usr/X11R6/lib/X11</tt> to <tt>/etc/X11</tt>. Create +<tt>/etc/X11</tt> if it doesn't already exist. For each of the following +sub-directories (<tt>app-defaults</tt>, <tt>fs</tt>, <tt>lbxproxy</tt>, +<tt>proxymngr</tt>, <tt>rstart</tt>, <tt>twm</tt>, <tt>xdm</tt>, +<tt>xinit</tt>, <tt>xsm</tt>, <tt>xserver</tt>) that you want to move, +check that there is a sub-directory of this name in +<tt>/usr/X11R6/lib/X11</tt>. Create a sub-directory of the same name +under <tt>/etc/X11</tt>, then copy the files over by running: + +<tscreen><verb> +./gnu-tar -C /usr/X11R6/lib/X11/subdir -c -f - . | \ + ./gnu-tar -C /etc/X11/subdir -v -x -p -U -f - +</verb></tscreen> + +For each subdirectory that is moved, remove the one under +<tt>/usr/X11R6/lib/X11</tt> and create a symbolic link to the new +location: + +<tscreen><verb> +rm -fr /usr/X11R6/lib/X11/subdir +ln -s /etc/X11/subdir /usr/X11R6/lib/X11 +</verb></tscreen> + +For those subdirectories that didn't already exist under +<tt>/usr/X11R6/lib/X11</tt>, create one under <tt>/etc/X11</tt> and +create the symbolic link to it: + +<tscreen><verb> +mkdir /etc/X11/subdir +ln -s /etc/X11/subdir /usr/X11R6/lib/X11 +</verb></tscreen> + +Once that is done, extract the config files from the <tt>Xetc.tgz</tt> +tarball into a temporary directory: + +<tscreen><verb> +mkdir tmpdir +./extract -C tmpdir Xetc.tgz +</verb></tscreen> + +and then copy each sub-directory over to the installed location: + +<tscreen><verb> +./gnu-tar -C tmpdir/subdir -c -f - . | \ + ./gnu-tar -C /usr/X11R6/lib/X11/subdir -v -x -p -U -f - +</verb></tscreen> + +If you have customised any config files in your old installation, you +may want to omit those sub-directories, or copy selected files over by +hand. + +Once that's done, the main part of the installation can be done: + +<tscreen><verb> +./extract -C /usr/X11R6 X[a-df-uw-z]*.tgz +./extract -C /usr/X11R6 Xvfb.tgz # If you are installing Xvfb +./extract -C /var Xvar.tgz +/sbin/ldconfig /usr/X11R6/lib # For Linux +/sbin/ldconfig -m /usr/X11R6/lib # For FreeBSD, NetBSD, OpenBSD +/usr/X11R6/bin/mkfontdir /usr/X11R6/lib/X11/fonts/misc +</verb></tscreen> + + +</article> Index: xc/programs/Xserver/hw/xfree86/doc/sgml/LICENSE.sgml diff -u xc/programs/Xserver/hw/xfree86/doc/sgml/LICENSE.sgml:1.6 xc/programs/Xserver/hw/xfree86/doc/sgml/LICENSE.sgml:1.7 --- xc/programs/Xserver/hw/xfree86/doc/sgml/LICENSE.sgml:1.6 Wed Mar 8 16:30:57 2000 +++ xc/programs/Xserver/hw/xfree86/doc/sgml/LICENSE.sgml Wed Mar 8 16:30:57 2000 @@ -8,7 +8,7 @@ <date>1999</date> <ident> -$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/LICENSE.sgml,v 1.6 2000/01/19 22:37:33 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/LICENSE.sgml,v 1.7 2000/03/06 22:59:23 dawes Exp $ </ident> <sect>XFree86 License @@ -610,6 +610,50 @@ [NOTE: When using this text in connection with Subject Software delivered solely in object code form, Recipient may replace the words "this file" with "this software" in both the first and second sentences.] + +<sect1>Bigelow & Holmes Inc and Y&Y Inc Lucidux font license +<p> + +Copyright (C) 2000 Bigelow & Holmes Inc. and Y&Y, Inc. Patents pending. +All Rights Reserved. Lucidux is a trademark of Bigelow & Holmes Inc. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of these Fonts and associated documentation files (the "Font +Software"), to deal in the Font Software, including without limitation the +rights to use, copy, merge, publish, distribute, sublicense, and/or sell +copies of the Font Software, and to permit persons to whom the Font +Software is furnished to do so, subject to the following conditions: + +The above copyright, trademark, patent notices and this permission notice +shall be included in all copies of one or more of the Font Software. + +The Font Software may not be modified, altered, or added to, and in +particular the designs of glyphs or characters in the Fonts may not be +modified nor may additional glyphs or characters be added to the Fonts, +except that composite characters composed of two or more characters in the +Fonts may be created using the seac (Standard Encoding Accented Character) +Type 1 operator. + +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF +COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BIGELOW & +HOLMES INC. OR Y&Y, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR +CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. + +Except as contained in this notice, the names of Bigelow & Holmes Inc. and +Y&Y, Inc. shall not be used in advertising or otherwise to promote the +sale, use or other dealings in this Font Software without prior written +authorization from the Bigelow & Holmes Inc. and Y&Y, Inc. + +For further information, contact: + +<email>sales@yandy.com</email> +or +<email>design@bigelowandholmes.com</email> </article> Index: xc/programs/Xserver/hw/xfree86/doc/sgml/LynxOS.sgml diff -u xc/programs/Xserver/hw/xfree86/doc/sgml/LynxOS.sgml:3.17 xc/programs/Xserver/hw/xfree86/doc/sgml/LynxOS.sgml:3.19 --- xc/programs/Xserver/hw/xfree86/doc/sgml/LynxOS.sgml:3.17 Mon Aug 23 02:38:47 1999 +++ xc/programs/Xserver/hw/xfree86/doc/sgml/LynxOS.sgml Wed Mar 8 16:30:57 2000 @@ -1,65 +1,62 @@ -<!DOCTYPE linuxdoc PUBLIC "-//XFree86//DTD linuxdoc//EN"> +<!DOCTYPE linuxdoc PUBLIC "-//XFree86//DTD linuxdoc//EN" [ +<!ENTITY % defs SYSTEM "defs.ent"> %defs; +]> <article> - -<title>README for XFree86 on LynxOS +<title>README for XFree86 &relvers; on LynxOS <author>Thomas Mueller -<date>Last modified on: 30 May 1999 +<date>25 February 2000 + +<ident> +$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/LynxOS.sgml,v 3.19 2000/03/03 21:28:08 dawes Exp $ +</ident> + <toc> -<sect>What and Where is XFree86?<p> -XFree86 is a port of X11R6.3 that supports several versions of +<sect>What and Where is XFree86? +<p> +XFree86 is a port of X11R6.4 that supports several versions of Intel-based Unix. It is 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. The release -is available as source patches against the X Consortium X11R6.3 code, as -well as binary distributions for many architectures. - -See the Copyright Notice in <htmlurl url="COPYRIGHT.html" -name="Copyright Notice">. - -The sources for XFree86 are available by anonymous ftp from: - -<htmlurl name="ftp://ftp.XFree86.org/pub/XFree86/current" -url="ftp://ftp.XFree86.org/pub/XFree86/current"> - -Binaries of XFree86 for LynxOS AT are available from: - -<htmlurl name="ftp://ftp.XFree86.org/pub/XFree86/current/binaries/LynxOS" -url="ftp://ftp.XFree86.org/pub/XFree86/current/binaries/LynxOS"> - -The binaries were built on `LynxOS x86 3.0.1'. Because of changes -made to the object format they don't run on LynxOS versions earlier -than 3.0.0. +and performance improvements as well as many bug fixes. + +See the <htmlurl url="COPYRIGHT.html" name="Copyright Notice">. + +The sources for XFree86 &relvers; are available by anonymous ftp from: + +<htmlurl name="ftp://ftp.XFree86.org/pub/XFree86/&relvers;" +url="ftp://ftp.XFree86.org/pub/XFree86/&relvers;"> + +Binaries of XFree86 for LynxOS x86 are available from: + +<htmlurl name="ftp://ftp.XFree86.org/pub/XFree86/&relvers;/binaries/LynxOS" +url="ftp://ftp.XFree86.org/pub/XFree86/&relvers;/binaries/LynxOS"> + +A list of mirror sites is provided by +<htmlurl name="ftp://ftp.XFree86.org/pub/XFree86/MIRRORS" +url="ftp://ftp.XFree86.org/pub/XFree86/MIRRORS"> + +The binaries on the FTP site were built on the latest released LynxOS +version at the time XFree86 &relvers; was released. In this case it is +`LynxOS x86 3.0.1'. Because of changes made to the object format they +don't run on LynxOS versions earlier than 3.0.0. Building of this XFree86 version has never been tested on LynxOS versions -earlier than 2.4.0. Binaries built on LynxOS 2.4.0 are expected to run -on 2.3.0 as well. +earlier than 2.5.1. -XFree86 supports LynxOS on the AT, on the microSPARC and -on the PowerPC platform. X servers are currently available on -the AT and microSPARC platform. Refer to section <ref id="others" -name="Building on microSPARC and PowerPC"> for details on XFree86 -on the non-AT platforms. +XFree86 &relvers; supports LynxOS on the x86 and on +the PowerPC platform. X servers are currently available only on the +x86 platform. The X server may work with some PowerPC platforms +supported by LynxOS though this has not (yet) been thoroughly tested. If you need binaries for other platforms than the one on the -XFree86 FTP server contact me (<htmlurl name="tmueller@sysgo.de" -url="mailto:tmueller@sysgo.de">). - -Send email to <it>tmueller@sysgo.de</it> (Thomas Mueller) or -<it>XFree86@XFree86.org</it> if you have comments or suggestions about -this file and we'll revise it. +XFree86 FTP server or if you have comments or suggestions about this +document contact me (<email>tmueller@sysgo.de</email>). <sect>Installing the Binaries <p> -Please refer to section "Installing the XFree86 3.3.4 Release" of the -<htmlurl url="RELNOTES.html" name="Release Notes"> for detailed -installation instructions. - -If you plan to install XF86Setup you'll have to install -<tt/X333prog/ as well since XF86Setup checks for the existence of -a certain file name pattern which is satisfied only if you install -the library files from <tt/X333prog/. +Please refer to the <htmlurl name="Installation Document" +url="Install.html"> for detailed installation instructions. It may be necessary to increase the process stack limit in order to run XFree86 on your system. Edit <tt>/etc/startab</tt> and reboot your @@ -72,61 +69,74 @@ further information on necessary configuration steps before running XFree86 on LynxOS. +<sect1>Accessing XFree86 manual pages +<p> +Include <tt>/usr/X11R6/man</tt> in the MANPATH environment variable or add +the directory <tt>/usr/X11R6/man</tt> to <tt>/usr/Lib/man.config</tt> + + <sect>Running XFree86<p><label id="running"> This section describes the changes to the LynxOS environment which may be necessary to successfully run XFree86. +<!-- Read <htmlurl url="QuickStart.html" name="Quick-Start Guide to XFree86 Setup"> to learn more about how to configure XFree86 for your hardware. - -<sect1>System requirements<p> - A minimum of 16MB of memory is required to run X. If you want to run - real-world applications you should think of upgrading to 32MB (or more). +--> <sect1>System tuning<p> <sect2>Tunable parameters<p> - To reasonably run XFree86 you may have to adjust a few system parameters. +To reasonably run XFree86 you may have to adjust a few system parameters. - On LynxOS 2.5.x and 3.0.x include a line +On LynxOS 2.5.x and 3.0.x include a line <verb> - #define X_WINDOWS +#define X_WINDOWS </verb> - in <tt>/sys/lynx.os/uparam.h</tt>. +in <tt>/sys/lynx.os/uparam.h</tt>. - For earlier versions you'll have to edit <tt>/usr/include/param.h</tt>: -<verb> - Tunable Old New - USR_NFDS number of open files per process 20 64 - NPROC number of tasks 50 150 - NFILES number of open files in system 100 250 - NINODES number of incore inodes (same value as NFILES) - QUANTUM clock ticks until preemption 64 20 - CACHEBLKS number of cache memory blocks 202 >= 4096 -</verb> +<sect2>Adjustment for "nv" driver for NVidia graphics cards<p> - The new values are those suggested by the LynxOS documentation for - their X Window package. - -<sect2>Adjustment for Riva 128 and Riva TNT driver> - -If you're using the nVidia driver (Riva 128, TNT, TNT2) of the SVGA -server, you will have to increase the value of the SMEMS parameter in +If you're using the "nv" driver (Riva 128, nVidia TNT, TNT2, GeForce), +you will have to increase the value of the SMEMS parameter in <tt>/sys/lynx.os/uparam.h</tt> from 10 to 20. <sect2>Increase number of ptys<p> - You should also increase the number of ptys to be able run a couple - more xterms. You may replace <tt>/sys/lynx.os/pty.cfg</tt> with - <tt>/usr/X11R6/lib/X11/etc/pty.cfg</tt>. +You should also increase the number of ptys to be able run a couple +more xterms. You may replace <tt>/sys/cfg/pty.cfg</tt> with +<tt>/usr/X11R6/lib/X11/etc/pty.cfg</tt>. + +<sect2>MTRR device driver<p> + +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 XFree86 X server to manipulate the CPU memory type range +registers which may improve performance on certain systems. + +To install the driver (on LynxOS x86 2.5.0 systems an higher) follow +these steps: + +<tscreen><verb> + # cd / + # bash /usr/X11R6/lib/X11/etc/MTRR-Lynx.shar + # cd sys/drivers/mtrr + # make install +</verb></tscreen> + +Then add a line +<tscreen><verb> + I:../drivers/mtrr/mtrr.cfg +</verb></tscreen> +to <tt>/sys/lynx.os/CONFIG.TBL</tt> and rebuild the kernel (see next section). <sect2>Kernel build<p> - If you plan to use PS/2 or Bus mice refer to the following section - before rebuilding the kernel, if not, you should rebuild the kernel - now: +If you plan to use a PS/2 mouse to the following sections +before rebuilding the kernel, if not, you should rebuild the kernel +now: <tscreen><verb> # cd /sys/lynx.os @@ -136,45 +146,34 @@ <sect1>Mouse support in XFree86<p> - XFree86 includes support for PnP mice (see also - <htmlurl url="mouse.html" name="Mouse Support in XFree86">). 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. - -<sect1>Bus mouse drivers<p> - - Starting with LynxOS AT 2.4.0 LynxOS includes a PS/2 mouse driver. - Currently this driver is not fully supported by XFree86 (you'll - probably have to specify the mouse type as <em>Microsoft</em> - regardless of real mouse type and in some cases you won't have - all mouse buttons supported). - <tt>/usr/X11R6/lib/X11/etc/BM-Lynx.shar</tt> contains a LynxOS port - of the Linux bus mouse drivers. To install the drivers - unpack the shar archive - - <tscreen><verb> - # cd / - # bash /usr/X11R6/lib/X11/etc/BM-Lynx.shar - </verb></tscreen> - - and follow the notes in <tt>/BMOUSE.Readme</tt> for further installation and - configuration notes. - - The XFree86 PS/2 mouse driver works also with MetroLink X 2.3.3.1 as - shipped with LynxOS AT 2.4.0 unless you have the LynxOS patch - 000055-00 installed. +XFree86 includes support for PnP mice (see also <htmlurl +url="mouse.html" name="Mouse Support in XFree86">). 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. + +<sect1>PS/2 mouse drivers<p> + +LynxOS x86 comes with a PS/2 mouse driver. If it is not currently +installed on your system install it with +<tt>/usr/bin/Install.ps2mouse</tt>. Older versions of this driver +contained code to translate the PS/2 mouse protocol to the format of a +serial mouse, thus you'll have to specify "Microsoft" as the mouse +protocol format. The mouse driver contained in LynxOS x86 patchlevel +015 (and higher) does no longer perform the protocol translation an +therefore can be defined as "PS/2" protocol format. + <sect1> ATC console driver and VT switching<p> - The XFree86 servers will only run with the default LynxOS console - driver, sorry for those of you who use the alternative vdt console - driver. Currently there is no support for virtual terminal switching - once the server has started. - - You will need a free console which the X server will use for - keyboard input. You must disable login on at least one of the four - virtual terminals in <tt>/etc/ttys</tt>, e.g. <tt>/dev/atc3</tt>: +Currently there is no support for virtual terminal switching +once the server has started. Support for this feature may be added in +future versions (it requires a patch to the vt100 LynxOS terminal +driver). + +You will need a free console which the X server will use for keyboard +input. You must disable login on at least one of the four virtual +terminals in <tt>/etc/ttys</tt>, e.g. <tt>/dev/atc3</tt>: <tscreen> change @@ -189,67 +188,17 @@ <sect1>X Server debug diagnostics output and other VT peculiarities<p> - The XFree86 X servers will produce a lot of diagnostics output on - stderr during startup. This output will be lost after the server - reached a certain point in its console initialization process. You - should redirect stdout and stderr if you want to analyze the - diagnostics produced by the server. - - 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 inconsistent with what one would expect (i.e. random). - -<sect>Installing XFree86 manual pages<p><label id="installman"> - - 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). Starting with - LynxOS 2.3.0 it should compile right out of the box (or better tar archive). - - XFree86 manual pages may be installed using - - <tscreen><verb> - make install.man - </verb></tscreen> - - The index and whatis database for the XFree86 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: - - <tscreen><verb> - for i in 1 3 5 - do - rm -f /tmp/tmpfile - sort /usr/X11R6/man/cat$i/LIST$i | uniq > /tmp/tmpfile - mv /tmp/tmpfile /usr/X11R6/man/cat$i/LIST$i - done - sort /usr/X11R6/man/whatis | uniq > /tmp/tmpfile - mv /tmp/tmpfile /usr/X11R6/man/whatis - </verb></tscreen> - - With LynxOS 2.3.0 you should include <tt>/usr/X11R6/man</tt> in the MANPATH - environment variable. - - <tscreen> - bash: <tt>MANPATH=$MANPATH:/usr/X11R6/man</tt> - </tscreen> +Output made by the XFree86 X on its stdout or stderr will be lost +after the server switches to graphics mode. The XFree86 &relvers; +server stores its output in <tt>/usr/adm/XFree86.n.log</tt> (where +<tt>n</tt> is the screen number). - The man command of LynxOS 2.2.1 does not support the MANPATH - environment variable properly. The XFree86 manual pages must be - copied (or linked) to the standard manual page locations - (<tt>/usr/man/catx</tt>) in order to be read the man command: +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 inconsistent with what one would expect (i.e. random). - <tscreen><verb> - for i in 1 3 5 - do - ln -s /usr/X11R6/man/cat$i/*.* /usr/man/cat$i - cat /usr/X11R6/man/cat$i/LIST$i >> /usr/man/cat$i/LIST$i - sort -o /usr/man/cat$i/LIST$i /usr/man/cat$i/LIST$i - cat /usr/X11R6/man/cat$i/whatis$i >> /usr/man/whatis - done - </verb></tscreen> +<!-- <sect>Using XFree86 with Motif<p> The Motif libraries shipped with LynxOS AT 2.3.0 and 2.4.0 can be @@ -311,9 +260,9 @@ <sect1>Motif config file patch<p> - The file <tt>Motif.tmpl</tt> shipped with LynxOS Motif must be modified - to work with XFree86. In every reference to <tt>UnsharedLibReferences</tt> - the first argument must be changed +The file <tt>Motif.tmpl</tt> shipped with LynxOS Motif must be +modified to work with XFree86. In every reference to +<tt>UnsharedLibReferences</tt> the first argument must be changed <tscreen> from <verb> @@ -326,167 +275,126 @@ Be sure to apply the change to the file copied to <tt>/usr/X11R6/lib/X11/config</tt>. +--> + <sect>Compiling the XFree86 Distribution<p> +<!-- out of date Before trying to rebuild XFree86 from source read <htmlurl url="BUILD.html" name="Building XFree86"> for a detailed description of the build -process. The next sections contain LynxOS specific notes with +process. -->The next sections contain LynxOS specific notes with respect to the build process. - <sect1>Disk space requirements<p> Currently there is no support for shared libraries in the LynxOS XFree86 port. A complete binary installation along with manual pages -will require approximately 90-100 MBytes of disk space. To compile -the system you will need at least 230 MBytes of free disk space. +will require approximately 100 MBytes of disk space. To compile +the system you will need at least 250 MBytes of free disk space. -<sect1>Changes to system environment (LynxOS AT)<p> +<sect1>Changes to system environment (LynxOS x86)<p> Before compiling the XFree86 distribution you will have to make a few little adjustments to your system: - <descrip> - <tag>LynxOS AT 2.5</tag> - <itemize> - <item>Create a shell script named <tt>/lib/cpp</tt> as follows: - <tscreen><verb> - #!/bin/sh - /usr/lib/gcc-lib/i386-unknown-lynxos2.5/2.7-96q1/cpp \ - -traditional "$@" - </verb></tscreen> - On other platforms than the AT the paths for the compiler support - programs are different. You may use - <tscreen><verb> - gcc -v - </verb></tscreen> - to find out the correct path. Set the file mode of <tt>/lib/cpp</tt> with - <tscreen><verb> - # chown root /lib/cpp - # chmod 755 /lib/cpp - </verb></tscreen> - <item>Modify <tt>/lib/liblynx.a</tt>. The X servers need the - <tt>smem_create()</tt> system call to map the frame buffer into their - address space. The system call is in <tt>liblynx</tt> library along - with other Lynx proprietary calls which (unfortunately) overlap - with calls in <tt>libc</tt>. To reduce confusion you should modify - <tt>liblynx</tt> as follows: - <tscreen><verb> - # mv /lib/liblynx.a /lib/liblynx.a.ORG - # mkdir /tmp/xx; cd /tmp/xx - # ar xv /lib/liblynx.a.ORG - # ar rv /lib/liblynx.a *smem* - # ranlib /lib/liblynx.a - </verb></tscreen> +<itemize> +<item>If not already installed on your system create a shell script +named <tt>/lib/cpp</tt> as follows: +<tscreen><verb> + #!/bin/sh + /usr/lib/gcc-lib/i386-unknown-lynxos2.5/2.7-96q1/cpp \ + -traditional "$@" +</verb></tscreen> +On other platforms than the x86 the paths for the compiler support +programs are different. You may use +<tscreen><verb> + gcc -v +</verb></tscreen> +to find out the correct path. Set the file mode of <tt>/lib/cpp</tt> with +<tscreen><verb> + # chown root /lib/cpp + # chmod 755 /lib/cpp +</verb></tscreen> - </itemize> - <tag>LynxOS AT 2.4</tag> - <itemize> - <item>Use the CYGNUS GNU-C Compiler to build XFree86. With LynxOS - 2.4.0 you must execute the shell script <tt>/CYGNUS.bash</tt> to - apply the necessary changes to your environment. - <item>Create a shell script named <tt>/lib/cpp</tt> as follows: - <tscreen><verb> - #!/bin/sh - /cygnus/94q4-lynxos-x86/lib/gcc-lib/i386-lynx/2.6-94q4/cpp \ - -traditional "$@" - </verb></tscreen> - It is possible that future releases use a different path for - the CYGNUS compiler support programs. You may use - <tscreen><verb> - gcc -v - </verb></tscreen> - to find out the correct path. Set the file mode of <tt>/lib/cpp</tt> with - <tscreen><verb> - # chown root /lib/cpp - # chmod 755 /lib/cpp - </verb></tscreen> - </itemize> - <tag>LynxOS AT 2.3</tag> - This has actually not been tested, but the steps for described - for 2.4 should apply to 2.3 as well. - <tag>LynxOS AT 2.2.1</tag> - This has actually never been tested, be prepared that the build will - fail somewhere! - <itemize> - <item>Create a shell script named <tt>/lib/cpp</tt> as follows: - <tscreen><verb> - #!/bin/sh - /usr/local/lib/gcc-cpp -traditional "$@" - </verb></tscreen> - <item>The loader /bin/ld of LynxOS 2.2.1 does not support the -L option - which is heavily used by X11R6 makefiles. To work around this - problem you must install a small wrapper program which replaces - the original /bin/ld program. Use the following steps to install - it: - <tscreen><verb> - # cd xc/programs/Xserver/hw/xfree/etc - # cc -o ld ld-wrapper.c - # mv /bin/ld /bin/ld.org - # mv ld /bin/ld - # chmod 511 /bin/ld - # chown root /bin/ld - </verb></tscreen> - <item>Modify system header files as follows: - <descrip> - <tag><tt>/usr/include/uio.h</tt></tag> surrounded by - <tscreen><verb> - #ifndef _UIO_H - #define _UIO_H - ... - #endif - </verb></tscreen> - <tag><tt>/usr/include/utmp.h</tt></tag> surrounded by - <tscreen><verb> - #ifndef _UTMP_H - #define _UTMP_H - ... - #endif - </verb></tscreen> - <tag><tt>/usr/include/unistd.h</tt></tag> add - <tscreen><verb> - extern int read(); - </verb></tscreen> - </descrip> - </itemize> - </descrip> +<item>Modify <tt>/lib/liblynx.a</tt>. The X servers need the +<tt>smem_create()</tt> system call to map the frame buffer into their +address space. The system call is in <tt>liblynx</tt> library along +with other Lynx proprietary calls which (unfortunately) overlap with +calls in <tt>libc</tt>. To reduce confusion you should modify +<tt>liblynx</tt> as follows: + +<tscreen><verb> + # mv /lib/liblynx.a /lib/liblynx.a.ORG + # mkdir /tmp/xx; cd /tmp/xx + # ar xv /lib/liblynx.a.ORG + # ar rv /lib/liblynx.a *smem* + # ranlib /lib/liblynx.a +</verb></tscreen> +</itemize> <sect1> make World<p> - Read <htmlurl url="BUILD.html" name="Building XFree86"> before - trying to rebuild XFree86 from the source distribution. +<!-- out of date +Read <htmlurl url="BUILD.html" name="Building XFree86"> before trying +to rebuild XFree86 from the source distribution. +--> + +If you have the MTRR device driver installed, add a line - You may then issue a + <tscreen><verb> + #define HasMTRRSupport YES + </verb></tscreen> + +to the <tt>config/cf/host.def</tt> file. + +You may then issue a <tscreen><verb> make World </verb></tscreen> - to compile XFree86. After a few hours (and hopefully a successful - build of the XFree86 system) you can install the software using +to compile XFree86. After a few hours (and hopefully a successful +build of the XFree86 system) you can install the software using <tscreen><verb> make install </verb></tscreen> - You must be logged in as super-user (root) when you invoke `make - install'. Be sure to set your environment to use the same compiler - (LynxOS 2.3.0/2.4.0, CYGNUS GNU-C) as you did during the `make World'. To - install the LinkKit use +You must be logged in as super-user (root) when you invoke `make +install'. + +On LynxOS x86 2.5.0 you may encounter problems with <tt>make</tt> in +deeply nested subdirectories (eg core dumps, hangups). In this case +update to GNU make version 3.75 or higher. + +<sect1>Installing XFree86 manual pages<p><label id="installman"> + +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). + +XFree86 manual pages may be installed using <tscreen><verb> - make install.linkkit + make install.man </verb></tscreen> - With LynxOS 2.2.1 programs will not be stripped during - installation. This is due to a problem with the strip program which - shows up when installing across file system boundaries. +The index and whatis database for the XFree86 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: - Refer to section <ref id="installman" name="Installing XFree86 manual pages"> - for manual page installation. - - On LynxOS AT 2.5.0 you may encounter problems with <tt>make</tt> in - deeply nested subdirectories (eg core dumps, hangups). In this case - update to GNU make version 3.75 or higher. + <tscreen><verb> + for i in 1 3 5 + do + rm -f /tmp/tmpfile + sort /usr/X11R6/man/cat$i/LIST$i | uniq > /tmp/tmpfile + mv /tmp/tmpfile /usr/X11R6/man/cat$i/LIST$i + done + sort /usr/X11R6/man/whatis | uniq > /tmp/tmpfile + mv /tmp/tmpfile /usr/X11R6/man/whatis + </verb></tscreen> + +<!-- <sect>Building on microSPARC and PowerPC<label id="others"><p> XFree86 3.3 compiles on LynxOS microSPARC and on LynxOS PPC as well. On the @@ -539,14 +447,6 @@ The server for monochrome cards builds properly if you enable it in <tt>lynx.cf</tt> but it has never been tested (reports are welcome). +--> -<verb> -$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/LynxOS.sgml,v 3.17 1999/08/23 06:38:47 dawes Exp $ - - - - - -$XConsortium: LynxOS.sgml /main/10 1996/10/28 05:13:07 kaleb $ -</verb> </article> Index: xc/programs/Xserver/hw/xfree86/doc/sgml/NetBSD.sgml diff -u xc/programs/Xserver/hw/xfree86/doc/sgml/NetBSD.sgml:3.52 xc/programs/Xserver/hw/xfree86/doc/sgml/NetBSD.sgml:3.55 --- xc/programs/Xserver/hw/xfree86/doc/sgml/NetBSD.sgml:3.52 Wed Mar 8 16:30:58 2000 +++ xc/programs/Xserver/hw/xfree86/doc/sgml/NetBSD.sgml Wed Mar 8 16:30:58 2000 @@ -12,7 +12,7 @@ <Date>Last modified on: 20 February 2000 <ident> -$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/NetBSD.sgml,v 3.52 2000/02/21 18:05:47 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/NetBSD.sgml,v 3.55 2000/03/03 21:28:09 dawes Exp $ </ident> <toc> @@ -29,12 +29,12 @@ The sources for XFree86 are available by anonymous ftp from: -<htmlurl name="ftp://ftp.XFree86.org/pub/XFree86/snapshots/&relvers;" -url="ftp://ftp.XFree86.org/pub/XFree86/current"> +<htmlurl name="ftp://ftp.XFree86.org/pub/XFree86/&relvers;" +url="ftp://ftp.XFree86.org/pub/XFree86/&relvers;"> Binaries for NetBSD 1.3 and later are available from: -<htmlurl name="ftp://ftp.XFree86.org/pub/XFree86/snapshots/&relvers;/binaries/NetBSD" -url="ftp://ftp.XFree86.org/pub/XFree86/snapshots/&relvers;/NetBSD"> +<htmlurl name="ftp://ftp.XFree86.org/pub/XFree86/&relvers;/binaries/NetBSD" +url="ftp://ftp.XFree86.org/pub/XFree86/&relvers;/NetBSD"> A list of mirror sites is provided by @@ -51,14 +51,21 @@ <sect>Bug Reports for This Document <p> -Send email to <em/herrb@XFree86.Org/ (Matthieu Herrb) or -<em/XFree86@XFree86.org/ if you have comments or suggestions about +Send email to <email>herrb@XFree86.Org</email> (Matthieu Herrb) or +<email>XFree86@XFree86.org</email> if you have comments or suggestions about this file and we'll revise it. -<sect>New OS dependant features +<sect>New OS dependent features <p> See the <htmlurl url="RELNOTES.html" name="Release Notes"> for non-OS dependent new features in XFree86 &relvers;. + +<sect1>New OS dependent features in 4.0 +<p> +<itemize> +<item>Preliminary APM support. +</itemize> + <sect1>New OS dependent features in 3.9.18 <p> <itemize> @@ -79,8 +86,8 @@ <sect>Installing the Binaries <p> -Refer to section 5 of the <htmlurl url="RELNOTES.html" name="Release -Notes"> for detailed installation instructions. +Refer to the <htmlurl url="Install.html" name="Installation Document"> +for detailed installation instructions. <sect>Configuring X for Your Hardware @@ -318,8 +325,10 @@ <sect> Rebuilding the XFree86 Distribution <p> +<!-- out of date See <htmlurl url="INSTALL.html" name="INSTALL"> for instructions on unbundling and building the source distribution. +--> You should configure the distribution by editing <tt>xc/config/cf/host.def</tt> before compiling. To compile the Index: xc/programs/Xserver/hw/xfree86/doc/sgml/OpenBSD.sgml diff -u xc/programs/Xserver/hw/xfree86/doc/sgml/OpenBSD.sgml:1.7 xc/programs/Xserver/hw/xfree86/doc/sgml/OpenBSD.sgml:1.10 --- xc/programs/Xserver/hw/xfree86/doc/sgml/OpenBSD.sgml:1.7 Wed Mar 8 16:30:58 2000 +++ xc/programs/Xserver/hw/xfree86/doc/sgml/OpenBSD.sgml Wed Mar 8 16:30:58 2000 @@ -9,7 +9,7 @@ <Date>Last modified on: 20 February 2000 <ident> -$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/OpenBSD.sgml,v 1.7 2000/02/21 18:05:47 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/OpenBSD.sgml,v 1.10 2000/03/03 21:28:10 dawes Exp $ </ident> <toc> @@ -27,13 +27,13 @@ The sources for XFree86 &relvers; are available by anonymous ftp from: -<htmlurl name="ftp://ftp.XFree86.org/pub/XFree86/snapshots/&relvers;" -url="ftp://ftp.XFree86.org/pub/XFree86/snapshots"> +<htmlurl name="ftp://ftp.XFree86.org/pub/XFree86/&relvers;" +url="ftp://ftp.XFree86.org/pub/XFree86/&relvers;"> Binaries for OpenBSD/i386 2.6 and later are available from: -<htmlurl name="ftp://ftp.XFree86.org/pub/XFree86/snapshots/&relvers;/binaries/OpenBSD" -url="ftp://ftp.XFree86.org/pub/XFree86/snapshots/&relvers;/binaries/OpenBSD"> +<htmlurl name="ftp://ftp.XFree86.org/pub/XFree86/&relvers;/binaries/OpenBSD" +url="ftp://ftp.XFree86.org/pub/XFree86/&relvers;/binaries/OpenBSD"> A list of mirror sites is provided by <htmlurl name="ftp://ftp.XFree86.org/pub/XFree86/MIRRORS" @@ -48,14 +48,23 @@ <sect>Bug Reports for This Document <p> -Send email to <em/herrb@xfree86.org/ (Matthieu Herrb) or -<em/XFree86@XFree86.org/ if you have comments or suggestions about +Send email to <email>herrb@xfree86.org</email> (Matthieu Herrb) or +<email>XFree86@XFree86.org</email> if you have comments or suggestions about this file and we'll revise it. -<sect>New OS dependant features +<sect>New OS dependent features <p> See the <htmlurl url="RELNOTES.html" name="Release Notes"> for non-OS dependent new features in XFree86 &relvers;. + +<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. +</itemize> + <sect1>New OS dependent features in 3.9.18 <p> <itemize> @@ -75,8 +84,8 @@ <sect>Installing the Binaries <p> -Refer to section 5 of the <htmlurl url="RELNOTES.html" name="Release -Notes"> for detailed installation instructions. +Refer to the <htmlurl url="Install.html" name="Installation Document"> +for detailed installation instructions. <sect>Configuring X for Your Hardware <p> @@ -242,8 +251,10 @@ ``<tt/make/'' to link the server. See <tt>/usr/X11R6/lib/Server/README</tt> for more info. +<!-- out of date See <htmlurl url="INSTALL.html" name="INSTALL"> for instructions on unbundling and building the source distribution. +--> You should configure the distribution by editing <tt>xc/config/cf/host.def</tt> before compiling. To compile the Index: xc/programs/Xserver/hw/xfree86/doc/sgml/README.sgml diff -u xc/programs/Xserver/hw/xfree86/doc/sgml/README.sgml:3.100 xc/programs/Xserver/hw/xfree86/doc/sgml/README.sgml:3.103 --- xc/programs/Xserver/hw/xfree86/doc/sgml/README.sgml:3.100 Wed Mar 8 16:30:58 2000 +++ xc/programs/Xserver/hw/xfree86/doc/sgml/README.sgml Wed Mar 8 16:30:58 2000 @@ -1,8 +1,8 @@ <!DOCTYPE linuxdoc PUBLIC "-//XFree86//DTD linuxdoc//EN" [ <!ENTITY % defs SYSTEM "defs.ent"> %defs; <!ENTITY % onediff 'IGNORE'> <!-- patch is a single diff file --> -<!ENTITY % twodiffs 'IGNORE'> <!-- patch is split into two diff files --> -<!ENTITY % threediffs 'INCLUDE'> <!-- patch is split into three diff files --> +<!ENTITY % twodiffs 'INCLUDE'> <!-- patch is split into two diff files --> +<!ENTITY % threediffs 'IGNORE'> <!-- patch is split into three diff files --> ]> @@ -10,10 +10,10 @@ <title>README for XFree86&tm; &relvers; <author>The XFree86 Project, Inc -<date>21 February 2000 +<date>26 February 2000 <ident> -$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/README.sgml,v 3.100 2000/02/21 22:41:41 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/README.sgml,v 3.103 2000/03/08 20:36:43 dawes Exp $ </ident> <abstract> @@ -28,6 +28,7 @@ <sect>What is XFree86 &relvers;? <p> +<![ %snapshot [ XFree86 &relvers; is a ``work in progress'' snapshot of the XFree86 4.0 development code. It is <![ %latersnap; [one of]]> <![ %firstsnap; [the first in]]> @@ -48,10 +49,44 @@ been converted so far. That means that this release does not support a wide range of video hardware. Some of the drivers and new features are well developed and reasonably stable, while others are not. +]]> + +<![ %release [ +XFree86 &relvers; is <![ %firstrel; [the first]]> +<![ %laterrel; [a]]> full release of the <![ %earlyrel; [new]]> XFree86 4 +series. +The road to XFree86 4 began in mid 1997, with serious work starting in +early 1998. The first pre-4.0 snapshot was released in mid 1999, and +4.0 was released in early 2000. A lot has been completed in that time, +and even more has been started since the "4.0" design was drafted. The +result is that this release contains a lot of new features, some new +drivers, and some significant performance improvements. This release +contains components in various stages of development, ranging from stable +and well tested to new and not-so-well tested. One the other side, +there are drivers from the 3.3.x series that have not yet been ported +to XFree86 4. Most of these are for old hardware. To find more +information about which hardware is supported, see the <htmlurl +name="Driver Status document" url="Status.html">. + +XFree86 4 uses a very modular design. We had hoped to finalise and fully +document the driver module API/ABI in time for the 4.0 release, but instead +we are planning to have this done for a subsequent release. We will try +where possible to retain backward compatibility with the module interfaces +in 4.0 in future releases, but we can't make guarantees about that until +the interfaces have been fully documented. +]]> Information on this release's features and their status can be found in the <htmlurl name="Release Notes" url="RELNOTES.html">. +Information about obtaining and installing binary distributions of this +release can be found in the <htmlurl name="Installation Document" +url="Install.html">. + +Copyright and Licensing information for this release can be found in +the <htmlurl name="License Document" url="LICENSE.html">. + +<![ %snapshot [ <sect>Redistribution of the Snapshots <p> @@ -60,22 +95,35 @@ don't recommend it. We ask that if you do distribute such binaries, you make it clear that people using then should contact you for support and not XFree86. +]]> <sect>Developers <p> -If you would like to work on the development on XFree86 4.0, then it is +If you would like to work on the development of XFree86 4, then it is recommended that you <url name="join the XFree86 development team" -url="http://www.xfree86.org:/developer.html">. That way you will have access -to the latest source and to other developers. +url="http://www.xfree86.org:/developer.html">. That way you will have +access to the latest source and to other developers. <sect>How to get XFree86 &relvers; <p> +<![ %snapshot; [ XFree86 &relvers; can be found at the <url name="XFree86 ftp server" url="ftp://ftp.xfree86.org/pub/XFree86/snapshots/&relvers;/">, and at mirrors of this server. This snapshot is available primarily in source -form. Binaries for some platforms may be made available at a later time. +form. Binaries for some platforms may be made available at a later +time. +]]> + +<![ %release; [ +XFree86 &relvers; can be found at the <url name="XFree86 ftp server" +url="ftp://ftp.xfree86.org/pub/XFree86/&relvers;/">, +and at mirrors of this server. Information about obtaining and installing +binary distributions of this release can be found in the +<htmlurl name="Installation Document" url="Install.html">. Information about +obtaining the release in source form is given below. +]]> The source for version &relvers; is split into three tarballs: <tt>X&srcvers;src-1.tgz</tt>, <tt>X&srcvers;src-2.tgz</tt>, Index: xc/programs/Xserver/hw/xfree86/doc/sgml/RELNOTES.sgml diff -u xc/programs/Xserver/hw/xfree86/doc/sgml/RELNOTES.sgml:1.29 xc/programs/Xserver/hw/xfree86/doc/sgml/RELNOTES.sgml:1.37 --- xc/programs/Xserver/hw/xfree86/doc/sgml/RELNOTES.sgml:1.29 Wed Mar 8 16:30:58 2000 +++ xc/programs/Xserver/hw/xfree86/doc/sgml/RELNOTES.sgml Wed Mar 8 16:30:58 2000 @@ -6,10 +6,10 @@ <title>Release Notes for XFree86™ &relvers; <author>The XFree86 Project, Inc -<date>21 February 2000 +<date>7 March 2000 <ident> -$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/RELNOTES.sgml,v 1.29 2000/02/21 22:29:07 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/RELNOTES.sgml,v 1.37 2000/03/08 20:11:55 dawes Exp $ </ident> <abstract> @@ -21,8 +21,70 @@ <toc> +<sect>Introduction +<p> +XFree86 4.0 is the first official release of the new XFree86 4. XFree86 +4 represents a significant redesign of the XFree86 X server. It is very +important to keep in mind that XFree86 4 is still very much in development, +and it contains a lot of new work. That means two things: there is a +lot of new exciting stuff to try, but being new code, it hasn't had +nearly as much of a workout as the stable 3.3.x releases. If you're +looking for a well-tested, stable release, and can't afford the +inconveniences that new software can sometimes cause, then you are +probably better off sticking with the 3.3.x releases for now. If you +have the resources to try out the new version and investigate its +features, or if you just like being on the bleeding edge, then please +try &relvers;! + +This release isn't quite as complete as we would have liked. The main +missing pieces are a nice configuration tool and support for some of +the hardware that 3.3.x supports. The first point means that configuring +the server might be more painful than usual. The second means that your +hardware might not be supported by &relvers;, or it might be supported at a +lesser level (conversely, some hardware is better supported in &relvers;). +We've attempted to provide some information about the second point in +our <htmlurl name="Driver Status document" url="Status.html">. Please +check there first before trying &relvers;. Unfortunately that document is +still fairly basic, but it should at least give you an idea of whether +you're likely to be able to use &relvers; at all or not. + +On the subject of configuration, we have updated the basic text-based +tool "<tt>xf86config</tt>" to generate config files in the format required +by &relvers; (3.3.x config files won't really work with &relvers;). We're also +working on some other configuration tools, including one that is built-in +to the X server. An early version of this is included in the release, +and it works well for some hardware. To try it out, just run (as root) +"<tt>XFree86 -configure</tt>". Both of these configuration options will +at worst give you a reasonable starting point for a suitable configuration +file. We've put some effort into documenting the &relvers; config file format, +and you can find that information in the XF86Config manual page. Please +check that and the driver manual pages and related documentation for +further information about that. + +Oh, another thing you might notice is that our documentation is rather +patchy. Most of what is present should be in reasonable shape, but +there are gaps. We thought it better to leave out docs that were +very out of date rather than providing inaccurate and misleading +information. + +Finally, before you download and install the binary distributions for +this release, please have a quick read through the <htmlurl +name="Installation Document" url="Install.html">. It may save you some +time. + +If those cautionary notes haven't turned you away (and we certainly hope +not), please read on... The sections below describe some of the new +features and changes between 3.3.x and &relvers;. There is a lot of new +stuff, and we definitely don't have enough space to cover it all here. + +<!-- <sect>Summary of new features in &relvers; compared with &prevrelvers;. <p> +--> + +<!-- +<sect>Summary of new features in 3.9.18 compared with 3.9.17. +<p> This section contains a brief summary of what has changed since the previous snapshot. Unfortunately, only a small number of changes are listed here. For detailed information, refer to the <tt>CHANGELOG</tt> @@ -123,19 +185,20 @@ <item>Some work on adding WYSIWYG capabilities to the Xaw text widget. <item>Some preliminary support for programming modes has been added to xedit. </itemize> +--> <sect>X server <p> Unlike XFree86 3.3.x where there are multiple X server binaries, each of which drive different hardware, XFree86 &relvers; has a single X server -binary (called <tt>XFree86</tt>). This binary can either have one or +binary called <tt>XFree86</tt>. This binary can either have one or more video drivers linked in statically, or, more usually, dynamically load the video drivers and other modules that are needed. XFree86 &relvers; has X server support for most UNIX(R) and UNIX-like operating systems on Intel/x86 platforms, plus support for Linux on -Alpha and PowerPC platforms. Support for additional architectures and -operating systems is planned for future releases. +Alpha and PowerPC platforms. Work on support for additional architectures +and operating systems is in progress, and is planned for future releases. <sect1>Loader and Modules <p> @@ -149,30 +212,34 @@ that, for example, a module compiled on Linux/x86 can be loaded by an X server running on Solaris/x86, or FreeBSD, or even OS/2. One of the main benefits of this is that when modules are updated, they don't need -to be recompiled for each different operating system. +to be recompiled for each different operating system. We're planning to +take advantage of this to provide more frequent driver module updates in +between major releases. The loader in version &relvers; has support for Intel (x86), Alpha and -PowerPC platforms. It also has preliminary support for Sparc platforms. +PowerPC platforms. It also has preliminary support for Sparc platforms +but this isn't used yet. The X server makes use of modules for video drivers, X server extensions, font rasterisers, input device drivers, framebuffer layers (like mfb, cfb, etc), and internal components used by some drivers (like XAA), -The module interfaces (API and ABI) used in the snapshot releases are -subject to change without notice. This means that there is no guarantee -that modules built for one snapshot release will function with another -snapshot release. As of the 4.0 release we plan to make every effort -to provide backward compatibility for the module interfaces (that means -older modules working with newer core X server binaries). +The module interfaces (API and ABI) used in this release is still subject +to change without notice. While we'll attempt to provide backward +compatibility for the module interfaces as of the 4.0 release (meaning +that 4.0 modules will work with future core X server binaries), we can't +guarantee that this will be the case. We are planning to fully document +and stabilise the module interfaces in a future release, and at that +point backward compatibility will be easier to achieve. <bf>Note about module security</bf> <quote><p> - The XFree86 X server runs with root privileges, which means that the - X server loadable modules also run with these privileges. For this - reason we recommend that all users be careful to only use loadable - modules from reliable sources. By the time that XFree86 4.0 is - released, we hope to have implemented a method for signing/verifying - modules that we provide. + The XFree86 X server runs with root privileges, which means that + the X server loadable modules also run with these privileges. + For this reason we recommend that all users be careful to only + use loadable modules from reliable sources. We hope to have a + mechanism for signing/verifying the modules that we provide + available in a future release. </quote> @@ -182,12 +249,15 @@ The X server configuration file format has been extended to handle some of the new functionality. The <tt>xf86config</tt> utility can be used to generate a basic config file, that may require some manual editing. +The X server also has preliminary support for generating a basic config +file. This is done by running (as root) "<tt>XFree86 -configure</tt>". Alternatively, the sample config file <tt>XF86Config.eg</tt> that is installed in <tt>/usr/X11R6/lib/X11</tt> may be used as a starting point. The <tt>XF86Setup</tt> utility is currently not usable, but work is continuing in this area. -The main changes are: +The main changes are covered here, but please refer to the XF86Config +manual page for more comprehensive information: <itemize> <item>The Module section is used to load server extension modules and @@ -197,7 +267,10 @@ instead of the usual Load keyword. The <tt>bitmap</tt> module is the only font module that is loaded by default. No server extensions are loaded by default, but some are built-in to the - server. The following example shows how to load all the server + server. It is strongly recommended that the extension module + containing a range of small miscellaneous extensions (<tt>extmod</tt>) + be loaded because some commonly used things won't work correctly + without it. The following example shows how to load all the server extensions plus the Type1 and TrueType fonts support, and a commented example that shows how to pass options to an extension (this one is for loading the misc extensions (<tt>extmod</tt>) @@ -252,7 +325,7 @@ specified. Note: the value must always be enclosed in double quotes - (<tt>"</tt>). + (<tt>"</tt>), even when it is numerical. <item>The ServerFlags section now accepts its parameters as Options instead of as special keywords. The older keyword format is @@ -267,16 +340,17 @@ Option "blank time" "10" Option "standby time" "20" Option "suspend time" "30" - Option "off time" "60" + Option "off time" "40" </verb></quote> <item>The Keyboard, Pointer and XInput sections have been replaced by a more general InputDevice section. The old Keyboard and Pointer sections are still recognised for compatibility purposes, but they are deprecated and support for them may be dropped in future - releases. The keywords from the old sections are expressed as - Options in the InputDevice sections. The following example shows - typical InputDevice sections for the core mouse and keyboard. + releases. The old XInput sections are no longer recognised. + The keywords from the old sections are expressed as Options in + the InputDevice sections. The following example shows typical + InputDevice sections for the core mouse and keyboard. <quote><verb> Section "InputDevice" @@ -292,27 +366,32 @@ Driver "mouse" Option "Protocol" "PS/2" Option "Device" "/dev/mouse" - SampleRate 80 + Option "SampleRate" "80" EndSection </verb></quote> +<!-- what is this doing in the middle of information about the config file?? +j Note: Additional sample rates have been added for some mice. Matching the mouse sampling rate with the vertical refresh rate can yield very noticeable improvements in smoothness of pointer event driven operations such as window moves and scrolling. - +--> <item>The Monitor section is mostly unchanged. The main difference is that a set of VESA modes is defined internally in the server, and so for most monitors, it isn't necessary to specify any modes - explicitly in the Monitor section. The Monitor section may also + explicitly in the Monitor section. There is also a new Modes section + that can be used to define a set of modes separately from the + Monitor section, and the Monitor section may "include" them + with the "<tt>UseModes</tt>" keyword. The Monitor section may also include Options. Options that are monitor-specific, like the <tt>"DPMS"</tt> and <tt>"Sync on Green"</tt> options are best specified in the Monitor sections. <item>The Device sections are mostly unchanged. The main difference - is the new (and mandatory) Driver keyword, that specifies which + is the new (and mandatory) Driver keyword that specifies which video driver should be loaded to drive the video card. Another difference is the BusID keyword that is used to specify which of possibly multiple video cards the Device section is for. The @@ -352,14 +431,15 @@ EndSection </verb></quote> - See the document xc/programs/Xserver/hw/xfree86/doc/DESIGN for a - more detailed explanation of the new ServerLayout section syntax. +See the XF86Config man page for a more detailed explanation of the format +of the new ServerLayout section. </itemize> The config file search patch has been extended, with the directories -<tt>/etc/X11</tt> and <tt>/usr/X11R6/etc</tt> being added. +<tt>/etc/X11</tt> and <tt>/usr/X11R6/etc/X11</tt> being added. The full +search path details are documented in the XF86Config manual page. <sect1>Command Line Options @@ -458,17 +538,15 @@ <tt>-logfile</tt> <it>file</it> <quote><p> This specifies the log file name. When specified here, it - overrides the value specified in the config file. This option - is only available when the server is started by the <tt>root</tt> - user. + overrides the default value. This option is only available when + the server is started by the <tt>root</tt> user. </quote> <tt>-scanpci</tt> <quote><p> This specifies that the <tt>scanpci</tt> module should be loaded and - executed. This does a scan of the PCI bus. This option is only - available when the server is started by the <tt>root</tt> user. + executed. This does a scan of the PCI bus. </quote> @@ -521,17 +599,17 @@ Some multi-head configurations are supported in this release, primarily with multiple PCI/AGP cards. However, this is an area that is still being worked on, and we expect that the range of configurations for which -it works well will increase in future snapshots. A configuration that +it works well will increase in future releases. A configuration that is known to work well in most cases is multiple (supported) Matrox cards. One of the main problems is with drivers not sufficiently initialising -cards that were not initialised at boot time. Normally only the primary -video card gets initialised at boot time. Some combinations can be made -to work better by changing which card is the primary card (either by -using a different PCI slot, or by changing the system BIOS's preference for -the primary card). We are investigating options for ``soft-booting'' -secondary video cards to deal with this problem, and we've had some very -encouraging results. +cards that were not initialised at boot time. This has been improved +somewhat with the INT10 support that is used by most drivers (which +allows secondary card to be "soft-booted", but in some cases there are +other issues that still need to be resolved. Some combinations can be +made to work better by changing which card is the primary card (either +by using a different PCI slot, or by changing the system BIOS's preference +for the primary card). <sect1>Xinerama <p> @@ -545,15 +623,11 @@ Xinerama is not enabled by default, and can be enabled with the <tt>+xinerama</tt> command line option for the X server. -Xinerama was included with X11R6.4. The version included in this snapshot -contains many bug fixes. This is an area that we are still working on, and -we expect it to be improved further in future snapshots. +Xinerama was included with X11R6.4. The version included in this release +was completely rewritten for improved performance and correctness. Known problems: <itemize> - <item>It appears that there are still some bugs that cause unexpected - behaviour from time to time. - <item>Most (all?) window managers are not Xinerama-aware, and so some operations like window placement and resizing might not behave in an ideal way. This is an issue that needs to be dealt with @@ -562,10 +636,11 @@ </itemize> -<!-- <sect1>XVideo extension <p> ---> + +The XVideo extension is included in this release, but nobody seems +interested in writing up some information about it. <sect1>DGA version 2 <p> @@ -573,82 +648,58 @@ DGA 2.0 is nearly completed but still not implemented by all drivers. Preliminary documentation for the client libraries can be found in the xc/programs/Xserver/hw/xfree86/DGA document. Some degree of backwards -compatibility with version 1.0 is provided. +compatibility with version 1.0 is provided. This information is out of date. <sect1>DDC <p> -The VESA(R) Display Data Channel (DDC™) standard (related to, but -separate from, the VESA(R) Plug and Display standard) allows the -monitor to tell the video card (or on some cases the computer -directly) about itself; particularly the supported screen resolutions -and refresh rates. - -Partial or complete DDC support is available in the following hardware modules: -<itemize> - <item>APM - <item>Chips - <item>Cirrus - <item>Glint - <item>MGA - <item>Neomagic - <item>S3 ViRGE - <item>SIS - <item>Trident -</itemize> - -DDC is enabled by default, but can be disabled -with a "Device" section entry: -<tt>Option "NoDDC"</tt>. -We have support for DDC versions 1 and 2; these can be disabled independently -with <tt>Option "NoDDC1"</tt> and <tt>Option "NoDDC2"</tt>. +The VESA(R) Display Data Channel (DDC™) standard allows the monitor +to tell the video card (or on some cases the computer directly) about +itself; particularly the supported screen resolutions and refresh rates. + +Partial or complete DDC support is available in most of the video drivers. +DDC is enabled by default, but can be disabled with a "Device" section +entry: <tt>Option "NoDDC"</tt>. We have support for DDC versions 1 +and 2; these can be disabled independently with <tt>Option "NoDDC1"</tt> +and <tt>Option "NoDDC2"</tt>. At startup the server prints out DDC information from the display, -but it does not yet use it the determine modelines. +but it does not yet use it the determine modelines. For some drivers, +the X server's new <tt>-configure</tt> option uses the DDC information +when generating the config file. Changed behavior caused by DDC. Several drivers uses DDC information to -set the monitor gamma (brightness) curve, and the screen size and -pitch. -<itemize> - <item>The gamma is particularly noticeable; every monitor I have tried has - a gamma setting > 2, which means that the picture is much - lighter than under 3.3.x or without DDC. To revert to the previous - behavior put - - <tscreen> -Gamma 1.0 1.0 1.0 - </tscreen> - - in the appropriate "Monitor" section of the config file. - - <item>Similarly, you can override the DDC probed "dpi" value by explicitly - resetting it to the 3.3.x and non-DDC default value 75 with the - <tt>-dpi 75</tt> command line option for the X server, or by - specifying appropriate screen dimensions with the "DisplaySize" - keyword in the "Monitor" section of the config file. +set the screen size and pitch. This can be overridden by explicitly +resetting it to the and non-DDC default value 75 with the <tt>-dpi +75</tt> command line option for the X server, or by specifying appropriate +screen dimensions with the "DisplaySize" keyword in the "Monitor" section +of the config file. -</itemize> <sect1>GLX and the Direct Rendering Infrastructure (DRI) <p> <url name="Precision Insight" url="http://www.precisioninsight.com"> has been provided with funding and support from <url name="Red Hat" -url="http://www.redhat.com"> and <url name="SGI" url="http://www.sgi.com"> -to integrate the GLX extension for 3D rendering in an X11 window. The -3D core rendering component is the <url name="Mesa" -url="http://www.mesa3d.org"> library. SGI has released the sources to -the extension framework under an open license, which essentially provides -the glue between the 3D library and this windowing system. Precision -Insight has integrated these components into this XFree86 X Server and -added a Direct Rendering Infrastructure. Direct Rendering provides a -highly optimized path for sending 3D data directly to the graphics -hardware. This release <url name="demonstrates a sample implementation -of direct rendering" url="http://www.precisioninsight.com/demo.html"> -by providing a single path of 3D hardware accelerated rendering for -the GMX2000 and 3dfx voodoo graphics cards. Future releases will support -much broader implementations of hardware accelerated direct rendering on -a wide range of 3D capable graphics devices. +url="http://www.redhat.com">, <url name="SGI" url="http://www.sgi.com">, +<url name="3Dfx" url="http://www.3dfx.com">, <url name="Intel" +url="http://www.intel.com">, <url name="ATI" url="http://www.ati.com">, +and <url name="Matrox" url="http://www.matrox.com"> to integrate the GLX +extension for 3D rendering in an X11 window. The 3D core rendering +component is the <url name="Mesa" url="http://www.mesa3d.org"> library. +SGI has released the sources to the GLX extension framework under an +open license, which essentially provides the glue between the 3D +library and this windowing system. Precision Insight has integrated +these components into the XFree86 X Server and added a Direct Rendering +Infrastructure (DRI). Direct Rendering provides a highly optimized +path for sending 3D data directly to the graphics hardware. This +release provides a complete implementation of direct rendering support +for the 3Dfx Banshee and Voodoo3 graphics cards. Additional direct +rendering drivers will be available for 3Dfx, Intel, ATI and Matrox +boards during the second quarter of 2000. Updated information on DRI +compatible drivers can be found at the <url name="DRI Project" +url="http://dri.sourceforge.net"> on <url name="SourceForge" +url="http://www.sourceforge.net">. <sect1>X-Video Extension (Xv) <p> @@ -664,7 +715,7 @@ <p> The XFree86-Misc extension has not been fully ported to the new server -architecture yet. This should be completed in a future snapshot. +architecture yet. This should be completed in a future release. The XFree86-VidModeExtension extension has been updated, and mostly ported to the new server architecture. The area of mode validation @@ -673,7 +724,7 @@ modes where this is possible. The new <tt>xgamma</tt> utility makes use of this feature. Compatibility with the 3.3.x version of the extension is provided. The missing parts of this extension and some -new features should be completed in a future snapshot. +new features should be completed in a future release. <sect1>Drivers @@ -692,7 +743,7 @@ <tabrow><tt>cyrix</tt> (*)<colsep>Cyrix MediaGX</tabrow> <tabrow><tt>fbdev</tt><colsep>Linux fbdev</tabrow> <tabrow><tt>glide</tt><colsep>Glide2x (3Dfx)</tabrow> - <tabrow><tt>glint</tt><colsep>3Dlabs</tabrow> + <tabrow><tt>glint</tt><colsep>3Dlabs, TI</tabrow> <tabrow><tt>i740</tt><colsep>Intel i740</tabrow> <tabrow><tt>i810</tt><colsep>Intel i810</tabrow> <tabrow><tt>mga</tt><colsep>Matrox</tabrow> @@ -716,28 +767,13 @@ <sect2>APM <label id="apm"> <p> -It's the driver for Alliance AT3D/AT25 and AT24 chips. There is a rather +This is the driver for Alliance AT3D/AT25 and AT24 chips. There is a rather complete support for the functions with acceleration at 8,15,16,24 and 32 bits (limited by the chip at 24bpp). There is preliminary, still buggy, support for the AP6422 chip, which is still supported in 3.3.x servers. The Xv driver is almost ok. The Rush extension for glide2x works, with some additions, including overlay of the result. DGA and DGA2 have been tested ok. - -Main useful options: -<descrip> -<tag>SetMclk</tag> - to set the memory clock (default should be OK). -<tag>SWCursor</tag> - to force the software cursor. -<tag>HWCursor</tag> - to force the hardware cursor. -<tag>NoAccel</tag> - to disable (XAA) acceleration. -<tag>ShadowFB</tag> - to enable shadow framebuffer operation (the rendering is done in - system memory and then copied to the framebuffer, useful when - acceleration is disabled). -</descrip> +Further information can be found in <htmlurl name="README.apm" url="apm.html">. <sect2>Chips & Technologies <p> @@ -748,7 +784,7 @@ <sect2>s3virge <p> -The s3virge driver is a port of the 3.3.3.1 SVGA S3 ViRGE driver. As +The s3virge driver is a port of the 3.3.x SVGA S3 ViRGE driver. As such it should be as stable and functional as previous XFree86 releases. There are a couple additional benefits included primarily due to common enhancements: @@ -762,6 +798,9 @@ <item>Multi-head is reported to work. <item>The <tt>s3virge</tt> man page lists options and has configuration notes for this release of the driver. + <item>Trio 3D and Trio 3D/2X support has been added, matching the 3.3.6 + driver. + <item>Supports screen rotation and shadow framebuffer. </itemize> @@ -771,6 +810,9 @@ <item>DGA support is implemented, but preliminary and untested. </itemize> +Further information can be found in <htmlurl name="README.s3virge" +url="s3virge.html">. + <sect2>TGA <p> @@ -784,13 +826,12 @@ The MGA driver supports the same range or hardware as XFree86 3.3.4, but has a number of enhancements including multi-head support and -support for overlays (8-bit + 24-bit). +support for (non-destructive) overlays (8-bit + 24-bit). Option <tt>"overlay"</tt> when the server is started in 32bpp (<tt>-fbbpp 32</tt>) will enable the 8+24 mode. The current implementation doesn't optimize away unnecessary exposures yet so the -performance of this option will be better in future snapshots. The -option is not supported on the G100 due to a missing hardware feature. +performance of this option will be better in future release. By default, the color key for the overlays is 255, but this can be changed with the <tt>"ColorKey"</tt> option to work around problems in specific programs. Valid values for the key are 2-255. @@ -807,15 +848,13 @@ Information about the ATI driver can be found in <url name="README.ati" url="ati.html">. The current version is not accelerated. Acceleration -support is planned for a future snapshot. +support is planned for a future release. <sect2>NVIDIA <p> The "nv" driver supports all Riva TNT accelerators as well as the -new GeForce and Quadro accelerators. 3.9.17 adds DGA 2.0 support -and performance improvements as well as resolving some rendering -correctness issues. +new GeForce and Quadro accelerators. DGA 2.0 support is included. Further information can be found in the nv man page. @@ -842,6 +881,18 @@ For Voodoo Banshee and Voodoo 3 boards or later: Please use the tdfx driver which talks directly to the hardware and is much faster. +<sect2>GLINT <label id="glint"> +<p> + +The "glint" driver supports most 3Dlabs/Texas Instruments GLINT/Permedia +chips. There is a rather complete support (better than in 3.3.x) for +acceleration at 8, 15, 16, and 24 bit depths (limited by some chips at +some depths). 8+24 overlay is supported. The Xv extension is supported +for some boards. + +Further information about this driver can be found in the 'glint' driver +man page. + <sect>X libraries and clients <p> @@ -903,11 +954,13 @@ </itemize> - <item>This snapshot shows the current state of the work to add to the Xaw +<!-- is this still true? + <item>This release shows the current state of the work to add to the Xaw text widget WYSIWYG capabilities. The state is very initial, and can be seen as a candidate to a candidate to a very early alpha snapshot. There is no public interface for programming yet, because the current one is very likely to change before ready to use. +--> </itemize> @@ -1177,15 +1230,17 @@ </itemize> <item>A first tentative to add programming modes was done. Currently, there - are two modes: + is one mode: <itemize> <item><bf>C-mode:</bf> this mode is expected to be stable, and fully usable. +<!-- This was removed, right? <item><bf>Html-mode:</bf> a lot of work needs to be done yet. It is included in this snapshot only to show what the new text widget capabilities can do. +--> </itemize> </itemize> @@ -1235,17 +1290,36 @@ The glyph metrics array, which all the X clients using a particular font have access to, is now placed in shared memory, so as to reduce redundant memory consumption. For non-local clients, the glyph metrics array is -trasmitted in a compressed format. +transmitted in a compressed format. -<sect1>Unicode support +<sect1>Unicode/ISO 10646 support <p> What is included: <itemize> - <item>ISO 10646-1 extension of ``fixed'' BDF fonts added that cover - over 2000 characters including all Latin, Greek, Cyrillic, - Armenian, and Gregorian characters, plus numerous scientific - and technical symbols (further fonts are under preparation). + <item>All ``-misc-fixed-*'' BDF fonts are now available in the + ISO10646-1 encoding and cover at least the 614 characters + found in ISO 8859-{1-5,7-10,14,15}, CP1252, and MES-1. The + non-bold fonts also cover all Windows Glyph List 4 (WGL4) + characters, including those found in all 8-bit MS-DOS/Windows + code pages. The 8-bit variants of the ``-misc-fixed-*'' BDF + fonts (ISO8859-1, ISO8859-2, KOI8-R, etc.) have all been + automatically generated from the new ISO10646-1 master fonts. + + <item>Some ``-misc-fixed-*'' BDF ISO10646-1 fonts now cover a + comprehensive Unicode repertoire of over 3000 characters + including all Latin, Greek, Cyrillic, Armenian, Gregorian, + Hebrew, IPA, and APL characters, plus numerous scientific, + typographic, technical, and backwards-compatibility + symbols. Some of these fonts also cover Arabic, Ethiopian, + Thai, Han/Kanji, Hangul, full ISO 8859, and more. For the 6x13 + font there is now a 12x13ja Kanji extension and for the 9x18 + font there is a 18x18ja Kanji/Han/Hangul extension, which + covers all ISO-2022-JP-2 (RFC 1554) characters. The 9x18 font + can also be used to implement simple combining characters by + accent overstriking. For more information, read Markus Kuhn's + <url name="UTF-8 and Unicode FAQ" + url="http://www.cl.cam.ac.uk/~mgk25/unicode.html">. <item>Mark Leisher's ClearlyU proportional font (similar to Computer Modern). @@ -1262,19 +1336,39 @@ Known problems: <itemize> - <item>Xlib does not yet support UTF-8 as a locale, which means that + <item>Xlib does not yet fully support UTF-8 as a locale, which means that xterm UTF-8 keyboard support is at the moment a temporary hack. - <item>ISO 10646-1 cell-spaced fonts such as ``fixed'' work nicely, but - mono-spaced and proportional fonts are handled inefficiently - by the X protocol, resulting in metrics for 64k glyphs even if - only 2000 glyphs are used. - - <item>ISO 10646 Level 2 combining characters not yet supported by - xterm (will be needed for instance for the Thai script). + <item>Most ISO10646-1 fonts encode no characters above U+31FF. This + avoids the inefficient allocation and transmission of a + >700 kB large XFontStruct structure, which would happen if the + (not very important) ligatures and symbols above U+f000 were + present. + + <item>ISO 10646 Level 2 combining characters are not yet supported by + xterm (will be needed for instance for Thai and IPA). + + <item>Switching between a half-width and full-width font pair (such + as 9x18 and 18x18ja) is not yet supported by xterm (will be + needed for CJK scripts). </itemize> +<sect1>Lucidux fonts from Bigelow and Holmes +<p> + +XFree86 now includes the ``Lucidux'' family of professionally hinted +Type 1 fonts. This family consists of the fonts ``Lucidux Serif'', +``Lucidux Sans'' and ``Lucidux Mono'' in Roman and oblique variants, +and includes over 370 glyphs in each font covering among others the +glyphs needed for ISO 8859-1, 2, 3, 4, 9 and 15. Bold variants will be +included in a future release. The design and font outlines were donated +by Charles Bigelow and Kris Holmes from Bigelow and Holmes Inc., and +the hinting was donated by Berthold Horn and Blenda Horn from Y&Y, Inc. +For more information, please contact +<email>design@bigelowandholmes.com</email> or +<email>sales@yandy.com</email>, or consult <url name="Y&Y's web site" +url="http://www.yandy.com">. <sect>Miscellaneous <p> @@ -1283,11 +1377,16 @@ <p> Some changes to the installed XFree86 directory structure have been -planned for 4.0. Not all of these changes have been implemented in this -snapshot, and they will appear in a future snapshot. One important -change that has been implemented is a modified search path for the X +implemented for 4.0. +One important +change is a modified search path for the X server's <tt>XF86Config</tt> file. The details of this can be found -above in the <ref id="config" name="Configuration File"> section. +in the XF86Config manual page. The other main change is moving +most of the run-time configuration files to <tt>/etc/X11</tt>, with +symbolic links in the old <tt>/usr/X11R6/lib/X11</tt> location pointing +to the new location. Some run-time generated files are now located +under the appropriate subdirectories of <tt>/var</tt>, again with the +relevant symbolic links in the old location. Index: xc/programs/Xserver/hw/xfree86/doc/sgml/SiS.sgml diff -u xc/programs/Xserver/hw/xfree86/doc/sgml/SiS.sgml:3.6 xc/programs/Xserver/hw/xfree86/doc/sgml/SiS.sgml:3.7 --- xc/programs/Xserver/hw/xfree86/doc/sgml/SiS.sgml:3.6 Wed Oct 13 00:21:08 1999 +++ xc/programs/Xserver/hw/xfree86/doc/sgml/SiS.sgml Wed Mar 8 16:30:58 2000 @@ -6,11 +6,11 @@ <!-- Title information --> <title>Information for SiS Users -<author>Juanjo Santamarta (<it>santamarta@ctv.es</it>) -<date>17 April 1999 +<author>Juanjo Santamarta (<email>santamarta@ctv.es</email>) +<date>5 March 2000 <ident> -$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/SiS.sgml,v 3.6 1999/10/13 04:21:08 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/SiS.sgml,v 3.7 2000/03/06 22:59:24 dawes Exp $ </ident> <!-- Table of contents --> @@ -30,6 +30,7 @@ <item>XAA support (XFree86 Acceleration Architecture) </itemize> +<!-- this is incorrect <sect> Supported chips <p> <quote> @@ -40,14 +41,13 @@ SiS 86C201 and 86C202 based cards don't work with this driver. Color expansion is not supported by the engine in 16M-color graphic mode. +--> <sect> XF86Config Options <p> -The following options are of particular interest for the SiS driver. Each of -them must be specified in the `svga' driver section of the XF86Config file, -within the Screen subsections of the depths to which they are applicable -(you can enable options for all depths by specifying them in the Device -section). +The following options are of particular interest for the SiS +driver. Each of them must be specified in the Device section of the +XF86Config file for this card. <descrip> <tag>Option "SetMclk"</tag> @@ -62,6 +62,7 @@ This option lets you to modify the maximum allowed dotclock). <tag>Option "sw_cursor", "hw_cursor"</tag> The default is for using the hardware cursor. +<!-- Which of these chips is even supported? --> <tag>Option "Turboqueue"</tag> 5597/8 and 6326 have the option to extend the engine command queue on VRAM. With extended queue length, the driver only checks queue status @@ -75,6 +76,17 @@ Enables 1 cycle memory access. Try it. Increased memory bandwidth reduces the possibility of glitches and noise on high resolution modes. +<tag>Option "PciRetry"</tag> + +<tag>Option "NoAccel"</tag> + Disables various hardware accelerations. + +<tag>VideoRAM size</tag> The SiS chips can only directly address 4096K + bytes of video RAM. Some video cards using these chips are + shipped with additional video RAM. The videoRAM must be + explicitly limited to 4096 for those cards. Attempting to use + the additional RAM leads to a variety of scrambled screen + artifacts. </descrip> @@ -106,8 +118,10 @@ <sect> Troubleshooting <p> +<!-- don't have XF86Setup for 4.0 The generic VGA driver don't work with 6326, so XF86Setup can't be used for this card. Please use xf86config instead. +--> Some video modes with high dot-clocks don't work at all, resulting on black screen. Lowering dotclock in that case could solve the problem. Index: xc/programs/Xserver/hw/xfree86/doc/sgml/Status.sgml diff -u xc/programs/Xserver/hw/xfree86/doc/sgml/Status.sgml:1.13 xc/programs/Xserver/hw/xfree86/doc/sgml/Status.sgml:1.15 --- xc/programs/Xserver/hw/xfree86/doc/sgml/Status.sgml:1.13 Wed Mar 8 16:30:58 2000 +++ xc/programs/Xserver/hw/xfree86/doc/sgml/Status.sgml Wed Mar 8 16:30:59 2000 @@ -6,10 +6,10 @@ <title>Driver Status for XFree86™ &relvers; <author>The XFree86 Project, Inc -<date>12 February 2000 +<date>3 March 2000 <ident> -$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/Status.sgml,v 1.13 2000/02/21 22:29:08 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/Status.sgml,v 1.15 2000/03/03 21:28:10 dawes Exp $ </ident> <abstract> @@ -89,7 +89,6 @@ Support (including acceleration?) for the AT24, AT25 and AT3D. This support is provided by the "apm" driver. This driver currently has only incomplete support for the AP6422. - NEED TO CHECK IF THESE CARDS WILL WORK WITH fbdev. <tag>Summary:</tag> The AP6422 is supported in &legacyvers; but not fully in @@ -109,7 +108,6 @@ <tag>&relvers;:</tag> No native support for these chipsets, because the old driver has not been ported. - NEED TO CHECK IF THESE CARDS WILL WORK WITH fbdev. <tag>Summary:</tag> No ARK Logic chips are supported in &relvers;. @@ -161,7 +159,6 @@ <tag>&relvers;:</tag> No native support for these chipsets, because the old drivers have not been ported. - NEED TO CHECK IF THESE CARDS WILL WORK WITH fbdev. <tag>Summary:</tag> No Avance Logic chips are supported in &relvers;. @@ -203,7 +200,6 @@ Support (accelerated) for the Alpine (5430, 5434, 5436, 5446, 5480), and Laguna (5462, 5464, 5465) chips is provided by the "cirrus" driver. - NEED TO CHECK IF THE OTHERS WILL WORK WITH fbdev. <tag>Summary:</tag> The following chips are supported in &legacyvers; but not in @@ -249,7 +245,6 @@ <tag>&relvers;:</tag> A preliminary port of the driver is available, but it isn't ready for widespread use. - NEED TO CHECK IF THESE CARDS WILL WORK WITH fbdev. <tag>Summary:</tag> No Cyrix chips are well-supported in &relvers;. @@ -266,7 +261,6 @@ <tag>&relvers;:</tag> No native support for this chipset, because the old driver has not been ported. - NEED TO CHECK IF THESE CARDS WILL WORK WITH fbdev. <tag>Summary:</tag> No Epson chips are supported in &relvers;. @@ -285,7 +279,6 @@ <tag>&relvers;:</tag> No native support for this chipset, because the old driver has not been ported. - NEED TO CHECK IF THESE CARDS WILL WORK WITH fbdev. <tag>Summary:</tag> No Genoa chips are supported in &relvers;. @@ -328,7 +321,6 @@ <tag>&relvers;:</tag> No native support for these chipsets, because the old driver has not been ported. - NEED TO CHECK IF THESE CARDS WILL WORK WITH fbdev. <tag>Summary:</tag> No IIT chips are supported in &relvers;. @@ -347,12 +339,13 @@ <tag>&relvers;:</tag> Support (accelerated) for the Intel i740 is provided by the - "i740" driver. The i810 driver has not yet been ported and/or - contributed. + "i740" driver, and support for the Intel i810 is provided by + the "i810" driver. The "i810" driver is currently Linux-only, + and requires the agpgart.o kernel module. <tag>Summary:</tag> - The i740 is supported in both version, but the i810 is not supported - in &relvers; or on non-Linux/x86 platforms. + The i740 and i810 are supported in both versions, but the i810 is + only supported on Linux/x86 platforms at present. </descrip> @@ -387,7 +380,6 @@ <tag>&relvers;:</tag> No native support for this chipset, because the old driver has not been ported. - NEED TO CHECK IF THESE CARDS WILL WORK WITH fbdev. <tag>Summary:</tag> No MX (???) chips are supported in &relvers;. @@ -406,7 +398,6 @@ <tag>&relvers;:</tag> No native support for this chipset, because the old driver has not been ported. - NEED TO CHECK IF THESE CARDS WILL WORK WITH fbdev. <tag>Summary:</tag> No NCR chips are supported in &relvers;. @@ -462,7 +453,6 @@ <tag>&relvers;:</tag> No native support for these chipsets, because the old driver has not been ported. - NEED TO CHECK IF THESE CARDS WILL WORK WITH fbdev. <tag>Summary:</tag> No Number Nine chips are supported in &relvers;. @@ -480,7 +470,6 @@ <tag>&relvers;:</tag> No native support for these chipsets, because the old driver has not been ported. - NEED TO CHECK IF THESE CARDS WILL WORK WITH fbdev. <tag>Summary:</tag> No Oak chips are supported in &relvers;. @@ -500,7 +489,6 @@ <tag>&relvers;:</tag> No native support for these chipsets, because the old driver has not been ported. - NEED TO CHECK IF THESE CARDS WILL WORK WITH fbdev. <tag>Summary:</tag> No Paradise/Western Digital chips are supported in &relvers;. @@ -519,7 +507,6 @@ <tag>&relvers;:</tag> No native support for these chipsets, because the old driver has not been ported. - NEED TO CHECK IF THESE CARDS WILL WORK WITH fbdev. <tag>Summary:</tag> No RealTek chips are supported in &relvers;. @@ -587,9 +574,8 @@ there are some problems with it in this version. <tag>Summary:</tag> - Support for the older (CHECK: are they all older than the - supported chips?) chips: 86C201, 86C202 and 620, - is only available in &legacyvers;. + Support for the 86C201, 86C202, 86C215, 86C225, 5597 and 5598 + is currently only available in &legacyvers;. </descrip> @@ -604,7 +590,6 @@ <tag>&relvers;:</tag> No native support for these chipsets, because the driver has not been ported. - NEED TO CHECK IF THESE CARDS WILL WORK WITH fbdev. <tag>Summary:</tag> No SMI chips are supported in &relvers;. @@ -632,7 +617,6 @@ Cyber9397, Cyber9520, Cyber9397/DVD, Cyber9525/DVD, 3DImage975, 3DImage875, Blade3D, CyberBlade/i7, CyberBlade/DSTN/i7 and CyberBlade/i1 is provided by the "trident" driver. - NEED TO CHECK IF THE OTHERS WILL WORK WITH fbdev. <tag>Summary:</tag> The following (older) chipsets that are supported in &legacyvers; @@ -676,7 +660,6 @@ <tag>&relvers;:</tag> No native support for these chipsets, because the old driver has not been ported. - NEED TO CHECK IF THESE CARDS WILL WORK WITH fbdev. <tag>Summary:</tag> No Video 7 chips are supported in &relvers;. @@ -694,7 +677,6 @@ <tag>&relvers;:</tag> No native support for these chipsets, because the old drivers have not been ported. - NEED TO CHECK IF THESE CARDS WILL WORK WITH fbdev. <tag>Summary:</tag> No Weitek chips are supported in &relvers;. Index: xc/programs/Xserver/hw/xfree86/doc/sgml/VGADriv.sgml diff -u xc/programs/Xserver/hw/xfree86/doc/sgml/VGADriv.sgml:3.14 xc/programs/Xserver/hw/xfree86/doc/sgml/VGADriv.sgml:removed --- xc/programs/Xserver/hw/xfree86/doc/sgml/VGADriv.sgml:3.14 Fri Mar 20 16:06:26 1998 +++ xc/programs/Xserver/hw/xfree86/doc/sgml/VGADriv.sgml Wed Mar 8 16:30:59 2000 @@ -1,916 +0,0 @@ -<!DOCTYPE linuxdoc PUBLIC "-//XFree86//DTD linuxdoc//EN"> - -<article> - -<title> How to add an (S)VGA driver to XFree86 -<author> Copyright (c) 1993, 1994 David E. Wexelblat - <tt/<dwex@XFree86.org>/ -<date> Issue 1.3 - May 29, 1994 - -<toc> - -<sect> Introduction <p> -Adding support for a new SVGA chipset to XFree86 is a challenging project -for someone who wants to learn more about hardware-level programming. It -can be fraught with hazards (in particular, crashing the machine is all too -common). But in the end, when the server comes up and functions, it is -immensely satisfying. - -Adding support for an SVGA chipset does not change any of the basic -functioning of the server. It is still a dumb 8-bit PseudoColor server or -1-bit StaticGray server. Adding support for new hardware (e.g. accelerated -chips) is a major undertaking, and is not anywhere near formalized enough yet -that it can be documented. - -Nonetheless, the driver-level programming here is a good introduction. And -can well be the first step for adding support for an accelerated chipset, as -many are SVGA-supersets. Writing an SVGA-level driver for the chipset can -provide a stable development platform for making use of new features (in fact, -this has been done for the S3, Cirrus, and WD accelerated chipsets, for -internal use as the accelerated servers are developed for XFree86 2.0). - -Now let's get down to it. In addition to this documentation, a stub driver has -been provided. This should provide you a complete framework for your new -driver. Don't let the size of this document persuade you that this is an -overly difficult task. A lot of work has been put into making this document -as close to complete as possible; hence it should, in theory, be possible to -use this as a cookbook, and come out with a working driver when you reach the -end. I do advise that you read it all the way through before starting. - -<sect> Getting Started <p> -The first step in developing a new driver is to get the documentation for -your chipset. I've included a list of vendor contact information that I have -collected so far (it's far from complete, so if you have any that isn't on -the list, please send it to me). You need to obtain the databook for the -chipset. Make sure that the person you speak to is aware that you intend to -do register-level programming (so they don't send you the EE-style datasheet). -Ask for any example code, or developer's kits, etc. I've learned that at the -SVGA level, in general, a databook that lists and describes the registers is -the most you can hope to find. - -If you are not familiar with VGA register-level programming, you should get -(and read!) a copy of Richard Ferraro's bible (see references below). The -best way to understand what is happening in the server is to study the -workings of the monochrome server's ``generic'' server, and compare it with -the documentation in Ferraro's book (be aware that there are a few errors -in the book). You can find the generic-VGA-register handling functions in -the file ``vgaHW.c''. - -Once you understand what's happening in the generic server, you should study -one or more of the existing SVGA drivers. Obtain the databook for a supported -SVGA chipset, and study the documentation along with the code. When you have -a good understanding of what that driver does over and above the generic VGA, -you will know what information you need to obtain from the databook for the -new chipset. Once you have this information, you are ready to begin work on -your new driver. - -<sect> Directory Tree Structure <p> -Here is an outline of the directory tree structure for the source tree. -Only directories/files that are relevant to writing a driver are presented. -The structure for the Link Kit is presented below. - -<descrip> -<tag>xc/config/cf/</tag> - <descrip> - <tag>site.def</tag> - Local configuration customization - <tag>xf86site.def</tag> - XFree86 local configuration customization - </descrip> - -<tag>xc/programs/Xserver/hw/xfree86/</tag> - The server source - <descrip> - <tag>common/</tag> - Files common to all of the server (XF86Config - parser, I/O device handlers, etc) - <descrip> - <tag>xf86.h</tag> - Contains the `ScrnInfoRec' data structure - <tag>xf86_Option.h</tag> - Contains option flags - <tag>compiler.h</tag> - Contains in-line assembler macros and - utility functions - </descrip> - <tag>os-support/</tag> OS-support layer - <descrip> - <tag>assyntax.h</tag> - Contains macro-ized assembler mnemonics - <tag>xf86_OSlib.h</tag> - OS-support includes, defines, and prototypes - </descrip> - <tag>LinkKit/</tag> - <descrip> - <tag>site.def.LK</tag> - Template for Link Kit site.def - </descrip> - <tag>vga256/</tag> 256-color VGA server directories - <descrip> - <tag>vga/</tag> - The generic VGA handling code - <descrip> - <tag>vga.h</tag> - Contains the `vgaVideoChipRec' and `vgaHWRec' - data structures - <tag>vgaHW.c</tag> - Contains the generic-VGA-register handling - functions <bf>vgaHWInit()</bf>, - <bf>vgaHWSave()</bf> and - <bf>vgaHWRestore()</bf>. - </descrip> - <tag>drivers/</tag> Contains the SVGA driver subdirectories. - Each contains an Imakefile, a .c file for - the driver, and a .s file for the bank- - switching functions. - </descrip> - <tag>vga2/</tag> - The monochrome vga server directories. Most of - the files are linked from vga256, and the - differences handled by conditional compilation. - <descrip> - <tag>drivers/</tag> - The SVGA driver subdirectories. The `generic' - VGA driver is also located here. - </descrip> - <tag>vga16/</tag> - The 16-color vga server directories. Most of - the files are linked from vga256, and the - differences handled by conditional compilation. - <descrip> - <tag>drivers/</tag> The SVGA driver subdirectories. - </descrip> - <tag>VGADriverDoc/</tag> This documentation and the stub driver. - </descrip> -</descrip> -The Link Kit is usually installed in /usr/X11R6/lib/Server. -The Link Kit -contains everything that is needed to relink the server. It is possible -to write a new driver and build a new server without having even the server -source installed. -<descrip> -<tag>Server/</tag> - <descrip> - <tag>site.def</tag> - Local configuration customization - <tag>include/</tag> - All of the include files listed under the - `common' directory above - <tag>drivers/</tag> - All of the SVGA drivers - <descrip> - <tag>vga2/</tag> The SVGA driver subdirectories. - <tag>vga16/</tag> The SVGA driver subdirectories. - <tag>vga256/</tag> The SVGA driver subdirectories. - </descrip> - <tag>VGADriverDoc/</tag> The directory with this documentation and - the stub driver. `vgaHW.c' is also copied - here, for reference (it is not built as - part of the Link Kit). - </descrip> -</descrip> - -<sect> Setting Up The Build Information <p> - This section describes the peripheral configuration and build steps that -must be performed to set up for your new driver. The steps are the same -whether you are building from the source tree of from the Link Kit; only -the locations of the files is different. Here are the configuration steps -that must be followed: - -<enum> -<item> Choose the name for your driver subdirectory and data structures. - Since the current driver scheme allows (in fact, encourages) - putting drivers for multiple related chipsets in a single driver, - it is usually best to use the vendor name, rather than a chipset - version. The fact that older XFree86 drivers do not follow this - convention should not deter you from using it now - most of that - code was developed before the driver interface had been made - flexible and extensible. - - For this documentation, we'll use chips from the SuperDuper Chips - vendor. Hence, we'll use `sdc' for the name of the driver. - -<item> Decide whether your driver will support the color server, the - monochrome server, or both. For this documentation, we will - assume that both the color and monochrome servers will be - supported. If you intend to support only the color server, the - steps for the monochrome server can be ignored. If you intend - to support only the monochrome server, the steps for the color - server listed should be performed for the monochrome server, - and the monochrome steps ignored. Most of the existing drivers - support only the color or both servers; the ``generic'' driver is - the only driver (currently) that supports just the monochrome - server. - -<item> Create your driver directories: - - <itemize> - <item>If you are working in the source tree, create the - following directories: - -<verb> - xc/programs/Xserver/hw/xfree86/vga256/drivers/sdc - xc/programs/Xserver/hw/xfree86/vga16/drivers/sdc - xc/programs/Xserver/hw/xfree86/vga2/drivers/sdc -</verb> - - <item>If you are working in the Link Kit, create the - following directories: - -<verb> - /usr/X11R6/lib/Server/drivers/vga256/sdc - /usr/X11R6/lib/Server/drivers/vga16/sdc - /usr/X11R6/lib/Server/drivers/vga2/sdc -</verb> - </itemize> - -<item> Set up the Imakefile parameters to cause your driver to be - built: - - <itemize> - <item>If you are working in the source tree: - <enum> - <item>Edit the file xc/config/cf/xfree86.cf, - and add - `sdc' to the list for the definitions for - `XF86Vga256Drivers', `XF86Vga16Drivers' and - `XF86Vga2Drivers'. - You should put `sdc' just before `generic' in the - list (i.e. second last), to ensure that none of the - other driver's probe functions incorrectly detect - the `sdc' chipset . - <item>Edit the file xc/config/cf/xf86site.def, - and add - the same entries in this file (this is just a - comment that shows the default values). - <item>Edit the site.def.LK file in - xc/programs/Xserver/hw/xfree86/LinkKit/, - and add the same entries in this file. This is - the prototype `site.def' file that will be - installed in the Link Kit. - </enum> - - <item>If you are working in the Link Kit, edit the file - /usr/X11R6/lib/Server/site.def, and add `sdc' to - the `XF86Vga256Drivers', `XF86Vga16Drivers' and - `XF86Vga2Drivers' definitions as described in (a) above. - </itemize> -<item> Now copy the prototype files into your new directories: - <itemize> - <item>If you are working in the source tree, copy the `stub' - files as follows (directories are below xc/programs/Xserver): - <descrip> - <tag>Imakefile.stub =></tag> - hw/xfree86/vga256/drivers/sdc/Imakefile - <tag>stub_driver.c =></tag> - hw/xfree86/vga256/drivers/sdc/sdc_driver.c - <tag>stub_bank.s =></tag> - hw/xfree86/vga256/drivers/sdc/sdc_bank.s - <tag>Imakefile.stub =></tag> - hw/xfree86/vga16/drivers/sdc/Imakefile - (then edit this Imakefile and make the changes - described in the comments). - <tag>Imakefile.stub =></tag> - hw/xfree86/vga2/drivers/sdc/Imakefile - (then edit this Imakefile and make the changes - described in the comments). - </descrip> - <item>If you are working in the Link Kit, copy the `stub' files - as follows: - <descrip> - <tag>Imakefile.stub => </tag> - /usr/X11R6/lib/Server/drivers/vga256/sdc/Imakefile - <tag>stub_driver.c => </tag> - /usr/X11R6/lib/Server/drivers/vga256/sdc/sdc_driver.c - <tag>stub_bank.s => </tag> - /usr/X11R6/lib/Server/drivers/vga256/sdc/sdc_bank.s - <tag>Imakefile.stub => </tag> - /usr/X11R6/lib/Server/drivers/vga16/sdc/Imakefile - (then edit this Imakefile and make the changes - described in the comments). - <tag>Imakefile.stub => </tag> - /usr/X11R6/lib/Server/drivers/vga2/sdc/Imakefile - (then edit this Imakefile and make the changes - described in the comments). - </descrip> - </itemize> -<item> Edit each of the files you've just copied, and replace `stub' - with `sdc' and `STUB' with `SDC' wherever they appear. -</enum> -That's all the prep work needed. Now it's time to work on the actual driver. - -<sect> The Bank-Switching Functions <p> -The normal VGA memory map is 64k starting at address 0xA0000. To access -more than 64k of memory, SuperVGA chipsets implement ``bank switching'' - -the high-order address bits are used to select the bank of memory in which -operations will take place. The size and number of these banks varies, -and will be spelled out in the chipset documentation. A chipset will -have zero, one or two bank registers. Likely the ONLY case of zero bank -registers is a generic VGA, and hence is not a concern. - -Note that some of the newer chipsets (e.g. Trident 8900CL, Cirrus) allow -for a linear mapping of the video memory. While using such a scheme would -improve the performance of the server, it is not currently supported. Hence -there is no way to use such features for a new chipset. - -Most SVGA chipsets have two bank registers. This is the most desirable -structure (if any banking structure can be called ``desirable''), because -data can be moved from one area of the screen to another with a simple -`mov' instruction. There are two forms of dual-banking - one where the -two bank operations define a read-only bank and a write-only bank, and -one with two read/write windows. With the first form, the entire SVGA -memory window is used for both read a write operations, and the two -bank registers determine which bank is actually used (e.g. ET3000, ET4000). -With the second form, the SVGA memory window is split into two read/write -banks, with each bank pointer being used to control one window. In -this case, one window is used for read operations and the other for write -operations (e.g. PVGA1/Western Digital, Cirrus). - -A chipset that has a single bank register uses that one bank for both -read and write access. This is problematic, because copying information -from one part of the screen to another requires that the data be read in, -stored, and then written out. Fortunately, the server is able to handle -both one-bank and two-bank chipsets; the determination of behavior is -defined by an entry in the driver data structure described below. - -A driver requires that three assembly-language functions be written, in -the file `<tt>sdc_bank.s</tt>'. -These functions set the read bank - <bf>SDCSetRead()</bf>, -the write bank - <bf>SDCSetWrite()</bf>, and set both banks - -<bf>SDCSetReadWrite()</bf>. -For a chipset with only one bank, all three will be declared as entry points -to the same function (see the ``tvga8900'' driver for an example). - -The functions are fairly simple - the bank number is passed to the function -in register %al. The function will shift, bitmask, etc - whatever is -required to put the bank number into the correct form - and then write -it to the correct I/O port. For chipsets where the two banks are read-only -HERE -and write-only, the <bf>SetReadWrite()</bf> function will have to do this twice - once -for each bank. For chipsets with two independent read/write windows, the -<bf>SetReadWrite()</bf> function should use the same bank as the <bf>SetWrite()</bf> function. - -A special note - these functions MUST be written in the macroized assembler -format defined in the header file ``assyntax.h''. This will ensure that -the correct assembler code will be generated, regardless of OS. This -macroized format currently supports USL, GNU, and Intel assembler formats. - -That's all there is to the banking functions. Usually the chipset reference -will give examples of this code; if not, it is not difficult to figure out, -especially using the other drivers as examples. - -<sect> The Driver Itself <p> - Now it's time to get down to the real work - writing the major driver -functions in the files sdc_driver.c. First, an overview of what the -responsibilities of the driver are: - -<enum> -<item> Provide a chipset-descriptor data structure to the server. This - data structure contains pointers to the driver functions and - some data-structure initialization as well. -<item> Provide a driver-local data structure to hold the contents of - the chipset registers. This data structure will contain a - generic part and a driver-specific part. It is used to save the - initial chipset state, and is initialized by the driver to put - the chipset into different modes. -<item> Provide an identification function that the server will call to - list the chipsets that the driver is capable of supporting. -<item> Provide a probe function that will identify this chipset as - different from all others, and return a positive response if - the chipset this driver supports is installed, and a negative - response otherwise. -<item> Provide a function to select dot-clocks available on the board. -<item> Provide functions to save, restore, and initialize the driver- - local data structure. -<item> Provide a function to set the starting address for display in - the video memory. This implements the virtual-screen for the - server. -<item> Perhaps provide a function for use during VT-switching. -<item> Perhaps provide a function to check if each mode is suitable for - the chipset being used. -</enum> - -Before stepping through the driver file in detail, here are some important -issues: - -<enum> -<item> If your driver supports both the color and monochrome servers, - you should take care of both cases in the same file. Most things - are the same - you can differentiate between the two with the - MONOVGA <tt>#define</tt>. If the 16 color server is supported, - code specific to it can be enabled with the XF86VGA16 - <tt>#define</tt>. In most cases it is sufficient to put - the following near the top of the stub_driver.c file: - -<verb> - #ifdef XF86VGA16 - #define MONOVGA - #endif -</verb> - -<item> The color server uses the SVGA's 8-bit packed-pixel mode. The - monochrome and vga16 servers uses the VGA's 16-color mode - (4 bit-planes). Only one plane is enabled for the monochrome - server. -<item> It is possible for you to define your monochrome driver so that - no bank-switching is done. This is not particularly desirable, - as it yields only 64k of viewing area. -</enum> -Keeping these things in mind, you need to find the registers from your -SVGA chipset that control the desired features. In particular, registers -that control: -<enum> -<item> Clock select bits. The two low-order bits are part of the - standard Miscellaneous Output Register; most SVGA chipsets - will include 1 or 2 more bits, allowing the use of 8 or 16 - discrete clocks. -<item> Bank selection. The SVGA chipset will have one or two registers - that control read/write bank selection. -<item> CRTC extensions. The standard VGA registers don't have enough - bits to address large displays. So the SVGA chipsets have - extension bits. -<item> Interlaced mode. Standard VGA does not support interlaced - displays. So the SVGA chipset will have a bit somewhere to - control interlaced mode. Some chipsets require additional - registers to be set up to control interlaced mode -<item> Starting address. The standard VGA only has 16 bits in which - to specify the starting address for the display. This restricts - the screen size usable by the virtual screen feature. The SVGA - chipset will usually provide one or more extension bits. -<item> Lock registers. Many SVGA chipset prevent modification of - extended registers unless the registers are first ``unlocked''. - You will need to disable protection of any registers you will - need for other purposes. -<item> Any other facilities. Some chipset may, for example, require - that certain bits be set before you can access extended VGA - memory (beyond the IBM-standard 256k). Or other facilities; - read through all of the extended register descriptions and see - if anything important leaps out at you. -</enum> - -If you are fortunate, the chipset vendor will include in the databook some -tables of register settings for various BIOS modes. You can learn a lot -about what manipulations you must do by looking at the various BIOS modes. - -<sect1> Multiple Chipsets And Options <p> -It is possible, and in fact desirable, to have a single driver support -multiple chipsets from the same vendor. If there are multiple supported -chipsets, then you would have a series of #define's for them, and a -variable `SDCchipset', which would be used throughout the driver when -distinctions must be made. See the Trident and PVGA1/WD drivers for -examples (the Tseng ET3000 and ET4000 are counter-examples - these were -implemented before the driver interface allowed for multiple chipsets, so -this example should NOT be followed). Note that you should only distinguish -versions when your driver needs to do things differently for them. For -example, suppose the SDC driver supports the SDC-1a, SDC-1b, and SDC-2 -chipsets. The -1a and -1b are essentially the same, but different from the --2 chipset. Your driver should support the -1 and -2 chipsets, and not -distinguish between the -1a and -1b. This will simplify things for the -end user. - -In cases where you want to give the user control of driver behavior, or -there are things that cannot be determined without user intervention, you -should use ``option'' flags. Say that board vendors that use the SDC -chipsets have the option of providing 8 or 16 clocks. There's no way you -can determine this from the chipset probe, so you provide an option flag to -let the user select the behavior from the XF86Config file. The option flags -are defined in the file ``xf86_option.h''. You should look to see if there is -already a flag that can be reused. If so, use it in your driver. If not, -add a new #define, and define the string->symbol mapping in the table in -that file. To see how option flags are used, look at the ET4000, -PVGA1/WD, and Trident drivers. - -<sect1> Data Structures <p> -Once you have an understanding of what is needed from the above description, -it is time to fill in the driver data structures. First we will deal with -the `vgaSDCRec' structure. This data structure is the driver-local structure -that holds the SVGA state information. The first entry in this data structure -is ALWAYS `vgaHWRec std'. This piece holds the generic VGA portion of the -information. After that, you will have one `unsigned char' field for each -register that will be manipulated by your driver. That's all there is to -this data structure. - -Next you must initialize the `SDC' structure (type `vgaVideoChipRec'). This -is the global structure that identifies your driver to the server. Its name -MUST be `SDC', in all caps - i.e. it must match the directory name for your -driver. This is required so that the Link Kit reconfiguration can identify -all of the requisite directories and global data structures. - -The first section of this structure simply holds pointers to the driver -functions. - -Next, you must initialize the information about how your chipset does -bank switching. The following fields must be filled in: -<enum> -<item> ChipMapSize - the amount of memory that must be mapped into - the server's address space. This is almost always 64k (from - 0xA0000 to 0xAFFFF). Some chipsets use a 128k map (from - 0xA0000 to 0xBFFFF). If your chipset gives an option, use the - 64k window, as a 128k window rules out using a Hercules or - Monochrome Display Adapter card with the SVGA. -<item> ChipSegmentSize - the size of each bank within the ChipMapSize - window. This is usually also 64k, however, some chipsets split - the mapped window into a read portion and a write portion (for - example the PVGA1/Western Digital chipsets). -<item> ChipSegmentShift - the number of bits by which an address will - be shifted right to mask of the bank number. This is log-base-2 - of ChipSegmentSize. -<item> ChipSegmentMask - a bitmask used to mask off the address within - a given bank. This is (ChipSegmentSize-1). -<item> ChipReadBottom,ChipReadTop - the addresses within the mapped - window in which read operations can be done. Usually 0, and - 64k, respectively, except for those chipset that have separate - read and write windows. -<item> ChipWriteBottom,ChipWriteTop - same as above, for write operations. -<item> ChipUse2Banks - a boolean value for whether this chipset has one - or two bank registers. This is used to set up the screen-to-screen - operations properly. -</enum> -There are three more fields that must be filled in: -<enum> -<item> ChipInterlaceType - this is either VGA_NO_DIVIDE_VERT or - VGA_DIVIDE_VERT. Some chipsets require that the vertical timing - numbers be divided in half for interlaced modes. Setting this - flag will take care of that. -<item> ChipOptionFlags - this should always be `{0,}' in the data - structure initialization. This is a bitfield that contains - the Option flags that are valid for this driver. The appropriate - bits are initialized at the end of the Probe function. -<item> ChipRounding - this gets set to the multiple by which the - virtual width of the display must be rounded for the 256-color - server. This value is usually 8, but may be 4 or 16 for some - chipsets. -</enum> - -<sect1> The Ident() function <p> -The <bf>Ident()</bf> function is a very simple function. The server will call -this function repeatedly, until a NULL is returned, when printing out the -list of configured drivers. The <bf>Ident()</bf> function should return a chipset -name for a supported chipset. The function is passed a number which -increments from 0 on each iteration. - -<sect1> The ClockSelect() function <p> -The <bf>ClockSelect()</bf> function is used during clock probing (i.e. when no -`Clocks' line is specified in the XF86Config file) to select the dot-clock -indicated by the number passed in the parameter. The function should -set the chipset's clock-select bits according to the passed-in number. -Two dummy values will be passed in as well (CLK_REG_SAVE, CLK_SAVE_RESTORE). -When CLK_REG_SAVE is passed, the function should save away copies of -any registers that will be modified during clock selection. When -CLK_REG_RESTORE is passed, the function should restore these registers. -This ensure that the clock-probing cannot corrupt registers. - -This function should return FALSE if the passed-in index value is invalid -or if the clock can't be set for some reason. - -<sect1> The Probe() function <p> -The <bf>Probe()</bf> function is perhaps the most important, and perhaps the -least intuitive function in the driver. The Probe function is required -to identify the chipset independent of all other chipsets. If the user -has specified a `<tt>Chipset</tt>' line in the XF86Config file, this is a simple -string comparison check. Otherwise, you must use some other technique -to figure out what chipset is installed. If you are lucky, the chipset -will have an identification mechanism (ident/version registers, etc), and -this will be documented in the databook. Otherwise, you will have to -determine some scheme, using the reference materials listed below. - -The identification is often done by looking for particular patterns in -register, or for the existence of certain extended registers. Or with -some boards/chipsets, the requisite information can be obtained by reading -the BIOS for certain signature strings. The best advise is to study the -existing probe functions, and use the reference documentation. You -must be certain that your probe is non-destructive - if you modify a -register, it must be saved before, and restored after. - -Once the chipset is successfully identified, the <bf>Probe()</bf> function must -do some other initializations: -<enum> -<item> If the user has not specified the `<tt>VideoRam</tt>' parameter in the - XF86Config file, the amount of installed memory must be determined. -<item> If the user has not specified the `<tt>Clocks</tt>' parameter in the - XF86Config file, the values for the available dot-clocks must - be determined. This is done by calling the <bf>vgaGetClocks()</bf> - function, and passing it the number of clocks available and - a pointer to the <bf>ClockSelect()</bf> function. -<item> It is recommended that the `maxClock' field of the server's - `vga256InfoRec' structure be filled in with the maximum - dot-clock rate allowed for this chipset (specified in KHz). - If this is not filled in a probe time, a default (currently - 90MHz) will be used. -<item> The `chipset' field of the server's `vga256InfoRec' structure - must be initialized to the name of the installed chipset. -<item> If the driver will be used with the monochrome server, the - `bankedMono' field of the server's `vga256InfoRec' structure - must be set to indicate whether the monochrome driver supports - banking. -<item> If any option flags are used by this driver, the `ChipOptionFlags' - structure in the `vgaVideoChipRec' must be initialized with the - allowed option flags using the <bf>OFLG_SET()</bf> macro. -</enum> - -<sect1> The EnterLeave() function <p> -The <bf>EnterLeave()</bf> function is called whenever the virtual console on which -the server runs is entered or left (for OSs without virtual consoles, the -function is called when the server starts and again when it exits). The -purpose of this function is to enable and disable I/O permissions (for -OSs where such is required), and to unlock and relock access to ``protected'' -registers that the driver must manipulate. It is a fairly trivial function, -and can be implemented by following the comments in the stub driver. - -<sect1> The Restore() function <p> -The <bf>Restore()</bf> function is used for restoring a saved video state. Note -that `restore' is a bit of a misnomer - this function is used to both -restore a saved state and to install a new one created by the server. The -<bf>Restore()</bf> function must complete the following actions: -<enum> -<item> Ensure that Bank 0 is selected, and that any other state - information required prior to writing out a new state has been - set up. -<item> Call <bf>vgaHWRestore()</bf> to restore the generic VGA portion of the - state information. This function is in the vgaHW.c file. -<item> Restore the chipset-specific portion of the state information. - This may be done by simply writing out the register, or by - doing a read/modify/write cycle if only certain bits are to - be modified. Be sure to note the comment in the sample driver - about how to handle clock-select bits. -</enum> -<sect1> The Save() function <p> -The <bf>Save()</bf> function is used to extract the initial video state information -when the server starts. The <bf>Save()</bf> function must complete the following -actions: -<enum> -<item> Ensure that Bank 0 is selected. -<item> Call <bf>vgaHWSave()</bf> to extract the generic VGA portion of the state - information. This function is in the vgaHW.c file. -<item> Extract the chipset-specific portion of the state information. -</enum> -<sect1> The Init() function <p> - The <bf>Init()</bf> function is the second most important function in the driver -(after the <bf>Probe()</bf> function). It is used to initialize a data structure -for each of the defined display modes in the server. This function is -required to initialize the entire `vgaSDCRec' data structure with the -information needed to put the SVGA chipset into the required state. The -generic VGA portion of the structure is initialized with a call to -<bf>vgaHWInit()</bf> (also located in vgaHW.c). - -Once the generic portion is initialized, the <bf>Init()</bf> function can override -any of the generic register initialization, if necessary. All of the other -fields are filled in with the correct initialization. The information -about the particular mode being initialized is passed in the `mode' -parameter, a pointer to a `DisplayModeRec' structure. This can be -dereferenced to determine the needed parameters. - -If you only know how to initialize certain bits of the register, do that -here, and make sure that the <bf>Restore()</bf> function does a read/modify/write -to only manipulate those bits. Again, refer to the existing drivers -for examples of what happens in this function. - -<sect1> The Adjust() function <p> -The <bf>Adjust()</bf> function is another fairly basic function. It is called -whenever the server needs to adjust the start of the displayed part of -the video memory, due to scrolling of the virtual screen or when changing -the displayed resolution. All it does is set the starting address on the -chipset to match the specified coordinate. Follow the comments in the -stub driver for details on how to implement it. - -<sect1> The ValidMode() function <p> -The <bf>ValidMode()</bf> function is required. It is used to check -for any chipset-dependent reasons why a graphics mode might not be valid. It -gets called by higher levels of the code after the Probe() stage. In -many cases no special checking will be required and this function will -simply return TRUE always. - -<sect1> The SaveScreen() function <p> -The <bf>SaveScreen()</bf> function is not needed by most chipsets. This function -would only be required if the extended registers that your driver needs -will be modified when a synchronous reset is performed on the SVGA chipset -(your databook should tell you this). If you do NOT need this function, -simply don't define it, and put `NoopDDA' in its place in the vgaVideoChipRec -structure initialization (NoopDDA is a generic-use empty function). - -If you DO need this function, it is fairly simple to do. It will be -called twice - once before the reset, and again after. It will be passed -a parameter of SS_START in the former case, and SS_FINISH in the latter. -All that needs to be done is to save any registers that will be affected -by the reset into static variables on the SS_START call, and then restore -them on the SS_FINISH call. - -<sect1> The GetMode() function <p> -The <bf>GetMode()</bf> function is not used as of XFree86 1.3; its place in the -vgaVideoChipRec should be initialized to `NoopDDA'. - -At some point in the future, this function will be used to enable the server -and/or a standalone program using the server's driver libraries to do -interactive video mode adjustments. This function will read the SVGA -registers and fill in a DisplayModeRec structure with the current video -mode. - -<sect1> The FbInit() function <p> -The <bf>FbInit()</bf> function is required for drivers with accelerated graphics -support. It is used to replace default cfb.banked functions with -accelerated chip-specific versions. vga256LowlevFuncs is a struct containing -a list of functions which can be replaced. This struct defined in -vga256.h. Examples of <bf>FbInit()</bf> functions can be found in the et4000, -pvga1 and cirrus drivers. - -If you do NOT need this function, simply don't define it, and put `NoopDDA' -in its place in the vgaVideoChipRec structure initialization. - -<sect> Building The New Server <p> -As in the setup work, the steps for building the server depend whether -you are working in the source tree or in the Link Kit. Here are the -steps for the initial build after installing your new driver files: -<itemize> - <item>If you are working in the source tree, follow these steps: - - Go to xc/programs/Xserver, and enter - `<tt>make Makefile</tt>', then - `<tt>make Makefiles depend all</tt>' - - <item>If you are working in the Link Kit, follow these steps: - - <enum> - <item>Go to /usr/X11R6/lib/Server, and enter - `<tt>./mkmf</tt>' - <item>In the same directory, enter `<tt>make</tt>' - </enum> -</itemize> -To rebuild the server after the initial build (e.g. after making changes -to your driver): - -<itemize> -<item> If you are working in the source tree, follow these steps: - - <enum> - <item> Go to the appropriate drivers/ directory (e.g., - xc/programs/Xserver/hw/xfree86/vga256/drivers), - and enter `<tt>make</tt>'. - <item> Go to xc/programs/Xserver, and enter - `<tt>make loadXF86_SVGA</tt>' (to link the color server), - `<tt>make loadXF86_VGA16</tt>' (to link the 16 color server) or - `<tt>make loadXF86_Mono</tt>' (to link the mono server). - </enum> - -<item> If you are working in the Link Kit, follow these steps: - - <enum> - <item> Go to the appropriate driver directory, and enter - `<tt>make</tt>'. - <item> Go to /usr/X11R6/lib/server, and enter - `<tt>make loadXF86_SVGA</tt>' (to link the color server) or - `<tt>make loadXF86_VGA16</tt>' (to link the 16 color server) or - `<tt>make loadXF86_Mono</tt>' (to link the mono server). - </enum> -</itemize> - -<sect> Debugging <p> -Debugging a new driver can be a painful experience, unfortunately. It -is likely that incorrect programming of the SVGA chipset can lock up your -machine. More likely, however, is that the display will be lost, potentially -requiring a reboot to correct. It is HIGHLY recommended that the server -be run from an attached terminal or a network login. This is the only -rational way in which a debugger can be used on the server. Attempting -to use multiple VTs for debugging is basically a waste of time. - -Because of the potential for locking up the machine, it is a VERY good idea -to remember to do a `sync' or two before starting the server. In addition, -any unnecessary filesystems should be unmounted while the debugging session -is going on (to avoid having to run unnecessary fsck's). - -By default the server is built without debugging symbols. The server can -grow VERY large with debugging enabled. It is very simple to rebuild -your driver for debugging, though. Do the following: - -<enum> - <item>Go to the driver directory. - <item>Edit the Makefile. Look for the SECOND definition of - `<tt>CDEBUGFLAGS</tt>'. Change this definition to - - <verb> - CDEBUGFLAGS = -g -DNO_INLINE - </verb> - - (this will enable debugging symbols and disable inlining of - functions, which can make single-stepping a nightmare). - <item>Remove the `sdc_driver.o' file. - <item>Now follow the steps above for rebuilding the server. - - (Alternatively, instead of editing the Makefile, you can simply - do `<tt>make CDEBUGFLAGS="-g -DNO_INLINE"</tt>' after removing the - old .o file, then rebuild the server as described above). -</enum> - -This will give you a server with which you can set breakpoints in the driver -functions and single-step them. If you are working in the source tree, -and just learning about SVGA programming, it may be useful to rebuild -vgaHW.c with debugging as well. - -<sect> Advice <p> -I cannot stress this enough - study all available references, and the -existing code, until you understand what is happening. Do this BEFORE you -begin writing a driver. This will save you a massive amount of headache. -Try to find a driver for a chipset that is similar to yours, if possible. -Use this as an example, and perhaps derive your driver from it. - -Do not let the gloom-and-doom in the debugging section discourage you. -While you will probably have problems initially (I still do), careful, -deliberate debugging steps can bear fruit very quickly. It is likely -that, given a good understanding of the chipset, a driver can be written -and debugged in a day or two. For someone just learning about this kind -of programming, a week is more reasonable. - -<sect> Advanced Topics <p> -Newer chipsets are getting into two advanced areas: programmable clock -generators, and accelerated capabilities (BitBlt, line drawing, HW cursor). -These are new areas, and the formal interfaces to them are not yet defined. -It is advised that you contact the XFree86 team and get involved with the -development/beta-testing team if you need to be working in these areas. - -<sect> References <p> -<itemize> -<item>Programmer's Guide to the EGA and VGA Cards, 3rd ed. <newline> - Richard Ferraro <newline> - Addison-Wesley, 1994 <newline> - ISBN 0-201-62490-7 <newline> - (This is the bible of SVGA programming - it has a few errors, so watch out. - The third edition also covers several accelerated video cards.) - -<item>vgadoc4.zip <newline> - Finn Thoegersen <newline> - (This is a collection of SVGA and other chipset documentation. It is - available on most MS-DOS/Windows related FTP archives, including wuarchive. - It is DOS/BIOS oriented, but is still extremely useful, especially for - developing probe functions.) -</itemize> - -<sect> Vendor Contact Information <p> -<descrip> -<tag/ATI Technologies (VGA-Wonder, Mach8, Mach32, Mach64) - 33 Commerce Valley Drive East/ -Thornhill, Ontario <newline> -Canada L3T 7N6 <newline> -(905) 882-2600 (sales) <newline> -(905) 882-2626 (tech support) <newline> -(905) 764-9404 (BBS) <newline> -(905) 882-0546 (fax) <newline> - -<tag/Chips & Technologies/ -??? - -<tag/Cirrus Logic (SVGA, Accelerators - CL-GD5426)/ -3100 West Warren Ave. <newline> -Fremont, CA 94538 <newline> -(510) 623-8300 (N. CA, USA) <newline> -(49) 8152-40084 (Germany) <newline> -(44) 0727-872424 (UK) <newline> - -<tag/Genoa Systems (GVGA)/ -75 E. Trimble Road <newline> -San Jose, CA 95131 <newline> -(408) 432-9090 (sales) <newline> -(408) 432-8324 (tech support) <newline> - -<tag/Headland Technologies, Inc (Video-7 VGA 1024i, VRAM II)/ -46221 Landing Parkway <newline> -Fremont, CA 94538 <newline> -(415) 623-7857 <newline> - -<tag/Oak Technology, Inc (OTI-067,OTI-077)/ -139 Kifer Ct. <newline> -Sunnyvale, CA 94086 <newline> -(408) 737-0888 <newline> -(408) 737-3838 (fax) - -<tag>S3 (911, 924, 801/805, 928, 864, 868, 964, 968, 764, 765)</tag> -(408) 980-5400 - -<tag/Trident Microsystems Inc (8800, 8900, 9000)/ -205 Ravendale Dr <newline> -Mountainside, CA 94043 <newline> -(415) 691-9211 - -<tag/Tseng Labs Inc,/ -6 Terry Drive <newline> -Newtown, PA 18940 <newline> -(215) 968-0502 - -<tag/Weitek (Power9000, 5186)/ -1060 E. Arques Ave, <newline> -Sunnyvale, CA 94086 <newline> -(408) 738-5765 - -<tag/Western Digital/ -(714) 932-4900 -</descrip> - -<verb> -$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/VGADriv.sgml,v 3.14 1998/03/20 21:06:26 hohndel Exp $ - - - - - -$XConsortium: VGADriv.sgml /main/9 1996/10/28 05:13:22 kaleb $ -</verb> - -</article> Index: xc/programs/Xserver/hw/xfree86/doc/sgml/VidModes.sgml diff -u xc/programs/Xserver/hw/xfree86/doc/sgml/VidModes.sgml:3.15 xc/programs/Xserver/hw/xfree86/doc/sgml/VidModes.sgml:3.16 --- xc/programs/Xserver/hw/xfree86/doc/sgml/VidModes.sgml:3.15 Wed Mar 8 16:30:59 2000 +++ xc/programs/Xserver/hw/xfree86/doc/sgml/VidModes.sgml Wed Mar 8 16:30:59 2000 @@ -1196,7 +1196,7 @@ # # Do `modeplot -?' to see the control options. # -# ($Id: video-modes.sgml,v 1.2 1997/08/08 15:07:24 esr Exp $) +# (Id: video-modes.sgml,v 1.2 1997/08/08 15:07:24 esr Exp $) # Monitor description. Bandwidth in MHz, horizontal frequencies in kHz # and vertical frequencies in Hz. @@ -1235,7 +1235,7 @@ The modeplot tool was created by Eric S. Raymond <esr@thyrsus.com> based on analysis and scratch code by Martin Lottermoser <Martin.Lottermoser@mch.sni.de> -This is modeplot $Revision: 1.2 $ +This is modeplot Revision: 1.2 $ EOF exit;; esac @@ -1408,7 +1408,7 @@ <TT>modeplot</TT> was redesigned and generalized by ESR from Martin's original gnuplot code for one case. <verb> -$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/VidModes.sgml,v 3.15 2000/01/24 19:38:29 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/VidModes.sgml,v 3.16 2000/02/23 20:30:16 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/doc/sgml/apm.sgml diff -u xc/programs/Xserver/hw/xfree86/doc/sgml/apm.sgml:1.2 xc/programs/Xserver/hw/xfree86/doc/sgml/apm.sgml:1.3 --- xc/programs/Xserver/hw/xfree86/doc/sgml/apm.sgml:1.2 Mon Aug 23 02:18:33 1999 +++ xc/programs/Xserver/hw/xfree86/doc/sgml/apm.sgml Wed Mar 8 16:30:59 2000 @@ -1,20 +1,28 @@ -<!DOCTYPE linuxdoc PUBLIC "-//XFree86//DTD linuxdoc//EN"> +<!DOCTYPE linuxdoc PUBLIC "-//XFree86//DTD linuxdoc//EN" [ +<!ENTITY % defs SYSTEM "defs.ent"> %defs; +]> <article> <title> Information for Alliance Promotion chipset users -<author> Henrik Harmsen (Henrik.Harmsen@erv.ericsson.se) -<date> 23 February 1998 +<author> Loïc Grenié (<email>grenie@math.jussieu.fr</email>), + Henrik Harmsen (<email>Henrik.Harmsen@erv.ericsson.se</email>) +<date> 6 March 2000 +<ident> +$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/apm.sgml,v 1.3 2000/03/08 05:38:43 dawes Exp $ +</ident> <toc> <sect> Support chipsets <p> The apm driver in the SVGA server is for Alliance Promotion -(www.alsc.com) graphics chipsets. The following chipsets are supported: +graphics chipsets. The following chipsets are supported: <itemize> <item> 6422 - Old chipset without color expansion hardware (text accel). + Old chipset. The driver is still very unstable, including computer + crashes. You would prefer using XFree86 3.3.x for this chipset. + <item> AT24 @@ -22,9 +30,9 @@ <item> AT25, AT3D - AT3D is found in Hercules Stingray 128/3D. Most other Voodoo - Rush based cards use the AT25 which is identical except it - doesn't have the 3D stuff in it. + AT3D is found in Hercules Stingray 128/3D. Most other Voodoo + Rush based cards use the AT25 which is identical except it + doesn't have the 3D stuff in it. </itemize> <sect> Acceleration @@ -36,27 +44,62 @@ <item> Bitblts (rectangle copy operation) <item> Lines (solid, single pixel) <item> Filled rectangles -<item> CPU->Screen colour expansion (text accel). Not for 6422. -<item> Hardware cursor +<item> CPU->Screen image transfers. +<item> CPU->Screen colour expansion (text accel). +<item> Screen->Screen colour expansion (cached text accel). +<item> Mono 8x8 pattern fill. Not for 6422. +<item> Colour 8x8 pattern fill (in 8bpp). Not for 6422. +<item> Hardware cursor. +<item> Pixmap caching. </itemize> -All in 8, 16 and 32 bpp modes. No 24bpp mode is supported. -Also VESA DPMS power save mode is fully supported with "standby", +All in 8, 16 and 32 bpp modes. In 24bpp mode only Bitblts and Filled rectangles +is supported. Also VESA DPMS power save mode is fully supported with "standby", "suspend" and "off" modes (set with with the "xset dpms" command). +<sect> DGA +<p> +Full DGA 2.0 support with framebuffer access and drawing acceleration. + +<sect> Video +<p> +A limited hardware support for video decoding on AT24 and AT25/3D. It can +display an image in YUV colours inside the desktop. There are some more exotic +formats (YUV 4.1.1, YUV 4.0.0, RGB 8,16.32bpp). + +<sect> Shadow framebuffer +<p> +There is a mode, called shadow framebuffer, where the graphics is only used +to display the images. All rendering is done in memory in a so-called shadow +framebuffer. This mode is useful if you need lots of reading in the video +memory. You will have to put +<verb> + Option "ShadowFB" +</verb> + +in your XF86Config file. + <sect> Configuration <p> -First: Please run the XF86Setup program to create a correct +First: Please run the xf86config program to create a correct configuration. You can turn off hardware cursor by inserting the following line in the Device section of the XF86Config file: - - Option "sw_cursor" +<verb> + Option "SWcursor" +</verb> Or turn off hardware acceleration: - +<verb> Option "noaccel" +</verb> + +Or turn off MMIO + +<verb> + Option "nolinear" +</verb> Please don't specify the amount of video RAM you have or which chipset you have in the config file, let the driver probe for this. Also please @@ -65,9 +108,14 @@ at it. It might fail at some specific clock values but you should just try a slightly different clock and it should work. +<sect> glide2x +<p> +There is support for the XF86Rush extension for use with the glide2x library. + +<sect> Questions +<p> +Any questions regarding this driver should be sent to Loïc Grenié. It should +be possible to add support for the 3210 chipset if someone needs it. -<verb> -$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/apm.sgml,v 1.2 1999/08/23 06:18:33 dawes Exp $ -</verb> </article> Index: xc/programs/Xserver/hw/xfree86/doc/sgml/chips.sgml diff -u xc/programs/Xserver/hw/xfree86/doc/sgml/chips.sgml:3.29 xc/programs/Xserver/hw/xfree86/doc/sgml/chips.sgml:3.30 --- xc/programs/Xserver/hw/xfree86/doc/sgml/chips.sgml:3.29 Sat Aug 28 07:18:16 1999 +++ xc/programs/Xserver/hw/xfree86/doc/sgml/chips.sgml Wed Mar 8 16:30:59 2000 @@ -6,12 +6,12 @@ <!-- Title information --> <title> Information for Chips and Technologies Users -<author> David Bateman (<it>dbateman@eng.uts.edu.au</it>), - Egbert Eich (<it>Egbert.Eich@Physik.TH-Darmstadt.DE</it>) +<author> David Bateman (<email>dbateman@club-internet.fr</email>), + Egbert Eich (<email>eich@xfree86.org</email>) <date> 19th July 1999 <ident> -$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/chips.sgml,v 3.29 1999/08/28 11:18:16 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/chips.sgml,v 3.30 2000/03/05 16:59:11 dawes Exp $ </ident> <!-- Table of contents --> @@ -860,8 +860,8 @@ If you are having driver-related problems that are not addressed by this document, or if you have found bugs in accelerated functions, you can try contacting the XFree86 team (the current driver maintainer can be - reached at <it>dbateman@eng.uts.edu.au</it> or - <it>Egbert.Eich@Physik.TH-Darmstadt.DE)</it>, + reached at <email>dbateman@club-internet.fr</email> or + <email>eich@xfree86.org</email>), or post in the Usenet newsgroup "<it>comp.windows.x.i386unix</it>". <sect> Disclaimer <p> Index: xc/programs/Xserver/hw/xfree86/doc/sgml/cyrix.sgml diff -u xc/programs/Xserver/hw/xfree86/doc/sgml/cyrix.sgml:1.2 xc/programs/Xserver/hw/xfree86/doc/sgml/cyrix.sgml:1.3 --- xc/programs/Xserver/hw/xfree86/doc/sgml/cyrix.sgml:1.2 Mon Aug 23 02:18:33 1999 +++ xc/programs/Xserver/hw/xfree86/doc/sgml/cyrix.sgml Wed Mar 8 16:30:59 2000 @@ -1,14 +1,19 @@ -<!DOCTYPE linuxdoc PUBLIC "-//XFree86//DTD linuxdoc//EN"> +<!DOCTYPE linuxdoc PUBLIC "-//XFree86//DTD linuxdoc//EN" [ +<!ENTITY % defs SYSTEM "defs.ent"> %defs; +]> <article> <title>Information for Cyrix Chipset Users <author>The XFree86 Project Inc. -<date>22 June 1999 +<date>7 March 2000 +<ident> +$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/cyrix.sgml,v 1.3 2000/03/08 05:38:43 dawes Exp $ +</ident> <toc> <sect>Supported hardware <p> -This driver (as used in the SVGA (VGA256), VGA16 and VGA_Mono servers) +This driver supports a single chipset `mediagx' that should work on the following Cyrix CPUs with integrated graphics: @@ -20,62 +25,38 @@ <sect>Features <p> <itemize> -<item>accelerated -<item>hardware cursor -<item>support color depths 1, 4, 8 and 16 +<item>Rather sparse (color depth hardcoded to 8) </itemize> <sect>XF86Config Option <p> <descrip> <tag>Option "sw_cursor"</tag> -disable the hardware cursor. +disable the hardware cursor. (Code not verified yet!) <tag>Option "no_accel"</tag> completely disables acceleration. Usually not recommended. </descrip> <sect>Bugs and Limitations<p> <itemize> +<item>As a first cut at the new design, known problems are everywhere. +The console font is corrupted upon exit. The server seems stable if +the virtual desktop and resolution size match. I found 1024x768 usable +and that's why I released this version. Geeks can have fun with this +but NEWBIES should use the 3.3.3.1 release instead! <item>On some older chipsets, the driver may trigger an illegal instruction just after probing for the ``scratchpad size''. If this is the case, -email to hecker@cat.dfrc.nasa.gov with the output of +email to <email>hecker@cat.dfrc.nasa.gov</email> with the output of <verb> -XF86_SVGA -probeonly -verbose +XFree86 -probeonly -verbose </verb> and this will be fixed. -<item>There are limitations to the modeline values that can be specified. -Particularly, the difference between the first two horizontal -timings (e.g. 640 656, 1024 1048) must be at least 16 and at most 24. -The modeline values are not used in the 3.3.4 server since there is a -static array used to load the registers. The modeline only identifies -that a particular resolution is desired. The standard VESA modes up -to 1280x768 are supported. For more specific information, consult -the source code. -<item>The 4 colour server is slow due to the VGA banking mode used. -Moreover, -it does not work the way it is run by XF86Setup, which is probably -due to the timing limitations. -<item>The 3.3.4 server MAY totally hang the machine at times. It is -reported to be stable on a BSD platform using twm. It has crashed -when using resolutions greater than 800x600 on a Linux (Debian -based) system using wm as the window manager. The safest course is -to use the 3.3.3.1 server instead. Efforts are under way to resolve -this issue and provide a more robust server under the 4.x release. - </itemize> <sect>Authors<p> <itemize> -<item>Annius Groenink <it><Annius.Groenink@cwi.nl></it> -<item>Dirk Hohndel <it><hohndel@XFree86.org></it> -<item>Brian Falardeau -<item>Special thanks to Cyrix and Wyse for helping us with the development of -this server. Brian, a Cyrix employee, made the 3.3.4 update possible since -the new 4.0 server has been our top priority. +<item>Richard Hecker <email>hecker@cat.dfrc.nasa.gov</email> </itemize> -<verb> -$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/cyrix.sgml,v 1.2 1999/08/23 06:18:33 dawes Exp $ -</verb> </article> Index: xc/programs/Xserver/hw/xfree86/doc/sgml/defs.ent diff -u xc/programs/Xserver/hw/xfree86/doc/sgml/defs.ent:1.7 xc/programs/Xserver/hw/xfree86/doc/sgml/defs.ent:1.11 --- xc/programs/Xserver/hw/xfree86/doc/sgml/defs.ent:1.7 Wed Mar 8 16:30:59 2000 +++ xc/programs/Xserver/hw/xfree86/doc/sgml/defs.ent Wed Mar 8 16:30:59 2000 @@ -1,17 +1,25 @@ -<!-- $XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/defs.ent,v 1.7 2000/02/08 17:19:08 dawes Exp $ --> +<!-- $XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/defs.ent,v 1.11 2000/03/08 18:04:15 dawes Exp $ --> <!-- shared entity definitions for the XFree86 documentation --> <!-- XFree86 version string --> -<!ENTITY relvers CDATA "3.9.18"> -<!ENTITY prevrelvers CDATA "3.9.17"> -<!ENTITY srcvers CDATA "3918"> -<!ENTITY prevsrcvers CDATA "3917"> +<!ENTITY relvers CDATA "4.0"> +<!ENTITY prevrelvers CDATA "3.9.18"> +<!ENTITY srcvers CDATA "400"> +<!ENTITY prevsrcvers CDATA "3918"> <!-- Version of the most recent 3.3.x release --> <!ENTITY legacyvers CDATA "3.3.6"> -<!-- Swap these for the next snapshot --> +<!-- SuperProbe version strings --> +<!ENTITY spvers CDATA "2.22"> +<!ENTITY legacyspvers CDATA "2.21"> + +<!-- These should be set according to which snapshot/release this is --> <!ENTITY % firstsnap 'IGNORE'> <!ENTITY % latersnap 'INCLUDE'> - +<!ENTITY % snapshot 'IGNORE'> +<!ENTITY % release 'INCLUDE'> +<!ENTITY % firstrel 'INCLUDE'> +<!ENTITY % earlyrel 'INCLUDE'> +<!ENTITY % laterrel 'IGNORE'> Index: xc/programs/Xserver/hw/xfree86/doc/sgml/fonts.sgml diff -u xc/programs/Xserver/hw/xfree86/doc/sgml/fonts.sgml:1.6 xc/programs/Xserver/hw/xfree86/doc/sgml/fonts.sgml:1.7 --- xc/programs/Xserver/hw/xfree86/doc/sgml/fonts.sgml:1.6 Wed Mar 8 16:30:59 2000 +++ xc/programs/Xserver/hw/xfree86/doc/sgml/fonts.sgml Wed Mar 8 16:30:59 2000 @@ -6,18 +6,17 @@ <title>Fonts in XFree86 <author>Juliusz Chroboczek, <tt/Juliusz.Chroboczek@ens.fr/ -<date>14 February 2000</date> +<date>5 March 2000</date> <ident> -$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/fonts.sgml,v 1.6 2000/02/14 19:20:44 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/fonts.sgml,v 1.7 2000/03/06 22:59:25 dawes Exp $ </ident> <toc> -<p>This version of XFree86 includes a number of improvements to the -handling of fonts, including +<p>XFree86 contains a number of improvements related to fonts, including <itemize> -<item> new Unicode-encoded bitmap fonts; +<item> inclusion of new fonts; <item> internationalisation of the scalable font backends (Type 1, Speedo, and TrueType); <item> support for TrueType fonts; @@ -113,14 +112,16 @@ fields of their XLFD set to `<tt/iso10646-1/'. -<sect>Unicode-encoded bitmap fonts +<sect>New fonts + +<sect1>Bitmap fonts <p>XFree86 includes two new Unicode-encoded fonts with a large collection of non-ideographic glyphs. While it is possible to use these fonts as main fonts, applications may also use them as fallbacks when a given glyph is not available in the current font. -<sect1>The Unicode `fixed' font +<sect2>The Unicode `fixed' font <p>The font file <tscreen> @@ -151,7 +152,7 @@ The standard aliases `<tt/fixed/' and `<tt/6x13/' still point at the ISO 8859-1 versions of the font. -<sect1>The ClearlyU Unicode font +<sect2>The ClearlyU Unicode font <p>The ClearlyU font set of fonts provides a set of 12pt, 100dpi proportional fonts with many of the glyphs needed for Unicode text. @@ -172,6 +173,47 @@ <p>-mutt-ClearlyU Ligature-medium-r-normal--17-120-100-100-p-141-fontspecific-0 <p>-mutt-ClearlyU PUA-medium-r-normal--17-120-100-100-p-111-iso10646-1 </tscreen> + +<sect1>Scalable fonts + +<p>XFree86 includes the ``Lucidux'' family of Type 1 fonts. This +family consists of the fonts ``Lucidux Serif'', with XLFD +<tscreen> +-b&h-lucidux serif-medium-*-normal--*-*-*-*-p-*-*-* +</tscreen> +``Lucidux Sans'', with XLFD +<tscreen> +-b&h-lucidux sans-medium-*-normal--*-*-*-*-p-*-*-* +</tscreen> +and ``Lucidux Mono'', with XLFD +<tscreen> +-b&h-lucidux mono-medium-*-normal--*-*-*-*-m-*-*-* +</tscreen> +Each of these fonts currently comes in Roman and oblique variants +(bold variants will be included in a future release) and has 337 +glyphs covering the basic ``ASCII'' glyph set, the Latin 1 glyph +set, as well as the ``Extended Latin'' glyph set. In particular, +these fonts include all the glyphs needed for ISO 8859 parts 1, +2, 3, 4, 9 and 15. + +The Lucidux fonts are original designs by Charles Bigelow and Kris +Holmes. Lucidux fonts include seriffed, sans-serif, and monospaced +styles which share the same stem weight, x-height, capital height, +ascent and descent. Lucidux fonts harmonise with Lucida (R) fonts of +the same vertical proportions and weights. The character width +metrics of Lucidux roman fonts match those of core fonts bundled with +several window systems. + +Each PFA file has a copy of the license terms in PS comment lines. +The license terms are also included in the file <tt/COPYRIGHT.BH/ for +convenience, and in the <htmlurl name="License document" url="LICENSE.html">. + +The design and font outlines were donated by Charles Bigelow and +Kris Holmes from Bigelow and Holmes Inc., and the hinting was donated +by Berthold Horn and Blenda Horn from Y&Y, Inc. For more information, +please contact <email/design@bigelowandholmes.com/ or +<email/sales@yandy.com/, or consult <url name="Y&Y's web site" +url="http://www.yandy.com">. <sect>Internationalisation of scalable font backends. Index: xc/programs/Xserver/hw/xfree86/doc/sgml/i740.sgml diff -u xc/programs/Xserver/hw/xfree86/doc/sgml/i740.sgml:1.2 xc/programs/Xserver/hw/xfree86/doc/sgml/i740.sgml:1.3 --- xc/programs/Xserver/hw/xfree86/doc/sgml/i740.sgml:1.2 Mon Aug 23 02:18:34 1999 +++ xc/programs/Xserver/hw/xfree86/doc/sgml/i740.sgml Wed Mar 8 16:30:59 2000 @@ -1,25 +1,30 @@ -<!DOCTYPE linuxdoc PUBLIC "-//XFree86//DTD linuxdoc//EN"> +<!DOCTYPE linuxdoc PUBLIC "-//XFree86//DTD linuxdoc//EN" [ +<!ENTITY % defs SYSTEM "defs.ent"> %defs; +]> <article> <title>Information for i740 Users <author>Precision Insight, Inc. <date>18 February 1999 +<ident> +$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/i740.sgml,v 1.3 2000/03/04 00:26:30 dawes Exp $ +</ident> <toc> <sect>Supported Hardware <p> <itemize> - <item>Intel 740 based cards + <item>Intel 740 based cards. </itemize> <sect>Features <p> <itemize> - <item>Full support for 8, 15, 16, 24 and 32 bit per pixel depths. + <item>Full support for 8, 15, 16, and 24 bit pixel depths. <item>Hardware cursor support to reduce sprite flicker. <item>Hardware accelerated 2D drawing engine support for 8, 15, 16 and - 24 bit per pixel depths. + 24 bit pixel depths. <item>Support for high resolution video modes up to 1600x1200. <item>Support for doublescan video modes (e.g., 320x200 and 320x240). <item>Support for gamma correction at all pixel depths. @@ -31,7 +36,8 @@ <sect>Technical Notes <p> <itemize> - <item>Hardware acceleration is not possible in 32 bit per pixel depth. + <item>Hardware acceleration is not possible when using the framebuffer + in 32 bit per pixel format. <item>Interlace modes cannot be supported. </itemize> @@ -87,10 +93,11 @@ section of your XF86Config file are: <verb> Section "Device" - Identifier "i740" + Identifier "Intel i740" + Driver "i740" EndSection </verb> -or let xf86config or XF86Setup do this for you. +or let <tt>xf86config</tt> do this for you. However, if you have problems with auto-detection, you can specify: <itemize> @@ -104,11 +111,13 @@ <sect>Driver Options <p> <itemize> - <item>"hw_cursor" - request hardware cursor (default) - <item>"sw_cursor" - software cursor only - <item>"no_accel" - software rendering only - <item>"sgram" - force the use of SGRAM timing info - <item>"sdram" - force the use of SDRAM timing info + <item>"NoAccel" - Turn off hardware acceleration + <item>"SWCursor" - Request a software cursor (hardware is default) + <item>"SDRAM" - Force the use of SDRAM timings + <item>"SGRAM" - Force the use of SGRAM timings + <item>"SlowRam" - Force the use of slower ram timings + <item>"Dac6Bit" - Force the use of a 6 Bit Dac (8 Bit is the default) + <item>"UsePIO - Force the use of programmed IO (Memory mapped is the default) </itemize> Note: the i740 X server should automatically detect whether your @@ -119,15 +128,17 @@ <sect>Known Limitations <p> <itemize> - <item>Certain drawing operations are very slow when using 24 bit per - pixel depth mode. We hope to fix this in a future release. + <item>Certain drawing operations are very slow when using 24 bit + pixel depth mode. </itemize> <sect>Author <p> <itemize> - <item>Kevin E. Martin <it><kevin@precisioninsight.com></it> + <item>Original version by Kevin E Martin + <email>kevin@precisioninsight.com</email> + <item>Daryll Strauss <email>daryll@precisioninsight.com</email> </itemize> This driver was donated to The XFree86 Project by: @@ -140,8 +151,5 @@ <htmlurl name="http://www.precisioninsight.com" url="http://www.precisioninsight.com"> -<verb> -$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/i740.sgml,v 1.2 1999/08/23 06:18:34 dawes Exp $ -</verb> </article> Index: xc/programs/Xserver/hw/xfree86/doc/sgml/i810.sgml diff -u /dev/null xc/programs/Xserver/hw/xfree86/doc/sgml/i810.sgml:1.2 --- /dev/null Wed Mar 8 16:30:59 2000 +++ xc/programs/Xserver/hw/xfree86/doc/sgml/i810.sgml Wed Mar 8 16:31:00 2000 @@ -0,0 +1,125 @@ +<!DOCTYPE linuxdoc PUBLIC "-//XFree86//DTD linuxdoc//EN" [ +<!ENTITY % defs SYSTEM "defs.ent"> %defs; +]> + +<article> +<title>Information for i810 Users +<author>Precision Insight, Inc. +<date>3 March 2000 +<ident> +$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/i810.sgml,v 1.2 2000/03/04 00:00:30 dawes Exp $ +</ident> +<toc> + +<sect>Supported Hardware +<p> +<itemize> + <item>Intel 810 motherboards: + <itemize> + <item>i810, + <item>i810-dc100, + <item>i810e + </itemize> +</itemize> + + +<sect>Features +<p> +<itemize> + <item>Full support for 8, 15, 16, and 24 bit pixel depths. + <item>Hardware cursor support to reduce sprite flicker. + <item>Hardware accelerated 2D drawing engine support for 8, 15, 16 and + 24 bit pixel depths. + <item>Support for high resolution video modes up to 1600x1200. + <item>Fully programmable clock supported. + <item>Robust text mode restore for VT switching. +</itemize> + + +<sect>Technical Notes +<p> +<itemize> + <item>Hardware acceleration is not possible when using the framebuffer + in 32 bit per pixel format, and this mode is not supported by + this driver. + <item>Interlace modes cannot be supported. + <item>This driver currently only works for Linux/ix86, and normal use + requires the agpgart.o kernel module, included in Linux kernels + 2.3.42 and higher. +</itemize> + + +<sect>Reported Working Video Cards +<p> +<itemize> + <item>Intel evaluation hardware - i810, i810-dc100 and i810e. + <item>Tyan Tomcat Motherboard. + <item>HappyPC set-top box. +</itemize> + + +<sect>Configuration +<p> +The driver auto-detects all device information necessary to +initialize the card. The only lines you need in the "Device" +section of your XF86Config file are: +<verb> + Section "Device" + Identifier "Intel i810" + Driver "i810" + EndSection +</verb> +or let <tt>xf86config</tt> do this for you. + +However, if you have problems with auto-detection, you can specify: +<itemize> + <item>DacSpeed - in MHz + <item>MemBase - physical address of the linear framebuffer + <item>IOBase - physical address of the memory mapped IO registers +</itemize> + +In order to use most resolutions, it is necessary to install the +'agpgart.o' module. You will probably have to compile the module yourself +(see the notes in the module). + +Note: the i810 driver detects whether your motherboard has display cache +video memory. This memory is has reduced bandwidth compared to normal +system memory, and isn't used by the server. The main function of this +memory is for ancillary buffers (eg. z buffer) in a forthcoming 3d +capable server. + + +<sect>Driver Options +<p> +<itemize> + <item>"NoAccel" - Turn off hardware acceleration + <item>"SWCursor" - Request a software cursor (hardware is default) + <item>"Dac6Bit" - Force the use of a 6 Bit Dac (8 Bit is the default) +</itemize> + +<sect>Known Limitations +<p> +<itemize> + <item>No 3D support in this release. + <item>Running two X servers on different VTs is not supported at this time. +</itemize> + + +<sect>Author +<p> +<itemize> + <item>Keith Whitwell +</itemize> + +This driver was donated to The XFree86 Project by: +<verb> + Precision Insight, Inc. + Cedar Park, TX + USA +</verb> + +<htmlurl name="http://www.precisioninsight.com" + url="http://www.precisioninsight.com"> + + +</article> Index: xc/programs/Xserver/hw/xfree86/doc/sgml/index.pre diff -u xc/programs/Xserver/hw/xfree86/doc/sgml/index.pre:1.3 xc/programs/Xserver/hw/xfree86/doc/sgml/index.pre:1.6 --- xc/programs/Xserver/hw/xfree86/doc/sgml/index.pre:1.3 Tue Aug 31 04:39:09 1999 +++ xc/programs/Xserver/hw/xfree86/doc/sgml/index.pre Wed Mar 8 16:31:00 2000 @@ -7,10 +7,10 @@ <!-- Title information --> <title>Documentation for XFree86™ version &relvers; <author>The XFree86 Project, Inc -<date>31 August 1999 +<date>8 March 2000 <!-- -$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/index.pre,v 1.3 1999/08/31 08:39:09 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/index.pre,v 1.6 2000/03/08 05:38:44 dawes Exp $ --> <p> Index: xc/programs/Xserver/hw/xfree86/doc/sgml/isc.sgml diff -u xc/programs/Xserver/hw/xfree86/doc/sgml/isc.sgml:3.22 xc/programs/Xserver/hw/xfree86/doc/sgml/isc.sgml:3.24 --- xc/programs/Xserver/hw/xfree86/doc/sgml/isc.sgml:3.22 Sat Aug 28 06:43:33 1999 +++ xc/programs/Xserver/hw/xfree86/doc/sgml/isc.sgml Wed Mar 8 16:31:00 2000 @@ -7,10 +7,10 @@ <!-- made up title --> <title> Information for ISC Users <author> Michael Rohleder -<date> 06 March 1999 +<date> 05 March 2000 <ident> -$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/isc.sgml,v 3.22 1999/08/28 10:43:33 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/isc.sgml,v 3.24 2000/03/06 22:59:25 dawes Exp $ </ident> <toc> @@ -35,6 +35,13 @@ Server with X11R5 and X11R4 clients. And only compile clients who need the new facilities provided in the X11R6 Libraries against them. +<code> +Please note: + XFree86 Version 4.0 will be the last version which is known + to compile on Interactive Unix. + I've only tested this version on Interactive Unix, Version 4.1mu. +</code> + <sect> Things needed for compiling the sources<p> <descrip> @@ -336,33 +343,6 @@ </itemize> -<sect>XKeyboard Extension<p> - -<itemize> -<item>Sample Setup … <p> -Here is a sample XKeyboard Definition to include inside the Keyboard Section -of your XF86Config File. -<verb> - Xkbkeycodes "xfree86" -/* XkbSymbols "us(pc101)+de_nodead" */ -/* This has changed between 3.1.2E and 3.1.2F */ -/* it is now: */ - XkbSymbols "us(pc102)+de(nodeadkeys)" - XkbTypes "default" - XkbCompat "default" - XkbGeometry "pc" -</verb> - -or you could use this one with the new Options: -<verb> - XkbRules "xfree86" - XkbModel "pc102" - XkbLayout "de" - XkbVariant "nodeadkeys" -</verb> - -</itemize> - <sect> Multibuffer Extension <p> This is an obsolete Extension. Anyway, if you want to include this Extension @@ -372,72 +352,44 @@ <sect> Default Definitions <p> -These are default options defined inside isc.cf. +These are default options defined inside isc.cf. You can redefine them inside host.def. +Here is a sample host.def (the one I use for XFree86 4.0): + <verb> -/* Disable the use of /var/X11 */ -#ifndef HasVarDirectory -#define HasVarDirectory NO -#endif -/* Use mmap Driver */ -#ifndef HasSVR3mmapDrv -# define HasSVR3mmapDrv YES -#endif +/* Disable the use of /var/X11 and /etc/X11 */ +#define HasVarDirectory NO +#define UseEtcX11 NO /* Use inline Math from linux ;-) package inline-math-2.6.tar.gz */ /* should be available on your favorite linux ftp */ -#ifndef UseInlineMath # define UseInlineMath YES -#endif /* Use cbrt from liboptm.a (Interactive icc Compiler) */ -#ifndef HasCbrt # define HasCbrt YES -#endif /* Use GNUs MallocLibrary (and the Location for the Lib) */ -#ifndef UseGnuMalloc # define UseGnuMalloc YES -#endif - -/* Install Zlib Headers - used in lib/zlib/Imakefile */ -#ifndef OsNeedZlibHeaders -# define OsNeedZlibHeaders YES -#endif /* Expand Manual Pages (needs S5L) */ -#ifndef ExpandManNames # define ExpandManNames YES -#endif /* if you have groff or the TextProcessingWorkbench - don't preformat*/ -#ifndef FormattedManPages # define FormattedManPages NO -#endif - -#ifndef HasSgmlFmt /* HasLinuxDoc */ -# define HasSgmlFmt YES -#endif /* XF86Setup Util */ -#ifndef HasTk -#define HasTk YES -#define HasTcl YES -#endif +# define HasTk YES +# define HasTcl YES -#ifndef HasPosixRegex /* Need extra/regex since 3.9Ns */ -#define HasPosixRegex NO -#endif - -#ifndef DoLoadableServer -#define DoLoadableServer YES -#endif +/* use doctools */ +# define HasSgmlFmt YES +# define BuildAllDocs YES +# define BuildLinuxDocText NO +# define BuildLinuxDocPS NO -#ifndef CpuOption -#define CpuOption -mpentium -#endif +#define GlxBuiltInMesa YES </verb> @@ -456,10 +408,6 @@ </verb> to install the compressed nroff versions of the manual pages into /usr/X11R6/man. This directory will be generated if it doesn't exist. -<verb> -make install.linkkit -</verb> -to install the server binary LinkKit into /usr/X11R6/lib/Server. <code> You should tune the Kernel using the command-file @@ -516,20 +464,6 @@ <item>Xprt:<p> The new Xprint Server is configured to use lpr as its print helper so you have to install and configure lpr to use Xprt.<p> - -<item>Keyboard:<p> - You don't need any modmap-File to get your keyboard - working with any iso-8859-1 Font. Simply enable - - <itemize> - <item>LeftAlt Meta - - <item>RightAlt ModeShift - - <item>RightCtl Compose - </itemize> - - in your XF86Config - Section "Keyboard" <item>xpcterm: <p> if you want to get the German 'Umlaut' inside your ISC X11R4 client Index: xc/programs/Xserver/hw/xfree86/doc/sgml/mouse.sgml diff -u xc/programs/Xserver/hw/xfree86/doc/sgml/mouse.sgml:1.9 xc/programs/Xserver/hw/xfree86/doc/sgml/mouse.sgml:1.11 --- xc/programs/Xserver/hw/xfree86/doc/sgml/mouse.sgml:1.9 Wed Mar 8 16:31:00 2000 +++ xc/programs/Xserver/hw/xfree86/doc/sgml/mouse.sgml Wed Mar 8 16:31:00 2000 @@ -8,7 +8,7 @@ <date>9 February 2000 <ident> -$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/mouse.sgml,v 1.9 2000/02/12 20:45:20 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/mouse.sgml,v 1.11 2000/03/01 00:25:23 dawes Exp $ </ident> <toc> @@ -440,7 +440,7 @@ </verb> <sect1>ZAxisMappping <p> -This option maps the Z axis (wheel) motion to a pair of buttons or to +This option maps the Z axis (wheel) motion to buttons or to another axis. <verb> @@ -460,12 +460,25 @@ their actions won't be detected by the X server. The last example is useful for the mouse with two wheels of which -the second wheel is used to generate horizontal scroll action. +the second wheel is used to generate horizontal scroll action, +and the mouse which has a knob or a stick which can detect the horizontal +force applied by the user. The motion of the second wheel will be mapped to the buttons <tt>N3</tt>, for the negative direction, and <tt>N4</tt>, for the positive direction. If the buttons <tt>N3</tt> and <tt>N4</tt> actually exist in this mouse, their actions won't be detected by the X server. +NOTE #1: horizontal movement may not always be detected +by the current version of the XFree86 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 mounted vertically, +and the direction of the second vertical wheel does not match the +first one's. + Currently this option can not be set in the <tt>XF86Setup</tt> program. You need to edit the <tt>XF86Config</tt> file by hand to add this option. @@ -933,7 +946,7 @@ xmodmap -e "pointer = 1 6 3 2 4 5" </verb> -After this command is run, the correspondance between the buttons and +After this command is run, the correspondence between the buttons and button numbers will be as shown in the following table. <verb> @@ -964,7 +977,7 @@ The IntelliMouse Explorer has 5 buttons, thus, you should give "7" to the <tt>Buttons</tt> option if you want to map the wheel movement to buttons (6 and 7). -With this configuration, the correspondance between the buttons and +With this configuration, the correspondence between the buttons and button numbers will be as follows: <verb> Index: xc/programs/Xserver/hw/xfree86/doc/sgml/r128.sgml diff -u xc/programs/Xserver/hw/xfree86/doc/sgml/r128.sgml:1.4 xc/programs/Xserver/hw/xfree86/doc/sgml/r128.sgml:1.7 --- xc/programs/Xserver/hw/xfree86/doc/sgml/r128.sgml:1.4 Wed Mar 8 16:31:00 2000 +++ xc/programs/Xserver/hw/xfree86/doc/sgml/r128.sgml Wed Mar 8 16:31:00 2000 @@ -8,11 +8,8 @@ <date>12 November 1999 <ident> -$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/r128.sgml,v 1.4 2000/01/24 19:38:30 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/r128.sgml,v 1.7 2000/03/08 15:14:48 dawes Exp $ </ident> -<!-- -$PI: xc/programs/Xserver/hw/xfree86/doc/sgml/r128.sgml,v 1.2 1999/10/21 20:51:15 faith Exp $ ---> <toc> @@ -27,7 +24,7 @@ <p> <itemize> <item>Full support (including hardware accelerated 2D drawing) for 8, 15, - 16, 24, and 32 bit per pixel depths. + 16, 24 bit pixel depths. <item>Hardware cursor support to reduce sprite flicker. <item>Support for high resolution video modes up to 1800x1440 @ 70Hz. <item>Support for doublescan video modes (e.g., 320x200 and 320x240). @@ -60,11 +57,11 @@ section of your XF86Config file are: <verb> Section "Device" - Identifier "Rage 128" - Driver "r128" + Identifier "Rage 128" + Driver "r128" EndSection </verb> -or let xf86config or XF86Setup do this for you. +or let <tt>xf86config</tt> do this for you. However, if you have problems with auto-detection, you can specify: <itemize> @@ -89,19 +86,19 @@ <sect>Known Limitations <p> <itemize> - <item>None + <item>DGA is not supported yet </itemize> <sect>Authors <p> -The XFree86 3.9 driver was ported from XFree86 3.3 and enhanced by: +The XFree86 4 driver was ported from XFree86 3.3.x and enhanced by: <itemize> <item>Rickard E. (Rik) Faith <email>faith@precisioninsight.com</email> <item>Kevin E. Martin <email>kevin@precisioninsight.com</email> </itemize> <p> -The XFree86 3.9 driver was funded by ATI and was donated to The XFree86 +The XFree86 4 driver was funded by ATI and was donated to The XFree86 Project by: <verb> Precision Insight, Inc. @@ -109,12 +106,12 @@ USA </verb> <p> -The XFree86 3.3 driver used for the port was written by: +The XFree86 3.3.x driver used for the port was written by: <itemize> <item>Rickard E. (Rik) Faith <email>faith@precisioninsight.com</email> <item>Kevin E. Martin <email>kevin@precisioninsight.com</email> </itemize> -The XFree86 3.3 driver was funded by ATI and was donated to The XFree86 +The XFree86 3.3.x driver was funded by ATI and was donated to The XFree86 Project by Precision Insight, Inc. It was based in part on an earlier driver that was written by: <itemize> Index: xc/programs/Xserver/hw/xfree86/doc/sgml/rendition.sgml diff -u xc/programs/Xserver/hw/xfree86/doc/sgml/rendition.sgml:1.6 xc/programs/Xserver/hw/xfree86/doc/sgml/rendition.sgml:1.8 --- xc/programs/Xserver/hw/xfree86/doc/sgml/rendition.sgml:1.6 Wed Mar 8 16:31:00 2000 +++ xc/programs/Xserver/hw/xfree86/doc/sgml/rendition.sgml Wed Mar 8 16:31:00 2000 @@ -8,14 +8,14 @@ <date>12 December 1999 <ident> -$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/rendition.sgml,v 1.6 2000/01/24 19:38:30 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/rendition.sgml,v 1.8 2000/03/01 23:54:34 dawes Exp $ </ident> <toc> <sect>Supported hardware <p> All cards based on the V1000 or the V2x00 should be supported. The server -was tested on a miroCRYSTAL VRX (V1000), Intergraph Intense-100 3D (V1000), Diamond Stealth II S220 (V2100), Hercules Thriller3D (V2200) and Innovision Warrior3D (V2200). +was tested on a miroCRYSTAL VRX (V1000), Intergraph Intense-100 3D (V1000), Diamond Stealth II S220 (V2100), Hercules Thriller3D (V2200), Innovision Warrior3D (V2200) and Genoa V-Raptor (v2200). <sect>Limitations <p> V1000 cards can only work as primary display card due to hardware limitations. <p> @@ -56,6 +56,20 @@ If writecombine is disabled in BIOS, and you add this option in in configuration file, then the driver will try to request writecombined access to the framebuffer. This can drastically increase the performance on unaccelerated server. Requires that "MTRR"-support is compiled into the OS-kernel. <tag>Option "NoDDC"</tag> Disable probing of DDC-information from your monitor. This information is not used yet and is only there for informational purposes. This might change before final XFree86 4.0 release. Safe to disable if you experience problems during startup of X-server. +<tag>Option "ShadowFB"</tag> +If this option is enabled, the driver will cause the CPU to do each drawing +operation first into a shadow frame buffer in system virtual memory and then +copy the result into video memory. +If this option is not active, the CPU will draw directly into video memory. +Enabling this option is beneficial for those systems where reading from video +memory is, on average, slower than the corresponding read/modify/write +operation in system virtual memory. +This is normally the case for PCI or AGP adapters, and, so, this option is +enabled by default unless acceleration is enabled. +<tag>Option "Rotate"</tag> +The option expect a value "CW" for clockwise or "CCW" for counterclockwise rotation of the screen. This is useful when you need more height then width on the screen. Desktop publishing is one example where a monitor could display the whole page at once on a monitor laying on the side. +Notice that this option requires "ShadowFB" and automatically enable it. It also disables the acceleration. +The option is not activated by default. </descrip> <sect>News in this release <p> @@ -63,9 +77,15 @@ <item>Acceleration! Disabled for the moment. </itemize> -<sect>Major fixes in this release <p> +<sect>Major changes in this release <p> <itemize> +<item>ShadowFB support added <item>To be determined before final release. +</itemize> + +<sect>Bugfixes<p> +<itemize> +<item>8bpp finally works correctly again </itemize> <sect>Known problems in current driver<p> Index: xc/programs/Xserver/hw/xfree86/drivers/Imakefile diff -u xc/programs/Xserver/hw/xfree86/drivers/Imakefile:1.14 xc/programs/Xserver/hw/xfree86/drivers/Imakefile:1.15 --- xc/programs/Xserver/hw/xfree86/drivers/Imakefile:1.14 Fri Nov 19 08:54:29 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/Imakefile Wed Mar 8 16:31:00 2000 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/Imakefile,v 1.14 1999/11/19 13:54:29 hohndel Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/Imakefile,v 1.15 2000/03/08 04:05:04 robin Exp $ #define IHaveModules #include <Server.tmpl> @@ -15,7 +15,7 @@ cirrus/?*.o cl64xx/?*.o compaq/?*.o et3000/?*.o glint/?*.o \ gvga/?*.o hercules/?*.o hgc1280/?*.o mga/?*.o ncr/?*.o \ nv/?*.o s3_pio/?*.o s3_newmmio/?*.o sigma/?*.o tseng/?*.o \ - vga/?*.o video7/?*.o wd/?*.o i740/?*.o r128/?.o + vga/?*.o video7/?*.o wd/?*.o i740/?*.o r128/?*.o #endif Index: xc/programs/Xserver/hw/xfree86/drivers/apm/Imakefile diff -u xc/programs/Xserver/hw/xfree86/drivers/apm/Imakefile:1.16 xc/programs/Xserver/hw/xfree86/drivers/apm/Imakefile:1.17 --- xc/programs/Xserver/hw/xfree86/drivers/apm/Imakefile:1.16 Wed Mar 8 16:31:00 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/apm/Imakefile Wed Mar 8 16:31:00 2000 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/apm/Imakefile,v 1.16 2000/02/12 02:54:40 dawes Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/apm/Imakefile,v 1.17 2000/03/03 01:05:33 dawes Exp $ #define IHaveModules #include <Server.tmpl> @@ -37,6 +37,11 @@ ObjectModuleTarget(apm,$(OBJS)) InstallObjectModule(apm,$(MODULEDIR),drivers) + +#if !defined(XF86DriverSDK) +CppManTarget(apm,) +InstallModuleManPage(apm) +#endif DependTarget() Index: xc/programs/Xserver/hw/xfree86/drivers/apm/apm.cpp diff -u /dev/null xc/programs/Xserver/hw/xfree86/drivers/apm/apm.cpp:1.1 --- /dev/null Wed Mar 8 16:31:00 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/apm/apm.cpp Wed Mar 8 16:31:00 2000 @@ -0,0 +1,30 @@ +.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/apm/apm.cpp,v 1.1 2000/03/03 01:05:33 dawes Exp $ +.TH APM __drivermansuffix__ "Version 4.0" "XFree86" +.SH NAME +apm \- Alliance ProMotion video driver +.SH SYNOPSIS +.B "Section ""Device""" +.br +.BI " Identifier """ devname """" +.br +.B " Driver ""apm""" +.br +\ \ ... +.br +.B EndSection +.SH DESCRIPTION +.B apm +is an XFree86 driver for Alliance ProMotion video cards. +THIS MAN PAGE NEEDS TO BE FILLED IN. +.SH SUPPORTED HARDWARE +The +.B apm +driver supports... +.SH CONFIGURATION DETAILS +Please refer to XF86Config(__filemansuffix__) for general configuration +details. This section only covers configuration details specific to this +driver. +.SH "SEE ALSO" +XFree86(1), XF86Config(__filemansuffix__), xf86config(1), Xserver(1), X(1) +.SH AUTHORS +Authors include: ... Index: xc/programs/Xserver/hw/xfree86/drivers/apm/apm.h diff -u xc/programs/Xserver/hw/xfree86/drivers/apm/apm.h:1.12 xc/programs/Xserver/hw/xfree86/drivers/apm/apm.h:1.13 --- xc/programs/Xserver/hw/xfree86/drivers/apm/apm.h:1.12 Wed Mar 8 16:31:00 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/apm/apm.h Wed Mar 8 16:31:00 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/apm/apm.h,v 1.12 2000/02/14 19:20:45 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/apm/apm.h,v 1.13 2000/02/29 03:09:17 dawes Exp $ */ /* Everything using inb/outb, etc needs "compiler.h" */ @@ -121,7 +121,7 @@ int xbase; unsigned char savedSR10; CARD8 MiscOut; - CARD8 c9, d9, db; + CARD8 c9, d9, db, Rush; unsigned long saveCmd; pointer FontInfo; Bool hwCursor; Index: xc/programs/Xserver/hw/xfree86/drivers/apm/apm_driver.c diff -u xc/programs/Xserver/hw/xfree86/drivers/apm/apm_driver.c:1.33 xc/programs/Xserver/hw/xfree86/drivers/apm/apm_driver.c:1.38 --- xc/programs/Xserver/hw/xfree86/drivers/apm/apm_driver.c:1.33 Wed Mar 8 16:31:01 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/apm/apm_driver.c Wed Mar 8 16:31:01 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/apm/apm_driver.c,v 1.33 2000/02/21 19:22:56 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/apm/apm_driver.c,v 1.38 2000/03/08 19:25:09 dawes Exp $ */ #include "apm.h" @@ -375,8 +375,6 @@ EntityInfoPtr pEnt; int foundScreen = FALSE; - if (flags & PROBE_DETECTFBDEV) return FALSE; - /* * Check if there is a chipset override in the config file */ @@ -397,12 +395,10 @@ ApmChipsets, ApmPciChipsets, DevSections, numDevSections, drv, &usedChips); - if ((numUsed > 0) && (flags & PROBE_DETECTPCI)) - return TRUE; - if ((numUsed <= 0) && (flags & PROBE_DETECTPCI)) - return FALSE; if (numUsed > 0) { - for (i = 0; i < numUsed; i++) { + if (flags & PROBE_DETECT) + foundScreen = TRUE; + else for (i = 0; i < numUsed; i++) { pEnt = xf86GetEntityInfo(usedChips[i]); if (pEnt && pEnt->active) { @@ -430,9 +426,9 @@ ApmIsaChipsets, drv, ApmFindIsaDevice, DevSections, numDevSections, &usedChips); if (numUsed > 0) { - if (flags & PROBE_DETECTISA) - return TRUE; - for (i = 0; i < numUsed; i++) { + if (flags & PROBE_DETECT) + foundScreen = TRUE; + else for (i = 0; i < numUsed; i++) { ScrnInfoPtr pScrn = xf86AllocateScreen(drv,0); /* @@ -444,9 +440,10 @@ NULL, NULL, NULL, NULL, NULL); } } +#if 0 /* This causes problems with -configure? */ if (DevSections) xfree(DevSections); - DevSections = NULL; +#endif return foundScreen; } @@ -495,6 +492,8 @@ xf86MonPtr MonInfo = NULL; double real; + if (flags & PROBE_DETECT) return FALSE; + /* * Note: This function is only called once at server startup, and * not at the start of each server generation. This means that @@ -2053,7 +2052,7 @@ if (pApm->Chipset >= AT3D) { if (!pApm->noLinear) { /* If you change it, change it also in apm_funcs.c */ - WRXB(0xDB, (pApm->db & 0xF4) | 0x0A); + WRXB(0xDB, (pApm->db & 0xF4) | 0x0A | pApm->Rush); WRXB(0xD9, (pApm->d9 & 0xCF) | 0x20); } else { @@ -2068,9 +2067,10 @@ * Set color mode */ hwp->writeMiscOut(hwp, pApm->MiscOut | 0x0F); - /* Should we re-save the text mode on each VT enter? */ + if (!ApmModeInit(pScrn, pScrn->currentMode)) return FALSE; + ApmAdjustFrame(scrnIndex, pScrn->frameX0, pScrn->frameY0, 0); return TRUE; } Index: xc/programs/Xserver/hw/xfree86/drivers/apm/apm_regs.h diff -u xc/programs/Xserver/hw/xfree86/drivers/apm/apm_regs.h:1.6 xc/programs/Xserver/hw/xfree86/drivers/apm/apm_regs.h:1.7 --- xc/programs/Xserver/hw/xfree86/drivers/apm/apm_regs.h:1.6 Wed Mar 8 16:31:01 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/apm/apm_regs.h Wed Mar 8 16:31:01 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/apm/apm_regs.h,v 1.6 2000/02/14 19:20:47 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/apm/apm_regs.h,v 1.7 2000/02/29 03:09:18 dawes Exp $ */ @@ -214,3 +214,6 @@ #define DEC_QUICKSTART_NONE (0 << 29) #define DEC_START (1 << 31) #define DEC_START_NO (0 << 31) + +#define AT3D_SST_STATUS 0x1F4 +#define SST_BUSY 1 Index: xc/programs/Xserver/hw/xfree86/drivers/apm/apm_rush.c diff -u xc/programs/Xserver/hw/xfree86/drivers/apm/apm_rush.c:1.6 xc/programs/Xserver/hw/xfree86/drivers/apm/apm_rush.c:1.8 --- xc/programs/Xserver/hw/xfree86/drivers/apm/apm_rush.c:1.6 Wed Mar 8 16:31:01 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/apm/apm_rush.c Wed Mar 8 16:31:01 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/apm/apm_rush.c,v 1.6 2000/02/14 19:20:47 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/apm/apm_rush.c,v 1.8 2000/02/29 17:32:54 tsi Exp $ */ /* * Copyright Loïc Grenié 1999 */ @@ -6,6 +6,8 @@ #include "apm.h" #include "xaalocal.h" +extern DriverRec APM; + static Bool RushDestroyPixmap(PixmapPtr); static __inline__ void __xf86UnlockPixmap(ApmPtr, PixmapLinkPtr); static int xf86RushLockPixmap(int, PixmapPtr); @@ -43,7 +45,7 @@ FBAreaPtr area = pXAAPriv->offscreenArea; int p2, width = (pScrn->displayWidth * pScrn->bitsPerPixel) / 8; - if (strcmp(pScrn->chipset, "AT3D")) + if (pScrn->drv != &APM || pApm->Chipset != AT3D) return 0; pApm->apmLock = TRUE; pApmPriv->num = 0; @@ -235,7 +237,8 @@ area->RemoveAreaCallback = pApmPriv->RemoveAreaCallback; area->devPrivate.ptr = pApmPriv->devPriv; } - if (i = pApmPriv->num) { + i = pApmPriv->num; + if (i) { pApm->RushY[i - 1] = 0; pix->drawable.y %= pApm->CurrentLayout.Scanlines; } @@ -247,7 +250,7 @@ APMDECL(xf86Screens[scrnIndex]); PixmapLinkPtr pLink = GET_XAAINFORECPTR_FROM_SCREEN(xf86Screens[scrnIndex]->pScreen)->OffscreenPixmaps; - if (pApm->Chipset != AT3D) + if (xf86Screens[scrnIndex]->drv != &APM || pApm->Chipset != AT3D) return; if (pApm->apmLock) { /* @@ -255,12 +258,18 @@ * registers. */ if (!pApm->noLinear) { - WRXB(0xDB, (RDXB(0xDB) & 0xF4) | 0x0A); + CARD8 db; + + db = RDXB(0xDB); + WRXB(0xDB, (db & 0xF4) | 0x0A); ApmWriteSeq(0x1B, 0x20); ApmWriteSeq(0x1C, 0x2F); } else { - WRXB_IOP(0xDB, (RDXB_IOP(0xDB) & 0xF4) | 0x0A); + CARD8 db; + + db = RDXB_IOP(0xDB); + WRXB_IOP(0xDB, (db & 0xF4) | 0x0A); wrinx(0x3C4, 0x1B, 0x20); wrinx(0x3C4, 0x1C, 0x2F); } @@ -278,12 +287,14 @@ int scrnIndex; for (scrnIndex = 0; scrnIndex < screenInfo.numScreens; scrnIndex++) { - PixmapLinkPtr pLink = GET_XAAINFORECPTR_FROM_SCREEN(xf86Screens[scrnIndex]->pScreen)->OffscreenPixmaps; + ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; + APMDECL(pScrn); + PixmapLinkPtr pLink = GET_XAAINFORECPTR_FROM_SCREEN(pScrn->pScreen)->OffscreenPixmaps; - if (APMPTR(xf86Screens[scrnIndex])->Chipset != AT3D) + if (pScrn->drv != &APM || pApm->Chipset != AT3D) continue; while(pLink) { - __xf86UnlockPixmap(APMPTR(xf86Screens[scrnIndex]), pLink); + __xf86UnlockPixmap(pApm, pLink); pLink = pLink->next; } } @@ -317,6 +328,9 @@ static DISPATCH_PROC(ProcXF86RushSetCopyMode); static DISPATCH_PROC(ProcXF86RushSetPixelStride); static DISPATCH_PROC(ProcXF86RushOverlayPixmap); +static DISPATCH_PROC(ProcXF86RushStatusRegOffset); +static DISPATCH_PROC(ProcXF86RushAT3DEnableRegs); +static DISPATCH_PROC(ProcXF86RushAT3DDisableRegs); static int rush_ext_generation = -1; @@ -334,7 +348,8 @@ return; #endif if (rush_ext_generation == serverGeneration) { - if (APMPTR(xf86Screens[pScreen->myNum])-> Chipset == AT3D) { + if (xf86Screens[pScreen->myNum]->drv == &APM && + APMPTR(xf86Screens[pScreen->myNum])->Chipset == AT3D) { pScreen->CreatePixmap = RushCreatePixmap; pScreen->DestroyPixmap = RushDestroyPixmap; } @@ -350,7 +365,8 @@ StandardMinorOpcode))) { RushReqCode = (unsigned char)extEntry->base; RushErrorBase = extEntry->errorBase; - if (APMPTR(xf86Screens[pScreen->myNum])-> Chipset == AT3D) { + if (xf86Screens[pScreen->myNum]->drv == &APM && + APMPTR(xf86Screens[pScreen->myNum])->Chipset == AT3D) { pScreen->CreatePixmap = RushCreatePixmap; pScreen->DestroyPixmap = RushDestroyPixmap; } @@ -383,7 +399,7 @@ swaps(&rep.sequenceNumber, n); swapl(&rep.length, n); } - WriteToClient(client, sizeof(xXF86RushQueryVersionReply), (char *)&rep); + WriteToClient(client, sz_xXF86RushQueryVersionReply, (char *)&rep); return (client->noClientException); } @@ -480,6 +496,12 @@ return ProcXF86RushSetPixelStride(client); case X_XF86RushOverlayPixmap: return ProcXF86RushOverlayPixmap(client); + case X_XF86RushStatusRegOffset: + return ProcXF86RushStatusRegOffset(client); + case X_XF86RushAT3DEnableRegs: + return ProcXF86RushAT3DEnableRegs(client); + case X_XF86RushAT3DDisableRegs: + return ProcXF86RushAT3DDisableRegs(client); default: return BadRequest; } @@ -516,7 +538,8 @@ VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, pGC, client); pScrn = xf86Screens[pDraw->pScreen->myNum]; - if (strcmp(pScrn->chipset, "AT3D")) + pApm = APMPTR(pScrn); + if (pScrn->drv != &APM || pApm->Chipset != AT3D) return (_XvBadPort); if(!(pPort = LOOKUP_PORT(stuff->port, client) )) { @@ -583,4 +606,119 @@ pApm->PutImageStride = 0; return status; +} + +static int +ProcXF86RushStatusRegOffset(ClientPtr client) +{ + int scrnIndex; + ScrnInfoPtr pScrn; + ApmPtr pApm; + REQUEST(xXF86RushStatusRegOffsetReq); + xXF86RushStatusRegOffsetReply rep; + register int n; + + REQUEST_SIZE_MATCH(xXF86RushStatusRegOffsetReq); + scrnIndex = stuff->screen; + if (scrnIndex < 0 || scrnIndex > screenInfo.numScreens) + return BadValue; + pScrn = xf86Screens[scrnIndex]; + pApm = APMPTR(pScrn); + if (pScrn->drv != &APM || pApm->Chipset != AT3D) + return BadMatch; + rep.type = X_Reply; + rep.length = 0; + rep.sequenceNumber = client->sequence; + rep.offset = 0xFFEDF4; + if (client->swapped) { + swapl(&rep.offset, n); + } + WriteToClient(client, sz_xXF86RushStatusRegOffsetReply, (char *)&rep); + + return client->noClientException; +} + +static int +ProcXF86RushAT3DEnableRegs(ClientPtr client) +{ + u32 db, tmp; + int scrnIndex; + ScrnInfoPtr pScrn; + ApmPtr pApm; + REQUEST(xXF86RushAT3DEnableRegsReq); + + REQUEST_SIZE_MATCH(xXF86RushAT3DEnableRegsReq); + scrnIndex = stuff->screen; + if (scrnIndex < 0 || scrnIndex > screenInfo.numScreens) + return BadValue; + pScrn = xf86Screens[scrnIndex]; + pApm = APMPTR(pScrn); + if (pScrn->drv != &APM || pApm->Chipset != AT3D) + return BadMatch; + pApm->Rush = 0x04; + if (!pApm->noLinear) { + db = RDXL(0xDB); + WRXL(0xDB, db | 0x04); + WRXB(0x110, 0x03); + tmp = RDXB(0x1F0); + WRXB(0x1F0, tmp | 0xD0); + tmp = RDXB(0x1F1); + WRXB(0x1F1, (tmp & ~0xC0) | 0x10); + tmp = RDXB(0x1F2); + WRXB(0x1F2, tmp | 0x10); + } + else { + db = RDXL(0xDB); + WRXL_IOP(0xDB, db | 0x04); + WRXB_IOP(0x110, 0x03); + tmp = RDXB_IOP(0x1F0); + WRXB_IOP(0x1F0, tmp | 0xD0); + tmp = RDXB_IOP(0x1F1); + WRXB_IOP(0x1F1, (tmp & ~0xC0) | 0x10); + tmp = RDXB_IOP(0x1F2); + WRXB_IOP(0x1F2, tmp | 0x10); + } + + return client->noClientException; +} + +static int +ProcXF86RushAT3DDisableRegs(ClientPtr client) +{ + u32 db, tmp; + int scrnIndex; + ScrnInfoPtr pScrn; + ApmPtr pApm; + REQUEST(xXF86RushAT3DDisableRegsReq); + + REQUEST_SIZE_MATCH(xXF86RushAT3DDisableRegsReq); + scrnIndex = stuff->screen; + if (scrnIndex < 0 || scrnIndex > screenInfo.numScreens) + return BadValue; + pScrn = xf86Screens[scrnIndex]; + pApm = APMPTR(pScrn); + if (pScrn->drv != &APM || pApm->Chipset != AT3D) + return BadMatch; + if (!pApm->noLinear) { + tmp = RDXB(0x1F2); + WRXB(0x1F2, tmp & ~0x10); + tmp = RDXB(0x1F0); + WRXB(0x1F0, tmp & ~0xD0); + WRXB(0x110, 0); + pApm->Rush = 0x00; + db = RDXL(0xDB); + WRXL(0xDB, db & ~0x04); + } + else { + tmp = RDXB_IOP(0x1F2); + WRXB_IOP(0x1F2, tmp & ~0x10); + tmp = RDXB_IOP(0x1F0); + WRXB_IOP(0x1F0, tmp & ~0xD0); + WRXB_IOP(0x110, 0); + pApm->Rush = 0x00; + db = RDXL_IOP(0xDB); + WRXL_IOP(0xDB, db & ~0x04); + } + + return client->noClientException; } Index: xc/programs/Xserver/hw/xfree86/drivers/apm/apm_video.c diff -u xc/programs/Xserver/hw/xfree86/drivers/apm/apm_video.c:1.4 xc/programs/Xserver/hw/xfree86/drivers/apm/apm_video.c:1.6 --- xc/programs/Xserver/hw/xfree86/drivers/apm/apm_video.c:1.4 Wed Mar 8 16:31:01 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/apm/apm_video.c Wed Mar 8 16:31:01 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/apm/apm_video.c,v 1.4 2000/02/14 19:20:47 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/apm/apm_video.c,v 1.6 2000/02/29 03:09:18 dawes Exp $ */ #if PSZ != 24 #include "dixstruct.h" @@ -49,7 +49,7 @@ int num_adaptors; Bool freeAdaptors = FALSE; - num_adaptors = xf86XVListGenericAdaptors(&adaptors); + num_adaptors = xf86XVListGenericAdaptors(pScrn, &adaptors); if (pApm->Chipset >= AT24) { if ((newAdaptor = A(SetupImageVideo)(pScreen))) { @@ -121,6 +121,7 @@ }; #define NUM_IMAGES 8 +typedef char c8; static XF86ImageRec Images[NUM_IMAGES] = { @@ -197,7 +198,7 @@ XvYUV, LSBFirst, {'Y','V','1','2', - 0x00,0x00,0x00,0x10,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71}, + 0x00,0x00,0x00,0x10,(c8)0x80,0x00,0x00,(c8)0xAA,0x00,0x38,(c8)0x9B,0x71}, 12, XvPlanar, 3, @@ -214,7 +215,7 @@ XvYUV, LSBFirst, {'U','Y','V','Y', - 0x00,0x00,0x00,0x10,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71}, + 0x00,0x00,0x00,0x10,(c8)0x80,0x00,0x00,(c8)0xAA,0x00,0x38,(c8)0x9B,0x71}, 16, XvPlanar, 1, @@ -231,7 +232,7 @@ XvYUV, LSBFirst, {'Y','V','Y','U', - 0x00,0x00,0x00,0x10,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71}, + 0x00,0x00,0x00,0x10,(c8)0x80,0x00,0x00,(c8)0xAA,0x00,0x38,(c8)0x9B,0x71}, 16, XvPlanar, 1, @@ -248,7 +249,7 @@ XvYUV, LSBFirst, {'V','Y','U','Y', - 0x00,0x00,0x00,0x10,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71}, + 0x00,0x00,0x00,0x10,(c8)0x80,0x00,0x00,(c8)0xAA,0x00,0x38,(c8)0x9B,0x71}, 16, XvPlanar, 1, @@ -857,32 +858,35 @@ break; } pPriv->Bps = pPriv->Bpp * pPriv->xden; - offset = (area->box.y1 * pitch) + (top * dstPitch); - dst_start = ((unsigned char *)pApm->FbBase) + (pPriv->data = offset + left); - switch(id) { - case 0x32315659: - top &= ~1; - tmp = ((top >> 1) * srcPitch2) + (left >> 2); - offset2 += tmp; - offset3 += tmp; - nlines = ((((y2 + 0xffff) >> 16) + 1) & ~1) - top; - ApmCopyMungedData(buf + (top * srcPitch) + (left >> 1), - buf + offset2, buf + offset3, dst_start, - srcPitch, srcPitch2, dstPitch, nlines, npixels); - break; - default: - if (id == 0x32335652) - npixels <<= 1; - else if (id == 0x59595959) - npixels >>= 1; - buf += (top * srcPitch) + left; - nlines = ((y2 + 0xffff) >> 16) - top; - if (offscreen) - ApmCopyData(buf, dst_start, srcPitch, dstPitch, nlines, npixels); - else - pPriv->data = buf - (unsigned char *)pApm->FbBase; - break; + if (offscreen) { + offset = (area->box.y1 * pitch) + (top * dstPitch); + dst_start = ((unsigned char *)pApm->FbBase) + + (pPriv->data = offset + left); + switch(id) { + case 0x32315659: + top &= ~1; + tmp = ((top >> 1) * srcPitch2) + (left >> 2); + offset2 += tmp; + offset3 += tmp; + nlines = ((((y2 + 0xffff) >> 16) + 1) & ~1) - top; + ApmCopyMungedData(buf + (top * srcPitch) + (left >> 1), + buf + offset2, buf + offset3, dst_start, + srcPitch, srcPitch2, dstPitch, nlines, npixels); + break; + default: + if (id == 0x32335652) + npixels <<= 1; + else if (id == 0x59595959) + npixels >>= 1; + buf += (top * srcPitch) + left; + nlines = ((y2 + 0xffff) >> 16) - top; + if (offscreen) + ApmCopyData(buf, dst_start, srcPitch, dstPitch, nlines, npixels); + break; + } } + else + pPriv->data = buf - (unsigned char *)pApm->FbBase; pPriv->on = 1; A(WaitForFifo)(pApm, 3); WRXW(pPriv->reg + 0x02, dstPitch >> 2); Index: xc/programs/Xserver/hw/xfree86/drivers/ati/Imakefile diff -u xc/programs/Xserver/hw/xfree86/drivers/ati/Imakefile:1.12 xc/programs/Xserver/hw/xfree86/drivers/ati/Imakefile:1.13 --- xc/programs/Xserver/hw/xfree86/drivers/ati/Imakefile:1.12 Wed Mar 8 16:31:02 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/ati/Imakefile Wed Mar 8 16:31:02 2000 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/Imakefile,v 1.12 2000/02/18 12:19:10 tsi Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/Imakefile,v 1.13 2000/03/03 01:05:34 dawes Exp $ XCOMM XCOMM Copyright 1997 through 2000 by Marc Aurele La France (TSI @ UQV), tsi@ualberta.ca XCOMM @@ -66,9 +66,12 @@ InstallObjectModule(ati,$(MODULEDIR),drivers) -#ifndef OS2Architecture -DependTarget() +#if !defined(XF86DriverSDK) +CppManTarget(ati,) +InstallModuleManPage(ati) #endif + +DependTarget() InstallDriverSDKNonExecFile(Imakefile,$(DRIVERSDKDIR)/drivers/ati) InstallDriverSDKNonExecFile(ati.c,$(DRIVERSDKDIR)/drivers/ati) Index: xc/programs/Xserver/hw/xfree86/drivers/ati/ati.cpp diff -u /dev/null xc/programs/Xserver/hw/xfree86/drivers/ati/ati.cpp:1.1 --- /dev/null Wed Mar 8 16:31:02 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/ati/ati.cpp Wed Mar 8 16:31:02 2000 @@ -0,0 +1,30 @@ +.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/ati.cpp,v 1.1 2000/03/03 01:05:34 dawes Exp $ +.TH ATI __drivermansuffix__ "Version 4.0" "XFree86" +.SH NAME +ati \- ATI video driver +.SH SYNOPSIS +.B "Section ""Device""" +.br +.BI " Identifier """ devname """" +.br +.B " Driver ""ati""" +.br +\ \ ... +.br +.B EndSection +.SH DESCRIPTION +.B ati +is an XFree86 driver for ATI video cards. +THIS MAN PAGE NEEDS TO BE FILLED IN. +.SH SUPPORTED HARDWARE +The +.B ati +driver supports... +.SH CONFIGURATION DETAILS +Please refer to XF86Config(__filemansuffix__) for general configuration +details. This section only covers configuration details specific to this +driver. +.SH "SEE ALSO" +XFree86(1), XF86Config(__filemansuffix__), xf86config(1), Xserver(1), X(1) +.SH AUTHORS +Authors include: ... Index: xc/programs/Xserver/hw/xfree86/drivers/ati/atiio.h diff -u xc/programs/Xserver/hw/xfree86/drivers/ati/atiio.h:1.5 xc/programs/Xserver/hw/xfree86/drivers/ati/atiio.h:1.6 --- xc/programs/Xserver/hw/xfree86/drivers/ati/atiio.h:1.5 Wed Mar 8 16:31:02 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/ati/atiio.h Wed Mar 8 16:31:02 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/atiio.h,v 1.5 2000/02/18 12:19:23 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/atiio.h,v 1.6 2000/03/01 16:00:57 tsi Exp $ */ /* * Copyright 1997 through 2000 by Marc Aurele La France (TSI @ UQV), tsi@ualberta.ca * @@ -117,12 +117,18 @@ { \ while (inw(GP_STAT) & (GPBUSY | 1)); \ } -#define ProbeWaitIdleEmpty() \ - { \ - int _i; \ - for (_i = 0; _i < 100000; _i++) \ - if (!(inw(GP_STAT) & (GPBUSY | 1))) \ - break; \ +#define ProbeWaitIdleEmpty() \ + { \ + int _i; \ + CARD16 _value; \ + for (_i = 0; _i < 100000; _i++) \ + { \ + _value = inw(GP_STAT); \ + if (_value == (CARD16)(-1)) \ + break; \ + if (!(_value & (GPBUSY | 1))) \ + break; \ + } \ } /* Wait until GP has data available */ Index: xc/programs/Xserver/hw/xfree86/drivers/ati/atilock.c diff -u xc/programs/Xserver/hw/xfree86/drivers/ati/atilock.c:1.4 xc/programs/Xserver/hw/xfree86/drivers/ati/atilock.c:1.5 --- xc/programs/Xserver/hw/xfree86/drivers/ati/atilock.c:1.4 Wed Mar 8 16:31:02 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/ati/atilock.c Wed Mar 8 16:31:02 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/atilock.c,v 1.4 2000/02/18 12:19:24 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/atilock.c,v 1.5 2000/03/07 16:13:34 tsi Exp $ */ /* * Copyright 1999 through 2000 by Marc Aurele La France (TSI @ UQV), tsi@ualberta.ca * @@ -113,13 +113,13 @@ outl(pATI->CPIO_GEN_TEST_CNTL, tmp | GEN_GUI_EN); pATI->LockData.crtc_gen_cntl = inl(pATI->CPIO_CRTC_GEN_CNTL) & ~(CRTC_EN | CRTC_LOCK_REGS); - tmp = pATI->LockData.crtc_gen_cntl & ~CRTC_EXT_DISP_EN; + tmp = pATI->LockData.crtc_gen_cntl & ~CRTC_EN; if (pATI->Chip >= ATI_CHIP_264XL) tmp = (tmp & ~CRTC_INT_ENS_X) | CRTC_INT_ACKS_X; outl(pATI->CPIO_CRTC_GEN_CNTL, tmp | CRTC_EN); outl(pATI->CPIO_CRTC_GEN_CNTL, tmp); outl(pATI->CPIO_CRTC_GEN_CNTL, tmp | CRTC_EN); - if (pATI->LCDPanelID >= 0) + if ((pATI->LCDPanelID >= 0) && (pATI->Chip != ATI_CHIP_264LT)) { pATI->LockData.lcd_index = inl(pATI->CPIO_LCD_INDEX); if (pATI->Chip >= ATI_CHIP_264XL) @@ -476,7 +476,7 @@ outl(pATI->CPIO_DAC_CNTL, pATI->LockData.dac_cntl); if (pATI->Chip < ATI_CHIP_264CT) outl(pATI->CPIO_MEM_INFO, pATI->LockData.mem_info); - else if (pATI->LCDPanelID >= 0) + else if ((pATI->LCDPanelID >= 0) && (pATI->Chip != ATI_CHIP_264LT)) outl(pATI->CPIO_LCD_INDEX, pATI->LockData.lcd_index); } } Index: xc/programs/Xserver/hw/xfree86/drivers/ati/atimach64.c diff -u xc/programs/Xserver/hw/xfree86/drivers/ati/atimach64.c:1.10 xc/programs/Xserver/hw/xfree86/drivers/ati/atimach64.c:1.12 --- xc/programs/Xserver/hw/xfree86/drivers/ati/atimach64.c:1.10 Wed Mar 8 16:31:02 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/ati/atimach64.c Wed Mar 8 16:31:02 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/atimach64.c,v 1.10 2000/02/18 12:19:25 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/atimach64.c,v 1.12 2000/03/03 04:47:13 tsi Exp $ */ /* * Copyright 1997 through 2000 by Marc Aurele La France (TSI @ UQV), tsi@ualberta.ca * @@ -350,7 +350,7 @@ pATIHW->config_cntl = inl(pATI->CPIO_CONFIG_CNTL); /* Save draw engine state */ - if ((pATI->OptionAccel) && (pATIHW == &pATI->OldHW)) + if (pATI->OptionAccel && (pATIHW == &pATI->OldHW)) { ATIMach64WaitForIdle(); @@ -634,6 +634,7 @@ /* Load draw engine */ if (pATI->OptionAccel) { + pATI->EngineIsBusy = TRUE; /* Force engine poll */ ATIMach64WaitForIdle(); /* Load FIFO size */ @@ -763,47 +764,95 @@ } /* - * ATIMach64SetClippingRectangle -- + * ATIMach64SetupForScreenToScreenCopy -- * - * This function sets the draw engine's clipping rectangle. + * This function sets up the draw engine for a series of screen-to-screen copy + * operations. */ static void -ATIMach64SetClippingRectangle +ATIMach64SetupForScreenToScreenCopy ( - ScrnInfoPtr pScreenInfo, - int left, - int top, - int right, - int bottom + ScrnInfoPtr pScreenInfo, + int xdir, + int ydir, + int rop, + unsigned int planemask, + int TransparencyColour ) { ATIPtr pATI = ATIPTR(pScreenInfo); - ATIMach64WaitForFIFO(2); - outm(SC_LEFT_RIGHT, SetWord(((right + 1) * pATI->PitchModifier) - 1, 1) | - SetWord(left * pATI->PitchModifier, 0)); - outm(SC_TOP_BOTTOM, SetWord(bottom, 1) | SetWord(top, 0)); + pATI->dst_cntl = 0; + + if (ydir > 0) + pATI->dst_cntl |= DST_Y_DIR; + if (xdir > 0) + pATI->dst_cntl |= DST_X_DIR; + + if (pATI->PitchModifier == 1) + { + ATIMach64WaitForFIFO(4); + outm(DST_CNTL, pATI->dst_cntl); + } + else + { + ATIMach64WaitForFIFO(3); + pATI->dst_cntl |= DST_24_ROT_EN; + } + + outm(DP_MIX, SetBits(ATIMach64ALU[rop], DP_FRGD_MIX)); + outm(DP_WRITE_MASK, planemask); + outm(DP_SRC, SetBits(DP_MONO_SRC_ALLONES, DP_MONO_SRC) | + SetBits(SRC_BLIT, DP_FRGD_SRC) | SetBits(SRC_BKGD, DP_BKGD_SRC)); } /* - * ATIMach64DisableClipping -- + * ATIMach64SubsequentScreenToScreenCopy -- * - * This function resets the draw engine's clipping rectangle to include the - * entire virtual resolution. + * This function performs a screen-to-screen copy operation. */ static void -ATIMach64DisableClipping +ATIMach64SubsequentScreenToScreenCopy ( - ScrnInfoPtr pScreenInfo + ScrnInfoPtr pScreenInfo, + int xSrc, + int ySrc, + int xDst, + int yDst, + int w, + int h ) { ATIPtr pATI = ATIPTR(pScreenInfo); - ATIMach64WaitForFIFO(2); - outm(SC_LEFT_RIGHT, - SetWord(pATI->NewHW.sc_right, 1) | SetWord(pATI->NewHW.sc_left, 0)); - outm(SC_TOP_BOTTOM, - SetWord(pATI->NewHW.sc_bottom, 1) | SetWord(pATI->NewHW.sc_top, 0)); + xSrc *= pATI->PitchModifier; + xDst *= pATI->PitchModifier; + w *= pATI->PitchModifier; + + if (!(pATI->dst_cntl & DST_X_DIR)) + { + xSrc += w - 1; + xDst += w - 1; + } + + if (!(pATI->dst_cntl & DST_Y_DIR)) + { + ySrc += h - 1; + yDst += h - 1; + } + + if (pATI->PitchModifier == 1) + ATIMach64WaitForFIFO(4); + else + { + ATIMach64WaitForFIFO(5); + outm(DST_CNTL, pATI->dst_cntl | SetBits((xDst / 4) % 6, DST_24_ROT)); + } + + outm(SRC_Y_X, SetWord(xSrc, 1) | SetWord(ySrc, 0)); + outm(SRC_WIDTH1, w); + outm(DST_Y_X, SetWord(xDst, 1) | SetWord(yDst, 0)); + outm(DST_HEIGHT_WIDTH, SetWord(w, 1) | SetWord(h, 0)); } /* @@ -830,8 +879,7 @@ outm(DST_CNTL, pATI->NewHW.dst_cntl); } - outm(DP_MIX, SetBits(ATIMach64ALU[rop], DP_FRGD_MIX) | - SetBits(MIX_DST, DP_BKGD_MIX)); + outm(DP_MIX, SetBits(ATIMach64ALU[rop], DP_FRGD_MIX)); outm(DP_WRITE_MASK, planemask); outm(DP_SRC, SetBits(DP_MONO_SRC_ALLONES, DP_MONO_SRC) | SetBits(SRC_FRGD, DP_FRGD_SRC) | SetBits(SRC_BKGD, DP_BKGD_SRC)); @@ -872,6 +920,50 @@ } /* + * ATIMach64SetClippingRectangle -- + * + * This function sets the draw engine's clipping rectangle. + */ +static void +ATIMach64SetClippingRectangle +( + ScrnInfoPtr pScreenInfo, + int left, + int top, + int right, + int bottom +) +{ + ATIPtr pATI = ATIPTR(pScreenInfo); + + ATIMach64WaitForFIFO(2); + outm(SC_LEFT_RIGHT, SetWord(((right + 1) * pATI->PitchModifier) - 1, 1) | + SetWord(left * pATI->PitchModifier, 0)); + outm(SC_TOP_BOTTOM, SetWord(bottom, 1) | SetWord(top, 0)); +} + +/* + * ATIMach64DisableClipping -- + * + * This function resets the draw engine's clipping rectangle to include the + * entire virtual resolution. + */ +static void +ATIMach64DisableClipping +( + ScrnInfoPtr pScreenInfo +) +{ + ATIPtr pATI = ATIPTR(pScreenInfo); + + ATIMach64WaitForFIFO(2); + outm(SC_LEFT_RIGHT, + SetWord(pATI->NewHW.sc_right, 1) | SetWord(pATI->NewHW.sc_left, 0)); + outm(SC_TOP_BOTTOM, + SetWord(pATI->NewHW.sc_bottom, 1) | SetWord(pATI->NewHW.sc_top, 0)); +} + +/* * ATIMach64AccelInit -- * * This function fills in structure fields needed for acceleration on Mach64 @@ -897,6 +989,16 @@ /* Sync */ pXAAInfo->Sync = ATIMach64Sync; + /* Screen-to-screen copy */ + pXAAInfo->ScreenToScreenCopyFlags = NO_TRANSPARENCY; /* For now */ + pXAAInfo->SetupForScreenToScreenCopy = ATIMach64SetupForScreenToScreenCopy; + pXAAInfo->SubsequentScreenToScreenCopy = + ATIMach64SubsequentScreenToScreenCopy; + + /* Solid fills */ + pXAAInfo->SetupForSolidFill = ATIMach64SetupForSolidFill; + pXAAInfo->SubsequentSolidFillRect = ATIMach64SubsequentSolidFillRect; + /* Clips */ pXAAInfo->ClippingFlags = HARDWARE_CLIP_SCREEN_TO_SCREEN_COLOR_EXPAND | HARDWARE_CLIP_SCREEN_TO_SCREEN_COPY | HARDWARE_CLIP_MONO_8x8_FILL | @@ -904,10 +1006,6 @@ HARDWARE_CLIP_DASHED_LINE | HARDWARE_CLIP_SOLID_LINE; pXAAInfo->SetClippingRectangle = ATIMach64SetClippingRectangle; pXAAInfo->DisableClipping = ATIMach64DisableClipping; - - /* Solid fills */ - pXAAInfo->SetupForSolidFill = ATIMach64SetupForSolidFill; - pXAAInfo->SubsequentSolidFillRect = ATIMach64SubsequentSolidFillRect; return TRUE; } Index: xc/programs/Xserver/hw/xfree86/drivers/ati/atipreinit.c diff -u xc/programs/Xserver/hw/xfree86/drivers/ati/atipreinit.c:1.12 xc/programs/Xserver/hw/xfree86/drivers/ati/atipreinit.c:1.16 --- xc/programs/Xserver/hw/xfree86/drivers/ati/atipreinit.c:1.12 Wed Mar 8 16:31:02 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/ati/atipreinit.c Wed Mar 8 16:31:02 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/atipreinit.c,v 1.12 2000/02/18 12:19:28 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/atipreinit.c,v 1.16 2000/03/07 16:31:53 tsi Exp $ */ /* * Copyright 1999 through 2000 by Marc Aurele La France (TSI @ UQV), tsi@ualberta.ca * @@ -349,6 +349,9 @@ int minPitch, maxPitch = 0xFFU, pitchInc; LookupModeFlags Strategy = LOOKUP_CLOSEST_CLOCK; + if (flags & PROBE_DETECT) + return FALSE; + if (pScreenInfo->numEntities != 1) { xf86DrvMsg(pScreenInfo->scrnIndex, X_ERROR, @@ -842,6 +845,8 @@ if (LCDPanelInfo > 0) { + CARD8 ClockMask, PostMask, xpDiv, maxpDiv, pDiv; + pATI->LCDPanelID = BIOSByte(LCDPanelInfo); pATI->LCDHorizontal = BIOSWord(LCDPanelInfo + 0x19U); pATI->LCDVertical = BIOSWord(LCDPanelInfo + 0x1BU); @@ -852,12 +857,17 @@ else i = (inb(R_GENMO) & 0x0CU) >> 2; - /* Get post divider */ - j = (GetBits(ATIGetMach64PLLReg(PLL_XCLK_CNTL), - PLL_VCLK0_XDIV << i) * - (MaxBits(PLL_VCLK0_POST_DIV) + 1)) | - GetBits(ATIGetMach64PLLReg(PLL_VCLK_POST_DIV), - PLL_VCLK0_POST_DIV << (i * 2)); + /* + * Get post divider. A GCC bug has caused the following + * expression to be broken down into its individual + * components. + */ + ClockMask = PLL_VCLK0_XDIV << i; + PostMask = PLL_VCLK0_POST_DIV << (i * 2); + xpDiv = GetBits(ATIGetMach64PLLReg(PLL_XCLK_CNTL), ClockMask); + maxpDiv = MaxBits(PLL_VCLK0_POST_DIV) + 1; + pDiv = GetBits(ATIGetMach64PLLReg(PLL_VCLK_POST_DIV), PostMask); + j = (xpDiv * maxpDiv) | pDiv; /* Calculate clock of mode on entry */ Numerator = ATIGetMach64PLLReg(PLL_VCLK0_FB_DIV + i) * @@ -1285,12 +1295,13 @@ if ((IOValue2 &= pGDev->MemBase) && (IOValue2 <= (MaxBits(CFG_MEM_AP_LOC) << 22))) pATI->LinearBase = IOValue2; - } - if (pATI->LinearBase) - { - if ((pATI->BusType != ATI_BUS_PCI) && - (pATI->BusType != ATI_BUS_AGP)) + if (!pATI->LinearBase) + xf86DrvMsg(pScreenInfo->scrnIndex, X_WARNING, + "Linear aperture not configured. Specify" + " \"MemBase\" override in XF86Config \"Device\"" + " section.\n"); + else { if (pATI->VideoRAM < 4096) pATI->LinearSize = 4 * 1024 * 1024; Index: xc/programs/Xserver/hw/xfree86/drivers/ati/atiprint.c diff -u xc/programs/Xserver/hw/xfree86/drivers/ati/atiprint.c:1.9 xc/programs/Xserver/hw/xfree86/drivers/ati/atiprint.c:1.11 --- xc/programs/Xserver/hw/xfree86/drivers/ati/atiprint.c:1.9 Wed Mar 8 16:31:02 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/ati/atiprint.c Wed Mar 8 16:31:02 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/atiprint.c,v 1.9 2000/02/18 12:19:30 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/atiprint.c,v 1.11 2000/03/07 16:13:35 tsi Exp $ */ /* * Copyright 1997 through 2000 by Marc Aurele La France (TSI @ UQV), tsi@ualberta.ca * @@ -45,9 +45,12 @@ unsigned int Index = Start & ~(16U - 1U); unsigned char Printable[17]; + if (xf86GetVerbosity() <= 4) + return; + memset(Printable, 0, SizeOf(Printable)); - xf86ErrorFVerb(4, "\n BIOS data at 0x%08X:", Start + pATI->BIOSBase); + xf86ErrorFVerb(5, "\n BIOS data at 0x%08X:", Start + pATI->BIOSBase); for (; Index < ((End + (16U - 1U)) & ~(16U - 1U)); Index++) { @@ -56,20 +59,20 @@ if (!(Index & (16U - 1U))) { if (Printable[0]) - xf86ErrorFVerb(4, " |%s|", Printable); + xf86ErrorFVerb(5, " |%s|", Printable); Char = Printable; - xf86ErrorFVerb(4, "\n 0x%08X: ", Index + pATI->BIOSBase); + xf86ErrorFVerb(5, "\n 0x%08X: ", Index + pATI->BIOSBase); } - xf86ErrorFVerb(4, " "); + xf86ErrorFVerb(5, " "); } if ((Index < Start) || (Index >= End)) { - xf86ErrorFVerb(4, " "); + xf86ErrorFVerb(5, " "); *Char++ = ' '; } else { - xf86ErrorFVerb(4, "%02X", BIOS[Index]); + xf86ErrorFVerb(5, "%02X", BIOS[Index]); if (isprint(BIOS[Index])) *Char++ = BIOS[Index]; else @@ -77,7 +80,7 @@ } } - xf86ErrorFVerb(4, " |%s|\n", Printable); + xf86ErrorFVerb(5, " |%s|\n", Printable); } /* @@ -490,7 +493,7 @@ if (pATI->pBlock[0]) { xf86ErrorFVerb(4, " Block 0 aperture at 0x%08X.\n", pATI->pBlock[0]); - if (inl(pATI->CPIOBase) == *((CARD32 *)pATI->pBlock[0])) + if (inl(pATI->CPIOBase) == MMIO_IN32(pATI->pBlock[0], 0)) xf86ErrorFVerb(4, " MMIO registers are correctly mapped.\n"); else xf86ErrorFVerb(4, " MMIO mapping is in error!\n"); Index: xc/programs/Xserver/hw/xfree86/drivers/ati/atiprobe.c diff -u xc/programs/Xserver/hw/xfree86/drivers/ati/atiprobe.c:1.17 xc/programs/Xserver/hw/xfree86/drivers/ati/atiprobe.c:1.19 --- xc/programs/Xserver/hw/xfree86/drivers/ati/atiprobe.c:1.17 Wed Mar 8 16:31:03 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/ati/atiprobe.c Wed Mar 8 16:31:03 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/atiprobe.c,v 1.17 2000/02/18 12:19:32 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/atiprobe.c,v 1.19 2000/03/07 16:13:36 tsi Exp $ */ /* * Copyright 1997 through 2000 by Marc Aurele La France (TSI @ UQV), tsi@ualberta.ca * @@ -714,7 +714,9 @@ { /* * Some adapters are reputed to append ATI extended VGA registers - * to the VGA Graphics controller registers. + * to the VGA Graphics controller registers. In particular, 0x01CE + * cannot, in general, be used in a PCI environment due to routing + * of I/O through the bus tree. */ pATI->CPIO_VGAWonder = GRAX; ATIVGAWonderProbe(pATI, p8514, ProbeFlags); @@ -833,14 +835,6 @@ (_p)->iEntity = -2; \ } while (0) - /* - * This driver doesn't invoke, nor depend on, any support for fbdev. Also, - * temporarily disable -configure support until it gets fixed to not depend - * on optional driver behaviour. - */ - if (flags & (PROBE_DETECTFBDEV | PROBE_DETECTPCI | PROBE_DETECTISA)) - return FALSE; - if (!(flags & PROBE_DETECT)) { /* @@ -1519,7 +1513,17 @@ ((pATI->Adapter != ATI_ADAPTER_8514A) || ((pATI->VGAAdapter != ATI_ADAPTER_VGA) && (pATI->VGAAdapter != ATI_ADAPTER_NONE)))) + { nAdapter++; + pGDev = xf86AddDeviceToConfigure(ATI_DRIVER_NAME, + pATI->PCIInfo, ATI_CHIPSET_ATI); + if (pGDev) + { + /* Fill in additional information */ + pGDev->vendor = ATI_NAME; + pGDev->chipset = (char *)ATIChipsetNames[ATI_CHIPSET_ATI]; + } + } xfree(pATI); } Index: xc/programs/Xserver/hw/xfree86/drivers/ati/atistruct.h diff -u xc/programs/Xserver/hw/xfree86/drivers/ati/atistruct.h:1.11 xc/programs/Xserver/hw/xfree86/drivers/ati/atistruct.h:1.12 --- xc/programs/Xserver/hw/xfree86/drivers/ati/atistruct.h:1.11 Wed Mar 8 16:31:03 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/ati/atistruct.h Wed Mar 8 16:31:03 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/atistruct.h,v 1.11 2000/02/18 12:19:40 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/atistruct.h,v 1.12 2000/03/03 04:47:13 tsi Exp $ */ /* * Copyright 1999 through 2000 by Marc Aurele La France (TSI @ UQV), tsi@ualberta.ca * @@ -216,6 +216,7 @@ XAAInfoRecPtr pXAAInfo; int nAvailableFIFOEntries, nFIFOEntries; CARD8 EngineIsBusy, EngineIsLocked, PitchModifier; + CARD32 dst_cntl; /* For SetupFor/Subsequent communication */ /* * Clock-related definitions. Index: xc/programs/Xserver/hw/xfree86/drivers/ati/ativersion.h diff -u xc/programs/Xserver/hw/xfree86/drivers/ati/ativersion.h:1.11 xc/programs/Xserver/hw/xfree86/drivers/ati/ativersion.h:1.13 --- xc/programs/Xserver/hw/xfree86/drivers/ati/ativersion.h:1.11 Wed Mar 8 16:31:03 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/ati/ativersion.h Wed Mar 8 16:31:03 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/ativersion.h,v 1.11 2000/02/18 12:19:43 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/ativersion.h,v 1.13 2000/03/07 16:13:37 tsi Exp $ */ /* * Copyright 1997 through 2000 by Marc Aurele La France (TSI @ UQV), tsi@ualberta.ca * @@ -27,12 +27,13 @@ #define ATI_NAME "ATI" #define ATI_DRIVER_NAME "ati" -#define ATI_VERSION_NAME "5.3.0" +#define ATI_VERSION_NAME "5.3.2" #define ATI_VERSION_MAJOR 5 #define ATI_VERSION_MINOR 3 -#define ATI_VERSION_PATCH 0 +#define ATI_VERSION_PATCH 2 -#define ATI_VERSION_CURRENT ((ATI_VERSION_MAJOR << 16) | ATI_VERSION_MINOR) +#define ATI_VERSION_CURRENT \ + ((ATI_VERSION_MAJOR << 20) | (ATI_VERSION_MINOR << 10) | ATI_VERSION_PATCH) #endif /* ___ATIVERSION_H___ */ Index: xc/programs/Xserver/hw/xfree86/drivers/chips/chips.cpp diff -u xc/programs/Xserver/hw/xfree86/drivers/chips/chips.cpp:1.2 xc/programs/Xserver/hw/xfree86/drivers/chips/chips.cpp:1.3 --- xc/programs/Xserver/hw/xfree86/drivers/chips/chips.cpp:1.2 Fri Nov 19 09:59:17 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/chips/chips.cpp Wed Mar 8 16:31:03 2000 @@ -1,5 +1,5 @@ -.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/chips/chips.cpp,v 1.2 1999/11/19 14:59:17 hohndel Exp $ -.TH CHIPS __drivermansuffix__ "Version 3.9.16" "XFree86" +.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/chips/chips.cpp,v 1.3 2000/03/03 01:05:34 dawes Exp $ +.TH CHIPS __drivermansuffix__ "Version 4.0" "XFree86" .SH NAME chips \- Chips and Technologies video driver .SH SYNOPSIS Index: xc/programs/Xserver/hw/xfree86/drivers/chips/ct_driver.c diff -u xc/programs/Xserver/hw/xfree86/drivers/chips/ct_driver.c:1.80 xc/programs/Xserver/hw/xfree86/drivers/chips/ct_driver.c:1.84 --- xc/programs/Xserver/hw/xfree86/drivers/chips/ct_driver.c:1.80 Wed Mar 8 16:31:03 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/chips/ct_driver.c Wed Mar 8 16:31:03 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/chips/ct_driver.c,v 1.80 2000/02/21 19:22:58 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/chips/ct_driver.c,v 1.84 2000/03/06 23:54:08 dawes Exp $ */ /* * Copyright 1993 by Jon Block <block@frc.com> @@ -7,20 +7,20 @@ * * Major Contributors to XFree86 3.2 * Modified 1995/6 by Nozomi Ytow - * Modified 1996 by Egbert Eich <Egbert.Eich@Physik.TH-Darmstadt.DE> - * Modified 1996 by David Bateman <dbateman@ee.uts.edu.au> + * Modified 1996 by Egbert Eich <eich@xfree86.org> + * Modified 1996 by David Bateman <dbateman@club-internet.fr> * Modified 1996 by Xavier Ducoin <xavier@rd.lectra.fr> * * Contributors to XFree86 3.2 * Modified 1995/6 by Ken Raeburn <raeburn@raeburn.org> * Modified 1996 by Shigehiro Nomura <nomura@sm.sony.co.jp> - * Modified 1996 by Marc de Courville <courvill@sig.enst.fr> + * Modified 1996 by Marc de Courville <marc@courville.org> * Modified 1996 by Adam Sulmicki <adam@cfar.umd.edu> * Modified 1996 by Jens Maurer <jmaurer@cck.uni-kl.de> * * Large parts rewritten for XFree86 4.0 - * Modified 1998 by David Bateman <dbateman@eng.uts.edu.au> - * Modified 1998 by Egbert Eich <Egbert.Eich@Physik.TH-Darmstadt.DE> + * Modified 1998 by David Bateman <dbateman@club-internet.fr> + * Modified 1998 by Egbert Eich <eich@xfree86.org> * Modified 1998 by Nozomi Ytow * * Permission to use, copy, modify, distribute, and sell this software and its @@ -699,6 +699,11 @@ NULL }; +static const char *vbeSymbols[] = { + "VBEInit", + NULL +}; + #ifdef XFree86LOADER static MODULESETUPPROTO(chipsSetup); @@ -743,7 +748,7 @@ */ LoaderRefSymLists(vgahwSymbols, cfbSymbols, xaaSymbols, ramdacSymbols, ddcSymbols, i2cSymbols, - shadowSymbols, NULL); + shadowSymbols, vbeSymbols, NULL); /* * The return value must be non-NULL on success even though there @@ -822,7 +827,6 @@ int *usedChips; int i; - if (flags & PROBE_DETECTFBDEV) return FALSE; /* * Find the config file Device sections that match this * driver, and return if there are none. @@ -837,12 +841,10 @@ CHIPSChipsets, CHIPSPCIchipsets, devSections,numDevSections, drv, &usedChips); - if ((numUsed > 0) && (flags & PROBE_DETECTPCI)) - return TRUE; - if ((numUsed <= 0) && (flags & PROBE_DETECTPCI)) - return FALSE; if (numUsed > 0) { - for (i = 0; i < numUsed; i++) { + if (flags & PROBE_DETECT) + foundScreen = TRUE; + else for (i = 0; i < numUsed; i++) { /* Allocate a ScrnInfoRec */ ScrnInfoPtr pScrn = xf86AllocateScreen(drv,0); pScrn->driverVersion = VERSION; @@ -860,6 +862,8 @@ foundScreen = TRUE; xf86ConfigActivePciEntity(pScrn,usedChips[i],CHIPSPCIchipsets, NULL,NULL,NULL,NULL,NULL); + } + xfree(usedChips); } } @@ -867,10 +871,10 @@ numUsed = xf86MatchIsaInstances(CHIPS_NAME,CHIPSChipsets,CHIPSISAchipsets, drv,chipsFindIsaDevice,devSections, numDevSections,&usedChips); - if(numUsed > 0) - if (flags & PROBE_DETECTISA) - return TRUE; - for (i = 0; i < numUsed; i++) { + if (numUsed > 0) { + if (flags & PROBE_DETECT) + foundScreen = TRUE; + else for (i = 0; i < numUsed; i++) { ScrnInfoPtr pScrn = xf86AllocateScreen(drv,0); pScrn->driverVersion = VERSION; @@ -889,9 +893,9 @@ xf86ConfigActiveIsaEntity(pScrn,usedChips[i],CHIPSISAchipsets, NULL,NULL,NULL,NULL,NULL); } + xfree(usedChips); } - if (devSections) - xfree(devSections); + xfree(devSections); return foundScreen; } @@ -991,6 +995,8 @@ const char *reqSym = NULL; Bool res = FALSE; + if (flags & PROBE_DETECT) return FALSE; + /* The vgahw module should be loaded here when needed */ if (!xf86LoadSubModule(pScrn, "vgahw")) return FALSE; @@ -1040,12 +1046,10 @@ #endif } #endif -#ifdef XFree86LOADER if (xf86LoadSubModule(pScrn, "vbe")) { cPtr->pVbe = VBEInit(NULL,cPtr->pEnt->index); } -#endif /* Now that we've identified the chipset, setup the capabilities flags */ switch (cPtr->Chipset) { Index: xc/programs/Xserver/hw/xfree86/drivers/chips/ct_driver.h diff -u xc/programs/Xserver/hw/xfree86/drivers/chips/ct_driver.h:1.25 xc/programs/Xserver/hw/xfree86/drivers/chips/ct_driver.h:1.26 --- xc/programs/Xserver/hw/xfree86/drivers/chips/ct_driver.h:1.25 Wed Mar 8 16:31:03 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/chips/ct_driver.h Wed Mar 8 16:31:03 2000 @@ -1,7 +1,7 @@ /* $XConsortium: ct_driver.h /main/3 1996/10/27 11:49:29 kaleb $ */ /* - * Modified 1996 by Egbert Eich <Egbert.Eich@Physik.TH-Darmstadt.DE> - * Modified 1996 by David Bateman <dbateman@ee.uts.edu.au> + * Modified 1996 by Egbert Eich <eich@xfree86.org> + * Modified 1996 by David Bateman <dbateman@club-internet.fr> * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -22,7 +22,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/chips/ct_driver.h,v 1.25 2000/02/08 13:13:12 eich Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/chips/ct_driver.h,v 1.26 2000/03/05 16:59:13 dawes Exp $ */ #ifndef _CT_DRIVER_H_ Index: xc/programs/Xserver/hw/xfree86/drivers/cirrus/Imakefile diff -u xc/programs/Xserver/hw/xfree86/drivers/cirrus/Imakefile:1.26 xc/programs/Xserver/hw/xfree86/drivers/cirrus/Imakefile:1.27 --- xc/programs/Xserver/hw/xfree86/drivers/cirrus/Imakefile:1.26 Wed Mar 8 16:31:04 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/cirrus/Imakefile Wed Mar 8 16:31:04 2000 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/cirrus/Imakefile,v 1.26 2000/02/16 14:43:51 dawes Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/cirrus/Imakefile,v 1.27 2000/03/03 01:05:35 dawes Exp $ XCOMM XCOMM This is an Imakefile for the Cirrus Logic driver. XCOMM @@ -85,6 +85,11 @@ SubDriverObjectModuleTarget(cirrus_laguna,$(LOBJS)) InstallSubDriverObjectModule(cirrus_laguna,$(MODULEDIR),drivers) + +#if !defined(XF86DriverSDK) +CppManTarget(cirrus,) +InstallModuleManPage(cirrus) +#endif DependTarget() Index: xc/programs/Xserver/hw/xfree86/drivers/cirrus/alp_driver.c diff -u xc/programs/Xserver/hw/xfree86/drivers/cirrus/alp_driver.c:1.6 xc/programs/Xserver/hw/xfree86/drivers/cirrus/alp_driver.c:1.8 --- xc/programs/Xserver/hw/xfree86/drivers/cirrus/alp_driver.c:1.6 Wed Mar 8 16:31:04 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/cirrus/alp_driver.c Wed Mar 8 16:31:04 2000 @@ -9,7 +9,7 @@ * Guy DESBIEF */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/cirrus/alp_driver.c,v 1.6 2000/02/21 19:22:59 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/cirrus/alp_driver.c,v 1.8 2000/02/27 02:45:26 alanh Exp $ */ /* Everything using inb/outb, etc needs "compiler.h" */ #include "compiler.h" @@ -511,6 +511,8 @@ ClockRangePtr clockRanges; char *mod = NULL; char *s; + + if (flags & PROBE_DETECT) return FALSE; #ifdef ALP_DEBUG ErrorF("AlpPreInit\n"); @@ -1627,7 +1629,7 @@ XF86VideoAdaptorPtr *ptr; int n; - n = xf86XVListGenericAdaptors(&ptr); + n = xf86XVListGenericAdaptors(pScrn,&ptr); if (n) xf86XVScreenInit(pScreen, ptr, n); } Index: xc/programs/Xserver/hw/xfree86/drivers/cirrus/cir.h diff -u xc/programs/Xserver/hw/xfree86/drivers/cirrus/cir.h:1.14 xc/programs/Xserver/hw/xfree86/drivers/cirrus/cir.h:1.15 --- xc/programs/Xserver/hw/xfree86/drivers/cirrus/cir.h:1.14 Wed Mar 8 16:31:04 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/cirrus/cir.h Wed Mar 8 16:31:04 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/cirrus/cir.h,v 1.14 2000/02/08 13:13:14 eich Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/cirrus/cir.h,v 1.15 2000/03/05 23:47:50 dawes Exp $ */ /* (c) Itai Nahshon */ @@ -9,7 +9,9 @@ #include "xaa.h" #include "xf86i2c.h" +#if 0 #define CIR_DEBUG +#endif /* Card-specific driver information */ #define CIRPTR(p) ((CirPtr)((p)->driverPrivate)) Index: xc/programs/Xserver/hw/xfree86/drivers/cirrus/cir_driver.c diff -u xc/programs/Xserver/hw/xfree86/drivers/cirrus/cir_driver.c:1.51 xc/programs/Xserver/hw/xfree86/drivers/cirrus/cir_driver.c:1.54 --- xc/programs/Xserver/hw/xfree86/drivers/cirrus/cir_driver.c:1.51 Wed Mar 8 16:31:04 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/cirrus/cir_driver.c Wed Mar 8 16:31:04 2000 @@ -9,7 +9,7 @@ * Guy DESBIEF */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/cirrus/cir_driver.c,v 1.51 2000/02/18 12:19:57 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/cirrus/cir_driver.c,v 1.54 2000/03/08 21:21:29 dawes Exp $ */ /* All drivers should typically include these */ #include "xf86.h" @@ -180,13 +180,32 @@ int vendor = (chipid & 0xffff0000) >> 16; int chip = chipid & 0xffff; +#if 0 if (chip == PCI_CHIP_GD5462 || chip == PCI_CHIP_GD5464 || chip == PCI_CHIP_GD5464BD || chip == PCI_CHIP_GD5465) - return LgAvailableOptions(chipid); - else - return AlpAvailableOptions(chipid); + if (!lg_loaded) { + if(!xf86LoadSubModule(pScrn, "cirrus_laguna")) { + return NULL; + } + xf86LoaderReqSymLists(lgSymbols, NULL); + lg_loaded = TRUE; + } + return LgAvailableOptions(chipid); + } else { + if (!alp_loaded) { + if (!xf86LoadSubModule(pScrn, "cirrus_alpine")) { + return NULL; + } + xf86LoaderReqSymLists(alpSymbols, NULL); + alp_loaded = TRUE; + } + return AlpAvailableOptions(chipid); + } +#else + return NULL; +#endif } /* Mandatory */ @@ -222,8 +241,6 @@ * fits in with what is given in the config file, and allow the config * file info to override any contradictions. */ - if (flags & PROBE_DETECTISA) return FALSE; - if (flags & PROBE_DETECTFBDEV) return FALSE; /* * All of the cards this driver supports are PCI, so the "probing" just @@ -246,10 +263,9 @@ devSections = NULL; if (numUsed <= 0) return FALSE; - if (flags & PROBE_DETECTPCI) - return TRUE; - - for (i = 0; i < numUsed; i++) { + if (flags & PROBE_DETECT) + foundScreen = TRUE; + else for (i = 0; i < numUsed; i++) { ScrnInfoPtr pScrn; /* Allocate a ScrnInfoRec and claim the slot */ @@ -279,7 +295,7 @@ xf86LoaderReqSymLists(lgSymbols, NULL); lg_loaded = TRUE; } - subProbe = LgProbe; + subProbe = LgProbe; } else { if (!alp_loaded) { if (!xf86LoadSubModule(pScrn, "cirrus_alpine")) { @@ -289,7 +305,7 @@ xf86LoaderReqSymLists(alpSymbols, NULL); alp_loaded = TRUE; } - subProbe = AlpProbe; + subProbe = AlpProbe; } if (subProbe(usedChips[i], pScrn)) foundScreen = TRUE; Index: xc/programs/Xserver/hw/xfree86/drivers/cirrus/cirrus.cpp diff -u /dev/null xc/programs/Xserver/hw/xfree86/drivers/cirrus/cirrus.cpp:1.1 --- /dev/null Wed Mar 8 16:31:04 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/cirrus/cirrus.cpp Wed Mar 8 16:31:04 2000 @@ -0,0 +1,30 @@ +.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/cirrus/cirrus.cpp,v 1.1 2000/03/03 01:05:35 dawes Exp $ +.TH CIRRUS __drivermansuffix__ "Version 4.0" "XFree86" +.SH NAME +cirrus \- Cirrus Logic video driver +.SH SYNOPSIS +.B "Section ""Device""" +.br +.BI " Identifier """ devname """" +.br +.B " Driver ""cirrus""" +.br +\ \ ... +.br +.B EndSection +.SH DESCRIPTION +.B cirrus +is an XFree86 driver for Cirrus Logic video chips. +THIS MAN PAGE NEEDS TO BE FILLED IN. +.SH SUPPORTED HARDWARE +The +.B cirrus +driver supports... +.SH CONFIGURATION DETAILS +Please refer to XF86Config(__filemansuffix__) for general configuration +details. This section only covers configuration details specific to this +driver. +.SH "SEE ALSO" +XFree86(1), XF86Config(__filemansuffix__), xf86config(1), Xserver(1), X(1) +.SH AUTHORS +Authors include: ... Index: xc/programs/Xserver/hw/xfree86/drivers/cirrus/lg_driver.c diff -u xc/programs/Xserver/hw/xfree86/drivers/cirrus/lg_driver.c:1.22 xc/programs/Xserver/hw/xfree86/drivers/cirrus/lg_driver.c:1.24 --- xc/programs/Xserver/hw/xfree86/drivers/cirrus/lg_driver.c:1.22 Wed Mar 8 16:31:05 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/cirrus/lg_driver.c Wed Mar 8 16:31:05 2000 @@ -13,7 +13,7 @@ * David Dawes, Andrew E. Mileski, Leonard N. Zubkoff, * Guy DESBIEF, Itai Nahshon. */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/cirrus/lg_driver.c,v 1.22 2000/02/21 19:23:00 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/cirrus/lg_driver.c,v 1.24 2000/02/27 02:45:26 alanh Exp $ */ #define EXPERIMENTAL @@ -431,6 +431,8 @@ char *mod = NULL; int fbPCIReg, ioPCIReg; char *s; + + if (flags & PROBE_DETECT) return FALSE; #ifdef LG_DEBUG ErrorF("LgPreInit\n"); @@ -1544,7 +1546,7 @@ XF86VideoAdaptorPtr *ptr; int n; - n = xf86XVListGenericAdaptors(&ptr); + n = xf86XVListGenericAdaptors(pScrn,&ptr); if (n) xf86XVScreenInit(pScreen, ptr, n); } Index: xc/programs/Xserver/hw/xfree86/drivers/cyrix/Imakefile diff -u xc/programs/Xserver/hw/xfree86/drivers/cyrix/Imakefile:1.1 xc/programs/Xserver/hw/xfree86/drivers/cyrix/Imakefile:1.2 --- xc/programs/Xserver/hw/xfree86/drivers/cyrix/Imakefile:1.1 Wed Mar 8 16:31:05 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/cyrix/Imakefile Wed Mar 8 16:31:05 2000 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/cyrix/Imakefile,v 1.1 2000/02/13 00:56:09 dawes Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/cyrix/Imakefile,v 1.2 2000/03/03 01:05:35 dawes Exp $ XCOMM XCOMM This is an Imakefile for the CYRIX driver. XCOMM @@ -25,5 +25,10 @@ ObjectModuleTarget(cyrix,$(OBJS)) InstallObjectModule(cyrix,$(MODULEDIR),drivers) + +#if !defined(XF86DriverSDK) +CppManTarget(cyrix,) +InstallModuleManPage(cyrix) +#endif DependTarget() Index: xc/programs/Xserver/hw/xfree86/drivers/cyrix/cyrix.cpp diff -u /dev/null xc/programs/Xserver/hw/xfree86/drivers/cyrix/cyrix.cpp:1.1 --- /dev/null Wed Mar 8 16:31:05 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/cyrix/cyrix.cpp Wed Mar 8 16:31:05 2000 @@ -0,0 +1,30 @@ +.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/cyrix/cyrix.cpp,v 1.1 2000/03/03 01:05:36 dawes Exp $ +.TH CYRIX __drivermansuffix__ "Version 4.0" "XFree86" +.SH NAME +cyrix \- Cyrix video driver +.SH SYNOPSIS +.B "Section ""Device""" +.br +.BI " Identifier """ devname """" +.br +.B " Driver ""cyrix""" +.br +\ \ ... +.br +.B EndSection +.SH DESCRIPTION +.B cyrix +is an XFree86 driver for Cyrix video chips. +THIS MAN PAGE NEEDS TO BE FILLED IN. +.SH SUPPORTED HARDWARE +The +.B cyrix +driver supports... +.SH CONFIGURATION DETAILS +Please refer to XF86Config(__filemansuffix__) for general configuration +details. This section only covers configuration details specific to this +driver. +.SH "SEE ALSO" +XFree86(1), XF86Config(__filemansuffix__), xf86config(1), Xserver(1), X(1) +.SH AUTHORS +Authors include: ... Index: xc/programs/Xserver/hw/xfree86/drivers/cyrix/cyrix_driver.c diff -u xc/programs/Xserver/hw/xfree86/drivers/cyrix/cyrix_driver.c:1.4 xc/programs/Xserver/hw/xfree86/drivers/cyrix/cyrix_driver.c:1.6 --- xc/programs/Xserver/hw/xfree86/drivers/cyrix/cyrix_driver.c:1.4 Wed Mar 8 16:31:05 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/cyrix/cyrix_driver.c Wed Mar 8 16:31:05 2000 @@ -26,7 +26,7 @@ * Dirk H. Hohndel (hohndel@suse.de), * Portions: the GGI project & confidential CYRIX databooks. */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/cyrix/cyrix_driver.c,v 1.4 2000/02/21 19:23:01 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/cyrix/cyrix_driver.c,v 1.6 2000/03/01 16:01:07 tsi Exp $ */ #include "compiler.h" #include "fb.h" @@ -318,8 +318,6 @@ int device_step, device_revision; ScrnInfoPtr pScrn; - if (flags & PROBE_DETECT) return FALSE; - /* * The aim here is to find all cards that this driver can handle, * and for the ones not already claimed by another driver, claim the @@ -347,6 +345,9 @@ CYRIXFindIsaDevice,devSections, numDevSections,&usedChips); + if (numUsed <= 0) + return FALSE; + /* use register probing to decide whether the chip is * `suitable' for us. */ @@ -386,6 +387,9 @@ /* end GGI MediaGX driver based code */ if (padsize == 0) return (FALSE); + if (flags & PROBE_DETECT) + return TRUE; + xf86ErrorF("%s: GX_BASE: 0x%x\n",CYRIX_NAME, physbase); xf86ErrorF("%s: Scratchpad size: %d kbytes\n",CYRIX_NAME, padsize); @@ -417,9 +421,7 @@ /* Free it since we don't need that list after this */ xfree(devSections); - devSections = NULL; - if (numUsed >= 0) for (i=0; i < numUsed; i++) { @@ -440,8 +442,8 @@ pScrn->ValidMode = CYRIXValidMode; xf86ConfigActiveIsaEntity(pScrn, usedChips[i], CYRIXISAChipsets, NULL, NULL, NULL, NULL, NULL); - return (TRUE); } + return (TRUE); } static int @@ -449,8 +451,7 @@ { CARD32 CurrentValue, TestValue; - /* Unlock VGA registers */ - VGAHW_UNLOCK(vgaIOBase); + /* No need to unlock VGA CRTC registers here */ /* VGA has one more read/write attribute register than EGA */ (void) inb(vgaIOBase + 0x0AU); /* Reset flip-flop */ @@ -461,9 +462,6 @@ TestValue = inb(0x3C1); outb(0x3C0, CurrentValue); - /* XXX: This should restore lock state, rather than relock */ - VGAHW_LOCK(vgaIOBase); - /* Quit now if no VGA is present */ if ((CurrentValue ^ 0x0F) != TestValue) return -1; @@ -481,6 +479,8 @@ ClockRangePtr clockRanges; char *mod = NULL; const char *Sym; + + if (flags & PROBE_DETECT) return FALSE; /* Allocate the CYRIXRec driverPrivate */ if (!CYRIXGetRec(pScrn)) return FALSE; Index: xc/programs/Xserver/hw/xfree86/drivers/fbdev/Imakefile diff -u xc/programs/Xserver/hw/xfree86/drivers/fbdev/Imakefile:1.6 xc/programs/Xserver/hw/xfree86/drivers/fbdev/Imakefile:1.7 --- xc/programs/Xserver/hw/xfree86/drivers/fbdev/Imakefile:1.6 Sat Aug 14 06:49:44 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/fbdev/Imakefile Wed Mar 8 16:31:05 2000 @@ -1,7 +1,7 @@ XCOMM XCOMM This is an Imakefile for the fbdev driver. XCOMM -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/fbdev/Imakefile,v 1.6 1999/08/14 10:49:44 dawes Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/fbdev/Imakefile,v 1.7 2000/02/25 18:28:10 dawes Exp $ #define IHaveModules #include <Server.tmpl> @@ -15,11 +15,11 @@ INCLUDES = -I. -I$(XF86COMSRC) -I$(XF86OSSRC) \ -I$(SERVERSRC)/mfb -I$(SERVERSRC)/mi \ -I$(SERVERSRC)/afb \ - -I$(SERVERSRC)/cfb -I$(XF86SRC)/xaa \ + -I$(SERVERSRC)/fb -I$(XF86SRC)/xaa \ -I$(XF86SRC)/fbdevhw -I$(XF86SRC)/ramdac \ -I$(XF86SRC)/ddc -I$(XF86SRC)/i2c \ -I$(XF86SRC)/rac \ - -I$(SERVERSRC)/Xext -I$(XF86SRC)/xf8_32bpp\ + -I$(SERVERSRC)/Xext -I$(XF86SRC)/xf24_32bpp\ -I$(FONTINCSRC) -I$(SERVERSRC)/include -I$(XINCLUDESRC) \ -I$(XF86SRC)/shadowfb -I$(EXTINCSRC) #endif Index: xc/programs/Xserver/hw/xfree86/drivers/fbdev/fbdev.c diff -u xc/programs/Xserver/hw/xfree86/drivers/fbdev/fbdev.c:1.16 xc/programs/Xserver/hw/xfree86/drivers/fbdev/fbdev.c:1.20 --- xc/programs/Xserver/hw/xfree86/drivers/fbdev/fbdev.c:1.16 Wed Mar 8 16:31:05 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/fbdev/fbdev.c Wed Mar 8 16:31:05 2000 @@ -1,4 +1,9 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/fbdev/fbdev.c,v 1.16 2000/02/15 18:01:06 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/fbdev/fbdev.c,v 1.20 2000/03/01 16:01:07 tsi Exp $ */ + +/* + * Authors: Alan Hourihane, <alanh@fairlite.demon.co.uk> + * Michel Dänzer, <michdaen@iiic.ethz.ch> + */ /* all driver need this */ #include "xf86.h" @@ -13,12 +18,8 @@ #include "shadowfb.h" /* for visuals */ -#define PSZ 8 -#include "cfb.h" -#undef PSZ -#include "cfb16.h" -#include "cfb24.h" -#include "cfb32.h" +#include "fb.h" +#include "cfb24_32.h" #ifdef USE_AFB #include "afb.h" #endif @@ -58,6 +59,12 @@ /* -------------------------------------------------------------------- */ +/* + * This is intentionally screen-independent. It indicates the binding + * choice made in the first PreInit. + */ +static int pix24bpp = 0; + #define VERSION 4000 #define FBDEV_NAME "FBDev" #define FBDEV_DRIVER_NAME "fbdev" @@ -113,11 +120,8 @@ }; static const char *cfbSymbols[] = { - "cfbScreenInit", - "cfb16ScreenInit", - "cfb24ScreenInit", - "cfb32ScreenInit", - "cfbCreateDefColormap", + "fbScreenInit", + "cfb24_32ScreenInit", NULL }; @@ -249,9 +253,7 @@ TRACE("probe start"); /* For now, just bail out for PROBE_DETECT. */ - if ((flags & PROBE_DETECTISA) || - (flags & PROBE_DETECTFBDEV) || - (flags & PROBE_DETECTPCI)) + if (flags & PROBE_DETECT) return FALSE; pScrn0 = xf86AllocateScreen(drv, 0); @@ -332,6 +334,8 @@ const char *reqSym = NULL; Gamma zeros = {0.0, 0.0, 0.0}; + if (flags & PROBE_DETECT) return FALSE; + TRACE_ENTER("PreInit"); /* Check the number of entities, and fail if it isn't one. */ @@ -365,6 +369,10 @@ return FALSE; xf86PrintDepthBpp(pScrn); + /* Get the depth24 pixmap format */ + if (pScrn->depth == 24 && pix24bpp == 0) + pix24bpp = xf86GetBppFromDepth(pScrn, 24); + /* color weight */ if (pScrn->depth > 8) { rgb zeros = { 0, 0, 0 }; @@ -403,7 +411,22 @@ "Option ShadowFB is %s\n",fPtr->shadowFB ? "on" : "off"); /* select video modes */ + + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Checking Modes against framebuffer device...\n"); fbdevHWSetVideoModes(pScrn); + + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Checking Modes against monitor...\n"); + { + DisplayModePtr mode, first = mode = pScrn->modes; + + if (mode != NULL) do { + mode->status = xf86CheckModeForMonitor(mode, pScrn->monitor); + mode = mode->next; + } while (mode != NULL && mode != first); + + xf86PruneDriverModes(pScrn); + } + if (NULL == pScrn->modes) fbdevHWUseBuildinMode(pScrn); pScrn->currentMode = pScrn->modes; @@ -421,47 +444,49 @@ reqSym = "afbScreenInit"; break; case FBDEVHW_PACKED_PIXELS: + mod = "fb"; + reqSym = "fbScreenInit"; + switch (pScrn->bitsPerPixel) { case 8: - mod = "cfb"; - reqSym = "cfbScreenInit"; - break; case 16: - mod = "cfb16"; - reqSym = "cfb16ScreenInit"; + case 32: break; case 24: - mod = "cfb24"; - reqSym = "cfb24ScreenInit"; - break; - case 32: - mod = "cfb32"; - reqSym = "cfb32ScreenInit"; + if (pix24bpp == 32) + { + mod = "xf24_32bpp"; + reqSym = "cfb24_32ScreenInit"; + } break; + default: + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Unsupported bpp: %d", pScrn->bitsPerPixel); + return FALSE; } break; case FBDEVHW_INTERLEAVED_PLANES: /* Not supported yet, don't know what to do with this */ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "Interleaved Planes are not supprted yet by drivers/fbdev."); - break; + "Interleaved Planes are not supported yet by drivers/fbdev."); + return FALSE; case FBDEVHW_TEXT: /* This should never happen ... * we should check for this much much earlier ... */ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Text mode is not supprted by drivers/fbdev.\n" "Why do you want to run the X in TEXT mode anyway ?"); - break; + return FALSE; case FBDEVHW_VGA_PLANES: /* Not supported yet */ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "EGA/VGA Planes are not supprted yet by drivers/fbdev."); - break; + return FALSE; default: xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Fbdev type (%d) not supported yet."); - break; + return FALSE; } if (mod && xf86LoadSubModule(pScrn, mod) == NULL) { FBDevFreeRec(pScrn); @@ -600,25 +625,20 @@ #endif case FBDEVHW_PACKED_PIXELS: switch (pScrn->bitsPerPixel) { + case 24: + if (pix24bpp == 32) + { + ret = cfb24_32ScreenInit + (pScreen, fPtr->fbstart, pScrn->virtualX, pScrn->virtualY, + pScrn->xDpi, pScrn->yDpi, pScrn->displayWidth); + break; + } case 8: - ret = cfbScreenInit - (pScreen, fPtr->fbstart, pScrn->virtualX, pScrn->virtualY, - pScrn->xDpi, pScrn->yDpi, pScrn->displayWidth); - break; case 16: - ret = cfb16ScreenInit - (pScreen, fPtr->fbstart, pScrn->virtualX, pScrn->virtualY, - pScrn->xDpi, pScrn->yDpi, pScrn->displayWidth); - break; - case 24: - ret = cfb24ScreenInit - (pScreen, fPtr->fbstart, pScrn->virtualX, pScrn->virtualY, - pScrn->xDpi, pScrn->yDpi, pScrn->displayWidth); - break; case 32: - ret = cfb32ScreenInit + ret = fbScreenInit (pScreen, fPtr->fbstart, pScrn->virtualX, pScrn->virtualY, - pScrn->xDpi, pScrn->yDpi, pScrn->displayWidth); + pScrn->xDpi, pScrn->yDpi, pScrn->displayWidth, pScrn->bitsPerPixel); break; default: xf86DrvMsg(scrnIndex, X_ERROR, @@ -697,7 +717,7 @@ break; #endif case FBDEVHW_PACKED_PIXELS: - if (!cfbCreateDefColormap(pScreen)) + if (!miCreateDefColormap(pScreen)) return FALSE; break; case FBDEVHW_INTERLEAVED_PLANES: @@ -734,7 +754,7 @@ { XF86VideoAdaptorPtr *ptr; - int n = xf86XVListGenericAdaptors(&ptr); + int n = xf86XVListGenericAdaptors(pScrn,&ptr); if (n) { xf86XVScreenInit(pScreen,ptr,n); } Index: xc/programs/Xserver/hw/xfree86/drivers/fbdev/fbdev.cpp diff -u xc/programs/Xserver/hw/xfree86/drivers/fbdev/fbdev.cpp:1.4 xc/programs/Xserver/hw/xfree86/drivers/fbdev/fbdev.cpp:1.5 --- xc/programs/Xserver/hw/xfree86/drivers/fbdev/fbdev.cpp:1.4 Sun Aug 22 09:04:25 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/fbdev/fbdev.cpp Wed Mar 8 16:31:06 2000 @@ -1,5 +1,5 @@ -.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/fbdev/fbdev.cpp,v 1.4 1999/08/22 13:04:25 dawes Exp $ -.TH FBDEV __drivermansuffix__ "Version 3.9.16" "XFree86" +.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/fbdev/fbdev.cpp,v 1.5 2000/03/03 01:05:36 dawes Exp $ +.TH FBDEV __drivermansuffix__ "Version 4.0" "XFree86" .SH NAME fbdev \- video driver for framebuffer device .SH SYNOPSIS Index: xc/programs/Xserver/hw/xfree86/drivers/glide/Imakefile diff -u xc/programs/Xserver/hw/xfree86/drivers/glide/Imakefile:1.2 xc/programs/Xserver/hw/xfree86/drivers/glide/Imakefile:1.3 --- xc/programs/Xserver/hw/xfree86/drivers/glide/Imakefile:1.2 Sat Aug 14 06:49:44 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/glide/Imakefile Wed Mar 8 16:31:06 2000 @@ -1,17 +1,17 @@ XCOMM XCOMM This is an Imakefile for the glide driver. XCOMM -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glide/Imakefile,v 1.2 1999/08/14 10:49:44 dawes Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glide/Imakefile,v 1.3 2000/03/07 14:31:45 dawes Exp $ #define IHaveModules #include <Server.tmpl> -#if !HasGlide || !defined(GlideIncDir) +#if !HasGlide2 || !defined(Glide2IncDir) all:: - @echo "This driver requires that you define HasGlide and GlideIncDir in host.def" + @echo "This driver requires that you define HasGlide2 and Glide2IncDir in host.def" @exit 1 install:: - @echo "This driver requires that you define HasGlide and GlideIncDir in host.def" + @echo "This driver requires that you define HasGlide2 and Glide2IncDir in host.def" @exit 1 #endif @@ -21,7 +21,7 @@ #if defined(XF86DriverSDK) INCLUDES = -I. -I../../include #else -INCLUDES = -I. -I$(GLIDEINCDIR) -I$(XF86COMSRC) -I$(XF86OSSRC) \ +INCLUDES = -I. -I$(GLIDE2INCDIR) -I$(XF86COMSRC) -I$(XF86OSSRC) \ -I$(SERVERSRC)/mfb -I$(SERVERSRC)/mi \ -I$(SERVERSRC)/cfb -I$(XF86SRC)/xaa \ -I$(XF86SRC)/vgahw -I$(XF86SRC)/ramdac \ Index: xc/programs/Xserver/hw/xfree86/drivers/glide/glide.cpp diff -u xc/programs/Xserver/hw/xfree86/drivers/glide/glide.cpp:1.6 xc/programs/Xserver/hw/xfree86/drivers/glide/glide.cpp:1.7 --- xc/programs/Xserver/hw/xfree86/drivers/glide/glide.cpp:1.6 Sat Aug 28 06:43:35 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/glide/glide.cpp Wed Mar 8 16:31:06 2000 @@ -1,5 +1,5 @@ -.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glide/glide.cpp,v 1.6 1999/08/28 10:43:35 dawes Exp $ -.TH GLIDE __drivermansuffix__ "Version 3.9.16" "XFree86" +.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glide/glide.cpp,v 1.7 2000/03/03 01:05:37 dawes Exp $ +.TH GLIDE __drivermansuffix__ "Version 4.0" "XFree86" .SH NAME glide \- Glide video driver .SH SYNOPSIS Index: xc/programs/Xserver/hw/xfree86/drivers/glide/glide_driver.c diff -u xc/programs/Xserver/hw/xfree86/drivers/glide/glide_driver.c:1.10 xc/programs/Xserver/hw/xfree86/drivers/glide/glide_driver.c:1.12 --- xc/programs/Xserver/hw/xfree86/drivers/glide/glide_driver.c:1.10 Wed Mar 8 16:31:06 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/glide/glide_driver.c Wed Mar 8 16:31:06 2000 @@ -45,7 +45,7 @@ * Support static loading. */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glide/glide_driver.c,v 1.10 2000/02/15 18:01:06 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glide/glide_driver.c,v 1.12 2000/03/01 16:01:08 tsi Exp $ */ #include "xaa.h" #include "xf86Cursor.h" @@ -393,8 +393,10 @@ /* hw.num_sst : number of Glide boards available */ - if (hw.num_sst > 0 && (flags & PROBE_DETECT)) + if (hw.num_sst > 0 && (flags & PROBE_DETECT)) { + /* XXX Need to call xf886AddDeviceToConfigure() here */ return TRUE; + } for (sst = 0; sst < hw.num_sst; sst++) { @@ -456,6 +458,8 @@ char *mod = NULL; const char *reqSym = NULL; int sst; + + if (flags & PROBE_DETECT) return FALSE; /* Check the number of entities, and fail if it isn't one. */ if (pScrn->numEntities != 1) Index: xc/programs/Xserver/hw/xfree86/drivers/glint/DRI.txt diff -u xc/programs/Xserver/hw/xfree86/drivers/glint/DRI.txt:1.1 xc/programs/Xserver/hw/xfree86/drivers/glint/DRI.txt:1.2 --- xc/programs/Xserver/hw/xfree86/drivers/glint/DRI.txt:1.1 Mon Jun 14 03:31:50 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/glint/DRI.txt Wed Mar 8 16:31:06 2000 @@ -9,8 +9,7 @@ of this document provided the copyright notice and this permission notice are preserved on all copies. -$XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/DRI.txt,v 1.1 1999/06/14 07:31:50 dawes Exp $ -$PI: xc/programs/Xserver/hw/xfree86/drivers/glint/DRI.txt,v 1.6 1999/05/27 03:46:29 jens Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/DRI.txt,v 1.2 2000/02/23 04:47:06 martin Exp $ GLINT State Transition Strategy Index: xc/programs/Xserver/hw/xfree86/drivers/glint/Imakefile diff -u xc/programs/Xserver/hw/xfree86/drivers/glint/Imakefile:1.20 xc/programs/Xserver/hw/xfree86/drivers/glint/Imakefile:1.22 --- xc/programs/Xserver/hw/xfree86/drivers/glint/Imakefile:1.20 Wed Mar 8 16:31:06 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/glint/Imakefile Wed Mar 8 16:31:06 2000 @@ -1,5 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/Imakefile,v 1.20 2000/01/23 04:44:29 dawes Exp $ -XCOMM $PI: xc/programs/Xserver/hw/xfree86/drivers/glint/Imakefile,v 1.11 1999/06/26 03:13:53 faith Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/Imakefile,v 1.22 2000/03/03 01:05:37 dawes Exp $ XCOMM XCOMM This is an Imakefile for the GLINT driver. XCOMM @@ -48,6 +47,11 @@ ObjectModuleTarget(glint,$(OBJS)) InstallObjectModule(glint,$(MODULEDIR),drivers) + +#if !defined(XF86DriverSDK) +CppManTarget(glint,) +InstallModuleManPage(glint) +#endif DependTarget() Index: xc/programs/Xserver/hw/xfree86/drivers/glint/TIramdac.c diff -u xc/programs/Xserver/hw/xfree86/drivers/glint/TIramdac.c:1.1 xc/programs/Xserver/hw/xfree86/drivers/glint/TIramdac.c:1.2 --- xc/programs/Xserver/hw/xfree86/drivers/glint/TIramdac.c:1.1 Mon Jun 14 03:31:51 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/glint/TIramdac.c Wed Mar 8 16:31:06 2000 @@ -27,8 +27,7 @@ * glintOutTIIndReg() and glintInTIIndReg() are used to access * the indirect TI RAMDAC registers only. */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/TIramdac.c,v 1.1 1999/06/14 07:31:51 dawes Exp $ */ -/* $PI: xc/programs/Xserver/hw/xfree86/drivers/glint/TIramdac.c,v 1.4 1999/05/27 03:46:29 jens Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/TIramdac.c,v 1.2 2000/02/23 04:47:06 martin Exp $ */ #include "xf86.h" #include "xf86_OSproc.h" Index: xc/programs/Xserver/hw/xfree86/drivers/glint/dualmx_accel.c diff -u xc/programs/Xserver/hw/xfree86/drivers/glint/dualmx_accel.c:1.5 xc/programs/Xserver/hw/xfree86/drivers/glint/dualmx_accel.c:1.6 --- xc/programs/Xserver/hw/xfree86/drivers/glint/dualmx_accel.c:1.5 Wed Mar 8 16:31:06 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/glint/dualmx_accel.c Wed Mar 8 16:31:06 2000 @@ -28,8 +28,7 @@ * Modified version of tx_accel.c to support dual MX chips by * Jens Owen, <jens@precisioninsight.com> */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/dualmx_accel.c,v 1.5 2000/01/21 01:12:15 dawes Exp $ */ -/* $PI: xc/programs/Xserver/hw/xfree86/drivers/glint/dualmx_accel.c,v 1.15 1999/06/09 20:05:12 jens Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/dualmx_accel.c,v 1.6 2000/02/23 04:47:06 martin Exp $ */ #include "xf86.h" #include "xf86_OSproc.h" Index: xc/programs/Xserver/hw/xfree86/drivers/glint/dualmx_dac.c diff -u xc/programs/Xserver/hw/xfree86/drivers/glint/dualmx_dac.c:1.2 xc/programs/Xserver/hw/xfree86/drivers/glint/dualmx_dac.c:1.3 --- xc/programs/Xserver/hw/xfree86/drivers/glint/dualmx_dac.c:1.2 Sun Jul 4 02:38:56 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/glint/dualmx_dac.c Wed Mar 8 16:31:06 2000 @@ -27,8 +27,7 @@ * Modified version of tx_dac.c to support Dual MX rasterizers by * Jens Owen <jens@precisioninsight.com> */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/dualmx_dac.c,v 1.2 1999/07/04 06:38:56 dawes Exp $ */ -/* $PI: xc/programs/Xserver/hw/xfree86/drivers/glint/dualmx_dac.c,v 1.13 1999/06/09 20:05:12 jens Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/dualmx_dac.c,v 1.3 2000/02/23 04:47:07 martin Exp $ */ #include "xf86.h" #include "xf86_OSproc.h" Index: xc/programs/Xserver/hw/xfree86/drivers/glint/glint.cpp diff -u /dev/null xc/programs/Xserver/hw/xfree86/drivers/glint/glint.cpp:1.2 --- /dev/null Wed Mar 8 16:31:06 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/glint/glint.cpp Wed Mar 8 16:31:06 2000 @@ -0,0 +1,112 @@ +.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/glint.cpp,v 1.2 2000/03/07 01:37:46 dawes Exp $ +.TH GLINT __drivermansuffix__ "Version 4.0" "XFree86" +.SH NAME +glint \- GLINT/Permedia video driver +.SH SYNOPSIS +.B "Section ""Device""" +.br +.BI " Identifier """ devname """" +.br +.B " Driver ""glint""" +.br +\ \ ... +.br +.B EndSection +.SH DESCRIPTION +.B glint +is an XFree86 driver for 3Dlabs & Texas Instruments GLINT/Permedia based video +cards. The driver is rather fully accelerated, and provides support for the +following framebuffer depths: 8, 15 (may give bad results with FBDev support), +16, 24 (32 bpp recommended, 24 bpp has problems), 30, and an 8+24 overlay mode. +.SH SUPPORTED HARDWARE +The +.B glint +driver supports 3Dlabs (GLINT MX, GLINT 500TX, GLINT GAMMA, Permedia, +Permedia 2, Permedia 2v) and Texas Instruments (Permedia, Permedia 2) chips. +.SH CONFIGURATION DETAILS +Please refer to XF86Config(__filemansuffix__) for general configuration +details. This section only covers configuration details specific to this +driver. +.PP +The driver auto-detects the chipset type, but the following +.B ChipSet +names may optionally be specified in the config file +.B """Device""" +section, and will override the auto-detection: +.PP +.RS 4 +"ti_pm2", "ti_pm", "pm2v", "pm2", "pm", "500tx", "mx", "gamma". +.RE +.PP +The driver will try to auto-detect the amount of video memory present for all +chips. If it's not detected correctly, the actual amount of video memory should +be specified with a +.B VideoRam +entry in the config file +.B """Device""" +section. +.PP +Additionally, you may need to specify the bus ID of your card with a +.B BusID +entry in the config file +.B """Device""" +section, especially with FBDev support. +.PP +The following driver +.B Options +are supported: +.TP +.BI "Option ""HWCursor"" """ boolean """ +Enable or disable the HW cursor. Default: on. +.TP +.BI "Option ""SWCursor"" """ boolean """ +Enable or disable the SW cursor. Default: off. +This option disables the +.B HWCursor +option and vice versa. +.TP +.BI "Option ""NoAccel"" """ boolean """ +Disable or enable acceleration. Default: acceleration is enabled. +.TP +.BI "Option ""Overlay"" +Enable 8+24 overlay mode. Only appropriate for depth 24, 32 bpp. +.RB ( Note: +This hasn't been tested with FBDev support and probably won't work.) +Recognized values are: "8,24", "24,8". Default: off. +.TP +.BI "Option ""PciRetry"" """ boolean """ +Enable or disable PCI retries. +.RB ( Note: +This doesn't work with Permedia2 based cards for Amigas.) Default: off. +.TP +.BI "Option ""ShadowFB"" """ boolean """ +Enable or disable use of the shadow framebuffer layer. See +shadowfb(__drivermansuffix__) for further information. +.RB ( Note: +This disables hardware acceleration.) Default: off. +.TP +.BI "Option ""UseFBDev"" """ boolean """ +Enable or disable use of an OS-specific fb interface (which is not supported +on all OSs). See fbdevhw(__drivermansuffix__) for further information. +Default: off. +.ig +.TP +.BI "Option ""RGBbits"" """ integer """ +Each gun of the RGB triple can have either 8 or 10 bits. Default: 8 +.. +.TP +.BI "Option ""BlockWrite"" """ boolean """ +Enable or disable block writes for the various Permedia 2 chips. This improves +acceleration in general, but disables it for some special cases. Default: off. +.TP +.BI "Option ""FireGL3000"" """ boolean """ +If you have a card of the same name, turn this on. Default: off. +.TP +.BI "Option ""SetMClk"" """ freq """ +The driver will try to auto-detect the memory clock for all chips. If it's not +detected correctly, the actual value (in MHz) should be specified with this +option. +.SH "SEE ALSO" +XFree86(1), XF86Config(__filemansuffix__), xf86config(1), Xserver(1), X(1) +.SH AUTHORS +Authors include: Alan Hourihane, Dirk Hohndel, Stefan Dirsch, Michel Dänzer Index: xc/programs/Xserver/hw/xfree86/drivers/glint/glint.h diff -u xc/programs/Xserver/hw/xfree86/drivers/glint/glint.h:1.24 xc/programs/Xserver/hw/xfree86/drivers/glint/glint.h:1.25 --- xc/programs/Xserver/hw/xfree86/drivers/glint/glint.h:1.24 Wed Mar 8 16:31:06 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/glint/glint.h Wed Mar 8 16:31:06 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/glint.h,v 1.24 2000/01/18 18:40:12 alanh Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/glint.h,v 1.25 2000/02/26 03:33:43 dawes Exp $ */ /* * Copyright 1997,1998 by Alan Hourihane <alanh@fairlite.demon.co.uk> * @@ -137,6 +137,7 @@ DrawablePtr CurrentDrawable; I2CBusPtr DDCBus, VSBus; CARD8* XAAScanlineColorExpandBuffers[2]; + CARD32 RasterizerSwap; #ifdef XF86DRI Bool directRenderingEnabled; DRIInfoPtr pDRIInfo; Index: xc/programs/Xserver/hw/xfree86/drivers/glint/glint_dri.c diff -u xc/programs/Xserver/hw/xfree86/drivers/glint/glint_dri.c:1.10 xc/programs/Xserver/hw/xfree86/drivers/glint/glint_dri.c:1.12 --- xc/programs/Xserver/hw/xfree86/drivers/glint/glint_dri.c:1.10 Wed Mar 8 16:31:07 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/glint/glint_dri.c Wed Mar 8 16:31:07 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/glint_dri.c,v 1.10 2000/02/14 20:31:19 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/glint_dri.c,v 1.12 2000/03/02 16:07:47 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -31,7 +31,6 @@ * Author: * Jens Owen <jens@precisioninsight.com> * - * $PI: xc/programs/Xserver/hw/xfree86/drivers/glint/glint_dri.c,v 1.54 1999/08/04 18:18:58 faith Exp $ */ #include "xf86.h" @@ -58,6 +57,9 @@ static char GLINTKernelDriverName[] = "gamma"; static char GLINTClientDriverName[] = "gamma"; +static void GLINTDestroyContext(ScreenPtr pScreen, drmContext hwContext, + DRIContextType contextStore); + static int GLINTDRIControlInitSingleMX(int drmSubFD, int irq) { @@ -415,8 +417,9 @@ pDRIInfo->contextSize = sizeof(GLINTDRIContextRec); /* setup call backs */ - pDRIInfo->CreateContext = GLINTCreateContext; - pDRIInfo->SwapContext = GLINTDRISwapContext; + pDRIInfo->CreateContext = GLINTCreateContext; + pDRIInfo->DestroyContext = GLINTDestroyContext; + pDRIInfo->SwapContext = GLINTDRISwapContext; pDRIInfo->InitBuffers = GLINTDRIInitBuffers; pDRIInfo->MoveBuffers = GLINTDRIMoveBuffers; pDRIInfo->bufferRequests = DRI_ALL_WINDOWS; @@ -554,7 +557,7 @@ pGlint->drmBufs->count); /* tell the generic kernel driver how to handle Gamma DMA */ - if (!pGlint->irq) { + if (pGlint->irq <= 0) { pGlint->irq = drmGetInterruptFromBusID(pGlint->drmSubFD, ((pciConfigPtr)pGlint->PciInfo ->thisCard)->busnum, @@ -656,6 +659,13 @@ return FALSE; return TRUE; +} + +static void +GLINTDestroyContext(ScreenPtr pScreen, + drmContext hwContext, + DRIContextType contextStore) +{ } Bool Index: xc/programs/Xserver/hw/xfree86/drivers/glint/glint_dri.h diff -u xc/programs/Xserver/hw/xfree86/drivers/glint/glint_dri.h:1.2 xc/programs/Xserver/hw/xfree86/drivers/glint/glint_dri.h:1.3 --- xc/programs/Xserver/hw/xfree86/drivers/glint/glint_dri.h:1.2 Sun Jun 27 10:08:05 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/glint/glint_dri.h Wed Mar 8 16:31:07 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/glint_dri.h,v 1.2 1999/06/27 14:08:05 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/glint_dri.h,v 1.3 2000/02/23 04:47:10 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -31,7 +31,6 @@ * Author: * Jens Owen <jens@precisioninsight.com> * - * $PI: xc/programs/Xserver/hw/xfree86/drivers/glint/glint_dri.h,v 1.5 1999/06/15 17:46:16 faith Exp $ */ /* Index: xc/programs/Xserver/hw/xfree86/drivers/glint/glint_dripriv.h diff -u xc/programs/Xserver/hw/xfree86/drivers/glint/glint_dripriv.h:1.1 xc/programs/Xserver/hw/xfree86/drivers/glint/glint_dripriv.h:1.2 --- xc/programs/Xserver/hw/xfree86/drivers/glint/glint_dripriv.h:1.1 Mon Jun 14 03:31:53 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/glint/glint_dripriv.h Wed Mar 8 16:31:07 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/glint_dripriv.h,v 1.1 1999/06/14 07:31:53 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/glint_dripriv.h,v 1.2 2000/02/23 04:47:10 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -31,7 +31,6 @@ * Author: * Jens Owen <jens@precisioninsight.com> * - * $PI: xc/programs/Xserver/hw/xfree86/drivers/glint/glint_dripriv.h,v 1.13 1999/06/07 13:05:07 faith Exp $ */ extern void GlxSetVisualConfigs( Index: xc/programs/Xserver/hw/xfree86/drivers/glint/glint_driver.c diff -u xc/programs/Xserver/hw/xfree86/drivers/glint/glint_driver.c:1.66 xc/programs/Xserver/hw/xfree86/drivers/glint/glint_driver.c:1.71 --- xc/programs/Xserver/hw/xfree86/drivers/glint/glint_driver.c:1.66 Wed Mar 8 16:31:07 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/glint/glint_driver.c Wed Mar 8 16:31:07 2000 @@ -27,8 +27,7 @@ * this work is sponsored by S.u.S.E. GmbH, Fuerth, Elsa GmbH, Aachen and * Siemens Nixdorf Informationssysteme */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/glint_driver.c,v 1.66 2000/02/21 19:23:01 dawes Exp $ */ -/* $PI: xc/programs/Xserver/hw/xfree86/drivers/glint/glint_driver.c,v 1.37 1999/07/02 18:38:31 faith Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/glint_driver.c,v 1.71 2000/03/07 01:37:47 dawes Exp $ */ #define PSZ 8 #include "cfb.h" @@ -122,7 +121,7 @@ * choice made in the first PreInit. */ static int pix24bpp = 0; -static Bool FBDev = FALSE; +static Bool FBDevProbed = FALSE; #define VERSION 4000 #define GLINT_NAME "GLINT" @@ -204,7 +203,6 @@ { OPTION_OVERLAY, "Overlay", OPTV_ANYSTR, {0}, FALSE }, { OPTION_SHADOW_FB, "ShadowFB", OPTV_BOOLEAN, {0}, FALSE }, { OPTION_FBDEV, "UseFBDev", OPTV_BOOLEAN, {0}, FALSE }, - { OPTION_NOWRITEBITMAP, "NoWriteBitmap",OPTV_BOOLEAN, {0}, FALSE }, { -1, NULL, OPTV_NONE, {0}, FALSE } }; @@ -623,9 +621,6 @@ * specified. */ - if (flags & PROBE_DETECTISA) return FALSE; - if (flags & PROBE_DETECTFBDEV) return FALSE; /* SEE BELOW */ - if ((numDevSections = xf86MatchDevice(GLINT_DRIVER_NAME, &devSections)) <= 0) { /* @@ -674,12 +669,12 @@ /* Check for pm2fb */ if (strcmp(fbdevHWGetName(pScrn0),"Permedia2")) continue; -#if 0 /* Need to find better way of detecting FBDEV */ - /* Probably to use BUSID FBDEV */ - if (flags & PROBE_DETECTFBDEV) + if (flags & PROBE_DETECT) { + xf86AddDeviceToConfigure(GLINT_NAME, NULL, -1); return TRUE; -#endif - foundScreen = FBDev = TRUE; + } + + foundScreen = FBDevProbed = TRUE; pScrn = xf86AllocateScreen(drv, 0); xf86LoadSubModule(pScrn, "fbdevhw"); xf86LoaderReqSymLists(fbdevHWSymbols, NULL); @@ -734,10 +729,9 @@ devSections = NULL; if (numUsed <= 0) return FALSE; - if (flags & PROBE_DETECTPCI) - return TRUE; foundScreen = TRUE; + if (!(flags & PROBE_DETECT)) for (i = 0; i < numUsed; i++) { ScrnInfoPtr pScrn; @@ -969,6 +963,8 @@ char *mod = NULL; const char *s; + if (flags & PROBE_DETECT) return FALSE; + TRACE_ENTER("GLINTPreInit"); /* @@ -1000,8 +996,6 @@ return FALSE; } pGlint = GLINTPTR(pScrn); - /* If the FBDev stuff was needed for probing, keep using it until the options are checked */ - pGlint->FBDev = FBDev; /* Get the entities, and make sure they are PCI. */ pGlint->pEnt = xf86GetEntityInfo(pScrn->entityList[0]); @@ -1069,7 +1063,7 @@ * Our default depth is 8, so pass it to the helper function. * We support both 24bpp and 32bpp layouts, so indicate that. */ - if (pGlint->FBDev) { + if (FBDevProbed) { int default_depth; if (!fbdevHWInit(pScrn,NULL,xf86FindOptionValue(pGlint->pEnt->device->options,"fbdev"))) { @@ -1193,14 +1187,23 @@ xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Using \"Shadow Framebuffer\" - acceleration disabled\n"); } - if (xf86ReturnOptValBool(GLINTOptions, OPTION_NOWRITEBITMAP, FALSE)) { - pGlint->WriteBitmap = FALSE; - xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, - "WriteBitmap() replacement disabled\n"); - } else pGlint->WriteBitmap = TRUE; /* Check whether to use the FBDev stuff and fill in the rest of pScrn */ if (xf86ReturnOptValBool(GLINTOptions, OPTION_FBDEV, FALSE)) { + if (!FBDevProbed && !xf86LoadSubModule(pScrn, "fbdevhw")) + { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "couldn't load fbdevHW module!\n"); + return FALSE; + } + + xf86LoaderReqSymLists(fbdevHWSymbols, NULL); + + if (!fbdevHWInit(pScrn,NULL,xf86FindOptionValue(pGlint->pEnt->device->options,"fbdev"))) + { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "fbdevHWInit failed!\n"); + return FALSE; + } + pGlint->FBDev = TRUE; from = X_CONFIG; @@ -1254,8 +1257,8 @@ * Set the Chipset and ChipRev, allowing config file entries to * override. */ - if (pGlint->FBDev) { /* pm2fb AFAIK only supports the Permedia2 */ - pScrn->chipset = "pm2"; + if (FBDevProbed) { /* pm2fb so far only supports the Permedia2 */ + pScrn->chipset = "ti_pm2"; pGlint->Chipset = xf86StringToToken(GLINTChipsets, pScrn->chipset); from = X_PROBED; } else { @@ -1322,7 +1325,7 @@ } } - if (!pGlint->FBDev) { + if (!FBDevProbed) { if (pGlint->pEnt->device->MemBase != 0) { /* * XXX Should check that the config file value matches one of the @@ -1365,6 +1368,9 @@ else pGlint->IOAddress = pGlint->PciInfo->memBase[0] & 0xFFFFC000; } +#if X_BYTE_ORDER == X_BIG_ENDIAN + pGlint->IOAddress += 0x10000; +#endif xf86DrvMsg(pScrn->scrnIndex, from, "MMIO registers at 0x%lX\n", (unsigned long)pGlint->IOAddress); @@ -1405,7 +1411,7 @@ pGlint->HwBpp = pScrn->bitsPerPixel; pGlint->FbBase = NULL; - if (!pGlint->FBDev) { + if (!FBDevProbed) { if (pGlint->pEnt->device->videoRam != 0) { pScrn->videoRam = pGlint->pEnt->device->videoRam; from = X_CONFIG; @@ -1653,7 +1659,7 @@ break; } - if (pGlint->FBDev) + if (pGlint->FBDev || FBDevProbed) pGlint->VGAcore = FALSE; if (pGlint->VGAcore) { @@ -1842,13 +1848,13 @@ if (pGlint->HWCursor) { - DisplayModePtr mode = pScrn->modes; - - while (mode) { + DisplayModePtr mode, first = mode = pScrn->modes; + + do { /* We know there is at least the built-in mode */ mode->Flags |= V_PHSYNC | V_PVSYNC; - if (mode->next != mode) mode = mode->next; - else mode = NULL; - } + mode->Flags &= ~V_NHSYNC | ~V_NVSYNC; + mode = mode->next; + } while (mode != NULL && mode != first); } } Index: xc/programs/Xserver/hw/xfree86/drivers/glint/glint_regs.h diff -u xc/programs/Xserver/hw/xfree86/drivers/glint/glint_regs.h:1.14 xc/programs/Xserver/hw/xfree86/drivers/glint/glint_regs.h:1.15 --- xc/programs/Xserver/hw/xfree86/drivers/glint/glint_regs.h:1.14 Sun Jul 4 02:39:00 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/glint/glint_regs.h Wed Mar 8 16:31:07 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/glint_regs.h,v 1.14 1999/07/04 06:39:00 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/glint_regs.h,v 1.15 2000/03/07 01:37:47 dawes Exp $ */ /* * glint register file @@ -17,6 +17,8 @@ #ifndef _GLINTREG_H_ #define _GLINTREG_H_ +#include "compiler.h" + /********************************************** * GLINT 500TX Configuration Region Registers * ***********************************************/ @@ -1147,15 +1149,18 @@ #define GLINT_WRITE_REG(v,r) \ do{ \ *(volatile CARD32 *)((char *)pGlint->IOBase+(r))=v; \ + mem_barrier(); \ }while(0) #define GLINT_READ_REG(r) \ (*(volatile CARD32 *)((char *)pGlint->IOBase+(r))) -#endif +#endif #define GLINT_WAIT(n) \ do{ \ if(!pGlint->UsePCIRetry) \ - while(GLINT_READ_REG(InFIFOSpace)<(n)); \ + while(GLINT_READ_REG(InFIFOSpace)<(n)){ \ + mem_barrier(); \ + } \ }while(0) #define GLINT_MASK_WRITE_REG(v,m,r) \ Index: xc/programs/Xserver/hw/xfree86/drivers/glint/pm2_accel.c diff -u xc/programs/Xserver/hw/xfree86/drivers/glint/pm2_accel.c:1.22 xc/programs/Xserver/hw/xfree86/drivers/glint/pm2_accel.c:1.23 --- xc/programs/Xserver/hw/xfree86/drivers/glint/pm2_accel.c:1.22 Wed Mar 8 16:31:07 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/glint/pm2_accel.c Wed Mar 8 16:31:07 2000 @@ -30,7 +30,7 @@ * * Permedia 2 accelerated options. */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/pm2_accel.c,v 1.22 2000/02/12 20:45:21 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/pm2_accel.c,v 1.23 2000/02/25 21:02:50 dawes Exp $ */ #include "Xarch.h" #include "xf86.h" @@ -144,9 +144,9 @@ #define MAX_FIFO_ENTRIES 256 #if X_BYTE_ORDER == X_BIG_ENDIAN -# define HOST_SWAP 1|0<<7|0<<15 /* Swap the bitmask - see manuals */ +# define STIPPLE_SWAP 1<<18 /* Mirror stipple pattern horizontally */ #else -# define HOST_SWAP 0 +# define STIPPLE_SWAP 0 #endif void @@ -195,14 +195,26 @@ GLINT_SLOW_WRITE_REG(UNIT_DISABLE, FBSourceBase); GLINT_SLOW_WRITE_REG(UNIT_DISABLE, LBWindowBase); +#if X_BYTE_ORDER == X_BIG_ENDIAN + pGlint->RasterizerSwap = 1; +#else + pGlint->RasterizerSwap = 0; +#endif + switch (pScrn->bitsPerPixel) { case 8: pGlint->PixelWidth = 0x0; /* 8 Bits */ pGlint->TexMapFormat = pGlint->pprod; +#if X_BYTE_ORDER == X_BIG_ENDIAN + pGlint->RasterizerSwap |= 3<<15; /* Swap host data */ +#endif break; case 16: pGlint->PixelWidth = 0x1; /* 16 Bits */ pGlint->TexMapFormat = pGlint->pprod | 1<<19; +#if X_BYTE_ORDER == X_BIG_ENDIAN + pGlint->RasterizerSwap |= 2<<15; /* Swap host data */ +#endif break; case 24: pGlint->PixelWidth = 0x4; /* 24 Bits */ @@ -343,7 +355,6 @@ infoPtr->ColorExpandRange = MAX_FIFO_ENTRIES; - if (pGlint->WriteBitmap) infoPtr->WriteBitmap = Permedia2WriteBitmap; if (pScrn->bitsPerPixel == 8) @@ -568,6 +579,7 @@ XAAInfoRecPtr infoRec = GET_XAAINFORECPTR_FROM_GC(pGC); GLINTPtr pGlint = GLINTPTR(infoRec->pScrn); pGlint->CurrentGC = pGC; + pGlint->CurrentDrawable = pDraw; if(infoRec->NeedToSync) (*infoRec->Sync)(infoRec->pScrn); XAAPolySegment(pDraw, pGC, nseg, pSeg); } @@ -667,6 +679,7 @@ int rop, unsigned int planemask) { GLINTPtr pGlint = GLINTPTR(pScrn); + TRACE_ENTER("Permedia2SetupForFillRectSolid"); REPLICATE(color); @@ -683,6 +696,7 @@ GLINT_WRITE_REG(pGlint->pprod|FBRM_DstEnable|FBRM_Packed, FBReadMode); } LOADROP(rop); + TRACE_EXIT("Permedia2SetupForFillRectSolid"); } static void @@ -699,6 +713,7 @@ { GLINTPtr pGlint = GLINTPTR(pScrn); int speed = 0; + TRACE_ENTER("Permedia2SubsequentFillRectSolid"); if (pGlint->ROP == GXcopy) { GLINT_WAIT(3); @@ -712,6 +727,7 @@ speed = 0; } GLINT_WRITE_REG(PrimitiveRectangle | XPositive | YPositive | speed, Render); + TRACE_EXIT("Permedia2SubsequentFillRectSolid"); } static void MoveBYTE( @@ -770,33 +786,6 @@ *(dest + 2) = *(src + 2); } -/* MoveDWORDS hacks for my Amiga (all Big Endian machines?) */ - -static void MoveDWORDS16BE( - register CARD32* dest, - register unsigned short* src, - register int dwords ) -{ - while(dwords) { - *dest = *(src + 1) << 16 | *src; - src += 2; - dest += 1; - dwords -= 1; - } -} - -static void MoveDWORDS8BE( - register CARD32* dest, - register unsigned char* src, - register int dwords ) -{ - while(dwords) { - *dest = *(src + 3) << 24 | *(src + 2) << 16 | *(src + 1) << 8 | *src; - src += 4; - dest += 1; - dwords -= 1; - } -} static void Permedia2SetupForMono8x8PatternFill24bpp(ScrnInfoPtr pScrn, @@ -840,6 +829,7 @@ unsigned int planemask) { GLINTPtr pGlint = GLINTPTR(pScrn); + TRACE_ENTER("Permedia2SetupForMono8x8PatternFill"); if (bg == -1) pGlint->FrameBufferReadMode = -1; else pGlint->FrameBufferReadMode = 0; @@ -849,6 +839,10 @@ REPLICATE(pGlint->ForeGroundColor); REPLICATE(pGlint->BackGroundColor); +#if DEBUG + ErrorF("patternx: %x patterny: %x\n", patternx, patterny); +#endif + GLINT_WAIT(13); DO_PLANEMASK(planemask); GLINT_WRITE_REG((patternx & 0xFF), AreaStipplePattern0); @@ -868,6 +862,7 @@ GLINT_WRITE_REG(pGlint->pprod | FBRM_DstEnable, FBReadMode); } LOADROP(rop); + TRACE_EXIT("Permedia2SetupForMono8x8PatternFill"); } static void @@ -884,7 +879,7 @@ if (pGlint->FrameBufferReadMode != -1) { GLINT_WRITE_REG(pGlint->BackGroundColor, ConstantColor); GLINT_WRITE_REG(patternx<<7|patterny<<12| ASM_InvertPattern | - UNIT_ENABLE, AreaStippleMode); + STIPPLE_SWAP | UNIT_ENABLE, AreaStippleMode); GLINT_WRITE_REG(AreaStippleEnable | XPositive | YPositive | PrimitiveRectangle, Render); } @@ -912,14 +907,14 @@ if (pGlint->ROP == GXcopy) { GLINT_WRITE_REG(pGlint->BackGroundColor, FBBlockColor); GLINT_WRITE_REG(ASM_InvertPattern|patternx<<7|patterny<<12| - UNIT_ENABLE, AreaStippleMode); + STIPPLE_SWAP | UNIT_ENABLE, AreaStippleMode); GLINT_WRITE_REG(AreaStippleEnable | FastFillEnable | XPositive | YPositive | PrimitiveRectangle, Render); } else { GLINT_WRITE_REG(pGlint->ForeGroundColor, ConstantColor); GLINT_WRITE_REG(pGlint->BackGroundColor, Texel0); GLINT_WRITE_REG(patternx<<7|patterny<<12| - UNIT_ENABLE, AreaStippleMode); + STIPPLE_SWAP | UNIT_ENABLE, AreaStippleMode); GLINT_WRITE_REG(AreaStippleEnable | XPositive | TextureEnable | YPositive | PrimitiveRectangle, Render); return; @@ -933,7 +928,7 @@ GLINT_WRITE_REG(pGlint->ForeGroundColor, ConstantColor); pGlint->FrameBufferReadMode = 0; } - GLINT_WRITE_REG(patternx<<7|patterny<<12|UNIT_ENABLE, AreaStippleMode); + GLINT_WRITE_REG(patternx<<7|patterny<<12|STIPPLE_SWAP|UNIT_ENABLE, AreaStippleMode); GLINT_WRITE_REG(AreaStippleEnable | pGlint->FrameBufferReadMode | XPositive | YPositive | PrimitiveRectangle, Render); @@ -973,11 +968,12 @@ } else { GLINT_WRITE_REG(fg, FBBlockColor); } - GLINT_WRITE_REG(HOST_SWAP,RasterizerMode); + GLINT_WRITE_REG(pGlint->RasterizerSwap,RasterizerMode); pGlint->FrameBufferReadMode = FastFillEnable; } else { GLINT_WRITE_REG(UNIT_ENABLE, ColorDDAMode); - GLINT_WRITE_REG(BitMaskPackingEachScanline|dobackground|HOST_SWAP,RasterizerMode); + GLINT_WRITE_REG(BitMaskPackingEachScanline|dobackground| + pGlint->RasterizerSwap,RasterizerMode); GLINT_WRITE_REG(fg, ConstantColor); if (dobackground) { pGlint->FrameBufferReadMode = TextureEnable; @@ -1042,11 +1038,12 @@ pGlint->FrameBufferReadMode = FastFillEnable; GLINT_WRITE_REG(UNIT_DISABLE, ColorDDAMode); GLINT_WRITE_REG(fg, FBBlockColor); - GLINT_WRITE_REG(HOST_SWAP,RasterizerMode); + GLINT_WRITE_REG(pGlint->RasterizerSwap,RasterizerMode); } else { GLINT_WRITE_REG(UNIT_ENABLE, ColorDDAMode); GLINT_WRITE_REG(fg, ConstantColor); - GLINT_WRITE_REG(BitMaskPackingEachScanline|dobackground|HOST_SWAP,RasterizerMode); + GLINT_WRITE_REG(BitMaskPackingEachScanline|dobackground| + pGlint->RasterizerSwap,RasterizerMode); if (dobackground) { GLINT_WRITE_REG(bg, Texel0); pGlint->FrameBufferReadMode = TextureEnable; @@ -1132,11 +1129,12 @@ if ((pScrn->bitsPerPixel != 24) && (rop == GXcopy)) { mode = FastFillEnable; GLINT_WRITE_REG(UNIT_DISABLE, ColorDDAMode); - GLINT_WRITE_REG(HOST_SWAP,RasterizerMode); + GLINT_WRITE_REG(pGlint->RasterizerSwap,RasterizerMode); } else { mode = 0; GLINT_WRITE_REG(UNIT_ENABLE, ColorDDAMode); - GLINT_WRITE_REG(BitMaskPackingEachScanline|HOST_SWAP,RasterizerMode); + GLINT_WRITE_REG(BitMaskPackingEachScanline| + pGlint->RasterizerSwap,RasterizerMode); } if(bg == -1) { @@ -1198,18 +1196,18 @@ REPLICATE(bg); GLINT_WAIT(3); if ((pScrn->bitsPerPixel != 24) && (rop == GXcopy)) { - GLINT_WRITE_REG(InvertBitMask|HOST_SWAP,RasterizerMode); + GLINT_WRITE_REG(InvertBitMask|pGlint->RasterizerSwap,RasterizerMode); GLINT_WRITE_REG(bg, FBBlockColor); } else { - GLINT_WRITE_REG(InvertBitMask|BitMaskPackingEachScanline|HOST_SWAP, - RasterizerMode); + GLINT_WRITE_REG(InvertBitMask|BitMaskPackingEachScanline| + pGlint->RasterizerSwap, RasterizerMode); GLINT_WRITE_REG(bg, ConstantColor); } goto SECOND_PASS; } GLINT_WAIT(1); - GLINT_WRITE_REG(0, RasterizerMode); + GLINT_WRITE_REG(pGlint->RasterizerSwap, RasterizerMode); Permedia2DisableClipping(pScrn); SET_SYNC_FLAG(infoRec); TRACE_EXIT("Permedia2WriteBitmap"); @@ -1237,7 +1235,7 @@ GLINT_WAIT(3); DO_PLANEMASK(planemask); - GLINT_WRITE_REG(HOST_SWAP,RasterizerMode); + GLINT_WRITE_REG(pGlint->RasterizerSwap,RasterizerMode); if (rop == GXcopy) { GLINT_WRITE_REG(pGlint->pprod | FBRM_Packed, FBReadMode); } else { @@ -1245,7 +1243,9 @@ } dwords = (w + 3) >> 2; - if((!(x&3)) && (!(w&3))) FastTexLoad = TRUE; +#if X_BYTE_ORDER == X_LITTLE_ENDIAN + if((!(x&3)) && (!(w&3))) FastTexLoad = TRUE; +#endif if((rop != GXcopy) || (planemask != ~0)) FastTexLoad = FALSE; @@ -1279,13 +1279,8 @@ /* (0x11 << 4) | 0x0D is the TAG for TextureData */ GLINT_WRITE_REG(((MAX_FIFO_ENTRIES - 2) << 16) | (0x11 << 4) | 0x0D, OutputFIFO); -#if X_BYTE_ORDER == X_BIG_ENDIAN - MoveDWORDS8BE((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4), - (unsigned char*)srcp, MAX_FIFO_ENTRIES - 1); -#else MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4), (CARD32*)srcp, MAX_FIFO_ENTRIES - 1); -#endif count -= MAX_FIFO_ENTRIES - 1; address += MAX_FIFO_ENTRIES - 1; srcp += MAX_FIFO_ENTRIES - 1; @@ -1295,13 +1290,8 @@ /* (0x11 << 4) | 0x0D is the TAG for TextureData */ GLINT_WRITE_REG(((count - 1) << 16) | (0x11 << 4) | 0x0D, OutputFIFO); -#if X_BYTE_ORDER == X_BIG_ENDIAN - MoveDWORDS8BE((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4), - (unsigned char*)srcp, count); -#else MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4), (CARD32*)srcp, count); -#endif } src += srcwidth; y++; @@ -1336,13 +1326,8 @@ /* (0x15 << 4) | 0x05 is the TAG for FBSourceData */ GLINT_WRITE_REG(((MAX_FIFO_ENTRIES - 2) << 16) | (0x15 << 4) | 0x05, OutputFIFO); -#if X_BYTE_ORDER == X_BIG_ENDIAN - MoveDWORDS8BE((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4), - (unsigned char*)srcp, MAX_FIFO_ENTRIES - 1); -#else MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4), (CARD32*)srcp, MAX_FIFO_ENTRIES - 1); -#endif count -= MAX_FIFO_ENTRIES - 1; srcp += MAX_FIFO_ENTRIES - 1; } @@ -1351,13 +1336,8 @@ /* (0x15 << 4) | 0x05 is the TAG for FBSourceData */ GLINT_WRITE_REG(((count - 1) << 16) | (0x15 << 4) | 0x05, OutputFIFO); -#if X_BYTE_ORDER == X_BIG_ENDIAN - MoveDWORDS8BE((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4), - (unsigned char*)srcp, count); -#else MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4), (CARD32*)srcp, count); -#endif } src += srcwidth; } @@ -1414,7 +1394,7 @@ TRACE_ENTER("Permedia2WritePixmap16bpp"); GLINT_WAIT(3); DO_PLANEMASK(planemask); - GLINT_WRITE_REG(HOST_SWAP,RasterizerMode); + GLINT_WRITE_REG(pGlint->RasterizerSwap,RasterizerMode); if (rop == GXcopy) { GLINT_WRITE_REG(pGlint->pprod | FBRM_Packed, FBReadMode); } else { @@ -1423,7 +1403,9 @@ FastTexLoad = FALSE; dwords = (w + 1) >> 1; +#if X_BYTE_ORDER == X_LITTLE_ENDIAN if((!(x&1)) && (!(w&1))) FastTexLoad = TRUE; +#endif if((rop != GXcopy) || (planemask != ~0)) FastTexLoad = FALSE; @@ -1456,13 +1438,8 @@ /* (0x11 << 4) | 0x0D is the TAG for TextureData */ GLINT_WRITE_REG(((MAX_FIFO_ENTRIES - 2) << 16) | (0x11 << 4) | 0x0D, OutputFIFO); -#if X_BYTE_ORDER == X_BIG_ENDIAN - MoveDWORDS16BE((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4), - (unsigned short*)srcp, MAX_FIFO_ENTRIES - 1); -#else MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4), (CARD32*)srcp, MAX_FIFO_ENTRIES - 1); -#endif count -= MAX_FIFO_ENTRIES - 1; address += MAX_FIFO_ENTRIES - 1; srcp += MAX_FIFO_ENTRIES - 1; @@ -1472,13 +1449,8 @@ /* (0x11 << 4) | 0x0D is the TAG for TextureData */ GLINT_WRITE_REG(((count - 1) << 16) | (0x11 << 4) | 0x0D, OutputFIFO); -#if X_BYTE_ORDER == X_BIG_ENDIAN - MoveDWORDS16BE((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4), - (unsigned short*)srcp, count); -#else MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4), (CARD32*)srcp, count); -#endif } src += srcwidth; y++; @@ -1513,13 +1485,8 @@ /* (0x15 << 4) | 0x05 is the TAG for FBSourceData */ GLINT_WRITE_REG(((MAX_FIFO_ENTRIES - 2) << 16) | (0x15 << 4) | 0x05, OutputFIFO); -#if X_BYTE_ORDER == X_BIG_ENDIAN - MoveDWORDS16BE((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4), - (unsigned short*)srcp, MAX_FIFO_ENTRIES - 1); -#else MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4), (CARD32*)srcp, MAX_FIFO_ENTRIES - 1); -#endif count -= MAX_FIFO_ENTRIES - 1; srcp += MAX_FIFO_ENTRIES - 1; } @@ -1528,13 +1495,8 @@ /* (0x15 << 4) | 0x05 is the TAG for FBSourceData */ GLINT_WRITE_REG(((count - 1) << 16) | (0x15 << 4) | 0x05, OutputFIFO); -#if X_BYTE_ORDER == X_BIG_ENDIAN - MoveDWORDS16BE((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4), - (unsigned short*)srcp, count); -#else MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4), (CARD32*)srcp, count); -#endif } src += srcwidth; } @@ -1589,7 +1551,7 @@ CARD32* srcp; GLINT_WAIT(3); - GLINT_WRITE_REG(HOST_SWAP,RasterizerMode); + GLINT_WRITE_REG(pGlint->RasterizerSwap,RasterizerMode); GLINT_WRITE_REG(UNIT_DISABLE, ColorDDAMode); if (rop == GXcopy) { GLINT_WRITE_REG(pGlint->pprod, FBReadMode); @@ -1691,7 +1653,7 @@ GLINT_WAIT(3); DO_PLANEMASK(planemask); - GLINT_WRITE_REG(HOST_SWAP,RasterizerMode); + GLINT_WRITE_REG(pGlint->RasterizerSwap,RasterizerMode); if (rop == GXcopy) { GLINT_WRITE_REG(pGlint->pprod, FBReadMode); } else { Index: xc/programs/Xserver/hw/xfree86/drivers/i740/Imakefile diff -u xc/programs/Xserver/hw/xfree86/drivers/i740/Imakefile:1.2 xc/programs/Xserver/hw/xfree86/drivers/i740/Imakefile:1.5 --- xc/programs/Xserver/hw/xfree86/drivers/i740/Imakefile:1.2 Sun Aug 29 21:25:03 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/i740/Imakefile Wed Mar 8 16:31:08 2000 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i740/Imakefile,v 1.2 1999/08/30 01:25:03 dawes Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i740/Imakefile,v 1.5 2000/03/03 01:05:38 dawes Exp $ XCOMM XCOMM This is the Imakefile for the i740 driver. XCOMM @@ -18,9 +18,9 @@ -I$(XF86SRC)/xaa -I$(XF86SRC)/rac \ -I$(SERVERSRC)/cfb -I$(XF86SRC)/xaa -I$(XF86SRC)/ramdac \ -I$(XF86SRC)/vgahw -I$(XF86SRC)/ddc -I$(XF86SRC)/i2c \ - -I$(SERVERSRC)/Xext \ + -I$(SERVERSRC)/Xext -I$(XF86OSSRC)/vbe \ -I$(FONTINCSRC) -I$(SERVERSRC)/include -I$(XINCLUDESRC) \ - -I$(EXTINCSRC) + -I$(EXTINCSRC) -I$(XF86SRC)/int10 #endif #if MakeHasPosixVariableSubstitutions @@ -33,9 +33,10 @@ InstallObjectModule(i740,$(MODULEDIR),drivers) -XCOMM To install a man page remove the x and add these lines -XCOMM xCppManTarget(i740,) -XCOMM xInstallModuleManPage(i740) +#if !defined(XF86DriverSDK) +CppManTarget(i740,) +InstallModuleManPage(i740) +#endif DependTarget() Index: xc/programs/Xserver/hw/xfree86/drivers/i740/i740.cpp diff -u /dev/null xc/programs/Xserver/hw/xfree86/drivers/i740/i740.cpp:1.1 --- /dev/null Wed Mar 8 16:31:08 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/i740/i740.cpp Wed Mar 8 16:31:08 2000 @@ -0,0 +1,30 @@ +.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i740/i740.cpp,v 1.1 2000/03/03 01:05:38 dawes Exp $ +.TH I740 __drivermansuffix__ "Version 4.0" "XFree86" +.SH NAME +i740 \- Intel i740 video driver +.SH SYNOPSIS +.B "Section ""Device""" +.br +.BI " Identifier """ devname """" +.br +.B " Driver ""i740""" +.br +\ \ ... +.br +.B EndSection +.SH DESCRIPTION +.B i740 +is an XFree86 driver for Intel i740 video cards. +THIS MAN PAGE NEEDS TO BE FILLED IN. +.SH SUPPORTED HARDWARE +The +.B i740 +driver supports... +.SH CONFIGURATION DETAILS +Please refer to XF86Config(__filemansuffix__) for general configuration +details. This section only covers configuration details specific to this +driver. +.SH "SEE ALSO" +XFree86(1), XF86Config(__filemansuffix__), xf86config(1), Xserver(1), X(1) +.SH AUTHORS +Authors include: ... Index: xc/programs/Xserver/hw/xfree86/drivers/i740/i740.h diff -u xc/programs/Xserver/hw/xfree86/drivers/i740/i740.h:1.2 xc/programs/Xserver/hw/xfree86/drivers/i740/i740.h:1.3 --- xc/programs/Xserver/hw/xfree86/drivers/i740/i740.h:1.2 Fri Dec 3 14:17:34 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/i740/i740.h Wed Mar 8 16:31:08 2000 @@ -25,13 +25,12 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i740/i740.h,v 1.2 1999/12/03 19:17:34 eich Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i740/i740.h,v 1.3 2000/02/23 04:47:12 martin Exp $ */ /* * Authors: * Daryll Strauss <daryll@precisioninsight.com> * - * $PI$ */ #ifndef _I740_H_ Index: xc/programs/Xserver/hw/xfree86/drivers/i740/i740_accel.c diff -u xc/programs/Xserver/hw/xfree86/drivers/i740/i740_accel.c:1.2 xc/programs/Xserver/hw/xfree86/drivers/i740/i740_accel.c:1.3 --- xc/programs/Xserver/hw/xfree86/drivers/i740/i740_accel.c:1.2 Wed Oct 13 00:21:15 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/i740/i740_accel.c Wed Mar 8 16:31:08 2000 @@ -25,13 +25,12 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i740/i740_accel.c,v 1.2 1999/10/13 04:21:15 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i740/i740_accel.c,v 1.3 2000/02/23 04:47:13 martin Exp $ */ /* * Authors: * Daryll Strauss <daryll@precisioninsight.com> * - * $PI$ */ #include <math.h> Index: xc/programs/Xserver/hw/xfree86/drivers/i740/i740_cursor.c diff -u xc/programs/Xserver/hw/xfree86/drivers/i740/i740_cursor.c:1.3 xc/programs/Xserver/hw/xfree86/drivers/i740/i740_cursor.c:1.4 --- xc/programs/Xserver/hw/xfree86/drivers/i740/i740_cursor.c:1.3 Wed Oct 13 00:21:15 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/i740/i740_cursor.c Wed Mar 8 16:31:08 2000 @@ -25,13 +25,12 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i740/i740_cursor.c,v 1.3 1999/10/13 04:21:15 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i740/i740_cursor.c,v 1.4 2000/02/23 04:47:13 martin Exp $ */ /* * Authors: * Daryll Strauss <daryll@precisioninsight.com> * - * $PI$ */ #include "xf86.h" Index: xc/programs/Xserver/hw/xfree86/drivers/i740/i740_driver.c diff -u xc/programs/Xserver/hw/xfree86/drivers/i740/i740_driver.c:1.11 xc/programs/Xserver/hw/xfree86/drivers/i740/i740_driver.c:1.18 --- xc/programs/Xserver/hw/xfree86/drivers/i740/i740_driver.c:1.11 Wed Mar 8 16:31:08 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/i740/i740_driver.c Wed Mar 8 16:31:08 2000 @@ -25,13 +25,12 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i740/i740_driver.c,v 1.11 2000/02/21 19:23:02 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i740/i740_driver.c,v 1.18 2000/03/06 23:54:09 dawes Exp $ */ /* * Authors: * Daryll Strauss <daryll@precisioninsight.com> * - * $PI$ */ /* @@ -93,6 +92,8 @@ #include "xf86xv.h" #include "Xv.h" +#include "vbe.h" + /* Required Functions: */ static OptionInfoPtr I740AvailableOptions(int chipid, int busid); @@ -242,6 +243,12 @@ NULL }; +static const char *vbeSymbols[] = { + "VBEInit", + "vbeDoEDID", + NULL +}; + #ifdef XFree86LOADER static MODULESETUPPROTO(i740Setup); @@ -283,7 +290,7 @@ * might refer to. */ LoaderRefSymLists(vgahwSymbols, cfbSymbols, xaaSymbols, - xf8_32bppSymbols, ramdacSymbols, + xf8_32bppSymbols, ramdacSymbols, vbeSymbols, 0 /* ddcsymbols */, 0 /* i2csymbols */, 0 /* shadowSymbols */, 0 /* fbdevsymbols */, NULL); @@ -356,9 +363,6 @@ Bool foundScreen = FALSE; EntityInfoPtr pEnt; - if (flags & PROBE_DETECTISA) return FALSE; - if (flags & PROBE_DETECTFBDEV) return FALSE; - /* Find the config file Device sections that match this driver, and return if there are none. @@ -379,10 +383,10 @@ devSections, numDevSections, drv, &usedChips); - if (numUsed > 0 && (flags & PROBE_DETECTPCI)) - return TRUE; - - for (i=0; i<numUsed; i++) { + if (numUsed > 0) { + if (flags & PROBE_DETECT) + foundScreen = TRUE; + else for (i=0; i<numUsed; i++) { pEnt = xf86GetEntityInfo(usedChips[i]); if (pEnt->active) { @@ -408,8 +412,9 @@ xf86ConfigActivePciEntity(pScrn, usedChips[i], I740PciChipsets, 0, 0, 0, 0, 0); } xfree(pEnt); + } + xfree(usedChips); } - if (numUsed) xfree(usedChips); /* Look for Real3D based chips */ numUsed = xf86MatchPciInstances(I740_NAME, PCI_VENDOR_REAL3D, @@ -417,10 +422,10 @@ devSections, numDevSections, drv, &usedChips); - if (numUsed > 0 && (flags & PROBE_DETECTPCI)) - return TRUE; - - for (i=0; i<numUsed; i++) { + if (numUsed > 0) { + if (flags & PROBE_DETECT) + foundScreen = TRUE; + else for (i=0; i<numUsed; i++) { pEnt = xf86GetEntityInfo(usedChips[i]); if (pEnt->active) { @@ -446,8 +451,9 @@ xf86ConfigActivePciEntity(pScrn, usedChips[i], I740PciChipsets, 0, 0, 0, 0, 0); } xfree(pEnt); + } + xfree(usedChips); } - if (numUsed) xfree(usedChips); if (devSections) xfree(devSections); @@ -455,6 +461,18 @@ return foundScreen; } +extern xf86MonPtr ConfiguredMonitor; + +void +I740ProbeDDC(ScrnInfoPtr pScrn, int index) +{ + vbeInfoPtr pVbe; + if (xf86LoadSubModule(pScrn, "vbe")) { + pVbe = VBEInit(NULL,index); + ConfiguredMonitor = vbeDoEDID(pVbe); + } +} + /* * I740PreInit -- * @@ -476,14 +494,6 @@ if (pScrn->numEntities != 1) return FALSE; - /* The vgahw module should be loaded here when needed */ - if (!xf86LoadSubModule(pScrn, "vgahw")) return FALSE; - - xf86LoaderReqSymLists(vgahwSymbols, NULL); - - /* Allocate a vgaHWRec */ - if (!vgaHWGetHWRec(pScrn)) return FALSE; - /* Allocate driverPrivate */ if (!I740GetRec(pScrn)) { return FALSE; @@ -494,6 +504,19 @@ pI740->pEnt = xf86GetEntityInfo(pScrn->entityList[0]); if (pI740->pEnt->location.type != BUS_PCI) return FALSE; + if (flags & PROBE_DETECT) { + I740ProbeDDC(pScrn, pI740->pEnt->index); + return TRUE; + } + + /* The vgahw module should be loaded here when needed */ + if (!xf86LoadSubModule(pScrn, "vgahw")) return FALSE; + + xf86LoaderReqSymLists(vgahwSymbols, NULL); + + /* Allocate a vgaHWRec */ + if (!vgaHWGetHWRec(pScrn)) return FALSE; + pI740->PciInfo = xf86GetPciInfoForEntity(pI740->pEnt->index); pI740->PciTag = pciTag(pI740->PciInfo->bus, pI740->PciInfo->device, pI740->PciInfo->func); @@ -1540,7 +1563,7 @@ XF86VideoAdaptorPtr *ptr; int n; - n = xf86XVListGenericAdaptors(&ptr); + n = xf86XVListGenericAdaptors(pScrn,&ptr); if (n) { xf86XVScreenInit(pScreen, ptr, n); } Index: xc/programs/Xserver/hw/xfree86/drivers/i740/i740_io.c diff -u xc/programs/Xserver/hw/xfree86/drivers/i740/i740_io.c:1.2 xc/programs/Xserver/hw/xfree86/drivers/i740/i740_io.c:1.3 --- xc/programs/Xserver/hw/xfree86/drivers/i740/i740_io.c:1.2 Fri Dec 3 14:17:34 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/i740/i740_io.c Wed Mar 8 16:31:08 2000 @@ -24,13 +24,12 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i740/i740_io.c,v 1.2 1999/12/03 19:17:34 eich Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i740/i740_io.c,v 1.3 2000/02/23 04:47:14 martin Exp $ */ /* * Authors: * Daryll Strauss <daryll@precisioninsight.com> * - * $PI$ */ #include "xf86.h" Index: xc/programs/Xserver/hw/xfree86/drivers/i740/i740_macros.h diff -u xc/programs/Xserver/hw/xfree86/drivers/i740/i740_macros.h:1.1 xc/programs/Xserver/hw/xfree86/drivers/i740/i740_macros.h:1.2 --- xc/programs/Xserver/hw/xfree86/drivers/i740/i740_macros.h:1.1 Sun Aug 29 08:20:59 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/i740/i740_macros.h Wed Mar 8 16:31:08 2000 @@ -25,13 +25,12 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i740/i740_macros.h,v 1.1 1999/08/29 12:20:59 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i740/i740_macros.h,v 1.2 2000/02/23 04:47:14 martin Exp $ */ /* * Authors: * Kevin E. Martin <kevin@precisioninsight.com> * - * $PI$ */ #define WAIT_ENGINE_IDLE_PIO() { \ Index: xc/programs/Xserver/hw/xfree86/drivers/i740/i740_reg.h diff -u xc/programs/Xserver/hw/xfree86/drivers/i740/i740_reg.h:1.1 xc/programs/Xserver/hw/xfree86/drivers/i740/i740_reg.h:1.2 --- xc/programs/Xserver/hw/xfree86/drivers/i740/i740_reg.h:1.1 Sun Aug 29 08:20:59 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/i740/i740_reg.h Wed Mar 8 16:31:08 2000 @@ -25,13 +25,12 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i740/i740_reg.h,v 1.1 1999/08/29 12:20:59 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i740/i740_reg.h,v 1.2 2000/02/23 04:47:14 martin Exp $ */ /* * Authors: * Kevin E. Martin <kevin@precisioninsight.com> * - * $PI$ */ /* I/O register offsets */ Index: xc/programs/Xserver/hw/xfree86/drivers/i810/Imakefile diff -u xc/programs/Xserver/hw/xfree86/drivers/i810/Imakefile:1.2 xc/programs/Xserver/hw/xfree86/drivers/i810/Imakefile:1.4 --- xc/programs/Xserver/hw/xfree86/drivers/i810/Imakefile:1.2 Wed Mar 8 16:31:08 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/i810/Imakefile Wed Mar 8 16:31:08 2000 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i810/Imakefile,v 1.2 2000/02/14 06:27:22 martin Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i810/Imakefile,v 1.4 2000/03/03 01:05:38 dawes Exp $ XCOMM XCOMM This is the Imakefile for the i810 driver. XCOMM @@ -9,14 +9,14 @@ # # Uncomment these to build with DRI support when available # -#if 0 +#undef BuildXF86DRI #if BuildXF86DRI -DRISRCS = i810_dri.c -DRIOBJS = i810_dri.o -DRIINCLUDES = -I$(SERVERSRC)/GL/dri -I$(LIBSRC)/GL/dri +DRISRCS = i810_dri.c i810_drm.c +DRIOBJS = i810_dri.o i810_drm.o +DRIINCLUDES = -I$(SERVERSRC)/GL/dri -I$(LIBSRC)/GL/dri \ + -I$(XF86OSSRC)/linux/drm/kernel DRIDEFINES = $(GLX_DEFINES) #endif -#endif SRCS = i810_driver.c i810_cursor.c i810_accel.c i810_io.c \ i810_memory.c i810_wmark.c $(DRISRCS) @@ -49,9 +49,10 @@ InstallObjectModule(i810,$(MODULEDIR),drivers) -XCOMM To install a man page remove the x and add these lines -XCOMM xCppManTarget(i810,) -XCOMM xInstallModuleManPage(i810) +#if !defined(XF86DriverSDK) +CppManTarget(i810,) +InstallModuleManPage(i810) +#endif DependTarget() @@ -70,4 +71,3 @@ InstallDriverSDKNonExecFile(i810_reg.h,$(DRIVERSDKDIR)/drivers/i810) InstallDriverSDKObjectModule(i810,$(DRIVERSDKMODULEDIR),drivers) - Index: xc/programs/Xserver/hw/xfree86/drivers/i810/README diff -u /dev/null xc/programs/Xserver/hw/xfree86/drivers/i810/README:1.1 --- /dev/null Wed Mar 8 16:31:08 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/i810/README Wed Mar 8 16:31:08 2000 @@ -0,0 +1,93 @@ + Information for i810 Users + i810 Driver Version 2.0.0 + + +1. Supported Hardware + + * Intel 810 motherboards: + i810, + i810-dc100, + i810e. + + +2. Features + + * Full support for 8, 15, 16 and 24 bit per pixel depths. + * Hardware cursor support to reduce sprite flicker. + * Hardware accelerated 2D drawing engine support for 8, 15, 16 and + 24 bit per pixel depths. + * Support for high resolution video modes up to 1600x1200. + * Fully programmable clock supported. + * Robust text mode restore for VT switching. + + +3. Technical Notes + + * Hardware acceleration is not possible in 32 bit per pixel depth, + and this mode is not supported by this driver. + * Interlace modes cannot be supported. + * Normal use requires the agpgart.o module, included in linux kernels + 2.3.42 and higher. + + +4. Reported Working Video Cards + + * Intel evaluation hardware - i810, i810-dc100 and i810e. + * Tyan Tomcat Motherboard. + * HappyPC set-top box. + +5. Configuration + + The driver auto-detects all device information necessary to + initialize the card. The only lines you need in the "Device" + section of your XF86Config file are: + + Section "Device" + Identifier "i810" + EndSection + + If you have problems with auto-detection, you can specify: + + DacSpeed - in MHz + MemBase - physical address of the linear framebuffer + IOBase - physical address of the memory mapped IO registers + + + In order to use most resolutions, it is necessary to install the + 'agpgart.o' module which accompanies this server. You will probably + have to compile the module yourself (see the notes in the module). + + Note: the i810 X server detects whether your motherboard has + display cache video memory. This memory is has reduced bandwidth + compared to normal system memory, and isn't used by the server. The + main function of this memory is for ancillary buffers (eg. z buffer) + in a forthcoming 3d capable server. + + +6. Driver Options + + "no_accel" - software rendering only + + +7. Known Limitations + + - No 3d support in this release. + - No 32bpp support in this driver. + - Running Two Xservers on different VT's is not supported at this time. + +8. Author + + Keith Whitwell + Precision Insight, Inc. + Cedar Park, TX + USA + + http://www.precisioninsight.com + +9. Support + + For detailed installation instructions and other Linux on i810 + related matters, please consult: + + http://support.intel.com/support/graphics/intel810/linuxinstal.htm + Index: xc/programs/Xserver/hw/xfree86/drivers/i810/i810.cpp diff -u /dev/null xc/programs/Xserver/hw/xfree86/drivers/i810/i810.cpp:1.1 --- /dev/null Wed Mar 8 16:31:08 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/i810/i810.cpp Wed Mar 8 16:31:08 2000 @@ -0,0 +1,30 @@ +.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i810/i810.cpp,v 1.1 2000/03/03 01:05:39 dawes Exp $ +.TH I810 __drivermansuffix__ "Version 4.0" "XFree86" +.SH NAME +i810 \- Intel i810 video driver +.SH SYNOPSIS +.B "Section ""Device""" +.br +.BI " Identifier """ devname """" +.br +.B " Driver ""i810""" +.br +\ \ ... +.br +.B EndSection +.SH DESCRIPTION +.B i810 +is an XFree86 driver for Intel i810 video cards. +THIS MAN PAGE NEEDS TO BE FILLED IN. +.SH SUPPORTED HARDWARE +The +.B i810 +driver supports... +.SH CONFIGURATION DETAILS +Please refer to XF86Config(__filemansuffix__) for general configuration +details. This section only covers configuration details specific to this +driver. +.SH "SEE ALSO" +XFree86(1), XF86Config(__filemansuffix__), xf86config(1), Xserver(1), X(1) +.SH AUTHORS +Authors include: ... Index: xc/programs/Xserver/hw/xfree86/drivers/i810/i810.h diff -u xc/programs/Xserver/hw/xfree86/drivers/i810/i810.h:1.2 xc/programs/Xserver/hw/xfree86/drivers/i810/i810.h:1.4 --- xc/programs/Xserver/hw/xfree86/drivers/i810/i810.h:1.2 Wed Mar 8 16:31:08 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/i810/i810.h Wed Mar 8 16:31:08 2000 @@ -25,21 +25,17 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i810/i810.h,v 1.2 2000/02/14 06:27:22 martin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i810/i810.h,v 1.4 2000/03/02 16:07:48 martin Exp $ */ /* * Authors: * Keith Whitwell <keithw@precisioninsight.com> * - * $PI$ */ #ifndef _I810_H_ #define _I810_H_ -/* Temporarily turn off building in DRI support */ -#undef XF86DRI - #include "xf86PciInfo.h" #include "xf86Pci.h" @@ -47,6 +43,7 @@ #include "xaa.h" #include "xf86Cursor.h" +#undef XF86DRI #ifdef XF86DRI @@ -71,11 +68,6 @@ typedef char (*I810ReadByteFunc)(I810Ptr pI810, int addr); -#ifdef XF86DRI -extern void FillPrivateDRI(I810Ptr pI810, I810DRIPtr pI810DRI); -#endif - - extern void I810SetTiledMemory(ScrnInfoPtr pScrn, int nr, unsigned start, @@ -86,7 +78,6 @@ /* Linear region allocated in framebuffer. */ typedef struct { -/* FBAreaPtr Fbarea; */ unsigned long Start; unsigned long End; unsigned long Size; @@ -127,16 +118,10 @@ unsigned int LprbStart; unsigned int LprbLen; - unsigned short IntrHwStatMask; - unsigned short IntrEnabled; - unsigned short IntrIdentity; - unsigned short IntrMask; - unsigned short ErrorMask; + unsigned int Fence[8]; } I810RegRec, *I810RegPtr; - - typedef struct _I810Rec { unsigned char *MMIOBase; unsigned char *FbBase; @@ -145,11 +130,15 @@ int MaxClock; unsigned int bufferOffset; /* for I810SelectBuffer */ - + Bool DoneFrontAlloc; + BoxRec FbMemBox; I810MemRange FrontBuffer; I810MemRange BackBuffer; I810MemRange DepthBuffer; I810MemRange TexMem; + I810MemRange Scratch; + I810MemRange BufferMem; + int auxPitch; int auxPitchBits; @@ -201,27 +190,29 @@ int numVisualConfigs; __GLXvisualConfig* pVisualConfigs; I810ConfigPrivPtr pVisualConfigsPriv; + unsigned long dcacheHandle; + unsigned long backHandle; + unsigned long zHandle; + unsigned long cursorHandle; + unsigned long sysmemHandle; + Bool agpAcquired; + drmHandle buffer_map; + drmHandle ring_map; #endif - - + Bool agpAcquired2d; } I810Rec; #define I810PTR(p) ((I810Ptr)((p)->driverPrivate)) -#define DRAW_STATE_CLIPPING 0x1 -#define DRAW_STATE_TRANSPARENT 0x2 -#define DRAW_STATE_CLIP1CHANGED 0x4 - #define I810_FRONT 0 #define I810_BACK 1 #define I810_DEPTH 2 -#define I8102XCUTOFF 135000 - - extern Bool I810DRIScreenInit(ScreenPtr pScreen); extern void I810DRICloseScreen(ScreenPtr pScreen); extern Bool I810DRIFinishScreenInit(ScreenPtr pScreen); +extern Bool I810drmInitDma(ScrnInfoPtr pScrn); +extern Bool I810drmCleanupDma(ScrnInfoPtr pScrn); #define I810PTR(p) ((I810Ptr)((p)->driverPrivate)) #define I810REGPTR(p) (&(I810PTR(p)->ModeReg)) @@ -239,6 +230,7 @@ unsigned long local ); extern int I810AllocLow( I810MemRange *result, I810MemRange *pool, int size ); extern int I810AllocHigh( I810MemRange *result, I810MemRange *pool, int size ); +extern Bool I810AllocateFront(ScrnInfoPtr pScrn); extern void I810SetCursorPosition(ScrnInfoPtr pScrn, int x, int y); @@ -288,13 +280,8 @@ if (n>2 && (I810_DEBUG&DEBUG_ALWAYS_SYNC)) I810Sync( pScrn ); \ if (pI810->LpRing.space < n*4) I810WaitLpRing( pScrn, n*4, 0); \ pI810->LpRing.space -= n*4; \ - if (I810_DEBUG & DEBUG_VERBOSE_RING) { \ - CARD32 tail = INREG(LP_RING+RING_TAIL); \ + if (I810_DEBUG & DEBUG_VERBOSE_RING) \ ErrorF( "BEGIN_LP_RING %d in %s\n", n, __FUNCTION__); \ - if (tail != pI810->LpRing.tail) \ - FatalError("tail %x pI810->LpRing.tail %x\n", \ - tail, pI810->LpRing.tail); \ - } \ outring = pI810->LpRing.tail; \ ringmask = pI810->LpRing.tail_mask; \ virt = pI810->LpRing.virtual_start; @@ -325,7 +312,7 @@ /* To remove all debugging, make sure I810_DEBUG is defined as a * preprocessor symbol, and equal to zero. */ -/* #define I810_DEBUG 0 */ +#define I810_DEBUG 0 #ifndef I810_DEBUG #warning "Debugging enabled - expect reduced performance" extern int I810_DEBUG; Index: xc/programs/Xserver/hw/xfree86/drivers/i810/i810_accel.c diff -u xc/programs/Xserver/hw/xfree86/drivers/i810/i810_accel.c:1.1 xc/programs/Xserver/hw/xfree86/drivers/i810/i810_accel.c:1.3 --- xc/programs/Xserver/hw/xfree86/drivers/i810/i810_accel.c:1.1 Wed Mar 8 16:31:09 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/i810/i810_accel.c Wed Mar 8 16:31:09 2000 @@ -30,15 +30,9 @@ * Authors: * Keith Whitwell <keithw@precisioninsight.com> * - * $PI$ */ -#include <math.h> -#include <stdio.h> -#include <sys/mman.h> -#include <sys/time.h> -#include <signal.h> - +#include "xf86_ansic.h" #include "xf86.h" #include "i810.h" @@ -116,7 +110,6 @@ XAAInfoRecPtr infoPtr; ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; I810Ptr pI810 = I810PTR(pScrn); - I810MemRange scratch; /* push into pI810 */ if (I810_DEBUG & DEBUG_VERBOSE_ACCEL) ErrorF( "I810AccelInit\n"); @@ -161,6 +154,7 @@ infoPtr->SubsequentScreenToScreenCopy = I810SubsequentScreenToScreenCopy; } + /* 8x8 pattern fills */ { @@ -181,15 +175,12 @@ /* Scanline color expansion - Use the same scheme as the 3.3 driver. * */ - if ( I810AllocLow( &scratch, &(pI810->SysMem), 64*1024 ) || - I810AllocLow( &scratch, &(pI810->SysMem), 16*1024 ) ) - { + if(pI810->Scratch.Size != 0) { int i; int width = ((pScrn->displayWidth + 31) & ~31) / 8; - int nr_buffers = scratch.Size / width; - unsigned char *ptr = pI810->FbBase + scratch.Start; + int nr_buffers = pI810->Scratch.Size / width; + unsigned char *ptr = pI810->FbBase + pI810->Scratch.Start; - pI810->NumScanlineColorExpandBuffers = nr_buffers; pI810->ScanlineColorExpandBuffers = (unsigned char **) xnfcalloc( nr_buffers, sizeof (unsigned char *) ); @@ -219,14 +210,12 @@ I810SubsequentScanlineCPUToScreenColorExpandFill; infoPtr->SubsequentColorExpandScanline = - I810SubsequentColorExpandScanline; - + I810SubsequentColorExpandScanline; } /* Possible todo: Image writes w/ non-GXCOPY rop. */ - I810SelectBuffer(pScrn, I810_FRONT); return XAAInit(pScreen, infoPtr); @@ -242,15 +231,18 @@ int start = 0; int now = 0; int last_head = 0; - + int first = 0; + /* If your system hasn't moved the head pointer in 2 seconds, I'm going to * call it crashed. */ if (timeout_millis == 0) timeout_millis = 2000; - if (I810_DEBUG & DEBUG_VERBOSE_ACCEL) + if (I810_DEBUG & DEBUG_VERBOSE_ACCEL) { ErrorF( "I810WaitLpRing %d\n", n); + first = GetTimeInMillis(); + } while (ring->space < n) { @@ -265,11 +257,20 @@ iters++; now = GetTimeInMillis(); if ( start == 0 || now < start || ring->head != last_head) { + if (I810_DEBUG & DEBUG_VERBOSE_ACCEL) + if (now > start) + ErrorF( "space: %d wanted %d\n", ring->space, n ); start = now; last_head = ring->head; } else if ( now - start > timeout_millis ) { I810PrintErrorState( pScrn ); ErrorF( "space: %d wanted %d\n", ring->space, n ); +#ifdef XF86DRI + if(pI810->directRenderingEnabled) { + DRIUnlock(screenInfo.screens[pScrn->scrnIndex]); + DRICloseScreen(screenInfo.screens[pScrn->scrnIndex]); + } +#endif FatalError("lockup\n"); } @@ -277,6 +278,15 @@ ; } + if (I810_DEBUG & DEBUG_VERBOSE_ACCEL) + { + now = GetTimeInMillis(); + if (now - first) { + ErrorF("Elapsed %d ms\n", now - first); + ErrorF( "space: %d wanted %d\n", ring->space, n ); + } + } + return iters; } @@ -292,9 +302,12 @@ /* VT switching tries to do this. */ if (!pI810->LockHeld) { - ErrorF( "I810Sync called with lock not held\n" ); - return; + return; } + + +/* if (pI810->directRenderingEnabled) */ +/* DRIUnlockLockQueiscent( pScrn->pScreen ); */ #endif /* Send a flush instruction and then wait till the ring is empty. @@ -303,7 +316,7 @@ */ { BEGIN_LP_RING(2); - OUT_RING( INST_PARSER_CLIENT | INST_OP_FLUSH ); + OUT_RING( INST_PARSER_CLIENT | INST_OP_FLUSH | INST_FLUSH_MAP_CACHE ); OUT_RING( 0 ); /* pad to quadword */ ADVANCE_LP_RING(); } @@ -314,7 +327,6 @@ pI810->nextColorExpandBuf = 0; } - void I810SetupForSolidFill(ScrnInfoPtr pScrn, int color, int rop, unsigned int planemask) @@ -578,7 +590,7 @@ I810Ptr pI810 = I810PTR(pScrn); BEGIN_LP_RING(2); - OUT_RING( INST_PARSER_CLIENT | INST_OP_FLUSH ); + OUT_RING( INST_PARSER_CLIENT | INST_OP_FLUSH | INST_FLUSH_MAP_CACHE); OUT_RING( 0 ); ADVANCE_LP_RING(); } @@ -630,9 +642,9 @@ I810Ptr pI810 = I810PTR(pScrn); BEGIN_LP_RING( 8 ); - OUT_RING( INST_PARSER_CLIENT | INST_OP_FLUSH ); + OUT_RING( INST_PARSER_CLIENT | INST_OP_FLUSH | INST_FLUSH_MAP_CACHE ); OUT_RING( GFX_CMD_CONTEXT_SEL | CS_UPDATE_USE | CS_USE_CTX0 ); - OUT_RING( INST_PARSER_CLIENT | INST_OP_FLUSH ); + OUT_RING( INST_PARSER_CLIENT | INST_OP_FLUSH | INST_FLUSH_MAP_CACHE); OUT_RING( 0 ); Index: xc/programs/Xserver/hw/xfree86/drivers/i810/i810_cursor.c diff -u xc/programs/Xserver/hw/xfree86/drivers/i810/i810_cursor.c:1.1 xc/programs/Xserver/hw/xfree86/drivers/i810/i810_cursor.c:1.2 --- xc/programs/Xserver/hw/xfree86/drivers/i810/i810_cursor.c:1.1 Wed Mar 8 16:31:09 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/i810/i810_cursor.c Wed Mar 8 16:31:09 2000 @@ -25,13 +25,12 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i810/i810_cursor.c,v 1.1 2000/02/11 17:25:51 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i810/i810_cursor.c,v 1.2 2000/02/23 04:47:15 martin Exp $ */ /* * Authors: * Keith Whitwell <keithw@precisioninsight.com> * - * $PI$ */ #include "xf86.h" Index: xc/programs/Xserver/hw/xfree86/drivers/i810/i810_dri.c diff -u xc/programs/Xserver/hw/xfree86/drivers/i810/i810_dri.c:1.1 xc/programs/Xserver/hw/xfree86/drivers/i810/i810_dri.c:1.2 --- xc/programs/Xserver/hw/xfree86/drivers/i810/i810_dri.c:1.1 Wed Mar 8 16:31:09 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/i810/i810_dri.c Wed Mar 8 16:31:09 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i810/i810_dri.c,v 1.1 2000/02/11 17:25:51 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i810/i810_dri.c,v 1.2 2000/03/02 16:07:49 martin Exp $ */ #include "xf86.h" #include "xf86_OSproc.h" @@ -46,7 +46,21 @@ __GLXvisualConfig *configs, void **configprivs); - +static int i810_pitches[] = { + 512, + 1024, + 2048, + 4096, + 0 +}; + +static int i810_pitch_flags[] = { + 0x0, + 0x1, + 0x2, + 0x3, + 0 +}; static Bool I810InitVisualConfigs(ScreenPtr pScreen) @@ -100,12 +114,12 @@ pConfigs[0].vid = -1; pConfigs[0].class = -1; pConfigs[0].rgba = TRUE; - pConfigs[0].redSize = 8; - pConfigs[0].greenSize = 8; - pConfigs[0].blueSize = 8; - pConfigs[0].redMask = 0x00FF0000; - pConfigs[0].greenMask = 0x0000FF00; - pConfigs[0].blueMask = 0x000000FF; + pConfigs[0].redSize = 5; + pConfigs[0].greenSize = 6; + pConfigs[0].blueSize = 5; + pConfigs[0].redMask = 0x0000F800; + pConfigs[0].greenMask = 0x000007E0; + pConfigs[0].blueMask = 0x0000001F; pConfigs[0].alphaMask = 0; pConfigs[0].accumRedSize = 0; pConfigs[0].accumGreenSize = 0; @@ -114,7 +128,7 @@ pConfigs[0].doubleBuffer = FALSE; pConfigs[0].stereo = FALSE; pConfigs[0].bufferSize = 16; - pConfigs[0].depthSize = 0; + pConfigs[0].depthSize = 16; pConfigs[0].stencilSize = 0; pConfigs[0].auxBuffers = 0; pConfigs[0].level = 0; @@ -129,12 +143,12 @@ pConfigs[1].vid = -1; pConfigs[1].class = -1; pConfigs[1].rgba = TRUE; - pConfigs[1].redSize = 8; - pConfigs[1].greenSize = 8; - pConfigs[1].blueSize = 8; - pConfigs[1].redMask = 0x00FF0000; - pConfigs[1].greenMask = 0x0000FF00; - pConfigs[1].blueMask = 0x000000FF; + pConfigs[1].redSize = 5; + pConfigs[1].greenSize = 6; + pConfigs[1].blueSize = 5; + pConfigs[1].redMask = 0x0000F800; + pConfigs[1].greenMask = 0x000007E0; + pConfigs[1].blueMask = 0x0000001F; pConfigs[1].alphaMask = 0; pConfigs[1].accumRedSize = 0; pConfigs[1].accumGreenSize = 0; @@ -158,12 +172,12 @@ pConfigs[2].vid = -1; pConfigs[2].class = -1; pConfigs[2].rgba = TRUE; - pConfigs[2].redSize = 8; - pConfigs[2].greenSize = 8; - pConfigs[2].blueSize = 8; - pConfigs[2].redMask = 0x00FF0000; - pConfigs[2].greenMask = 0x0000FF00; - pConfigs[2].blueMask = 0x000000FF; + pConfigs[2].redSize = 5; + pConfigs[2].greenSize = 6; + pConfigs[2].blueSize = 5; + pConfigs[2].redMask = 0x0000F800; + pConfigs[2].greenMask = 0x000007E0; + pConfigs[2].blueMask = 0x0000001F; pConfigs[2].alphaMask = 0; pConfigs[2].accumRedSize = 0; pConfigs[2].accumGreenSize = 0; @@ -172,7 +186,7 @@ pConfigs[2].doubleBuffer = TRUE; pConfigs[2].stereo = FALSE; pConfigs[2].bufferSize = 16; - pConfigs[2].depthSize = 0; + pConfigs[2].depthSize = 16; pConfigs[2].stencilSize = 0; pConfigs[2].auxBuffers = 0; pConfigs[2].level = 0; @@ -187,12 +201,12 @@ pConfigs[3].vid = -1; pConfigs[3].class = -1; pConfigs[3].rgba = TRUE; - pConfigs[3].redSize = 8; - pConfigs[3].greenSize = 8; - pConfigs[3].blueSize = 8; - pConfigs[3].redMask = 0x00FF0000; - pConfigs[3].greenMask = 0x0000FF00; - pConfigs[3].blueMask = 0x000000FF; + pConfigs[3].redSize = 5; + pConfigs[3].greenSize = 6; + pConfigs[3].blueSize = 5; + pConfigs[3].redMask = 0x0000F800; + pConfigs[3].greenMask = 0x000007E0; + pConfigs[3].blueMask = 0x0000001F; pConfigs[3].alphaMask = 0; pConfigs[3].accumRedSize = 0; pConfigs[3].accumGreenSize = 0; @@ -221,6 +235,15 @@ return TRUE; } + +static unsigned int mylog2(unsigned int n) +{ + unsigned int log2 = 1; + while (n>1) n >>= 1, log2++; + return log2; +} + + Bool I810DRIScreenInit(ScreenPtr pScreen) { ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; @@ -229,14 +252,27 @@ I810DRIPtr pI810DRI; unsigned long tom; unsigned long agpHandle; -/* int bufs; */ + unsigned long dcacheHandle; + int sysmem_size = 0; + int back_size = 0; + int pitch_idx = 0; + int bufs; + int width = pScrn->displayWidth * pI810->cpp; + int i; + + /* ToDo : save agpHandles? */ + pDRIInfo = DRICreateInfoRec(); if (!pDRIInfo) { ErrorF("DRICreateInfoRec failed\n"); return FALSE; } + +/* pDRIInfo->wrap.ValidateTree = 0; */ +/* pDRIInfo->wrap.PostValidateTree = 0; */ + pI810->pDRIInfo = pDRIInfo; pI810->LockHeld = 0; @@ -251,7 +287,10 @@ pDRIInfo->ddxDriverMinorVersion = 1; pDRIInfo->ddxDriverPatchVersion = 0; pDRIInfo->frameBufferPhysicalAddress = pI810->LinearAddr; - pDRIInfo->frameBufferSize = pI810->FbMapSize; + pDRIInfo->frameBufferSize = (((pScrn->displayWidth * + pScrn->virtualY * pI810->cpp) + + 4096 - 1) / 4096) * 4096; + pDRIInfo->frameBufferStride = pScrn->displayWidth*pI810->cpp; pDRIInfo->ddxDrawableTableEntry = I810_MAX_DRAWABLES; @@ -263,7 +302,7 @@ /* For now the mapping works by using a fixed size defined * in the SAREA header */ - if (sizeof(XF86DRISAREARec)+sizeof(I810SAREAPriv)>SAREA_MAX) { + if (sizeof(XF86DRISAREARec)+sizeof(drm_i810_sarea_t)>SAREA_MAX) { ErrorF("Data does not fit in SAREA\n"); return FALSE; } @@ -277,15 +316,15 @@ pDRIInfo->devPrivate = pI810DRI; pDRIInfo->devPrivateSize = sizeof(I810DRIRec); pDRIInfo->contextSize = sizeof(I810DRIContextRec); - + pDRIInfo->CreateContext = I810CreateContext; pDRIInfo->DestroyContext = I810DestroyContext; pDRIInfo->SwapContext = I810DRISwapContext; pDRIInfo->InitBuffers = I810DRIInitBuffers; pDRIInfo->MoveBuffers = I810DRIMoveBuffers; pDRIInfo->bufferRequests = DRI_ALL_WINDOWS; - - + + /* This adds the framebuffer as a drm map *before* we have asked agp * to allocate it. Scary stuff, hold on... */ @@ -297,7 +336,7 @@ pI810->pDRIInfo=0; return FALSE; } - + pI810DRI->regsSize=I810_REG_SIZE; if (drmAddMap(pI810->drmSubFD, (drmHandle)pI810->MMIOAddr, pI810DRI->regsSize, DRM_REGISTERS, 0, &pI810DRI->regs)<0) { @@ -307,9 +346,14 @@ } xf86DrvMsg(pScreen->myNum, X_INFO, "[drm] Registers = 0x%08lx\n", pI810DRI->regs); - - - + + pI810->backHandle = 0; + pI810->zHandle = 0; + pI810->cursorHandle = 0; + pI810->sysmemHandle = 0; + pI810->agpAcquired = FALSE; + pI810->dcacheHandle = 0; + /* Agp Support - Need this just to get the framebuffer. */ if(drmAgpAcquire(pI810->drmSubFD) < 0) { @@ -317,72 +361,176 @@ DRICloseScreen(pScreen); return FALSE; } - - - - /* Now allocate and bind the agp space. This memory will include the - * regular framebuffer as well as back and texture memory. - * - * --> What about the dcache??? - */ - agpHandle = drmAgpAlloc(pI810->drmSubFD, pScrn->videoRam * 1024, 0, NULL); - if(agpHandle == 0) { - ErrorF("drmAgpAlloc failed\n"); - DRICloseScreen(pScreen); - return FALSE; - } - - if(drmAgpBind(pI810->drmSubFD, agpHandle, 0) != 0) { - ErrorF("drmAgpBind failed\n"); + pI810->agpAcquired = TRUE; + + if (drmAgpEnable(pI810->drmSubFD, 0) < 0) { + ErrorF("drmAgpEnable failed\n"); DRICloseScreen(pScreen); return FALSE; } - pI810->SysMem.Start = 0; - pI810->SysMem.Size = pScrn->videoRam * 1024; - pI810->SysMem.End = pScrn->videoRam * 1024; - pI810->SavedSysMem = pI810->SysMem; - - tom = pI810->SysMem.End; - xf86memset (&pI810->DcacheMem, 0, sizeof(I810MemRange)); + xf86memset (&pI810->BackBuffer, 0, sizeof(I810MemRange)); + xf86memset (&pI810->DepthBuffer, 0, sizeof(I810MemRange)); pI810->CursorPhysical = 0; - + /* Dcache - half the speed of normal ram, but has use as a Z buffer * under the DRI. */ + dcacheHandle = drmAgpAlloc(pI810->drmSubFD, 4096 * 1024, 1, NULL); + pI810->dcacheHandle = dcacheHandle; - /* Keep it 512K aligned for the sake of tiled regions. - */ - tom += 0x7ffff; - tom &= ~0x7ffff; + +#define Elements(x) sizeof(x)/sizeof(*x) + for (pitch_idx = 0 ; pitch_idx < Elements(i810_pitches) ; pitch_idx++) + if (width <= i810_pitches[pitch_idx]) + break; + + if (pitch_idx == Elements(i810_pitches)) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Couldn't find depth/back buffer pitch"); + DRICloseScreen(pScreen); + return FALSE; + } + else { + back_size = i810_pitches[pitch_idx] * pScrn->virtualY; + back_size = ((back_size + 4096 - 1) / 4096) * 4096; + } + + sysmem_size = pScrn->videoRam * 1024; + if(dcacheHandle != 0) { + if(back_size > 4*1024*1024) { + ErrorF("Backsize is larger then 4 meg\n"); + sysmem_size = sysmem_size - 2*back_size; + drmAgpFree(pI810->drmSubFD, dcacheHandle); + pI810->dcacheHandle = dcacheHandle = 0; + } else { + sysmem_size = sysmem_size - back_size; + } + } else { + sysmem_size = sysmem_size - 2*back_size; + } + + sysmem_size -= 4096; + if(sysmem_size > ((48*1024*1024) - 1) ) { + sysmem_size = (48*1024*1024) - (2*4096); + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "User requested more memory then fits in the agp aperture\n" + "Truncating to %d bytes of memory\n", + sysmem_size); + } + pI810->SysMem.Start = 0; + pI810->SysMem.Size = sysmem_size; + pI810->SysMem.End = sysmem_size; + tom = sysmem_size; - agpHandle = drmAgpAlloc(pI810->drmSubFD, 4096 * 1024, 1, NULL); - if (agpHandle != 0) { - if(drmAgpBind(pI810->drmSubFD, agpHandle, tom) == 0) { + pI810->SavedSysMem = pI810->SysMem; + + if (dcacheHandle != 0) { + /* The Z buffer is always aligned to the 48 mb mark in the aperture */ + + if(drmAgpBind(pI810->drmSubFD, dcacheHandle, 48*1024*1024) == 0) { + xf86memset (&pI810->DcacheMem, 0, sizeof(I810MemRange)); xf86DrvMsg(pScrn->scrnIndex, X_INFO, "GART: Found 4096K Z buffer memory\n"); - pI810->DcacheMem.Start = tom; + pI810->DcacheMem.Start = 48*1024*1024; pI810->DcacheMem.Size = 1024 * 4096; pI810->DcacheMem.End = pI810->DcacheMem.Start + pI810->DcacheMem.Size; - tom = pI810->DcacheMem.End; + if (!I810AllocLow(&(pI810->DepthBuffer), + &(pI810->DcacheMem), + back_size)) + { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Depth buffer allocation failed\n"); + DRICloseScreen(pScreen); + return FALSE; + } } else { xf86DrvMsg(pScrn->scrnIndex, X_INFO, "GART: dcache bind failed\n"); - } + drmAgpFree(pI810->drmSubFD, dcacheHandle); + pI810->dcacheHandle = dcacheHandle = 0; + } } else { xf86DrvMsg(pScrn->scrnIndex, X_INFO, "GART: no dcache memory found\n"); } - - - - pI810->SavedDcacheMem = pI810->DcacheMem; - /* Mouse cursor - needs the physical address for hardware. + agpHandle = drmAgpAlloc(pI810->drmSubFD, back_size, 0, NULL); + pI810->backHandle = agpHandle; + + if(agpHandle != 0) { + /* The backbuffer is always aligned to the 56 mb mark in the aperture */ + if(drmAgpBind(pI810->drmSubFD, agpHandle, 56*1024*1024) == 0) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Bound backbuffer memory\n"); + + pI810->BackBuffer.Start = 56*1024*1024; + pI810->BackBuffer.Size = back_size; + pI810->BackBuffer.End = (pI810->BackBuffer.Start + + pI810->BackBuffer.Size); + } else { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Unable to bind backbuffer\n"); + DRICloseScreen(pScreen); + return FALSE; + } + } else { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Unable to allocate backbuffer memory\n"); + DRICloseScreen(pScreen); + return FALSE; + } + + if(dcacheHandle == 0) { + /* The Z buffer is always aligned to the 48 mb mark in the aperture */ + agpHandle = drmAgpAlloc(pI810->drmSubFD, back_size, 0, + NULL); + pI810->zHandle = agpHandle; + + if(agpHandle != 0) { + if(drmAgpBind(pI810->drmSubFD, agpHandle, 48*1024*1024) == 0) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Bound depthbuffer memory\n"); + pI810->DepthBuffer.Start = 48*1024*1024; + pI810->DepthBuffer.Size = back_size; + pI810->DepthBuffer.End = (pI810->DepthBuffer.Start + + pI810->DepthBuffer.Size); + } else { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Unable to bind depthbuffer\n"); + DRICloseScreen(pScreen); + return FALSE; + } + } else { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Unable to allocate depthbuffer memory\n"); + DRICloseScreen(pScreen); + return FALSE; + } + } + + /* Now allocate and bind the agp space. This memory will include the + * regular framebuffer as well as texture memory. */ + + agpHandle = drmAgpAlloc(pI810->drmSubFD, sysmem_size, 0, NULL); + if(agpHandle == 0) { + ErrorF("drmAgpAlloc failed\n"); + DRICloseScreen(pScreen); + return FALSE; + } + pI810->sysmemHandle = agpHandle; + + if(drmAgpBind(pI810->drmSubFD, agpHandle, 0) != 0) { + ErrorF("drmAgpBind failed\n"); + DRICloseScreen(pScreen); + return FALSE; + } + agpHandle = drmAgpAlloc(pI810->drmSubFD, 4096, 2, (unsigned long *)&pI810->CursorPhysical); + pI810->cursorHandle = agpHandle; + if (agpHandle != 0) { + tom = sysmem_size; + if(drmAgpBind(pI810->drmSubFD, agpHandle, tom) == 0) { xf86DrvMsg(pScrn->scrnIndex, X_INFO, "GART: Allocated 4K for mouse cursor image\n"); @@ -397,34 +545,114 @@ pI810->CursorPhysical = 0; } + + I810SetTiledMemory(pScrn, 1, + pI810->DepthBuffer.Start, + i810_pitches[pitch_idx], + 8*1024*1024); + + I810SetTiledMemory(pScrn, 2, + pI810->BackBuffer.Start, + i810_pitches[pitch_idx], + 8*1024*1024); + + pI810->auxPitch = i810_pitches[pitch_idx]; + pI810->auxPitchBits = i810_pitch_flags[pitch_idx]; + + pI810->SavedDcacheMem = pI810->DcacheMem; + + pI810DRI->backbufferSize = pI810->BackBuffer.Size; + if (drmAddMap(pI810->drmSubFD, (drmHandle)pI810->BackBuffer.Start, + pI810->BackBuffer.Size, DRM_AGP, 0, + &pI810DRI->backbuffer) < 0) { + ErrorF("drmAddMap(backbuffer) failed\n"); + DRICloseScreen(pScreen); + return FALSE; + } + + pI810DRI->depthbufferSize = pI810->DepthBuffer.Size; + if (drmAddMap(pI810->drmSubFD, (drmHandle)pI810->DepthBuffer.Start, + pI810->DepthBuffer.Size, DRM_AGP, 0, + &pI810DRI->depthbuffer) < 0) { + ErrorF("drmAddMap(depthbuffer) failed\n"); + DRICloseScreen(pScreen); + return FALSE; + } + + /* Allocate FrontBuffer etc. */ + I810AllocateFront(pScrn); + + /* Allocate buffer memory */ + I810AllocHigh( &(pI810->BufferMem), &(pI810->SysMem), + I810_DMA_BUF_NR * I810_DMA_BUF_SZ); + + if(drmAddMap(pI810->drmSubFD, (drmHandle)pI810->BufferMem.Start, + pI810->BufferMem.Size, DRM_AGP, 0, + &pI810->buffer_map) < 0) { + ErrorF("drmAddMap(buffer_map) failed\n"); + DRICloseScreen(pScreen); + return FALSE; + } -#if 0 - if((bufs = drmAddBufs(pI810->drmSubFD, - 63, - 65536, - DRM_AGP_BUFFER)) <= 0) { - xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "[drm] failure adding %d %d byte DMA buffers\n", - 63, - 65536); + pI810DRI->agp_buffers = pI810->buffer_map; + pI810DRI->agp_buf_size = pI810->BufferMem.Size; + + if (drmAddMap(pI810->drmSubFD, (drmHandle)pI810->LpRing.mem.Start, + pI810->LpRing.mem.Size, DRM_AGP, 0, + &pI810->ring_map) < 0) { + ErrorF("drmAddMap(ring_map) failed\n"); DRICloseScreen(pScreen); return FALSE; } + + /* Use the rest of memory for textures. */ + pI810DRI->textureSize = pI810->SysMem.Size; - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "[drm] added %d %d byte DMA buffers\n", - bufs, 65536); - if (!(pI810DRI->drmBufs = drmMapBufs(pI810->drmSubFD))) { + i = mylog2(pI810DRI->textureSize / I810_NR_TEX_REGIONS); + + if (i < I810_LOG_MIN_TEX_REGION_SIZE) + i = I810_LOG_MIN_TEX_REGION_SIZE; + + pI810DRI->logTextureGranularity = i; + pI810DRI->textureSize = (pI810DRI->textureSize >> i) << i; /* truncate */ + + + if(pI810DRI->textureSize < 512*1024) { + ErrorF("Less then 512k for textures\n"); + DRICloseScreen(pScreen); + } + + I810AllocLow( &(pI810->TexMem), &(pI810->SysMem), + pI810DRI->textureSize); + + + if (drmAddMap(pI810->drmSubFD, (drmHandle)pI810->TexMem.Start, + pI810->TexMem.Size, DRM_AGP, 0, + &pI810DRI->textures) < 0) { + ErrorF("drmAddMap(textures) failed\n"); + DRICloseScreen(pScreen); + return FALSE; + } + + if((bufs = drmAddBufs(pI810->drmSubFD, + I810_DMA_BUF_NR, + I810_DMA_BUF_SZ, + DRM_AGP_BUFFER, pI810->BufferMem.Start)) <= 0) { xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "[drm] failure mapping DMA buffers\n"); + "[drm] failure adding %d %d byte DMA buffers\n", + I810_DMA_BUF_NR, + I810_DMA_BUF_SZ); DRICloseScreen(pScreen); return FALSE; } - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "[drm] buffers mapped with %p\n", - pI810DRI->drmBufs); - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "[drm] %d DMA buffers mapped\n", - pI810DRI->drmBufs->count); + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "[drm] added %d %d byte DMA buffers\n", + bufs, I810_DMA_BUF_SZ); + + I810drmInitDma(pScrn); + + /* Okay now initialize the dma engine */ if (!pI810DRI->irq) { pI810DRI->irq = drmGetInterruptFromBusID(pI810->drmSubFD, @@ -434,42 +662,92 @@ ->thisCard)->devnum, ((pciConfigPtr)pI810->PciInfo ->thisCard)->funcnum); + if((drmCtlInstHandler(pI810->drmSubFD, pI810DRI->irq)) != 0) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "[drm] failure adding irq handler, there is a device " + "already using that irq\n Consider rearranging your " + "PCI cards\n"); + DRICloseScreen(pScreen); + return FALSE; + } } xf86DrvMsg(pScrn->scrnIndex, X_INFO, "[drm] dma control initialized, using IRQ %d\n", pI810DRI->irq); -#endif + pI810DRI=(I810DRIPtr)pI810->pDRIInfo->devPrivate; + pI810DRI->deviceID=pI810->PciInfo->chipType; + pI810DRI->width=pScrn->virtualX; + pI810DRI->height=pScrn->virtualY; + pI810DRI->mem=pScrn->videoRam*1024; + pI810DRI->cpp=pI810->cpp; + + pI810DRI->fbOffset=pI810->FrontBuffer.Start; + pI810DRI->fbStride=pI810->auxPitch; + + pI810DRI->bitsPerPixel = pScrn->bitsPerPixel; + + + pI810DRI->textureOffset=pI810->TexMem.Start; + + pI810DRI->backOffset=pI810->BackBuffer.Start; + pI810DRI->depthOffset=pI810->DepthBuffer.Start; + + pI810DRI->ringOffset=pI810->LpRing.mem.Start; + pI810DRI->ringSize=pI810->LpRing.mem.Size; + + pI810DRI->auxPitch = pI810->auxPitch; + pI810DRI->auxPitchBits = pI810->auxPitchBits; if (!(I810InitVisualConfigs(pScreen))) { ErrorF("I810InitVisualConfigs failed\n"); DRICloseScreen(pScreen); return FALSE; } - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "visual configs initialized\n" ); + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "visual configs initialized\n" ); + pI810->pDRIInfo->driverSwapMethod = DRI_HIDE_X_CONTEXT; + return TRUE; } void I810DRICloseScreen(ScreenPtr pScreen) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; - I810Ptr pI810 = I810PTR(pScrn); + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + I810Ptr pI810 = I810PTR(pScrn); + + I810drmCleanupDma(pScrn); - DRICloseScreen(pScreen); + if(pI810->dcacheHandle) drmAgpFree(pI810->drmSubFD, pI810->dcacheHandle); + if(pI810->backHandle) drmAgpFree(pI810->drmSubFD, pI810->backHandle); + if(pI810->zHandle) drmAgpFree(pI810->drmSubFD, pI810->zHandle); + if(pI810->cursorHandle) drmAgpFree(pI810->drmSubFD, pI810->cursorHandle); + if(pI810->sysmemHandle) drmAgpFree(pI810->drmSubFD, pI810->sysmemHandle); - if (pI810->pDRIInfo) { - if (pI810->pDRIInfo->devPrivate) { - xfree(pI810->pDRIInfo->devPrivate); - pI810->pDRIInfo->devPrivate=0; - } - DRIDestroyInfoRec(pI810->pDRIInfo); - pI810->pDRIInfo=0; - } - if (pI810->pVisualConfigs) xfree(pI810->pVisualConfigs); - if (pI810->pVisualConfigsPriv) xfree(pI810->pVisualConfigsPriv); + if(pI810->agpAcquired == TRUE) drmAgpRelease(pI810->drmSubFD); + + pI810->backHandle = 0; + pI810->zHandle = 0; + pI810->cursorHandle = 0; + pI810->sysmemHandle = 0; + pI810->agpAcquired = FALSE; + pI810->dcacheHandle = 0; + + + DRICloseScreen(pScreen); + + if (pI810->pDRIInfo) { + if (pI810->pDRIInfo->devPrivate) { + xfree(pI810->pDRIInfo->devPrivate); + pI810->pDRIInfo->devPrivate=0; + } + DRIDestroyInfoRec(pI810->pDRIInfo); + pI810->pDRIInfo=0; + } + if (pI810->pVisualConfigs) xfree(pI810->pVisualConfigs); + if (pI810->pVisualConfigsPriv) xfree(pI810->pVisualConfigsPriv); } static Bool @@ -477,75 +755,24 @@ drmContext hwContext, void *pVisualConfigPriv, DRIContextType contextStore) { - I810DRIContextPtr ctx; - - ctx=(I810DRIContextPtr)contextStore; - return TRUE; + return TRUE; } static void I810DestroyContext(ScreenPtr pScreen, drmContext hwContext, DRIContextType contextStore) { - I810DRIContextPtr ctx; - ctx=(I810DRIContextPtr)contextStore; } -static unsigned int mylog2(unsigned int n) -{ - unsigned int log2 = 0; - while (n>1) n >>= 1, log2++; - return log2; -} Bool I810DRIFinishScreenInit(ScreenPtr pScreen) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; - I810Ptr pI810 = I810PTR(pScrn); - I810DRIPtr pI810DRI = (I810DRIPtr) pI810->pDRIInfo->devPrivate; - I810SAREAPriv *sPriv = (I810SAREAPriv *)DRIGetSAREAPrivate(pScreen); - int i; - - pI810->pDRIInfo->driverSwapMethod = DRI_HIDE_X_CONTEXT; - - pI810DRI->deviceID=pI810->PciInfo->chipType; - pI810DRI->width=pScrn->virtualX; - pI810DRI->height=pScrn->virtualY; - pI810DRI->mem=pScrn->videoRam*1024; - pI810DRI->cpp=pI810->cpp; - pI810DRI->fbOffset=pI810->FrontBuffer.Start; - pI810DRI->fbStride=pI810->auxPitch; - pI810DRI->bitsPerPixel = pScrn->bitsPerPixel; - pI810DRI->textureOffset=pI810->TexMem.Start; - pI810DRI->textureSize=pI810->TexMem.Size; - pI810DRI->backOffset=pI810->BackBuffer.Start; - pI810DRI->depthOffset=pI810->DepthBuffer.Start; - pI810DRI->ringOffset=pI810->LpRing.mem.Start; - pI810DRI->ringSize=pI810->LpRing.mem.Size; - pI810DRI->auxPitch = pI810->auxPitch; - pI810DRI->auxPitchBits = pI810->auxPitchBits; - - -#define I810_LOG_MIN_TEX_REGION_SIZE 18 - - i = mylog2(pI810DRI->textureSize / I810_NR_TEX_REGIONS); - - if (i < I810_LOG_MIN_TEX_REGION_SIZE) - i = I810_LOG_MIN_TEX_REGION_SIZE; - - pI810DRI->logTextureGranularity = i; - pI810DRI->textureSize = (pI810DRI->textureSize >> i) << i; /* truncate */ - - ErrorF( "texture granularity: 0x%x size: 0x%x\n", - (1<<i), pI810DRI->textureSize ); - + drm_i810_sarea_t *sPriv = (drm_i810_sarea_t *)DRIGetSAREAPrivate(pScreen); xf86memset( sPriv, 0, sizeof(sPriv) ); - return DRIFinishScreenInit(pScreen); } - void I810DRISwapContext(ScreenPtr pScreen, DRISyncType syncType, DRIContextType oldContextType, void *oldContext, @@ -735,8 +962,8 @@ int w = pbox->x2 - x1 + 1; int h = pbox->y2 - y1 + 1; - if ( destx < 0 ) w += destx, destx = 0; - if ( desty < 0 ) h += desty, desty = 0; + if ( destx < 0 ) x1 -= destx, w += destx, destx = 0; + if ( desty < 0 ) y1 -= desty, h += desty, desty = 0; if ( destx + w > screenwidth ) w = screenwidth - destx; if ( desty + h > screenheight ) h = screenheight - desty; if ( w <= 0 ) continue; Index: xc/programs/Xserver/hw/xfree86/drivers/i810/i810_dri.h diff -u xc/programs/Xserver/hw/xfree86/drivers/i810/i810_dri.h:1.1 xc/programs/Xserver/hw/xfree86/drivers/i810/i810_dri.h:1.2 --- xc/programs/Xserver/hw/xfree86/drivers/i810/i810_dri.h:1.1 Wed Mar 8 16:31:09 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/i810/i810_dri.h Wed Mar 8 16:31:09 2000 @@ -1,10 +1,10 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i810/i810_dri.h,v 1.1 2000/02/11 17:25:52 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i810/i810_dri.h,v 1.2 2000/03/02 16:07:49 martin Exp $ */ #ifndef _I810_DRI_ #define _I810_DRI_ #include <xf86drm.h> -#include "i810_sarea.h" +#include "i810_drm_public.h" #define I810_MAX_DRAWABLES 256 @@ -12,6 +12,19 @@ drmHandle regs; drmSize regsSize; drmAddress regsMap; + + drmSize backbufferSize; + drmHandle backbuffer; + + drmSize depthbufferSize; + drmHandle depthbuffer; + + drmHandle textures; + int textureSize; + + drmHandle agp_buffers; + drmSize agp_buf_size; + int deviceID; int width; int height; @@ -29,7 +42,6 @@ int logTextureGranularity; int textureOffset; - int textureSize; /* For non-dma direct rendering. */ @@ -40,8 +52,6 @@ int irq; } I810DRIRec, *I810DRIPtr; - - typedef struct { /* Nothing here yet */ Index: xc/programs/Xserver/hw/xfree86/drivers/i810/i810_dripriv.h diff -u /dev/null xc/programs/Xserver/hw/xfree86/drivers/i810/i810_dripriv.h:1.1 --- /dev/null Wed Mar 8 16:31:09 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/i810/i810_dripriv.h Wed Mar 8 16:31:09 2000 @@ -0,0 +1,24 @@ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i810/i810_dripriv.h,v 1.1 2000/03/02 16:07:50 martin Exp $ */ + +#ifndef _I810_DRIPRIV_H_ +#define _I810_DRIPRIV_H_ + +#define I810_MAX_DRAWABLES 256 + +extern void GlxSetVisualConfigs( + int nconfigs, + __GLXvisualConfig *configs, + void **configprivs +); + +typedef struct { + /* Nothing here yet */ + int dummy; +} I810ConfigPrivRec, *I810ConfigPrivPtr; + +typedef struct { + /* Nothing here yet */ + int dummy; +} I810DRIContextRec, *I810DRIContextPtr; + +#endif Index: xc/programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c diff -u xc/programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c:1.3 xc/programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c:1.7 --- xc/programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c:1.3 Wed Mar 8 16:31:09 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c Wed Mar 8 16:31:09 2000 @@ -25,13 +25,12 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c,v 1.3 2000/02/21 19:23:03 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c,v 1.7 2000/03/02 16:07:50 martin Exp $ */ /* * Authors: * Keith Whitwell <keithw@precisioninsight.com> * - * $PI$ */ /* @@ -83,7 +82,7 @@ static Bool I810EnterVT(int scrnIndex, int flags); static void I810LeaveVT(int scrnIndex, int flags); static Bool I810CloseScreen(int scrnIndex, ScreenPtr pScreen); -static Bool I810SaveScreen(ScreenPtr pScreen, int mode); +static Bool I810SaveScreen(ScreenPtr pScreen, Bool unblank); static Bool I810SwitchMode(int scrnIndex, DisplayModePtr mode, int flags); static void I810AdjustFrame(int scrnIndex, int x, int y, int flags); static void I810FreeScreen(int scrnIndex, int flags); @@ -255,25 +254,6 @@ #endif -#ifdef XF86DRI -static int i810_pitches[] = { - 512, - 1024, - 2048, - 4096, - 0 -}; - -static int i810_pitch_flags[] = { - 0x0, - 0x1, - 0x2, - 0x3, - 0 -}; -#endif - - #ifndef I810_DEBUG int I810_DEBUG = (0 /* | DEBUG_ALWAYS_SYNC */ @@ -287,7 +267,15 @@ ); #endif - +#ifdef XF86DRI +static int i810_pitches[] = { + 512, + 1024, + 2048, + 4096, + 0 +}; +#endif #ifdef XFree86LOADER @@ -312,12 +300,12 @@ static pointer i810Setup(pointer module, pointer opts, int *errmaj, int *errmin) { - static Bool setupDone = FALSE; + static Bool setupDone = 0; /* This module should be loaded only once, but check to be sure. */ if (!setupDone) { - setupDone = TRUE; + setupDone = 1; xf86AddDriver(&I810, module, 0); /* @@ -399,7 +387,7 @@ I810Probe(DriverPtr drv, int flags) { int i, numUsed, numDevSections, *usedChips; GDevPtr *devSections; - Bool foundScreen = FALSE; + Bool foundScreen = 0; EntityInfoPtr pEnt; /* @@ -549,12 +537,6 @@ hwp = VGAHWPTR(pScrn); pI810->cpp = pScrn->bitsPerPixel/8; - ErrorF( "Depth %d BitsPerPixel %d cpp %d\n", - pScrn->depth, - pScrn->bitsPerPixel, - pI810->cpp); - - /* Process the options */ xf86CollectOptions(pScrn, NULL); xf86ProcessOptions(pScrn->scrnIndex, pScrn->options, I810Options); @@ -661,7 +643,9 @@ xf86DrvMsg(pScrn->scrnIndex, from, "Will alloc AGP framebuffer: %d kByte\n", pScrn->videoRam); - pI810->FbMapSize = pScrn->videoRam*1024 + (4096*1024) + (4096); + /* Since we always want write combining on first 32 mb of framebuffer + * we pass a mapsize of 32 mb */ + pI810->FbMapSize = 32*1024*1024; /* * If the driver can do gamma correction, it should call xf86SetGamma() @@ -806,7 +790,7 @@ return TRUE; } -static Bool +static Bool I810MapMMIO(ScrnInfoPtr pScrn) { int mmioFlags; @@ -919,6 +903,7 @@ { I810Ptr pI810; vgaHWPtr hwp; + int i; pI810 = I810PTR(pScrn); hwp = VGAHWPTR(pScrn); @@ -958,11 +943,8 @@ i810Reg->DisplayControl = INREG8(DISPLAY_CNTL); i810Reg->LMI_FIFO_Watermark = INREG(FWATER_BLC); - i810Reg->IntrHwStatMask = INREG16(HWSTAM); - i810Reg->IntrEnabled = INREG16(IER); - i810Reg->IntrIdentity = INREG16(IIR); - i810Reg->IntrMask = INREG16(IMR); - i810Reg->ErrorMask = INREG16(EMR); + for (i = 0 ; i < 8 ; i++) + i810Reg->Fence[i] = INREG(FENCE+i*4); i810Reg->LprbTail = INREG(LP_RING + RING_TAIL); i810Reg->LprbHead = INREG(LP_RING + RING_HEAD); @@ -1048,11 +1030,6 @@ ErrorF(" LprbHead: %x\n", mode->LprbHead); ErrorF(" LprbStart: %x\n", mode->LprbStart); ErrorF(" LprbLen: %x\n", mode->LprbLen); - ErrorF(" IntrHwStatMask: %x\n", mode->IntrHwStatMask); - ErrorF(" IntrEnabled: %x\n", mode->IntrEnabled); - ErrorF(" IntrIdentity: %x\n", mode->IntrIdentity); - ErrorF(" IntrMask: %x\n", mode->IntrMask); - ErrorF(" ErrorMask: %x\n", mode->ErrorMask); } @@ -1064,8 +1041,8 @@ I810Ptr pI810; vgaHWPtr hwp; unsigned char temp; - unsigned short stemp; unsigned int itemp; + int i; pI810 = I810PTR(pScrn); hwp = VGAHWPTR(pScrn); @@ -1176,30 +1153,9 @@ temp &= ~DISPLAY_COLOR_MODE; temp |= i810Reg->PixelPipeCfg1; OUTREG8( PIXPIPE_CONFIG_1, temp ); - - stemp = INREG16(HWSTAM); - stemp &= INTR_RESERVED; - stemp |= i810Reg->IntrHwStatMask; - OUTREG16(HWSTAM, stemp); - - stemp = INREG16(IER); - stemp &= INTR_RESERVED; - stemp |= i810Reg->IntrEnabled; - OUTREG16(IER, stemp); - - stemp = INREG16(IMR); - stemp &= INTR_RESERVED; - stemp |= i810Reg->IntrMask; - OUTREG16(IMR, stemp); - + OUTREG16(EIR, 0); - stemp = INREG16(EMR); - stemp &= ERROR_RESERVED; - stemp |= i810Reg->ErrorMask; - OUTREG16(EMR, stemp); - - itemp = INREG(FWATER_BLC); itemp &= ~(LM_BURST_LENGTH | LM_FIFO_WATERMARK | MM_BURST_LENGTH | MM_FIFO_WATERMARK ); @@ -1207,6 +1163,12 @@ OUTREG(FWATER_BLC, itemp); + for (i = 0 ; i < 8 ; i++) { + OUTREG( FENCE+i*4, i810Reg->Fence[i] ); + if (I810_DEBUG & DEBUG_VERBOSE_VGA) + ErrorF("Fence Register : %x\n", i810Reg->Fence[i]); + } + /* First disable the ring buffer (Need to wait for empty first?, if so * should probably do it before entering this section) */ @@ -1345,7 +1307,6 @@ m_best, n_best, p_best); } - static Bool I810SetMode(ScrnInfoPtr pScrn, DisplayModePtr mode) { @@ -1354,9 +1315,6 @@ vgaRegPtr pVga = &VGAHWPTR(pScrn)->ModeReg; double dclk = mode->Clock/1000.0; - ErrorF("I810SetMode, depth %d displayWidth %d\n", - pScrn->depth, pScrn->displayWidth); - switch (pScrn->depth) { case 8: pVga->CRTC[0x13] = pScrn->displayWidth >> 3; @@ -1446,13 +1404,6 @@ /* Calculate the FIFO Watermark and Burst Length. */ i810Reg->LMI_FIFO_Watermark = I810CalcWatermark(pScrn, dclk, FALSE); - - i810Reg->IntrHwStatMask = ~INTR_RESERVED; - i810Reg->IntrEnabled = 0x0000; - i810Reg->IntrIdentity = 0x0000; - i810Reg->IntrMask = ~INTR_RESERVED; /* unmask all interrupts */ - - i810Reg->ErrorMask = 0; /* Setup the ring buffer */ i810Reg->LprbTail = 0; @@ -1500,7 +1451,7 @@ #ifdef XF86DRI if (pI810->directRenderingEnabled) { - DRILock(screenInfo.screens[pScrn->scrnIndex]); + DRILock(screenInfo.screens[pScrn->scrnIndex], 0); pI810->LockHeld = 1; } #endif @@ -1570,8 +1521,59 @@ } } +Bool +I810AllocateFront(ScrnInfoPtr pScrn) { + I810Ptr pI810 = I810PTR(pScrn); + if(pI810->DoneFrontAlloc) + return TRUE; + + xf86memset(&(pI810->FbMemBox), 0, sizeof(BoxRec)); + /* Alloc FrontBuffer/Ring/Accel memory */ + pI810->FbMemBox.x1=0; + pI810->FbMemBox.x2=pScrn->displayWidth; + pI810->FbMemBox.y1=0; + pI810->FbMemBox.y2=pScrn->virtualY; + + /* Make sure there is room for pixcache either beside or below + * the screen. + */ + if (pScrn->displayWidth < pScrn->virtualX + 64) + pI810->FbMemBox.y2 += 64; + + /* Reserve room for the framebuffer and pixcache. Put at the top + * of memory so we can have nice alignment for the tiled regions at + * the start of memory. + */ + I810AllocLow( &(pI810->FrontBuffer), + &(pI810->SysMem), + ((pI810->FbMemBox.x2 * + pI810->FbMemBox.y2 * + pI810->cpp) + 4095) & ~4095); + + xf86memset( &(pI810->LpRing), 0, sizeof( I810RingBuffer ) ); + if(I810AllocLow( &(pI810->LpRing.mem), &(pI810->SysMem), 16*4096 )) { + if (I810_DEBUG & DEBUG_VERBOSE_MEMORY) + ErrorF( "ring buffer at local %lx\n", + pI810->LpRing.mem.Start); + + pI810->LpRing.tail_mask = pI810->LpRing.mem.Size - 1; + pI810->LpRing.virtual_start = pI810->FbBase + pI810->LpRing.mem.Start; + pI810->LpRing.head = 0; + pI810->LpRing.tail = 0; + pI810->LpRing.space = 0; + } + + if ( I810AllocLow( &pI810->Scratch, &(pI810->SysMem), 64*1024 ) || + I810AllocLow( &pI810->Scratch, &(pI810->SysMem), 16*1024 ) ) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Allocated Scratch Memory\n"); + } + + pI810->DoneFrontAlloc = TRUE; + return TRUE; +} static Bool I810ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) { @@ -1579,7 +1581,6 @@ vgaHWPtr hwp; I810Ptr pI810; VisualPtr visual; - BoxRec MemBox; pScrn = xf86Screens[pScreen->myNum]; pI810 = I810PTR(pScrn); @@ -1592,29 +1593,41 @@ if (!miSetVisualTypes(pScrn->depth, miGetDefaultVisualMask(pScrn->depth), pScrn->rgbBits, pScrn->defaultVisual)) return FALSE; + + { + I810RegPtr i810Reg = &pI810->ModeReg; + int i; + + for (i = 0 ; i < 8 ; i++) + i810Reg->Fence[i] = 0; + } /* Have to init the DRM earlier than in other drivers to get agp * memory. Wonder if this is going to be a problem... */ - #ifdef XF86DRI /* * Setup DRI after visuals have been established, but before cfbScreenInit * is called. cfbScreenInit will eventually call into the drivers * InitGLXVisuals call back. */ - pI810->directRenderingEnabled = I810DRIScreenInit(pScreen); -#else - if (!I810AllocateGARTMemory( pScrn )) { - return FALSE; + + if (!xf86ReturnOptValBool(I810Options, OPTION_NOACCEL, FALSE)) { + pI810->directRenderingEnabled = I810DRIScreenInit(pScreen); + } else { + pI810->directRenderingEnabled = FALSE; } + +#else + if (!I810AllocateGARTMemory( pScrn )) + return FALSE; + I810AllocateFront(pScrn); #endif - + if (!I810MapMem(pScrn)) return FALSE; - pScrn->memPhysBase = (int)pI810->FbBase; pScrn->fbOffset = 0; @@ -1625,10 +1638,9 @@ I810Save(pScrn); if (!I810ModeInit(pScrn, pScrn->currentMode)) return FALSE; - I810SaveScreen(pScreen, SCREEN_SAVER_ON); + I810SaveScreen(pScreen, FALSE); I810AdjustFrame(scrnIndex, pScrn->frameX0, pScrn->frameY0, 0); - switch (pScrn->bitsPerPixel) { case 8: if (!cfbScreenInit(pScreen, pI810->FbBase + pScrn->fbOffset, @@ -1711,76 +1723,34 @@ XF86VideoAdaptorPtr *ptr; int n; - n = xf86XVListGenericAdaptors(&ptr); + n = xf86XVListGenericAdaptors(pScrn, &ptr); if (n) { xf86XVScreenInit(pScreen, ptr, n); } } #endif - - - MemBox.x1=0; - MemBox.x2=pScrn->displayWidth; - MemBox.y1=0; - MemBox.y2=pScrn->virtualY; - - /* Make sure there is room for pixcache either beside or below - * the screen. - */ - if (pScrn->displayWidth < pScrn->virtualX + 64) - MemBox.y2 += 64; - - - /* Reserve room for the framebuffer and pixcache. Put at the start - * of memory because it's difficult to put it anywhere else. - */ - I810AllocLow( &(pI810->FrontBuffer), - &(pI810->SysMem), - ((MemBox.x2 * MemBox.y2 * pI810->cpp) + 4095) & ~4095); - - - ErrorF("Framebuffer 0x%x, size 0x%x\n", - pI810->FrontBuffer.Start, - pI810->FrontBuffer.Size); +#ifdef XF86DRI + if (!pI810->directRenderingEnabled) { + pI810->DoneFrontAlloc = FALSE; + if (!I810AllocateGARTMemory( pScrn )) + return FALSE; + I810AllocateFront(pScrn); + } +#endif - ErrorF("DisplayWidth %d, virtualX %d\n", - pScrn->displayWidth, - pScrn->virtualX); - - - if (!xf86InitFBManager(pScreen, &MemBox)) { + if (!xf86InitFBManager(pScreen, &(pI810->FbMemBox))) { xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Failed to init memory manager\n"); return FALSE; } - - - xf86memset( &(pI810->LpRing), 0, sizeof( I810RingBuffer ) ); - if (!xf86ReturnOptValBool(I810Options, OPTION_NOACCEL, FALSE)) { - if ( -#ifdef XF86DRI - I810AllocLow( &(pI810->LpRing.mem), &(pI810->SysMem), 64*4096 ) || -#endif - I810AllocLow( &(pI810->LpRing.mem), &(pI810->SysMem), 4096 ) - ) { - - if (I810_DEBUG & DEBUG_VERBOSE_MEMORY) - ErrorF( "ring buffer at local %lx\n", - pI810->LpRing.mem.Start); - - pI810->LpRing.tail_mask = pI810->LpRing.mem.Size - 1; - pI810->LpRing.virtual_start = pI810->FbBase + pI810->LpRing.mem.Start; - pI810->LpRing.head = 0; - pI810->LpRing.tail = 0; - pI810->LpRing.space = 0; - + if (pI810->LpRing.mem.Size != 0) { I810SetRingRegs( pScrn ); - + if (!I810AccelInit(pScreen)) { xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "Hardware acceleration initialization failed\n"); + "Hardware acceleration initialization failed\n"); } } } @@ -1792,70 +1762,11 @@ } } - -#ifdef XF86DRI -#define Elements(x) sizeof(x)/sizeof(*x) +#if XF86DRI if (pI810->LpRing.mem.Start == 0) { pI810->directRenderingEnabled = 0; I810DRICloseScreen(pScreen); } - - if (pI810->directRenderingEnabled) { - int width = MemBox.x2 * pI810->cpp; - int i; - - for (i = 0 ; i < Elements(i810_pitches) ; i++) - if (width <= i810_pitches[i]) - break; - - if (i == Elements(i810_pitches)) { - xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "Couldn't find depth/back buffer pitch"); - pI810->directRenderingEnabled = 0; - I810DRICloseScreen(pScreen); - } - else { - int sz = i810_pitches[i] * pScrn->virtualY; - - /* Round to 512K for tiling - potentially wasteful. - */ - sz += 0x7ffff; - sz &= ~0x7ffff; - - if (I810AllocHigh(&(pI810->BackBuffer), &(pI810->SysMem), sz) && - (I810AllocLow(&(pI810->DepthBuffer), &(pI810->DcacheMem), sz) || - I810AllocHigh(&(pI810->DepthBuffer), &(pI810->SysMem), sz))) - { - /* Set up tiled regions for depth and back buffers. - */ - if (1) { - I810SetTiledMemory( pScrn, 1, - pI810->DepthBuffer.Start, - i810_pitches[i], - sz ); - - I810SetTiledMemory( pScrn, 2, - pI810->BackBuffer.Start, - i810_pitches[i], - sz ); - } - - /* Use the rest of memory for textures. - */ - I810AllocLow( &(pI810->TexMem), &(pI810->SysMem), - pI810->SysMem.Size); - pI810->auxPitch = i810_pitches[i]; - pI810->auxPitchBits = i810_pitch_flags[i]; - } - else - { - xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "Insufficient memory for back and/or depth buffers\n"); - pI810->directRenderingEnabled = 0; - I810DRICloseScreen(pScreen); - } - } - } if (pI810->directRenderingEnabled) { /* Now that mi, cfb, drm and others have done their thing, @@ -1863,17 +1774,20 @@ */ pI810->directRenderingEnabled = I810DRIFinishScreenInit(pScreen); } - +#endif + if (pI810->directRenderingEnabled) { xf86DrvMsg(pScrn->scrnIndex, X_INFO, "direct rendering: Enabled\n"); } else { - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "direct rendering: Disabled\n"); - if (!I810AllocateGARTMemory( pScrn )) - return FALSE; + if(pI810->agpAcquired2d == TRUE) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "direct rendering: Disabled\n"); + } + else { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "direct rendering: Failed\n"); + return FALSE; + } } -#endif - pScreen->SaveScreen = I810SaveScreen; pI810->CloseScreen = pScreen->CloseScreen; pScreen->CloseScreen = I810CloseScreen; @@ -1938,20 +1852,18 @@ static Bool I810EnterVT(int scrnIndex, int flags) { ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; + I810Ptr pI810 = I810PTR(pScrn); if (I810_DEBUG & DEBUG_VERBOSE_DRI) ErrorF("\n\n\ENTER VT\n"); #ifdef XF86DRI - { - I810Ptr pI810 = I810PTR(pScrn); - if (pI810->directRenderingEnabled) { - if (I810_DEBUG & DEBUG_VERBOSE_DRI) - ErrorF("calling dri unlock\n"); - DRIUnlock( screenInfo.screens[scrnIndex] ); - pI810->LockHeld = 0; - } + if (pI810->directRenderingEnabled) { + if (I810_DEBUG & DEBUG_VERBOSE_DRI) + ErrorF("calling dri unlock\n"); + DRIUnlock( screenInfo.screens[scrnIndex] ); + pI810->LockHeld = 0; } #endif @@ -1976,10 +1888,11 @@ if (pI810->directRenderingEnabled) { if (I810_DEBUG & DEBUG_VERBOSE_DRI) ErrorF("calling dri lock\n"); - DRILock( screenInfo.screens[scrnIndex] ); + DRILock( screenInfo.screens[scrnIndex], 0 ); pI810->LockHeld = 1; } #endif + I810RefreshRing( pScrn ); I810Sync( pScrn ); I810Restore(pScrn); @@ -1995,13 +1908,7 @@ XAAInfoRecPtr infoPtr = pI810->AccelInfoRec; -#ifndef XF86DRI - /* Need to free this here as we are now allocating it in - * I810ScreenInit() -- the question is will we always be able to - * get it back... - */ - I810FreeGARTMemory( pScrn ); -#else +#ifdef XF86DRI if (pI810->directRenderingEnabled) { I810DRICloseScreen(pScreen); pI810->directRenderingEnabled=FALSE; @@ -2043,8 +1950,7 @@ static void I810FreeScreen(int scrnIndex, int flags) { I810FreeRec(xf86Screens[scrnIndex]); - if (xf86LoaderCheckSymbol("vgaHWFreeHWRec")) - vgaHWFreeHWRec(xf86Screens[scrnIndex]); + vgaHWFreeHWRec(xf86Screens[scrnIndex]); } static int @@ -2061,9 +1967,9 @@ } static Bool -I810SaveScreen(ScreenPtr pScreen, Bool mode) +I810SaveScreen(ScreenPtr pScreen, Bool unblack) { - return vgaHWSaveScreen(pScreen, mode); + return vgaHWSaveScreen(pScreen, unblack); } #ifdef DPMSExtension Index: xc/programs/Xserver/hw/xfree86/drivers/i810/i810_drm.c diff -u /dev/null xc/programs/Xserver/hw/xfree86/drivers/i810/i810_drm.c:1.1 --- /dev/null Wed Mar 8 16:31:09 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/i810/i810_drm.c Wed Mar 8 16:31:09 2000 @@ -0,0 +1,59 @@ +#include "xf86.h" +#include "xf86_OSproc.h" +#include "xf86Resources.h" +#include "xf86_ansic.h" +#include "compiler.h" +#include "xf86PciInfo.h" +#include "xf86Pci.h" +#include "xf86Priv.h" +#include "i810.h" + +#ifndef XFree86LOADER +#include <sys/stat.h> +#include <sys/mman.h> +#endif + +#include "xf86drm.h" +#include "drm.h" +#include "i810_drm_public.h" + +Bool I810drmCleanupDma(ScrnInfoPtr pScrn) +{ + I810Ptr pI810 = I810PTR(pScrn); + drm_i810_init_t init; + + memset(&init, 0, sizeof(drm_i810_init_t)); + init.func = I810_CLEANUP_DMA; + + if(ioctl(pI810->drmSubFD, DRM_IOCTL_I810_INIT, &init)) { + ErrorF("I810 Dma Cleanup Failed\n"); + return FALSE; + } + + return TRUE; +} + +Bool I810drmInitDma(ScrnInfoPtr pScrn) +{ + I810Ptr pI810 = I810PTR(pScrn); + I810RingBuffer *ring = &(pI810->LpRing); + + drm_i810_init_t init; + + memset(&init, 0, sizeof(drm_i810_init_t)); + init.func = I810_INIT_DMA; + init.ring_map_idx = 6; + init.buffer_map_idx = 5; + init.ring_start = ring->mem.Start; + init.ring_end = ring->mem.End; + init.ring_size = ring->mem.Size; + init.sarea_priv_offset = sizeof(XF86DRISAREARec); + ErrorF("I810 Dma Initialization start\n"); + + if(ioctl(pI810->drmSubFD, DRM_IOCTL_I810_INIT, &init)) { + ErrorF("I810 Dma Initialization Failed\n"); + return FALSE; + } + ErrorF("I810 Dma Initialization done\n"); + return TRUE; +} Index: xc/programs/Xserver/hw/xfree86/drivers/i810/i810_io.c diff -u xc/programs/Xserver/hw/xfree86/drivers/i810/i810_io.c:1.1 xc/programs/Xserver/hw/xfree86/drivers/i810/i810_io.c:1.2 --- xc/programs/Xserver/hw/xfree86/drivers/i810/i810_io.c:1.1 Wed Mar 8 16:31:09 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/i810/i810_io.c Wed Mar 8 16:31:09 2000 @@ -24,13 +24,12 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i810/i810_io.c,v 1.1 2000/02/11 17:25:52 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i810/i810_io.c,v 1.2 2000/02/23 04:47:16 martin Exp $ */ /* * Authors: * Daryll Strauss <daryll@precisioninsight.com> * - * $PI$ */ #include "xf86.h" Index: xc/programs/Xserver/hw/xfree86/drivers/i810/i810_memory.c diff -u xc/programs/Xserver/hw/xfree86/drivers/i810/i810_memory.c:1.1 xc/programs/Xserver/hw/xfree86/drivers/i810/i810_memory.c:1.3 --- xc/programs/Xserver/hw/xfree86/drivers/i810/i810_memory.c:1.1 Wed Mar 8 16:31:09 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/i810/i810_memory.c Wed Mar 8 16:31:09 2000 @@ -1,3 +1,4 @@ + /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -29,7 +30,6 @@ * Authors: * Keith Whitwell <keithw@precisioninsight.com> * - * $PI$ */ @@ -41,6 +41,8 @@ #include "xf86Priv.h" #include "xf86_OSlib.h" +/* #include "xf86_ansic.h" */ + #include "i810.h" #include "i810_reg.h" @@ -87,26 +89,40 @@ int pages = pScrn->videoRam / 4; I810Ptr pI810 = I810PTR(pScrn); long tom = 0; + int gartfd = -1; - pI810->gartfd = xf86open("/dev/agpgart", O_RDWR, 0); + gartfd = xf86open("/dev/agpgart", O_RDWR, 0); - if (pI810->gartfd == -1) { + if (gartfd == -1) { xf86DrvMsg(pScrn->scrnIndex, X_INFO, "unable to open /dev/agpgart\n"); return FALSE; } - if (xf86ioctl(pI810->gartfd, AGPIOC_ACQUIRE, 0) != 0) { + if (xf86ioctl(gartfd, AGPIOC_ACQUIRE, 0) != 0) { + if(pI810->agpAcquired2d == TRUE) { + xf86close(gartfd); + return TRUE; + } xf86DrvMsg(pScrn->scrnIndex, X_INFO, "AGPIOC_ACQUIRE failed\n"); return FALSE; } + /* This allows the 2d only Xserver to regen */ + pI810->agpAcquired2d = TRUE; + pI810->gartfd = gartfd; + if (xf86ioctl(pI810->gartfd, AGPIOC_INFO, &agpinf) != 0) { xf86DrvMsg(pScrn->scrnIndex, X_INFO, "error doing xf86ioctl(AGPIOC_INFO)\n"); return FALSE; } - - + + if (agpinf.version.major != 0 || + agpinf.version.minor != 99) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Agp kernel driver version not correct\n"); + return FALSE; + } /* Treat the gart like video memory - we assume we own all that is @@ -234,19 +250,21 @@ unsigned size) { I810Ptr pI810 = I810PTR(pScrn); + I810RegPtr i810Reg = &pI810->ModeReg; CARD32 val; - if (nr > 7) { + if (nr < 0 || nr > 7) { ErrorF("I810SetTiledMemory - fence %d out of range\n", nr); return; } + i810Reg->Fence[nr] = 0; + if (start & ~FENCE_START_MASK) { ErrorF("I810SetTiledMemory %d: start (%x) is not 512k aligned\n", nr, start); return; } - if (start % size) { ErrorF("I810SetTiledMemory %d: start (%x) is not size (%x) aligned\n", nr, start, size); @@ -286,5 +304,5 @@ return; } - OUTREG( FENCE+nr*4, val ); + i810Reg->Fence[nr] = val; } Index: xc/programs/Xserver/hw/xfree86/drivers/i810/i810_reg.h diff -u xc/programs/Xserver/hw/xfree86/drivers/i810/i810_reg.h:1.1 xc/programs/Xserver/hw/xfree86/drivers/i810/i810_reg.h:1.2 --- xc/programs/Xserver/hw/xfree86/drivers/i810/i810_reg.h:1.1 Wed Mar 8 16:31:09 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/i810/i810_reg.h Wed Mar 8 16:31:09 2000 @@ -34,7 +34,6 @@ * Kevin E. Martin <kevin@precisioninsight.com> * * - * $PI$ */ /* I/O register offsets Index: xc/programs/Xserver/hw/xfree86/drivers/i810/i810_sarea.h diff -u xc/programs/Xserver/hw/xfree86/drivers/i810/i810_sarea.h:1.1 xc/programs/Xserver/hw/xfree86/drivers/i810/i810_sarea.h:1.2 --- xc/programs/Xserver/hw/xfree86/drivers/i810/i810_sarea.h:1.1 Wed Mar 8 16:31:09 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/i810/i810_sarea.h Wed Mar 8 16:31:09 2000 @@ -1,44 +1,6 @@ #ifndef I810_SAPRIV_H #define I810_SAPRIV_H -/* Each region is a minimum of 32k, and there are at most 128 of them. - */ -#define I810_NR_TEX_REGIONS 128 - - - -typedef struct { - unsigned char next, prev; /* array indices to form a circular LRU list */ - unsigned char in_use; /* owned by a client, or free? */ - int age; /* tracked by clients to update local LRU's */ -} i810TexRegion; - -typedef struct { - int ringOwner; /* not used */ - int ctxOwner; /* last context to upload state */ - - /* Maintain an LRU of contiguous regions of texture space. If - * you think you own a region of texture memory, and it has an age - * different to the one you set, then you are mistaken and it has - * been stolen by another client. If texAge hasn't changed, there - * is no need to walk the list. - * - * These regions can be used as a proxy for the fine-grained texture - * information of other clients - by maintaining them in the same - * lru which is used to age their own textures, clients have an - * approximate lru for the whole of global texture space, and can - * make informed decisions as to which areas to kick out. There is - * no need to choose whether to kick out your own texture or someone - * else's - simply eject them all in LRU order. - */ - i810TexRegion texList[I810_NR_TEX_REGIONS+1]; /* Last element is sentinal */ - int texAge; /* Current age counter */ - - - int lastWrap; - int lastSync; - int ringAge; - -} I810SAREAPriv; +#include "i810_drm_public.h" #endif Index: xc/programs/Xserver/hw/xfree86/drivers/mga/Imakefile diff -u xc/programs/Xserver/hw/xfree86/drivers/mga/Imakefile:1.31 xc/programs/Xserver/hw/xfree86/drivers/mga/Imakefile:1.32 --- xc/programs/Xserver/hw/xfree86/drivers/mga/Imakefile:1.31 Wed Mar 8 16:31:10 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/mga/Imakefile Wed Mar 8 16:31:10 2000 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/mga/Imakefile,v 1.31 2000/02/14 06:27:23 martin Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/mga/Imakefile,v 1.32 2000/02/28 19:53:12 alanh Exp $ XCOMM XCOMM This is an Imakefile for the MGA driver. XCOMM @@ -34,7 +34,7 @@ -I$(SERVERSRC)/Xext -I$(XF86SRC)/xf8_32bpp\ -I$(FONTINCSRC) -I$(SERVERSRC)/include -I$(XINCLUDESRC) \ -I$(XF86SRC)/xf24_32bpp -I$(XF86SRC)/shadowfb -I$(EXTINCSRC) \ - $(DRIINCLUDES) + -I$(XF86OSSRC)/vbe $(DRIINCLUDES) #endif DEFINES = $(DRIDEFINES) Index: xc/programs/Xserver/hw/xfree86/drivers/mga/mga.cpp diff -u xc/programs/Xserver/hw/xfree86/drivers/mga/mga.cpp:1.10 xc/programs/Xserver/hw/xfree86/drivers/mga/mga.cpp:1.13 --- xc/programs/Xserver/hw/xfree86/drivers/mga/mga.cpp:1.10 Fri Nov 19 08:54:40 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/mga/mga.cpp Wed Mar 8 16:31:10 2000 @@ -1,5 +1,5 @@ -.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/mga/mga.cpp,v 1.10 1999/11/19 13:54:40 hohndel Exp $ -.TH MGA __drivermansuffix__ "Version 3.9.16" "XFree86" +.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/mga/mga.cpp,v 1.13 2000/03/07 01:37:49 dawes Exp $ +.TH MGA __drivermansuffix__ "Version 4.0" "XFree86" .SH NAME mga \- Matrox video driver .SH SYNOPSIS @@ -16,7 +16,7 @@ .B mga is an XFree86 driver for Matrox video cards. The driver is fully accelerated, and provides support for the following framebuffer depths: -8, 15, 16, 24, and an 8+24 overlay mode (all chips except G100). All +8, 15, 16, 24, and an 8+24 overlay mode. All visual types are supported for depth 8, and both TrueColor and DirectColor visuals are supported for the other depths except 8+24 mode which supports PseudoColor, GrayScale and TrueColor. Multi-head configurations @@ -81,7 +81,9 @@ .BI "Option ""MGASDRAM"" """ boolean """ Specify whether G100 and G200 cards have SDRAM. The driver attempts to auto-detect this based on the card's PCI subsystem ID. This option may -be used to override that auto-detection. Default: auto-detected. +be used to override that auto-detection. The mga driver is not able to +auto-detect the prescence SDRAM on secondary heads in multihead configurations. +Default: auto-detected. .TP .BI "Option ""NoAccel"" """ boolean """ Disable or enable acceleration. Default: acceleration is enabled. @@ -91,7 +93,10 @@ only). Default: off. .TP .BI "Option ""Overlay"" -Enable 8+24 overlay mode. Only appropriate for depth 24. Default: off. +Enable 8+24 overlay mode. Only appropriate for depth 24. +.RB ( Note: +the G100 is unaccelerated in the 8+24 overlay mode due to a missing +hardware feature) Default: off. .TP .BI "Option ""PciRetry"" """ boolean """ Enable or disable PCI retries. Default: off. @@ -114,6 +119,10 @@ Enable or disable use of on OS-specific fb interface (and is not supported on all OSs). See fbdevhw(__drivermansuffix__) for further information. Default: off. +.TP +.BI "Option ""VideoKey"" """ integer """ +This sets the default pixel value for the YUV video overlay key. +Default: undefined. .SH "SEE ALSO" XFree86(1), XF86Config(__filemansuffix__), xf86config(1), Xserver(1), X(1) .SH AUTHORS Index: xc/programs/Xserver/hw/xfree86/drivers/mga/mga.h diff -u xc/programs/Xserver/hw/xfree86/drivers/mga/mga.h:1.54 xc/programs/Xserver/hw/xfree86/drivers/mga/mga.h:1.57 --- xc/programs/Xserver/hw/xfree86/drivers/mga/mga.h:1.54 Wed Mar 8 16:31:10 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/mga/mga.h Wed Mar 8 16:31:10 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/mga/mga.h,v 1.54 2000/02/14 06:27:23 martin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/mga/mga.h,v 1.57 2000/02/27 02:50:47 mvojkovi Exp $ */ /* * MGA Millennium (MGA2064W) functions * @@ -200,6 +200,7 @@ I2CBusPtr I2C; Bool FBDev; int colorKey; + int videoKey; int fifoCount; int Rotate; MGAFBLayout CurrentLayout; @@ -217,8 +218,6 @@ MGADRIServerPrivatePtr DRIServerInfo; #endif - Bool timerIsOn; - Time offTime; XF86VideoAdaptorPtr adaptor; } MGARec, *MGAPtr; Index: xc/programs/Xserver/hw/xfree86/drivers/mga/mga_driver.c diff -u xc/programs/Xserver/hw/xfree86/drivers/mga/mga_driver.c:1.140 xc/programs/Xserver/hw/xfree86/drivers/mga/mga_driver.c:1.149 --- xc/programs/Xserver/hw/xfree86/drivers/mga/mga_driver.c:1.140 Wed Mar 8 16:31:10 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/mga/mga_driver.c Wed Mar 8 16:31:10 2000 @@ -43,7 +43,7 @@ * Fixed 32bpp hires 8MB horizontal line glitch at middle right */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/mga/mga_driver.c,v 1.140 2000/02/21 19:23:04 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/mga/mga_driver.c,v 1.149 2000/03/07 01:37:49 dawes Exp $ */ /* * This is a first cut at a non-accelerated version to work with the @@ -77,7 +77,7 @@ #include "xf86DDC.h" #include "xf86RAC.h" -#include "xf86int10.h" +#include "vbe.h" /* @@ -215,6 +215,7 @@ OPTION_COLOR_KEY, OPTION_SET_MCLK, OPTION_OVERCLOCK_MEM, + OPTION_VIDEO_KEY, OPTION_ROTATE } MGAOpts; @@ -232,6 +233,7 @@ { OPTION_COLOR_KEY, "ColorKey", OPTV_INTEGER, {0}, FALSE }, { OPTION_SET_MCLK, "SetMclk", OPTV_FREQ, {0}, FALSE }, { OPTION_OVERCLOCK_MEM, "OverclockMem", OPTV_BOOLEAN, {0}, FALSE }, + { OPTION_VIDEO_KEY, "VideoKey", OPTV_INTEGER, {0}, FALSE }, { OPTION_ROTATE, "Rotate", OPTV_ANYSTR, {0}, FALSE }, { -1, NULL, OPTV_NONE, {0}, FALSE } }; @@ -364,6 +366,12 @@ NULL }; +static const char *vbeSymbols[] = { + "VBEInit", + "vbeDoEDID", + NULL +}; + static const char *fbdevHWSymbols[] = { "fbdevHWInit", "fbdevHWUseBuildinMode", @@ -436,7 +444,7 @@ LoaderRefSymLists(vgahwSymbols, cfbSymbols, xaaSymbols, xf8_32bppSymbols, ramdacSymbols, ddcSymbols, i2cSymbols, shadowSymbols, - fbdevHWSymbols, + fbdevHWSymbols, vbeSymbols, #ifdef XF86DRI drmSymbols, driSymbols, #endif @@ -537,8 +545,6 @@ * data structures. */ - if (flags & PROBE_DETECTISA) return FALSE; - if (flags & PROBE_DETECTFBDEV) return FALSE; /* can't detect fbdev yet */ /* * Check if there has been a chipset override in the config file. * For this we must find out if there is an active device section which @@ -583,10 +589,9 @@ if (numUsed <= 0) return FALSE; - if (flags & PROBE_DETECTPCI) - return TRUE; - - for (i = 0; i < numUsed; i++) { + if (flags & PROBE_DETECT) + foundScreen = TRUE; + else for (i = 0; i < numUsed; i++) { ScrnInfoPtr pScrn; #ifdef DISABLE_VGA_IO MgaSavePtr smga; @@ -766,8 +771,6 @@ ErrorF("Pins[0x%02x] is 0x%02x\n", i, ((unsigned char *)pBios2)[i]); #endif - ErrorF("0x20 of Pins[0x34] is %s\n", - (pBios2->VidCtrl & 0x20) ? "set" : "cleared"); return; } else { /* Set default MCLK values (scaled by 10 kHz) */ @@ -924,50 +927,6 @@ return SizeFound; } -/* - * GetAccelPitchValues - - * - * This function returns a list of display width (pitch) values that can - * be used in accelerated mode. - */ -#if 0 -static int * -GetAccelPitchValues(ScrnInfoPtr pScrn) -{ - int *linePitches = NULL; - int i, n = 0; - MGAPtr pMga = MGAPTR(pScrn); - - /* XXX ajv - 512, 576, and 1536 may not be supported - line pitches. see sdk pp 4-59 for more - details. Why anyone would want less than 640 is - bizarre. (maybe lots of pixels tall?) */ - - /* The only line pitches the accelerator supports */ -#if 0 - int accelWidths[] = { 512, 576, 640, 768, 800, 960, - 1024, 1152, 1280, 1536, 1600, 1920, 2048, 0 }; -#else - int accelWidths[] = { 640, 768, 800, 960, 1024, 1152, 1280, - 1600, 1920, 2048, 0 }; -#endif - - for (i = 0; accelWidths[i] != 0; i++) { - if (accelWidths[i] % pMga->Rounding == 0) { - n++; - linePitches = xnfrealloc(linePitches, n * sizeof(int)); - linePitches[n - 1] = accelWidths[i]; - } - } - /* Mark the end of the list */ - if (n > 0) { - linePitches = xnfrealloc(linePitches, (n + 1) * sizeof(int)); - linePitches[n] = 0; - } - return linePitches; -} -#endif - static xf86MonPtr MGAdoDDC(ScrnInfoPtr pScrn) { @@ -1011,7 +970,6 @@ /* Initialize I2C bus - used by DDC if available */ if (pMga->i2cInit) { pMga->i2cInit(pScrn); - ErrorF("I2C initialized on %p\n",pMga->I2C); } /* Read and output monitor info using DDC2 over I2C bus */ if (pMga->I2C) { @@ -1105,6 +1063,18 @@ } #endif /* DISABLE_VGA_IO */ +extern xf86MonPtr ConfiguredMonitor; + +void +MGAProbeDDC(ScrnInfoPtr pScrn, int index) +{ + vbeInfoPtr pVbe; + if (xf86LoadSubModule(pScrn, "vbe")) { + pVbe = VBEInit(NULL,index); + ConfiguredMonitor = vbeDoEDID(pVbe); + } +} + /* Mandatory */ static Bool MGAPreInit(ScrnInfoPtr pScrn, int flags) @@ -1137,6 +1107,23 @@ if (pScrn->numEntities != 1) return FALSE; + /* Allocate the MGARec driverPrivate */ + if (!MGAGetRec(pScrn)) { + return FALSE; + } + + pMga = MGAPTR(pScrn); + + /* Get the entity, and make sure it is PCI. */ + pMga->pEnt = xf86GetEntityInfo(pScrn->entityList[0]); + if (pMga->pEnt->location.type != BUS_PCI) + return FALSE; + + if (flags & PROBE_DETECT) { + MGAProbeDDC(pScrn, pMga->pEnt->index); + return TRUE; + } + /* The vgahw module should be loaded here when needed */ if (!xf86LoadSubModule(pScrn, "vgahw")) return FALSE; @@ -1149,17 +1136,6 @@ if (!vgaHWGetHWRec(pScrn)) return FALSE; - /* Allocate the MGARec driverPrivate */ - if (!MGAGetRec(pScrn)) { - return FALSE; - } - pMga = MGAPTR(pScrn); - - /* Get the entity, and make sure it is PCI. */ - pMga->pEnt = xf86GetEntityInfo(pScrn->entityList[0]); - if (pMga->pEnt->location.type != BUS_PCI) - return FALSE; - #if 0 /* This is causing problems with restoring the card to it's original state. If this is to be done, it needs to happen @@ -1282,19 +1258,54 @@ xf86ProcessOptions(pScrn->scrnIndex, pScrn->options, MGAOptions); /* Set the bits per RGB for 8bpp mode */ - if (pScrn->depth == 8) { - /* XXX This is here just to test options. */ - /* Default to 8 */ + if (pScrn->depth == 8) pScrn->rgbBits = 8; -#if 0 - if (xf86GetOptValInteger(MGAOptions, OPTION_RGB_BITS, - &pScrn->rgbBits)) { - xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Bits per RGB set to %d\n", - pScrn->rgbBits); - } -#endif + + + /* + * Set the Chipset and ChipRev, allowing config file entries to + * override. + */ + if (pMga->pEnt->device->chipset && *pMga->pEnt->device->chipset) { + pScrn->chipset = pMga->pEnt->device->chipset; + pMga->Chipset = xf86StringToToken(MGAChipsets, pScrn->chipset); + from = X_CONFIG; + } else if (pMga->pEnt->device->chipID >= 0) { + pMga->Chipset = pMga->pEnt->device->chipID; + pScrn->chipset = (char *)xf86TokenToString(MGAChipsets, pMga->Chipset); + from = X_CONFIG; + xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "ChipID override: 0x%04X\n", + pMga->Chipset); + } else { + from = X_PROBED; + pMga->Chipset = pMga->PciInfo->chipType; + pScrn->chipset = (char *)xf86TokenToString(MGAChipsets, pMga->Chipset); + } + if (pMga->pEnt->device->chipRev >= 0) { + pMga->ChipRev = pMga->pEnt->device->chipRev; + xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "ChipRev override: %d\n", + pMga->ChipRev); + } else { + pMga->ChipRev = pMga->PciInfo->chipRev; } + /* + * This shouldn't happen because such problems should be caught in + * MGAProbe(), but check it just in case. + */ + if (pScrn->chipset == NULL) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "ChipID 0x%04X is not recognised\n", pMga->Chipset); + return FALSE; + } + if (pMga->Chipset < 0) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Chipset \"%s\" is not recognised\n", pScrn->chipset); + return FALSE; + } + + xf86DrvMsg(pScrn->scrnIndex, from, "Chipset: \"%s\"\n", pScrn->chipset); + from = X_DEFAULT; pMga->HWCursor = TRUE; @@ -1337,10 +1348,7 @@ } if ((s = xf86GetOptValString(MGAOptions, OPTION_OVERLAY))) { if (!*s || !xf86NameCmp(s, "8,24") || !xf86NameCmp(s, "24,8")) { - if(pMga->Chipset == PCI_CHIP_MGAG100) { - xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, - "Option \"Overlay\" is not supported by the G100\n"); - } else if(pScrn->bitsPerPixel == 32) { + if(pScrn->bitsPerPixel == 32) { pMga->Overlay8Plus24 = TRUE; if(!xf86GetOptValInteger( MGAOptions, OPTION_COLOR_KEY,&(pMga->colorKey))) @@ -1351,13 +1359,21 @@ "PseudoColor overlay enabled\n"); } else { xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, - "Option \"Overlay\" is not supported in this configuration\n"); + "Option \"Overlay\" is only supported in 32 bits per pixel\n"); } } else { xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "\"%s\" is not a valid value for Option \"Overlay\"\n", s); } - } + } + if(xf86GetOptValInteger(MGAOptions, OPTION_VIDEO_KEY, &(pMga->videoKey))) { + xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "video key set to 0x%x\n", + pMga->videoKey); + } else { + pMga->videoKey = (1 << pScrn->offset.red) | + (1 << pScrn->offset.green) | + (((pScrn->mask.blue >> pScrn->offset.blue) - 1) << pScrn->offset.blue); + } if (xf86ReturnOptValBool(MGAOptions, OPTION_SHADOW_FB, FALSE)) { pMga->ShadowFB = TRUE; pMga->NoAccel = TRUE; @@ -1410,51 +1426,6 @@ "Valid options are \"CW\" or \"CCW\"\n"); } } - - - /* - * Set the Chipset and ChipRev, allowing config file entries to - * override. - */ - if (pMga->pEnt->device->chipset && *pMga->pEnt->device->chipset) { - pScrn->chipset = pMga->pEnt->device->chipset; - pMga->Chipset = xf86StringToToken(MGAChipsets, pScrn->chipset); - from = X_CONFIG; - } else if (pMga->pEnt->device->chipID >= 0) { - pMga->Chipset = pMga->pEnt->device->chipID; - pScrn->chipset = (char *)xf86TokenToString(MGAChipsets, pMga->Chipset); - from = X_CONFIG; - xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "ChipID override: 0x%04X\n", - pMga->Chipset); - } else { - from = X_PROBED; - pMga->Chipset = pMga->PciInfo->chipType; - pScrn->chipset = (char *)xf86TokenToString(MGAChipsets, pMga->Chipset); - } - if (pMga->pEnt->device->chipRev >= 0) { - pMga->ChipRev = pMga->pEnt->device->chipRev; - xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "ChipRev override: %d\n", - pMga->ChipRev); - } else { - pMga->ChipRev = pMga->PciInfo->chipRev; - } - - /* - * This shouldn't happen because such problems should be caught in - * MGAProbe(), but check it just in case. - */ - if (pScrn->chipset == NULL) { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "ChipID 0x%04X is not recognised\n", pMga->Chipset); - return FALSE; - } - if (pMga->Chipset < 0) { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "Chipset \"%s\" is not recognised\n", pScrn->chipset); - return FALSE; - } - - xf86DrvMsg(pScrn->scrnIndex, from, "Chipset: \"%s\"\n", pScrn->chipset); if(pMga->HasSDRAM) { /* don't bother checking */ } else if ((pMga->PciInfo->subsysCard == PCI_CARD_MILL_G200_SD) || Index: xc/programs/Xserver/hw/xfree86/drivers/mga/mga_video.c diff -u xc/programs/Xserver/hw/xfree86/drivers/mga/mga_video.c:1.8 xc/programs/Xserver/hw/xfree86/drivers/mga/mga_video.c:1.12 --- xc/programs/Xserver/hw/xfree86/drivers/mga/mga_video.c:1.8 Wed Mar 8 16:31:10 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/mga/mga_video.c Wed Mar 8 16:31:10 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/mga/mga_video.c,v 1.8 2000/01/18 16:35:51 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/mga/mga_video.c,v 1.12 2000/03/08 01:14:27 mvojkovi Exp $ */ #include "xf86.h" #include "xf86_OSproc.h" @@ -20,7 +20,14 @@ #include "xaalocal.h" #include "dixstruct.h" -#define OFF_DELAY 200 /* milliseconds */ +#define OFF_DELAY 200 /* milliseconds */ +#define FREE_DELAY 60000 + +#define OFF_TIMER 0x01 +#define FREE_TIMER 0x02 +#define CLIENT_VIDEO_ON 0x04 + +#define TIMER_MASK (OFF_TIMER | FREE_TIMER) #ifndef XvExtension void MGAInitVideo(ScreenPtr pScreen) {} @@ -28,7 +35,7 @@ #else static XF86VideoAdaptorPtr MGASetupImageVideoG(ScreenPtr); - +static void MGAInitOffscreenImages(ScreenPtr); static void MGAStopVideoG(ScrnInfoPtr, pointer, Bool); static int MGASetPortAttributeG(ScrnInfoPtr, Atom, INT32, pointer); static int MGAGetPortAttributeG(ScrnInfoPtr, Atom ,INT32 *, pointer); @@ -49,49 +56,55 @@ void MGAInitVideo(ScreenPtr pScreen) { ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; - XF86VideoAdaptorPtr *adaptors, *newAdaptors; - XF86VideoAdaptorPtr newAdaptor; + XF86VideoAdaptorPtr *adaptors, *newAdaptors = NULL; + XF86VideoAdaptorPtr newAdaptor = NULL; MGAPtr pMga = MGAPTR(pScrn); int num_adaptors; - Bool freeAdaptors = FALSE; - num_adaptors = xf86XVListGenericAdaptors(&adaptors); - if((pScrn->bitsPerPixel != 8) && !pMga->Overlay8Plus24 && ((pMga->Chipset == PCI_CHIP_MGAG200) || (pMga->Chipset == PCI_CHIP_MGAG200_PCI) || (pMga->Chipset == PCI_CHIP_MGAG400))) { - if((newAdaptor = MGASetupImageVideoG(pScreen))) { + newAdaptor = MGASetupImageVideoG(pScreen); + MGAInitOffscreenImages(pScreen); + } + + num_adaptors = xf86XVListGenericAdaptors(pScrn, &adaptors); - newAdaptors = xalloc((num_adaptors + 1) * - sizeof(XF86VideoAdaptorPtr*)); - if(newAdaptors) { - if(num_adaptors) - memcpy(newAdaptors, adaptors, num_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++; - freeAdaptors = TRUE; - } + } } } if(num_adaptors) xf86XVScreenInit(pScreen, adaptors, num_adaptors); - if(freeAdaptors) - xfree(adaptors); + if(newAdaptors) + xfree(newAdaptors); } /* client libraries expect an encoding */ static XF86VideoEncodingRec DummyEncoding[1] = { + { 0, "XV_IMAGE", 1024, 1024, {1, 1} + } }; #define NUM_FORMATS_G 3 @@ -170,12 +183,18 @@ typedef struct { unsigned char brightness; unsigned char contrast; - FBAreaPtr area; - RegionRec clip; - CARD32 colorKey; + FBAreaPtr area; + RegionRec clip; + CARD32 colorKey; + CARD32 videoStatus; + Time offTime; + Time freeTime; } MGAPortPrivRec, *MGAPortPrivPtr; +#define GET_PORT_PRIVATE(pScrn) \ + (MGAPortPrivPtr)((MGAPTR(pScrn))->adaptor->pPortPrivates[0].ptr) + #define outMGAdreg(reg, val) OUTREG8(RAMDAC_OFFSET + (reg), val) #define outMGAdac(reg, val) \ (outMGAdreg(MGA1064_INDEX, reg), outMGAdreg(MGA1064_DATA, val)) @@ -210,7 +229,6 @@ MGAPtr pMga = MGAPTR(pScrn); XF86VideoAdaptorPtr adapt; MGAPortPrivPtr pPriv; - int i; if(!(adapt = xcalloc(1, sizeof(XF86VideoAdaptorRec) + sizeof(MGAPortPrivRec) + @@ -248,11 +266,11 @@ adapt->PutImage = MGAPutImageG; adapt->QueryImageAttributes = MGAQueryImageAttributesG; + pPriv->colorKey = pMga->videoKey; + pPriv->videoStatus = 0; pPriv->brightness = 0; pPriv->contrast = 128; - pPriv->colorKey = (1 << pScrn->offset.red) | (1 << pScrn->offset.green) | - (((pScrn->mask.blue >> pScrn->offset.blue) - 1) << pScrn->offset.blue); - + /* gotta uninit this someplace */ REGION_INIT(pScreen, &pPriv->clip, NullBox, 0); @@ -384,13 +402,18 @@ REGION_EMPTY(pScrn->pScreen, &pPriv->clip); if(exit) { - OUTREG(MGAREG_BESCTL, 0); - pMga->timerIsOn = FALSE; + if(pPriv->videoStatus & CLIENT_VIDEO_ON) + OUTREG(MGAREG_BESCTL, 0); + if(pPriv->area) { + xf86FreeOffscreenArea(pPriv->area); + pPriv->area = NULL; + } + pPriv->videoStatus = 0; } else { - /* if it's being clipped delay turning off video for a short - while to avoid flicker */ - pMga->timerIsOn = TRUE; - pMga->offTime = currentTime.milliseconds + OFF_DELAY; + if(pPriv->videoStatus & CLIENT_VIDEO_ON) { + pPriv->videoStatus |= OFF_TIMER; + pPriv->offTime = currentTime.milliseconds + OFF_DELAY; + } } } @@ -440,7 +463,6 @@ pointer data ){ MGAPortPrivPtr pPriv = (MGAPortPrivPtr)data; - MGAPtr pMga = MGAPTR(pScrn); if(attribute == xvBrightness) { *value = pPriv->brightness; @@ -521,6 +543,108 @@ } +static FBAreaPtr +MGAAllocateMemory( + ScrnInfoPtr pScrn, + FBAreaPtr area, + int numlines +){ + ScreenPtr pScreen; + FBAreaPtr new_area; + + if(area) { + if((area->box.y2 - area->box.y1) >= numlines) + return area; + + if(xf86ResizeOffscreenArea(area, pScrn->displayWidth, numlines)) + return area; + + xf86FreeOffscreenArea(area); + } + + pScreen = screenInfo.screens[pScrn->scrnIndex]; + + new_area = xf86AllocateOffscreenArea(pScreen, pScrn->displayWidth, + numlines, 0, NULL, NULL, NULL); + + if(!new_area) { + int max_w, max_h; + + xf86QueryLargestOffscreenArea(pScreen, &max_w, &max_h, 0, + FAVOR_WIDTH_THEN_AREA, PRIORITY_EXTREME); + + if((max_w < pScrn->displayWidth) || (max_h < numlines)) + return NULL; + + xf86PurgeUnlockedOffscreenAreas(pScreen); + new_area = xf86AllocateOffscreenArea(pScreen, pScrn->displayWidth, + numlines, 0, NULL, NULL, NULL); + } + + return new_area; +} + +static void +MGADisplayVideo( + ScrnInfoPtr pScrn, + int id, + int offset, + short width, short height, + int pitch, + int x1, int y1, int x2, int y2, + BoxPtr dstBox, + short src_w, short src_h, + short drw_w, short drw_h +){ + MGAPtr pMga = MGAPTR(pScrn); + int tmp; + + /* got 64 scanlines to do it in */ + tmp = INREG(MGAREG_VCOUNT) + 64; + if(tmp > pScrn->currentMode->VDisplay) + tmp -= pScrn->currentMode->VDisplay; + + switch(id) { + case 0x59565955: + OUTREG(MGAREG_BESGLOBCTL, 0x000000c3 | (tmp << 16)); + break; + case 0x32595559: + default: + OUTREG(MGAREG_BESGLOBCTL, 0x00000083 | (tmp << 16)); + break; + } + + OUTREG(MGAREG_BESA1ORG, offset); + + if(y1 & 0x00010000) + OUTREG(MGAREG_BESCTL, 0x00050c41); + else + OUTREG(MGAREG_BESCTL, 0x00050c01); + + OUTREG(MGAREG_BESHCOORD, (dstBox->x1 << 16) | (dstBox->x2 - 1)); + OUTREG(MGAREG_BESVCOORD, (dstBox->y1 << 16) | (dstBox->y2 - 1)); + + OUTREG(MGAREG_BESHSRCST, x1 & 0x03fffffc); + OUTREG(MGAREG_BESHSRCEND, (x2 - 0x00010000) & 0x03fffffc); + OUTREG(MGAREG_BESHSRCLST, (width - 1) << 16); + + OUTREG(MGAREG_BESPITCH, pitch >> 1); + + OUTREG(MGAREG_BESV1WGHT, y1 & 0x0000fffc); + OUTREG(MGAREG_BESV1SRCLST, height - 1 - (y1 >> 16)); + + tmp = ((src_h - 1) << 16)/drw_h; + if(tmp >= (32 << 16)) + tmp = (32 << 16) - 1; + OUTREG(MGAREG_BESVISCAL, tmp & 0x001ffffc); + + tmp = (((src_w - 1) << 16)/drw_w) << 1; + if(tmp >= (32 << 16)) + tmp = (32 << 16) - 1; + OUTREG(MGAREG_BESHISCAL, tmp & 0x001ffffc); + +} + static int MGAPutImageG( ScrnInfoPtr pScrn, @@ -534,14 +658,11 @@ RegionPtr clipBoxes, pointer data ){ MGAPortPrivPtr pPriv = (MGAPortPrivPtr)data; - ScreenPtr pScreen = pScrn->pScreen; MGAPtr pMga = MGAPTR(pScrn); INT32 x1, x2, y1, y2; - unsigned char *dst, *src; unsigned char *dst_start; - int i, j, pitch, Bpp, new_h, offset, offset2, offset3, visHeight; - FBAreaPtr area; - int srcPitch, dstPitch, srcPitch2; + int pitch, new_h, offset, offset2, offset3; + int srcPitch, srcPitch2, dstPitch; int top, left, npixels, nlines; BoxRec dstBox; CARD32 tmp; @@ -570,73 +691,36 @@ dstBox.y1 -= pScrn->frameY0; dstBox.y2 -= pScrn->frameY0; - Bpp = pScrn->bitsPerPixel >> 3; - pitch = Bpp * pScrn->displayWidth; + pitch = pScrn->bitsPerPixel * pScrn->displayWidth >> 3; + + dstPitch = ((width << 1) + 15) & ~15; + new_h = ((dstPitch * height) + pitch - 1) / pitch; switch(id) { case 0x32315659: - dstPitch = ((width << 1) + 31) & ~31; srcPitch = (width + 3) & ~3; offset2 = srcPitch * height; srcPitch2 = ((width >> 1) + 3) & ~3; - offset = srcPitch2 * (height >> 1); - offset3 = offset + offset2; - offset += offset3; - new_h = (offset + pitch - 1) / pitch; + offset3 = (srcPitch2 * (height >> 1)) + offset2; break; case 0x59565955: case 0x32595559: default: srcPitch = (width << 1); - dstPitch = (srcPitch + 15) & ~15; - offset = dstPitch * height; - new_h = (offset + pitch - 1) / pitch; break; } - area = pPriv->area; - - /* Allocate offscreen memory */ - if(!area || ((area->box.y2 - area->box.y1) < new_h)) { - Bool nukeMem = FALSE; - - if(!area) { - if(!(area = xf86AllocateOffscreenArea(pScreen, - pScrn->displayWidth, new_h, 0, NULL, NULL, NULL))) - { - nukeMem = TRUE; - } - } else { - if(!xf86ResizeOffscreenArea(area, pScrn->displayWidth, new_h)) { - xf86FreeOffscreenArea(area); - pPriv->area = area = NULL; - nukeMem = TRUE; - } - } - if(nukeMem) { - int max_w, max_h; - xf86QueryLargestOffscreenArea(pScreen, &max_w, &max_h, 0, - FAVOR_WIDTH_THEN_AREA, PRIORITY_EXTREME); - - if((max_w < pScrn->displayWidth) || (max_h < new_h)) - return BadAlloc; - - xf86PurgeUnlockedOffscreenAreas(pScreen); - area = xf86AllocateOffscreenArea(pScreen, - pScrn->displayWidth, new_h, 0, NULL, NULL, NULL); - } + if(!(pPriv->area = MGAAllocateMemory(pScrn, pPriv->area, new_h))) + return BadAlloc; - pPriv->area = area; - } - /* copy data */ top = y1 >> 16; left = (x1 >> 16) & ~1; npixels = ((((x2 + 0xffff) >> 16) + 1) & ~1) - left; left <<= 1; - offset = (area->box.y1 * pitch) + (top * dstPitch); + offset = (pPriv->area->box.y1 * pitch) + (top * dstPitch); dst_start = pMga->FbStart + offset + left; switch(id) { @@ -668,52 +752,11 @@ REGION_RECTS(clipBoxes)); } - /* got 64 scanlines to do it in */ - tmp = INREG(MGAREG_VCOUNT) + 64; - if(tmp > pScrn->currentMode->VDisplay) - tmp -= pScrn->currentMode->VDisplay; - - switch(id) { - case 0x59565955: - OUTREG(MGAREG_BESGLOBCTL, 0x000000c3 | (tmp << 16)); - break; - case 0x32595559: - default: - OUTREG(MGAREG_BESGLOBCTL, 0x00000083 | (tmp << 16)); - break; - } - - OUTREG(MGAREG_BESA1ORG, offset); - if(y1 & 0x00010000) - OUTREG(MGAREG_BESCTL, 0x00050c41); - else - OUTREG(MGAREG_BESCTL, 0x00050c01); - - OUTREG(MGAREG_BESHCOORD, (dstBox.x1 << 16) | (dstBox.x2 - 1)); - OUTREG(MGAREG_BESVCOORD, (dstBox.y1 << 16) | (dstBox.y2 - 1)); + MGADisplayVideo(pScrn, id, offset, width, height, dstPitch, + x1, y1, x2, y2, &dstBox, src_w, src_h, drw_w, drw_h); - OUTREG(MGAREG_BESHSRCST, x1 & 0x03fffffc); - OUTREG(MGAREG_BESHSRCEND, (x2 - 0x00010000) & 0x03fffffc); - OUTREG(MGAREG_BESHSRCLST, (width - 1) << 16); - - OUTREG(MGAREG_BESPITCH, dstPitch >> 1); - - - OUTREG(MGAREG_BESV1WGHT, y1 & 0x0000fffc); - OUTREG(MGAREG_BESV1SRCLST, height - 1 - (y1 >> 16)); - - tmp = ((src_h - 1) << 16)/drw_h; - if(tmp >= (32 << 16)) - tmp = (32 << 16) - 1; - OUTREG(MGAREG_BESVISCAL, tmp & 0x001ffffc); - - tmp = (((src_w - 1) << 16)/drw_w) << 1; - if(tmp >= (32 << 16)) - tmp = (32 << 16) - 1; - OUTREG(MGAREG_BESHISCAL, tmp & 0x001ffffc); - - pMga->timerIsOn = FALSE; + pPriv->videoStatus = CLIENT_VIDEO_ON; return Success; } @@ -770,6 +813,7 @@ ScreenPtr pScreen = screenInfo.screens[i]; ScrnInfoPtr pScrn = xf86Screens[i]; MGAPtr pMga = MGAPTR(pScrn); + MGAPortPrivPtr pPriv = GET_PORT_PRIVATE(pScrn); pScreen->BlockHandler = pMga->BlockHandler; @@ -777,14 +821,237 @@ pScreen->BlockHandler = MGABlockHandler; - if(pMga->timerIsOn) { + if(pPriv->videoStatus & TIMER_MASK) { UpdateCurrentTime(); - if(pMga->offTime < currentTime.milliseconds) { - pMga->timerIsOn = FALSE; - OUTREG(MGAREG_BESCTL, 0); - } + if(pPriv->videoStatus & OFF_TIMER) { + if(pPriv->offTime < currentTime.milliseconds) { + OUTREG(MGAREG_BESCTL, 0); + pPriv->videoStatus = FREE_TIMER; + pPriv->freeTime = currentTime.milliseconds + FREE_DELAY; + } + } else { /* FREE_TIMER */ + if(pPriv->freeTime < currentTime.milliseconds) { + if(pPriv->area) { + xf86FreeOffscreenArea(pPriv->area); + pPriv->area = NULL; + } + pPriv->videoStatus = 0; + } + } } } -#endif +/****************** Offscreen stuff ***************/ + +typedef struct { + FBAreaPtr area; + Bool isOn; +} OffscreenPrivRec, * OffscreenPrivPtr; + +static int +MGAAllocateSurface( + ScrnInfoPtr pScrn, + int id, + unsigned short w, + unsigned short h, + XF86SurfacePtr surface +){ + FBAreaPtr area; + int pitch, fbpitch, numlines; + OffscreenPrivPtr pPriv; + + if((w > 1024) || (h > 1024)) + return BadAlloc; + + w = (w + 1) & ~1; + pitch = ((w << 1) + 15) & ~15; + fbpitch = pScrn->bitsPerPixel * pScrn->displayWidth >> 3; + numlines = ((pitch * h) + fbpitch - 1) / fbpitch; + + if(!(area = MGAAllocateMemory(pScrn, NULL, numlines))) + return BadAlloc; + + surface->width = w; + surface->height = h; + + if(!(surface->pitches = xalloc(sizeof(int)))) + return BadAlloc; + if(!(surface->offsets = xalloc(sizeof(int)))) { + xfree(surface->pitches); + return BadAlloc; + } + if(!(pPriv = xalloc(sizeof(OffscreenPrivRec)))) { + xfree(surface->pitches); + xfree(surface->offsets); + return BadAlloc; + } + + pPriv->area = area; + pPriv->isOn = FALSE; + + surface->pScrn = pScrn; + surface->id = id; + surface->pitches[0] = pitch; + surface->offsets[0] = area->box.y1 * fbpitch; + surface->devPrivate.ptr = (pointer)pPriv; + + return Success; +} + +static int +MGAStopSurface( + XF86SurfacePtr surface +){ + OffscreenPrivPtr pPriv = (OffscreenPrivPtr)surface->devPrivate.ptr; + + if(pPriv->isOn) { + MGAPtr pMga = MGAPTR(surface->pScrn); + OUTREG(MGAREG_BESCTL, 0); + pPriv->isOn = FALSE; + } + + return Success; +} + + +static int +MGAFreeSurface( + XF86SurfacePtr surface +){ + OffscreenPrivPtr pPriv = (OffscreenPrivPtr)surface->devPrivate.ptr; + + if(pPriv->isOn) + MGAStopSurface(surface); + xf86FreeOffscreenArea(pPriv->area); + xfree(surface->pitches); + xfree(surface->offsets); + xfree(surface->devPrivate.ptr); + + return Success; +} + +static int +MGAGetSurfaceAttribute( + XF86SurfacePtr surface, + Atom attribute, + INT32 *value +){ + return MGAGetPortAttributeG(surface->pScrn, attribute, value, + (pointer)(GET_PORT_PRIVATE(surface->pScrn))); +} + +static int +MGASetSurfaceAttribute( + XF86SurfacePtr surface, + Atom attribute, + INT32 value +){ + return MGASetPortAttributeG(surface->pScrn, attribute, value, + (pointer)(GET_PORT_PRIVATE(surface->pScrn))); +} + + +static int +MGADisplaySurface( + XF86SurfacePtr surface, + short src_x, short src_y, + short drw_x, short drw_y, + short src_w, short src_h, + short drw_w, short drw_h, + RegionPtr clipBoxes +){ + OffscreenPrivPtr pPriv = (OffscreenPrivPtr)surface->devPrivate.ptr; + ScrnInfoPtr pScrn = surface->pScrn; + MGAPortPrivPtr portPriv = GET_PORT_PRIVATE(pScrn); + INT32 x1, y1, x2, y2; + BoxRec dstBox; + + x1 = src_x; + x2 = src_x + src_w; + y1 = src_y; + y2 = src_y + src_h; + + dstBox.x1 = drw_x; + dstBox.x2 = drw_x + drw_w; + dstBox.y1 = drw_y; + dstBox.y2 = drw_y + drw_h; + + MGAClipVideo(&dstBox, &x1, &x2, &y1, &y2, + REGION_EXTENTS(pScreen, clipBoxes), + surface->width, surface->height); + + if((x1 >= x2) || (y1 >= y2)) + return Success; + + dstBox.x1 -= pScrn->frameX0; + dstBox.x2 -= pScrn->frameX0; + dstBox.y1 -= pScrn->frameY0; + dstBox.y2 -= pScrn->frameY0; + + XAAFillSolidRects(pScrn, portPriv->colorKey, GXcopy, ~0, + REGION_NUM_RECTS(clipBoxes), + REGION_RECTS(clipBoxes)); + + MGADisplayVideo(pScrn, surface->id, surface->offsets[0], + surface->width, surface->height, surface->pitches[0], + x1, y1, x2, y2, &dstBox, src_w, src_h, drw_w, drw_h); + + pPriv->isOn = TRUE; + if(portPriv->videoStatus & CLIENT_VIDEO_ON) { + REGION_EMPTY(pScrn->pScreen, &portPriv->clip); + UpdateCurrentTime(); + portPriv->videoStatus = FREE_TIMER; + portPriv->freeTime = currentTime.milliseconds + FREE_DELAY; + } + + return Success; +} + + +static void +MGAInitOffscreenImages(ScreenPtr pScreen) +{ + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + MGAPtr pMga = MGAPTR(pScrn); + int num = (pMga->Chipset == PCI_CHIP_MGAG400) ? 2 : 1; + XF86OffscreenImagePtr offscreenImages; + + /* need to free this someplace */ + if(!(offscreenImages = xalloc(num * sizeof(XF86OffscreenImageRec)))) + return; + + offscreenImages[0].image = &ImagesG[0]; + offscreenImages[0].flags = VIDEO_OVERLAID_IMAGES | + VIDEO_CLIP_TO_VIEWPORT; + offscreenImages[0].alloc_surface = MGAAllocateSurface; + offscreenImages[0].free_surface = MGAFreeSurface; + offscreenImages[0].display = MGADisplaySurface; + offscreenImages[0].stop = MGAStopSurface; + offscreenImages[0].setAttribute = MGASetSurfaceAttribute; + offscreenImages[0].getAttribute = MGAGetSurfaceAttribute; + offscreenImages[0].max_width = 1024; + offscreenImages[0].max_height = 1024; + offscreenImages[0].num_attributes = (num == 1) ? 1 : 3; + offscreenImages[0].attributes = AttributesG; + + if(num == 2) { + offscreenImages[1].image = &ImagesG[2]; + offscreenImages[1].flags = VIDEO_OVERLAID_IMAGES | + VIDEO_CLIP_TO_VIEWPORT; + offscreenImages[1].alloc_surface = MGAAllocateSurface; + offscreenImages[1].free_surface = MGAFreeSurface; + offscreenImages[1].display = MGADisplaySurface; + offscreenImages[1].stop = MGAStopSurface; + offscreenImages[1].setAttribute = MGASetSurfaceAttribute; + offscreenImages[1].getAttribute = MGAGetSurfaceAttribute; + offscreenImages[1].max_width = 1024; + offscreenImages[1].max_height = 1024; + offscreenImages[1].num_attributes = 3; + offscreenImages[1].attributes = AttributesG; + } + + xf86XVRegisterOffscreenImages(pScreen, offscreenImages, num); +} + +#endif /* !XvExtension */ Index: xc/programs/Xserver/hw/xfree86/drivers/neomagic/Imakefile diff -u xc/programs/Xserver/hw/xfree86/drivers/neomagic/Imakefile:1.3 xc/programs/Xserver/hw/xfree86/drivers/neomagic/Imakefile:1.4 --- xc/programs/Xserver/hw/xfree86/drivers/neomagic/Imakefile:1.3 Wed Mar 8 16:31:11 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/neomagic/Imakefile Wed Mar 8 16:31:11 2000 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/neomagic/Imakefile,v 1.3 2000/02/08 13:13:18 eich Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/neomagic/Imakefile,v 1.4 2000/03/03 01:05:39 dawes Exp $ #define IHaveModules #include <Server.tmpl> @@ -33,9 +33,12 @@ InstallObjectModule(neomagic,$(MODULEDIR),drivers) -#ifndef OS2Architecture -DependTarget() +#if !defined(XF86DriverSDK) +CppManTarget(neomagic,) +InstallModuleManPage(neomagic) #endif + +DependTarget() InstallDriverSDKNonExecFile(Imakefile,$(DRIVERSDKDIR)/drivers/neomagic) InstallDriverSDKNonExecFile(neo.h,$(DRIVERSDKDIR)/drivers/neomagic) Index: xc/programs/Xserver/hw/xfree86/drivers/neomagic/neo_driver.c diff -u xc/programs/Xserver/hw/xfree86/drivers/neomagic/neo_driver.c:1.15 xc/programs/Xserver/hw/xfree86/drivers/neomagic/neo_driver.c:1.18 --- xc/programs/Xserver/hw/xfree86/drivers/neomagic/neo_driver.c:1.15 Wed Mar 8 16:31:11 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/neomagic/neo_driver.c Wed Mar 8 16:31:11 2000 @@ -22,7 +22,7 @@ CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. **********************************************************************/ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/neomagic/neo_driver.c,v 1.15 2000/02/21 19:23:05 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/neomagic/neo_driver.c,v 1.18 2000/03/06 23:54:11 dawes Exp $ */ /* * The original Precision Insight driver for @@ -444,7 +444,6 @@ int *usedChips; int i; - if (flags & PROBE_DETECTFBDEV) return FALSE; /* * Find the config file Device sections that match this * driver, and return if there are none. @@ -461,12 +460,10 @@ devSections,numDevSections, drv, &usedChips); - if (numUsed > 0 && (flags & PROBE_DETECTPCI)) - return TRUE; - if (numUsed <= 0 && (flags & PROBE_DETECTPCI)) - return FALSE; - - for (i = 0; i < numUsed; i++) { + if (numUsed > 0) { + if (flags & PROBE_DETECT) + foundScreen = TRUE; + else for (i = 0; i < numUsed; i++) { ScrnInfoPtr pScrn; /* Allocate a ScrnInfoRec and claim the slot */ pScrn = xf86AllocateScreen(drv,0); @@ -485,19 +482,19 @@ foundScreen = TRUE; xf86ConfigActivePciEntity(pScrn, usedChips[i], NEOPCIchipsets, NULL, NULL, NULL, NULL, NULL); + } + xfree(usedChips); } - if (numUsed > 0) - xfree(usedChips); } /* Isa Bus */ numUsed = xf86MatchIsaInstances(NEO_NAME,NEOChipsets,NEOISAchipsets, drv,neoFindIsaDevice,devSections, numDevSections,&usedChips); - if (numUsed > 0 && (flags & PROBE_DETECTISA)) - return TRUE; - - for (i = 0; i < numUsed; i++) { + if (numUsed > 0) { + if (flags & PROBE_DETECT) + foundScreen = TRUE; + else for (i = 0; i < numUsed; i++) { ScrnInfoPtr pScrn; pScrn = xf86AllocateScreen(drv,0); @@ -516,12 +513,11 @@ foundScreen = TRUE; xf86ConfigActiveIsaEntity(pScrn, usedChips[i], NEOISAchipsets, NULL, NULL, NULL, NULL, NULL); + } + xfree(usedChips); } - if (numUsed > 0) - xfree(usedChips); - if (devSections) - xfree(devSections); + xfree(devSections); return foundScreen; } @@ -574,6 +570,8 @@ int w; int apertureSize; char *s; + + if (flags & PROBE_DETECT) return FALSE; /* The vgahw module should be loaded here when needed */ if (!xf86LoadSubModule(pScrn, "vgahw")) Index: xc/programs/Xserver/hw/xfree86/drivers/neomagic/neomagic.cpp diff -u /dev/null xc/programs/Xserver/hw/xfree86/drivers/neomagic/neomagic.cpp:1.1 --- /dev/null Wed Mar 8 16:31:11 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/neomagic/neomagic.cpp Wed Mar 8 16:31:11 2000 @@ -0,0 +1,30 @@ +.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/neomagic/neomagic.cpp,v 1.1 2000/03/03 01:05:40 dawes Exp $ +.TH NEOMAGIC __drivermansuffix__ "Version 4.0" "XFree86" +.SH NAME +neomagic \- NeoMagic video driver +.SH SYNOPSIS +.B "Section ""Device""" +.br +.BI " Identifier """ devname """" +.br +.B " Driver ""neomagic""" +.br +\ \ ... +.br +.B EndSection +.SH DESCRIPTION +.B neomagic +is an XFree86 driver for NeoMagic video chips. +THIS MAN PAGE NEEDS TO BE FILLED IN. +.SH SUPPORTED HARDWARE +The +.B neomagic +driver supports... +.SH CONFIGURATION DETAILS +Please refer to XF86Config(__filemansuffix__) for general configuration +details. This section only covers configuration details specific to this +driver. +.SH "SEE ALSO" +XFree86(1), XF86Config(__filemansuffix__), xf86config(1), Xserver(1), X(1) +.SH AUTHORS +Authors include: ... Index: xc/programs/Xserver/hw/xfree86/drivers/nv/Imakefile diff -u xc/programs/Xserver/hw/xfree86/drivers/nv/Imakefile:1.10 xc/programs/Xserver/hw/xfree86/drivers/nv/Imakefile:1.11 --- xc/programs/Xserver/hw/xfree86/drivers/nv/Imakefile:1.10 Wed Mar 8 16:31:11 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/nv/Imakefile Wed Mar 8 16:31:11 2000 @@ -1,10 +1,10 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/Imakefile,v 1.10 2000/01/23 04:44:30 dawes Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/Imakefile,v 1.11 2000/02/25 21:02:54 dawes Exp $ XCOMM XCOMM This is an Imakefile for the NVIDIA driver. XCOMM -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/Imakefile,v 1.10 2000/01/23 04:44:30 dawes Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/Imakefile,v 1.11 2000/02/25 21:02:54 dawes Exp $ #define IHaveModules #include <Server.tmpl> @@ -26,7 +26,7 @@ -I$(XF86SRC)/ramdac -I$(XF86SRC)/ddc -I$(XF86SRC)/i2c \ -I$(SERVERSRC)/Xext -I$(XF86SRC)/int10 \ -I$(FONTINCSRC) -I$(SERVERSRC)/include -I$(XINCLUDESRC) \ - -I$(XF86SRC)/shadowfb -I$(EXTINCSRC) + -I$(XF86SRC)/shadowfb -I$(EXTINCSRC) -I$(SERVERSRC)/fb #endif DEFINES = -DPSZ=8 Index: xc/programs/Xserver/hw/xfree86/drivers/nv/nv.cpp diff -u xc/programs/Xserver/hw/xfree86/drivers/nv/nv.cpp:1.5 xc/programs/Xserver/hw/xfree86/drivers/nv/nv.cpp:1.6 --- xc/programs/Xserver/hw/xfree86/drivers/nv/nv.cpp:1.5 Thu Nov 11 21:12:40 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/nv/nv.cpp Wed Mar 8 16:31:11 2000 @@ -1,5 +1,5 @@ -.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv.cpp,v 1.5 1999/11/12 02:12:40 mvojkovi Exp $ -.TH NV __drivermansuffix__ "Version 3.9.16" "XFree86" +.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv.cpp,v 1.6 2000/03/03 01:05:40 dawes Exp $ +.TH NV __drivermansuffix__ "Version 4.0" "XFree86" .SH NAME nv \-NVIDIA video driver .SH SYNOPSIS Index: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_const.h diff -u xc/programs/Xserver/hw/xfree86/drivers/nv/nv_const.h:1.2 xc/programs/Xserver/hw/xfree86/drivers/nv/nv_const.h:1.3 --- xc/programs/Xserver/hw/xfree86/drivers/nv/nv_const.h:1.2 Sun Aug 1 08:17:40 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/nv/nv_const.h Wed Mar 8 16:31:12 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_const.h,v 1.2 1999/08/01 12:17:40 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_const.h,v 1.3 2000/02/25 21:02:55 dawes Exp $ */ #ifndef __NV_CONST_H__ #define __NV_CONST_H__ @@ -9,6 +9,8 @@ #define NV_MAJOR_VERSION 1 #define NV_MINOR_VERSION 0 #define NV_PATCHLEVEL 0 + +/*#define NV_USE_FB*/ #ifdef DEBUG_PRINT #define DEBUG(x) x Index: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_driver.c diff -u xc/programs/Xserver/hw/xfree86/drivers/nv/nv_driver.c:1.34 xc/programs/Xserver/hw/xfree86/drivers/nv/nv_driver.c:1.40 --- xc/programs/Xserver/hw/xfree86/drivers/nv/nv_driver.c:1.34 Wed Mar 8 16:31:12 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/nv/nv_driver.c Wed Mar 8 16:31:12 2000 @@ -24,7 +24,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.34 2000/02/21 19:23:06 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_driver.c,v 1.40 2000/03/05 23:47:51 dawes Exp $ */ #include "nv_include.h" @@ -142,6 +142,7 @@ NULL }; +#ifndef NV_USE_FB static const char *cfbSymbols[] = { "cfbScreenInit", "cfb16ScreenInit", @@ -152,6 +153,13 @@ "cfb32BresS", NULL }; +#else +static const char *fbSymbols[] = { + "fbScreenInit", + "fbBres", + NULL +}; +#endif static const char *xaaSymbols[] = { "XAADestroyInfoRec", @@ -337,7 +345,12 @@ * Tell the loader about symbols from other modules that this module * might refer to. */ - LoaderRefSymLists(vgahwSymbols, cfbSymbols, xaaSymbols, + LoaderRefSymLists(vgahwSymbols, xaaSymbols, +#ifndef NV_USE_FB + cfbSymbols, +#else + fbSymbols, +#endif ramdacSymbols, shadowSymbols, i2cSymbols, ddcSymbols, fbdevHWSymbols, int10Symbols, NULL); @@ -394,9 +407,6 @@ * data structures. */ - if (flags & PROBE_DETECTISA) return FALSE; - if (flags & PROBE_DETECTFBDEV) return FALSE; - /* * Check if there has been a chipset override in the config file. * For this we must find out if there is an active device section which @@ -444,10 +454,9 @@ if (numUsed <= 0) return FALSE; - if (flags & PROBE_DETECTPCI) - return TRUE; - - for (i = 0; i < numUsed; i++) { + if (flags & PROBE_DETECT) + foundScreen = TRUE; + else for (i = 0; i < numUsed; i++) { ScrnInfoPtr pScrn; /* Allocate a ScrnInfoRec and claim the slot */ @@ -655,7 +664,9 @@ /* Initialize I2C bus - used by DDC if available */ if (pNv->i2cInit) { pNv->i2cInit(pScrn); +#if 0 ErrorF("I2C initialized on %p\n",pNv->I2C); +#endif } /* Read and output monitor info using DDC2 over I2C bus */ if (pNv->I2C) { @@ -698,6 +709,8 @@ const char *reqSym = NULL; const char *s; + if (flags & PROBE_DETECT) return FALSE; + DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "NVPreInit\n")); /* * Note: This function is only called once at server startup, and @@ -761,14 +774,12 @@ resRange vgaio[] = { {ResShrIoBlock,0x3B0,0x3BB}, {ResShrIoBlock,0x3C0,0x3DF}, _END }; - resRange vga1mem[] = { {ResShrMemBlock,0xA0000,0xAFFFF}, + resRange vgamem[] = { {ResShrMemBlock,0xA0000,0xAFFFF}, {ResShrMemBlock,0xB8000,0xBFFFF}, - _END }; - resRange vga2mem[] = { {ResShrMemBlock,0xB0000,0xB7FFF}, + {ResShrMemBlock,0xB0000,0xB7FFF}, _END }; xf86SetOperatingState(vgaio, pNv->pEnt->index, ResUnusedOpr); - xf86SetOperatingState(vga1mem, pNv->pEnt->index, ResDisableOpr); - xf86SetOperatingState(vga2mem, pNv->pEnt->index, ResDisableOpr); + xf86SetOperatingState(vgamem, pNv->pEnt->index, ResDisableOpr); } /* Set pScrn->monitor */ @@ -1144,8 +1155,8 @@ clockRanges->minClock = pNv->MinClock; clockRanges->maxClock = pNv->MaxClock; clockRanges->clockIndex = -1; /* programmable */ - clockRanges->interlaceAllowed = FALSE; - clockRanges->doubleScanAllowed = FALSE; + clockRanges->interlaceAllowed = TRUE; + clockRanges->doubleScanAllowed = TRUE; /* * xf86ValidateModes will check that the mode HTotal and VTotal values @@ -1205,7 +1216,8 @@ * XXX This should be taken into account in some way in the mode valdation * section. */ - + +#ifndef NV_USE_FB /* Load bpp-specific modules */ switch (pScrn->bitsPerPixel) { case 8: @@ -1229,7 +1241,15 @@ } xf86LoaderReqSymbols(reqSym, NULL); +#else + if (xf86LoadSubModule(pScrn, "fb") == NULL) { + NVFreeRec(pScrn); + return FALSE; + } + xf86LoaderReqSymLists(fbSymbols, NULL); +#endif + /* Load XAA if needed */ if (!pNv->NoAccel) { if (!xf86LoadSubModule(pScrn, "xaa")) { @@ -1534,6 +1554,7 @@ } switch (pScrn->bitsPerPixel) { +#ifndef NV_USE_FB case 8: ret = cfbScreenInit(pScreen, FBStart, width, height, pScrn->xDpi, pScrn->yDpi, displayWidth); @@ -1546,6 +1567,15 @@ ret = cfb32ScreenInit(pScreen, FBStart, width, height, pScrn->xDpi, pScrn->yDpi, displayWidth); break; +#else + case 8: + case 16: + case 32: + ret = fbScreenInit(pScreen, FBStart, pScrn->virtualX, + pScrn->virtualY, pScrn->xDpi, pScrn->yDpi, + displayWidth, pScrn->bitsPerPixel); + break; +#endif default: xf86DrvMsg(scrnIndex, X_ERROR, "Internal error: invalid bpp (%d) in NVScreenInit\n", @@ -1654,7 +1684,7 @@ XF86VideoAdaptorPtr *ptr; int n; - n = xf86XVListGenericAdaptors(&ptr); + n = xf86XVListGenericAdaptors(pScrn,&ptr); if (n) { xf86XVScreenInit(pScreen, ptr, n); } Index: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_include.h diff -u xc/programs/Xserver/hw/xfree86/drivers/nv/nv_include.h:1.6 xc/programs/Xserver/hw/xfree86/drivers/nv/nv_include.h:1.7 --- xc/programs/Xserver/hw/xfree86/drivers/nv/nv_include.h:1.6 Wed Mar 8 16:31:12 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/nv/nv_include.h Wed Mar 8 16:31:12 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_include.h,v 1.6 2000/02/08 17:19:10 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_include.h,v 1.7 2000/02/25 21:02:56 dawes Exp $ */ #ifndef __NV_INCLUDE_H__ #define __NV_INCLUDE_H__ @@ -8,6 +8,7 @@ #include "xf86_OSproc.h" #include "xf86Resources.h" #include "compiler.h" +#include "xf86_ansic.h" /* Drivers for PCI hardware need this */ #include "xf86PciInfo.h" @@ -26,6 +27,9 @@ #include "xf86DDC.h" #include "xf86RAC.h" + +#include "nv_const.h" +#ifndef NV_USE_FB /* * If using cfb, cfb.h is required. Select the others for the bpp values * the driver supports. @@ -36,6 +40,9 @@ #include "cfb16.h" #include "cfb24.h" #include "cfb32.h" +#else +#include "fb.h" +#endif #include "xaa.h" #include "xf86cmap.h" @@ -53,7 +60,6 @@ #include "region.h" #include "nv_local.h" -#include "nv_const.h" #include "nv_type.h" #include "nv_proto.h" Index: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_type.h diff -u xc/programs/Xserver/hw/xfree86/drivers/nv/nv_type.h:1.10 xc/programs/Xserver/hw/xfree86/drivers/nv/nv_type.h:1.11 --- xc/programs/Xserver/hw/xfree86/drivers/nv/nv_type.h:1.10 Wed Mar 8 16:31:12 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/nv/nv_type.h Wed Mar 8 16:31:12 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_type.h,v 1.10 2000/01/30 17:58:44 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_type.h,v 1.11 2000/02/25 21:02:57 dawes Exp $ */ #ifndef __NV_STRUCT_H__ #define __NV_STRUCT_H__ @@ -97,6 +97,9 @@ int Rotate; NVFBLayout CurrentLayout; GCPtr CurrentGC; +#ifdef NV_USE_FB + DrawablePtr CurrentDrawable; +#endif /* Cursor */ unsigned short curFg, curBg; unsigned int curImage[MAX_CURS*2]; Index: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_xaa.c diff -u xc/programs/Xserver/hw/xfree86/drivers/nv/nv_xaa.c:1.13 xc/programs/Xserver/hw/xfree86/drivers/nv/nv_xaa.c:1.14 --- xc/programs/Xserver/hw/xfree86/drivers/nv/nv_xaa.c:1.13 Wed Mar 8 16:31:12 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/nv/nv_xaa.c Wed Mar 8 16:31:12 2000 @@ -41,7 +41,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_xaa.c,v 1.13 2000/02/08 17:19:11 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_xaa.c,v 1.14 2000/02/25 21:02:57 dawes Exp $ */ #include "nv_include.h" #include "xaalocal.h" @@ -49,11 +49,7 @@ #include "nvreg.h" #include "nvvga.h" -#define PSZ 8 -#include "cfb.h" -#undef PSZ -#include "cfb16.h" -#include "cfb32.h" + #include "miline.h" /* @@ -505,6 +501,9 @@ XAAInfoRecPtr infoRec = GET_XAAINFORECPTR_FROM_GC(pGC); NVPtr pNv = NVPTR(infoRec->pScrn); pNv->CurrentGC = pGC; +#ifdef NV_USE_FB + pNv->CurrentDrawable = pDraw; +#endif if(infoRec->NeedToSync) while (pNv->riva.Busy(&pNv->riva)); XAAPolyLines(pDraw, pGC, mode, npt, pPts); @@ -520,6 +519,9 @@ XAAInfoRecPtr infoRec = GET_XAAINFORECPTR_FROM_GC(pGC); NVPtr pNv = NVPTR(infoRec->pScrn); pNv->CurrentGC = pGC; +#ifdef NV_USE_FB + pNv->CurrentDrawable = pDraw; +#endif if(infoRec->NeedToSync) while (pNv->riva.Busy(&pNv->riva)); XAAPolySegment(pDraw, pGC, nseg, pSeg); @@ -548,12 +550,14 @@ pNv->riva.Bitmap->UnclippedRectangle[0].WidthHeight = (w << 16) | h; } +#ifndef NV_USE_FB static void (*LineFuncs[4])() = { cfbBresS, cfb16BresS, NULL, cfb32BresS }; +#endif static void NVSubsequentSolidBresenhamLine( @@ -563,6 +567,7 @@ int e, int len, int octant ){ NVPtr pNv = NVPTR(pScrn); +#ifndef NV_USE_FB cfbPrivGCPtr devPriv; int Bpp = pScrn->bitsPerPixel >> 3; @@ -578,6 +583,13 @@ (octant & YDECREASING) ? -1 : 1, (octant & YMAJOR) ? Y_AXIS : X_AXIS, x, y, dmin + e, dmin, dmin - dmaj, len); +#else + fbBres(pNv->CurrentDrawable, pNv->CurrentGC, 0, + (octant & XDECREASING) ? -1 : 1, + (octant & YDECREASING) ? -1 : 1, + (octant & YMAJOR) ? Y_AXIS : X_AXIS, + x, y, dmin + e, dmin, -dmaj, len); +#endif } Index: xc/programs/Xserver/hw/xfree86/drivers/r128/Imakefile diff -u xc/programs/Xserver/hw/xfree86/drivers/r128/Imakefile:1.4 xc/programs/Xserver/hw/xfree86/drivers/r128/Imakefile:1.6 --- xc/programs/Xserver/hw/xfree86/drivers/r128/Imakefile:1.4 Wed Mar 8 16:31:12 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/r128/Imakefile Wed Mar 8 16:31:12 2000 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/r128/Imakefile,v 1.4 2000/02/14 19:20:49 dawes Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/r128/Imakefile,v 1.6 2000/03/03 01:05:40 dawes Exp $ XCOMM XCOMM This is the Imakefile for the ATI Rage 128 (r128) driver. XCOMM @@ -19,7 +19,7 @@ -I$(SERVERSRC)/fb \ -I$(SERVERSRC)/cfb -I$(XF86SRC)/xaa -I$(XF86SRC)/ramdac \ -I$(XF86SRC)/vgahw -I$(XF86SRC)/fbdevhw \ - -I$(XF86SRC)/ddc -I$(XF86SRC)/i2c \ + -I$(XF86SRC)/ddc -I$(XF86SRC)/i2c -I$(XF86OSSRC)/vbe \ -I$(XF86SRC)/int10 -I$(SERVERSRC)/Xext \ -I$(FONTINCSRC) -I$(SERVERSRC)/include -I$(XINCLUDESRC) \ -I$(EXTINCSRC) -I$(XF86SRC)/xf24_32bpp @@ -35,9 +35,10 @@ InstallObjectModule(r128,$(MODULEDIR),drivers) -XCOMM To install a man page remove the x and add these lines -XCOMM xCppManTarget(r128,) -XCOMM xInstallModuleManPage(r128) +#if !defined(XF86DriverSDK) +CppManTarget(r128,) +InstallModuleManPage(r128) +#endif DependTarget() Index: xc/programs/Xserver/hw/xfree86/drivers/r128/README diff -u xc/programs/Xserver/hw/xfree86/drivers/r128/README:1.1 xc/programs/Xserver/hw/xfree86/drivers/r128/README:1.3 --- xc/programs/Xserver/hw/xfree86/drivers/r128/README:1.1 Fri Nov 19 08:54:42 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/r128/README Wed Mar 8 16:31:12 2000 @@ -44,7 +44,8 @@ section of your XF86Config file are: Section "Device" - Identifier "r128" + Identifier "Rage 128" + Driver "r128" EndSection or let xf86config or XF86Setup do this for you. @@ -68,7 +69,7 @@ 7. Known Limitations - * None + * DGA is not supported yet 8. Authors @@ -110,5 +111,4 @@ http://www.suse.com -$XFree86: xc/programs/Xserver/hw/xfree86/drivers/r128/README,v 1.1 1999/11/19 13:54:42 hohndel Exp $ -$PI$ +$XFree86: xc/programs/Xserver/hw/xfree86/drivers/r128/README,v 1.3 2000/03/08 15:14:50 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/drivers/r128/r128.cpp diff -u /dev/null xc/programs/Xserver/hw/xfree86/drivers/r128/r128.cpp:1.3 --- /dev/null Wed Mar 8 16:31:12 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/r128/r128.cpp Wed Mar 8 16:31:12 2000 @@ -0,0 +1,70 @@ +.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/r128/r128.cpp,v 1.3 2000/03/06 22:59:26 dawes Exp $ +.TH R128 __drivermansuffix__ "Version 4.0" "XFree86" +.SH NAME +r128 \- ATI Rage 128 video driver +.SH SYNOPSIS +.B "Section ""Device""" +.br +.BI " Identifier """ devname """" +.br +.B " Driver ""r128""" +.br +\ \ ... +.br +.B EndSection +.SH DESCRIPTION +.B r128 +is an XFree86 driver for ATI Rage 128 based video cards. It contains +full support for 8, 15, 16 and 24 bit pixel depths, hardware +acceleration of drawing primitives, hardware cursor, video modes up to +1800x1440 @ 70Hz, doublescan modes (e.g., 320x200 and 320x240), gamma +correction at all pixel depths, a fully programming dot clock and robust +text mode restoration for VT switching. +.SH SUPPORTED HARDWARE +The +.B r128 +driver supports all ATI Rage 128 based video cards including the Rage +Fury AGP 32MB, the XPERT 128 AGP 16MB and the XPERT 99 AGP 8MB. +.SH CONFIGURATION DETAILS +Please refer to XF86Config(__filemansuffix__) for general configuration +details. This section only covers configuration details specific to this +driver. +.PP +The driver auto-detects all device information necessary to initialize +the card. However, if you have problems with auto-detection, you can +specify: +.PP +.RS 4 +VideoRam - in kilobytes +.br +MemBase - physical address of the linear framebuffer +.br +IOBase - physical address of the MMIO registers +.br +ChipID - PCI DEVICE ID +.RE +.PP +In addition, the following driver +.B Options +are supported: +.TP +.BI "Option ""SWcursor"" """ boolean """ +Selects software cursor. The default is +.B off. +.TP +.BI "Option ""NoAccel"" """ boolean """ +Enables or disables all hardware acceleration. The default is to +.B enable +hardware acceleration. +.TP +.BI "Option ""Dac6Bit"" """ boolean """ +Enables or disables the use of 6 bits per color component when in 8 bpp +mode (emulates VGA mode). By default, all 8 bits per color component +are used. The default is +.B off. +.SH "SEE ALSO" +XFree86(1), XF86Config(__filemansuffix__), xf86config(1), Xserver(1), X(1) +.SH AUTHORS +.nf +Rickard E. (Rik) Faith \fIfaith@precisioninsight.com\fP +Kevin E. Martin \fIkevin@precisioninsight.com\fP Index: xc/programs/Xserver/hw/xfree86/drivers/r128/r128.h diff -u xc/programs/Xserver/hw/xfree86/drivers/r128/r128.h:1.7 xc/programs/Xserver/hw/xfree86/drivers/r128/r128.h:1.8 --- xc/programs/Xserver/hw/xfree86/drivers/r128/r128.h:1.7 Wed Mar 8 16:31:13 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/r128/r128.h Wed Mar 8 16:31:13 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/r128/r128.h,v 1.7 2000/02/18 16:23:22 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/r128/r128.h,v 1.8 2000/02/23 04:47:18 martin Exp $ */ /************************************************************************** Copyright 1999 ATI Technologies Inc. and Precision Insight, Inc., @@ -31,7 +31,6 @@ * Rickard E. Faith <faith@precisioninsight.com> * Kevin E. Martin <kevin@precisioninsight.com> * - * $PI$ */ #ifndef _R128_H_ Index: xc/programs/Xserver/hw/xfree86/drivers/r128/r128_accel.c diff -u xc/programs/Xserver/hw/xfree86/drivers/r128/r128_accel.c:1.6 xc/programs/Xserver/hw/xfree86/drivers/r128/r128_accel.c:1.7 --- xc/programs/Xserver/hw/xfree86/drivers/r128/r128_accel.c:1.6 Wed Mar 8 16:31:13 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/r128/r128_accel.c Wed Mar 8 16:31:13 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/r128/r128_accel.c,v 1.6 2000/02/13 19:33:55 martin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/r128/r128_accel.c,v 1.7 2000/02/23 04:47:18 martin Exp $ */ /************************************************************************** Copyright 1999 ATI Technologies Inc. and Precision Insight, Inc., @@ -68,7 +68,6 @@ * method slows down common operations. Perhaps additional * XAA flags to use this only for some operations would help. * - * $PI$ */ #define R128_CLIPPING 1 Index: xc/programs/Xserver/hw/xfree86/drivers/r128/r128_cursor.c diff -u xc/programs/Xserver/hw/xfree86/drivers/r128/r128_cursor.c:1.4 xc/programs/Xserver/hw/xfree86/drivers/r128/r128_cursor.c:1.6 --- xc/programs/Xserver/hw/xfree86/drivers/r128/r128_cursor.c:1.4 Wed Mar 8 16:31:13 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/r128/r128_cursor.c Wed Mar 8 16:31:13 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/r128/r128_cursor.c,v 1.4 2000/02/13 19:33:56 martin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/r128/r128_cursor.c,v 1.6 2000/03/06 22:59:26 dawes Exp $ */ /************************************************************************** Copyright 1999 ATI Technologies Inc. and Precision Insight, Inc., @@ -40,7 +40,6 @@ * RAGE 128 Software Development Manual (Technical Reference Manual P/N * SDK-G04000 Rev. 0.01), ATI Technologies: June 1999. * - * $PI$ */ /* X and server generic header files */ @@ -66,11 +65,17 @@ #include "r128_reg.h" #if X_BYTE_ORDER == X_BIG_ENDIAN -#define P_SWAP( a , b ) \ - ((char *)a)[0] = ((char *)b)[3]; \ - ((char *)a)[1] = ((char *)b)[2]; \ - ((char *)a)[2] = ((char *)b)[1]; \ +#define P_SWAP32( a , b ) \ + ((char *)a)[0] = ((char *)b)[3]; \ + ((char *)a)[1] = ((char *)b)[2]; \ + ((char *)a)[2] = ((char *)b)[1]; \ ((char *)a)[3] = ((char *)b)[0] + +#define P_SWAP16( a , b ) \ + ((char *)a)[0] = ((char *)b)[1]; \ + ((char *)a)[1] = ((char *)b)[0]; \ + ((char *)a)[2] = ((char *)b)[3]; \ + ((char *)a)[3] = ((char *)b)[2] #endif @@ -118,23 +123,50 @@ save = INREG(R128_CRTC_GEN_CNTL); OUTREG(R128_CRTC_GEN_CNTL, save & ~R128_CRTC_CUR_EN); - for (y = 0; y < 64; y++) { + #if X_BYTE_ORDER == X_BIG_ENDIAN - P_SWAP(d,s); - d++; s++; - P_SWAP(d,s); - d++; s++; - P_SWAP(d,s); - d++; s++; - P_SWAP(d,s); - d++; s++; + switch(info->pixel_bytes) { + case 4: + case 3: + for (y = 0; y < 64; y++) { + P_SWAP32(d,s); + d++; s++; + P_SWAP32(d,s); + d++; s++; + P_SWAP32(d,s); + d++; s++; + P_SWAP32(d,s); + d++; s++; + } + break; + case 2: + for (y = 0; y < 64; y++) { + P_SWAP16(d,s); + d++; s++; + P_SWAP16(d,s); + d++; s++; + P_SWAP16(d,s); + d++; s++; + P_SWAP16(d,s); + d++; s++; + } + break; + default: + for (y = 0; y < 64; y++) { + *d++ = *s++; + *d++ = *s++; + *d++ = *s++; + *d++ = *s++; + } + } #else + for (y = 0; y < 64; y++) { *d++ = *s++; *d++ = *s++; *d++ = *s++; *d++ = *s++; -#endif } +#endif OUTREG(R128_CRTC_GEN_CNTL, save); } Index: xc/programs/Xserver/hw/xfree86/drivers/r128/r128_driver.c diff -u xc/programs/Xserver/hw/xfree86/drivers/r128/r128_driver.c:1.18 xc/programs/Xserver/hw/xfree86/drivers/r128/r128_driver.c:1.26 --- xc/programs/Xserver/hw/xfree86/drivers/r128/r128_driver.c:1.18 Wed Mar 8 16:31:13 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/r128/r128_driver.c Wed Mar 8 16:31:13 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/r128/r128_driver.c,v 1.18 2000/02/21 19:23:07 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/r128/r128_driver.c,v 1.26 2000/03/06 23:17:44 martin Exp $ */ /************************************************************************** Copyright 1999 ATI Technologies Inc. and Precision Insight, Inc., @@ -52,7 +52,6 @@ * overlay planes * DGA * - * $PI$ */ @@ -105,6 +104,9 @@ /* DDC support */ #include "xf86DDC.h" + /* VESA support */ +#include "vbe.h" + /* Driver data structures */ #include "r128.h" #include "r128_reg.h" @@ -235,6 +237,12 @@ NULL }; +static const char *vbeSymbols[] = { + "VBEInit", + "vbeDoEDID", + NULL +}; + #if 0 /* Not used until DDC is supported. */ static const char *ddcSymbols[] = { @@ -340,6 +348,7 @@ xf8_32bppSymbols, ramdacSymbols, fbdevHWSymbols, + vbeSymbols, 0 /* ddcsymbols */, 0 /* i2csymbols */, 0 /* shadowSymbols */, @@ -624,9 +633,6 @@ Bool foundScreen = FALSE; int i; - if (flags & PROBE_DETECTISA) return FALSE; - if (flags & PROBE_DETECTFBDEV) return FALSE; - if ((numDevSections = xf86MatchDevice(R128_NAME, &devSections)) <= 0) return FALSE; @@ -643,10 +649,9 @@ if (numUsed<=0) return FALSE; - if (flags & PROBE_DETECTPCI) - return TRUE; - - for (i = 0; i < numUsed; i++) { + if (flags & PROBE_DETECT) + foundScreen = TRUE; + else for (i = 0; i < numUsed; i++) { pEnt = xf86GetEntityInfo(usedChips[i]); if (pEnt->active) { @@ -1048,6 +1053,18 @@ return TRUE; } +extern xf86MonPtr ConfiguredMonitor; + +static void +R128ProbeDDC(ScrnInfoPtr pScrn, int index) +{ + vbeInfoPtr pVbe; + if (xf86LoadSubModule(pScrn, "vbe")) { + pVbe = VBEInit(NULL,index); + ConfiguredMonitor = vbeDoEDID(pVbe); + } +} + /* R128PreInit is called once at server startup. */ static Bool R128PreInit(ScrnInfoPtr pScrn, int flags) { @@ -1056,19 +1073,25 @@ R128TRACE(("R128PreInit\n")); if (pScrn->numEntities != 1) return FALSE; - if (!xf86LoadSubModule(pScrn, "vgahw")) return FALSE; - xf86LoaderReqSymLists(vgahwSymbols, NULL); - if (!vgaHWGetHWRec(pScrn)) return FALSE; - if (!R128GetRec(pScrn)) { - vgaHWFreeHWRec(pScrn); - return FALSE; - } + if (!R128GetRec(pScrn)) return FALSE; info = R128PTR(pScrn); info->pEnt = xf86GetEntityInfo(pScrn->entityList[0]); if (info->pEnt->location.type != BUS_PCI) goto fail; + if (flags & PROBE_DETECT) { + R128ProbeDDC(pScrn, info->pEnt->index); + return TRUE; + } + + if (!xf86LoadSubModule(pScrn, "vgahw")) return FALSE; + xf86LoaderReqSymLists(vgahwSymbols, NULL); + if (!vgaHWGetHWRec(pScrn)) { + R128FreeRec(pScrn); + return FALSE; + } + info->PciInfo = xf86GetPciInfoForEntity(info->pEnt->index); info->PciTag = pciTag(info->PciInfo->bus, info->PciInfo->device, @@ -1414,7 +1437,7 @@ XF86VideoAdaptorPtr *ptr; int n; - if ((n = xf86XVListGenericAdaptors(&ptr))) + if ((n = xf86XVListGenericAdaptors(pScrn, &ptr))) xf86XVScreenInit(pScreen, ptr, n); } #endif Index: xc/programs/Xserver/hw/xfree86/drivers/r128/r128_reg.h diff -u xc/programs/Xserver/hw/xfree86/drivers/r128/r128_reg.h:1.5 xc/programs/Xserver/hw/xfree86/drivers/r128/r128_reg.h:1.6 --- xc/programs/Xserver/hw/xfree86/drivers/r128/r128_reg.h:1.5 Wed Mar 8 16:31:13 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/r128/r128_reg.h Wed Mar 8 16:31:13 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/r128/r128_reg.h,v 1.5 2000/02/18 16:23:23 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/r128/r128_reg.h,v 1.6 2000/02/23 04:47:19 martin Exp $ */ /************************************************************************** Copyright 1999 ATI Technologies Inc. and Precision Insight, Inc., @@ -40,7 +40,6 @@ * RAGE 128 Software Development Manual (Technical Reference Manual P/N * SDK-G04000 Rev. 0.01), ATI Technologies: June 1999. * - * $PI$ */ #ifndef _R128_REG_H_ Index: xc/programs/Xserver/hw/xfree86/drivers/rendition/Imakefile diff -u xc/programs/Xserver/hw/xfree86/drivers/rendition/Imakefile:1.13 xc/programs/Xserver/hw/xfree86/drivers/rendition/Imakefile:1.15 --- xc/programs/Xserver/hw/xfree86/drivers/rendition/Imakefile:1.13 Wed Mar 8 16:31:13 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/rendition/Imakefile Wed Mar 8 16:31:13 2000 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/Imakefile,v 1.13 2000/01/23 04:44:30 dawes Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/Imakefile,v 1.15 2000/03/03 01:05:41 dawes Exp $ XCOMM XCOMM This is an Imakefile for the Rendition driver. @@ -8,10 +8,10 @@ #include <Server.tmpl> SRCS = rendition.c vboard.c vmodes.c vramdac.c v1krisc.c vvga.c \ - vmisc.c hwcursor.c vloaduc.c accel.c + vmisc.c hwcursor.c vloaduc.c accel.c rendition_shadow.c OBJS = rendition.o vboard.o vmodes.o vramdac.o v1krisc.o vvga.o \ - vmisc.o hwcursor.o vloaduc.o accel.o + vmisc.o hwcursor.o vloaduc.o accel.o rendition_shadow.o #if defined(XF86DriverSDK) INCLUDES = -I. -I../../include @@ -48,6 +48,11 @@ InstallNonExecFile(v10002d.uc,$(MODULEDIR)) InstallNonExecFile(v20002d.uc,$(MODULEDIR)) +#if !defined(XF86DriverSDK) +CppManTarget(rendition,) +InstallModuleManPage(rendition) +#endif + DependTarget() InstallDriverSDKNonExecFile(Imakefile,$(DRIVERSDKDIR)/drivers/rendition) @@ -55,6 +60,8 @@ InstallDriverSDKNonExecFile(rendition.c,$(DRIVERSDKDIR)/drivers/rendition) InstallDriverSDKNonExecFile(rendition.h,$(DRIVERSDKDIR)/drivers/rendition) InstallDriverSDKNonExecFile(rendition_options.h,$(DRIVERSDKDIR)/drivers/rendition) +InstallDriverSDKNonExecFile(rendition_shadow.c,$(DRIVERSDKDIR)/drivers/rendition) +InstallDriverSDKNonExecFile(rendition_shadow.h,$(DRIVERSDKDIR)/drivers/rendition) InstallDriverSDKNonExecFile(commonregs.h,$(DRIVERSDKDIR)/drivers/rendition) InstallDriverSDKNonExecFile(vmisc.h,$(DRIVERSDKDIR)/drivers/rendition) InstallDriverSDKNonExecFile(vmisc.c,$(DRIVERSDKDIR)/drivers/rendition) Index: xc/programs/Xserver/hw/xfree86/drivers/rendition/accelX.c diff -u xc/programs/Xserver/hw/xfree86/drivers/rendition/accelX.c:1.5 xc/programs/Xserver/hw/xfree86/drivers/rendition/accelX.c:1.6 --- xc/programs/Xserver/hw/xfree86/drivers/rendition/accelX.c:1.5 Wed Mar 8 16:31:13 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/rendition/accelX.c Wed Mar 8 16:31:13 2000 @@ -3,7 +3,8 @@ * * accelerator functions for X */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/accelX.c,v 1.5 2000/01/18 16:35:51 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/accelX.c,v 1.6 2000/02/25 21:02:59 dawes Exp $ */ + @@ -28,19 +29,21 @@ /* * defines */ +#if 1 /* Global imported during compile-time */ char MICROCODE_DIR [PATH_MAX] = MODULEDIR; +#endif -#define waitfifo(size) { int c=0; \ +#define waitfifo(size) do { int c=0; \ while ((c++<0xfffff)&&((v_in8(iob+FIFOINFREE)&0x1f)<size)) /* if(!(c%0xffff))ErrorF("#1# !0x%x! -- ",v_in8(iob+FIFOINFREE)) */; \ if (c >= 0xfffff) { \ ErrorF("RENDITION: Input fifo full (1) FIFO in == %d\n",v_in8(iob+FIFOINFREE)&0x1f); \ - /* return; */\ + return; \ } \ - } + } while (0) -#define waitfifo2(size, rv) { int c=0; \ +#define waitfifo2(size, rv) do { int c=0; \ while ((c++<0xfffff)&&((v_in8(iob+FIFOINFREE)&0x1f)<size)) /* if(!(c%0xffff))ErrorF("#2# !0x%x! -- ",v_in8(iob+FIFOINFREE)) */; \ if (c >= 0xfffff) { \ ErrorF("RENDITION: Input fifo full (2) FIFO in ==%d\n",v_in8(iob+FIFOINFREE)&0x1f); \ @@ -48,7 +51,7 @@ pRendition->board.accel=0; \ return rv; \ } \ - } + } while (0) #define P1(x) ((vu32)x) #define P2(x, y) ((((vu16)x)<<16)+((vu16)y)) @@ -110,7 +113,8 @@ * functions */ -void RENDITIONAccelPreInit(ScrnInfoPtr pScreenInfo) +void +RENDITIONAccelPreInit(ScrnInfoPtr pScreenInfo) { renditionPtr pRendition = RENDITIONPTR(pScreenInfo); int c; @@ -125,6 +129,13 @@ memset (pRendition->board.vmem_base,0,MC_SIZE); #endif +#if 0 + if (RENDITIONLoadUcode(pScreenInfo)){ + ErrorF ("RENDITION: AccelPreInit - Warning. Loading of microcode failed!!\n"); + } +#endif + +#if 1 /* Test */ if (V1000_DEVICE == pRendition->board.chip){ c=v_load_ucfile(pScreenInfo, strcat ((char *)MICROCODE_DIR,"v10002d.uc")); } @@ -139,25 +150,27 @@ } pRendition->board.ucode_entry=c; - RENDITIONSaveUcode(pScreenInfo); - pRendition->board.fbOffset += MC_SIZE; + ErrorF("UCode_Entry == 0x%x\n",pRendition->board.ucode_entry); +#endif #ifdef DEBUG + pRendition->board.fbOffset += MC_SIZE; ErrorF("RENDITION: Offset is now %d\n",pRendition->board.fbOffset); - ErrorF("RENDITION: RENDITIONAccelPreInit End \n"); sleep(2); #endif } -void RENDITIONAccelXAAInit(ScreenPtr pScreen) +void +RENDITIONAccelXAAInit(ScreenPtr pScreen) { ScrnInfoPtr pScreenInfo = xf86Screens[pScreen->myNum]; renditionPtr pRendition = RENDITIONPTR(pScreenInfo); XAAInfoRecPtr pXAAinfo; BoxRec AvailFBArea; + int c; #ifdef DEBUG ErrorF("RENDITION: RENDITIONAccelInit called\n"); @@ -197,28 +210,32 @@ RENDITIONSetupForSolidFill; pXAAinfo->SubsequentSolidFillRect= RENDITIONSubsequentSolidFillRect; -#endif -#if 0 /* line */ xf86AccelInfoRec.SubsequentTwoPointLine = RENDITIONSubsequentTwoPointLine; #endif /* #if 0 */ -#ifdef DEBUG - ErrorF("RENDITION: RENDITIONAccelInit restore\n"); - sleep(2); -#endif + if (RENDITIONLoadUcode(pScreenInfo)) return; - /* Restore u-code previously loaded in PreInit-stage */ - RENDITIONRestoreUcode(pScreenInfo); +#if 1 /* Testingcode */ + if (V1000_DEVICE == pRendition->board.chip){ + c=v_load_ucfile(pScreenInfo, MICROCODE_DIR); + } + else { + /* V2x00 chip */ + c=v_load_ucfile(pScreenInfo, MICROCODE_DIR); + } - if (RENDITIONLoadUcode(pScreenInfo)) return; + if (c == -1) { + ErrorF( "RENDITION: Microcode loading failed !!!\n"); + return; + } + pRendition->board.ucode_entry=c; +#endif if (RENDITIONInitUcode(pScreenInfo)) return; - RENDITIONSaveUcode(pScreenInfo); - v_check_csucode(pScreenInfo); /* the remaining code was copied from s3v_accel.c. * we need to check it if it is suitable <ml> */ @@ -257,7 +274,8 @@ -void RENDITIONAccelNone(ScrnInfoPtr pScreenInfo) +void +RENDITIONAccelNone(ScrnInfoPtr pScreenInfo) { renditionPtr pRendition = RENDITIONPTR(pScreenInfo); XAAInfoRecPtr pXAAinfo=pRendition->AccelInfoRec; @@ -282,7 +300,8 @@ -int RENDITIONLoadUcode(ScrnInfoPtr pScreenInfo) +int +RENDITIONLoadUcode(ScrnInfoPtr pScreenInfo) { renditionPtr pRendition = RENDITIONPTR(pScreenInfo); @@ -312,7 +331,8 @@ } -int RENDITIONInitUcode(ScrnInfoPtr pScreenInfo) +int +RENDITIONInitUcode(ScrnInfoPtr pScreenInfo) { renditionPtr pRendition = RENDITIONPTR(pScreenInfo); vu16 iob = pRendition->board.io_base; @@ -335,19 +355,27 @@ stride1=1; */ + ErrorF("#InitUcode(1)# FIFOIN_FREE 0x%x -- \n",v_in8(iob+FIFOINFREE)); + /* init the ucode */ /* ... and start accelerator */ v1k_flushicache(pScreenInfo); v1k_start(pScreenInfo, pRendition->board.csucode_base); + ErrorF("#InitUcode(2)# FIFOIN_FREE 0x%x -- \n",v_in8(iob+FIFOINFREE)); + v_out32(iob, 0); /* a0 - ucode init command */ v_out32(iob, 0); /* a1 - 1024 byte context store area */ v_out32(iob, 0); /* a2 */ v_out32(iob, pRendition->board.ucode_entry); + ErrorF("#InitUcode(3)# FIFOIN_FREE 0x%x -- \n",v_in8(iob+FIFOINFREE)); + waitfifo2(6, 1); + ErrorF("#InitUcode(4)# FIFOIN_FREE 0x%x -- \n",v_in8(iob+FIFOINFREE)); + v_out32(iob, CMD_SETUP); v_out32(iob, P2(pRendition->board.mode.virtualwidth, pRendition->board.mode.virtualheight)); @@ -360,6 +388,8 @@ v_out32(iob, (pRendition->board.mode.stride1<<12)| (pRendition->board.mode.stride0<<8)); + ErrorF("#InitUcode(5)# FIFOIN_FREE 0x%x -- \n",v_in8(iob+FIFOINFREE)); + #if 0 v_out32(iob+0x60, 129); ErrorF("RENDITION: PC at %x\n", v_in32(iob+0x64)); @@ -368,7 +398,8 @@ return 0; } -void RENDITIONRestoreUcode(ScrnInfoPtr pScreenInfo) +void +RENDITIONRestoreUcode(ScrnInfoPtr pScreenInfo) { renditionPtr pRendition = RENDITIONPTR(pScreenInfo); vu16 iob = pRendition->board.io_base; @@ -377,6 +408,10 @@ #ifdef DEBUG ErrorF("RENDITION: RENDITIONRestoreUcode called\n"); +#endif + +#ifdef DEBUG + ErrorF("Restore...1\n"); sleep(2); #endif @@ -406,13 +441,14 @@ -void RENDITIONSaveUcode(ScrnInfoPtr pScreenInfo) +void +RENDITIONSaveUcode(ScrnInfoPtr pScreenInfo) { renditionPtr pRendition = RENDITIONPTR(pScreenInfo); vu16 iob = pRendition->board.io_base; vu8 memend; -#if 1 +#ifdef DEBUG ErrorF("RENDITION: RENDITIONSaveUcode called\n"); sleep(2); #endif @@ -440,7 +476,8 @@ /* * synchronization -- wait for RISC and pixel engine to become idle */ -void RENDITIONSyncV1000(ScrnInfoPtr pScreenInfo) +void +RENDITIONSyncV1000(ScrnInfoPtr pScreenInfo) { renditionPtr pRendition = RENDITIONPTR(pScreenInfo); vu16 iob = pRendition->board.io_base; @@ -458,10 +495,11 @@ c=0; /* empty output fifo, i.e. if there is any valid data in the output fifo then read it */ + while ((c++<0xfffff) && ((v_in8(iob+FIFOOUTVALID)&0x7)>0)) - (void)v_in32(iob); + (void)v_in32(iob); -/* if(!(c%10000))ErrorF("#F1# !0x%x! -- ",v_in8(iob+FIFOOUTVALID)); */ +/* if(!(c%0xffff))ErrorF("#F1# !0x%x! -- ",v_in8(iob+FIFOOUTVALID)); */ if (c >= 0xfffff) { ErrorF("RENDITION: RISC synchronization failed (1) FIFO out == %d!\n", @@ -478,7 +516,8 @@ while ((c++<0xfffff) && ((v_in8(iob+FIFOOUTVALID)&0x7)>0)) (void)v_in32(iob); -/* if(!(c%10000))ErrorF("#F2# !0x%x! -- ",v_in8(iob+FIFOOUTVALID)); */ +/* if(!(c%0xffff))ErrorF("#F2# !0x%x! -- ",v_in8(iob+FIFOOUTVALID)); */ + if (c >= 0xfffff) { ErrorF("RENDITION: RISC synchronization failed (2) FIFO out == %d!\n", @@ -486,10 +525,6 @@ return; } - /* This assumes that there are data to read out! Check if correct */ - if (c < 0xffffff) - (void)v_in32(iob); - /* sync pixel engine using csucode -- I suppose this is quite slow <ml> */ v1k_stop(pScreenInfo); v1k_start(pScreenInfo, pRendition->board.csucode_base); @@ -499,7 +534,7 @@ while ((c++<0xfffff) && ((v_in8(iob+FIFOOUTVALID)&0x7)>0)) (void)v_in32(iob); -/* if(!(c%10000))ErrorF("#F3# !0x%x! -- ",v_in8(iob+FIFOOUTVALID)); */ +/* if(!(c%0xffff))ErrorF("#F3# !0x%x! -- ",v_in8(iob+FIFOOUTVALID)); */ if (c == 0xfffff) { ErrorF("RENDITION: Pixel engine synchronization failed FIFO out == %d!\n", @@ -533,7 +568,8 @@ /* * screen to screen copy */ -void RENDITIONSetupForScreenToScreenCopy(ScrnInfoPtr pScreenInfo, +void +RENDITIONSetupForScreenToScreenCopy(ScrnInfoPtr pScreenInfo, int xdir, int ydir, int rop, unsigned planemask, int trans_color) { @@ -548,7 +584,8 @@ pRendition->board.Rop=Rop2Rop[rop]; } -void RENDITIONSubsequentScreenToScreenCopy(ScrnInfoPtr pScreenInfo, +void +RENDITIONSubsequentScreenToScreenCopy(ScrnInfoPtr pScreenInfo, int srcX, int srcY, int dstX, int dstY, int w, int h) @@ -581,13 +618,14 @@ /* * solid filled rectangles */ -void RENDITIONSetupForSolidFill(ScrnInfoPtr pScreenInfo, +void +RENDITIONSetupForSolidFill(ScrnInfoPtr pScreenInfo, int color, int rop, unsigned planemask) { renditionPtr pRendition = RENDITIONPTR(pScreenInfo); -#if 1 /* def DEBUG */ +#ifdef DEBUG ErrorF("RENDITION: RENDITIONSetupForSolidFill called\n"); ErrorF("RENDITION: Rop is %x/%x\n", rop, Rop2Rop[rop]); #endif @@ -600,7 +638,8 @@ pRendition->board.Color|=(pRendition->board.Color<<8); } -void RENDITIONSubsequentSolidFillRect(ScrnInfoPtr pScreenInfo, +void +RENDITIONSubsequentSolidFillRect(ScrnInfoPtr pScreenInfo, int x, int y, int w, int h) { renditionPtr pRendition = RENDITIONPTR(pScreenInfo); @@ -629,7 +668,8 @@ * line */ -void RENDITIONSubsequentTwoPointLine(ScrnInfoPtr pScreenInfo, +void +RENDITIONSubsequentTwoPointLine(ScrnInfoPtr pScreenInfo, int x1, int y1, int x2, int y2, int bias) Index: xc/programs/Xserver/hw/xfree86/drivers/rendition/hwcursor.c diff -u xc/programs/Xserver/hw/xfree86/drivers/rendition/hwcursor.c:1.5 xc/programs/Xserver/hw/xfree86/drivers/rendition/hwcursor.c:1.6 --- xc/programs/Xserver/hw/xfree86/drivers/rendition/hwcursor.c:1.5 Wed Dec 29 22:38:34 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/rendition/hwcursor.c Wed Mar 8 16:31:13 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/hwcursor.c,v 1.5 1999/12/30 03:38:34 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/hwcursor.c,v 1.6 2000/02/25 21:03:00 dawes Exp $ */ /* * includes */ @@ -13,9 +13,7 @@ * defines */ -#ifdef DEBUG #undef DEBUG -#endif /* use a 64x64 cursor, 32x32 otherwise */ /* note that V2K supports only 64x64 size */ @@ -26,7 +24,7 @@ */ static Bool RENDITIONUseHWCursor(ScreenPtr pScreen, CursorPtr pCurs); -static void RENDITIONSetCursorColors(ScrnInfoPtr pScreenInfo, int fg, int bg); +static void RENDITIONSetCursorColors(ScrnInfoPtr pScreenInfo, int bg, int fg); static void RENDITIONSetCursorPosition(ScrnInfoPtr pScreenInfo, int x, int y); static void RENDITIONHideCursor(ScrnInfoPtr pScreenInfo); static void RENDITIONShowCursor(ScrnInfoPtr pScreenInfo); @@ -41,6 +39,10 @@ { renditionPtr pRendition = RENDITIONPTR(pScreenInfo); +#ifdef DEBUG + ErrorF ("Rendition: Debug RenditionHWCursorPreInit called\n"); +#endif + pRendition->board.hwcursor_used = TRUE; if (pRendition->board.chip==V1000_DEVICE){ /* V1K uses special space on BT-485 RAMDAC */ @@ -60,6 +62,10 @@ { renditionPtr pRendition = RENDITIONPTR(pScreenInfo); +#ifdef DEBUG + ErrorF ("Rendition: Debug RenditionHWCursorRelease called\n"); +#endif + xf86DestroyCursorInfoRec(pRendition->CursorInfoRec); pRendition->CursorInfoRec=NULL; } @@ -72,15 +78,15 @@ renditionPtr pRendition = RENDITIONPTR(pScreenInfo); xf86CursorInfoPtr infoPtr; +#ifdef DEBUG + ErrorF ("Rendition: Debug RenditionHWCursorInit called\n"); +#endif + infoPtr = xf86CreateCursorInfoRec(); if(!infoPtr) return FALSE; pRendition->CursorInfoRec = infoPtr; -#ifdef DEBUG - ErrorF( "RENDITION: RENDITIONHwCursorInit called\n"); -#endif - #ifdef BIGCURSOR infoPtr->MaxWidth=64; infoPtr->MaxHeight=64; @@ -113,6 +119,10 @@ static Bool RENDITIONUseHWCursor(ScreenPtr pScreen, CursorPtr pCurs) { +#ifdef DEBUG + ErrorF ("Rendition: Debug RENDITIONUseHWCursor called\n"); +#endif + /* have this return false for DoubleScan and Interlaced ? */ return TRUE; } @@ -128,7 +138,7 @@ #endif /* enable cursor - X11 mode */ - v_enablecursor(pScreenInfo, V_3COLORS, + v_enablecursor(pScreenInfo, V_3COLORS, #ifdef BIGCURSOR V_CURSOR64 #else @@ -171,7 +181,7 @@ ErrorF( "RENDITION: SetCursorColors(%x, %x) called\n", fg, bg); #endif - v_setcursorcolor(pScreenInfo, fg, bg); + v_setcursorcolor(pScreenInfo, bg, fg); } Index: xc/programs/Xserver/hw/xfree86/drivers/rendition/rendition.c diff -u xc/programs/Xserver/hw/xfree86/drivers/rendition/rendition.c:1.24 xc/programs/Xserver/hw/xfree86/drivers/rendition/rendition.c:1.30 --- xc/programs/Xserver/hw/xfree86/drivers/rendition/rendition.c:1.24 Wed Mar 8 16:31:14 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/rendition/rendition.c Wed Mar 8 16:31:14 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/rendition.c,v 1.24 2000/02/21 19:23:07 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/rendition.c,v 1.30 2000/03/06 23:54:12 dawes Exp $ */ /* * Copyright (C) 1998 The XFree86 Project, Inc. All Rights Reserved. * @@ -59,6 +59,8 @@ #include "vmodes.h" #include "vvga.h" #include "accel.h" +#include "vramdac.h" +#include "rendition_shadow.h" /* * defines @@ -97,6 +99,7 @@ static xf86MonPtr renditionDDC(ScrnInfoPtr pScreenInfo); static unsigned int renditionDDC1Read (ScrnInfoPtr pScreenInfo); +static void renditionLoadPalette(ScrnInfoPtr, int, int *, LOCO *, VisualPtr); /* * global data @@ -107,7 +110,9 @@ { OPTION_SW_CURSOR, "SW_Cursor", OPTV_BOOLEAN, {0}, FALSE }, { OPTION_NOACCEL, "NoAccel", OPTV_BOOLEAN, {0}, FALSE }, { OPTION_OVERCLOCK_MEM,"Overclock_Mem", OPTV_BOOLEAN, {0}, FALSE }, - { OPTION_NO_DDC, "NoDDC", OPTV_BOOLEAN, {0}, FALSE }, + { OPTION_NO_DDC, "NoDDC", OPTV_BOOLEAN, {0}, FALSE }, + { OPTION_SHADOW_FB, "ShadowFB", OPTV_BOOLEAN, {0}, FALSE }, + { OPTION_ROTATE, "Rotate", OPTV_ANYSTR, {0}, FALSE }, { -1, NULL, OPTV_NONE, {0}, FALSE } }; @@ -185,6 +190,13 @@ NULL }; +static const char *shadowfbSymbols[] = { + "ShadowFBInit", + NULL +}; + + + #ifdef XFree86LOADER /* Module loader interface */ @@ -218,7 +230,7 @@ xf86AddDriver(&RENDITION, Module, 0); LoaderRefSymLists(vgahwSymbols, ramdacSymbols, fbSymbols, xaaSymbols, ddcSymbols, int10Symbols, - NULL); + shadowfbSymbols, NULL); return (pointer)TRUE; } @@ -253,8 +265,7 @@ * functions */ -static -OptionInfoPtr +static OptionInfoPtr renditionAvailableOptions(int chipid, int busid) { return renditionOptions; @@ -283,9 +294,6 @@ int *usedChips; int c; - if (flags & PROBE_DETECTISA) return FALSE; - if (flags & PROBE_DETECTFBDEV) return FALSE; - /* Find the config file Device sections that match this * driver, and return if there are none. */ if ((numDevSections=xf86MatchDevice(RENDITION_NAME, &devSections)) <= 0) @@ -297,10 +305,15 @@ renditionChipsets, renditionPCIchipsets, devSections, numDevSections, drv, &usedChips); - if (numUsed > 0 && (flags & PROBE_DETECTPCI)) - return TRUE; - - for (c=0; c<numUsed; c++) { + if (devSections) + xfree(devSections); + devSections = NULL; + if (numUsed <= 0) + return FALSE; + + if (flags & PROBE_DETECT) + foundScreen = TRUE; + else for (c=0; c<numUsed; c++) { ScrnInfoPtr pScrn; /* Allocate a ScrnInfoRec and claim the slot */ pScrn=xf86AllocateScreen(drv, 0); @@ -320,10 +333,8 @@ xf86ConfigActivePciEntity(pScrn, usedChips[c], renditionPCIchipsets, NULL, NULL, NULL, NULL, NULL); } - if (numUsed > 0) - xfree(usedChips); } - xfree(devSections); + xfree(usedChips); return foundScreen; } @@ -451,7 +462,9 @@ const char *Sym; vgaHWPtr pvgaHW; renditionPtr pRendition; + char *in_string; + if (flags & PROBE_DETECT) return FALSE; #ifdef DEBUG ErrorF("Rendition: renditionPreInit() called\n"); @@ -550,7 +563,7 @@ /* determine colour weights */ pScreenInfo->rgbBits=8; - + if (pScreenInfo->depth > 8) { rgb defaultWeight = {0, 0, 0}; rgb defaultMask = {0, 0, 0}; @@ -654,8 +667,54 @@ } xf86LoaderReqSymLists(vgahwSymbols, NULL); + + pRendition->board.shadowfb=TRUE; + + if ((in_string = xf86GetOptValString(renditionOptions, OPTION_ROTATE))) { + if(!xf86NameCmp(in_string, "CW")) { + /* accel is disabled below for shadowFB */ + pRendition->board.shadowfb = TRUE; + pRendition->board.rotate = 1; + xf86DrvMsg(pScreenInfo->scrnIndex, X_CONFIG, + "Rotating screen clockwise - acceleration disabled\n"); + } else if(!xf86NameCmp(in_string, "CCW")) { + pRendition->board.shadowfb = TRUE; + pRendition->board.rotate = -1; + xf86DrvMsg(pScreenInfo->scrnIndex, X_CONFIG, "Rotating screen " + "counter clockwise - acceleration disabled\n"); + } else { + xf86DrvMsg(pScreenInfo->scrnIndex, X_CONFIG, "\"%s\" is not a valid" + "value for Option \"Rotate\"\n", in_string); + xf86DrvMsg(pScreenInfo->scrnIndex, X_INFO, + "Valid options are \"CW\" or \"CCW\"\n"); + } + } + xf86MarkOptionUsedByName(renditionOptions,"Rotate"); + + if (xf86ReturnOptValBool(renditionOptions, OPTION_SHADOW_FB,1)|| + pRendition->board.rotate) { + if (!xf86LoadSubModule(pScreenInfo, "shadowfb")) { + xf86DrvMsg(pScreenInfo->scrnIndex, X_WARNING, + "Oops, \"ShadowFB\" module loading failed, disabling ShadowFB!\n"); + } + else{ + xf86LoaderReqSymLists(shadowfbSymbols, NULL); + pRendition->board.shadowfb=TRUE; + xf86DrvMsg(pScreenInfo->scrnIndex, X_INFO, + "Using \"Shadow Framebuffer\"\n"); + } + } + else { + pRendition->board.shadowfb=FALSE; + xf86DrvMsg(pScreenInfo->scrnIndex, X_CONFIG, + "\"Shadow Framebuffer\" disabled\n"); + } + xf86MarkOptionUsedByName(renditionOptions,"ShadowFB"); + + /* Load Ramdac module if needed */ - if (!xf86ReturnOptValBool(renditionOptions, OPTION_SW_CURSOR,0)){ + if (!xf86ReturnOptValBool(renditionOptions, OPTION_SW_CURSOR,0) && + !pRendition->board.rotate){ if (!xf86LoadSubModule(pScreenInfo, "ramdac")) { return FALSE; } @@ -665,9 +724,10 @@ #if USE_ACCEL /* Load XAA if needed */ - if (!xf86ReturnOptValBool(renditionOptions, OPTION_NOACCEL,0)) { + if (!xf86ReturnOptValBool(renditionOptions, OPTION_NOACCEL,0) && + !pRendition->board.rotate) { if (!xf86LoadSubModule(pScreenInfo, "xaa")) { - return FALSE; + return FALSE; } xf86LoaderReqSymLists(xaaSymbols, NULL); } @@ -763,16 +823,23 @@ pScreenInfo->chipset = (char *)renditionChipsets[0].name; if(!xf86ReturnOptValBool(renditionOptions, OPTION_SW_CURSOR,0)){ - /* Do preemtive things for HW cursor */ - RenditionHWCursorPreInit(pScreenInfo); - } - else { - ErrorF("RENDITION: Software cursor selected\n"); + if(!pRendition->board.rotate) + /* Do preemtive things for HW cursor */ + RenditionHWCursorPreInit(pScreenInfo); + else{ + xf86DrvMsg(pScreenInfo->scrnIndex, X_WARNING, + "Hardware cursor not supported on rotated screen\n"); + xf86DrvMsg(pScreenInfo->scrnIndex, X_INFO, + "Software cursor activated\n"); + } } + else + xf86DrvMsg(pScreenInfo->scrnIndex, X_CONFIG, + "Software cursor selected\n"); renditionUnmapMem(pScreenInfo); -#if USE_ACCEL +#ifdef DEBUG ErrorF("PreInit OK...!!!!\n"); sleep(2); #endif @@ -785,13 +852,13 @@ static void renditionSave(ScrnInfoPtr pScreenInfo) { -#if USE_ACCEL +#ifdef DEBUG ErrorF("Save...!!!!\n"); sleep(1); #endif vgaHWSave(pScreenInfo, &VGAHWPTR(pScreenInfo)->SavedReg,VGA_SR_ALL); -#if USE_ACCEL +#ifdef DEBUG ErrorF("Save OK...!!!!\n"); sleep(1); #endif @@ -812,7 +879,6 @@ vgaHWProtect(pScreenInfo, FALSE); v_setmode(pScreenInfo, &RENDITIONPTR(pScreenInfo)->mode); - #ifdef DEBUG ErrorF("Restore OK...!!!!\n"); sleep(1); @@ -922,9 +988,7 @@ #ifdef DEBUG ErrorF("RENDITION: renditionEnterGraphics() called\n"); - - ErrorF("Entergraphics...!!!!\n"); - sleep(1); + sleep(2); #endif /* Map VGA aperture */ @@ -1031,11 +1095,12 @@ renditionScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) { ScrnInfoPtr pScreenInfo = xf86Screens[scrnIndex]; - + renditionPtr pRendition = RENDITIONPTR(pScreenInfo); renditionPtr prenditionPriv; Bool Inited = FALSE; - unsigned char *FBBase=RENDITIONPTR(pScreenInfo)->board.vmem_base; + unsigned char *FBBase; VisualPtr visual; + int displayWidth,width,height; vgaHWPtr pvgaHW; @@ -1061,29 +1126,50 @@ if (!miSetVisualTypes(pScreenInfo->depth, miGetDefaultVisualMask(pScreenInfo->depth), pScreenInfo->rgbBits, pScreenInfo->defaultVisual)) - return FALSE; + return FALSE; + + if (pRendition->board.rotate) { + height = pScreenInfo->virtualX; + width = pScreenInfo->virtualY; + } else { + width = pScreenInfo->virtualX; + height = pScreenInfo->virtualY; + } + + if(pRendition->board.shadowfb) { + pRendition->board.shadowPitch = BitmapBytePad(pScreenInfo->bitsPerPixel * width); + pRendition->board.shadowPtr = xalloc(pRendition->board.shadowPitch * height); + displayWidth = pRendition->board.shadowPitch / + (pScreenInfo->bitsPerPixel >> 3); + FBBase = pRendition->board.shadowPtr; + } else { + pRendition->board.shadowPtr = NULL; + FBBase = pRendition->board.vmem_base+prenditionPriv->board.fbOffset; + displayWidth=pScreenInfo->displayWidth; + } + /* initialise the framebuffer */ switch (pScreenInfo->bitsPerPixel) { case 8: - Inited = cfbScreenInit(pScreen, FBBase+prenditionPriv->board.fbOffset, - pScreenInfo->virtualX, pScreenInfo->virtualY, - pScreenInfo->xDpi, pScreenInfo->yDpi, - pScreenInfo->displayWidth); + Inited = cfbScreenInit(pScreen, FBBase, + width, height, + pScreenInfo->xDpi, pScreenInfo->yDpi, + displayWidth); break; case 16: - Inited = cfb16ScreenInit(pScreen, FBBase+prenditionPriv->board.fbOffset, - pScreenInfo->virtualX, pScreenInfo->virtualY, - pScreenInfo->xDpi, pScreenInfo->yDpi, - pScreenInfo->displayWidth); - break; + Inited = cfb16ScreenInit(pScreen, FBBase, + width, height, + pScreenInfo->xDpi, pScreenInfo->yDpi, + displayWidth); + break; case 32: - Inited = cfb32ScreenInit(pScreen, FBBase+prenditionPriv->board.fbOffset, - pScreenInfo->virtualX, pScreenInfo->virtualY, - pScreenInfo->xDpi, pScreenInfo->yDpi, - pScreenInfo->displayWidth); - break; + Inited = cfb32ScreenInit(pScreen, FBBase, + width, height, + pScreenInfo->xDpi, pScreenInfo->yDpi, + displayWidth); + break; default: xf86DrvMsg(scrnIndex, X_ERROR, "Internal error: invalid bpp (%d) in renditionScreenInit\n", @@ -1125,16 +1211,8 @@ visual->greenMask=0x7e0; visual->blueMask=0x1f; } -/* - visual->offsetRed=0; - visual->offsetGreen=5; - visual->offsetBlue=11; - visual->redMask=0x1f; - visual->greenMask=0x7e0; - visual->blueMask=0xf800; -*/ } - } + } } xf86SetBlackWhitePixels(pScreen); @@ -1151,23 +1229,49 @@ /* Initialise cursor functions */ miDCInitialize(pScreen, xf86GetPointerScreenFuncs()); - if(!xf86ReturnOptValBool(renditionOptions, OPTION_SW_CURSOR,0)){ + if(!xf86ReturnOptValBool(renditionOptions, OPTION_SW_CURSOR,0)&& + !pRendition->board.rotate){ /* Initialise HW cursor */ - ErrorF("RENDITION: Hardware cursor used\n"); if(!RenditionHWCursorInit(scrnIndex, pScreen)){ - ErrorF("Hardware Cursor initalization failed!!\n"); + xf86DrvMsg(pScreenInfo->scrnIndex, X_ERROR, + "Hardware Cursor initalization failed!!\n"); } } - else { - ErrorF("RENDITION: Software cursor selected\n"); + + if (pRendition->board.shadowfb) { + RefreshAreaFuncPtr refreshArea = renditionRefreshArea; + + if(pRendition->board.rotate) { + if (!pRendition->board.PointerMoved) { + pRendition->board.PointerMoved = pScreenInfo->PointerMoved; + pScreenInfo->PointerMoved = renditionPointerMoved; + } + + switch(pScreenInfo->bitsPerPixel) { + case 8: refreshArea = renditionRefreshArea8; break; + case 16: refreshArea = renditionRefreshArea16; break; + case 24: refreshArea = renditionRefreshArea24; break; + case 32: refreshArea = renditionRefreshArea32; break; + } + } + + ShadowFBInit(pScreen, refreshArea); } /* Setup default colourmap */ - Inited = miCreateDefColormap(pScreen); + if (!miCreateDefColormap(pScreen)) + return FALSE; /* Try the new code based on the new colormap layer */ if (pScreenInfo->depth > 1) - vgaHWHandleColormaps(pScreen); + if (!xf86HandleColormaps(pScreen, 256, pScreenInfo->rgbBits, + renditionLoadPalette, NULL, + CMAP_LOAD_EVEN_IF_OFFSCREEN| + CMAP_RELOAD_ON_MODE_SWITCH)) { + xf86DrvMsg(pScreenInfo->scrnIndex, X_ERROR, "Colormap initialization failed\n"); + return FALSE; + } + #ifdef DPMSExtension xf86DPMSInit(pScreen, renditionDPMSSet, 0); @@ -1268,12 +1372,13 @@ return MODE_OK; } -static Bool renditionMapMem(ScrnInfoPtr pScreenInfo) +static Bool +renditionMapMem(ScrnInfoPtr pScreenInfo) { Bool WriteCombine; int mapOption; -#ifdef DEBUG0 +#ifdef DEBUG ErrorF("Mapping ...\n"); ErrorF("%d %d %d %x %d\n", pScreenInfo->scrnIndex, VIDMEM_FRAMEBUFFER, RENDITIONPTR(pScreenInfo)->pcitag, @@ -1314,9 +1419,10 @@ #endif } -static Bool renditionUnmapMem(ScrnInfoPtr pScreenInfo) +static Bool +renditionUnmapMem(ScrnInfoPtr pScreenInfo) { -#ifdef DEBUG0 +#ifdef DEBUG ErrorF("Unmapping ...\n"); #endif xf86UnMapVidMem(pScreenInfo->scrnIndex, @@ -1327,7 +1433,17 @@ #endif } -static xf86MonPtr renditionDDC (ScrnInfoPtr pScreenInfo) +static void +renditionLoadPalette(ScrnInfoPtr pScreenInfo, int numColors, + int *indices, LOCO *colors, + VisualPtr pVisual) +{ + v_setpalette(pScreenInfo, numColors, indices, colors, pVisual); +} + + +static xf86MonPtr +renditionDDC (ScrnInfoPtr pScreenInfo) { renditionPtr pRendition = RENDITIONPTR(pScreenInfo); vu16 iob=pRendition->board.io_base; @@ -1359,7 +1475,8 @@ return MonInfo; } -static unsigned int renditionDDC1Read (ScrnInfoPtr pScreenInfo) +static unsigned int +renditionDDC1Read (ScrnInfoPtr pScreenInfo) { renditionPtr pRendition = RENDITIONPTR(pScreenInfo); vu16 iob=pRendition->board.io_base; Index: xc/programs/Xserver/hw/xfree86/drivers/rendition/rendition.cpp diff -u /dev/null xc/programs/Xserver/hw/xfree86/drivers/rendition/rendition.cpp:1.2 --- /dev/null Wed Mar 8 16:31:14 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/rendition/rendition.cpp Wed Mar 8 16:31:14 2000 @@ -0,0 +1,112 @@ +.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/rendition.cpp,v 1.2 2000/03/05 16:59:14 dawes Exp $ +.TH RENDITION __drivermansuffix__ "Version 4.0" "XFree86" +.SH NAME +rendition \- Rendition video driver +.SH SYNOPSIS +.B "Section ""Device""" +.br +.BI " Identifier """ devname """" +.br +.B " Driver ""rendition""" +.br +\ \ ... +.br +.B EndSection +.SH DESCRIPTION +.B rendition +is an XFree86 driver for Rendition/Micron based video cards. The driver +supports following framebuffer depths: 8, 15 (Verite V1000 only), 16 +and 24. Acceleration and multi-head configurations are +not supported yet, but are work in progress. +.SH SUPPORTED HARDWARE +The +.B rendition +driver supports PCI and AGP video cards based on the following Rendition/Micron chips: +.TP 12 +.B V1000 +Verite V1000 based cards. +.TP 12 +.B V2100 +Verite V2100 based cards. Diamond Stealth II S220 is the only known such card. +.TP 12 +.B V2200 +Verite V2200 based cards. +.SH CONFIGURATION DETAILS +Please refer to XF86Config(__filemansuffix__) for general configuration +details. This section only covers configuration details specific to this +driver. +.PP +The driver auto-detects the chipset type, but the following +.B ChipSet +names may optionally be specified in the config file +.B """Device""" +section, and will override the auto-detection: +.PP +.RS 4 +"v1000", "v2100", "v2200". +.RE +.PP +The driver will auto-detect the amount of video memory present for all +chips. If the amount of memory is detected incorrectly, the actual amount +of video memory should be specified with a +.B VideoRam +entry in the config file +.B """Device""" +section. +.PP +The following driver +.B Options +are supported: +.TP +.BI "Option ""SWCursor"" """ boolean """ +Disables use of the hardware cursor. Default: use HW-cursor. +.TP +.BI "Option ""OverclockMem"" """ boolean """ +Increases the Mem/Sys clock to 125MHz/60MHz from standard 110MHz/50MHz. +Default: Not overclocked. +.TP +.BI "Option ""DacSpeed"" """ MHz """ +Run the memory at a higher clock. Useful on some cards with display glitches +at higher resolutions. But adds the risk to damage the hardware. Use with +caution. +.TP +.BI "Option ""FramebufferWC"" """ boolean """ +If writecombine is disabled in BIOS, and you add this option in configuration +file, then the driver will try to request writecombined access to the +framebuffer. This can drastically increase the performance on unaccelerated +server. Requires that "MTRR"-support is compiled into the OS-kernel. +Default: Disabled for V1000, enabled for V2100/V2200. +.TP +.BI "Option ""NoDDC"" """ boolean """ +Disable probing of DDC-information from your monitor. This information is not +used yet and is only there for informational purposes. This might change +before final XFree86 4.0 release. Safe to disable if you experience problems +during startup of X-server. +Default: Probe DDC. +.TP +.BI "Option ""ShadowFB"" """ boolean """ +If this option is enabled, the driver will cause the CPU to do each drawing +operation first into a shadow frame buffer in system virtual memory and then +copy the result into video memory. If this option is not active, the CPU will +draw directly into video memory. Enabling this option is beneficial for those +systems where reading from video memory is, on average, slower than the +corresponding read/modify/write operation in system virtual memory. This is +normally the case for PCI or AGP adapters, and, so, this option is enabled by +default unless acceleration is enabled. +Default: Enabled unless acceleration is used. +.TP +.BI "Option ""Rotate"" ""CW"" +.TP +.BI "Option ""Rotate"" ""CCW"" +Rotate the display clockwise or counterclockwise. This mode is unaccelerated. +Default: no rotation. +.TP +.SH "Notes" +For the moment the driver defaults to not request write-combine for any chipset +as there has been indications of problems with it. Use +.B "Option ""MTRR""" +to let the driver request write-combining of memory access on the videoboard. +.SH "SEE ALSO" +XFree86(1), XF86Config(__filemansuffix__), xf86config(1), Xserver(1), X(1) +.SH AUTHORS +Authors include: Marc Langenbach, Dejan Ilic Index: xc/programs/Xserver/hw/xfree86/drivers/rendition/rendition.h diff -u xc/programs/Xserver/hw/xfree86/drivers/rendition/rendition.h:1.4 xc/programs/Xserver/hw/xfree86/drivers/rendition/rendition.h:1.5 --- xc/programs/Xserver/hw/xfree86/drivers/rendition/rendition.h:1.4 Mon Dec 13 22:12:09 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/rendition/rendition.h Wed Mar 8 16:31:14 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/rendition.h,v 1.4 1999/12/14 03:12:09 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/rendition.h,v 1.5 2000/02/25 21:03:02 dawes Exp $ */ #ifndef __RENDITION_H__ #define __RENDITION_H__ @@ -77,6 +77,7 @@ /* DDC support */ #include "xf86DDC.h" + #include "commonregs.h" /* end of __RENDITION_H__ */ Index: xc/programs/Xserver/hw/xfree86/drivers/rendition/rendition_options.h diff -u xc/programs/Xserver/hw/xfree86/drivers/rendition/rendition_options.h:1.3 xc/programs/Xserver/hw/xfree86/drivers/rendition/rendition_options.h:1.4 --- xc/programs/Xserver/hw/xfree86/drivers/rendition/rendition_options.h:1.3 Tue Nov 2 11:16:42 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/rendition/rendition_options.h Wed Mar 8 16:31:14 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/rendition_options.h,v 1.3 1999/11/02 16:16:42 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/rendition_options.h,v 1.4 2000/03/01 00:25:24 dawes Exp $ */ #ifndef __RENDITION_OPTION_H__ #define __RENDITION_OPTION_H__ @@ -9,7 +9,9 @@ OPTION_SW_CURSOR, OPTION_NOACCEL, OPTION_OVERCLOCK_MEM, - OPTION_NO_DDC + OPTION_NO_DDC, + OPTION_SHADOW_FB, + OPTION_ROTATE } renditionOpts; @@ -24,6 +26,8 @@ { OPTION_NOACCEL, "NoAccel", OPTV_BOOLEAN, {0}, FALSE }, { OPTION_OVERCLOCK_MEM,"Overclock_Mem", OPTV_BOOLEAN, {0}, FALSE }, { OPTION_NO_DDC, "NoDDC", OPTV_BOOLEAN, {0}, FALSE }, + { OPTION_SHADOW_FB, "ShadowFB", OPTV_BOOLEAN, {0}, FALSE }, + { OPTION_ROTATE, "Rotate", OPTV_ANYSTR, {0}, FALSE }, { -1, NULL, OPTV_NONE, {0}, FALSE } }; /*********************************/ Index: xc/programs/Xserver/hw/xfree86/drivers/rendition/rendition_shadow.c diff -u /dev/null xc/programs/Xserver/hw/xfree86/drivers/rendition/rendition_shadow.c:1.1 --- /dev/null Wed Mar 8 16:31:14 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/rendition/rendition_shadow.c Wed Mar 8 16:31:14 2000 @@ -0,0 +1,256 @@ +/* + * file rendition_shadow.h + * + * The functions used by ShadowFB + * Based on code written by Mark Vojkovich <markv@valinux.com> + */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/rendition_shadow.c,v 1.1 2000/03/01 00:25:25 dawes Exp $ */ + +#include "rendition.h" +#include "vtypes.h" +#include "rendition_shadow.h" +#include "shadowfb.h" +#include "servermd.h" + + + +void +renditionRefreshArea(ScrnInfoPtr pScreenInfo, int num, BoxPtr pbox) +{ + renditionPtr pRendition = RENDITIONPTR(pScreenInfo); + int width, height, Bpp, FBPitch; + unsigned char *src, *dst; + + Bpp = pScreenInfo->bitsPerPixel >> 3; + FBPitch = BitmapBytePad(pScreenInfo->displayWidth * + pScreenInfo->bitsPerPixel); + + while(num--) { + width = (pbox->x2 - pbox->x1) * Bpp; + height = pbox->y2 - pbox->y1; + src = pRendition->board.shadowPtr + + (pbox->y1 * pRendition->board.shadowPitch) + (pbox->x1 * Bpp); + + dst = pRendition->board.vmem_base+pRendition->board.fbOffset + + (pbox->y1 * FBPitch) + (pbox->x1 * Bpp); + + while(height--) { + memcpy(dst, src, width); + dst += FBPitch; + src += pRendition->board.shadowPitch; + } + + pbox++; + } +} + +void +renditionPointerMoved(int index, int x, int y) +{ + ScrnInfoPtr pScreenInfo = xf86Screens[index]; + renditionPtr pRendition = RENDITIONPTR(pScreenInfo); + int newX, newY; + + if(pRendition->board.rotate == 1) { + newX = pScreenInfo->pScreen->height - y - 1; + newY = x; + } else { + newX = y; + newY = pScreenInfo->pScreen->width - x - 1; + } + + (*pRendition->board.PointerMoved)(index, newX, newY); +} + +void +renditionRefreshArea8(ScrnInfoPtr pScreenInfo, int num, BoxPtr pbox) +{ + renditionPtr pRendition = RENDITIONPTR(pScreenInfo); + int count, width, height, y1, y2, dstPitch, srcPitch; + CARD8 *dstPtr, *srcPtr, *src; + CARD32 *dst; + + dstPitch = pScreenInfo->displayWidth; + srcPitch = -pRendition->board.rotate * pRendition->board.shadowPitch; + + while(num--) { + width = pbox->x2 - pbox->x1; + y1 = pbox->y1 & ~3; + y2 = (pbox->y2 + 3) & ~3; + height = (y2 - y1) >> 2; /* in dwords */ + + if(pRendition->board.rotate == 1) { + dstPtr = pRendition->board.vmem_base+pRendition->board.fbOffset + + (pbox->x1 * dstPitch) + pScreenInfo->virtualX - y2; + srcPtr = pRendition->board.shadowPtr + ((1 - y2) * srcPitch) + pbox->x1; + } else { + dstPtr = pRendition->board.vmem_base+pRendition->board.fbOffset + + ((pScreenInfo->virtualY - pbox->x2) * dstPitch) + y1; + srcPtr = pRendition->board.shadowPtr + (y1 * srcPitch) + pbox->x2 - 1; + } + + while(width--) { + src = srcPtr; + dst = (CARD32*)dstPtr; + count = height; + while(count--) { + *(dst++) = src[0] | (src[srcPitch] << 8) | + (src[srcPitch * 2] << 16) | + (src[srcPitch * 3] << 24); + src += srcPitch * 4; + } + srcPtr += pRendition->board.rotate; + dstPtr += dstPitch; + } + + pbox++; + } +} + + +void +renditionRefreshArea16(ScrnInfoPtr pScreenInfo, int num, BoxPtr pbox) +{ + renditionPtr pRendition = RENDITIONPTR(pScreenInfo); + int count, width, height, y1, y2, dstPitch, srcPitch; + CARD16 *dstPtr, *srcPtr, *src; + CARD32 *dst; + + dstPitch = pScreenInfo->displayWidth; + srcPitch = -pRendition->board.rotate * pRendition->board.shadowPitch >> 1; + + while(num--) { + width = pbox->x2 - pbox->x1; + y1 = pbox->y1 & ~1; + y2 = (pbox->y2 + 1) & ~1; + height = (y2 - y1) >> 1; /* in dwords */ + + if(pRendition->board.rotate == 1) { + dstPtr = (CARD16*)(pRendition->board.vmem_base+ + pRendition->board.fbOffset) + + (pbox->x1 * dstPitch) + pScreenInfo->virtualX - y2; + srcPtr = (CARD16*)pRendition->board.shadowPtr + + ((1 - y2) * srcPitch) + pbox->x1; + } else { + dstPtr = (CARD16*)(pRendition->board.vmem_base+ + pRendition->board.fbOffset) + + ((pScreenInfo->virtualY - pbox->x2) * dstPitch) + y1; + srcPtr = (CARD16*)pRendition->board.shadowPtr + + (y1 * srcPitch) + pbox->x2 - 1; + } + + while(width--) { + src = srcPtr; + dst = (CARD32*)dstPtr; + count = height; + while(count--) { + *(dst++) = src[0] | (src[srcPitch] << 16); + src += srcPitch * 2; + } + srcPtr += pRendition->board.rotate; + dstPtr += dstPitch; + } + + pbox++; + } +} + + +/* this one could be faster */ +void +renditionRefreshArea24(ScrnInfoPtr pScreenInfo, int num, BoxPtr pbox) +{ + renditionPtr pRendition = RENDITIONPTR(pScreenInfo); + int count, width, height, y1, y2, dstPitch, srcPitch; + CARD8 *dstPtr, *srcPtr, *src; + CARD32 *dst; + + dstPitch = BitmapBytePad(pScreenInfo->displayWidth * 24); + srcPitch = -pRendition->board.rotate * pRendition->board.shadowPitch; + + while(num--) { + width = pbox->x2 - pbox->x1; + y1 = pbox->y1 & ~3; + y2 = (pbox->y2 + 3) & ~3; + height = (y2 - y1) >> 2; /* blocks of 3 dwords */ + + if(pRendition->board.rotate == 1) { + dstPtr = pRendition->board.vmem_base+pRendition->board.fbOffset+ + (pbox->x1 * dstPitch) + ((pScreenInfo->virtualX - y2) * 3); + srcPtr = pRendition->board.shadowPtr + ((1 - y2) * srcPitch) + + (pbox->x1 * 3); + } else { + dstPtr = pRendition->board.vmem_base+pRendition->board.fbOffset + + ((pScreenInfo->virtualY - pbox->x2) * dstPitch) + (y1 * 3); + srcPtr = pRendition->board.shadowPtr + (y1 * srcPitch) + + (pbox->x2 * 3) - 3; + } + + while(width--) { + src = srcPtr; + dst = (CARD32*)dstPtr; + count = height; + while(count--) { + dst[0] = src[0] | (src[1] << 8) | (src[2] << 16) | + (src[srcPitch] << 24); + dst[1] = src[srcPitch + 1] | (src[srcPitch + 2] << 8) | + (src[srcPitch * 2] << 16) | + (src[(srcPitch * 2) + 1] << 24); + dst[2] = src[(srcPitch * 2) + 2] | (src[srcPitch * 3] << 8) | + (src[(srcPitch * 3) + 1] << 16) | + (src[(srcPitch * 3) + 2] << 24); + dst += 3; + src += srcPitch * 4; + } + srcPtr += pRendition->board.rotate * 3; + dstPtr += dstPitch; + } + + pbox++; + } +} + +void +renditionRefreshArea32(ScrnInfoPtr pScreenInfo, int num, BoxPtr pbox) +{ + renditionPtr pRendition = RENDITIONPTR(pScreenInfo); + int count, width, height, dstPitch, srcPitch; + CARD32 *dstPtr, *srcPtr, *src, *dst; + + dstPitch = pScreenInfo->displayWidth; + srcPitch = -pRendition->board.rotate * pRendition->board.shadowPitch >> 2; + + while(num--) { + width = pbox->x2 - pbox->x1; + height = pbox->y2 - pbox->y1; + + if(pRendition->board.rotate == 1) { + dstPtr = (CARD32*)(pRendition->board.vmem_base+ + pRendition->board.fbOffset) + + (pbox->x1 * dstPitch) + pScreenInfo->virtualX - pbox->y2; + srcPtr = (CARD32*)pRendition->board.shadowPtr + + ((1 - pbox->y2) * srcPitch) + pbox->x1; + } else { + dstPtr = (CARD32*)(pRendition->board.vmem_base+ + pRendition->board.fbOffset) + + ((pScreenInfo->virtualY - pbox->x2) * dstPitch) + pbox->y1; + srcPtr = (CARD32*)pRendition->board.shadowPtr + + (pbox->y1 * srcPitch) + pbox->x2 - 1; + } + + while(width--) { + src = srcPtr; + dst = dstPtr; + count = height; + while(count--) { + *(dst++) = *src; + src += srcPitch; + } + srcPtr += pRendition->board.rotate; + dstPtr += dstPitch; + } + + pbox++; + } +} + Index: xc/programs/Xserver/hw/xfree86/drivers/rendition/rendition_shadow.h diff -u /dev/null xc/programs/Xserver/hw/xfree86/drivers/rendition/rendition_shadow.h:1.1 --- /dev/null Wed Mar 8 16:31:14 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/rendition/rendition_shadow.h Wed Mar 8 16:31:14 2000 @@ -0,0 +1,23 @@ +/* + * file rendition_shadow.h + * + * headfile for rendition_shadow.c + */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/rendition_shadow.h,v 1.1 2000/03/01 00:25:25 dawes Exp $ */ + +#ifndef __RENDITION_SHADOW_H__ +#define __RENDITION_SHADOW_H__ + +void renditionRefreshArea(ScrnInfoPtr pScrn, int num, BoxPtr pbox); +void renditionRefreshArea8(ScrnInfoPtr pScrn, int num, BoxPtr pbox); +void renditionRefreshArea16(ScrnInfoPtr pScrn, int num, BoxPtr pbox); +void renditionRefreshArea24(ScrnInfoPtr pScrn, int num, BoxPtr pbox); +void renditionRefreshArea32(ScrnInfoPtr pScrn, int num, BoxPtr pbox); +void renditionPointerMoved(int index, int x, int y); + + +#endif + +/* + * end of file rendition_shadow.h + */ Index: xc/programs/Xserver/hw/xfree86/drivers/rendition/v1krisc.c diff -u xc/programs/Xserver/hw/xfree86/drivers/rendition/v1krisc.c:1.4 xc/programs/Xserver/hw/xfree86/drivers/rendition/v1krisc.c:1.5 --- xc/programs/Xserver/hw/xfree86/drivers/rendition/v1krisc.c:1.4 Fri Nov 19 08:54:45 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/rendition/v1krisc.c Wed Mar 8 16:31:14 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/v1krisc.c,v 1.4 1999/11/19 13:54:45 hohndel Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/v1krisc.c,v 1.5 2000/02/25 21:03:03 dawes Exp $ */ /* * */ @@ -104,7 +104,8 @@ * * Start the RISC with its PC set to |pc|. */ -void v1k_start(ScrnInfoPtr pScreenInfo, vu32 pc) +void +v1k_start(ScrnInfoPtr pScreenInfo, vu32 pc) { renditionPtr pRendition = RENDITIONPTR(pScreenInfo); vu16 io_base=pRendition->board.io_base; @@ -126,7 +127,8 @@ * * Let the RISC do its work. */ -void v1k_continue(ScrnInfoPtr pScreenInfo) +void +v1k_continue(ScrnInfoPtr pScreenInfo) { renditionPtr pRendition = RENDITIONPTR(pScreenInfo); @@ -140,7 +142,8 @@ * * Stop the RISC. */ -void v1k_stop(ScrnInfoPtr pScreenInfo) +void +v1k_stop(ScrnInfoPtr pScreenInfo) { renditionPtr pRendition = RENDITIONPTR(pScreenInfo); vu8 debugreg, statusreg; @@ -192,7 +195,8 @@ * Returns with Icache on, also flushes Pixel engine line buffers * in the Dcache. */ -void v1k_flushicache(ScrnInfoPtr pScreenInfo) +void +v1k_flushicache(ScrnInfoPtr pScreenInfo) { renditionPtr pRendition = RENDITIONPTR(pScreenInfo); vu32 c, p1, p2; @@ -240,7 +244,8 @@ * * Soft Reset RISC. */ -void v1k_softreset(ScrnInfoPtr pScreenInfo) +void +v1k_softreset(ScrnInfoPtr pScreenInfo) { renditionPtr pRendition = RENDITIONPTR(pScreenInfo); vu16 io_base=pRendition->board.io_base; @@ -292,7 +297,8 @@ * * Loop on IO read until expected data is read or V_MAX_POLLS is reached. */ -static void v_iopoll(vu16 port, vu32 data, vu32 mask) +static void +v_iopoll(vu16 port, vu32 data, vu32 mask) { vu32 c, d; @@ -311,7 +317,8 @@ * * Loop on IO read until expected data is read or V_MAX_POLLS is reached. */ -static void v_iopoll8(vu16 port, vu8 data, vu8 mask) +static void +v_iopoll8(vu16 port, vu8 data, vu8 mask) { vu32 c; vu8 d; @@ -331,7 +338,8 @@ * * Reads data from register file. */ -static vu32 readRF(vu16 io_base, vu8 index) +static vu32 +readRF(vu16 io_base, vu8 index) { vu32 data, instr; vu8 debug, stateindex; @@ -368,7 +376,8 @@ * * Set RF register, being careful on how to set regs below 64. */ -static void writeRF(vu16 io_base, vu8 index, vu32 data) +static void +writeRF(vu16 io_base, vu8 index, vu32 data) { vu8 special=0; @@ -406,7 +415,8 @@ * * NOTE: Assumes RISC is in hold mode. */ -static vu32 risc_readmem(vu16 io_base, vu32 addr, vu8 read_type) +static vu32 +risc_readmem(vu16 io_base, vu32 addr, vu8 read_type) { vu32 data; @@ -433,7 +443,8 @@ * * NOTE: Assumes RISC is in hold mode. */ -static void risc_writemem(vu16 io_base, vu32 addr, vu32 data, vu8 write_type) +static void +risc_writemem(vu16 io_base, vu32 addr, vu32 data, vu8 write_type) { writeRF(io_base, RISC_RA, addr); /* point to memory */ writeRF(io_base, RISC_FP, data); /* set data */ @@ -452,7 +463,8 @@ * * Single step the RISC. NOTE: Do not force instruction into RISCIR! */ -static void risc_step(vu16 io_base, vu32 count) +static void +risc_step(vu16 io_base, vu32 count) { vu32 c, d; vu8 debugreg; @@ -479,7 +491,8 @@ * * Single step RISC; force instruction; assumes RISC held. */ -static void risc_forcestep(vu16 io_base, vu32 instruction) +static void +risc_forcestep(vu16 io_base, vu32 instruction) { vu32 c; vu8 debugreg, stateindex; @@ -509,7 +522,8 @@ * * Turn off hold bit. */ -static void risc_continue(vu16 io_base) +static void +risc_continue(vu16 io_base) { vu8 debugreg; Index: xc/programs/Xserver/hw/xfree86/drivers/rendition/vboard.c diff -u xc/programs/Xserver/hw/xfree86/drivers/rendition/vboard.c:1.8 xc/programs/Xserver/hw/xfree86/drivers/rendition/vboard.c:1.9 --- xc/programs/Xserver/hw/xfree86/drivers/rendition/vboard.c:1.8 Mon Dec 13 22:12:10 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/rendition/vboard.c Wed Mar 8 16:31:14 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/vboard.c,v 1.8 1999/12/14 03:12:10 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/vboard.c,v 1.9 2000/02/25 21:03:03 dawes Exp $ */ /* * includes */ @@ -17,6 +17,12 @@ #include "cscode.h" +#if 0 +/* Global imported during compile-time */ +char MICROCODE_DIR [PATH_MAX] = MODULEDIR; +#endif + + /* * local function prototypes */ @@ -25,7 +31,8 @@ /* * functions */ -int v_initboard(ScrnInfoPtr pScreenInfo) +int +v_initboard(ScrnInfoPtr pScreenInfo) { renditionPtr pRendition = RENDITIONPTR(pScreenInfo); @@ -34,13 +41,13 @@ vu32 offset; vu8 memendian; int c,pc; - + /* write "monitor" program to memory */ v1k_stop(pScreenInfo); pRendition->board.csucode_base=0x800; memendian=v_in8(iob+MEMENDIAN); v_out8(iob+MEMENDIAN, MEMENDIAN_NO); - + /* Note that CS ucode must wait on address in csucode_base * when initialized for later context switch code to work. */ @@ -76,18 +83,35 @@ ErrorF ("RENDITION: V_INITBOARD -- PC != CSUCODEBASE\n"); ErrorF ("RENDITION: PC == 0x%x -- CSU == 0x%x\n",pc,pRendition->board.csucode_base); } - + /* reset memory endian */ v_out8(iob+MEMENDIAN, memendian); - /* upload the u-code here */ +#if 0 + if (V1000_DEVICE == pRendition->board.chip){ + c=v_load_ucfile(pScreenInfo, xf86strcat ((char *)MICROCODE_DIR,"v10002d.uc")); + } + else { + /* V2x00 chip */ + c=v_load_ucfile(pScreenInfo, xf86strcat ((char *)MICROCODE_DIR,"v20002d.uc")); + } + + if (c == -1) { + ErrorF( "RENDITION: Microcode loading failed !!!\n"); + return 1; + } + + pRendition->board.ucode_entry=c; + ErrorF("UCode_Entry == 0x%x\n",pRendition->board.ucode_entry); +#endif /* Everything's OK */ return 0; } -int v_resetboard(ScrnInfoPtr pScreenInfo) +int +v_resetboard(ScrnInfoPtr pScreenInfo) { /* renditionPtr pRendition = RENDITIONPTR(pScreenInfo); @@ -98,7 +122,8 @@ -int v_getmemorysize(ScrnInfoPtr pScreenInfo) +int +v_getmemorysize(ScrnInfoPtr pScreenInfo) { renditionPtr pRendition = RENDITIONPTR(pScreenInfo); Index: xc/programs/Xserver/hw/xfree86/drivers/rendition/vboard.h diff -u xc/programs/Xserver/hw/xfree86/drivers/rendition/vboard.h:1.4 xc/programs/Xserver/hw/xfree86/drivers/rendition/vboard.h:1.5 --- xc/programs/Xserver/hw/xfree86/drivers/rendition/vboard.h:1.4 Mon Dec 13 22:12:10 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/rendition/vboard.h Wed Mar 8 16:31:14 2000 @@ -1,4 +1,5 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/vboard.h,v 1.4 1999/12/14 03:12:10 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/vboard.h,v 1.5 2000/02/25 21:03:04 dawes Exp $ */ + /* * vboard.h * Index: xc/programs/Xserver/hw/xfree86/drivers/rendition/vloaduc.c diff -u xc/programs/Xserver/hw/xfree86/drivers/rendition/vloaduc.c:1.9 xc/programs/Xserver/hw/xfree86/drivers/rendition/vloaduc.c:1.10 --- xc/programs/Xserver/hw/xfree86/drivers/rendition/vloaduc.c:1.9 Wed Mar 8 16:31:14 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/rendition/vloaduc.c Wed Mar 8 16:31:14 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/vloaduc.c,v 1.9 2000/01/18 16:35:52 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/vloaduc.c,v 1.10 2000/02/25 21:03:04 dawes Exp $ */ /* * includes */ @@ -10,6 +10,7 @@ #include "vos.h" #include "elf.h" + /* * defines */ @@ -29,8 +30,10 @@ /* * local function prototypes */ -void loadSection2board(ScrnInfoPtr pScreenInfo, int fd, Elf32_Shdr *shdr); -void loadSegment2board(ScrnInfoPtr pScreenInfo, int fd, Elf32_Phdr *phdr); +static void loadSection2board(ScrnInfoPtr pScreenInfo, int fd, + Elf32_Shdr *shdr); +static void loadSegment2board(ScrnInfoPtr pScreenInfo, int fd, + Elf32_Phdr *phdr); static int seek_and_read_hdr(int fd, void *ptr, long int offset, int size, int cnt); static void mmve(ScrnInfoPtr pScreenInfo, vu32 size, vu8 *data, vu32 phys_addr); @@ -49,7 +52,8 @@ * * Returns the program's entry point, on error -1; */ -int v_load_ucfile(ScrnInfoPtr pScreenInfo, char *file_name) +int +v_load_ucfile(ScrnInfoPtr pScreenInfo, char *file_name) { /* renditionPtr pRendition = RENDITIONPTR(pScreenInfo); */ @@ -60,7 +64,7 @@ Elf32_Shdr *pshdr, *orig_pshdr=NULL; Elf32_Ehdr ehdr ; -#ifdef DEBUG +#if 1 /* DEBUG */ ErrorF("RENDITION: Loading microcode %s\n", file_name); #endif @@ -85,7 +89,6 @@ /* read in the program header(s) */ sz=SW16(ehdr.e_phentsize); num=SW16(ehdr.e_phnum); - if (0!=sz && 0!=num) { orig_pphdr=pphdr=(Elf32_Phdr *)xalloc(sz*num); if (!pphdr) { @@ -155,7 +158,8 @@ * local functions */ -void loadSection2board(ScrnInfoPtr pScreenInfo, int fd, Elf32_Shdr *shdr) +static void +loadSection2board(ScrnInfoPtr pScreenInfo, int fd, Elf32_Shdr *shdr) { /* renditionPtr pRendition = RENDITIONPTR(pScreenInfo); */ ErrorF("vlib: loadSection2board not implemented yet!\n"); @@ -163,7 +167,8 @@ -void loadSegment2board(ScrnInfoPtr pScreenInfo, int fd, Elf32_Phdr *phdr) +static void +loadSegment2board(ScrnInfoPtr pScreenInfo, int fd, Elf32_Phdr *phdr) { /* renditionPtr pRendition = RENDITIONPTR(pScreenInfo); */ vu8 *data; @@ -194,7 +199,8 @@ -static int seek_and_read_hdr(int fd, void *ptr, long int offset, int size, +static int +seek_and_read_hdr(int fd, void *ptr, long int offset, int size, int cnt) { if (lseek(fd, offset, SEEK_SET) != offset) @@ -208,7 +214,8 @@ -static void mmve(ScrnInfoPtr pScreenInfo, vu32 size, vu8 *data, vu32 phys_addr) +static void +mmve(ScrnInfoPtr pScreenInfo, vu32 size, vu8 *data, vu32 phys_addr) { renditionPtr pRendition = RENDITIONPTR(pScreenInfo); vu8 memend; @@ -226,8 +233,8 @@ while (size > 0) { v_write_memory32(vmb, phys_addr, *dataout); - phys_addr+=4; - dataout++; + phys_addr+=4; + dataout++; size-=4; } Index: xc/programs/Xserver/hw/xfree86/drivers/rendition/vmisc.c diff -u xc/programs/Xserver/hw/xfree86/drivers/rendition/vmisc.c:1.2 xc/programs/Xserver/hw/xfree86/drivers/rendition/vmisc.c:1.3 --- xc/programs/Xserver/hw/xfree86/drivers/rendition/vmisc.c:1.2 Fri Nov 19 09:59:18 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/rendition/vmisc.c Wed Mar 8 16:31:14 2000 @@ -1,22 +1,35 @@ /* Misc routines used elsewhere in driver */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/vmisc.c,v 1.2 1999/11/19 14:59:18 hohndel Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/vmisc.c,v 1.3 2000/02/25 21:03:05 dawes Exp $ */ #include "rendition.h" #include "vtypes.h" #include "vos.h" #include "vmisc.h" +#undef DEBUG + /* block copy from and to the card */ -void v_bustomem_cpy(vu8 *dst, vu8 *src, vu32 num) +void +v_bustomem_cpy(vu8 *dst, vu8 *src, vu32 num) { int i; + +#ifdef DEBUG + ErrorF ("Rendition: DEBUG v_bustomem_cpy called\n"); +#endif for (i=0; i<num; i++) dst[i] = v_read_memory8(src, i); } -void v_memtobus_cpy(vu8 *dst, vu8 *src, vu32 num) +void +v_memtobus_cpy(vu8 *dst, vu8 *src, vu32 num) { int i; + +#ifdef DEBUG + ErrorF ("Rendition: DEBUG v_memtobus_cpy called\n"); +#endif + for (i=0; i<num; i++) v_write_memory8(dst, i, src[i]); } Index: xc/programs/Xserver/hw/xfree86/drivers/rendition/vmodes.c diff -u xc/programs/Xserver/hw/xfree86/drivers/rendition/vmodes.c:1.6 xc/programs/Xserver/hw/xfree86/drivers/rendition/vmodes.c:1.7 --- xc/programs/Xserver/hw/xfree86/drivers/rendition/vmodes.c:1.6 Fri Nov 19 08:54:47 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/rendition/vmodes.c Wed Mar 8 16:31:14 2000 @@ -1,12 +1,10 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/vmodes.c,v 1.6 1999/11/19 13:54:47 hohndel Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/vmodes.c,v 1.7 2000/02/25 21:03:05 dawes Exp $ */ /* * file vmodes.c * * Routines that handle mode setting. */ - - /* * includes */ @@ -20,6 +18,10 @@ #include "v2kregs.h" #include "vvga.h" + +#undef DEBUG + + /* Options data */ #include "rendition_options.h" extern OptionInfoRec renditionOptions[]; @@ -202,13 +204,18 @@ * functions */ -int v_setmodefixed(ScrnInfoPtr pScreenInfo) +int +v_setmodefixed(ScrnInfoPtr pScreenInfo) { renditionPtr pRendition = RENDITIONPTR(pScreenInfo); int iob=pRendition->board.io_base; int tmp; +#ifdef DEBUG + ErrorF ("Rendition: Debug v_setmodefixed called\n"); +#endif + #ifdef SAVEVGA v_savetextmode(pRendition->board); #endif @@ -247,7 +254,8 @@ pRendition->board.mode.fifosize=128; pRendition->board.init=1; - v_setframebase(pScreenInfo, 0); + (*pScreenInfo->AdjustFrame)(pScreenInfo->scrnIndex, + pScreenInfo->frameX0, pScreenInfo->frameY0, 0); v_out32(iob+CRTCCTL, CTL(0, 0, 0) |V_PIXFMT_565 @@ -261,7 +269,8 @@ -int v_setmode(ScrnInfoPtr pScreenInfo, struct v_modeinfo_t *mode) +int +v_setmode(ScrnInfoPtr pScreenInfo, struct v_modeinfo_t *mode) { renditionPtr pRendition = RENDITIONPTR(pScreenInfo); @@ -269,6 +278,10 @@ int doubleclock=0; int M, N, P; int iob=pRendition->board.io_base; + +#ifdef DEBUG + ErrorF ("Rendition: Debug v_setmode called\n"); +#endif /* switching to native mode */ v_out8(iob+MODEREG, NATIVE_MODE|VESA_MODE); @@ -344,7 +357,8 @@ pRendition->board.mode.virtualwidth=pRendition->board.mode.screenwidth; pRendition->board.init=1; - v_setframebase(pScreenInfo, 0); + (*pScreenInfo->AdjustFrame)(pScreenInfo->scrnIndex, + pScreenInfo->frameX0, pScreenInfo->frameY0, 0); /* Need to fix up syncs */ @@ -356,14 +370,18 @@ |CRTCCTL_VSYNCENABLE |CRTCCTL_VIDEOENABLE); +#ifdef DEBUG ErrorF ("Interlace mode -> %d\n", mode->flags); + xf86sleep(10);ErrorF ("...Exit SetMode...\n"); +#endif return 0; } -void v_setframebase(ScrnInfoPtr pScreenInfo, vu32 framebase) +void +v_setframebase(ScrnInfoPtr pScreenInfo, vu32 framebase) { renditionPtr pRendition = RENDITIONPTR(pScreenInfo); @@ -376,7 +394,7 @@ int fifo_size=pRendition->board.mode.fifosize; #ifdef DEBUG - ErrorF( "w=%d v=%d b=%d f=%d\n", + ErrorF( "Rendition: Debug v_setframebase w=%d v=%d b=%d f=%d\n", swidth, vwidth, bytespp, fifo_size); #endif @@ -412,7 +430,8 @@ -int v_getstride(ScrnInfoPtr pScreenInfo, int *width, vu16 *stride0, vu16 *stride1) +int +v_getstride(ScrnInfoPtr pScreenInfo, int *width, vu16 *stride0, vu16 *stride1) { renditionPtr pRendition = RENDITIONPTR(pScreenInfo); int bytesperline; @@ -449,7 +468,8 @@ * * Set PLL clock to desired frequency for the V1000. */ -void set_PLL(vu16 iob, vu32 value) +void +set_PLL(vu16 iob, vu32 value) { vu32 ulD; int b; @@ -474,7 +494,8 @@ * of a second and the function is only called * O(1) times during program execution. */ -static double V1000CalcClock(double target, int *M, int *N, int *P) +static double +V1000CalcClock(double target, int *M, int *N, int *P) { double mindiff = 1e10; double vco, pcf, diff, freq; @@ -514,7 +535,8 @@ -static double V2200CalcClock(double target, int *m, int *n, int *p) +static double +V2200CalcClock(double target, int *m, int *n, int *p) { double mindiff = 1e10; double vco, pcf, diff, freq; Index: xc/programs/Xserver/hw/xfree86/drivers/rendition/vos.h diff -u xc/programs/Xserver/hw/xfree86/drivers/rendition/vos.h:1.6 xc/programs/Xserver/hw/xfree86/drivers/rendition/vos.h:1.7 --- xc/programs/Xserver/hw/xfree86/drivers/rendition/vos.h:1.6 Fri Dec 3 14:17:34 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/rendition/vos.h Wed Mar 8 16:31:15 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/vos.h,v 1.6 1999/12/03 19:17:34 eich Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/vos.h,v 1.7 2000/02/25 21:03:06 dawes Exp $ */ /* * file vos.h * @@ -46,7 +46,6 @@ #define v_write_memory8(base, offset, data) MMIO_OUT8(base, offset, data) /* the rest of it */ - void v_enableio(void); void v_disableio(void); vu8 *v_mapmemory(vu8 *membase, vu32 size); Index: xc/programs/Xserver/hw/xfree86/drivers/rendition/vramdac.c diff -u xc/programs/Xserver/hw/xfree86/drivers/rendition/vramdac.c:1.8 xc/programs/Xserver/hw/xfree86/drivers/rendition/vramdac.c:1.9 --- xc/programs/Xserver/hw/xfree86/drivers/rendition/vramdac.c:1.8 Wed Mar 8 16:31:15 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/rendition/vramdac.c Wed Mar 8 16:31:15 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/vramdac.c,v 1.8 2000/01/18 16:35:53 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/vramdac.c,v 1.9 2000/02/25 21:03:06 dawes Exp $ */ /* * includes */ @@ -13,6 +13,8 @@ * defines */ +#undef DEBUG + /* directly accessable RAMDAC registers */ #define BT485_WRITE_ADDR 0x00 #define BT485_RAMDAC_DATA 0x01 @@ -115,12 +117,17 @@ * the corresponding field in the v_board_t struct is set), the clock doubling * is turned on. */ -int v_initdac(ScrnInfoPtr pScreenInfo, vu8 bpp, vu8 doubleclock) +int +v_initdac(ScrnInfoPtr pScreenInfo, vu8 bpp, vu8 doubleclock) { renditionPtr pRendition = RENDITIONPTR(pScreenInfo); vu16 iob=pRendition->board.io_base+RAMDACBASEADDR; vu8 cmd3_data=0; +#ifdef DEBUG + ErrorF ("Rendition: Debug v_initdac called\n"); +#endif + if (doubleclock) cmd3_data|=BT485_CLOCK_DOUBLER; @@ -133,8 +140,7 @@ case 8: v_out8(iob+BT485_COMMAND_REG_0, BT485_CR0_EXTENDED_REG_ACCESS | - BT485_CR0_8_BIT_DAC); - + BT485_CR0_8_BIT_DAC); v_out8(iob+BT485_COMMAND_REG_1, BT485_CR1_8BPP | BT485_CR1_PIXEL_PORT_AB); v_out8(iob+BT485_COMMAND_REG_2, BT485_PIXEL_INPUT_GATE | @@ -202,7 +208,8 @@ * or X-window-like cursor. Valid values are defined in vramdac.h. * */ -void v_enablecursor(ScrnInfoPtr pScreenInfo, int type, int size) +void +v_enablecursor(ScrnInfoPtr pScreenInfo, int type, int size) { renditionPtr pRendition = RENDITIONPTR(pScreenInfo); @@ -213,6 +220,10 @@ vu16 iob=pRendition->board.io_base+RAMDACBASEADDR; #ifdef DEBUG + ErrorF ("Rendition: Debug v_enablecursor called type=0x%x\n",type); +#endif + +#if 0 /* ensure proper ranges */ size=1; /* Enforce 64x64 Cursor */ #endif @@ -226,6 +237,11 @@ if (type) Cursor_size=(size ? 64 : 32); + +#ifdef DEBUG + ErrorF ("Rendition: Debug v_enablecursor Exit\n"); +#endif + } @@ -238,7 +254,8 @@ * this routine with x=0x0 and y=0x0. * */ -void v_movecursor(ScrnInfoPtr pScreenInfo, vu16 x, vu16 y, vu8 xo, vu8 yo) +void +v_movecursor(ScrnInfoPtr pScreenInfo, vu16 x, vu16 y, vu8 xo, vu8 yo) { renditionPtr pRendition = RENDITIONPTR(pScreenInfo); vu16 iob=pRendition->board.io_base+RAMDACBASEADDR; @@ -255,32 +272,43 @@ /* - * void v_setcursorcolor(ScrnInfoPtr pScreenInfo, vu32 fg, vu32 bg) + * void v_setcursorcolor(ScrnInfoPtr pScreenInfo, vu32 bg, vu32 fg) * * Sets the color of the cursor -- should be revised for use with 3 colors! * */ -void v_setcursorcolor(ScrnInfoPtr pScreenInfo, vu32 fg, vu32 bg) +void +v_setcursorcolor(ScrnInfoPtr pScreenInfo, vu32 fg, vu32 bg) { renditionPtr pRendition = RENDITIONPTR(pScreenInfo); vu16 iob=pRendition->board.io_base+RAMDACBASEADDR; +#ifdef DEBUG + ErrorF ("Rendition: Debug v_setcursorcolor called FG=0x%x BG=0x%x\n", + fg,bg); +#endif + v_out8(iob+BT485_CURS_WR_ADDR, 0x00); + /* load the cursor color 0 */ - v_out8(iob+BT485_CURS_DATA, bg&0xff); - v_out8(iob+BT485_CURS_DATA, (bg>>8)&0xff); - v_out8(iob+BT485_CURS_DATA, (bg>>16)&0xff); + v_out8(iob+BT485_CURS_DATA, 0x00); + v_out8(iob+BT485_CURS_DATA, 0x00); + v_out8(iob+BT485_CURS_DATA, 0x00); /* load the cursor color 1 */ - v_out8(iob+BT485_CURS_DATA, fg&0xff); - v_out8(iob+BT485_CURS_DATA, (fg>>8)&0xff); v_out8(iob+BT485_CURS_DATA, (fg>>16)&0xff); + v_out8(iob+BT485_CURS_DATA, (fg>>8)&0xff); + v_out8(iob+BT485_CURS_DATA, fg&0xff); - /* load the cursor color 2 (not used) */ + /* load the cursor color 2 */ v_out8(iob+BT485_CURS_DATA, 0x00); v_out8(iob+BT485_CURS_DATA, 0x00); v_out8(iob+BT485_CURS_DATA, 0x00); + /* load the cursor color 3 */ + v_out8(iob+BT485_CURS_DATA, (bg>>16)&0xff); + v_out8(iob+BT485_CURS_DATA, (bg>>8)&0xff); + v_out8(iob+BT485_CURS_DATA, bg&0xff); } @@ -290,7 +318,8 @@ * But for now I'm happy it works ;) <ml> * */ -void v_loadcursor(ScrnInfoPtr pScreenInfo, vu8 size, vu8 *cursorimage) +void +v_loadcursor(ScrnInfoPtr pScreenInfo, vu8 size, vu8 *cursorimage) { int c, bytes, row; vu8 *src = cursorimage; @@ -299,6 +328,10 @@ vu8 tmp; vu8 memend; /* Added for byte-swap fix */ +#ifdef DEBUG + ErrorF ("Rendition: Debug v_loadcursor called\n"); +#endif + if (NULL == cursorimage) return; @@ -311,7 +344,7 @@ bytes=64; else bytes=32; - bytes=(bytes*bytes)/8; + bytes=(bytes*bytes)>>3; if (pRendition->board.chip == V1000_DEVICE) { /* now load the cursor data into the cursor ram */ @@ -358,23 +391,28 @@ (c&1)?(*(src-2)):(*(src+2))); } -#ifdef DEBUG /* Following line added for the byte-swap fix */ v_out8(pRendition->board.io_base + MEMENDIAN, memend); -#endif } /* NOTE: count is the actual number of colors decremented by 1 */ -void v_setpalette(ScrnInfoPtr pScreenInfo, vu8 start, vu8 count, vu8 *table) +void +v_setpalette(ScrnInfoPtr pScreenInfo, int numColors, int *indices, + LOCO *colors, VisualPtr pVisual) { renditionPtr pRendition = RENDITIONPTR(pScreenInfo); vu16 iob=pRendition->board.io_base; vu32 crtc_status; + int i, index; int c; +#ifdef DEBUG + ErrorF ("Rendition: Debug v_setpalette called\n"); +#endif + while (1) { crtc_status=v_in32(iob+CRTCSTATUS); if (crtc_status & CRTCSTATUS_VERT_SYNC) @@ -383,16 +421,17 @@ iob+=RAMDACBASEADDR; - if (((int)start+count) > 255) - count=255-start; + for (i = 0; i < numColors; i++) { + index = indices[i]; + v_out8(iob+BT485_WRITE_ADDR, index); + + v_out8(iob+BT485_RAMDAC_DATA, colors[index].red); + v_out8(iob+BT485_RAMDAC_DATA, colors[index].green); + v_out8(iob+BT485_RAMDAC_DATA, colors[index].blue); + } + - v_out8(iob+BT485_WRITE_ADDR, start); - for (c=0; c<=count; c++) { - v_out8(iob+BT485_RAMDAC_DATA, *table++); - v_out8(iob+BT485_RAMDAC_DATA, *table++); - v_out8(iob+BT485_RAMDAC_DATA, *table++); - } } @@ -407,7 +446,8 @@ * * */ -static void Bt485_write_masked(vu16 port, vu8 reg, vu8 mask, vu8 data) +static void +Bt485_write_masked(vu16 port, vu8 reg, vu8 mask, vu8 data) { vu8 tmp; @@ -422,7 +462,8 @@ * * */ -static void Bt485_write_cmd3_masked(vu16 port, vu8 mask, vu8 data) +static void +Bt485_write_cmd3_masked(vu16 port, vu8 mask, vu8 data) { /* Bt485_write_masked(port, BT485_COMMAND_REG_0, 0x7f, 0x80); @@ -441,7 +482,8 @@ * * */ -static vu8 Bt485_read_masked(vu16 port, vu8 reg, vu8 mask) +static vu8 +Bt485_read_masked(vu16 port, vu8 reg, vu8 mask) { return v_in8(port+reg)&mask; } @@ -453,7 +495,8 @@ * * */ -static vu8 Bt485_read_cmd3_masked(vu16 port, vu8 mask) +static vu8 +Bt485_read_cmd3_masked(vu16 port, vu8 mask) { vu8 value; Index: xc/programs/Xserver/hw/xfree86/drivers/rendition/vramdac.h diff -u xc/programs/Xserver/hw/xfree86/drivers/rendition/vramdac.h:1.3 xc/programs/Xserver/hw/xfree86/drivers/rendition/vramdac.h:1.4 --- xc/programs/Xserver/hw/xfree86/drivers/rendition/vramdac.h:1.3 Wed Oct 13 00:21:24 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/rendition/vramdac.h Wed Mar 8 16:31:15 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/vramdac.h,v 1.3 1999/10/13 04:21:24 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/vramdac.h,v 1.4 2000/02/25 21:03:07 dawes Exp $ */ /* * file vramdac.h * @@ -39,9 +39,10 @@ int v_initdac(ScrnInfoPtr pScreenInfo, vu8 bpp, vu8 doubleclock); void v_enablecursor(ScrnInfoPtr pScreenInfo, int type, int size); void v_movecursor(ScrnInfoPtr pScreenInfo, vu16 x, vu16 y, vu8 xo, vu8 yo); -void v_setcursorcolor(ScrnInfoPtr pScreenInfo, vu32 fg, vu32 bg); +void v_setcursorcolor(ScrnInfoPtr pScreenInfo, vu32 bg, vu32 fg); void v_loadcursor(ScrnInfoPtr pScreenInfo, vu8 type, vu8 *cursorimage); -void v_setpalette(ScrnInfoPtr pScreenInfo, vu8 start, vu8 count, vu8 *table); +void v_setpalette(ScrnInfoPtr pScreenInfo, int numColors, int *indices, + LOCO *colors, VisualPtr pVisual); Index: xc/programs/Xserver/hw/xfree86/drivers/rendition/vtypes.h diff -u xc/programs/Xserver/hw/xfree86/drivers/rendition/vtypes.h:1.4 xc/programs/Xserver/hw/xfree86/drivers/rendition/vtypes.h:1.5 --- xc/programs/Xserver/hw/xfree86/drivers/rendition/vtypes.h:1.4 Fri Nov 19 08:54:47 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/rendition/vtypes.h Wed Mar 8 16:31:15 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/vtypes.h,v 1.4 1999/11/19 13:54:47 hohndel Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/vtypes.h,v 1.5 2000/03/01 00:25:25 dawes Exp $ */ #ifndef _VTYPES_H_ #define _VTYPES_H_ @@ -141,6 +141,13 @@ vu32 fbOffset; /* Currently busy fb-memory marker */ Bool overclock_mem; /* Memory overclock ? */ + + Bool shadowfb; /* Use ShadowFB ? */ + vu8 *shadowPtr; + vu32 shadowPitch; + void (*PointerMoved)(int index, int x, int y); + + int rotate; /* Rotate clockwise or counterclockwise */ vu8 ucode_buffer[MC_SIZE]; /* Space for microcode, when not needed */ }; Index: xc/programs/Xserver/hw/xfree86/drivers/rendition/vvga.c diff -u xc/programs/Xserver/hw/xfree86/drivers/rendition/vvga.c:1.7 xc/programs/Xserver/hw/xfree86/drivers/rendition/vvga.c:1.8 --- xc/programs/Xserver/hw/xfree86/drivers/rendition/vvga.c:1.7 Fri Nov 19 08:54:48 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/rendition/vvga.c Wed Mar 8 16:31:15 2000 @@ -1,12 +1,10 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/vvga.c,v 1.7 1999/11/19 13:54:48 hohndel Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/vvga.c,v 1.8 2000/02/25 21:03:07 dawes Exp $ */ /* * file vvga.c * * Functions that handle the generic vga part of the Verite chips. */ - - /* * includes */ @@ -18,6 +16,8 @@ #include "v1kregs.h" #include "v2kregs.h" +#undef DEBUG + void set_PLL(vu16, vu32); /* @@ -45,7 +45,8 @@ * functions */ -void v_resetvga(void) +void +v_resetvga(void) { static struct VIDEO_REGS { vu8 seq[8]; /* sequencer regs */ @@ -72,6 +73,10 @@ }; int c; +#ifdef DEBUG + ErrorF ("Rendition: Debug v_resetvga called\n"); +#endif + /* set attribute controller */ for (c=0; c<0x15; c++) updattr(c, mode3.attr[c]); @@ -92,7 +97,8 @@ -void v_loadvgafont(void) +void +v_loadvgafont(void) { int c; vu8 b; @@ -101,6 +107,10 @@ vu8 *vbase; int fbFlags; +#ifdef DEBUG + ErrorF ("Rendition: Debug v_loadvgafont called\n"); +#endif + /* Assert synchroneous reset while setting the clock mode */ setvgareg(0x3c4, 0, 1); /* assert synchronous reset */ v_out8(0x3c2, 0x67); /* select clock */ @@ -142,11 +152,16 @@ -void v_textmode(struct v_board_t *board) +void +v_textmode(struct v_board_t *board) { vu16 iob=board->io_base; int tmp; +#ifdef DEBUG + ErrorF ("Rendition: Debug v_textmode called\n"); +#endif + /* dac */ v_out8(iob+DACCOMMAND0, 0x80); /* 6 bit op, enable extended */ v_out8(iob+DACCOMMAND1, 0x68); /* disable palette bypass */ @@ -207,11 +222,16 @@ -void v_savetextmode(struct v_board_t *board) +void +v_savetextmode(struct v_board_t *board) { vu8 *vbase; int fbFlags; +#ifdef DEBUG + ErrorF ("Rendition: Debug v_savetextmode called\n"); +#endif + /* save the cursor position */ board->cursor_hi=getvgareg(0x3d4, 0xe); board->cursor_low=getvgareg(0x3d4, 0xf); @@ -231,11 +251,16 @@ -void v_restoretextmode(struct v_board_t *board) +void +v_restoretextmode(struct v_board_t *board) { vu8 *vbase; int fbFlags; +#ifdef DEBUG + ErrorF ("Rendition: Debug v_restoretextmode called\n"); +#endif + /* restore the cursor position */ setvgareg(0x3d4, 0xe, board->cursor_hi); setvgareg(0x3d4, 0xf, board->cursor_low); @@ -255,11 +280,16 @@ -void v_restorepalette(void) +void +v_restorepalette(void) { int c; vu8 *pal=vga_pal; +#ifdef DEBUG + ErrorF ("Rendition: Debug v_restorepalette called\n"); +#endif + v_out8(0x3c8, 0); for (c=0; c<768; c++) v_out8(0x3c9, *pal++); @@ -276,7 +306,8 @@ * * Reads in a vga register. */ -static vu8 getvgareg(vu16 port, vu8 index) +static vu8 +getvgareg(vu16 port, vu8 index) { v_out8(port, index); return v_in8(port+1); @@ -289,7 +320,8 @@ * * Sets a vga register. */ -static void setvgareg(vu16 port, vu8 index, vu8 value) +static void +setvgareg(vu16 port, vu8 index, vu8 value) { v_out8(port, index); v_out8(port+1, value); @@ -302,7 +334,8 @@ * * Used to write the attribute controller registers. */ -static void updattr(vu8 index, vu8 value) +static void +updattr(vu8 index, vu8 value) { v_in8(0x3da); /* points to index register for color adapter */ v_in8(0x3ba); /* points to index register for mono */ Index: xc/programs/Xserver/hw/xfree86/drivers/s3virge/README diff -u xc/programs/Xserver/hw/xfree86/drivers/s3virge/README:1.7 xc/programs/Xserver/hw/xfree86/drivers/s3virge/README:1.8 --- xc/programs/Xserver/hw/xfree86/drivers/s3virge/README:1.7 Sun Apr 4 04:46:16 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/s3virge/README Wed Mar 8 16:31:15 2000 @@ -1,6 +1,7 @@ What works: -- Supports 8bpp, 15/16bpp, 24bpp and 32bpp. Tested on ViRGE DX +- Supports 8bpp, 15/16bpp, 24bpp and 32bpp. Heavy testing on ViRGE DX. +- There is some known instability in ViRGE GX2, please report problems. XCONFIG options: @@ -16,12 +17,20 @@ - "swcursor" will disable the HW Cursor. HW Cursor is used by default and no option is needed to enable it. +Display: +- "ShadowFB" Use shadow framebuffer. Disables HW acceleration. Default: off. +- "Rotate" " cw "|" ccw " Rotate the screen CW - clockwise or CCW - counter + clockwise. Disables HW Acceleration and HW Cursor, uses ShadowFB. + Default: no rotation. + Video memory: - "slow_edodram" will switch the standard ViRGE to 2-cycle edo mode. Try this if you encounter pixel corruption on the ViRGE. Using this option will cause a large decrease in performance. - "fpm_vram" will switch the ViRGE/VX to fast page mode vram mode +- "slow_dram " | " fast_dram" Change Trio 3D and 3D/2X memory options. + Default: Use BIOS defaults. - "early_ras_precharge", "late_ras_precharge" adjust memory parameters. One of these will us the same settings as your video card defaults, and using neither in the config file does the same. @@ -29,6 +38,8 @@ Option "set_mclk" "50000" in the XF86Config file. Valid values are any integer <= 100000, where 100000 == 100 MHz. +- "set_refclk" sets the ref clock for ViRGE MX, format is: + Option "set_refclk" "50000" Acceleration and graphic engine: @@ -66,5 +77,9 @@ Option "set_lcdclk" "30000" in the config file. Valid values are ? +Debug: +- "ShowCache" Enable or disable viewing offscreen cache memory. A + development debug option. Default: off. + -$XFree86: xc/programs/Xserver/hw/xfree86/drivers/s3virge/README,v 1.7 1999/04/04 08:46:16 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/drivers/s3virge/README,v 1.8 2000/03/05 16:59:15 dawes Exp $ Index: xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_accel.c diff -u xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_accel.c:1.17 xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_accel.c:1.18 --- xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_accel.c:1.17 Wed Mar 8 16:31:16 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_accel.c Wed Mar 8 16:31:16 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_accel.c,v 1.17 2000/02/14 19:20:50 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_accel.c,v 1.18 2000/03/06 22:59:27 dawes Exp $ */ /* Copyright (C) 1994-1999 The XFree86 Project, Inc. All Rights Reserved. @@ -146,8 +146,9 @@ infoPtr->ImageWriteFlags = ROP_NEEDS_SOURCE | NO_TRANSPARENCY | CPU_TRANSFER_PAD_DWORD | - SCANLINE_PAD_DWORD | - LEFT_EDGE_CLIPPING; + SCANLINE_PAD_DWORD | + NO_GXCOPY | /* added - kjb */ + LEFT_EDGE_CLIPPING; infoPtr->ImageWriteRange = 0x8000; infoPtr->ImageWriteBase = ps3v->MapBaseDense; Index: xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_dga.c diff -u xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_dga.c:1.4 xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_dga.c:1.5 --- xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_dga.c:1.4 Sun Jul 18 04:14:33 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_dga.c Wed Mar 8 16:31:16 2000 @@ -1,4 +1,29 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_dga.c,v 1.4 1999/07/18 08:14:33 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_dga.c,v 1.5 2000/03/06 22:59:27 dawes Exp $ */ + +/* +Copyright (C) 1994-2000 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, FIT- +NESS 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. +*/ /* * file: s3v_dga.c Index: xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_driver.c diff -u xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_driver.c:1.49 xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_driver.c:1.54 --- xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_driver.c:1.49 Wed Mar 8 16:31:16 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_driver.c Wed Mar 8 16:31:16 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_driver.c,v 1.49 2000/02/15 18:01:13 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_driver.c,v 1.54 2000/03/06 22:59:29 dawes Exp $ */ /* Copyright (C) 1994-1999 The XFree86 Project, Inc. All Rights Reserved. @@ -121,9 +121,9 @@ #define S3VIRGE_NAME "S3VIRGE" #define S3VIRGE_DRIVER_NAME "s3virge" -#define S3VIRGE_VERSION_NAME "0.11.0" -#define S3VIRGE_VERSION_MAJOR 0 -#define S3VIRGE_VERSION_MINOR 11 +#define S3VIRGE_VERSION_NAME "1.0.0" +#define S3VIRGE_VERSION_MAJOR 1 +#define S3VIRGE_VERSION_MINOR 0 #define S3VIRGE_PATCHLEVEL 0 #define S3VIRGE_DRIVER_VERSION ((S3VIRGE_VERSION_MAJOR << 24) | \ (S3VIRGE_VERSION_MINOR << 16) | \ @@ -501,9 +501,6 @@ PVERB5(" S3VProbe begin\n"); - if (flags & PROBE_DETECTISA) return FALSE; - if (flags & PROBE_DETECTFBDEV) return FALSE; - if ((numDevSections = xf86MatchDevice(S3VIRGE_DRIVER_NAME, &devSections)) <= 0) { /* @@ -527,10 +524,9 @@ if (numUsed <= 0) return FALSE; - if (flags & PROBE_DETECTPCI) - return TRUE; - - for (i = 0; i < numUsed; i++) { + if (flags & PROBE_DETECT) + foundScreen = TRUE; + else for (i = 0; i < numUsed; i++) { /* Allocate a ScrnInfoRec and claim the slot */ ScrnInfoPtr pScrn = xf86AllocateScreen(drv, 0); @@ -577,6 +573,8 @@ vgaHWPtr hwp; int vgaCRIndex, vgaCRReg, vgaIOBase; + + if (flags & PROBE_DETECT) return FALSE; PVERB5(" S3VPreInit 1\n"); @@ -803,7 +801,7 @@ if (xf86GetOptValFreq(S3VOptions, OPTION_REFCLK, OPTUNITS_MHZ, &real)) { ps3v->REFCLK = (int)(real * 1000.0); - xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Option: set_mclk set to %1.3f Mhz\n", + xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Option: set_refclk set to %1.3f Mhz\n", ps3v->REFCLK / 1000.0 ); } else ps3v->REFCLK = 0; @@ -2452,7 +2450,7 @@ XF86VideoAdaptorPtr *ptr; int n; - n = xf86XVListGenericAdaptors(&ptr); + n = xf86XVListGenericAdaptors(pScrn,&ptr); if (n) { xf86XVScreenInit(pScreen, ptr, n); } Index: xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_i2c.c diff -u xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_i2c.c:1.2 xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_i2c.c:1.3 --- xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_i2c.c:1.2 Wed Mar 8 16:31:16 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_i2c.c Wed Mar 8 16:31:16 2000 @@ -1,4 +1,29 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_i2c.c,v 1.2 2000/01/21 02:30:01 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_i2c.c,v 1.3 2000/03/06 22:59:29 dawes Exp $ */ + +/* +Copyright (C) 1994-2000 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, FIT- +NESS 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. +*/ #include "xf86.h" #include "xf86_OSproc.h" Index: xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_shadow.c diff -u xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_shadow.c:1.1 xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_shadow.c:1.2 --- xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_shadow.c:1.1 Wed Mar 8 16:31:16 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_shadow.c Wed Mar 8 16:31:16 2000 @@ -1,4 +1,29 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_shadow.c,v 1.1 2000/02/08 13:13:20 eich Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_shadow.c,v 1.2 2000/03/06 22:59:30 dawes Exp $ */ + +/* +Copyright (C) 1994-2000 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, FIT- +NESS 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. +*/ /* Copyright (c) 1999,2000 The XFree86 Project Inc. Index: xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3virge.cpp diff -u xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3virge.cpp:1.4 xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3virge.cpp:1.6 --- xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3virge.cpp:1.4 Sun Aug 22 09:04:27 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3virge.cpp Wed Mar 8 16:31:17 2000 @@ -1,5 +1,5 @@ -.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3virge.cpp,v 1.4 1999/08/22 13:04:27 dawes Exp $ -.TH s3virge __drivermansuffix__ "Version 3.9.16" "XFree86" +.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3virge.cpp,v 1.6 2000/03/05 16:59:16 dawes Exp $ +.TH s3virge __drivermansuffix__ "Version 4.0" "XFree86" .SH NAME s3virge \- S3 ViRGE video driver .SH SYNOPSIS @@ -26,7 +26,7 @@ .SH SUPPORTED HARDWARE The .B s3virge -driver supports PCI video cards based on the following S3 chips: +driver supports PCI and AGP video cards based on the following S3 chips: .TP 12 .B ViRGE 86C325 @@ -48,10 +48,17 @@ .TP 12 .B ViRGE MX+ 86C280 +.TP 12 +.B Trio 3D +86C365 +.TP 12 +.B Trio 3D/2X +86C362, 86C368 .SH CONFIGURATION DETAILS Please refer to XF86Config(__filemansuffix__) for general configuration details. This section only covers configuration details specific to this -driver. +driver. All options names are case and white space insensitive when +parsed by the server, for exmaple, "virge vx" and "VIRGEvx" are equivalent. .PP The driver auto-detects the chipset type, but the following .B ChipSet @@ -62,18 +69,34 @@ .RS 4 "virge", "86c325", "virge vx", "86c988", "virge dx", "86c375", "virge gx", "86c385", "virge gx2", "86c357", "virge mx", "86c260", -"virge mx+", "86c280". +"virge mx+", "86c280", "trio 3d", "86c365", "trio 3d/2x", "86c362", +"86c368". .RE + .PP The following Cursor .B Options are supported: .TP -.BI "Option ""HWCursor"" """ boolean """ +.BI "Option ""HWCursor"" [""" boolean """] Enable or disable the HW cursor. Default: on. .TP -.BI "Option ""SWCursor"" """ boolean """ +.BI "Option ""SWCursor"" [""" boolean """] Inverse of "HWCursor". Default: off. + +.PP +The following display +.B Options +are supported: +.TP +.BI "Option ""ShadowFB"" [""" boolean """] +Use shadow framebuffer. Disables HW acceleration. Default: off. +.TP +.BR "Option ""Rotate"" """ cw " | " ccw """ +Rotate the screen CW - clockwise or CCW - counter clockwise. +Disables HW Acceleration and HW Cursor, uses ShadowFB. +Default: no rotation. + .PP The following video memory .B Options @@ -82,11 +105,14 @@ .BI "Option ""slow_edodram""" Switch the standard ViRGE to 2-cycle edo mode. Try this if you encounter pixel corruption on the ViRGE. Using this option will -cause a large decrease in performance. Default: off +cause a large decrease in performance. Default: off. .TP .BI "Option ""fpm_vram""" Switch the ViRGE/VX to fast page mode vram mode. Default: off. .TP +.BR "Option ""slow_dram " | " fast_dram""" +Change Trio 3D and 3D/2X memory options. Default: Use BIOS defaults. +.TP .BR "Option ""early_ras_precharge " | " late_ras_precharge""" adjust memory parameters. One of these will us the same settings as your video card defaults, and @@ -99,8 +125,16 @@ .I integer <= 100000. Default: probe the memory clock value, and use it at server start. +.TP +.BI "Option ""set_refclk"" """ integer """ +sets the ref clock for ViRGE MX, where +.I integer +is in kHz. Default: probe the memory clock value, +and use it at server start. + + .PP -The following acceleration and graphic engine +The following acceleration and graphics engine .B Options are supported: .TP @@ -133,11 +167,11 @@ .B Options are supported: .TP -.BI "Option ""pci_burst"" """ boolean """ +.BI "Option ""pci_burst"" [""" boolean """] will enable PCI burst mode. This should work on all but a few broken PCI chipsets, and will increase performance. Default: off. .TP -.BI "Option ""pci_retry"" """ boolean """ +.BI "Option ""pci_retry"" [""" boolean """] will allow the driver to rely on PCI Retry to program the ViRGE registers. .B "pci_burst" @@ -163,8 +197,9 @@ .B Options are supported: .TP -.BI "Option ""ShowCache"" """ boolean """ -Enable or disable viewing offscreen memory. Default: off. +.BI "Option ""ShowCache"" [""" boolean """] +Enable or disable viewing offscreen cache memory. A +development debug option. Default: off. .SH SEE ALSO XFree86(1), XF86Config(__filemansuffix__), xf86config(1), Xserver(1), X(1) Index: xc/programs/Xserver/hw/xfree86/drivers/sis/Imakefile diff -u xc/programs/Xserver/hw/xfree86/drivers/sis/Imakefile:1.10 xc/programs/Xserver/hw/xfree86/drivers/sis/Imakefile:1.11 --- xc/programs/Xserver/hw/xfree86/drivers/sis/Imakefile:1.10 Wed Mar 8 16:31:17 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/sis/Imakefile Wed Mar 8 16:31:17 2000 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/sis/Imakefile,v 1.10 2000/02/12 20:45:32 dawes Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/sis/Imakefile,v 1.11 2000/03/03 01:05:42 dawes Exp $ XCOMM XCOMM This is an Imakefile for the SIS driver. XCOMM @@ -33,6 +33,11 @@ ObjectModuleTarget(sis,$(OBJS)) InstallObjectModule(sis,$(MODULEDIR),drivers) + +#if !defined(XF86DriverSDK) +CppManTarget(sis,) +InstallModuleManPage(sis) +#endif DependTarget() Index: xc/programs/Xserver/hw/xfree86/drivers/sis/sis.cpp diff -u /dev/null xc/programs/Xserver/hw/xfree86/drivers/sis/sis.cpp:1.1 --- /dev/null Wed Mar 8 16:31:17 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/sis/sis.cpp Wed Mar 8 16:31:17 2000 @@ -0,0 +1,30 @@ +.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/sis/sis.cpp,v 1.1 2000/03/03 01:05:42 dawes Exp $ +.TH SIS __drivermansuffix__ "Version 4.0" "XFree86" +.SH NAME +sis \- SiS video driver +.SH SYNOPSIS +.B "Section ""Device""" +.br +.BI " Identifier """ devname """" +.br +.B " Driver ""sis""" +.br +\ \ ... +.br +.B EndSection +.SH DESCRIPTION +.B sis +is an XFree86 driver for SiS video cards. +THIS MAN PAGE NEEDS TO BE FILLED IN. +.SH SUPPORTED HARDWARE +The +.B sis +driver supports... +.SH CONFIGURATION DETAILS +Please refer to XF86Config(__filemansuffix__) for general configuration +details. This section only covers configuration details specific to this +driver. +.SH "SEE ALSO" +XFree86(1), XF86Config(__filemansuffix__), xf86config(1), Xserver(1), X(1) +.SH AUTHORS +Authors include: ... Index: xc/programs/Xserver/hw/xfree86/drivers/sis/sis_driver.c diff -u xc/programs/Xserver/hw/xfree86/drivers/sis/sis_driver.c:1.40 xc/programs/Xserver/hw/xfree86/drivers/sis/sis_driver.c:1.43 --- xc/programs/Xserver/hw/xfree86/drivers/sis/sis_driver.c:1.40 Wed Mar 8 16:31:18 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/sis/sis_driver.c Wed Mar 8 16:31:18 2000 @@ -25,7 +25,7 @@ * Mitani Hiroshi <hmitani@drl.mei.co.jp> * David Thomas <davtom@dream.org.uk>. */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/sis/sis_driver.c,v 1.40 2000/02/21 19:23:08 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/sis/sis_driver.c,v 1.43 2000/03/03 21:26:18 dawes Exp $ */ #define PSZ 8 @@ -126,11 +126,13 @@ }; static SymTabRec SISChipsets[] = { +#if 0 { PCI_CHIP_SG86C201, "SIS86c201" }, { PCI_CHIP_SG86C202, "SIS86c202" }, { PCI_CHIP_SG86C205, "SIS86c205" }, { PCI_CHIP_SG86C215, "SIS86c215" }, { PCI_CHIP_SG86C225, "SIS86c225" }, +#endif { PCI_CHIP_SIS5597, "SIS5597" }, { PCI_CHIP_SIS5597, "SIS5598" }, { PCI_CHIP_SIS530, "SIS530" }, @@ -142,10 +144,12 @@ }; static PciChipsets SISPciChipsets[] = { +#if 0 { PCI_CHIP_SG86C201, PCI_CHIP_SG86C201, RES_SHARED_VGA }, { PCI_CHIP_SG86C202, PCI_CHIP_SG86C202, RES_SHARED_VGA }, { PCI_CHIP_SG86C205, PCI_CHIP_SG86C205, RES_SHARED_VGA }, { PCI_CHIP_SG86C205, PCI_CHIP_SG86C205, RES_SHARED_VGA }, +#endif { PCI_CHIP_SIS5597, PCI_CHIP_SIS5597, RES_SHARED_VGA }, { PCI_CHIP_SIS530, PCI_CHIP_SIS530, RES_SHARED_VGA }, { PCI_CHIP_SIS6326, PCI_CHIP_SIS6326, RES_SHARED_VGA }, @@ -398,8 +402,6 @@ * we'll ignore that. */ - if (flags & PROBE_DETECTISA) return FALSE; - if (flags & PROBE_DETECTFBDEV) return FALSE; /* * We need to probe the hardware first. We then need to see how this * fits in with what is given in the config file, and allow the config @@ -429,10 +431,9 @@ if (numUsed <= 0) return FALSE; - if (flags & PROBE_DETECTPCI) - return TRUE; - - for (i = 0; i < numUsed; i++) { + if (flags & PROBE_DETECT) + foundScreen = TRUE; + else for (i = 0; i < numUsed; i++) { ScrnInfoPtr pScrn; /* Allocate a ScrnInfoRec and claim the slot */ @@ -487,6 +488,8 @@ char *mod = NULL; const char *Sym = NULL; int pix24flags; + + if (flags & PROBE_DETECT) return FALSE; /* * Note: This function is only called once at server startup, and Index: xc/programs/Xserver/hw/xfree86/drivers/tdfx/Imakefile diff -u xc/programs/Xserver/hw/xfree86/drivers/tdfx/Imakefile:1.10 xc/programs/Xserver/hw/xfree86/drivers/tdfx/Imakefile:1.12 --- xc/programs/Xserver/hw/xfree86/drivers/tdfx/Imakefile:1.10 Wed Mar 8 16:31:19 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/tdfx/Imakefile Wed Mar 8 16:31:19 2000 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tdfx/Imakefile,v 1.10 2000/02/15 19:19:21 dawes Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tdfx/Imakefile,v 1.12 2000/03/03 01:05:43 dawes Exp $ XCOMM XCOMM This is the Imakefile for the TDFX driver. XCOMM @@ -37,7 +37,7 @@ -I$(XF86SRC)/xaa -I$(XF86SRC)/rac -I$(XF86SRC)/int10 \ -I$(SERVERSRC)/cfb -I$(XF86SRC)/xaa -I$(XF86SRC)/ramdac \ -I$(XF86SRC)/vgahw -I$(XF86SRC)/ddc -I$(XF86SRC)/i2c \ - -I$(SERVERSRC)/Xext \ + -I$(XF86SRC)/ddc -I$(XF86OSSRC)/vbe -I$(SERVERSRC)/Xext \ -I$(FONTINCSRC) -I$(SERVERSRC)/include -I$(XINCLUDESRC) \ -I$(EXTINCSRC) \ $(DRIINCLUDES) @@ -55,9 +55,10 @@ InstallObjectModule(tdfx,$(MODULEDIR),drivers) -XCOMM To install a man page remove the x and add these lines -XCOMM xCppManTarget(tdfx,) -XCOMM xInstallModuleManPage(tdfx) +#if !defined(XF86DriverSDK) +CppManTarget(tdfx,) +InstallModuleManPage(tdfx) +#endif DependTarget() Index: xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx.cpp diff -u /dev/null xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx.cpp:1.1 --- /dev/null Wed Mar 8 16:31:19 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx.cpp Wed Mar 8 16:31:19 2000 @@ -0,0 +1,30 @@ +.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx.cpp,v 1.1 2000/03/03 01:05:43 dawes Exp $ +.TH TDFX __drivermansuffix__ "Version 4.0" "XFree86" +.SH NAME +tdfx \- 3Dfx video driver +.SH SYNOPSIS +.B "Section ""Device""" +.br +.BI " Identifier """ devname """" +.br +.B " Driver ""tdfx""" +.br +\ \ ... +.br +.B EndSection +.SH DESCRIPTION +.B tdfx +is an XFree86 driver for 3Dfx video cards. +THIS MAN PAGE NEEDS TO BE FILLED IN. +.SH SUPPORTED HARDWARE +The +.B tdfx +driver supports... +.SH CONFIGURATION DETAILS +Please refer to XF86Config(__filemansuffix__) for general configuration +details. This section only covers configuration details specific to this +driver. +.SH "SEE ALSO" +XFree86(1), XF86Config(__filemansuffix__), xf86config(1), Xserver(1), X(1) +.SH AUTHORS +Authors include: ... Index: xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_accel.c diff -u xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_accel.c:1.8 xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_accel.c:1.9 --- xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_accel.c:1.8 Wed Mar 8 16:31:19 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_accel.c Wed Mar 8 16:31:19 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_accel.c,v 1.8 2000/02/20 04:12:40 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_accel.c,v 1.9 2000/03/02 16:07:52 martin Exp $ */ /* All drivers should typically include these */ #include "xf86.h" @@ -622,6 +622,7 @@ int w = glyph->end - glyph->start; int *glyph_data = (int*)glyph->bits; + if (!glyph->srcwidth) continue; ndwords = (glyph->srcwidth+3)>>2; ndwords *= glyph->height; Index: xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c diff -u xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c:1.21 xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c:1.30 --- xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c:1.21 Wed Mar 8 16:31:20 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c Wed Mar 8 16:31:20 2000 @@ -25,13 +25,12 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c,v 1.21 2000/02/21 19:23:09 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c,v 1.30 2000/03/06 23:54:13 dawes Exp $ */ /* * Authors: * Daryll Strauss <daryll@precisioninsight.com> * - * $PI$ */ /* @@ -50,7 +49,7 @@ #include "xf86_OSproc.h" #include "xf86Resources.h" #include "xf86RAC.h" -#include "xf86int10.h" +#include "vbe.h" #include "xf86cmap.h" /* If the driver uses port I/O directly, it needs: */ @@ -249,6 +248,18 @@ NULL }; +static const char *ddcSymbols[] = { + "xf86PrintEDID", + "xf86DoEDID_DDC1", + NULL +}; + +static const char *vbeSymbols[] = { + "VBEInit", + "vbeDoEDID", + NULL +}; + #ifdef XF86DRI static const char *drmSymbols[] = { "drmAddBufs", @@ -323,7 +334,7 @@ * might refer to. */ LoaderRefSymLists(vgahwSymbols, cfbSymbols, xaaSymbols, - xf8_32bppSymbols, ramdacSymbols, + xf8_32bppSymbols, ramdacSymbols, vbeSymbols, #ifdef XF86DRI drmSymbols, driSymbols, #endif @@ -415,9 +426,8 @@ if (numUsed<=0) return FALSE; if (flags & PROBE_DETECT) - return TRUE; - - for (i=0; i<numUsed; i++) { + foundScreen = TRUE; + else for (i=0; i<numUsed; i++) { ScrnInfoPtr pScrn; /* Allocate new ScrnInfoRec and claim the slot */ @@ -518,6 +528,19 @@ return memSize*1024; } +extern xf86MonPtr ConfiguredMonitor; + +void +TDFXProbeDDC(ScrnInfoPtr pScrn, int index) +{ + vbeInfoPtr pVbe; + if (xf86LoadSubModule(pScrn, "vbe")) { + pVbe = VBEInit(NULL,index); + ConfiguredMonitor = vbeDoEDID(pVbe); + } +} + + /* * TDFXPreInit -- * @@ -539,14 +562,6 @@ TDFXTRACE("TDFXPreInit start\n"); if (pScrn->numEntities != 1) return FALSE; - /* The vgahw module should be loaded here when needed */ - if (!xf86LoadSubModule(pScrn, "vgahw")) return FALSE; - - xf86LoaderReqSymLists(vgahwSymbols, NULL); - - /* Allocate a vgaHWRec */ - if (!vgaHWGetHWRec(pScrn)) return FALSE; - /* Allocate driverPrivate */ if (!TDFXGetRec(pScrn)) { return FALSE; @@ -587,6 +602,11 @@ else pScrn->racMemFlags = RAC_FB | RAC_COLORMAP | RAC_CURSOR | RAC_VIEWPORT; + if (flags & PROBE_DETECT) { + TDFXProbeDDC(pScrn, pTDFX->pEnt->index); + return FALSE; + } + /* Set pScrn->monitor */ pScrn->monitor = pScrn->confScreen->monitor; @@ -627,6 +647,14 @@ } } + /* The vgahw module should be loaded here when needed */ + if (!xf86LoadSubModule(pScrn, "vgahw")) return FALSE; + + xf86LoaderReqSymLists(vgahwSymbols, NULL); + + /* Allocate a vgaHWRec */ + if (!vgaHWGetHWRec(pScrn)) return FALSE; + /* We use a programamble clock */ pScrn->progClock = TRUE; @@ -775,7 +803,7 @@ clockRanges->maxClock=pTDFX->MaxClock; clockRanges->clockIndex = -1; clockRanges->interlaceAllowed = TRUE; - clockRanges->doubleScanAllowed = FALSE; + clockRanges->doubleScanAllowed = TRUE; i = xf86ValidateModes(pScrn, pScrn->monitor->Modes, pScrn->display->modes, clockRanges, @@ -844,6 +872,22 @@ xf86LoaderReqSymLists(ramdacSymbols, NULL); } + /* Load DDC if needed */ + /* This gives us DDC1 - we should be able to get DDC2B using i2c */ + if (!xf86LoadSubModule(pScrn, "ddc")) { + TDFXFreeRec(pScrn); + return FALSE; + } + xf86LoaderReqSymLists(ddcSymbols, NULL); + + /* Initialize DDC1 if possible */ + if (xf86LoadSubModule(pScrn, "vbe")) { + xf86MonPtr pMon; + pMon = vbeDoEDID(VBEInit(NULL,pTDFX->pEnt->index)); + xf86SetDDCproperties(pScrn,xf86PrintEDID(pMon)); + } + + /* We wont be using the VGA access after the probe */ if (!xf86ReturnOptValBool(TDFXOptions, OPTION_USE_PIO, FALSE)) { resRange vgaio[] = { {ResShrIoBlock,0x3B0,0x3BB}, @@ -1327,7 +1371,7 @@ #ifdef XF86DRI if (pTDFX->directRenderingEnabled) { - DRILock(screenInfo.screens[pScrn->scrnIndex]); + DRILock(screenInfo.screens[pScrn->scrnIndex], 0); TDFXSwapContextPrivate(screenInfo.screens[pScrn->scrnIndex]); } #endif @@ -1706,7 +1750,7 @@ XF86VideoAdaptorPtr *ptr; int n; - n = xf86XVListGenericAdaptors(&ptr); + n = xf86XVListGenericAdaptors(pScrn,&ptr); if (n) { xf86XVScreenInit(pScreen, ptr, n); } @@ -1787,7 +1831,7 @@ #ifdef XF86DRI pTDFX = TDFXPTR(pScrn); if (pTDFX->directRenderingEnabled) { - DRILock(pScreen); + DRILock(pScreen, 0); } #endif } Index: xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_io.c diff -u xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_io.c:1.3 xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_io.c:1.4 --- xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_io.c:1.3 Fri Dec 3 14:17:36 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_io.c Wed Mar 8 16:31:20 2000 @@ -24,13 +24,12 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_io.c,v 1.3 1999/12/03 19:17:36 eich Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_io.c,v 1.4 2000/02/23 04:47:21 martin Exp $ */ /* * Authors: * Daryll Strauss <daryll@precisioninsight.com> * - * $PI$ */ #include "xf86.h" Index: xc/programs/Xserver/hw/xfree86/drivers/tga/tga.h diff -u xc/programs/Xserver/hw/xfree86/drivers/tga/tga.h:1.13 xc/programs/Xserver/hw/xfree86/drivers/tga/tga.h:1.14 --- xc/programs/Xserver/hw/xfree86/drivers/tga/tga.h:1.13 Mon Dec 13 18:48:20 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/tga/tga.h Wed Mar 8 16:31:20 2000 @@ -21,7 +21,7 @@ * * Authors: Alan Hourihane, <alanh@fairlite.demon.co.uk> */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tga/tga.h,v 1.13 1999/12/13 23:48:20 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tga/tga.h,v 1.14 2000/03/06 22:59:31 dawes Exp $ */ #ifndef _TGA_H_ #define _TGA_H_ @@ -52,6 +52,7 @@ long FbMapSize; unsigned long regOffset; Bool NoAccel; + Bool NoXaaPolySegment; Bool Dac6Bit; Bool SyncOnGreen; Bool HWCursor; Index: xc/programs/Xserver/hw/xfree86/drivers/tga/tga_accel.c diff -u xc/programs/Xserver/hw/xfree86/drivers/tga/tga_accel.c:1.9 xc/programs/Xserver/hw/xfree86/drivers/tga/tga_accel.c:1.10 --- xc/programs/Xserver/hw/xfree86/drivers/tga/tga_accel.c:1.9 Wed Dec 15 21:26:30 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/tga/tga_accel.c Wed Mar 8 16:31:20 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tga/tga_accel.c,v 1.9 1999/12/16 02:26:30 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tga/tga_accel.c,v 1.10 2000/03/06 22:59:31 dawes Exp $ */ /* * Copyright 1996,1997 by Alan Hourihane, Wigan, England. @@ -115,12 +115,14 @@ /* ErrorF("XAACreateInfoRec called"); */ - pTga->Bpp = pScrn->depth / 8; /* Bytes per pixel */ - if(pScrn->depth == 8) + if(pScrn->depth == 8) { pTga->depthflag = BPP8PACKED; - else + pTga->Bpp = 1; + } else { pTga->depthflag = BPP24; - + pTga->Bpp = 4; + } + TGA_AccelInfoRec->Flags = PIXMAP_CACHE | LINEAR_FRAMEBUFFER | OFFSCREEN_PIXMAPS; @@ -133,8 +135,8 @@ TGA_AccelInfoRec->SubsequentSolidFillRect = TGASubsequentSolidFillRect; /* screen to screen copy */ - if(pScrn->depth == 8) { /* screen to screen copy apparently doesn't work - for 32bpp tga */ + if(pTga->depthflag == BPP8PACKED) { /* screen to screen copy apparently doesn't work + for 32bpp tga */ TGA_AccelInfoRec->ScreenToScreenCopyFlags = NO_TRANSPARENCY; TGA_AccelInfoRec->SetupForScreenToScreenCopy = TGASetupForScreenToScreenCopy; @@ -152,30 +154,34 @@ TGASubsequentMono8x8PatternFillRect; /* color expand */ - /* does this work for 32bpp? */ - TGA_AccelInfoRec->ScanlineCPUToScreenColorExpandFillFlags = - BIT_ORDER_IN_BYTE_LSBFIRST; - - TGA_AccelInfoRec->NumScanlineColorExpandBuffers = 1; - pTga->buffers[0] = (CARD32 *)malloc(CE_BUFSIZE); - TGA_AccelInfoRec->ScanlineColorExpandBuffers = - (unsigned char **)pTga->buffers; - TGA_AccelInfoRec->SetupForScanlineCPUToScreenColorExpandFill = - TGASetupForScanlineCPUToScreenColorExpandFill; - TGA_AccelInfoRec->SubsequentScanlineCPUToScreenColorExpandFill = - TGASubsequentScanlineCPUToScreenColorExpandFill; - TGA_AccelInfoRec->SubsequentColorExpandScanline = - TGASubsequentColorExpandScanline; + /* does not work for 32bpp (yet) */ + if(pTga->depthflag == BPP8PACKED) { + TGA_AccelInfoRec->ScanlineCPUToScreenColorExpandFillFlags = + BIT_ORDER_IN_BYTE_LSBFIRST; + + TGA_AccelInfoRec->NumScanlineColorExpandBuffers = 1; + pTga->buffers[0] = (CARD32 *)malloc(CE_BUFSIZE); + TGA_AccelInfoRec->ScanlineColorExpandBuffers = + (unsigned char **)pTga->buffers; + TGA_AccelInfoRec->SetupForScanlineCPUToScreenColorExpandFill = + TGASetupForScanlineCPUToScreenColorExpandFill; + TGA_AccelInfoRec->SubsequentScanlineCPUToScreenColorExpandFill = + TGASubsequentScanlineCPUToScreenColorExpandFill; + TGA_AccelInfoRec->SubsequentColorExpandScanline = + TGASubsequentColorExpandScanline; + } /* lines */ TGA_AccelInfoRec->PolylinesThinSolid = TGAPolyLines; - TGA_AccelInfoRec->PolySegmentThinSolid = TGAPolySegment; + if(pTga->NoXaaPolySegment == FALSE) + TGA_AccelInfoRec->PolySegmentThinSolid = TGAPolySegment; TGA_AccelInfoRec->PolylinesThinSolidFlags = 0x0; TGA_AccelInfoRec->PolySegmentThinSolidFlags = 0x0; TGA_AccelInfoRec->PolylinesThinDashed = TGAPolyLinesDashed; - TGA_AccelInfoRec->PolySegmentThinDashed = TGAPolySegmentDashed; + if(pTga->NoXaaPolySegment == FALSE) + TGA_AccelInfoRec->PolySegmentThinDashed = TGAPolySegmentDashed; TGA_AccelInfoRec->PolylinesThinDashedFlags = 0x0; TGA_AccelInfoRec->PolySegmentThinDashedFlags = 0x0; TGA_AccelInfoRec->DashedLineFlags = LINE_PATTERN_LSBFIRST_LSBJUSTIFIED; @@ -213,7 +219,7 @@ TGA_GET_OFFSET(); /* ErrorF("TGASetupForScanlineCPUToScreenColorExpandFill called\n"); */ - if(pScrn->depth == 8) { + if(pTga->depthflag == BPP8PACKED) { fgcolor = (fg | (fg << 8) | (fg << 16) | (fg << 24)); bgcolor = bg | (bg << 8) | (bg << 16) | (bg << 24); pmask = planemask | (planemask << 8) | (planemask << 16) @@ -232,7 +238,7 @@ pTga->block_or_opaque_p = USE_BLOCK_FILL; TGA_FAST_WRITE_REG(fgcolor, TGA_BLOCK_COLOR0_REG); TGA_FAST_WRITE_REG(fgcolor, TGA_BLOCK_COLOR1_REG); - if(pScrn->depth == 32) { + if(pTga->depthflag == BPP24) { TGA_FAST_WRITE_REG(fgcolor, TGA_BLOCK_COLOR2_REG); TGA_FAST_WRITE_REG(fgcolor, TGA_BLOCK_COLOR3_REG); TGA_FAST_WRITE_REG(fgcolor, TGA_BLOCK_COLOR4_REG); @@ -433,7 +439,7 @@ TGA_GET_OFFSET(); /* ErrorF("TGASetupForSolidFill called"); */ - if(pScrn->depth == 8) { + if(pTga->depthflag == BPP8PACKED) { fgcolor = color | (color << 8) | (color << 16) | (color << 24); pmask = planemask | (planemask << 8) | (planemask << 16) | (planemask << 24); @@ -448,7 +454,7 @@ pTga->block_or_opaque_p = USE_BLOCK_FILL; TGA_FAST_WRITE_REG(fgcolor, TGA_BLOCK_COLOR0_REG); TGA_FAST_WRITE_REG(fgcolor, TGA_BLOCK_COLOR1_REG); - if(pScrn->depth == 32) { + if(pTga->depthflag == BPP24) { TGA_FAST_WRITE_REG(fgcolor, TGA_BLOCK_COLOR2_REG); TGA_FAST_WRITE_REG(fgcolor, TGA_BLOCK_COLOR3_REG); TGA_FAST_WRITE_REG(fgcolor, TGA_BLOCK_COLOR4_REG); @@ -867,7 +873,7 @@ else pTga->block_or_opaque_p = USE_OPAQUE_FILL; - if(pScrn->depth == 8) { + if(pTga->depthflag == BPP8PACKED) { fgcolor = fg | (fg << 8) | (fg << 16) | (fg << 24); bgcolor = bg | (bg << 8) | (bg << 16) | (bg << 24); pmask = planemask | (planemask << 8) | (planemask << 16) | @@ -885,7 +891,7 @@ /* we can use block fill mode to draw a transparent stipple */ TGA_FAST_WRITE_REG(fgcolor, TGA_BLOCK_COLOR0_REG); TGA_FAST_WRITE_REG(fgcolor, TGA_BLOCK_COLOR1_REG); - if(pScrn->depth == 32) { + if(pTga->depthflag == BPP24) { TGA_FAST_WRITE_REG(fgcolor, TGA_BLOCK_COLOR2_REG); TGA_FAST_WRITE_REG(fgcolor, TGA_BLOCK_COLOR3_REG); TGA_FAST_WRITE_REG(fgcolor, TGA_BLOCK_COLOR4_REG); @@ -934,7 +940,7 @@ TGA_FAST_WRITE_REG(pTga->current_rop, TGA_RASTEROP_REG); TGA_FAST_WRITE_REG(pTga->current_planemask, TGA_PLANEMASK_REG); - if(pScrn->depth == 8) + if(pTga->depthflag == BPP8PACKED) align = FB_OFFSET(x, y) % 4; else align = x % 4; @@ -1249,7 +1255,7 @@ TGA_GET_OFFSET(); /* ErrorF("TGASetupForDashedLine called\n"); */ - if(pScrn->depth == 8) { + if(pTga->depthflag == BPP8PACKED) { color1 = fg | (fg << 8) | (fg << 16) | (fg << 24); color2 = bg | (bg << 8) | (bg << 16) | (bg << 24); pmask = planemask | (planemask << 8) | (planemask << 16) Index: xc/programs/Xserver/hw/xfree86/drivers/tga/tga_dac.c diff -u xc/programs/Xserver/hw/xfree86/drivers/tga/tga_dac.c:1.9 xc/programs/Xserver/hw/xfree86/drivers/tga/tga_dac.c:1.10 --- xc/programs/Xserver/hw/xfree86/drivers/tga/tga_dac.c:1.9 Fri Nov 19 08:54:52 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/tga/tga_dac.c Wed Mar 8 16:31:20 2000 @@ -21,7 +21,7 @@ * * Authors: Alan Hourihane, <alanh@fairlite.demon.co.uk> */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tga/tga_dac.c,v 1.9 1999/11/19 13:54:52 hohndel Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tga/tga_dac.c,v 1.10 2000/03/06 22:59:31 dawes Exp $ */ #include "xf86.h" #include "xf86_OSproc.h" @@ -136,7 +136,7 @@ (pReg->tgaRegs[0x07] << 22) | (pReg->tgaRegs[0x09] << 30); - pReg->tgaRegs[0x12] = 0x05; + pReg->tgaRegs[0x12] = 0x01; pReg->tgaRegs[0x13] = 0x0000; return TRUE; @@ -150,6 +150,7 @@ tgaReg->tgaRegs[0x10] = TGA_READ_REG(TGA_HORIZ_REG); tgaReg->tgaRegs[0x11] = TGA_READ_REG(TGA_VERT_REG); tgaReg->tgaRegs[0x12] = TGA_READ_REG(TGA_VALID_REG); + tgaReg->tgaRegs[0x13] = TGA_READ_REG(TGA_BASE_ADDR_REG); return; } @@ -165,6 +166,7 @@ TGA_WRITE_REG(tgaReg->tgaRegs[0x10], TGA_HORIZ_REG); TGA_WRITE_REG(tgaReg->tgaRegs[0x11], TGA_VERT_REG); + TGA_WRITE_REG(tgaReg->tgaRegs[0x13], TGA_BASE_ADDR_REG); TGA_WRITE_REG(tgaReg->tgaRegs[0x12], TGA_VALID_REG); /* Re-enable Video */ Index: xc/programs/Xserver/hw/xfree86/drivers/tga/tga_driver.c diff -u xc/programs/Xserver/hw/xfree86/drivers/tga/tga_driver.c:1.38 xc/programs/Xserver/hw/xfree86/drivers/tga/tga_driver.c:1.42 --- xc/programs/Xserver/hw/xfree86/drivers/tga/tga_driver.c:1.38 Wed Mar 8 16:31:20 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/tga/tga_driver.c Wed Mar 8 16:31:20 2000 @@ -22,7 +22,7 @@ * Authors: Alan Hourihane, <alanh@fairlite.demon.co.uk> * Matthew Grossman, <mattg@oz.net> - acceleration and misc fixes */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tga/tga_driver.c,v 1.38 2000/02/15 18:01:16 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tga/tga_driver.c,v 1.42 2000/03/06 22:59:32 dawes Exp $ */ /* #include "compiler.h" */ /* everybody includes these */ @@ -167,7 +167,8 @@ OPTION_RGB_BITS, OPTION_NOACCEL, OPTION_SYNC_ON_GREEN, - OPTION_DAC_6_BIT + OPTION_DAC_6_BIT, + OPTION_NOXAAPOLYSEGMENT } TGAOpts; static OptionInfoRec TGAOptions[] = { @@ -177,7 +178,8 @@ { OPTION_RGB_BITS, "RGBbits", OPTV_INTEGER, {0}, FALSE }, { OPTION_NOACCEL, "NoAccel", OPTV_BOOLEAN, {0}, FALSE }, { OPTION_SYNC_ON_GREEN, "SyncOnGreen", OPTV_BOOLEAN, {0}, FALSE }, - { OPTION_DAC_6_BIT, "Dac6Bit", OPTV_BOOLEAN, {0}, FALSE }, + { OPTION_DAC_6_BIT, "Dac6Bit", OPTV_BOOLEAN, {0}, FALSE }, + { OPTION_NOXAAPOLYSEGMENT, "NoXaaPolySegment",OPTV_BOOLEAN,{0}, FALSE }, { -1, NULL, OPTV_NONE, {0}, FALSE } }; @@ -314,8 +316,6 @@ Bool foundScreen = FALSE; EntityInfoPtr pEnt; - if (flags & PROBE_DETECTISA) return FALSE; - if (flags & PROBE_DETECTFBDEV) return FALSE; /* * The aim here is to find all cards that this driver can handle, * and for the ones not already claimed by another driver, claim the @@ -372,10 +372,9 @@ if (numUsed <= 0) return FALSE; - if (flags & PROBE_DETECTPCI) - return TRUE; - - for (i = 0; i < numUsed; i++) { + if (flags & PROBE_DETECT) + foundScreen = TRUE; + else for (i = 0; i < numUsed; i++) { pEnt = xf86GetEntityInfo(usedChips[i]); /* @@ -458,6 +457,8 @@ char *mod = NULL; pointer Base; + if (flags & PROBE_DETECT) return FALSE; + /* * Note: This function is only called once at server startup, and * not at the start of each server generation. This means that @@ -577,6 +578,11 @@ xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "6 bit DAC enabled\n"); } + if(xf86ReturnOptValBool(TGAOptions, OPTION_NOXAAPOLYSEGMENT, FALSE)) { + pTga->NoXaaPolySegment = TRUE; + xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "XAA PolySegment() disabled\n"); + } + /* end option processing */ /* @@ -1278,7 +1284,7 @@ pScrn->memPhysBase = pTga->FbAddress; pScrn->fbOffset = 0; - n = xf86XVListGenericAdaptors(&ptr); + n = xf86XVListGenericAdaptors(pScrn,&ptr); if(n) { xf86XVScreenInit(pScreen, ptr, n); Index: xc/programs/Xserver/hw/xfree86/drivers/trident/Imakefile diff -u xc/programs/Xserver/hw/xfree86/drivers/trident/Imakefile:1.21 xc/programs/Xserver/hw/xfree86/drivers/trident/Imakefile:1.23 --- xc/programs/Xserver/hw/xfree86/drivers/trident/Imakefile:1.21 Wed Mar 8 16:31:21 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/trident/Imakefile Wed Mar 8 16:31:21 2000 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/trident/Imakefile,v 1.21 2000/01/26 22:05:56 tsi Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/trident/Imakefile,v 1.23 2000/03/03 01:05:44 dawes Exp $ XCOMM XCOMM This is an Imakefile for the TRIDENT driver. XCOMM @@ -23,7 +23,7 @@ -I$(XF86SRC)/rac -I$(XF86SRC)/int10 \ -I$(XF86SRC)/ddc -I$(XF86SRC)/i2c \ -I$(FONTINCSRC) -I$(SERVERSRC)/include -I$(XINCLUDESRC) \ - -I$(XTOP)/include/extensions + -I$(XTOP)/include/extensions -I$(XF86OSSRC)/vbe #endif #if MakeHasPosixVariableSubstitutions @@ -35,6 +35,11 @@ ObjectModuleTarget(trident,$(OBJS)) InstallObjectModule(trident,$(MODULEDIR),drivers) + +#if !defined(XF86DriverSDK) +CppManTarget(trident,) +InstallModuleManPage(trident) +#endif DependTarget() Index: xc/programs/Xserver/hw/xfree86/drivers/trident/trident.cpp diff -u /dev/null xc/programs/Xserver/hw/xfree86/drivers/trident/trident.cpp:1.1 --- /dev/null Wed Mar 8 16:31:21 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/trident/trident.cpp Wed Mar 8 16:31:21 2000 @@ -0,0 +1,30 @@ +.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/trident/trident.cpp,v 1.1 2000/03/03 01:05:44 dawes Exp $ +.TH TRIDENT __drivermansuffix__ "Version 4.0" "XFree86" +.SH NAME +trident \- Trident video driver +.SH SYNOPSIS +.B "Section ""Device""" +.br +.BI " Identifier """ devname """" +.br +.B " Driver ""trident""" +.br +\ \ ... +.br +.B EndSection +.SH DESCRIPTION +.B trident +is an XFree86 driver for Trident video chips. +THIS MAN PAGE NEEDS TO BE FILLED IN. +.SH SUPPORTED HARDWARE +The +.B trident +driver supports... +.SH CONFIGURATION DETAILS +Please refer to XF86Config(__filemansuffix__) for general configuration +details. This section only covers configuration details specific to this +driver. +.SH "SEE ALSO" +XFree86(1), XF86Config(__filemansuffix__), xf86config(1), Xserver(1), X(1) +.SH AUTHORS +Authors include: ... Index: xc/programs/Xserver/hw/xfree86/drivers/trident/trident_driver.c diff -u xc/programs/Xserver/hw/xfree86/drivers/trident/trident_driver.c:1.85 xc/programs/Xserver/hw/xfree86/drivers/trident/trident_driver.c:1.90 --- xc/programs/Xserver/hw/xfree86/drivers/trident/trident_driver.c:1.85 Wed Mar 8 16:31:21 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/trident/trident_driver.c Wed Mar 8 16:31:21 2000 @@ -28,7 +28,7 @@ * Massimiliano Ghilardi, max@Linuz.sns.it, some fixes to the * clockchip programming code. */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/trident/trident_driver.c,v 1.85 2000/02/21 19:23:10 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/trident/trident_driver.c,v 1.90 2000/03/06 23:54:13 dawes Exp $ */ #include "cfb24_32.h" @@ -46,7 +46,7 @@ #include "xf86cmap.h" #include "vgaHW.h" #include "xf86RAC.h" -#include "xf86int10.h" +#include "vbe.h" #include "mipointer.h" @@ -431,6 +431,12 @@ NULL }; +static const char *vbeSymbols[] = { + "VBEInit", + "vbeDoEDID", + NULL +}; + #ifdef XFree86LOADER static MODULESETUPPROTO(tridentSetup); @@ -459,7 +465,7 @@ if (!setupDone) { setupDone = TRUE; xf86AddDriver(&TRIDENT, module, 0); - LoaderRefSymLists(vgahwSymbols, fbSymbols, i2cSymbols, + LoaderRefSymLists(vgahwSymbols, fbSymbols, i2cSymbols, vbeSymbols, xaaSymbols, shadowSymbols, NULL); return (pointer)TRUE; } @@ -769,8 +775,6 @@ int numUsed; Bool foundScreen = FALSE; - if (flags & PROBE_DETECTFBDEV) return FALSE; - if ((numDevSections = xf86MatchDevice(TRIDENT_DRIVER_NAME, &devSections)) <= 0) { /* @@ -800,12 +804,10 @@ TRIDENTChipsets, TRIDENTPciChipsets, devSections, numDevSections, drv, &usedChips); - if (numUsed > 0 && (flags & PROBE_DETECTPCI)) - return TRUE; - if (numUsed <= 0 && (flags & PROBE_DETECTPCI)) - return FALSE; - - for (i = 0; i < numUsed; i++) { + if (numUsed > 0) { + if (flags & PROBE_DETECT) + foundScreen = TRUE; + else for (i = 0; i < numUsed; i++) { ScrnInfoPtr pScrn; /* Allocate a ScrnInfoRec and claim the slot */ @@ -827,6 +829,8 @@ foundScreen = TRUE; xf86ConfigActivePciEntity(pScrn, usedChips[i], TRIDENTPciChipsets, NULL, NULL, NULL, NULL, NULL); + } + xfree(usedChips); } } @@ -836,11 +840,9 @@ drv,TridentFindIsaDevice,devSections, numDevSections,&usedChips); if (numUsed > 0) { - - if (flags & PROBE_DETECTISA) - return TRUE; - - for (i = 0; i < numUsed; i++) { + if (flags & PROBE_DETECT) + foundScreen = TRUE; + else for (i = 0; i < numUsed; i++) { ScrnInfoPtr pScrn = xf86AllocateScreen(drv,0); pScrn->driverVersion = VERSION; @@ -859,12 +861,10 @@ xf86ConfigActiveIsaEntity(pScrn,usedChips[i],TRIDENTISAchipsets, NULL,NULL,NULL,NULL,NULL); } + xfree(usedChips); } if (devSections) xfree(devSections); - devSections = NULL; - xfree(usedChips); - usedChips = NULL; return foundScreen; } @@ -929,6 +929,18 @@ } } +extern xf86MonPtr ConfiguredMonitor; + +void +TRIDENTProbeDDC(ScrnInfoPtr pScrn, int index) +{ + vbeInfoPtr pVbe; + if (xf86LoadSubModule(pScrn, "vbe")) { + pVbe = VBEInit(NULL,index); + ConfiguredMonitor = vbeDoEDID(pVbe); + } +} + /* Mandatory */ static Bool TRIDENTPreInit(ScrnInfoPtr pScrn, int flags) @@ -947,6 +959,39 @@ char *mod = NULL; const char *Sym = ""; + /* Allocate the TRIDENTRec driverPrivate */ + if (!TRIDENTGetRec(pScrn)) { + return FALSE; + } + pTrident = TRIDENTPTR(pScrn); + pTrident->pScrn = pScrn; + + if (pScrn->numEntities > 1) + return FALSE; + /* This is the general case */ + for (i = 0; i<pScrn->numEntities; i++) { + pTrident->pEnt = xf86GetEntityInfo(pScrn->entityList[i]); + if (pTrident->pEnt->resources) return FALSE; + pTrident->Chipset = pTrident->pEnt->chipset; + pScrn->chipset = (char *)xf86TokenToString(TRIDENTChipsets, + pTrident->pEnt->chipset); + /* This driver can handle ISA and PCI buses */ + if (pTrident->pEnt->location.type == BUS_PCI) { + pTrident->PciInfo = xf86GetPciInfoForEntity(pTrident->pEnt->index); + pTrident->PciTag = pciTag(pTrident->PciInfo->bus, + pTrident->PciInfo->device, + pTrident->PciInfo->func); + pTrident->Linear = TRUE; + } else { + pTrident->Linear = FALSE; + } + } + + if (flags & PROBE_DETECT) { + TRIDENTProbeDDC(pScrn, pTrident->pEnt->index); + return TRUE; + } + /* Set pScrn->monitor */ pScrn->monitor = pScrn->confScreen->monitor; @@ -998,34 +1043,6 @@ vgaHWGetIOBase(VGAHWPTR(pScrn)); vgaIOBase = VGAHWPTR(pScrn)->IOBase; - /* Allocate the TRIDENTRec driverPrivate */ - if (!TRIDENTGetRec(pScrn)) { - return FALSE; - } - pTrident = TRIDENTPTR(pScrn); - pTrident->pScrn = pScrn; - - if (pScrn->numEntities > 1) - return FALSE; - /* This is the general case */ - for (i = 0; i<pScrn->numEntities; i++) { - pTrident->pEnt = xf86GetEntityInfo(pScrn->entityList[i]); - if (pTrident->pEnt->resources) return FALSE; - pTrident->Chipset = pTrident->pEnt->chipset; - pScrn->chipset = (char *)xf86TokenToString(TRIDENTChipsets, - pTrident->pEnt->chipset); - /* This driver can handle ISA and PCI buses */ - if (pTrident->pEnt->location.type == BUS_PCI) { - pTrident->PciInfo = xf86GetPciInfoForEntity(pTrident->pEnt->index); - pTrident->PciTag = pciTag(pTrident->PciInfo->bus, - pTrident->PciInfo->device, - pTrident->PciInfo->func); - pTrident->Linear = TRUE; - } else { - pTrident->Linear = FALSE; - } - } - if (xf86LoadSubModule(pScrn, "int10")) { xf86DrvMsg(pScrn->scrnIndex,X_INFO,"Initializing int10\n"); pTrident->Int10 = xf86InitInt10(pTrident->pEnt->index); @@ -1873,8 +1890,13 @@ /* Initialize DDC1 if possible */ if (IsPrimaryCard) { - if (pTrident->ddc1Read) - xf86PrintEDID(xf86DoEDID_DDC1(pScrn->scrnIndex,vgaHWddc1SetSpeed,pTrident->ddc1Read ) ); + if (pTrident->ddc1Read) { + if (xf86LoadSubModule(pScrn, "vbe")) { + xf86MonPtr pMon; + pMon = vbeDoEDID(VBEInit(NULL,pTrident->pEnt->index)); + xf86SetDDCproperties(pScrn,xf86PrintEDID(pMon)); + } + } } if (IsPciCard && UseMMIO) { @@ -2330,7 +2352,7 @@ XF86VideoAdaptorPtr *ptr; int n; - n = xf86XVListGenericAdaptors(&ptr); + n = xf86XVListGenericAdaptors(pScrn,&ptr); if (n) { xf86XVScreenInit(pScreen, ptr, n); } Index: xc/programs/Xserver/hw/xfree86/drivers/tseng/Imakefile diff -u xc/programs/Xserver/hw/xfree86/drivers/tseng/Imakefile:1.15 xc/programs/Xserver/hw/xfree86/drivers/tseng/Imakefile:1.16 --- xc/programs/Xserver/hw/xfree86/drivers/tseng/Imakefile:1.15 Wed Mar 8 16:31:21 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/tseng/Imakefile Wed Mar 8 16:31:21 2000 @@ -4,7 +4,7 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tseng/Imakefile,v 1.15 2000/01/23 04:44:32 dawes Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tseng/Imakefile,v 1.16 2000/03/03 01:05:44 dawes Exp $ #define IHaveModules #include <Server.tmpl> @@ -43,6 +43,11 @@ ObjectModuleTarget(tseng, $(OBJS)) InstallObjectModule(tseng,$(MODULEDIR),drivers) + +#if !defined(XF86DriverSDK) +CppManTarget(tseng,) +InstallModuleManPage(tseng) +#endif DependTarget() Index: xc/programs/Xserver/hw/xfree86/drivers/tseng/tseng.cpp diff -u /dev/null xc/programs/Xserver/hw/xfree86/drivers/tseng/tseng.cpp:1.1 --- /dev/null Wed Mar 8 16:31:21 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/tseng/tseng.cpp Wed Mar 8 16:31:21 2000 @@ -0,0 +1,30 @@ +.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tseng/tseng.cpp,v 1.1 2000/03/03 01:05:44 dawes Exp $ +.TH TSENG __drivermansuffix__ "Version 4.0" "XFree86" +.SH NAME +tseng \- Tseng Labs video driver +.SH SYNOPSIS +.B "Section ""Device""" +.br +.BI " Identifier """ devname """" +.br +.B " Driver ""tseng""" +.br +\ \ ... +.br +.B EndSection +.SH DESCRIPTION +.B tseng +is an XFree86 driver for Tseng Labs video cards. +THIS MAN PAGE NEEDS TO BE FILLED IN. +.SH SUPPORTED HARDWARE +The +.B tseng +driver supports... +.SH CONFIGURATION DETAILS +Please refer to XF86Config(__filemansuffix__) for general configuration +details. This section only covers configuration details specific to this +driver. +.SH "SEE ALSO" +XFree86(1), XF86Config(__filemansuffix__), xf86config(1), Xserver(1), X(1) +.SH AUTHORS +Authors include: ... Index: xc/programs/Xserver/hw/xfree86/drivers/tseng/tseng_driver.c diff -u xc/programs/Xserver/hw/xfree86/drivers/tseng/tseng_driver.c:1.65 xc/programs/Xserver/hw/xfree86/drivers/tseng/tseng_driver.c:1.68 --- xc/programs/Xserver/hw/xfree86/drivers/tseng/tseng_driver.c:1.65 Wed Mar 8 16:31:21 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/tseng/tseng_driver.c Wed Mar 8 16:31:21 2000 @@ -1,5 +1,5 @@ /* - * $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tseng/tseng_driver.c,v 1.65 2000/02/21 19:23:12 dawes Exp $ + * $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tseng/tseng_driver.c,v 1.68 2000/03/06 23:54:15 dawes Exp $ * * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany. * @@ -470,7 +470,6 @@ PDEBUG(" TsengProbe\n"); - if (flags & PROBE_DETECTFBDEV) return FALSE; /* * The aim here is to find all cards that this driver can handle, * and for the ones not already claimed by another driver, claim the @@ -512,19 +511,19 @@ TsengChipsets, TsengPciChipsets, devSections,numDevSections, drv, &usedChips); - if ((numUsed > 0) && (flags & PROBE_DETECTPCI)) - return TRUE; - if ((numUsed <= 0) && (flags & PROBE_DETECTPCI)) - return FALSE; - for (i = 0; i < numUsed; i++) { + if (numUsed > 0) { + if (flags & PROBE_DETECT) + foundScreen = TRUE; + else for (i = 0; i < numUsed; i++) { /* Allocate a ScrnInfoRec */ ScrnInfoPtr pScrn = xf86AllocateScreen(drv,0); TsengAssignFPtr(pScrn); xf86ConfigActivePciEntity(pScrn,usedChips[i],TsengPciChipsets, NULL,NULL,NULL,NULL,NULL); foundScreen = TRUE; + } + xfree(usedChips); } - xfree(usedChips); } /* Check for non-PCI cards */ @@ -532,9 +531,9 @@ TsengIsaChipsets,drv, TsengFindIsaDevice, devSections, numDevSections, &usedChips); if (numUsed > 0) { - if (flags & PROBE_DETECTISA) - return TRUE; - for (i = 0; i < numUsed; i++) { + if (flags & PROBE_DETECT) + foundScreen = TRUE; + else for (i = 0; i < numUsed; i++) { ScrnInfoPtr pScrn = xf86AllocateScreen(drv,0); TsengAssignFPtr(pScrn); foundScreen = TRUE; @@ -1455,6 +1454,8 @@ MessageType from; int i; char *mod = NULL; + + if (flags & PROBE_DETECT) return FALSE; PDEBUG(" TsengPreInit\n"); /* Index: xc/programs/Xserver/hw/xfree86/drivers/v4l/Imakefile diff -u xc/programs/Xserver/hw/xfree86/drivers/v4l/Imakefile:1.3 xc/programs/Xserver/hw/xfree86/drivers/v4l/Imakefile:1.4 --- xc/programs/Xserver/hw/xfree86/drivers/v4l/Imakefile:1.3 Sat Aug 14 06:49:57 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/v4l/Imakefile Wed Mar 8 16:31:22 2000 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/v4l/Imakefile,v 1.3 1999/08/14 10:49:57 dawes Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/v4l/Imakefile,v 1.4 2000/03/03 01:05:45 dawes Exp $ XCOMM XCOMM This is an Imakefile for the v4l Xv driver. XCOMM @@ -31,6 +31,11 @@ ObjectModuleTarget(v4l,$(OBJS)) InstallObjectModule(v4l,$(MODULEDIR),drivers/linux) + +#if !defined(XF86DriverSDK) +CppManTarget(v4l,) +InstallModuleManPage(v4l) +#endif DependTarget() Index: xc/programs/Xserver/hw/xfree86/drivers/v4l/v4l.c diff -u xc/programs/Xserver/hw/xfree86/drivers/v4l/v4l.c:1.15 xc/programs/Xserver/hw/xfree86/drivers/v4l/v4l.c:1.16 --- xc/programs/Xserver/hw/xfree86/drivers/v4l/v4l.c:1.15 Wed Mar 8 16:31:22 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/v4l/v4l.c Wed Mar 8 16:31:22 2000 @@ -2,7 +2,7 @@ * video4linux Xv Driver * based on Michael Schimek's permedia 2 driver. */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/v4l/v4l.c,v 1.15 2000/01/30 01:15:57 alanh Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/v4l/v4l.c,v 1.16 2000/02/22 02:00:54 mvojkovi Exp $ */ #include "videodev.h" #include "xf86.h" @@ -214,7 +214,7 @@ int one=1; DEBUG(xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, 2, "Xv/PV\n")); - /* FIXME: vid-* is ignored for now */ + /* FIXME: vid-* is ignored for now, not supported by v4l */ V4lQueryBestSize(pScrn, 0, vid_w, vid_h, drw_w, drw_h, &dw, &dh, data); /* if the window is too big, center the video */ @@ -535,30 +535,27 @@ static XF86AttributeRec Attributes[8] = { - {XvSettable | XvGettable, 0, 255, XV_ENCODING}, - {XvSettable | XvGettable, 0, 255, XV_BRIGHTNESS}, - {XvSettable | XvGettable, 0, 255, XV_CONTRAST}, - {XvSettable | XvGettable, 0, 255, XV_SATURATION}, - {XvSettable | XvGettable, 0, 255, XV_HUE}, - {XvSettable | XvGettable, 0, 255, XV_FREQ}, - {XvSettable | XvGettable, 0, 255, XV_MUTE}, - {XvSettable | XvGettable, 0, 255, XV_VOLUME} + {XvSettable | XvGettable, -1000, 1000, XV_ENCODING}, + {XvSettable | XvGettable, -1000, 1000, XV_BRIGHTNESS}, + {XvSettable | XvGettable, -1000, 1000, XV_CONTRAST}, + {XvSettable | XvGettable, -1000, 1000, XV_SATURATION}, + {XvSettable | XvGettable, -1000, 1000, XV_HUE}, + {XvSettable | XvGettable, -1000, 1000, XV_VOLUME}, + {XvSettable | XvGettable, 0, 1, XV_MUTE}, + {XvSettable | XvGettable, 0, 16*1000, XV_FREQ}, }; -static Bool -V4LProbe(DriverPtr drv, int flags) +static int +V4LInit(ScrnInfoPtr pScrn, XF86VideoAdaptorPtr **adaptors) { PortPrivPtr pPPriv; DevUnion *Private; - XF86VideoAdaptorPtr VAR[4]; + XF86VideoAdaptorPtr *VAR = NULL; XF86VideoEncodingPtr enc; char dev[16]; int fd,i,nenc; - if (flags & PROBE_DETECT) - return FALSE; - DEBUG(xf86Msg(X_INFO, "v4l: init start\n")); for (i = 0; i < 4; i++) { @@ -583,6 +580,7 @@ pPPriv->nenc = nenc; /* alloc VideoAdaptorRec */ + VAR = xrealloc(VAR,sizeof(XF86VideoAdaptorPtr)*(i+1)); VAR[i] = xalloc(sizeof(XF86VideoAdaptorRec)); if (!VAR[i]) return FALSE; @@ -633,9 +631,17 @@ xvVolume = MAKE_ATOM(XV_VOLUME); DEBUG(xf86Msg(X_INFO, "v4l: init done, %d found\n",i)); - if (i) { - xf86XVRegisterGenericAdaptor(VAR, i); - drv->refCount++; - } - return (VAR != NULL); + + *adaptors = VAR; + return i; +} + +static Bool +V4LProbe(DriverPtr drv, int flags) +{ + if (flags & PROBE_DETECT) + return FALSE; + + xf86XVRegisterGenericAdaptorDriver(V4LInit); + return TRUE; } Index: xc/programs/Xserver/hw/xfree86/drivers/v4l/v4l.cpp diff -u /dev/null xc/programs/Xserver/hw/xfree86/drivers/v4l/v4l.cpp:1.1 --- /dev/null Wed Mar 8 16:31:22 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/v4l/v4l.cpp Wed Mar 8 16:31:22 2000 @@ -0,0 +1,30 @@ +.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/v4l/v4l.cpp,v 1.1 2000/03/03 01:05:45 dawes Exp $ +.TH V4L __drivermansuffix__ "Version 4.0" "XFree86" +.SH NAME +v4l \- Video 4 Linux driver +.SH SYNOPSIS +.B "Section ""Device""" +.br +.BI " Identifier """ devname """" +.br +.B " Driver ""v4l""" +.br +\ \ ... +.br +.B EndSection +.SH DESCRIPTION +.B v4l +is an XFree86 driver for Video 4 Linux. +THIS MAN PAGE NEEDS TO BE FILLED IN. +.SH SUPPORTED HARDWARE +The +.B v4l +driver supports... +.SH CONFIGURATION DETAILS +Please refer to XF86Config(__filemansuffix__) for general configuration +details. This section only covers configuration details specific to this +driver. +.SH "SEE ALSO" +XFree86(1), XF86Config(__filemansuffix__), xf86config(1), Xserver(1), X(1) +.SH AUTHORS +Authors include: ... Index: xc/programs/Xserver/hw/xfree86/drivers/vga/generic.c diff -u xc/programs/Xserver/hw/xfree86/drivers/vga/generic.c:1.39 xc/programs/Xserver/hw/xfree86/drivers/vga/generic.c:1.42 --- xc/programs/Xserver/hw/xfree86/drivers/vga/generic.c:1.39 Wed Mar 8 16:31:22 2000 +++ xc/programs/Xserver/hw/xfree86/drivers/vga/generic.c Wed Mar 8 16:31:22 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/vga/generic.c,v 1.39 2000/02/21 19:23:13 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/vga/generic.c,v 1.42 2000/03/06 23:54:16 dawes Exp $ */ /* * Copyright (C) 1998 The XFree86 Project, Inc. All Rights Reserved. * @@ -238,7 +238,6 @@ int *usedChips; int i; - if (flags & PROBE_DETECTFBDEV) return FALSE; /* * Find the config file Device sections that match this * driver, and return if there are none. @@ -254,15 +253,10 @@ GenericChipsets, GenericPCIchipsets, devSections,numDevSections, drv, &usedChips); - if (numUsed<=0) return FALSE; - - if (flags & PROBE_DETECTPCI) - return TRUE; - - if (flags & PROBE_DETECTISA) - goto detectisa; - if (numUsed > 0) { + if (flags & PROBE_DETECT) + foundScreen = TRUE; + else { for (i = 0; i < numUsed; i++) { /* Allocate a ScrnInfoRec */ ScrnInfoPtr pScrn = xf86AllocateScreen(drv,0); @@ -282,18 +276,20 @@ xf86ConfigActivePciEntity(pScrn,usedChips[i],GenericPCIchipsets, NULL,NULL,NULL,NULL,NULL); } + } + xfree(usedChips); } } -detectisa: + /* Isa Bus */ numUsed = xf86MatchIsaInstances(VGA_NAME,GenericChipsets, GenericISAchipsets,drv, VGAFindIsaDevice,devSections, numDevSections,&usedChips); - if(numUsed > 0) { - if (flags & PROBE_DETECTISA) - return TRUE; - for (i = 0; i < numUsed; i++) { + if (numUsed > 0) { + if (flags & PROBE_DETECT) + foundScreen = TRUE; + else for (i = 0; i < numUsed; i++) { ScrnInfoPtr pScrn = xf86AllocateScreen(drv,0); pScrn->driverVersion = VGA_VERSION_CURRENT; @@ -312,6 +308,7 @@ xf86ConfigActiveIsaEntity(pScrn,usedChips[i],GenericISAchipsets, NULL,NULL,NULL,NULL,NULL); } + xfree(usedChips); } if (devSections) xfree(devSections); @@ -460,6 +457,8 @@ vgaHWPtr pvgaHW; GenericPtr pGenericPriv; EntityInfoPtr pEnt; + + if (flags & PROBE_DETECT) return FALSE; /* Set the monitor */ pScreenInfo->monitor = pScreenInfo->confScreen->monitor; Index: xc/programs/Xserver/hw/xfree86/drivers/vga/vga.cpp diff -u xc/programs/Xserver/hw/xfree86/drivers/vga/vga.cpp:1.2 xc/programs/Xserver/hw/xfree86/drivers/vga/vga.cpp:1.3 --- xc/programs/Xserver/hw/xfree86/drivers/vga/vga.cpp:1.2 Sat Aug 28 05:01:08 1999 +++ xc/programs/Xserver/hw/xfree86/drivers/vga/vga.cpp Wed Mar 8 16:31:22 2000 @@ -1,5 +1,5 @@ -.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/vga/vga.cpp,v 1.2 1999/08/28 09:01:08 dawes Exp $ -.TH VGA __drivermansuffix__ "Version 3.9.16" "XFree86" +.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/vga/vga.cpp,v 1.3 2000/03/03 01:05:47 dawes Exp $ +.TH VGA __drivermansuffix__ "Version 4.0" "XFree86" .SH NAME vga \- Generic VGA video driver .SH SYNOPSIS Index: xc/programs/Xserver/hw/xfree86/etc/Imakefile diff -u xc/programs/Xserver/hw/xfree86/etc/Imakefile:3.35 xc/programs/Xserver/hw/xfree86/etc/Imakefile:3.36 --- xc/programs/Xserver/hw/xfree86/etc/Imakefile:3.35 Wed Mar 8 16:31:22 2000 +++ xc/programs/Xserver/hw/xfree86/etc/Imakefile Wed Mar 8 16:31:22 2000 @@ -4,7 +4,7 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/etc/Imakefile,v 3.35 2000/02/18 12:20:07 tsi Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/etc/Imakefile,v 3.36 2000/02/24 18:50:44 dawes Exp $ #include <Server.tmpl> #if SystemV @@ -51,12 +51,11 @@ #endif #endif -PREINST = preinst.sh -POSTINST = postinst.sh +XINST = Xinstall.sh FILES = $(CONFIGFILES) $(TERMFILES) \ $(PATCHFILES) $(XDMCONF) \ - et4000clock.c xmodmap.std $(MISCFILES) $(POSTINST) $(PREINST) + xmodmap.std $(MISCFILES) $(XINST) INCLUDES = -I. -I$(XF86COMSRC) -I$(XF86OSSRC) \ -I$(SERVERSRC)/include -I$(XINCLUDESRC) -I$(XF86SRC)/scanpci \ -I$(XF86SRC)/dummylib Index: xc/programs/Xserver/hw/xfree86/etc/Xinstall.sh diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/Xinstall.sh:1.7 --- /dev/null Wed Mar 8 16:31:22 2000 +++ xc/programs/Xserver/hw/xfree86/etc/Xinstall.sh Wed Mar 8 16:31:22 2000 @@ -0,0 +1,992 @@ +#!/bin/sh + +# +# $XFree86: xc/programs/Xserver/hw/xfree86/etc/Xinstall.sh,v 1.7 2000/02/29 18:01:20 dawes Exp $ +# +# Copyright © 2000 by Precision Insight, Inc. +# Portions Copyright © 1996-2000 by The XFree86 Project, Inc. +# +# This script should be used to install XFree86 4.0. +# +# Parts of this script are based on the old preinst.sh and postinst.sh +# scripts. +# +# Set tabs to 4 spaces to view/edit this file. +# +# Authors: David Dawes <dawes@xfree86.org> +# + +VERSION=4.0 + +RUNDIR=/usr/X11R6 +ETCDIR=/etc/X11 +VARDIR=/var + +if [ X"$1" = "X-test" -o X"$XINST_TEST" != X ]; then + RUNDIR=/home1/test/X11R6 + ETCDIR=/home1/test/etcX11 + VARDIR=/home1/test/var + if [ X"$1" = "X-test" ]; then + shift + fi + echo "" + echo "Running in test mode" +fi + +OLDFILES="" + +OLDDIRS=" \ + $RUNDIR/lib/X11/xkb/compiled \ + " + +BASEDIST=" \ + Xbin.tgz \ + Xlib.tgz \ + Xman.tgz \ + Xdoc.tgz \ + Xfnts.tgz \ + Xfenc.tgz \ + " + +ETCDIST="Xetc.tgz" + +VARDIST="Xvar.tgz" + +SERVDIST=" \ + Xxserv.tgz \ + Xmod.tgz \ + " +OPTDIST=" \ + Xfsrv.tgz \ + Xnest.tgz \ + Xprog.tgz \ + Xprt.tgz \ + Xvfb.tgz \ + Xf100.tgz \ + Xfcyr.tgz \ + Xflat2.tgz \ + Xfnon.tgz \ + Xfscl.tgz \ + Xhtml.tgz \ + Xjdoc.tgz \ + Xps.tgz \ + " + +ETCLINKS=" \ + app-defaults \ + fs \ + lbxproxy \ + proxymngr \ + rstart \ + twm \ + xdm \ + xinit \ + xsm \ + xserver \ + " + +FONTDIRS=" \ + local \ + misc + " + +WDIR=`pwd` + +# Check how to suppress newlines with echo (from perl's Configure) +((echo "xxx\c"; echo " ") > .echotmp) 2> /dev/null +if [ ! -f .echotmp ]; then + echo "Can't write to the current directory. Aborting"; + exit 1 +fi +if grep c .echotmp >/dev/null 2>&1; then + n='-n' + c='' +else + n='' + c='\c' +fi +rm -f .echotmp + +Echo() +{ + echo $n "$@""$c" +} + +ContinueNo() +{ + Echo "Do you wish to continue? (y/n) [n] " + read response + case "$response" in + [yY]*) + echo "" + ;; + *) + echo "Aborting the installation." + exit 2 + ;; + esac +} + +ContinueYes() +{ + Echo "Do you wish to continue? (y/n) [y] " + read response + case "$response" in + [nN]*) + echo "Aborting the installation." + exit 2 + ;; + *) + echo "" + ;; + esac +} + +Description() +{ + case $1 in + Xfsrv*) + echo "font server";; + Xnest*) + echo "Nested X server";; + Xprog*) + echo "programmer support";; + Xprt*) + echo "X print server";; + Xvfb*) + echo "Virtual framebuffer X server";; + Xf100*) + echo "100dpi fonts";; + Xfcyr*) + echo "Cyrillic fonts";; + Xflat2*) + echo "Latin-2 fonts";; + Xfnon*) + echo "Some large fonts";; + Xfscl*) + echo "Scaled fonts (Speedo and Type1)";; + Xhtml*) + echo "Docs in HTML";; + Xjdoc*) + echo "Docs in Japanese";; + Xps*) + echo "Docs in PostScript";; + *) + echo "unknown";; + esac +} + +ReadLink() +{ + rltmp="`ls -l $1`" + rl=`expr "$rltmp" : '.*-> \([^ ]*\)'` + echo $rl +} + +GetOsInfo() +{ + echo "Checking which OS you're running..." + + OsName="`uname`" + OsVersion="`uname -r`" + case "$OsName" in + SunOS) # Assumes SunOS 5.x + OsArch="`uname -p`" + ;; + *) + OsArch="`uname -m`" + ;; + esac + # Some SVR4.0 versions have a buggy uname that reports the node name + # for the OS name. Try to catch that here. Need to check what is + # reported for non-buggy versions. + if [ "$OsName" = "`uname -n`" -a -f /stand/unix ]; then + OsName=UNIX_SV + fi + echo "uname reports '$OsName' version '$OsVersion', architecture '$OsArch'." + + # Find the object type, where needed + + case "$OsName" in + Linux|FreeBSD|NetBSD) + if file -L /bin/sh | grep ELF > /dev/null 2>&1; then + OsObjFormat=ELF + else + OsObjFormat=a.out + fi + ;; + esac + + if [ X"$OsObjFormat" != X ]; then + Echo "Object format is '$OsObjFormat'. " + needNL=YES + fi + + # test's flag for symlinks + # + # For OSs that don't support symlinks, choose a type that is guaranteed to + # return false for regular files and directories. + + case "$OsName" in + FreeBSD) + case "$OsVersion" in + 2.*) + L="-h" + ;; + *) + L="-L" + esac + ;; + OS-with-no-symlinks) # Need to set this correctly + L="-b" + NoSymlinks=YES + ;; + *) + L="-L" + ;; + esac + + # Find the libc version, where needed + case "$OsName" in + Linux) + tmp="`ldd /bin/sh | grep libc.so 2> /dev/null`" + LibcPath=`expr "$tmp" : '[^/]*\(/[^ ]*\)'` + tmp="`strings $LibcPath | grep -i 'c library'`" + OsLibcMajor=`expr "$tmp" : '.* \([0-9][0-9]*\)'` + OsLibcMinor=`expr "$tmp" : '.* [0-9][0-9]*\.\([0-9][0-9]*\)'` + case "$OsLibcMajor" in + 2) + # 2 is the glibc version + OsLibcMajor=6 + ;; + esac + ;; + esac + + if [ X"$OsLibcMajor" != X ]; then + Echo "libc version is '$OsLibcMajor" + if [ X"$OsLibcMinor" != X ]; then + Echo ".$OsLibcMinor'." + else + Echo "'." + fi + needNL=YES + fi + if [ X"$needNL" = XYES ]; then + echo "" + fi + echo "" +} + +DoOsChecks() +{ + # Do some OS-specific checks + + case "$OsName" in + Linux) + case "$OsObjFormat" in + ELF) + # Check ldconfig + LDSO=`/sbin/ldconfig -v -n | awk '{ print $3 }'` + LDSOMIN=`echo $LDSO | awk -F[.-] '{ print $3 }'` + LDSOMID=`echo $LDSO | awk -F[.-] '{ print $2 }'` + LDSOMAJ=`echo $LDSO | awk -F[.-] '{ print $1 }'` + if [ "$LDSOMAJ" -gt 1 ]; then + : OK + else + if [ "$LDSOMID" -gt 7 ]; then + : OK + else + if [ "$LDSOMIN" -ge 14 ]; then + : OK + else + echo "" + echo "Before continuing, you will need to get a" + echo "current version of ld.so. Version 1.7.14 or" + echo "newer will do." + NEEDSOMETHING=YES + fi + fi + fi + ;; + esac + # The /dev/tty0 check is left out. Presumably nobody has a system where + # this is missing any more. + ;; + esac +} + +FindDistName() +{ + case "$OsName" in + DGUX) # Check this string + case "$OsArch" in + i*86) + DistName="DGUX-ix86" + ;; + *) + Message="DGUX binaries are only available for ix86 platforms" + ;; + esac + ;; + FreeBSD) + case "$OsArch" in + i386) + case "$OsVersion" in + 2.2*) + DistName="FreeBSD-2.2.x" + ;; + 3.*) + case "$OsObjFormat" in + ELF) + DistName="FreeBSD-3.x" + ;; + *) + Message="FreeBSD 3.x binaries are only available in ELF format" + ;; + esac + ;; + 4.*) + DistName="FreeBSD-4.x" + ;; + *) + Message="FreeBSD/i386 binaries are not available for this version" + ;; + esac + ;; + alpha) + case "$OsVersion" in + 3.*) + DistName="FreeBSD-alpha-3.x" + ;; + 4.*) + DistName="FreeBSD-alpha-4.x" + ;; + *) + Message="FreeBSD/alpha binaries are not available for this version" + ;; + esac + ;; + *) + Message="FreeBSD binaries are not available for this architecture" + ;; + esac + ;; + Linux) + case "$OsArch" in + i*86) + case "$OsLibcMajor" in + 5) + DistName="Linux-ix86-libc5" + ;; + 6) + case "$OsLibcMinor" in + 0) + DistName="Linux-ix86-glibc20" + ;; + 1) + DistName="Linux-ix86-glibc21" + ;; + *) + Message="No dist available for glibc 2.$OsLibcMinor. Try Linux-ix86-glibc21" + ;; + esac + ;; + *) + case "$OsObjFormat" in + a.out) + Message="Linux a.out is no longer supported" + ;; + *) + Message="No Linux/ix86 binaries for this libc version" + ;; + esac + ;; + esac + ;; + alpha) + case "$OsLibcMajor.$OsLibcMinor" in + 6.1) + DistName="Linux-alpha-glibc21" + ;; + 6.*) + Message="No Linux/alpha binaries for glibc 2.$OsLibcMinor. Try Linux-alpha-glibc21" + ;; + *) + Message="No Linux/alpha binaries for this libc version" + ;; + esac + ;; + *) + Message="No Linux binaries available for this architecture" + ;; + esac + ;; + LynxOS) # Check this + DistName="LynxOS" + ;; + NetBSD) + case "$OsArch" in + i386) + case "$OsVersion" in + 1.[3-9]*) # Check this + case "$OsObjFormat" in + a.out) + DistName="NetBSD-1.4.1" + ;; + *) + DistName="NetBSD-current-ELF" + ;; + esac + ;; + *) + Message="No NetBSD/i386 binaries available for this version" + ;; + esac + ;; + *) + Message="No NetBSD binaries available for this architecture" + ;; + esac + ;; + OpenBSD) + case "$OsArch" in + i386) + case "$OsVersion" in + 2.[6-9]*) # Check this + DistName="OpenBSD-2.6" + ;; + *) + Message="No OpenBSD/i386 binaries available for this version" + ;; + esac + ;; + *) + Message="No OpenBSD binaries available for this architecture" + ;; + esac + ;; + SunOS) + case "$OsArch" in + i386) + case "$OsVersion" in + 5.[67]*) + DistName="Solaris" + ;; + 5.8*) + DistName="Solaris-8" + ;; + *) + Message="No Solaris/x86 binaries available for this version" + ;; + esac + ;; + *) + Message="No SunOS/Solaris binaries available for this architecture" + ;; + esac + ;; + UNIX_SV) + case "$OsArch" in + i386) + case "$OsVersion" in + 4.0*) + DistName="SVR4.0" + ;; + *) + # More detailed version check?? + DistName="UnixWare" + ;; + esac + ;; + *) + Message="No SYSV binaries available for this architecture" + ;; + esac + ;; + *) + Message="No binaries available for this OS" + ;; + esac + + if [ X"$DistName" != X ]; then + echo "Binary distribution name is '$DistName'" + echo "" + else + if [ X"$Message" = X ]; then + echo "Can't find which binary distribution you should use." + echo "Please send the output of this script to XFree86@XFree86.org" + echo "" + else + echo "$Message" + echo "" + fi + fi +} + +if [ X"$1" = "X-check" ]; then + GetOsInfo + FindDistName + exit 0 +fi + +echo "" +echo " Welcome to the XFree86 $VERSION installer" +echo "" +echo "You are strongly advised to backup your existing XFree86 installation" +echo "before proceeding. This includes the /usr/X11R6 and /etc/X11" +echo "directories. The installation process will overwrite existing files" +echo "in those directories, and this may include some configuration files" +echo "that may have been customised." +echo "" +ContinueNo + +# Should check if uid is zero + +# Check if $DISPLAY is set, and warn + +if [ X"$DISPLAY" != X ]; then + echo "\$DISPLAY is set, which may indicate that you are running this" + echo "installation from an X session. It is recommended that X not be" + echo "running while doing the installation." + echo "" + ContinueNo +fi + +# First, do some preliminary checks + +GetOsInfo + +# Make OS-specific adjustments to the distribution file lists + +case "$OsName" in +Interactive) # Need the correct name for this + VARDIST="" + EXTRADIST="Xbin1.tgz" + EXTRAOPTDIST="Xxdm.tgz" + ;; +LynxOS) + VARDIST="" + ;; +esac + +REQUIREDFILES=" \ + extract \ + $BASEDIST \ + $ETCDIST \ + $VARDIST \ + $SERVDIST \ + $EXTRADIST \ + " + +echo "Checking for required files ..." +Needed="" + +# Check for extract and extract.exe, and check that they are usable. +# +# This test may not be fool-proof. A FreeBSD/ELF binary downloaded in +# ASCII mode passed it :-(. +# +if [ -f extract ]; then + ExtractExists=YES + chmod +x extract + if ./extract --version | head -1 | \ + fgrep "extract (XFree86 version" > /dev/null 2>&1; then + ExtractOK=YES + else + echo "extract doesn't work properly, renaming it to 'extract.bad'" + rm -f extract.bad + mv extract extract.bad + fi +fi +if [ X"$ExtractOK" != XYES ]; then + if [ -f extract.exe ]; then + ExtractExeExists=YES + rm -f extract + ln extract.exe extract + chmod +x extract + if ./extract --version | head -1 | \ + fgrep "extract (XFree86 version" > /dev/null 2>&1; then + ExtractOK=YES + else + echo "extract.exe doesn't work properly, renaming it to" + echo "'extract.exe.bad'" + rm -f extract.exe.bad + mv extract.exe extract.exe.bad + rm -f extract + fi + fi +fi +if [ X"$ExtractOK" != XYES ]; then + echo "" + if [ X"$ExtractExists" = XYES -a X"$ExtractExeExists" = XYES ]; then + echo "The versions of 'extract' and 'extract.exe' you have do not run'" + echo "correctly. Make sure that you have downloaded the correct" + echo "binaries for your system. To find out which is correct," + echo "run 'sh $0 -check'." + fi + if [ X"$ExtractExists" = XYES -a X"$ExtractExeExists" != XYES ]; then + echo "The version of 'extract' you have does not run correctly." + echo "This is most commonly due to problems downloading this file" + echo "with some web browsers. You may get better results if you" + echo "download the version called 'extract.exe' and try again." + fi + if [ X"$ExtractExists" != XYES -a X"$ExtractExeExists" = XYES ]; then + echo "The version of 'extract.exe' you have does not run correctly." + echo "Make sure that you have downloaded the correct binaries for your" + echo "system. To find out which is correct, run 'sh $0 -check'." + fi + if [ X"$ExtractExists" != XYES -a X"$ExtractExeExists" != XYES ]; then + echo "You need to download the 'extract' (or 'extract.exe') utility" + echo "and put it in this directory." + fi + echo "" + echo "When you have corrected the problem, please re-run 'sh $0'" + echo "to proceed with the installation." + echo "" + exit 1 +fi + +for i in $REQUIREDFILES; do + if [ ! -f $i ]; then + Needed="$Needed $i" + fi +done +if [ X"$Needed" != X ]; then + echo "" + echo "The files:" + echo "" + echo "$Needed" + echo "" + echo "must be present in the current directory to proceed with the" + echo "installation. You should be able to find it at the same place" + echo "you picked up the rest of the XFree86 binary distribution." + echo "Please re-run 'sh $0' to proceed with the installation when" + echo "you have them." + echo "" + exit 1 +fi + +DoOsChecks + +if [ X"$NEEDSOMETHING" != X ]; then + echo "" + echo "Please re-run 'sh $0' to proceed with the installation after you" + echo "have made the required updates." + echo "" + exit 1 +fi + +# Link extract to gnu-tar so it can also be used as a regular tar +rm -f gnu-tar +ln extract gnu-tar + +EXTRACT=$WDIR/extract +TAR=$WDIR/gnu-tar + +# Create $RUNDIR and $ETCDIR if they don't already exist + +if [ ! -d $RUNDIR ]; then + NewRunDir=YES + echo "Creating $RUNDIR" + mkdir $RUNDIR +fi +if [ ! -d $RUNDIR/lib ]; then + echo "Creating $RUNDIR/lib" + mkdir $RUNDIR/lib +fi +if [ ! -d $RUNDIR/lib/X11 ]; then + echo "Creating $RUNDIR/lib/X11" + mkdir $RUNDIR/lib/X11 +fi +if [ ! -d $ETCDIR ]; then + NewEtcDir=YES + echo "Creating $ETCDIR" + mkdir $ETCDIR +fi + +if [ -d $RUNDIR -a -d $RUNDIR/bin -a -d $RUNDIR/lib ]; then + echo "" + echo "You appear to have an existing installation of X. Continuing will" + echo "overwrite it. You will, however, have the option of being prompted" + echo "before most configuration files are overwritten." + ContinueYes +fi + +if [ X"$OLDFILES" != X ]; then + echo "" + echo "Removing some old files that are no longer required..." + for i in $OLDFILES; do + if [ -f $i ]; then + echo " removing old file $i" + rm -f $i + fi + done + echo "" +fi + +if [ X"$OLDDIRS" != X ]; then + echo "" + echo "Removing some old directories that are no longer required..." + for i in $OLDDIRS; do + if [ -d $i ]; then + echo " removing old directory $i" + rm -fr $i + fi + done + echo "" +fi + +# Check for config file directories that may need to be moved. + +EtcToMove= +if [ X"$NoSymLinks" != XYES ]; then + for i in $ETCLINKS; do + if [ -d $RUNDIR/lib/X11/$i -a ! $L $RUNDIR/lib/X11/$i ]; then + EtcToMove="$EtcToMove $i" + fi + done +fi + +if [ X"$EtcToMove" != X ]; then + echo "XFree86 now installs most customisable configuration files under" + echo "$ETCDIR instead of under $RUNDIR/lib/X11, and has symbolic links" + echo "under $RUNDIR/lib/X11 that point to $ETCDIR. You currently have" + echo "files under the following subdirectories of $RUNDIR/lib/X11:" + echo "" + echo "$EtcToMove" + echo "" + echo "Do you want to move them to $ETCDIR and create the necessary" + Echo "links? (y/n) [y] " + read response + case "$response" in + [nN]*) + echo "" + echo "Note: this means that your run-time config files will remain" + echo "in the old $RUNDIR/lib/X11 location." + NoSymLinks=YES; + ;; + esac + echo "" + if [ X"NoSymlinks" != XYES ]; then + for i in $EtcToMove; do + echo "Moving $RUNDIR/lib/X11/$i to $ETCDIR/$i ..." + if [ ! -d $ETCDIR/$i ]; then + mkdir $ETCDIR/$i + fi + $TAR -C $RUNDIR/lib/X11/$i -c -f - . | \ + $TAR -C $ETCDIR/$i -v -x -p -U -f - && \ + rm -fr $RUNDIR/lib/X11/$i && \ + ln -s $ETCDIR/$i $RUNDIR/lib/X11/$i + done + fi +fi + +# Maybe allow a backup of the config files to be made? + +# Extract Xetc.tgz into a temporary location, and prompt for moving the +# files. + +echo "Extracting $ETCDIST into a temporary location ..." +rm -fr .etctmp +mkdir .etctmp +(cd .etctmp; $EXTRACT $WDIR/$ETCDIST) +for i in $ETCLINKS; do + DoCopy=YES + if [ -d $RUNDIR/lib/X11/$i ]; then + Echo "Do you want to overwrite the $i config files? (y/n) [n] " + read response + case "$response" in + [yY]*) + : OK + ;; + *) + DoCopy=NO + ;; + esac + fi + if [ $DoCopy = YES ]; then + echo "Installing the $i config files ..." + if [ X"$NoSymLinks" != XYES ]; then + if [ ! -d $ETCDIR/$i ]; then + mkdir $ETCDIR/$i + fi + if [ ! -d $RUNDIR/lib/X11/$i ]; then + ln -s $ETCDIR/$i $RUNDIR/lib/X11/$i + fi + else + if [ ! -d $RUNDIR/lib/X11/$i ]; then + mkdir $RUNDIR/lib/X11/$i + fi + fi + $TAR -C .etctmp/$i -c -f - . | \ + $TAR -C $RUNDIR/lib/X11/$i -v -x -p -U -f - + fi +done +rm -fr .etctmp + +echo "Installing the mandatory parts of the binary distribution" +echo "" +for i in $BASEDIST $SERVDIST; do + (cd $RUNDIR; $EXTRACT $WDIR/$i) +done +if [ X"$VARDIST" != X ]; then + (cd $VARDIR; $EXTRACT $WDIR/$VARDIST) +fi + +echo "Checking for optional components to install ..." +for i in $OPTDIST $EXTRAOPTDIST; do + if [ -f $i ]; then + Echo "Do you want to install $i (`Description $i`)? (y/n) [y] " + read response + case "$response" in + [nN]*) + : skip this one + ;; + *) + (cd $RUNDIR; $EXTRACT $WDIR/$i) + ;; + esac + fi +done + +# Need to run ldconfig on some OSs +case "$OsName" in +FreeBSD|NetBSD|OpenBSD) + echo "" + echo "Running ldconfig" + /sbin/ldconfig -m $RUNDIR/lib + ;; +Linux) + echo "" + echo "Running ldconfig" + /sbin/ldconfig $RUNDIR/lib + ;; +esac + +# Run mkfontdir in the local and misc directories to make sure that +# the fonts.dir files are up to date after the installation. +echo "" +for i in $FONTDIRS $EXTRAFONTDIRS; do + if [ -d $RUNDIR/lib/X11/fonts/$i ]; then + Echo "Updating the fonts.dir file in $RUNDIR/lib/X11/fonts/$i..." + $RUNDIR/bin/mkfontdir $RUNDIR/lib/X11/fonts/$i + echo "" + fi +done + +# Check if the system has a termcap file +TERMCAP1DIR=/usr/share +TERMCAP2=/etc/termcap +if [ -d $TERMCAP1DIR ]; then + TERMCAP1=`find $TERMCAP1DIR -type f -name termcap -print 2> /dev/null` + if [ x"$TERMCAP1" != x ]; then + TERMCAPFILE="$TERMCAP1" + fi +fi +if [ x"$TERMCAPFILE" = x ]; then + if [ -f $TERMCAP2 ]; then + TERMCAPFILE="$TERMCAP2" + fi +fi + +# Override this for some OSs + +case "$OsName" in +OpenBSD) + TERMCAPFILE="" + ;; +esac + +if [ X"$TERMCAPFILE" != X ]; then + echo "" + echo "You appear to have a termcap file: $TERMCAPFILE" + echo "This should be edited manually to replace the xterm entries" + echo "with those in $RUNDIR/lib/X11/etc/xterm.termcap" + echo "" + echo "Note: the new xterm entries are required to take full advantage" + echo "of new features, but they may cause problems when used with" + echo "older versions of xterm. A terminal type 'xterm-r6' is included" + echo "for compatibility with the standard X11R6 version of xterm." +fi + +# Check for terminfo, and update the xterm entry +TINFODIR=/usr/lib/terminfo +# Does this list need to be updated? +OLDTINFO=" \ + x/xterm \ + x/xterms \ + x/xterm-24 \ + x/xterm-vi \ + x/xterm-65 \ + x/xterm-bold \ + x/xtermm \ + x/xterm-boldso \ + x/xterm-ic \ + x/xterm-r6 \ + x/xterm-old \ + x/xterm-r5 \ + v/vs100" + +if [ -d $TINFODIR ]; then + echo "" + echo "You appear to have a terminfo directory: $TINFODIR" + echo "New xterm terminfo entries can be installed now." + echo "" + echo "Note: the new xterm entries are required to take full advantage" + echo "of new features, but they may cause problems when used with" + echo "older versions of xterm. A terminal type 'xterm-r6' is included" + echo "for compatibility with the standard X11R6 version of xterm." + echo "" + echo "Do you wish to have the new xterm terminfo entries installed" + Echo "now (y/n)? [n] " + read response + case "$response" in + [yY]*) + echo "" + for t in $OLDTINFO; do + if [ -f $TINFODIR/$t ]; then + echo "Moving old terminfo file $TINFODIR/$t to $TINFODIR/$t.bak" + rm -f $TINFODIR/$t.bak + mv -f $TINFODIR/$t $TINFODIR/$t.bak + fi + done + echo "" + echo "Installing new terminfo entries for xterm." + echo "" + echo "On some systems you may get warnings from tic about 'meml'" + echo "and 'memu'. These warnings can safely be ignored." + echo "" + tic $RUNDIR/lib/X11/etc/xterm.terminfo + ;; + *) + echo "" + echo "Not installing new terminfo entries for xterm." + echo "They can be installed later by running:" + echo "" + echo " tic $RUNDIR/lib/X11/etc/xterm.terminfo" + ;; + esac +fi + +if [ -f $RUNDIR/bin/rstartd ]; then + echo "" + echo "If you are going to use rstart and $RUNDIR/bin isn't in the" + echo "default path for commands run remotely via rsh, you will need" + echo "a link to rstartd installed in /usr/bin." + echo "" + Echo "Do you wish to have this link installed (y/n)? [n] " + read response + case "$response" in + [yY]*) + echo "Creating link from $RUNDIR/bin/rstartd to /usr/bin/rstartd" + rm -f /usr/bin/rstartd + ln -s $RUNDIR/bin/rstartd /usr/bin/rstartd + ;; + esac +fi + +echo "" +echo "Installation complete." + +exit 0 Index: xc/programs/Xserver/hw/xfree86/etc/et4000clock.c diff -u xc/programs/Xserver/hw/xfree86/etc/et4000clock.c:3.6 xc/programs/Xserver/hw/xfree86/etc/et4000clock.c:removed --- xc/programs/Xserver/hw/xfree86/etc/et4000clock.c:3.6 Thu May 6 22:56:17 1999 +++ xc/programs/Xserver/hw/xfree86/etc/et4000clock.c Wed Mar 8 16:31:23 2000 @@ -1,134 +0,0 @@ -/* - * $XFree86: xc/programs/Xserver/hw/xfree86/etc/et4000clock.c,v 3.6 1999/05/07 02:56:17 dawes Exp $ - * - * This is a sample clock setting program. It will not work with all - * ET4000 cards. To work correctly the clocks line in XF86Config must - * have the values in the correct order. - * - * usage: et4000clock freq index - * - * This program ignores 'freq' and relies entirely on 'index' - * - * David Dawes <dawes@xfree86.org> - * 19 December 1992 - */ -/* $XConsortium: et4000clock.c /main/7 1996/10/25 11:37:41 kaleb $ */ - -#include <stdio.h> - -/* The following inlines are from compiler.h in the XFree86 source dist */ - -#if defined(CSRG_BASED) || defined(MACH) || defined(MACH386) || defined(linux) -#define GCCUSESGAS -#endif - -#ifdef __GNUC__ -#ifdef GCCUSESGAS - -static __inline__ void -outb(port, val) -short port; -char val; -{ - __asm__ __volatile__("outb %0,%1" : :"a" (val), "d" (port)); -} - -static __inline__ void -outw(port, val) -short port; -short val; -{ - __asm__ __volatile__("outw %0,%1" : :"a" (val), "d" (port)); -} - -static __inline__ unsigned int -inb(port) -short port; -{ - unsigned char ret; - __asm__ __volatile__("inb %1,%0" : - "=a" (ret) : - "d" (port)); - return ret; -} - -#else /* !GCCUSESGAS */ - -static __inline__ void -outb(port, val) - short port; - char val; -{ - __asm__ __volatile__("out%B0 (%1)" : :"a" (val), "d" (port)); -} - -static __inline__ void -outw(port, val) - short port; - short val; -{ - __asm__ __volatile__("out%W0 (%1)" : :"a" (val), "d" (port)); -} - -static __inline__ unsigned int -inb(port) - short port; -{ - unsigned int ret; - __asm__ __volatile__("in%B0 (%1)" : - "=a" (ret) : - "d" (port)); - return ret; -} - -#endif /* GCCUSESGAS */ -#else /* !__GNUC__ */ - -#if defined(__STDC__) && (__STDC__ == 1) -#define asm __asm -#endif - -#ifdef SVR4 -#include <sys/types.h> -#ifndef __USLC__ -#define __USLC__ -#endif -#endif - -#ifndef SCO325 -# include <sys/inline.h> -#else -# include "../common/scoasm.h" -#endif -#endif /* __GNUC__ */ - - -/* Now, the actual program */ - -main(argc, argv) - -int argc; -char *argv[]; - -{ - int index, vgaIOBase; - unsigned char tmp; - - if (argc < 3) - { - fprintf(stderr, "usage: %s freq index\n", argv[0]); - exit(1); - } - index = atoi(argv[2]); - if (index < 0 || index > 7) - { - fprintf(stderr, "%s: Index %d out of range\n", argv[0], index); - exit(2); - } - tmp = inb(0x3CC); - vgaIOBase = (tmp & 0x01) ? 0x3D0 : 0x3B0; - outb(0x3C2, (tmp & 0xF3) | ((index & 0x03) << 2)); - outw(vgaIOBase + 4, 0x34 | ((index & 0x04) << 7)); - fprintf(stderr, "%s: clock set to number %d\n", argv[0], index); - exit(0); -} Index: xc/programs/Xserver/hw/xfree86/etc/postinst.sh diff -u xc/programs/Xserver/hw/xfree86/etc/postinst.sh:3.15 xc/programs/Xserver/hw/xfree86/etc/postinst.sh:removed --- xc/programs/Xserver/hw/xfree86/etc/postinst.sh:3.15 Thu May 22 10:22:26 1997 +++ xc/programs/Xserver/hw/xfree86/etc/postinst.sh Wed Mar 8 16:31:23 2000 @@ -1,141 +0,0 @@ -#!/bin/sh - -# $XFree86: xc/programs/Xserver/hw/xfree86/etc/postinst.sh,v 3.15 1997/05/22 14:22:26 dawes Exp $ -# -# postinst.sh (for XFree86 3.2A) -# -# This script should be run after installing a new version of XFree86. -# - -RUNDIR=/usr/X11R6 - -if [ ! -d $RUNDIR/. ]; then - echo $RUNDIR does not exist - exit 1 -fi - -# Since the misc fonts are distributed in two parts, make sure that the -# fonts.dir file is correct if only one part has been installed. -if [ -d $RUNDIR/lib/X11/fonts/misc ]; then - echo "" - echo "Updating the fonts.dir file in $RUNDIR/lib/X11/fonts/misc" - echo "This might take a while ..." - $RUNDIR/bin/mkfontdir $RUNDIR/lib/X11/fonts/misc -fi - -# Check if the system has a termcap file -TERMCAP1DIR=/usr/share -TERMCAP2=/etc/termcap -if [ -d $TERMCAP1DIR ]; then - TERMCAP1=`find $TERMCAP1DIR -type f -name termcap -print 2> /dev/null` - if [ x"$TERMCAP1" != x ]; then - TERMCAPFILE="$TERMCAP1" - fi -fi -if [ x"$TERMCAPFILE" = x ]; then - if [ -f $TERMCAP2 ]; then - TERMCAPFILE="$TERMCAP2" - fi -fi -if [ x"$TERMCAPFILE" != x ]; then - echo "" - echo "You appear to have a termcap file: $TERMCAPFILE" - echo "This should be edited manually to replace the xterm entries" - echo "with those in $RUNDIR/lib/X11/etc/xterm.termcap" - echo "" - echo "Note: the new xterm entries are required to take full advantage" - echo "of new features, but they may cause problems when used with" - echo "older versions of xterm. A terminal type 'xterm-r6' is included" - echo "for compatibility with the standard X11R6 version of xterm." -fi - -# Check for terminfo, and update the xterm entry -TINFODIR=/usr/lib/terminfo -OLDTINFO=" \ - x/xterm \ - x/xterms \ - x/xterm-24 \ - x/xterm-vi \ - x/xterm-65 \ - x/xterm-bold \ - x/xtermm \ - x/xterm-boldso \ - x/xterm-ic \ - x/xterm-r6 \ - x/xterm-old \ - x/xterm-r5 \ - v/vs100" - -if [ -d $TINFODIR ]; then - echo "" - echo "You appear to have a terminfo directory: $TINFODIR" - echo "New xterm terminfo entries can be installed now." - echo "" - echo "Note: the new xterm entries are required to take full advantage" - echo "of new features, but they may cause problems when used with" - echo "older versions of xterm. A terminal type 'xterm-r6' is included" - echo "for compatibility with the standard X11R6 version of xterm." - echo "" - echo "Do you wish to have the new xterm terminfo entries installed now (y/n)?" - read Resp - case "$Resp" in - [yY]*) - echo "" - for t in $OLDTINFO; do - if [ -f $TINFODIR/$t ]; then - echo "Moving old terminfo file $TINFODIR/$t to $TINFODIR/$t.bak" - rm -f $TINFODIR/$t.bak - mv -f $TINFODIR/$t $TINFODIR/$t.bak - fi - done - echo "" - echo "Installing new terminfo entries for xterm." - echo "" - echo "On some systems you may get warnings from tic about 'meml'" - echo "and 'memu'. These warnings can safely be ignored." - echo "" - tic /usr/X11R6/lib/X11/etc/xterm.terminfo - ;; - *) - echo "" - echo "Not installing new terminfo entries for xterm." - echo "They can be installed later by running:" - echo "" - echo " tic /usr/X11R6/lib/X11/etc/xterm.terminfo" - ;; - esac -fi - -if [ -f /usr/X11R6/bin/rstartd ]; then - echo "" - echo "If you are going to use rstart and /usr/X11R6/bin isn't in the" - echo "default path for commands run remotely via rsh, you will need" - echo "a link to rstartd installed in /usr/bin." - echo "" - echo "Do you wish to have this link installed (y/n)?" - read Resp - case "$Resp" in - [yY]*) - echo "Creating link from /usr/X11R6/bin/rstartd to /usr/bin/rstartd" - rm -f /usr/bin/rstartd - ln -s /usr/X11R6/bin/rstartd /usr/bin/rstartd - ;; - esac -fi - -case `uname` in - FreeBSD|NetBSD|OpenBSD) - echo "" - echo "Running ldconfig" - /sbin/ldconfig -m /usr/X11R6/lib - ;; - Linux) - echo "" - echo "You may need to reboot (or run ldconfig) before the" - echo "newly installed shared libraries can be used." - echo "Some releases of Linux don't run ldconfig automatically" - echo "at boot time, so you may need to run it manually." - ;; -esac - -exit 0 Index: xc/programs/Xserver/hw/xfree86/etc/preinst.sh diff -u xc/programs/Xserver/hw/xfree86/etc/preinst.sh:3.10 xc/programs/Xserver/hw/xfree86/etc/preinst.sh:removed --- xc/programs/Xserver/hw/xfree86/etc/preinst.sh:3.10 Sat May 24 09:46:35 1997 +++ xc/programs/Xserver/hw/xfree86/etc/preinst.sh Wed Mar 8 16:31:23 2000 @@ -1,141 +0,0 @@ -#!/bin/sh - -# $XFree86: xc/programs/Xserver/hw/xfree86/etc/preinst.sh,v 3.10 1997/05/24 13:46:35 dawes Exp $ -# -# preinst.sh (for XFree86 3.2A) -# -# This script should be run before installing a new version. -# -# It removes parts of an existing installation that can cause problems -# when extracting the new version. This includes symbolic links to old -# beta versions, shared lib symlinks, and old files. -# -# $XConsortium: preinst.sh /main/5 1996/10/28 05:43:40 kaleb $ -# - -RUNDIR=/usr/X11R6 -LIBLIST=" \ - libICE.so \ - libPEX5.so \ - libSM.so \ - libX11.so \ - libXIE.so \ - libXaw.so \ - libXext.so \ - libXi.so \ - libXmu.so \ - libXp.so \ - libXt.so \ - libXtst.so \ - liboldX.so \ - libICE.so.6 \ - libPEX5.so.6 \ - libSM.so.6 \ - libX11.so.6 \ - libXIE.so.6 \ - libXaw.so.6 \ - libXext.so.6 \ - libXi.so.6 \ - libXmu.so.6 \ - libXp.so.6 \ - libXt.so.6 \ - libXtst.so.6 \ - liboldX.so.6 \ - " - -OLDFILES=" \ - lib/X11/doc/LbxproxyOnly \ - lib/X11/xkb/keycodes/sgi \ - lib/X11/xkb/symbols/de_nodead \ - " - -# First, do some checks for Linux/ELF - -if [ "`uname`" = Linux ]; then - if file -L /bin/sh | grep ELF >/dev/null 2>&1; then - echo "" - echo "You appear to have an ELF system." - echo "Make sure you are installing the ELF binary dist" - # Check ldconfig - LDSO=`/sbin/ldconfig -v -n | awk '{ print $3 }'` - LDSOMIN=`echo $LDSO | awk -F. '{ print $3 }'` - LDSOMID=`echo $LDSO | awk -F. '{ print $2 }'` - LDSOMAJ=`echo $LDSO | awk -F. '{ print $1 }'` - if [ "$LDSOMAJ" -gt 1 ]; then - : OK - else - if [ "$LDSOMID" -gt 7 ]; then - : OK - else - if [ "$LDSOMIN" -ge 14 ]; then - : OK - else - echo "" - echo "Before continuing you will need to get a current version of ld.so." - echo "Version 1.7.14 or newer will do." - NEEDSOMETHING=YES - fi - fi - fi - else - case "`arch`" in - i*86) - echo "" - echo "You appear to have an a.out system." - echo "a.out binaries are not available for this release" - exit 1 - ;; - esac - fi -fi - -if [ X"$NEEDSOMETHING" != X ]; then - echo "" - echo "When you've made the required updates, re-run this script" - echo "before continuing with the installation" - exit 1 -fi - - -# If there is no previous installation, there is nothing more to do - -if [ ! -d $RUNDIR/. ]; then - echo "" - echo Done - exit 0 -fi - -echo "" -echo "You are strongly advised to backup your /usr/X11R6 directory before" -echo "proceeding with this installation. This installation will overwrite" -echo "existing files." -echo "" -echo "Do you want to continue? (y/n) " -read response -case "$response" in - [yY]*) - ;; - *) - echo Aborting - exit 1 - ;; -esac - -for i in $LIBLIST; do - if [ -h $RUNDIR/lib/$i ]; then - echo Removing old library link $RUNDIR/lib/$i - rm -f $RUNDIR/lib/$i - fi -done - -for i in $OLDFILES; do - if [ -f $RUNDIR/$i ]; then - echo Removing old file $RUNDIR/$i - rm -f $RUNDIR/$i - fi -done - -echo "" -echo Done - -exit 0 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/build-bindist diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/build-bindist:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/build-bindist:1.3 --- xc/programs/Xserver/hw/xfree86/etc/bindist/build-bindist:1.1 Mon May 26 23:47:02 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/build-bindist Wed Mar 8 16:31:23 2000 @@ -1,11 +1,11 @@ #!/bin/sh # -# $XFree86: xc/programs/Xserver/hw/xfree86/etc/bindist/build-bindist,v 1.1 1997/05/27 03:47:02 dawes Exp $ +# $XFree86: xc/programs/Xserver/hw/xfree86/etc/bindist/build-bindist,v 1.3 2000/02/22 17:11:41 dawes Exp $ # Usage() { - echo `basename $0` [-l] version from-dir to-dir + echo `basename $0` [-l] [prefix] from-dir to-dir exit 1 } @@ -18,13 +18,21 @@ ;; esac -if [ $# != 3 ]; then - Usage -fi - -VERS=$1 -FROMDIR=$2 -TODIR=$3 +case $# in +3) + PRE=$1 + shift + ;; +2) + PRE=X + ;; +*) + Usage + ;; +esac + +FROMDIR=$1 +TODIR=$2 if [ ! -d $FROMDIR ]; then echo No such dir $FROMDIR @@ -88,10 +96,10 @@ echo No file $DIRFILE in $TODIR/$d # exit 3 else - PREFIX=`cat $DIRFILE` + DEFPREFIX=`cat $DIRFILE` for i in *-list; do name=`basename $i -list` - tarball=$VERS$name.tgz + tarball=$PRE$name.tgz echo creating $tarball lfile="-T $TODIR/$d/$i" if [ -f $name-excl ]; then @@ -99,6 +107,11 @@ else xfile="" fi + if [ -f $name-dir ]; then + PREFIX=`cat $name-dir` + else + PREFIX=$DEFPREFIX + fi (cd $FROMDIR/$PREFIX $TAR $TAROPTS -f $TODIR/$BINDIR/$tarball $lfile $xfile ) Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/8514-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/8514-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/8514-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/8514-list:1.1 Tue May 27 00:00:19 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/8514-list Wed Mar 8 16:31:23 2000 @@ -1 +0,0 @@ -bin/XF86_8514 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9480-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9480-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9480-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9480-list:1.1 Tue May 27 00:00:19 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9480-list Wed Mar 8 16:31:23 2000 @@ -1 +0,0 @@ -bin/XF98_NEC480 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9EGC-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9EGC-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9EGC-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9EGC-list:1.1 Tue May 27 00:00:19 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9EGC-list Wed Mar 8 16:31:23 2000 @@ -1 +0,0 @@ -bin/XF98_EGC Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9GA9-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9GA9-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9GA9-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9GA9-list:1.1 Tue May 27 00:00:20 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9GA9-list Wed Mar 8 16:31:23 2000 @@ -1 +0,0 @@ -bin/XF98_GA968 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9GAN-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9GAN-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9GAN-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9GAN-list:1.1 Tue May 27 00:00:20 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9GAN-list Wed Mar 8 16:31:24 2000 @@ -1 +0,0 @@ -bin/XF98_GANBWAP Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9LPW-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9LPW-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9LPW-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9LPW-list:1.1 Tue May 27 00:00:20 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9LPW-list Wed Mar 8 16:31:24 2000 @@ -1 +0,0 @@ -bin/XF98_PWLB Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9NKV-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9NKV-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9NKV-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9NKV-list:1.1 Tue May 27 00:00:20 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9NKV-list Wed Mar 8 16:31:24 2000 @@ -1 +0,0 @@ -bin/XF98_NKVNEC Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9NS3-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9NS3-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9NS3-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9NS3-list:1.1 Tue May 27 00:00:20 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9NS3-list Wed Mar 8 16:31:24 2000 @@ -1 +0,0 @@ -bin/XF98_NECS3 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9SPW-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9SPW-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9SPW-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9SPW-list:1.1 Tue May 27 00:00:21 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9SPW-list Wed Mar 8 16:31:24 2000 @@ -1 +0,0 @@ -bin/XF98_PWSKB Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9TGU-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9TGU-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9TGU-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9TGU-list:1.1 Tue May 27 00:00:21 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9TGU-list Wed Mar 8 16:31:24 2000 @@ -1 +0,0 @@ -bin/XF98_TGUI Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9WEP-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9WEP-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9WEP-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9WEP-list:1.1 Tue May 27 00:00:21 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9WEP-list Wed Mar 8 16:31:24 2000 @@ -1 +0,0 @@ -bin/XF98_WABEP Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9WS-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9WS-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9WS-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9WS-list:1.1 Tue May 27 00:00:21 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9WS-list Wed Mar 8 16:31:24 2000 @@ -1 +0,0 @@ -bin/XF98_WABS Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9WSN-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9WSN-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9WSN-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9WSN-list:1.1 Tue May 27 00:00:21 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/9WSN-list Wed Mar 8 16:31:24 2000 @@ -1 +0,0 @@ -bin/XF98_WSNA Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/AGX-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/AGX-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/AGX-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/AGX-list:1.1 Tue May 27 00:00:22 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/AGX-list Wed Mar 8 16:31:24 2000 @@ -1 +0,0 @@ -bin/XF86_AGX Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/I128-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/I128-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/I128-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/I128-list:1.1 Tue May 27 00:00:22 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/I128-list Wed Mar 8 16:31:24 2000 @@ -1 +0,0 @@ -bin/XF86_I128 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/Ma32-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/Ma32-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/Ma32-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/Ma32-list:1.1 Tue May 27 00:00:22 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/Ma32-list Wed Mar 8 16:31:24 2000 @@ -1 +0,0 @@ -bin/XF86_Mach32 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/Ma64-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/Ma64-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/Ma64-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/Ma64-list:1.1 Tue May 27 00:00:22 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/Ma64-list Wed Mar 8 16:31:24 2000 @@ -1 +0,0 @@ -bin/XF86_Mach64 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/Ma8-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/Ma8-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/Ma8-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/Ma8-list:1.1 Tue May 27 00:00:23 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/Ma8-list Wed Mar 8 16:31:24 2000 @@ -1 +0,0 @@ -bin/XF86_Mach8 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/Mono-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/Mono-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/Mono-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/Mono-list:1.1 Tue May 27 00:00:23 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/Mono-list Wed Mar 8 16:31:24 2000 @@ -1 +0,0 @@ -bin/XF86_Mono Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/P9K-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/P9K-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/P9K-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/P9K-list:1.1 Tue May 27 00:00:23 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/P9K-list Wed Mar 8 16:31:24 2000 @@ -1 +0,0 @@ -bin/XF86_P9000 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/S3-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/S3-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/S3-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/S3-list:1.1 Tue May 27 00:00:23 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/S3-list Wed Mar 8 16:31:24 2000 @@ -1 +0,0 @@ -bin/XF86_S3 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/S3V-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/S3V-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/S3V-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/S3V-list:1.1 Tue May 27 00:00:23 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/S3V-list Wed Mar 8 16:31:24 2000 @@ -1 +0,0 @@ -bin/XF86_S3V Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/SVGA-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/SVGA-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/SVGA-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/SVGA-list:1.1 Tue May 27 00:00:24 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/SVGA-list Wed Mar 8 16:31:24 2000 @@ -1 +0,0 @@ -bin/XF86_SVGA Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/VG16-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/VG16-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/VG16-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/VG16-list:1.1 Tue May 27 00:00:24 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/VG16-list Wed Mar 8 16:31:24 2000 @@ -1 +0,0 @@ -bin/XF86_VGA16 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/bin-excl diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/bin-excl:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/bin-excl:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/bin-excl:1.1 Tue May 27 00:00:24 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/bin-excl Wed Mar 8 16:31:24 2000 @@ -7,3 +7,4 @@ bin/X bin/xfs bin/xmseconfig +bin/XFree86 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/bin-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/bin-list:1.4 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/bin-list:1.7 --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/bin-list:1.4 Wed Mar 8 16:31:25 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/bin-list Wed Mar 8 16:31:25 2000 @@ -1,16 +1,45 @@ bin -lib/libICE.so.6.3 -lib/libPEX5.so.6.0 -lib/libSM.so.6.0 -lib/libX11.so.6.1 -lib/libXIE.so.6.0 -lib/libXThrStub.so.6.0 -lib/libXaw.so.6.1 -lib/libXext.so.6.3 -lib/libXi.so.6.0 -lib/libXmu.so.6.0 -lib/libXp.so.6.2 -lib/libXt.so.6.0 -lib/libXtst.so.6.1 -lib/liboldX.so.6.0 -lib/X11/app-defaults +lib/aout +lib/libGL.so.1 +lib/libGL.so +lib/libICE.so.6 +lib/libICE.so +lib/libPEX5.so.6 +lib/libPEX5.so +lib/libSM.so.6 +lib/libSM.so +lib/libX11.so.6 +lib/libX11.so +lib/libXIE.so.6 +lib/libXIE.so +lib/libXThrStub.so.6 +lib/libXThrStub.so +lib/libXaw.so.7 +lib/libXaw.so.6 +lib/libXaw.so +lib/libXext.so.6 +lib/libXext.so +lib/libXfont.so.1 +lib/libXfont.so +lib/libXi.so.6 +lib/libXi.so +lib/libXmu.so.6 +lib/libXmu.so +lib/libXp.so.6 +lib/libXp.so +lib/libXpm.so.4 +lib/libXpm.so +lib/libXt.so.6 +lib/libXt.so +lib/libXtst.so.6 +lib/libXtst.so +lib/libdps.so.1 +lib/libdps.so +lib/libdpstk.so.1 +lib/libdpstk.so +lib/liboldX.so.6 +lib/liboldX.so +lib/libpsres.so.1 +lib/libpsres.so +lib/libxrx.so.6 +lib/libxrx.so Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/etc-dir diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/etc-dir:1.2 --- /dev/null Wed Mar 8 16:31:25 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/etc-dir Wed Mar 8 16:31:25 2000 @@ -0,0 +1 @@ +etc/X11 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/etc-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/etc-list:1.3 --- /dev/null Wed Mar 8 16:31:25 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/etc-list Wed Mar 8 16:31:25 2000 @@ -0,0 +1 @@ +. Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/fsrv-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/fsrv-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/fsrv-list:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/fsrv-list:1.1 Tue May 27 00:00:25 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/fsrv-list Wed Mar 8 16:31:25 2000 @@ -1,3 +1,2 @@ bin/xfs -lib/X11/fs man/man1/xfs.1.gz Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/host.def diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/host.def:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/host.def:1.3 --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/host.def:1.1 Tue May 27 00:00:25 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/host.def Wed Mar 8 16:31:25 2000 @@ -1,3 +1,8 @@ /* * Host.def for building FreeBSD bindists + * + * $XFree86: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/host.def,v 1.3 2000/03/07 14:47:31 dawes Exp $ */ + +#define InstallEmptyHostDef + Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/lib-excl diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/lib-excl:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/lib-excl:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/lib-excl:1.1 Tue May 27 00:00:25 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/lib-excl Wed Mar 8 16:31:25 2000 @@ -1,12 +1,14 @@ lib/X11/XF86Setup lib/X11/app-defaults lib/X11/config +lib/X11/doc lib/X11/fonts lib/X11/fs -lib/X11/xdm/GiveConsole -lib/X11/xdm/TakeConsole -lib/X11/xdm/X* -lib/X11/xdm/xdm-* +lib/X11/lbxproxy +lib/X11/proxymngr +lib/X11/rstart +lib/X11/twm +lib/X11/xdm lib/X11/xinit -lib/X11/doc -lib/X11/XF86Setup +lib/X11/xsm +lib/X11/xserver Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/var-dir diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/var-dir:1.1 --- /dev/null Wed Mar 8 16:31:25 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/var-dir Wed Mar 8 16:31:25 2000 @@ -0,0 +1 @@ +var Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/var-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/var-list:1.2 --- /dev/null Wed Mar 8 16:31:25 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/var-list Wed Mar 8 16:31:25 2000 @@ -0,0 +1 @@ +db Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/xserv-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/xserv-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/xserv-list:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/xserv-list:1.1 Fri Dec 31 10:03:51 1999 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD/xserv-list Wed Mar 8 16:31:25 2000 @@ -1 +1,2 @@ bin/XFree86 +bin/X Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/bin-excl diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/bin-excl:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/bin-excl:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/bin-excl:1.2 Sat Dec 4 19:42:59 1999 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/bin-excl Wed Mar 8 16:31:25 2000 @@ -1,9 +0,0 @@ -bin/XF86_* -bin/XF98_* -bin/XF86Setup -bin/Xnest -bin/Xprt -bin/Xvfb -bin/X -bin/xfs -bin/xmseconfig Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/bin-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/bin-list:1.3 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/bin-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/bin-list:1.3 Wed Mar 8 16:31:25 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/bin-list Wed Mar 8 16:31:25 2000 @@ -1,31 +0,0 @@ -bin -lib/aout -lib/libICE.so.6 -lib/libICE.so -lib/libPEX5.so.6 -lib/libPEX5.so -lib/libSM.so.6 -lib/libSM.so -lib/libX11.so.6 -lib/libX11.so -lib/libXIE.so.6 -lib/libXIE.so -lib/libXThrStub.so.6 -lib/libXThrStub.so -lib/libXaw.so.6 -lib/libXaw.so -lib/libXext.so.6 -lib/libXext.so -lib/libXi.so.6 -lib/libXi.so -lib/libXmu.so.6 -lib/libXmu.so -lib/libXp.so.6 -lib/libXp.so -lib/libXt.so.6 -lib/libXt.so -lib/libXtst.so.6 -lib/libXtst.so -lib/liboldX.so.6 -lib/liboldX.so -lib/X11/app-defaults Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/dir diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/dir:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/dir:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/dir:1.2 Sat Dec 4 19:43:00 1999 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/dir Wed Mar 8 16:31:25 2000 @@ -1 +0,0 @@ -usr/X11R6 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/fsrv-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/fsrv-list:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/fsrv-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/fsrv-list:1.2 Sat Dec 4 19:43:00 1999 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/fsrv-list Wed Mar 8 16:31:25 2000 @@ -1,3 +0,0 @@ -bin/xfs -lib/X11/fs -man/man1/xfs.1.gz Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/host.def diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/host.def:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/host.def:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/host.def:1.2 Sat Dec 4 19:43:01 1999 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/host.def Wed Mar 8 16:31:25 2000 @@ -1,3 +0,0 @@ -/* - * Host.def for building FreeBSD bindists - */ Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/lib-excl diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/lib-excl:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/lib-excl:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/lib-excl:1.2 Sat Dec 4 19:43:01 1999 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/lib-excl Wed Mar 8 16:31:26 2000 @@ -1,12 +0,0 @@ -lib/X11/XF86Setup -lib/X11/app-defaults -lib/X11/config -lib/X11/fonts -lib/X11/fs -lib/X11/xdm/GiveConsole -lib/X11/xdm/TakeConsole -lib/X11/xdm/X* -lib/X11/xdm/xdm-* -lib/X11/xinit -lib/X11/doc -lib/X11/XF86Setup Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/lib-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/lib-list:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/lib-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/lib-list:1.2 Sat Dec 4 19:43:01 1999 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/lib-list Wed Mar 8 16:31:26 2000 @@ -1,2 +0,0 @@ -lib/X11 -include/X11/bitmaps Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/man-excl diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/man-excl:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/man-excl:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/man-excl:1.2 Sat Dec 4 19:43:02 1999 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/man-excl Wed Mar 8 16:31:26 2000 @@ -1,3 +0,0 @@ -man/man1/XF86Setup.1.gz -man/man1/xfs.1.gz -man/man1/xmseconfig.1.gz Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/man-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/man-list:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/man-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/man-list:1.2 Sat Dec 4 19:43:03 1999 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/man-list Wed Mar 8 16:31:26 2000 @@ -1 +0,0 @@ -man Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/mod-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/mod-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/mod-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/mod-list:1.1 Sat Dec 4 19:43:03 1999 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/mod-list Wed Mar 8 16:31:26 2000 @@ -1 +0,0 @@ -lib/modules Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/nest-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/nest-list:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/nest-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/nest-list:1.2 Sat Dec 4 19:43:03 1999 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/nest-list Wed Mar 8 16:31:26 2000 @@ -1 +0,0 @@ -bin/Xnest Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/prog-excl diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/prog-excl:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/prog-excl:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/prog-excl:1.2 Sat Dec 4 19:43:03 1999 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/prog-excl Wed Mar 8 16:31:26 2000 @@ -1,5 +0,0 @@ -lib/Server -lib/X11 -lib/lib*.so* -lib/modules -include/X11/bitmaps Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/prog-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/prog-list:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/prog-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/prog-list:1.2 Sat Dec 4 19:43:04 1999 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/prog-list Wed Mar 8 16:31:26 2000 @@ -1,3 +0,0 @@ -lib -include -lib/X11/config Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/prt-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/prt-list:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/prt-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/prt-list:1.2 Sat Dec 4 19:43:04 1999 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/prt-list Wed Mar 8 16:31:26 2000 @@ -1 +0,0 @@ -bin/Xprt Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/set-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/set-list:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/set-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/set-list:1.2 Sat Dec 4 19:43:04 1999 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/set-list Wed Mar 8 16:31:26 2000 @@ -1,5 +0,0 @@ -bin/XF86Setup -bin/xmseconfig -lib/X11/XF86Setup -man/man1/XF86Setup.1.gz -man/man1/xmseconfig.1.gz Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/vfb-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/vfb-list:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/vfb-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/vfb-list:1.2 Sat Dec 4 19:43:05 1999 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/vfb-list Wed Mar 8 16:31:26 2000 @@ -1 +0,0 @@ -bin/Xvfb Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/xserv-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/xserv-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/xserv-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/xserv-list:1.1 Fri Dec 31 10:03:53 1999 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-ELF/xserv-list Wed Mar 8 16:31:26 2000 @@ -1 +0,0 @@ -bin/XFree86 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/bin-excl diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/bin-excl:1.2 --- /dev/null Wed Mar 8 16:31:26 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/bin-excl Wed Mar 8 16:31:26 2000 @@ -0,0 +1,10 @@ +bin/XF86_* +bin/XF98_* +bin/XF86Setup +bin/Xnest +bin/Xprt +bin/Xvfb +bin/X +bin/xfs +bin/xmseconfig +bin/XFree86 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/bin-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/bin-list:1.3 --- /dev/null Wed Mar 8 16:31:26 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/bin-list Wed Mar 8 16:31:26 2000 @@ -0,0 +1,23 @@ +bin +lib/libGL.so.1.2 +lib/libICE.so.6.3 +lib/libPEX5.so.6.0 +lib/libSM.so.6.0 +lib/libX11.so.6.1 +lib/libXIE.so.6.0 +lib/libXThrStub.so.6.0 +lib/libXaw.so.6.1 +lib/libXaw.so.7.0 +lib/libXext.so.6.4 +lib/libXfont.so.1.3 +lib/libXi.so.6.0 +lib/libXmu.so.6.1 +lib/libXp.so.6.2 +lib/libXpm.so.4.11 +lib/libXt.so.6.0 +lib/libXtst.so.6.1 +lib/libdps.so.1.0 +lib/libdpstk.so.1.0 +lib/liboldX.so.6.0 +lib/libpsres.so.1.0 +lib/libxrx.so.6.3 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/dir diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/dir:1.1 --- /dev/null Wed Mar 8 16:31:26 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/dir Wed Mar 8 16:31:26 2000 @@ -0,0 +1 @@ +usr/X11R6 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/etc-dir diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/etc-dir:1.1 --- /dev/null Wed Mar 8 16:31:26 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/etc-dir Wed Mar 8 16:31:26 2000 @@ -0,0 +1 @@ +etc/X11 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/etc-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/etc-list:1.1 --- /dev/null Wed Mar 8 16:31:26 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/etc-list Wed Mar 8 16:31:26 2000 @@ -0,0 +1 @@ +. Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/fsrv-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/fsrv-list:1.2 --- /dev/null Wed Mar 8 16:31:26 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/fsrv-list Wed Mar 8 16:31:26 2000 @@ -0,0 +1,2 @@ +bin/xfs +man/man1/xfs.1.gz Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/host.def diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/host.def:1.3 --- /dev/null Wed Mar 8 16:31:26 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/host.def Wed Mar 8 16:31:26 2000 @@ -0,0 +1,8 @@ +/* + * Host.def for building FreeBSD/a.out bindists + * + * $XFree86: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/host.def,v 1.3 2000/03/07 14:47:32 dawes Exp $ + */ + +#define InstallEmptyHostDef + Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/lib-excl diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/lib-excl:1.2 --- /dev/null Wed Mar 8 16:31:26 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/lib-excl Wed Mar 8 16:31:26 2000 @@ -0,0 +1,14 @@ +lib/X11/XF86Setup +lib/X11/app-defaults +lib/X11/config +lib/X11/doc +lib/X11/fonts +lib/X11/fs +lib/X11/lbxproxy +lib/X11/proxymngr +lib/X11/rstart +lib/X11/twm +lib/X11/xdm +lib/X11/xinit +lib/X11/xsm +lib/X11/xserver Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/lib-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/lib-list:1.1 --- /dev/null Wed Mar 8 16:31:26 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/lib-list Wed Mar 8 16:31:26 2000 @@ -0,0 +1,2 @@ +lib/X11 +include/X11/bitmaps Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/man-excl diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/man-excl:1.1 --- /dev/null Wed Mar 8 16:31:26 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/man-excl Wed Mar 8 16:31:26 2000 @@ -0,0 +1,3 @@ +man/man1/XF86Setup.1.gz +man/man1/xfs.1.gz +man/man1/xmseconfig.1.gz Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/man-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/man-list:1.1 --- /dev/null Wed Mar 8 16:31:26 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/man-list Wed Mar 8 16:31:26 2000 @@ -0,0 +1 @@ +man Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/mod-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/mod-list:1.1 --- /dev/null Wed Mar 8 16:31:26 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/mod-list Wed Mar 8 16:31:26 2000 @@ -0,0 +1 @@ +lib/modules Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/nest-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/nest-list:1.1 --- /dev/null Wed Mar 8 16:31:26 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/nest-list Wed Mar 8 16:31:27 2000 @@ -0,0 +1 @@ +bin/Xnest Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/prog-excl diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/prog-excl:1.1 --- /dev/null Wed Mar 8 16:31:27 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/prog-excl Wed Mar 8 16:31:27 2000 @@ -0,0 +1,5 @@ +lib/Server +lib/X11 +lib/lib*.so* +lib/modules +include/X11/bitmaps Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/prog-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/prog-list:1.1 --- /dev/null Wed Mar 8 16:31:27 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/prog-list Wed Mar 8 16:31:27 2000 @@ -0,0 +1,3 @@ +lib +include +lib/X11/config Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/prt-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/prt-list:1.1 --- /dev/null Wed Mar 8 16:31:27 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/prt-list Wed Mar 8 16:31:27 2000 @@ -0,0 +1 @@ +bin/Xprt Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/set-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/set-list:1.1 --- /dev/null Wed Mar 8 16:31:27 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/set-list Wed Mar 8 16:31:27 2000 @@ -0,0 +1,5 @@ +bin/XF86Setup +bin/xmseconfig +lib/X11/XF86Setup +man/man1/XF86Setup.1.gz +man/man1/xmseconfig.1.gz Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/var-dir diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/var-dir:1.1 --- /dev/null Wed Mar 8 16:31:27 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/var-dir Wed Mar 8 16:31:27 2000 @@ -0,0 +1 @@ +var Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/var-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/var-list:1.1 --- /dev/null Wed Mar 8 16:31:27 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/var-list Wed Mar 8 16:31:27 2000 @@ -0,0 +1 @@ +db Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/vfb-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/vfb-list:1.1 --- /dev/null Wed Mar 8 16:31:27 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/vfb-list Wed Mar 8 16:31:27 2000 @@ -0,0 +1 @@ +bin/Xvfb Index: xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/xserv-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/xserv-list:1.2 --- /dev/null Wed Mar 8 16:31:27 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/FreeBSD-aout/xserv-list Wed Mar 8 16:31:27 2000 @@ -0,0 +1,2 @@ +bin/XFree86 +bin/X Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/bin-excl diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/bin-excl:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/bin-excl:1.3 --- xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/bin-excl:1.2 Sat Aug 28 05:01:12 1999 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/bin-excl Wed Mar 8 16:31:27 2000 @@ -10,4 +10,3 @@ bin/xmseconfig bin/*.Xaw3d bin/*.XawXPM -lib/X11/app-defaults/Chooser Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/bin1-excl diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/bin1-excl:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/bin1-excl:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/bin1-excl:1.1 Tue May 27 00:00:31 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/bin1-excl Wed Mar 8 16:31:27 2000 @@ -11,4 +11,3 @@ bin/xmseconfig bin/*.Xaw3d bin/*.XawXPM -lib/X11/app-defaults/Chooser Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/bin2-excl diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/bin2-excl:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/bin2-excl:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/bin2-excl:1.1 Tue May 27 00:00:31 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/bin2-excl Wed Mar 8 16:31:27 2000 @@ -1,13 +0,0 @@ -bin/XF86_* -bin/XF98_* -bin/XF86Setup -bin/Xnest -bin/Xprt -bin/Xvfb -bin/X -bin/xfs -bin/xdm -bin/xmseconfig -bin/*.Xaw3d -bin/*.XawXPM -lib/X11/app-defaults/Chooser Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/bin2-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/bin2-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/bin2-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/bin2-list:1.1 Tue May 27 00:00:31 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/bin2-list Wed Mar 8 16:31:27 2000 @@ -1 +0,0 @@ -lib/X11/app-defaults Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/etc-dir diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/etc-dir:1.2 --- /dev/null Wed Mar 8 16:31:27 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/etc-dir Wed Mar 8 16:31:27 2000 @@ -0,0 +1 @@ +etc/X11 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/etc-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/etc-list:1.2 --- /dev/null Wed Mar 8 16:31:27 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/etc-list Wed Mar 8 16:31:27 2000 @@ -0,0 +1 @@ +. Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/fsrv-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/fsrv-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/fsrv-list:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/fsrv-list:1.1 Tue May 27 00:00:32 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/fsrv-list Wed Mar 8 16:31:28 2000 @@ -1,3 +1,2 @@ bin/xfs -lib/X11/fs man/man1/xfs.1x.Z Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/lib-excl diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/lib-excl:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/lib-excl:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/lib-excl:1.1 Tue May 27 00:00:32 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/lib-excl Wed Mar 8 16:31:28 2000 @@ -1,9 +1,14 @@ -lib/X11/XF86Setup +b/X11/XF86Setup lib/X11/app-defaults lib/X11/config +lib/X11/doc lib/X11/fonts lib/X11/fs +lib/X11/lbxproxy +lib/X11/proxymngr +lib/X11/rstart +lib/X11/twm lib/X11/xdm lib/X11/xinit -lib/X11/doc -lib/X11/XF86Setup +lib/X11/xsm +lib/X11/xserver Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/prog-excl diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/prog-excl:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/prog-excl:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/prog-excl:1.1 Tue May 27 00:00:33 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/prog-excl Wed Mar 8 16:31:28 2000 @@ -1,5 +1,5 @@ -lib/X11 lib/Server +lib/X11 lib/lib*.so* lib/modules include/X11/bitmaps Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/xdm-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/xdm-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/xdm-list:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/xdm-list:1.1 Tue May 27 00:00:35 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/xdm-list Wed Mar 8 16:31:28 2000 @@ -1,3 +1 @@ bin/xdm -lib/X11/app-defaults/Chooser -lib/X11/xdm Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/xserv-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/xserv-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/xserv-list:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/xserv-list:1.1 Sat Aug 28 05:01:13 1999 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Interactive/xserv-list Wed Mar 8 16:31:28 2000 @@ -1 +1,2 @@ bin/XFree86 +bin/X Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/Ma64-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/Ma64-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/Ma64-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/Ma64-list:1.1 Tue May 27 00:00:35 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/Ma64-list Wed Mar 8 16:31:28 2000 @@ -1 +0,0 @@ -bin/XF86_Mach64 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/Mono-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/Mono-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/Mono-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/Mono-list:1.1 Tue May 27 00:00:35 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/Mono-list Wed Mar 8 16:31:28 2000 @@ -1 +0,0 @@ -bin/XF86_Mono Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/P9K-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/P9K-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/P9K-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/P9K-list:1.1 Tue May 27 00:00:35 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/P9K-list Wed Mar 8 16:31:28 2000 @@ -1 +0,0 @@ -bin/XF86_P9000 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/S3-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/S3-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/S3-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/S3-list:1.1 Tue May 27 00:00:36 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/S3-list Wed Mar 8 16:31:28 2000 @@ -1 +0,0 @@ -bin/XF86_S3 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/S3V-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/S3V-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/S3V-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/S3V-list:1.1 Tue May 27 00:00:36 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/S3V-list Wed Mar 8 16:31:28 2000 @@ -1 +0,0 @@ -bin/XF86_S3V Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/SVGA-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/SVGA-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/SVGA-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/SVGA-list:1.1 Tue May 27 00:00:36 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/SVGA-list Wed Mar 8 16:31:29 2000 @@ -1 +0,0 @@ -bin/XF86_SVGA Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/TGA-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/TGA-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/TGA-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/TGA-list:1.1 Tue May 27 00:00:36 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/TGA-list Wed Mar 8 16:31:29 2000 @@ -1 +0,0 @@ -bin/XF86_TGA Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/bin-excl diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/bin-excl:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/bin-excl:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/bin-excl:1.1 Tue May 27 00:00:36 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/bin-excl Wed Mar 8 16:31:29 2000 @@ -7,3 +7,4 @@ bin/X bin/xfs bin/xmseconfig +bin/XFree86 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/bin-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/bin-list:1.3 xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/bin-list:1.5 --- xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/bin-list:1.3 Sun Jul 5 14:47:28 1998 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/bin-list Wed Mar 8 16:31:29 2000 @@ -1,4 +1,7 @@ bin +lib/libGL.so.1.2 +lib/libGL.so.1 +lib/libGL.so lib/libICE.so.6.3 lib/libICE.so.6 lib/libICE.so @@ -16,23 +19,42 @@ lib/libXIE.so lib/libXaw.so.6.1 lib/libXaw.so.6 +lib/libXaw.so.7.0 +lib/libXaw.so.7 lib/libXaw.so -lib/libXext.so.6.3 +lib/libXext.so.6.4 lib/libXext.so.6 lib/libXext.so +lib/libXfont.so.1.3 +lib/libXfont.so.1 +lib/libXfont.so lib/libXi.so.6.0 lib/libXi.so.6 lib/libXi.so -lib/libXmu.so.6.0 +lib/libXmu.so.6.1 lib/libXmu.so.6 lib/libXmu.so lib/libXp.so.6.2 lib/libXp.so.6 lib/libXp.so +lib/libXpm.so.4.11 +lib/libXpm.so.4 +lib/libXpm.so lib/libXt.so.6.0 lib/libXt.so.6 lib/libXt.so lib/libXtst.so.6.1 lib/libXtst.so.6 lib/libXtst.so -lib/X11/app-defaults +lib/libdps.so.1.0 +lib/libdps.so.1 +lib/libdps.so +lib/libdpstk.so.1.0 +lib/libdpstk.so.1 +lib/libdpstk.so +lib/libpsres.so.1.0 +lib/libpsres.so.1 +lib/libpsres.so +lib/libxrx.so.6.3 +lib/libxrx.so.6 +lib/libxrx.so Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/etc-dir diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/etc-dir:1.1 --- /dev/null Wed Mar 8 16:31:29 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/etc-dir Wed Mar 8 16:31:29 2000 @@ -0,0 +1 @@ +etc/X11 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/etc-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/etc-list:1.1 --- /dev/null Wed Mar 8 16:31:29 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/etc-list Wed Mar 8 16:31:29 2000 @@ -0,0 +1 @@ +. Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/fsrv-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/fsrv-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/fsrv-list:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/fsrv-list:1.1 Tue May 27 00:00:37 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/fsrv-list Wed Mar 8 16:31:29 2000 @@ -1,3 +1,2 @@ bin/xfs -lib/X11/fs man/man1/xfs.1x Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/host.def diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/host.def:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/host.def:1.4 --- xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/host.def:1.1 Tue May 27 00:00:37 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/host.def Wed Mar 8 16:31:29 2000 @@ -1,3 +1,8 @@ /* - * Host.def for building FreeBSD bindists + * Host.def for building Linux/alpha bindists + * + * $XFree86: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/host.def,v 1.4 2000/03/07 14:47:32 dawes Exp $ */ + +#define InstallEmptyHostDef + Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/lib-excl diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/lib-excl:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/lib-excl:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/lib-excl:1.1 Tue May 27 00:00:37 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/lib-excl Wed Mar 8 16:31:29 2000 @@ -1,12 +1,14 @@ lib/X11/XF86Setup lib/X11/app-defaults lib/X11/config +lib/X11/doc lib/X11/fonts lib/X11/fs -lib/X11/xdm/GiveConsole -lib/X11/xdm/TakeConsole -lib/X11/xdm/X* -lib/X11/xdm/xdm-* +lib/X11/lbxproxy +lib/X11/proxymngr +lib/X11/rstart +lib/X11/twm +lib/X11/xdm lib/X11/xinit -lib/X11/doc -lib/X11/XF86Setup +lib/X11/xsm +lib/X11/xserver Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/var-dir diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/var-dir:1.1 --- /dev/null Wed Mar 8 16:31:29 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/var-dir Wed Mar 8 16:31:29 2000 @@ -0,0 +1 @@ +var Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/var-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/var-list:1.2 --- /dev/null Wed Mar 8 16:31:29 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/var-list Wed Mar 8 16:31:29 2000 @@ -0,0 +1 @@ +state Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/xserv-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/xserv-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/xserv-list:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/xserv-list:1.1 Fri Dec 31 10:03:56 1999 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-axp/xserv-list Wed Mar 8 16:31:29 2000 @@ -1 +1,2 @@ bin/XFree86 +bin/X Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/bin-excl diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/bin-excl:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/bin-excl:1.3 --- xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/bin-excl:1.2 Sat Aug 28 05:01:14 1999 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/bin-excl Wed Mar 8 16:31:30 2000 @@ -1,4 +1,5 @@ -bin/XFree86 +bin/XF86_* +bin/XF98_* bin/XF86Setup bin/Xnest bin/Xprt @@ -6,3 +7,4 @@ bin/X bin/xfs bin/xmseconfig +bin/XFree86 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/bin-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/bin-list:1.4 xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/bin-list:1.5 --- xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/bin-list:1.4 Sat Aug 28 05:01:14 1999 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/bin-list Wed Mar 8 16:31:30 2000 @@ -1,4 +1,7 @@ bin +lib/libGL.so.1.2 +lib/libGL.so.1 +lib/libGL.so lib/libICE.so.6.3 lib/libICE.so.6 lib/libICE.so @@ -16,37 +19,42 @@ lib/libXIE.so lib/libXaw.so.6.1 lib/libXaw.so.6 -lib/libXaw.so -lib/libXaw.so.7 lib/libXaw.so.7.0 +lib/libXaw.so.7 +lib/libXaw.so lib/libXext.so.6.4 lib/libXext.so.6 lib/libXext.so +lib/libXfont.so.1.3 +lib/libXfont.so.1 +lib/libXfont.so lib/libXi.so.6.0 lib/libXi.so.6 lib/libXi.so -lib/libXmu.so.6.0 +lib/libXmu.so.6.1 lib/libXmu.so.6 lib/libXmu.so lib/libXp.so.6.2 lib/libXp.so.6 lib/libXp.so +lib/libXpm.so.4.11 +lib/libXpm.so.4 +lib/libXpm.so lib/libXt.so.6.0 lib/libXt.so.6 lib/libXt.so lib/libXtst.so.6.1 lib/libXtst.so.6 lib/libXtst.so -lib/libGL.so -lib/libGL.so.1 -lib/libGL.so.1.2 -lib/libXfont.so -lib/libXfont.so.1 -lib/libXfont.so.1.0 -lib/libxrx.so -lib/libxrx.so.6 +lib/libdps.so.1.0 +lib/libdps.so.1 +lib/libdps.so +lib/libdpstk.so.1.0 +lib/libdpstk.so.1 +lib/libdpstk.so +lib/libpsres.so.1.0 +lib/libpsres.so.1 +lib/libpsres.so lib/libxrx.so.6.3 -lib/libXpm.so -lib/libXpm.so.4 -lib/libXpm.so.4.11 -lib/X11/app-defaults +lib/libxrx.so.6 +lib/libxrx.so Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/etc-dir diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/etc-dir:1.1 --- /dev/null Wed Mar 8 16:31:30 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/etc-dir Wed Mar 8 16:31:30 2000 @@ -0,0 +1 @@ +etc/X11 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/etc-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/etc-list:1.1 --- /dev/null Wed Mar 8 16:31:30 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/etc-list Wed Mar 8 16:31:30 2000 @@ -0,0 +1 @@ +. Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/fsrv-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/fsrv-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/fsrv-list:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/fsrv-list:1.1 Tue May 27 00:00:40 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/fsrv-list Wed Mar 8 16:31:30 2000 @@ -1,3 +1,2 @@ bin/xfs -lib/X11/fs man/man1/xfs.1x Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/host.def diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/host.def:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/host.def:1.5 --- xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/host.def:1.1 Tue May 27 00:00:40 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/host.def Wed Mar 8 16:31:30 2000 @@ -1,3 +1,14 @@ /* - * Host.def for building FreeBSD bindists + * Host.def for building Linux/ix86 bindists + * + * $XFree86: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/host.def,v 1.5 2000/03/07 14:47:33 dawes Exp $ */ + +#define InstallEmptyHostDef + + +/* Need to have glide 2 and glide 3 installed */ + +#define HasGlide2 YES +#define HasGlide3 YES + Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/lib-excl diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/lib-excl:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/lib-excl:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/lib-excl:1.1 Tue May 27 00:00:40 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/lib-excl Wed Mar 8 16:31:30 2000 @@ -1,12 +1,14 @@ lib/X11/XF86Setup lib/X11/app-defaults lib/X11/config +lib/X11/doc lib/X11/fonts lib/X11/fs -lib/X11/xdm/GiveConsole -lib/X11/xdm/TakeConsole -lib/X11/xdm/X* -lib/X11/xdm/xdm-* +lib/X11/lbxproxy +lib/X11/proxymngr +lib/X11/rstart +lib/X11/twm +lib/X11/xdm lib/X11/xinit -lib/X11/doc -lib/X11/XF86Setup +lib/X11/xsm +lib/X11/xserver Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/var-dir diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/var-dir:1.1 --- /dev/null Wed Mar 8 16:31:30 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/var-dir Wed Mar 8 16:31:30 2000 @@ -0,0 +1 @@ +var Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/var-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/var-list:1.1 --- /dev/null Wed Mar 8 16:31:30 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/var-list Wed Mar 8 16:31:30 2000 @@ -0,0 +1 @@ +state Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/xserv-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/xserv-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/xserv-list:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/xserv-list:1.1 Sat Aug 28 05:01:15 1999 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ix86/xserv-list Wed Mar 8 16:31:30 2000 @@ -1 +1,2 @@ bin/XFree86 +bin/X Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/68FB-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/68FB-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/68FB-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/68FB-list:1.1 Tue May 27 00:00:44 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/68FB-list Wed Mar 8 16:31:30 2000 @@ -1 +0,0 @@ -bin/XF68_FBDev Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/bin-excl diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/bin-excl:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/bin-excl:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/bin-excl:1.1 Tue May 27 00:00:44 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/bin-excl Wed Mar 8 16:31:30 2000 @@ -1,6 +1,6 @@ -bin/XF68_* bin/XF86_* bin/XF98_* +bin/XF68_* bin/XF86Setup bin/Xnest bin/Xprt @@ -8,3 +8,4 @@ bin/X bin/xfs bin/xmseconfig +bin/XFree86 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/bin-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/bin-list:1.3 xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/bin-list:1.4 --- xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/bin-list:1.3 Sun Jul 5 14:47:28 1998 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/bin-list Wed Mar 8 16:31:30 2000 @@ -1,4 +1,7 @@ bin +lib/libGL.so.1.2 +lib/libGL.so.1 +lib/libGL.so lib/libICE.so.6.3 lib/libICE.so.6 lib/libICE.so @@ -16,24 +19,42 @@ lib/libXIE.so lib/libXaw.so.6.1 lib/libXaw.so.6 +lib/libXaw.so.7.0 +lib/libXaw.so.7 lib/libXaw.so -lib/libXext.so.6.3 +lib/libXext.so.6.4 lib/libXext.so.6 lib/libXext.so +lib/libXfont.so.1.3 +lib/libXfont.so.1 +lib/libXfont.so lib/libXi.so.6.0 lib/libXi.so.6 lib/libXi.so -lib/libXmu.so.6.0 +lib/libXmu.so.6.1 lib/libXmu.so.6 lib/libXmu.so lib/libXp.so.6.2 lib/libXp.so.6 lib/libXp.so +lib/libXpm.so.4.11 +lib/libXpm.so.4 +lib/libXpm.so lib/libXt.so.6.0 lib/libXt.so.6 lib/libXt.so lib/libXtst.so.6.1 lib/libXtst.so.6 lib/libXtst.so -lib/modules -lib/X11/app-defaults +lib/libdps.so.1.0 +lib/libdps.so.1 +lib/libdps.so +lib/libdpstk.so.1.0 +lib/libdpstk.so.1 +lib/libdpstk.so +lib/libpsres.so.1.0 +lib/libpsres.so.1 +lib/libpsres.so +lib/libxrx.so.6.3 +lib/libxrx.so.6 +lib/libxrx.so Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/etc-dir diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/etc-dir:1.1 --- /dev/null Wed Mar 8 16:31:30 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/etc-dir Wed Mar 8 16:31:30 2000 @@ -0,0 +1 @@ +etc/X11 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/etc-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/etc-list:1.1 --- /dev/null Wed Mar 8 16:31:30 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/etc-list Wed Mar 8 16:31:30 2000 @@ -0,0 +1 @@ +. Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/fsrv-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/fsrv-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/fsrv-list:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/fsrv-list:1.1 Tue May 27 00:00:45 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/fsrv-list Wed Mar 8 16:31:30 2000 @@ -1,3 +1,2 @@ bin/xfs -lib/X11/fs man/man1/xfs.1x Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/host.def diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/host.def:1.4 --- /dev/null Wed Mar 8 16:31:30 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/host.def Wed Mar 8 16:31:30 2000 @@ -0,0 +1,8 @@ +/* + * Host.def for building Linux/m68k bindists + * + * $XFree86: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/host.def,v 1.4 2000/03/07 14:47:34 dawes Exp $ + */ + +#define InstallEmptyHostDef + Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/lib-excl diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/lib-excl:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/lib-excl:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/lib-excl:1.1 Tue May 27 00:00:45 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/lib-excl Wed Mar 8 16:31:30 2000 @@ -1,12 +1,14 @@ lib/X11/XF86Setup lib/X11/app-defaults lib/X11/config +lib/X11/doc lib/X11/fonts lib/X11/fs -lib/X11/xdm/GiveConsole -lib/X11/xdm/TakeConsole -lib/X11/xdm/X* -lib/X11/xdm/xdm-* +lib/X11/lbxproxy +lib/X11/proxymngr +lib/X11/rstart +lib/X11/twm +lib/X11/xdm lib/X11/xinit -lib/X11/doc -lib/X11/XF86Setup +lib/X11/xsm +lib/X11/xserver Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/mod-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/mod-list:1.1 --- /dev/null Wed Mar 8 16:31:31 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/mod-list Wed Mar 8 16:31:31 2000 @@ -0,0 +1 @@ +lib/modules Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/prog-excl diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/prog-excl:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/prog-excl:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/prog-excl:1.1 Tue May 27 00:00:46 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/prog-excl Wed Mar 8 16:31:31 2000 @@ -1,3 +1,4 @@ +lib/Server lib/X11 lib/lib*.so* lib/modules Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/set-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/set-list:1.1 --- /dev/null Wed Mar 8 16:31:31 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/set-list Wed Mar 8 16:31:31 2000 @@ -0,0 +1,5 @@ +bin/XF86Setup +bin/xmseconfig +lib/X11/XF86Setup +man/man1/XF86Setup.1x +man/man1/xmseconfig.1x Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/var-dir diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/var-dir:1.1 --- /dev/null Wed Mar 8 16:31:31 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/var-dir Wed Mar 8 16:31:31 2000 @@ -0,0 +1 @@ +var Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/var-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/var-list:1.1 --- /dev/null Wed Mar 8 16:31:31 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/var-list Wed Mar 8 16:31:31 2000 @@ -0,0 +1 @@ +state Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/xserv-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/xserv-list:1.1 --- /dev/null Wed Mar 8 16:31:31 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-m68k/xserv-list Wed Mar 8 16:31:31 2000 @@ -0,0 +1,2 @@ +bin/XFree86 +bin/X Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/bin-excl diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/bin-excl:1.1 --- /dev/null Wed Mar 8 16:31:31 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/bin-excl Wed Mar 8 16:31:31 2000 @@ -0,0 +1,10 @@ +bin/XF86_* +bin/XF98_* +bin/XF86Setup +bin/Xnest +bin/Xprt +bin/Xvfb +bin/X +bin/xfs +bin/xmseconfig +bin/XFree86 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/bin-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/bin-list:1.1 --- /dev/null Wed Mar 8 16:31:31 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/bin-list Wed Mar 8 16:31:31 2000 @@ -0,0 +1,60 @@ +bin +lib/libGL.so.1.2 +lib/libGL.so.1 +lib/libGL.so +lib/libICE.so.6.3 +lib/libICE.so.6 +lib/libICE.so +lib/libPEX5.so.6.0 +lib/libPEX5.so.6 +lib/libPEX5.so +lib/libSM.so.6.0 +lib/libSM.so.6 +lib/libSM.so +lib/libX11.so.6.1 +lib/libX11.so.6 +lib/libX11.so +lib/libXIE.so.6.0 +lib/libXIE.so.6 +lib/libXIE.so +lib/libXaw.so.6.1 +lib/libXaw.so.6 +lib/libXaw.so.7.0 +lib/libXaw.so.7 +lib/libXaw.so +lib/libXext.so.6.4 +lib/libXext.so.6 +lib/libXext.so +lib/libXfont.so.1.3 +lib/libXfont.so.1 +lib/libXfont.so +lib/libXi.so.6.0 +lib/libXi.so.6 +lib/libXi.so +lib/libXmu.so.6.1 +lib/libXmu.so.6 +lib/libXmu.so +lib/libXp.so.6.2 +lib/libXp.so.6 +lib/libXp.so +lib/libXpm.so.4.11 +lib/libXpm.so.4 +lib/libXpm.so +lib/libXt.so.6.0 +lib/libXt.so.6 +lib/libXt.so +lib/libXtst.so.6.1 +lib/libXtst.so.6 +lib/libXtst.so +lib/libdps.so.1.0 +lib/libdps.so.1 +lib/libdps.so +lib/libdpstk.so.1.0 +lib/libdpstk.so.1 +lib/libdpstk.so +lib/libpsres.so.1.0 +lib/libpsres.so.1 +lib/libpsres.so +lib/libxrx.so.6.3 +lib/libxrx.so.6 +lib/libxrx.so Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/dir diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/dir:1.1 --- /dev/null Wed Mar 8 16:31:31 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/dir Wed Mar 8 16:31:31 2000 @@ -0,0 +1 @@ +usr/X11R6 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/etc-dir diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/etc-dir:1.1 --- /dev/null Wed Mar 8 16:31:31 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/etc-dir Wed Mar 8 16:31:31 2000 @@ -0,0 +1 @@ +etc/X11 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/etc-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/etc-list:1.1 --- /dev/null Wed Mar 8 16:31:31 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/etc-list Wed Mar 8 16:31:31 2000 @@ -0,0 +1 @@ +. Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/fsrv-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/fsrv-list:1.1 --- /dev/null Wed Mar 8 16:31:31 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/fsrv-list Wed Mar 8 16:31:31 2000 @@ -0,0 +1,2 @@ +bin/xfs +man/man1/xfs.1x Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/host.def diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/host.def:1.3 --- /dev/null Wed Mar 8 16:31:31 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/host.def Wed Mar 8 16:31:31 2000 @@ -0,0 +1,8 @@ +/* + * Host.def for building Linux/ppc bindists + * + * $XFree86: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/host.def,v 1.3 2000/03/07 14:47:36 dawes Exp $ + */ + +#define InstallEmptyHostDef + Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/lib-excl diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/lib-excl:1.1 --- /dev/null Wed Mar 8 16:31:31 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/lib-excl Wed Mar 8 16:31:31 2000 @@ -0,0 +1,14 @@ +lib/X11/XF86Setup +lib/X11/app-defaults +lib/X11/config +lib/X11/doc +lib/X11/fonts +lib/X11/fs +lib/X11/lbxproxy +lib/X11/proxymngr +lib/X11/rstart +lib/X11/twm +lib/X11/xdm +lib/X11/xinit +lib/X11/xsm +lib/X11/xserver Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/lib-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/lib-list:1.1 --- /dev/null Wed Mar 8 16:31:31 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/lib-list Wed Mar 8 16:31:31 2000 @@ -0,0 +1,2 @@ +lib/X11 +include/X11/bitmaps Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/man-excl diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/man-excl:1.1 --- /dev/null Wed Mar 8 16:31:31 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/man-excl Wed Mar 8 16:31:31 2000 @@ -0,0 +1,3 @@ +man/man1/XF86Setup.1x +man/man1/xfs.1x +man/man1/xmseconfig.1x Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/man-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/man-list:1.1 --- /dev/null Wed Mar 8 16:31:31 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/man-list Wed Mar 8 16:31:31 2000 @@ -0,0 +1 @@ +man Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/mod-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/mod-list:1.1 --- /dev/null Wed Mar 8 16:31:31 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/mod-list Wed Mar 8 16:31:31 2000 @@ -0,0 +1 @@ +lib/modules Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/nest-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/nest-list:1.1 --- /dev/null Wed Mar 8 16:31:31 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/nest-list Wed Mar 8 16:31:31 2000 @@ -0,0 +1 @@ +bin/Xnest Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/prog-excl diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/prog-excl:1.1 --- /dev/null Wed Mar 8 16:31:31 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/prog-excl Wed Mar 8 16:31:31 2000 @@ -0,0 +1,5 @@ +lib/Server +lib/X11 +lib/lib*.so* +lib/modules +include/X11/bitmaps Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/prog-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/prog-list:1.1 --- /dev/null Wed Mar 8 16:31:31 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/prog-list Wed Mar 8 16:31:31 2000 @@ -0,0 +1,3 @@ +lib +include +lib/X11/config Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/prt-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/prt-list:1.1 --- /dev/null Wed Mar 8 16:31:31 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/prt-list Wed Mar 8 16:31:32 2000 @@ -0,0 +1 @@ +bin/Xprt Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/set-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/set-list:1.1 --- /dev/null Wed Mar 8 16:31:32 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/set-list Wed Mar 8 16:31:32 2000 @@ -0,0 +1,5 @@ +bin/XF86Setup +bin/xmseconfig +lib/X11/XF86Setup +man/man1/XF86Setup.1x +man/man1/xmseconfig.1x Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/var-dir diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/var-dir:1.1 --- /dev/null Wed Mar 8 16:31:32 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/var-dir Wed Mar 8 16:31:32 2000 @@ -0,0 +1 @@ +var Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/var-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/var-list:1.1 --- /dev/null Wed Mar 8 16:31:32 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/var-list Wed Mar 8 16:31:32 2000 @@ -0,0 +1 @@ +state Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/vfb-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/vfb-list:1.1 --- /dev/null Wed Mar 8 16:31:32 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/vfb-list Wed Mar 8 16:31:32 2000 @@ -0,0 +1 @@ +bin/Xvfb Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/xserv-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/xserv-list:1.1 --- /dev/null Wed Mar 8 16:31:32 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Linux-ppc/xserv-list Wed Mar 8 16:31:32 2000 @@ -0,0 +1,2 @@ +bin/XFree86 +bin/X Index: xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/8514-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/8514-list:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/8514-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/8514-list:1.2 Thu Jul 10 04:17:26 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/8514-list Wed Mar 8 16:31:32 2000 @@ -1 +0,0 @@ -bin/XF86_8514 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/AGX-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/AGX-list:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/AGX-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/AGX-list:1.2 Thu Jul 10 04:17:27 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/AGX-list Wed Mar 8 16:31:32 2000 @@ -1 +0,0 @@ -bin/XF86_AGX Index: xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/I128-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/I128-list:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/I128-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/I128-list:1.2 Thu Jul 10 04:17:27 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/I128-list Wed Mar 8 16:31:32 2000 @@ -1 +0,0 @@ -bin/XF86_I128 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/Ma32-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/Ma32-list:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/Ma32-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/Ma32-list:1.2 Thu Jul 10 04:17:27 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/Ma32-list Wed Mar 8 16:31:32 2000 @@ -1 +0,0 @@ -bin/XF86_Mach32 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/Ma64-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/Ma64-list:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/Ma64-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/Ma64-list:1.2 Thu Jul 10 04:17:27 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/Ma64-list Wed Mar 8 16:31:32 2000 @@ -1 +0,0 @@ -bin/XF86_Mach64 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/Ma8-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/Ma8-list:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/Ma8-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/Ma8-list:1.2 Thu Jul 10 04:17:28 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/Ma8-list Wed Mar 8 16:31:32 2000 @@ -1 +0,0 @@ -bin/XF86_Mach8 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/Mono-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/Mono-list:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/Mono-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/Mono-list:1.2 Thu Jul 10 04:17:28 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/Mono-list Wed Mar 8 16:31:32 2000 @@ -1 +0,0 @@ -bin/XF86_Mono Index: xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/P9K-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/P9K-list:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/P9K-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/P9K-list:1.2 Thu Jul 10 04:17:28 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/P9K-list Wed Mar 8 16:31:32 2000 @@ -1 +0,0 @@ -bin/XF86_P9000 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/S3-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/S3-list:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/S3-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/S3-list:1.2 Thu Jul 10 04:17:28 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/S3-list Wed Mar 8 16:31:33 2000 @@ -1 +0,0 @@ -bin/XF86_S3 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/S3V-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/S3V-list:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/S3V-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/S3V-list:1.2 Thu Jul 10 04:17:31 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/S3V-list Wed Mar 8 16:31:33 2000 @@ -1 +0,0 @@ -bin/XF86_S3V Index: xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/SVGA-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/SVGA-list:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/SVGA-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/SVGA-list:1.2 Thu Jul 10 04:17:31 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/SVGA-list Wed Mar 8 16:31:33 2000 @@ -1 +0,0 @@ -bin/XF86_SVGA Index: xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/VG16-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/VG16-list:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/VG16-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/VG16-list:1.2 Thu Jul 10 04:17:32 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/VG16-list Wed Mar 8 16:31:33 2000 @@ -1 +0,0 @@ -bin/XF86_VGA16 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/bin-excl diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/bin-excl:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/bin-excl:1.3 --- xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/bin-excl:1.2 Thu Jul 10 04:17:32 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/bin-excl Wed Mar 8 16:31:33 2000 @@ -6,3 +6,4 @@ bin/X bin/xfs bin/xmseconfig +bin/XFree86 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/bin-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/bin-list:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/bin-list:1.3 --- xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/bin-list:1.2 Thu Jul 10 04:17:32 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/bin-list Wed Mar 8 16:31:33 2000 @@ -1,3 +1 @@ bin -lib/modules -lib/X11/app-defaults Index: xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/etc-dir diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/etc-dir:1.1 --- /dev/null Wed Mar 8 16:31:33 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/etc-dir Wed Mar 8 16:31:33 2000 @@ -0,0 +1 @@ +etc/X11 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/etc-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/etc-list:1.1 --- /dev/null Wed Mar 8 16:31:33 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/etc-list Wed Mar 8 16:31:33 2000 @@ -0,0 +1 @@ +. Index: xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/fsrv-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/fsrv-list:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/fsrv-list:1.3 --- xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/fsrv-list:1.2 Thu Jul 10 04:17:33 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/fsrv-list Wed Mar 8 16:31:34 2000 @@ -1,3 +1,2 @@ bin/xfs -lib/X11/fs man/cat1/xfs.1 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/host.def diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/host.def:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/host.def:1.3 --- xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/host.def:1.2 Thu Jul 10 04:17:33 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/host.def Wed Mar 8 16:31:34 2000 @@ -1,11 +1,8 @@ /* * host.def for building LynxOS binary dists * - * $XFree86: xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/host.def,v 1.2 1997/07/10 08:17:33 hohndel Exp $ + * $XFree86: xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/host.def,v 1.3 2000/03/03 20:02:16 dawes Exp $ */ -#define InstallEmptyHostDef - -#define HasTk YES -#define HasTcl YES - +#define HasLibCrypt YES +#define HasMTRRSupport YES Index: xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/lib-excl diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/lib-excl:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/lib-excl:1.3 --- xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/lib-excl:1.2 Thu Jul 10 04:17:34 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/lib-excl Wed Mar 8 16:31:34 2000 @@ -1,12 +1,14 @@ lib/X11/XF86Setup lib/X11/app-defaults lib/X11/config +lib/X11/doc lib/X11/fonts lib/X11/fs -lib/X11/xdm/GiveConsole -lib/X11/xdm/TakeConsole -lib/X11/xdm/X* -lib/X11/xdm/xdm-* +lib/X11/lbxproxy +lib/X11/proxymngr +lib/X11/rstart +lib/X11/twm +lib/X11/xdm lib/X11/xinit -lib/X11/doc -lib/X11/XF86Setup +lib/X11/xsm +lib/X11/xserver Index: xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/mod-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/mod-list:1.1 --- /dev/null Wed Mar 8 16:31:34 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/mod-list Wed Mar 8 16:31:34 2000 @@ -0,0 +1 @@ +lib/modules Index: xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/xserv-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/xserv-list:1.1 --- /dev/null Wed Mar 8 16:31:34 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/LynxOS/xserv-list Wed Mar 8 16:31:34 2000 @@ -0,0 +1,2 @@ +bin/XFree86 +bin/X Index: xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/8514-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/8514-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/8514-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/8514-list:1.1 Tue May 27 00:00:47 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/8514-list Wed Mar 8 16:31:34 2000 @@ -1 +0,0 @@ -bin/XF86_8514 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9480-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9480-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9480-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9480-list:1.1 Tue May 27 00:00:47 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9480-list Wed Mar 8 16:31:34 2000 @@ -1 +0,0 @@ -bin/XF98_NEC480 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9EGC-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9EGC-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9EGC-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9EGC-list:1.1 Tue May 27 00:00:48 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9EGC-list Wed Mar 8 16:31:34 2000 @@ -1 +0,0 @@ -bin/XF98_EGC Index: xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9GA9-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9GA9-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9GA9-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9GA9-list:1.1 Tue May 27 00:00:48 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9GA9-list Wed Mar 8 16:31:34 2000 @@ -1 +0,0 @@ -bin/XF98_GA968 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9GAN-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9GAN-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9GAN-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9GAN-list:1.1 Tue May 27 00:00:48 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9GAN-list Wed Mar 8 16:31:34 2000 @@ -1 +0,0 @@ -bin/XF98_GANBWAP Index: xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9LPW-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9LPW-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9LPW-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9LPW-list:1.1 Tue May 27 00:00:48 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9LPW-list Wed Mar 8 16:31:34 2000 @@ -1 +0,0 @@ -bin/XF98_PWLB Index: xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9NKV-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9NKV-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9NKV-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9NKV-list:1.1 Tue May 27 00:00:48 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9NKV-list Wed Mar 8 16:31:34 2000 @@ -1 +0,0 @@ -bin/XF98_NKVNEC Index: xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9NS3-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9NS3-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9NS3-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9NS3-list:1.1 Tue May 27 00:00:49 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9NS3-list Wed Mar 8 16:31:34 2000 @@ -1 +0,0 @@ -bin/XF98_NECS3 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9SPW-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9SPW-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9SPW-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9SPW-list:1.1 Tue May 27 00:00:49 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9SPW-list Wed Mar 8 16:31:34 2000 @@ -1 +0,0 @@ -bin/XF98_PWSKB Index: xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9TGU-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9TGU-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9TGU-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9TGU-list:1.1 Tue May 27 00:00:49 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9TGU-list Wed Mar 8 16:31:34 2000 @@ -1 +0,0 @@ -bin/XF98_TGUI Index: xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9WEP-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9WEP-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9WEP-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9WEP-list:1.1 Tue May 27 00:00:49 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9WEP-list Wed Mar 8 16:31:34 2000 @@ -1 +0,0 @@ -bin/XF98_WABEP Index: xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9WS-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9WS-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9WS-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9WS-list:1.1 Tue May 27 00:00:49 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9WS-list Wed Mar 8 16:31:34 2000 @@ -1 +0,0 @@ -bin/XF98_WABS Index: xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9WSN-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9WSN-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9WSN-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9WSN-list:1.1 Tue May 27 00:00:50 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/9WSN-list Wed Mar 8 16:31:34 2000 @@ -1 +0,0 @@ -bin/XF98_WSNA Index: xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/AGX-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/AGX-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/AGX-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/AGX-list:1.1 Tue May 27 00:00:50 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/AGX-list Wed Mar 8 16:31:34 2000 @@ -1 +0,0 @@ -bin/XF86_AGX Index: xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/I128-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/I128-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/I128-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/I128-list:1.1 Tue May 27 00:00:50 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/I128-list Wed Mar 8 16:31:34 2000 @@ -1 +0,0 @@ -bin/XF86_I128 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/Ma32-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/Ma32-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/Ma32-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/Ma32-list:1.1 Tue May 27 00:00:51 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/Ma32-list Wed Mar 8 16:31:34 2000 @@ -1 +0,0 @@ -bin/XF86_Mach32 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/Ma64-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/Ma64-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/Ma64-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/Ma64-list:1.1 Tue May 27 00:00:51 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/Ma64-list Wed Mar 8 16:31:35 2000 @@ -1 +0,0 @@ -bin/XF86_Mach64 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/Ma8-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/Ma8-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/Ma8-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/Ma8-list:1.1 Tue May 27 00:00:51 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/Ma8-list Wed Mar 8 16:31:35 2000 @@ -1 +0,0 @@ -bin/XF86_Mach8 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/Mono-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/Mono-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/Mono-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/Mono-list:1.1 Tue May 27 00:00:51 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/Mono-list Wed Mar 8 16:31:35 2000 @@ -1 +0,0 @@ -bin/XF86_Mono Index: xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/P9K-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/P9K-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/P9K-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/P9K-list:1.1 Tue May 27 00:00:51 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/P9K-list Wed Mar 8 16:31:35 2000 @@ -1 +0,0 @@ -bin/XF86_P9000 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/S3-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/S3-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/S3-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/S3-list:1.1 Tue May 27 00:00:52 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/S3-list Wed Mar 8 16:31:35 2000 @@ -1 +0,0 @@ -bin/XF86_S3 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/S3V-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/S3V-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/S3V-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/S3V-list:1.1 Tue May 27 00:00:52 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/S3V-list Wed Mar 8 16:31:35 2000 @@ -1 +0,0 @@ -bin/XF86_S3V Index: xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/SVGA-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/SVGA-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/SVGA-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/SVGA-list:1.1 Tue May 27 00:00:52 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/SVGA-list Wed Mar 8 16:31:35 2000 @@ -1 +0,0 @@ -bin/XF86_SVGA Index: xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/VG16-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/VG16-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/VG16-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/VG16-list:1.1 Tue May 27 00:00:52 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/VG16-list Wed Mar 8 16:31:35 2000 @@ -1 +0,0 @@ -bin/XF86_VGA16 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/bin-excl diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/bin-excl:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/bin-excl:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/bin-excl:1.1 Tue May 27 00:00:53 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/bin-excl Wed Mar 8 16:31:35 2000 @@ -7,3 +7,4 @@ bin/X bin/xfs bin/xmseconfig +bin/XFree86 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/bin-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/bin-list:1.3 xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/bin-list:1.5 --- xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/bin-list:1.3 Sun Jul 5 14:47:29 1998 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/bin-list Wed Mar 8 16:31:35 2000 @@ -1,15 +1,21 @@ bin +lib/libGL.so.1.2 lib/libICE.so.6.3 lib/libPEX5.so.6.0 lib/libSM.so.6.0 lib/libX11.so.6.1 lib/libXIE.so.6.0 lib/libXaw.so.6.1 -lib/libXext.so.6.3 +lib/libXaw.so.7.0 +lib/libXext.so.6.4 +lib/libXfont.so.1.3 lib/libXi.so.6.0 -lib/libXmu.so.6.0 +lib/libXmu.so.6.1 lib/libXp.so.6.2 +lib/libXpm.so.4.11 lib/libXt.so.6.0 lib/libXtst.so.6.1 +lib/libdps.so.1.0 +lib/libdpstk.so.1.0 lib/liboldX.so.6.0 -lib/X11/app-defaults +lib/libpsres.so.1.0 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/etc-dir diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/etc-dir:1.1 --- /dev/null Wed Mar 8 16:31:35 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/etc-dir Wed Mar 8 16:31:35 2000 @@ -0,0 +1 @@ +etc/X11 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/etc-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/etc-list:1.1 --- /dev/null Wed Mar 8 16:31:35 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/etc-list Wed Mar 8 16:31:35 2000 @@ -0,0 +1 @@ +. Index: xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/fsrv-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/fsrv-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/fsrv-list:1.3 --- xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/fsrv-list:1.1 Tue May 27 00:00:53 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/fsrv-list Wed Mar 8 16:31:35 2000 @@ -1,3 +1,2 @@ bin/xfs -lib/X11/fs -man/man1/xfs.1.gz +man/cat1/xfs.0 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/host.def diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/host.def:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/host.def:1.3 --- xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/host.def:1.1 Tue May 27 00:00:54 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/host.def Wed Mar 8 16:31:35 2000 @@ -1,3 +1,8 @@ /* - * Host.def for building FreeBSD bindists + * Host.def for building NetBSD bindists + * + * $XFree86: xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/host.def,v 1.3 2000/03/07 14:47:36 dawes Exp $ */ + +#define InstallEmptyHostDef + Index: xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/lib-excl diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/lib-excl:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/lib-excl:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/lib-excl:1.1 Tue May 27 00:00:54 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/lib-excl Wed Mar 8 16:31:35 2000 @@ -1,12 +1,14 @@ lib/X11/XF86Setup lib/X11/app-defaults lib/X11/config +lib/X11/doc lib/X11/fonts lib/X11/fs -lib/X11/xdm/GiveConsole -lib/X11/xdm/TakeConsole -lib/X11/xdm/X* -lib/X11/xdm/xdm-* +lib/X11/lbxproxy +lib/X11/proxymngr +lib/X11/rstart +lib/X11/twm +lib/X11/xdm lib/X11/xinit -lib/X11/doc -lib/X11/XF86Setup +lib/X11/xsm +lib/X11/xserver Index: xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/man-excl diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/man-excl:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/man-excl:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/man-excl:1.1 Tue May 27 00:00:55 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/man-excl Wed Mar 8 16:31:35 2000 @@ -1,3 +1,3 @@ -man/man1/XF86Setup.1.gz -man/man1/xfs.1.gz -man/man1/xmseconfig.1.gz +man/cat1/XF86Setup.0 +man/cat1/xfs.0 +man/cat1/xmseconfig.0 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/set-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/set-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/set-list:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/set-list:1.1 Tue May 27 00:00:56 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/set-list Wed Mar 8 16:31:35 2000 @@ -1,5 +1,5 @@ bin/XF86Setup bin/xmseconfig lib/X11/XF86Setup -man/man1/XF86Setup.1.gz -man/man1/xmseconfig.1.gz +man/cat1/XF86Setup.0 +man/cat1/xmseconfig.0 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/var-dir diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/var-dir:1.1 --- /dev/null Wed Mar 8 16:31:35 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/var-dir Wed Mar 8 16:31:35 2000 @@ -0,0 +1 @@ +var Index: xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/var-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/var-list:1.1 --- /dev/null Wed Mar 8 16:31:35 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/var-list Wed Mar 8 16:31:35 2000 @@ -0,0 +1 @@ +db Index: xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/xserv-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/xserv-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/xserv-list:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/xserv-list:1.1 Fri Dec 31 10:04:01 1999 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/NetBSD-ix86/xserv-list Wed Mar 8 16:31:35 2000 @@ -1 +1,2 @@ bin/XFree86 +bin/X Index: xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/8514-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/8514-list:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/8514-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/8514-list:1.2 Tue Aug 26 06:53:18 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/8514-list Wed Mar 8 16:31:36 2000 @@ -1 +0,0 @@ -bin/XF86_8514 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/AGX-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/AGX-list:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/AGX-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/AGX-list:1.2 Tue Aug 26 06:53:18 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/AGX-list Wed Mar 8 16:31:36 2000 @@ -1 +0,0 @@ -bin/XF86_AGX Index: xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/I128-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/I128-list:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/I128-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/I128-list:1.2 Tue Aug 26 06:53:19 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/I128-list Wed Mar 8 16:31:36 2000 @@ -1 +0,0 @@ -bin/XF86_I128 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/Ma32-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/Ma32-list:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/Ma32-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/Ma32-list:1.2 Tue Aug 26 06:53:19 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/Ma32-list Wed Mar 8 16:31:36 2000 @@ -1 +0,0 @@ -bin/XF86_Mach32 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/Ma64-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/Ma64-list:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/Ma64-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/Ma64-list:1.2 Tue Aug 26 06:53:19 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/Ma64-list Wed Mar 8 16:31:36 2000 @@ -1 +0,0 @@ -bin/XF86_Mach64 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/Ma8-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/Ma8-list:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/Ma8-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/Ma8-list:1.2 Tue Aug 26 06:53:19 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/Ma8-list Wed Mar 8 16:31:36 2000 @@ -1 +0,0 @@ -bin/XF86_Mach8 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/Mono-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/Mono-list:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/Mono-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/Mono-list:1.2 Tue Aug 26 06:53:20 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/Mono-list Wed Mar 8 16:31:36 2000 @@ -1 +0,0 @@ -bin/XF86_Mono Index: xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/P9K-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/P9K-list:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/P9K-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/P9K-list:1.2 Tue Aug 26 06:53:20 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/P9K-list Wed Mar 8 16:31:36 2000 @@ -1 +0,0 @@ -bin/XF86_P9000 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/S3-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/S3-list:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/S3-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/S3-list:1.2 Tue Aug 26 06:53:20 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/S3-list Wed Mar 8 16:31:36 2000 @@ -1 +0,0 @@ -bin/XF86_S3 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/S3V-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/S3V-list:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/S3V-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/S3V-list:1.2 Tue Aug 26 06:53:20 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/S3V-list Wed Mar 8 16:31:36 2000 @@ -1 +0,0 @@ -bin/XF86_S3V Index: xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/SVGA-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/SVGA-list:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/SVGA-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/SVGA-list:1.2 Tue Aug 26 06:53:21 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/SVGA-list Wed Mar 8 16:31:36 2000 @@ -1 +0,0 @@ -bin/XF86_SVGA Index: xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/VG16-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/VG16-list:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/VG16-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/VG16-list:1.2 Tue Aug 26 06:53:21 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/VG16-list Wed Mar 8 16:31:36 2000 @@ -1 +0,0 @@ -bin/XF86_VGA16 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/bin-excl diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/bin-excl:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/bin-excl:1.3 --- xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/bin-excl:1.2 Tue Aug 26 06:53:21 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/bin-excl Wed Mar 8 16:31:36 2000 @@ -7,3 +7,4 @@ bin/X bin/xfs bin/xmseconfig +bin/XFree86 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/bin-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/bin-list:1.4 xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/bin-list:1.6 --- xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/bin-list:1.4 Sun Jul 5 14:47:29 1998 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/bin-list Wed Mar 8 16:31:36 2000 @@ -1,16 +1,22 @@ bin +lib/libGL.so.1.2 lib/libICE.so.6.3 lib/libPEX5.so.6.0 lib/libSM.so.6.0 lib/libX11.so.6.1 lib/libXIE.so.6.0 +lib/libXThrStub.so.6.0 lib/libXaw.so.6.1 -lib/libXext.so.6.3 +lib/libXaw.so.7.0 +lib/libXext.so.6.4 +lib/libXfont.so.1.3 lib/libXi.so.6.0 -lib/libXmu.so.6.0 +lib/libXmu.so.6.1 lib/libXp.so.6.2 +lib/libXpm.so.4.11 lib/libXt.so.6.0 lib/libXtst.so.6.1 +lib/libdps.so.1.0 +lib/libdpstk.so.1.0 lib/liboldX.so.6.0 -lib/modules -lib/X11/app-defaults +lib/libpsres.so.1.0 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/etc-dir diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/etc-dir:1.1 --- /dev/null Wed Mar 8 16:31:36 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/etc-dir Wed Mar 8 16:31:36 2000 @@ -0,0 +1 @@ +etc/X11 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/etc-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/etc-list:1.1 --- /dev/null Wed Mar 8 16:31:36 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/etc-list Wed Mar 8 16:31:36 2000 @@ -0,0 +1 @@ +. Index: xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/fsrv-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/fsrv-list:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/fsrv-list:1.3 --- xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/fsrv-list:1.2 Tue Aug 26 06:53:22 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/fsrv-list Wed Mar 8 16:31:36 2000 @@ -1,3 +1,2 @@ bin/xfs -lib/X11/fs man/cat1/xfs.0 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/host.def diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/host.def:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/host.def:1.3 --- xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/host.def:1.2 Tue Aug 26 06:53:22 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/host.def Wed Mar 8 16:31:36 2000 @@ -1,7 +1,7 @@ /* - * Host.def for building OpenBSD bindists + * Host.def for building OpenBSD/ix86 bindists * - * $XFree86: xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/host.def,v 1.2 1997/08/26 10:53:22 hohndel Exp $ + * $XFree86: xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/host.def,v 1.3 2000/02/27 01:29:03 dawes Exp $ */ #define InstallEmptyHostDef @@ -13,4 +13,3 @@ #define TkLibName tk41 #define TclLibName tcl75 -#define JoystickSupport YES Index: xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/lib-excl diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/lib-excl:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/lib-excl:1.3 --- xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/lib-excl:1.2 Tue Aug 26 06:53:23 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/lib-excl Wed Mar 8 16:31:36 2000 @@ -1,12 +1,14 @@ lib/X11/XF86Setup lib/X11/app-defaults lib/X11/config +lib/X11/doc lib/X11/fonts lib/X11/fs -lib/X11/xdm/GiveConsole -lib/X11/xdm/TakeConsole -lib/X11/xdm/X* -lib/X11/xdm/xdm-* +lib/X11/lbxproxy +lib/X11/proxymngr +lib/X11/rstart +lib/X11/twm +lib/X11/xdm lib/X11/xinit -lib/X11/doc -lib/X11/XF86Setup +lib/X11/xsm +lib/X11/xserver Index: xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/mod-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/mod-list:1.1 --- /dev/null Wed Mar 8 16:31:37 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/mod-list Wed Mar 8 16:31:37 2000 @@ -0,0 +1 @@ +lib/modules Index: xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/var-dir diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/var-dir:1.1 --- /dev/null Wed Mar 8 16:31:37 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/var-dir Wed Mar 8 16:31:37 2000 @@ -0,0 +1 @@ +var Index: xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/var-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/var-list:1.1 --- /dev/null Wed Mar 8 16:31:37 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/var-list Wed Mar 8 16:31:37 2000 @@ -0,0 +1 @@ +db Index: xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/xserv-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/xserv-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/xserv-list:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/xserv-list:1.1 Fri Dec 31 10:04:02 1999 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-ix86/xserv-list Wed Mar 8 16:31:37 2000 @@ -1 +1,2 @@ bin/XFree86 +bin/X Index: xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-sparc/host.def diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-sparc/host.def:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-sparc/host.def:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-sparc/host.def:1.1 Sat Oct 25 09:50:40 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-sparc/host.def Wed Mar 8 16:31:37 2000 @@ -1,7 +1,7 @@ /* - * Host.def for building OpenBSD bindists + * Host.def for building OpenBSD/sparc bindists * - * $XFree86: xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-sparc/host.def,v 1.1 1997/10/25 13:50:40 hohndel Exp $ + * $XFree86: xc/programs/Xserver/hw/xfree86/etc/bindist/OpenBSD-sparc/host.def,v 1.2 2000/02/27 01:39:18 dawes Exp $ */ #define InstallEmptyHostDef Index: xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/8514-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/8514-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/8514-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/8514-list:1.1 Tue May 27 00:00:57 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/8514-list Wed Mar 8 16:31:37 2000 @@ -1 +0,0 @@ -bin/XF86_8514 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/AGX-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/AGX-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/AGX-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/AGX-list:1.1 Tue May 27 00:00:57 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/AGX-list Wed Mar 8 16:31:37 2000 @@ -1 +0,0 @@ -bin/XF86_AGX Index: xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/I128-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/I128-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/I128-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/I128-list:1.1 Tue May 27 00:00:57 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/I128-list Wed Mar 8 16:31:37 2000 @@ -1 +0,0 @@ -bin/XF86_I128 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/Ma32-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/Ma32-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/Ma32-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/Ma32-list:1.1 Tue May 27 00:00:57 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/Ma32-list Wed Mar 8 16:31:37 2000 @@ -1 +0,0 @@ -bin/XF86_Mach32 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/Ma64-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/Ma64-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/Ma64-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/Ma64-list:1.1 Tue May 27 00:00:58 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/Ma64-list Wed Mar 8 16:31:37 2000 @@ -1 +0,0 @@ -bin/XF86_Mach64 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/Ma8-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/Ma8-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/Ma8-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/Ma8-list:1.1 Tue May 27 00:00:58 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/Ma8-list Wed Mar 8 16:31:37 2000 @@ -1 +0,0 @@ -bin/XF86_Mach8 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/Mono-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/Mono-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/Mono-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/Mono-list:1.1 Tue May 27 00:00:58 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/Mono-list Wed Mar 8 16:31:37 2000 @@ -1 +0,0 @@ -bin/XF86_Mono Index: xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/P9K-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/P9K-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/P9K-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/P9K-list:1.1 Tue May 27 00:00:58 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/P9K-list Wed Mar 8 16:31:37 2000 @@ -1 +0,0 @@ -bin/XF86_P9000 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/S3-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/S3-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/S3-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/S3-list:1.1 Tue May 27 00:00:59 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/S3-list Wed Mar 8 16:31:37 2000 @@ -1 +0,0 @@ -bin/XF86_S3 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/S3V-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/S3V-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/S3V-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/S3V-list:1.1 Tue May 27 00:00:59 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/S3V-list Wed Mar 8 16:31:37 2000 @@ -1 +0,0 @@ -bin/XF86_S3V Index: xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/SVGA-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/SVGA-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/SVGA-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/SVGA-list:1.1 Tue May 27 00:00:59 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/SVGA-list Wed Mar 8 16:31:37 2000 @@ -1 +0,0 @@ -bin/XF86_SVGA Index: xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/VG16-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/VG16-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/VG16-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/VG16-list:1.1 Tue May 27 00:00:59 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/VG16-list Wed Mar 8 16:31:37 2000 @@ -1 +0,0 @@ -bin/XF86_VGA16 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/bin-excl diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/bin-excl:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/bin-excl:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/bin-excl:1.1 Tue May 27 00:01:00 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/bin-excl Wed Mar 8 16:31:38 2000 @@ -7,3 +7,4 @@ bin/X bin/xfs bin/xmseconfig +bin/XFree86 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/bin-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/bin-list:1.3 xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/bin-list:1.4 --- xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/bin-list:1.3 Sun Jul 5 14:47:30 1998 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/bin-list Wed Mar 8 16:31:38 2000 @@ -1,28 +1,38 @@ bin +lib/libGL.so.1.2 +lib/libGL.so lib/libICE.so.6.3 -lib/libPEX5.so.6.0 -lib/libSM.so.6.0 -lib/libX11.so.6.1 -lib/libXIE.so.6.0 -lib/libXaw.so.6.1 -lib/libXext.so.6.3 -lib/libXi.so.6.0 -lib/libXmu.so.6.0 -lib/libXp.so.6.2 -lib/libXt.so.6.0 -lib/libXtst.so.6.1 -lib/liboldX.so.6.0 lib/libICE.so +lib/libPEX5.so.6.0 lib/libPEX5.so +lib/libSM.so.6.0 lib/libSM.so +lib/libX11.so.6.1 lib/libX11.so +lib/libXIE.so.6.0 lib/libXIE.so +lib/libXaw.so.6.1 +lib/libXaw.so.7.0 lib/libXaw.so +lib/libXext.so.6.4 lib/libXext.so +lib/libXfont.so.1.3 +lib/libXfont.so +lib/libXi.so.6.0 lib/libXi.so +lib/libXmu.so.6.1 lib/libXmu.so +lib/libXp.so.6.2 lib/libXp.so +lib/libXpm.so.4.11 +lib/libXpm.so +lib/libXt.so.6.0 lib/libXt.so +lib/libXtst.so.6.1 lib/libXtst.so -lib/liboldX.so -lib/X11/app-defaults +lib/libdps.so.1.0 +lib/libdps.so +lib/libdpstk.so.1.0 +lib/libdpstk.so +lib/libpsres.so.1.0 +lib/libpsres.so Index: xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/etc-dir diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/etc-dir:1.1 --- /dev/null Wed Mar 8 16:31:38 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/etc-dir Wed Mar 8 16:31:38 2000 @@ -0,0 +1 @@ +etc/X11 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/etc-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/etc-list:1.1 --- /dev/null Wed Mar 8 16:31:38 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/etc-list Wed Mar 8 16:31:38 2000 @@ -0,0 +1 @@ +. Index: xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/fsrv-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/fsrv-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/fsrv-list:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/fsrv-list:1.1 Tue May 27 00:01:00 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/fsrv-list Wed Mar 8 16:31:38 2000 @@ -1,3 +1,2 @@ bin/xfs -lib/X11/fs man/man1/xfs.1x Index: xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/host.def diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/host.def:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/host.def:1.3 --- xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/host.def:1.1 Tue May 27 00:01:00 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/host.def Wed Mar 8 16:31:38 2000 @@ -1,3 +1,8 @@ /* - * Host.def for building FreeBSD bindists + * Host.def for building SVR4.0 bindists + * + * $XFree86: xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/host.def,v 1.3 2000/03/07 14:47:37 dawes Exp $ */ + +#define InstallEmptyHostDef + Index: xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/lib-excl diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/lib-excl:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/lib-excl:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/lib-excl:1.1 Tue May 27 00:01:01 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/lib-excl Wed Mar 8 16:31:38 2000 @@ -1,12 +1,14 @@ lib/X11/XF86Setup lib/X11/app-defaults lib/X11/config +lib/X11/doc lib/X11/fonts lib/X11/fs -lib/X11/xdm/GiveConsole -lib/X11/xdm/TakeConsole -lib/X11/xdm/X* -lib/X11/xdm/xdm-* +lib/X11/lbxproxy +lib/X11/proxymngr +lib/X11/rstart +lib/X11/twm +lib/X11/xdm lib/X11/xinit -lib/X11/doc -lib/X11/XF86Setup +lib/X11/xsm +lib/X11/xserver Index: xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/var-dir diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/var-dir:1.1 --- /dev/null Wed Mar 8 16:31:38 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/var-dir Wed Mar 8 16:31:38 2000 @@ -0,0 +1 @@ +var Index: xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/var-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/var-list:1.1 --- /dev/null Wed Mar 8 16:31:38 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/var-list Wed Mar 8 16:31:38 2000 @@ -0,0 +1 @@ +db Index: xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/xserv-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/xserv-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/xserv-list:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/xserv-list:1.1 Fri Dec 31 10:04:05 1999 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/SVR4.0/xserv-list Wed Mar 8 16:31:38 2000 @@ -1 +1,2 @@ bin/XFree86 +bin/X Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/8514-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/8514-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/8514-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/8514-list:1.1 Tue May 27 00:01:03 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/8514-list Wed Mar 8 16:31:38 2000 @@ -1 +0,0 @@ -bin/XF86_8514 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/AGX-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/AGX-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/AGX-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/AGX-list:1.1 Tue May 27 00:01:03 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/AGX-list Wed Mar 8 16:31:38 2000 @@ -1 +0,0 @@ -bin/XF86_AGX Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/I128-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/I128-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/I128-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/I128-list:1.1 Tue May 27 00:01:04 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/I128-list Wed Mar 8 16:31:38 2000 @@ -1 +0,0 @@ -bin/XF86_I128 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/Ma32-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/Ma32-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/Ma32-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/Ma32-list:1.1 Tue May 27 00:01:04 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/Ma32-list Wed Mar 8 16:31:38 2000 @@ -1 +0,0 @@ -bin/XF86_Mach32 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/Ma64-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/Ma64-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/Ma64-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/Ma64-list:1.1 Tue May 27 00:01:04 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/Ma64-list Wed Mar 8 16:31:38 2000 @@ -1 +0,0 @@ -bin/XF86_Mach64 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/Ma8-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/Ma8-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/Ma8-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/Ma8-list:1.1 Tue May 27 00:01:04 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/Ma8-list Wed Mar 8 16:31:38 2000 @@ -1 +0,0 @@ -bin/XF86_Mach8 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/Mono-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/Mono-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/Mono-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/Mono-list:1.1 Tue May 27 00:01:05 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/Mono-list Wed Mar 8 16:31:38 2000 @@ -1 +0,0 @@ -bin/XF86_Mono Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/P9K-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/P9K-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/P9K-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/P9K-list:1.1 Tue May 27 00:01:05 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/P9K-list Wed Mar 8 16:31:38 2000 @@ -1 +0,0 @@ -bin/XF86_P9000 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/S3-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/S3-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/S3-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/S3-list:1.1 Tue May 27 00:01:05 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/S3-list Wed Mar 8 16:31:38 2000 @@ -1 +0,0 @@ -bin/XF86_S3 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/S3V-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/S3V-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/S3V-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/S3V-list:1.1 Tue May 27 00:01:05 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/S3V-list Wed Mar 8 16:31:38 2000 @@ -1 +0,0 @@ -bin/XF86_S3V Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/SVGA-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/SVGA-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/SVGA-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/SVGA-list:1.1 Tue May 27 00:01:05 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/SVGA-list Wed Mar 8 16:31:39 2000 @@ -1 +0,0 @@ -bin/XF86_SVGA Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/VG16-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/VG16-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/VG16-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/VG16-list:1.1 Tue May 27 00:01:06 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/VG16-list Wed Mar 8 16:31:39 2000 @@ -1 +0,0 @@ -bin/XF86_VGA16 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/bin-excl diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/bin-excl:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/bin-excl:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/bin-excl:1.1 Tue May 27 00:01:06 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/bin-excl Wed Mar 8 16:31:39 2000 @@ -7,3 +7,4 @@ bin/X bin/xfs bin/xmseconfig +bin/XFree86 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/bin-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/bin-list:1.3 xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/bin-list:1.4 --- xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/bin-list:1.3 Sun Jul 5 14:47:30 1998 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/bin-list Wed Mar 8 16:31:39 2000 @@ -1,28 +1,38 @@ bin +lib/libGL.so.1.2 +lib/libGL.so lib/libICE.so.6.3 -lib/libPEX5.so.6.0 -lib/libSM.so.6.0 -lib/libX11.so.6.1 -lib/libXIE.so.6.0 -lib/libXaw.so.6.1 -lib/libXext.so.6.3 -lib/libXi.so.6.0 -lib/libXmu.so.6.0 -lib/libXp.so.6.2 -lib/libXt.so.6.0 -lib/libXtst.so.6.1 -lib/liboldX.so.6.0 lib/libICE.so +lib/libPEX5.so.6.0 lib/libPEX5.so +lib/libSM.so.6.0 lib/libSM.so +lib/libX11.so.6.1 lib/libX11.so +lib/libXIE.so.6.0 lib/libXIE.so +lib/libXaw.so.6.1 +lib/libXaw.so.7.0 lib/libXaw.so +lib/libXext.so.6.4 lib/libXext.so +lib/libXfont.so.1.3 +lib/libXfont.so +lib/libXi.so.6.0 lib/libXi.so +lib/libXmu.so.6.1 lib/libXmu.so +lib/libXp.so.6.2 lib/libXp.so +lib/libXpm.so.4.11 +lib/libXpm.so +lib/libXt.so.6.0 lib/libXt.so +lib/libXtst.so.6.1 lib/libXtst.so -lib/liboldX.so -lib/X11/app-defaults +lib/libdps.so.1.0 +lib/libdps.so +lib/libdpstk.so.1.0 +lib/libdpstk.so +lib/libpsres.so.1.0 +lib/libpsres.so Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/etc-dir diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/etc-dir:1.1 --- /dev/null Wed Mar 8 16:31:39 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/etc-dir Wed Mar 8 16:31:39 2000 @@ -0,0 +1 @@ +etc/X11 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/etc-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/etc-list:1.1 --- /dev/null Wed Mar 8 16:31:39 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/etc-list Wed Mar 8 16:31:39 2000 @@ -0,0 +1 @@ +. Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/fsrv-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/fsrv-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/fsrv-list:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/fsrv-list:1.1 Tue May 27 00:01:07 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/fsrv-list Wed Mar 8 16:31:39 2000 @@ -1,3 +1,2 @@ bin/xfs -lib/X11/fs man/man1/xfs.1x Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/host.def diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/host.def:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/host.def:1.3 --- xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/host.def:1.1 Tue May 27 00:01:07 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/host.def Wed Mar 8 16:31:39 2000 @@ -1,3 +1,8 @@ /* - * Host.def for building FreeBSD bindists + * Host.def for building Solaris bindists + * + * $XFree86: xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/host.def,v 1.3 2000/03/07 14:47:38 dawes Exp $ */ + +#define InstallEmptyHostDef + Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/lib-excl diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/lib-excl:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/lib-excl:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/lib-excl:1.1 Tue May 27 00:01:07 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/lib-excl Wed Mar 8 16:31:39 2000 @@ -1,12 +1,14 @@ lib/X11/XF86Setup lib/X11/app-defaults lib/X11/config +lib/X11/doc lib/X11/fonts lib/X11/fs -lib/X11/xdm/GiveConsole -lib/X11/xdm/TakeConsole -lib/X11/xdm/X* -lib/X11/xdm/xdm-* +lib/X11/lbxproxy +lib/X11/proxymngr +lib/X11/rstart +lib/X11/twm +lib/X11/xdm lib/X11/xinit -lib/X11/doc -lib/X11/XF86Setup +lib/X11/xsm +lib/X11/xserver Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/var-dir diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/var-dir:1.1 --- /dev/null Wed Mar 8 16:31:39 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/var-dir Wed Mar 8 16:31:39 2000 @@ -0,0 +1 @@ +var Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/var-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/var-list:1.1 --- /dev/null Wed Mar 8 16:31:39 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/var-list Wed Mar 8 16:31:39 2000 @@ -0,0 +1 @@ +db Index: xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/xserv-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/xserv-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/xserv-list:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/xserv-list:1.1 Fri Dec 31 10:04:06 1999 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/Solaris/xserv-list Wed Mar 8 16:31:39 2000 @@ -1 +1,2 @@ bin/XFree86 +bin/X Index: xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/8514-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/8514-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/8514-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/8514-list:1.1 Tue May 27 00:01:09 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/8514-list Wed Mar 8 16:31:39 2000 @@ -1 +0,0 @@ -bin/XF86_8514 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/AGX-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/AGX-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/AGX-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/AGX-list:1.1 Tue May 27 00:01:09 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/AGX-list Wed Mar 8 16:31:39 2000 @@ -1 +0,0 @@ -bin/XF86_AGX Index: xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/I128-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/I128-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/I128-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/I128-list:1.1 Tue May 27 00:01:10 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/I128-list Wed Mar 8 16:31:39 2000 @@ -1 +0,0 @@ -bin/XF86_I128 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/Ma32-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/Ma32-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/Ma32-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/Ma32-list:1.1 Tue May 27 00:01:10 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/Ma32-list Wed Mar 8 16:31:39 2000 @@ -1 +0,0 @@ -bin/XF86_Mach32 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/Ma64-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/Ma64-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/Ma64-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/Ma64-list:1.1 Tue May 27 00:01:10 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/Ma64-list Wed Mar 8 16:31:39 2000 @@ -1 +0,0 @@ -bin/XF86_Mach64 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/Ma8-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/Ma8-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/Ma8-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/Ma8-list:1.1 Tue May 27 00:01:11 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/Ma8-list Wed Mar 8 16:31:39 2000 @@ -1 +0,0 @@ -bin/XF86_Mach8 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/Mono-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/Mono-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/Mono-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/Mono-list:1.1 Tue May 27 00:01:11 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/Mono-list Wed Mar 8 16:31:39 2000 @@ -1 +0,0 @@ -bin/XF86_Mono Index: xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/P9K-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/P9K-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/P9K-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/P9K-list:1.1 Tue May 27 00:01:12 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/P9K-list Wed Mar 8 16:31:39 2000 @@ -1 +0,0 @@ -bin/XF86_P9000 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/S3-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/S3-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/S3-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/S3-list:1.1 Tue May 27 00:01:12 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/S3-list Wed Mar 8 16:31:40 2000 @@ -1 +0,0 @@ -bin/XF86_S3 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/S3V-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/S3V-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/S3V-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/S3V-list:1.1 Tue May 27 00:01:13 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/S3V-list Wed Mar 8 16:31:40 2000 @@ -1 +0,0 @@ -bin/XF86_S3V Index: xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/SVGA-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/SVGA-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/SVGA-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/SVGA-list:1.1 Tue May 27 00:01:13 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/SVGA-list Wed Mar 8 16:31:40 2000 @@ -1 +0,0 @@ -bin/XF86_SVGA Index: xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/VG16-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/VG16-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/VG16-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/VG16-list:1.1 Tue May 27 00:01:13 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/VG16-list Wed Mar 8 16:31:40 2000 @@ -1 +0,0 @@ -bin/XF86_VGA16 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/bin-excl diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/bin-excl:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/bin-excl:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/bin-excl:1.1 Tue May 27 00:01:13 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/bin-excl Wed Mar 8 16:31:40 2000 @@ -7,3 +7,4 @@ bin/X bin/xfs bin/xmseconfig +bin/XFree86 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/bin-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/bin-list:1.3 xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/bin-list:1.4 --- xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/bin-list:1.3 Sun Jul 5 14:47:30 1998 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/bin-list Wed Mar 8 16:31:40 2000 @@ -1,28 +1,38 @@ bin +lib/libGL.so.1.2 +lib/libGL.so lib/libICE.so.6.3 -lib/libPEX5.so.6.0 -lib/libSM.so.6.0 -lib/libX11.so.6.1 -lib/libXIE.so.6.0 -lib/libXaw.so.6.1 -lib/libXext.so.6.3 -lib/libXi.so.6.0 -lib/libXmu.so.6.0 -lib/libXp.so.6.2 -lib/libXt.so.6.0 -lib/libXtst.so.6.1 -lib/liboldX.so.6.0 lib/libICE.so +lib/libPEX5.so.6.0 lib/libPEX5.so +lib/libSM.so.6.0 lib/libSM.so +lib/libX11.so.6.1 lib/libX11.so +lib/libXIE.so.6.0 lib/libXIE.so +lib/libXaw.so.6.1 +lib/libXaw.so.7.0 lib/libXaw.so +lib/libXext.so.6.4 lib/libXext.so +lib/libXfont.so.1.3 +lib/libXfont.so +lib/libXi.so.6.0 lib/libXi.so +lib/libXmu.so.6.1 lib/libXmu.so +lib/libXp.so.6.2 lib/libXp.so +lib/libXpm.so.4.11 +lib/libXpm.so +lib/libXt.so.6.0 lib/libXt.so +lib/libXtst.so.6.1 lib/libXtst.so -lib/liboldX.so -lib/X11/app-defaults +lib/libdps.so.1.0 +lib/libdps.so +lib/libdpstk.so.1.0 +lib/libdpstk.so +lib/libpsres.so.1.0 +lib/libpsres.so Index: xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/etc-dir diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/etc-dir:1.1 --- /dev/null Wed Mar 8 16:31:40 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/etc-dir Wed Mar 8 16:31:40 2000 @@ -0,0 +1 @@ +etc/X11 Index: xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/etc-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/etc-list:1.1 --- /dev/null Wed Mar 8 16:31:40 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/etc-list Wed Mar 8 16:31:40 2000 @@ -0,0 +1 @@ +. Index: xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/fsrv-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/fsrv-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/fsrv-list:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/fsrv-list:1.1 Tue May 27 00:01:14 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/fsrv-list Wed Mar 8 16:31:40 2000 @@ -1,3 +1,2 @@ bin/xfs -lib/X11/fs man/man1/xfs.1x Index: xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/host.def diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/host.def:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/host.def:1.3 --- xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/host.def:1.1 Tue May 27 00:01:14 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/host.def Wed Mar 8 16:31:40 2000 @@ -1,3 +1,8 @@ /* - * Host.def for building FreeBSD bindists + * Host.def for building UnixWare bindists + * + * $XFree86: xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/host.def,v 1.3 2000/03/07 14:47:39 dawes Exp $ */ + +#define InstallEmptyHostDef + Index: xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/lib-excl diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/lib-excl:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/lib-excl:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/lib-excl:1.1 Tue May 27 00:01:14 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/lib-excl Wed Mar 8 16:31:40 2000 @@ -1,12 +1,14 @@ lib/X11/XF86Setup lib/X11/app-defaults lib/X11/config +lib/X11/doc lib/X11/fonts lib/X11/fs -lib/X11/xdm/GiveConsole -lib/X11/xdm/TakeConsole -lib/X11/xdm/X* -lib/X11/xdm/xdm-* +lib/X11/lbxproxy +lib/X11/proxymngr +lib/X11/rstart +lib/X11/twm +lib/X11/xdm lib/X11/xinit -lib/X11/doc -lib/X11/XF86Setup +lib/X11/xsm +lib/X11/xserver Index: xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/var-dir diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/var-dir:1.1 --- /dev/null Wed Mar 8 16:31:40 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/var-dir Wed Mar 8 16:31:40 2000 @@ -0,0 +1 @@ +var Index: xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/var-list diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/var-list:1.1 --- /dev/null Wed Mar 8 16:31:40 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/var-list Wed Mar 8 16:31:40 2000 @@ -0,0 +1 @@ +db Index: xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/xserv-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/xserv-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/xserv-list:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/xserv-list:1.1 Fri Dec 31 10:04:11 1999 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/UnixWare/xserv-list Wed Mar 8 16:31:40 2000 @@ -1 +1,2 @@ bin/XFree86 +bin/X Index: xc/programs/Xserver/hw/xfree86/etc/bindist/common/cfg-excl diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/common/cfg-excl:1.2 xc/programs/Xserver/hw/xfree86/etc/bindist/common/cfg-excl:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/common/cfg-excl:1.2 Sat Apr 4 19:46:00 1998 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/common/cfg-excl Wed Mar 8 16:31:40 2000 @@ -1,2 +0,0 @@ -lib/X11/xdm/lib* -lib/X11/xdm/chooser* Index: xc/programs/Xserver/hw/xfree86/etc/bindist/common/cfg-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/common/cfg-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/common/cfg-list:removed --- xc/programs/Xserver/hw/xfree86/etc/bindist/common/cfg-list:1.1 Tue May 27 00:01:17 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/common/cfg-list Wed Mar 8 16:31:40 2000 @@ -1,2 +0,0 @@ -lib/X11/xdm -lib/X11/xinit/xinitrc Index: xc/programs/Xserver/hw/xfree86/etc/bindist/common/extras diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/common/extras:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/common/extras:1.4 --- xc/programs/Xserver/hw/xfree86/etc/bindist/common/extras:1.1 Tue May 27 00:01:18 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/common/extras Wed Mar 8 16:31:41 2000 @@ -1,5 +1,5 @@ -lib/X11/doc/BetaReport +lib/X11/doc/BugReport lib/X11/doc/RELNOTES lib/X11/doc/README -lib/X11/etc/postinst.sh -lib/X11/etc/preinst.sh +lib/X11/doc/Install +lib/X11/etc/Xinstall.sh Index: xc/programs/Xserver/hw/xfree86/etc/bindist/common/fnon-list diff -u xc/programs/Xserver/hw/xfree86/etc/bindist/common/fnon-list:1.1 xc/programs/Xserver/hw/xfree86/etc/bindist/common/fnon-list:1.2 --- xc/programs/Xserver/hw/xfree86/etc/bindist/common/fnon-list:1.1 Tue May 27 00:01:18 1997 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/common/fnon-list Wed Mar 8 16:31:41 2000 @@ -4,8 +4,6 @@ lib/X11/fonts/misc/hanglg16.pcf.gz lib/X11/fonts/misc/hanglm16.pcf.gz lib/X11/fonts/misc/hanglm24.pcf.gz -lib/X11/fonts/misc/heb6x13.pcf.gz -lib/X11/fonts/misc/heb8x13.pcf.gz lib/X11/fonts/misc/jiskan16.pcf.gz lib/X11/fonts/misc/jiskan24.pcf.gz lib/X11/fonts/misc/k14.pcf.gz Index: xc/programs/Xserver/hw/xfree86/etc/bindist/common/host.def diff -u /dev/null xc/programs/Xserver/hw/xfree86/etc/bindist/common/host.def:1.4 --- /dev/null Wed Mar 8 16:31:41 2000 +++ xc/programs/Xserver/hw/xfree86/etc/bindist/common/host.def Wed Mar 8 16:31:41 2000 @@ -0,0 +1,19 @@ +/* + * host.def for building the common component of the XFree86 bindists. + * + * The settings here require the following to be installed: + * + * - XFree86 doctools package (requires groff) + * - nroff/troff or groff + * + * $XFree86: xc/programs/Xserver/hw/xfree86/etc/bindist/common/host.def,v 1.4 2000/03/03 23:16:25 dawes Exp $ + */ + +#define HasSgmlFmt YES +#define BuildAllDocs YES +#define InstallJapaneseDocs YES + +#define BuildSpecsDocs YES +#define SpecsDocDirs GL Xext Xv xterm + + Index: xc/programs/Xserver/hw/xfree86/input/Imakefile diff -u xc/programs/Xserver/hw/xfree86/input/Imakefile:1.12 xc/programs/Xserver/hw/xfree86/input/Imakefile:1.14 --- xc/programs/Xserver/hw/xfree86/input/Imakefile:1.12 Sat Sep 4 09:04:39 1999 +++ xc/programs/Xserver/hw/xfree86/input/Imakefile Wed Mar 8 16:31:41 2000 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/input/Imakefile,v 1.12 1999/09/04 13:04:39 dawes Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/input/Imakefile,v 1.14 2000/03/05 19:26:46 dawes Exp $ #define IHaveModules #include <Server.tmpl> @@ -8,10 +8,14 @@ JOYSTICKDIR = joystick #endif -MOUSEDIR = mouse +/* + * The keyboard directory only has a man page so far! The driver is + * still built in to the common layer. + */ +KBDDIR = keyboard -SUBDIRS = $(MOUSEDIR) XInputDrivers $(JOYSTICKDIR) -DRIVERS = mouse XInputDrivers +SUBDIRS = XInputDrivers $(JOYSTICKDIR) $(KBDDIR) +DRIVERS = XInputDrivers #ifndef OS2Architecture OBJS = `cat idriver.list` @@ -24,7 +28,7 @@ #endif #if MakeHasPosixVariableSubstitutions -DONES = $(SUBDIRS:%=%/DONE) +DONES = $(DRIVERS:%=%/DONE) #if HasGnuMake || HasBsdMake $(DONES): $(SUBDIRS) #endif Index: xc/programs/Xserver/hw/xfree86/input/dynapro/Imakefile diff -u xc/programs/Xserver/hw/xfree86/input/dynapro/Imakefile:1.2 xc/programs/Xserver/hw/xfree86/input/dynapro/Imakefile:1.3 --- xc/programs/Xserver/hw/xfree86/input/dynapro/Imakefile:1.2 Sat Aug 14 06:49:59 1999 +++ xc/programs/Xserver/hw/xfree86/input/dynapro/Imakefile Wed Mar 8 16:31:41 2000 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/input/dynapro/Imakefile,v 1.2 1999/08/14 10:49:59 dawes Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/input/dynapro/Imakefile,v 1.3 2000/03/03 01:05:48 dawes Exp $ #define IHaveModules #include <Server.tmpl> @@ -20,6 +20,11 @@ ObjectModuleTarget($(DRIVER),$(OBJS)) InstallObjectModule($(DRIVER),$(MODULEDIR),input) + +#if !defined(XF86DriverSDK) +CppManTarget($(DRIVER),) +InstallModuleManPage($(DRIVER)) +#endif DependTarget() Index: xc/programs/Xserver/hw/xfree86/input/dynapro/dynapro.cpp diff -u /dev/null xc/programs/Xserver/hw/xfree86/input/dynapro/dynapro.cpp:1.1 --- /dev/null Wed Mar 8 16:31:41 2000 +++ xc/programs/Xserver/hw/xfree86/input/dynapro/dynapro.cpp Wed Mar 8 16:31:41 2000 @@ -0,0 +1,37 @@ +.\" $XFree86: xc/programs/Xserver/hw/xfree86/input/dynapro/dynapro.cpp,v 1.1 2000/03/03 01:05:48 dawes Exp $ +.TH DYNAPRO __drivermansuffix__ "Version 4.0" "XFree86" +.SH NAME +dynapro \- Dynapro input driver +.SH SYNOPSIS +.B "Section ""InputDevice""" +.br +.BI " Identifier """ idevname """" +.br +.B " Driver ""dynapro""" +.br +.BI " Option ""Device"" """ devpath """" +.br +\ \ ... +.br +.B EndSection +.SH DESCRIPTION +.B dynapro +is an XFree86 input driver for Dynapro devices... +.PP +The +.B dynapro +driver functions as a pointer input device, and may be used as the +X server's core pointer. +THIS MAN PAGE NEEDS TO BE FILLED IN. +.SH SUPPORTED HARDWARE +What is supported... +.SH CONFIGURATION DETAILS +Please refer to XF86Config(__filemansuffix__) for general configuration +details and for options that can be used with all input drivers. This +section only covers configuration details specific to this driver. +.PP +Config details... +.SH "SEE ALSO" +XFree86(1), XF86Config(__filemansuffix__), xf86config(1), Xserver(1), X(1). +.SH AUTHORS +Authors include... Index: xc/programs/Xserver/hw/xfree86/input/keyboard/Imakefile diff -u /dev/null xc/programs/Xserver/hw/xfree86/input/keyboard/Imakefile:1.1 --- /dev/null Wed Mar 8 16:31:42 2000 +++ xc/programs/Xserver/hw/xfree86/input/keyboard/Imakefile Wed Mar 8 16:31:42 2000 @@ -0,0 +1,12 @@ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/input/keyboard/Imakefile,v 1.1 2000/03/03 01:05:48 dawes Exp $ + +#define IHaveModules +#include <Server.tmpl> + +DRIVER = keyboard + +#if !defined(XF86DriverSDK) +CppManTarget($(DRIVER),) +InstallModuleManPage($(DRIVER)) +#endif + Index: xc/programs/Xserver/hw/xfree86/input/keyboard/keyboard.cpp diff -u /dev/null xc/programs/Xserver/hw/xfree86/input/keyboard/keyboard.cpp:1.1 --- /dev/null Wed Mar 8 16:31:42 2000 +++ xc/programs/Xserver/hw/xfree86/input/keyboard/keyboard.cpp Wed Mar 8 16:31:42 2000 @@ -0,0 +1,97 @@ +.\" $XFree86: xc/programs/Xserver/hw/xfree86/input/keyboard/keyboard.cpp,v 1.1 2000/03/03 01:05:49 dawes Exp $ +.TH KEYBOARD __drivermansuffix__ "Version 4.0" "XFree86" +.SH NAME +keyboard \- Keyboard input driver +.SH SYNOPSIS +.B "Section ""InputDevice""" +.br +.BI " Identifier """ idevname """" +.br +.B " Driver ""keyboard""" +.br +\ \ ... +.br +.B EndSection +.SH DESCRIPTION +.B keyboard +is an XFree86 input driver for keyboards. The driver supports the standard +OS-provided keyboard interface. This driver is currently built-in to +the core X server. +.PP +The +.B keyboard +driver functions as a keyboard input device, and may be used as the +X server's core keyboard. This driver is currently built-in to the core +X server, and multiple instances are not yet supported. +.SH CONFIGURATION DETAILS +Please refer to XF86Config(__filemansuffix__) for general configuration +details and for options that can be used with all input drivers. This +section only covers configuration details specific to this driver. +.PP +The following driver +.B Options +are supported: +.TP 7 +.BI "Option ""Protocol"" """ string """ +Specify the mouse protocol. Valid protocol types include: +.PP +.RS 12 +Standard, Xqueue. +.RE +.PP +.RS 7 +Not all protocols are supported on all platforms. Default: "Standard". +.RE +.TP 7 +.BI "Option ""AutoRepeat"" """ "delay rate" """ +sets the auto repeat behaviour for the keyboard. This is not implemented +on all platforms. +.I delay +is the time in milliseconds before a key starts repeating. +.I rate +is the number of times a key repeats per second. Default: "500 30". +.TP 7 +.BI "Option ""XLeds"" """ ledlist """ +makes the keyboard LEDs specified in +.I ledlist +available for client use instead of their traditional function +(Scroll Lock, Caps Lock and Num Lock). The numbers in the list are +in the range 1 to 3. Default: empty list. +.TP 7 +.BI "Option ""XkbDisable"" """ boolean """ +disable/enable the XKEYBOARD extension. The \-kb command line +option overrides this config file option. Default: XKB is enabled. +.TP 7 +.BI "Option ""XkbRules"" """ rules """ +specifies which XKB rules file to use for interpreting the +.BR XkbModel , +.BR XkbLayout , +.BR XkbVariant , +and +.B XkbOptions +settings. Default: "xfree86" for most platforms, but "xfree98" for the +Japanese PC-98 platforms. +.TP 7 +.BI "Option ""XkbModel"" """ modelname """ +specifies the XKB keyboard model name. Default: "pc101" for most platforms, +but "pc98" for the Japanese PC-98 platforms, and "pc101_sol8x86" for +Solaris 8 on x86. +.TP 7 +.BI "Option ""XkbLayout"" """ layoutname """ +specifies the XKB keyboard layout name. This is usually the country or +language type of the keyboard. Default: "us" for most platforms, but +"nec/jp" for the Japanese PC-98 platforms. +.TP 7 +.BI "Option ""XkbVariant"" """ variants """ +specifies the XKB keyboard variant components. These can be used to +enhance the keyboard layout details. Default: not set. +.TP 7 +.BI "Option ""XkbOptions"" """ options """ +specifies the XKB keyboard option components. These can be used to +enhance the keyboard behaviour. Default: not set. +.PP +Some other XKB-related options are available, but they are incompatible +with the ones listed above and are not recommended, so they are not +documented here. +.SH "SEE ALSO" +XFree86(1), XF86Config(__filemansuffix__), xf86config(1), Xserver(1), X(1). Index: xc/programs/Xserver/hw/xfree86/input/microtouch/Imakefile diff -u xc/programs/Xserver/hw/xfree86/input/microtouch/Imakefile:1.4 xc/programs/Xserver/hw/xfree86/input/microtouch/Imakefile:1.5 --- xc/programs/Xserver/hw/xfree86/input/microtouch/Imakefile:1.4 Sat Aug 14 06:50:01 1999 +++ xc/programs/Xserver/hw/xfree86/input/microtouch/Imakefile Wed Mar 8 16:31:43 2000 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/input/microtouch/Imakefile,v 1.4 1999/08/14 10:50:01 dawes Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/input/microtouch/Imakefile,v 1.5 2000/03/03 01:05:49 dawes Exp $ #define IHaveModules #include <Server.tmpl> @@ -20,6 +20,11 @@ ObjectModuleTarget($(DRIVER),$(OBJS)) InstallObjectModule($(DRIVER),$(MODULEDIR),input) + +#if !defined(XF86DriverSDK) +CppManTarget($(DRIVER),) +InstallModuleManPage($(DRIVER)) +#endif DependTarget() Index: xc/programs/Xserver/hw/xfree86/input/microtouch/microtouch.cpp diff -u /dev/null xc/programs/Xserver/hw/xfree86/input/microtouch/microtouch.cpp:1.1 --- /dev/null Wed Mar 8 16:31:43 2000 +++ xc/programs/Xserver/hw/xfree86/input/microtouch/microtouch.cpp Wed Mar 8 16:31:43 2000 @@ -0,0 +1,37 @@ +.\" $XFree86: xc/programs/Xserver/hw/xfree86/input/microtouch/microtouch.cpp,v 1.1 2000/03/03 01:05:49 dawes Exp $ +.TH MICROTOUCH __drivermansuffix__ "Version 4.0" "XFree86" +.SH NAME +microtouch \- MicroTouch input driver +.SH SYNOPSIS +.B "Section ""InputDevice""" +.br +.BI " Identifier """ idevname """" +.br +.B " Driver ""microtouch""" +.br +.BI " Option ""Device"" """ devpath """" +.br +\ \ ... +.br +.B EndSection +.SH DESCRIPTION +.B microtouch +is an XFree86 input driver for MicroTouch devices... +.PP +The +.B microtouch +driver functions as a pointer input device, and may be used as the +X server's core pointer. +THIS MAN PAGE NEEDS TO BE FILLED IN. +.SH SUPPORTED HARDWARE +What is supported... +.SH CONFIGURATION DETAILS +Please refer to XF86Config(__filemansuffix__) for general configuration +details and for options that can be used with all input drivers. This +section only covers configuration details specific to this driver. +.PP +Config details... +.SH "SEE ALSO" +XFree86(1), XF86Config(__filemansuffix__), xf86config(1), Xserver(1), X(1). +.SH AUTHORS +Authors include... Index: xc/programs/Xserver/hw/xfree86/input/microtouch/microtouch.h diff -u xc/programs/Xserver/hw/xfree86/input/microtouch/microtouch.h:1.3 xc/programs/Xserver/hw/xfree86/input/microtouch/microtouch.h:1.4 --- xc/programs/Xserver/hw/xfree86/input/microtouch/microtouch.h:1.3 Sat Aug 28 05:01:17 1999 +++ xc/programs/Xserver/hw/xfree86/input/microtouch/microtouch.h Wed Mar 8 16:31:43 2000 @@ -24,7 +24,7 @@ * in this Software without prior written authorization from Metro Link. * */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/input/microtouch/microtouch.h,v 1.3 1999/08/28 09:01:17 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/input/microtouch/microtouch.h,v 1.4 2000/03/03 20:36:41 dawes Exp $ */ #ifndef _microtouch_H_ #define _microtouch_H_ @@ -120,8 +120,6 @@ /****************************************************************************** * Declarations *****************************************************************************/ -static MODULESETUPPROTO( SetupProc ); -static void TearDownProc( pointer p ); /*int DumpOpts (XF86OptionPtr opts); */ static Bool DeviceControl (DeviceIntPtr dev, int mode); static Bool DeviceOn (DeviceIntPtr dev); Index: xc/programs/Xserver/hw/xfree86/input/mouse/Imakefile diff -u xc/programs/Xserver/hw/xfree86/input/mouse/Imakefile:1.3 xc/programs/Xserver/hw/xfree86/input/mouse/Imakefile:1.4 --- xc/programs/Xserver/hw/xfree86/input/mouse/Imakefile:1.3 Sat Aug 14 06:50:02 1999 +++ xc/programs/Xserver/hw/xfree86/input/mouse/Imakefile Wed Mar 8 16:31:43 2000 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/input/mouse/Imakefile,v 1.3 1999/08/14 10:50:02 dawes Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/input/mouse/Imakefile,v 1.4 2000/03/03 01:05:50 dawes Exp $ #define IHaveModules #include <Server.tmpl> @@ -23,6 +23,11 @@ ObjectModuleTarget($(DRIVER),$(OBJS)) InstallObjectModule($(DRIVER),$(MODULEDIR),input) + +#if !defined(XF86DriverSDK) +CppManTarget($(DRIVER),) +InstallModuleManPage($(DRIVER)) +#endif DependTarget() Index: xc/programs/Xserver/hw/xfree86/input/mouse/mouse.c diff -u xc/programs/Xserver/hw/xfree86/input/mouse/mouse.c:1.26 xc/programs/Xserver/hw/xfree86/input/mouse/mouse.c:1.28 --- xc/programs/Xserver/hw/xfree86/input/mouse/mouse.c:1.26 Wed Mar 8 16:31:43 2000 +++ xc/programs/Xserver/hw/xfree86/input/mouse/mouse.c Wed Mar 8 16:31:43 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/input/mouse/mouse.c,v 1.26 2000/02/17 15:20:17 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/input/mouse/mouse.c,v 1.28 2000/03/06 22:59:33 dawes Exp $ */ /* * * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany. @@ -68,7 +68,6 @@ #endif static int MouseProc(DeviceIntPtr device, int what); -static void MouseNoSigioReadInput(InputInfoPtr pInfo); static Bool MouseConvert(LocalDevicePtr local, int first, int num, int v0, int v1, int v2, int v3, int v4, int v5, int *x, int *y); @@ -1688,21 +1687,31 @@ change = buttons ^ reverseBits(hitachMap, pMse->lastButtons); else change = buttons ^ reverseBits(reverseMap, pMse->lastButtons); - if (change & 02) - xf86PostButtonEvent(pInfo->dev, 0, 2, (buttons & 02), 0, 0); + + /* + * process button 2, 4 and above + */ + change &= ~0x05; + while (change) { + id = ffs(change); + change &= ~(1 << (id - 1)); + xf86PostButtonEvent(pInfo->dev, 0, id, + (buttons & (1 << (id - 1))), 0, 0); + } /* * emulate the third button by the other two */ - if ((id = stateTab[(buttons & 0x07) + pMse->emulateState][0]) != 0) + buttons &= 0x07; + if ((id = stateTab[buttons + pMse->emulateState][0]) != 0) xf86PostButtonEvent(pInfo->dev, 0, abs(id), (id >= 0), 0, 0); - if ((id = stateTab[(buttons & 0x07) + pMse->emulateState][1]) != 0) + if ((id = stateTab[buttons + pMse->emulateState][1]) != 0) xf86PostButtonEvent(pInfo->dev, 0, abs(id), (id >= 0), 0, 0); - pMse->emulateState = stateTab[(buttons & 0x07) + pMse->emulateState][2]; - if (stateTab[(buttons & 0x07) + pMse->emulateState][0] || - stateTab[(buttons & 0x07) + pMse->emulateState][1]) { + pMse->emulateState = stateTab[buttons + pMse->emulateState][2]; + if (stateTab[buttons + pMse->emulateState][0] || + stateTab[buttons + pMse->emulateState][1]) { pMse->truebuttons = truebuttons; timer = TimerSet(timer, 0, pMse->emulate3Timeout, buttonTimer, pInfo); Index: xc/programs/Xserver/hw/xfree86/input/mouse/mouse.cpp diff -u /dev/null xc/programs/Xserver/hw/xfree86/input/mouse/mouse.cpp:1.1 --- /dev/null Wed Mar 8 16:31:43 2000 +++ xc/programs/Xserver/hw/xfree86/input/mouse/mouse.cpp Wed Mar 8 16:31:43 2000 @@ -0,0 +1,152 @@ +.\" $XFree86: xc/programs/Xserver/hw/xfree86/input/mouse/mouse.cpp,v 1.1 2000/03/03 01:05:50 dawes Exp $ +.TH MOUSE __drivermansuffix__ "Version 4.0" "XFree86" +.SH NAME +mouse \- Mouse input driver +.SH SYNOPSIS +.B "Section ""InputDevice""" +.br +.BI " Identifier """ idevname """" +.br +.B " Driver ""mouse""" +.br +.BI " Option ""Protocol"" """ protoname """" +.br +.BI " Option ""Device"" """ devpath """" +.br +\ \ ... +.br +.B EndSection +.SH DESCRIPTION +.B mouse +is an XFree86 input driver for mice. The driver supports most available +mouse types and interfaces. USB mice are only supported on some OSs, +and the level of support for PS/2 mice depends on the OS. +.PP +The +.B mouse +driver functions as a pointer input device, and may be used as the +X server's core pointer. Multiple mice are supported by multiple +instances of this driver. +.SH SUPPORTED HARDWARE +There is a detailed list of hardware that the +.B mouse +driver supports in the +.I README.mouse +document. This can be found +in __projectroot__/lib/X11/doc/, or online at +http://www.xfree86.org/current/mouse.html. +.SH CONFIGURATION DETAILS +Please refer to XF86Config(__filemansuffix__) for general configuration +details and for options that can be used with all input drivers. This +section only covers configuration details specific to this driver. +.PP +The driver can auto-detect the mouse type on some platforms On some +platforms this is limited to plug and play serial mice, and on some the +auto-detection works for any mouse that the OS's kernel driver supports. +On others, it is always necessary to specify the mouse protocol in the +config file. The +.I README.mouse +document contains some detailed information about this. +.PP +The following driver +.B Options +are supported: +.TP 7 +.BI "Option ""Protocol"" """ string """ +Specify the mouse protocol. Valid protocol types include: +.PP +.RS 12 +Auto, Microsoft, MouseSystems, MMSeries, Logitech, MouseMan, MMHitTab, +GlidePoint, IntelliMouse, ThinkingMouse, AceCad, PS/2, ImPS/2, +ExplorerPS/2, ThinkingMousePS/2, MouseManPlusPS/2, GlidePointPS/2, +NetMousePS/2, NetScrollPS/2, BusMouse, SysMouse, WSMouse, USB, Xqueue. +.RE +.PP +.RS 7 +Not all protocols are supported on all platforms. The "Auto" platform +specifies that protocol auto-detection should be attempted. There is no +default protocol setting, and specifying this option is mandatory. +.TP 7 +.BI "Option ""Device"" """ string """ +Specifies the device through which the mouse can be accessed. A common +setting is "/dev/mouse", which is often a symbolic link to the real +device. This option is mandatory, and there is no default setting. +.TP 7 +.BI "Option ""Buttons"" """ integer """ +Specifies the number of mouse buttons. In cases where the number of buttons +cannot be auto-detected, the default value is 3. +.TP 7 +.BI "Option ""Emulate3Buttons"" """ boolean """ +Enable/disable the emulation of the third (middle) mouse button for mice +which only have two physical buttons. The third button is emulated by +pressing both buttons simultaneously. Default: off +.TP 7 +.BI "Option ""Emulate3Timeout"" """ integer """ +Sets the timeout (in milliseconds) that the driver waits before decicing +if two buttons where pressed "simultaneously" when 3 button emulation is +enabled. Default: 50. +.TP 7 +.BI "Option ""ChordMiddle"" """ boolean """ +Enable/disable handling of mice that send left+right events when the middle +button is used. Default: off. +.TP 7 +.BI "Option ""ZAxisMapping"" ""X""" +.TP 7 +.BI "Option ""ZAxisMapping"" ""Y""" +.TP 7 +.BI "Option ""ZAxisMapping"" """ "N1 N2" """ +.TP 7 +.BI "Option ""ZAxisMapping"" """ "N1 N2 N3 N4" """ +Set the mapping for the Z axis (wheel) motion to buttons or another axis +.RB ( X +or +.BR Y ). +Button number +.I N1 +is mapped to the negative Z axis motion and button number +.I N2 +is mapped to the positive Z axis motion. For mice with two wheels, +four button numbers can be specified, with the negative and positive motion +of the second wheel mapped respectively to buttons number +.I N3 +and +.IR N4 . +.TP 7 +.BI "Option ""FlipXY"" """ boolean """ +Enable/disable swapping the X and Y axes. Default: off. +.TP 7 +.BI "Option ""SampleRate"" """ integer """ +Sets the number of motion/button events the mouse sends per second. Setting +this is only supported for some mice, including some Logitech mice and +some PS/2 mice on some platforms. Default: whatever the mouse is +already set to. +.TP 7 +.BI "Option ""Resolution"" """ integer """ +Sets the resolution of the device in counts per inch. Setting this is +only supported for some mice, including some PS/2 mice on some platforms. +Default: whatever the mouse is already set to. +.TP 7 +.BI "Option ""ClearDTR"" """ boolean """ +Enable/disable clearing the DTR line on the serial port used by the mouse. +Some dual-protocol mice require the DTR line to be cleared to operate +in the non-default protocol. This option is for serial mice only. +Default: off. +.TP 7 +.BI "Option ""ClearRTS"" """ boolean """ +Enable/disable clearing the RTS line on the serial port used by the mouse. +Some dual-protocol mice require the RTS line to be cleared to operate +in the non-default protocol. This option is for serial mice only. +Default: off. +.TP 7 +.BI "Option ""BaudRate"" """ integer """ +Set the baud rate to use for communicating with a serial mouse. This +option should rarely be required because the default is correct for almost +all situations. Valid values include: 300, 1200, 2400, 4800, 9600, 19200. +Default: 1200. +.PP +There are some other options that may be used to control various parameters +for serial port communication, but they are not documented here because +the driver sets them correctly for each mouse protocol type. +.SH "SEE ALSO" +XFree86(1), XF86Config(__filemansuffix__), xf86config(1), Xserver(1), X(1), +README.mouse. Index: xc/programs/Xserver/hw/xfree86/input/void/Imakefile diff -u xc/programs/Xserver/hw/xfree86/input/void/Imakefile:1.1 xc/programs/Xserver/hw/xfree86/input/void/Imakefile:1.2 --- xc/programs/Xserver/hw/xfree86/input/void/Imakefile:1.1 Fri Nov 19 08:54:57 1999 +++ xc/programs/Xserver/hw/xfree86/input/void/Imakefile Wed Mar 8 16:31:43 2000 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/input/void/Imakefile,v 1.1 1999/11/19 13:54:57 hohndel Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/input/void/Imakefile,v 1.2 2000/03/03 01:05:50 dawes Exp $ #define IHaveModules #include <Server.tmpl> @@ -20,6 +20,11 @@ ObjectModuleTarget($(DRIVER),$(OBJS)) InstallObjectModule($(DRIVER),$(MODULEDIR),input) + +#if !defined(XF86DriverSDK) +CppManTarget($(DRIVER),) +InstallModuleManPage($(DRIVER)) +#endif DependTarget() Index: xc/programs/Xserver/hw/xfree86/input/void/void.cpp diff -u /dev/null xc/programs/Xserver/hw/xfree86/input/void/void.cpp:1.1 --- /dev/null Wed Mar 8 16:31:43 2000 +++ xc/programs/Xserver/hw/xfree86/input/void/void.cpp Wed Mar 8 16:31:43 2000 @@ -0,0 +1,29 @@ +.\" $XFree86: xc/programs/Xserver/hw/xfree86/input/void/void.cpp,v 1.1 2000/03/03 01:05:50 dawes Exp $ +.TH VOID __drivermansuffix__ "Version 4.0" "XFree86" +.SH NAME +void \- null input driver +.SH SYNOPSIS +.B "Section ""InputDevice""" +.br +.BI " Identifier """ idevname """" +.br +.B " Driver ""void""" +.br +\ \ ... +.br +.B EndSection +.SH DESCRIPTION +.B void +is an dummy/null XFree86 input driver. It doesn't connect to any +physical device, and it never delivers any events. It functions as +both a pointer and keyboard device, and may be used as X server's core +pointer and/or core keyboard. It's purpose is to allow the X server +to operate without a core pointer and/or core keyboard. +.SH CONFIGURATION DETAILS +Please refer to XF86Config(__filemansuffix__) for general configuration +details and for options that can be used with all input drivers. This +driver doesn't have any configuration options in addition to those. +.SH "SEE ALSO" +XFree86(1), XF86Config(__filemansuffix__), xf86config(1), Xserver(1), X(1). +.SH AUTHORS +Authors include... Index: xc/programs/Xserver/hw/xfree86/input/wacom/Imakefile diff -u xc/programs/Xserver/hw/xfree86/input/wacom/Imakefile:1.5 xc/programs/Xserver/hw/xfree86/input/wacom/Imakefile:1.6 --- xc/programs/Xserver/hw/xfree86/input/wacom/Imakefile:1.5 Sat Aug 14 06:50:04 1999 +++ xc/programs/Xserver/hw/xfree86/input/wacom/Imakefile Wed Mar 8 16:31:43 2000 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/input/wacom/Imakefile,v 1.5 1999/08/14 10:50:04 dawes Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/input/wacom/Imakefile,v 1.6 2000/03/03 01:05:51 dawes Exp $ #define IHaveModules #include <Server.tmpl> @@ -20,6 +20,11 @@ ObjectModuleTarget($(DRIVER),$(OBJS)) InstallObjectModule($(DRIVER),$(MODULEDIR),input) + +#if !defined(XF86DriverSDK) +CppManTarget($(DRIVER),) +InstallModuleManPage($(DRIVER)) +#endif DependTarget() Index: xc/programs/Xserver/hw/xfree86/input/wacom/wacom.cpp diff -u /dev/null xc/programs/Xserver/hw/xfree86/input/wacom/wacom.cpp:1.1 --- /dev/null Wed Mar 8 16:31:44 2000 +++ xc/programs/Xserver/hw/xfree86/input/wacom/wacom.cpp Wed Mar 8 16:31:44 2000 @@ -0,0 +1,37 @@ +.\" $XFree86: xc/programs/Xserver/hw/xfree86/input/wacom/wacom.cpp,v 1.1 2000/03/03 01:05:51 dawes Exp $ +.TH WACOM __drivermansuffix__ "Version 4.0" "XFree86" +.SH NAME +wacom \- Wacom input driver +.SH SYNOPSIS +.B "Section ""InputDevice""" +.br +.BI " Identifier """ idevname """" +.br +.B " Driver ""wacom""" +.br +.BI " Option ""Device"" """ devpath """" +.br +\ \ ... +.br +.B EndSection +.SH DESCRIPTION +.B wacom +is an XFree86 input driver for Wacom devices... +.PP +The +.B wacom +driver functions as a pointer input device, and may be used as the +X server's core pointer. +THIS MAN PAGE NEEDS TO BE FILLED IN. +.SH SUPPORTED HARDWARE +What is supported... +.SH CONFIGURATION DETAILS +Please refer to XF86Config(__filemansuffix__) for general configuration +details and for options that can be used with all input drivers. This +section only covers configuration details specific to this driver. +.PP +Config details... +.SH "SEE ALSO" +XFree86(1), XF86Config(__filemansuffix__), xf86config(1), Xserver(1), X(1). +.SH AUTHORS +Authors include... Index: xc/programs/Xserver/hw/xfree86/input/wacom/xf86Wacom.c diff -u xc/programs/Xserver/hw/xfree86/input/wacom/xf86Wacom.c:1.16 xc/programs/Xserver/hw/xfree86/input/wacom/xf86Wacom.c:1.18 --- xc/programs/Xserver/hw/xfree86/input/wacom/xf86Wacom.c:1.16 Wed Dec 29 22:29:22 1999 +++ xc/programs/Xserver/hw/xfree86/input/wacom/xf86Wacom.c Wed Mar 8 16:31:44 2000 @@ -22,7 +22,7 @@ * */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/input/wacom/xf86Wacom.c,v 1.16 1999/12/30 03:29:22 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/input/wacom/xf86Wacom.c,v 1.18 2000/03/03 20:36:42 dawes Exp $ */ /* * This driver is only able to handle the Wacom IV and Wacom V protocols. @@ -49,7 +49,7 @@ * */ -static const char identification[] = "$Identification: 16 $"; +static const char identification[] = "$Identification: 18 $"; #include <xf86Version.h> @@ -235,6 +235,7 @@ } WacomDeviceState; #define PEN(ds) (((ds->device_id) & 0x07ff) == 0x0022) +#define STROKING_PEN(ds) (((ds->device_id) & 0x07ff) == 0x0032) #define AIRBRUSH(ds) (((ds->device_id) & 0x07ff) == 0x0112) #define MOUSE_4D(ds) (((ds->device_id) & 0x07ff) == 0x0094) #define LENS_CURSOR(ds) (((ds->device_id) & 0x07ff) == 0x0096) @@ -316,6 +317,12 @@ #define SERIAL 14 #define BAUD_RATE 15 #define THRESHOLD 16 +#define MAX_X 17 +#define MAX_Y 18 +#define MAX_Z 19 +#define RESOLUTION_X 20 +#define RESOLUTION_Y 21 +#define RESOLUTION_Z 22 #if !defined(sun) || defined(i386) static SymTabRec WcmTab[] = { @@ -336,6 +343,12 @@ { SERIAL, "serial" }, { BAUD_RATE, "baudrate" }, { THRESHOLD, "threshold" }, + { MAX_X, "maxx" }, + { MAX_Y, "maxy" }, + { MAX_Z, "maxz" }, + { RESOLUTION_X, "resolutionx" }, + { RESOLUTION_Y, "resolutiony" }, + { RESOLUTION_Z, "resolutionz" }, { -1, "" } }; @@ -730,6 +743,54 @@ XCONFIG_GIVEN, common->wcmThreshold); break; + case MAX_X: + if (xf86GetToken(NULL) != NUMBER) + xf86ConfigError("Option number expected"); + common->wcmMaxX = val->num; + if (xf86Verbose) + ErrorF("%s Wacom max x = %d\n", XCONFIG_GIVEN, common->wcmMaxX); + break; + + case MAX_Y: + if (xf86GetToken(NULL) != NUMBER) + xf86ConfigError("Option number expected"); + common->wcmMaxY = val->num; + if (xf86Verbose) + ErrorF("%s Wacom max y = %d\n", XCONFIG_GIVEN, common->wcmMaxY); + break; + + case MAX_Z: + if (xf86GetToken(NULL) != NUMBER) + xf86ConfigError("Option number expected"); + common->wcmMaxZ = val->num; + if (xf86Verbose) + ErrorF("%s Wacom max y = %d\n", XCONFIG_GIVEN, common->wcmMaxZ); + break; + + case RESOLUTION_X: + if (xf86GetToken(NULL) != NUMBER) + xf86ConfigError("Option number expected"); + common->wcmResolX = val->num; + if (xf86Verbose) + ErrorF("%s Wacom resolution x = %d\n", XCONFIG_GIVEN, common->wcmResolX); + break; + + case RESOLUTION_Y: + if (xf86GetToken(NULL) != NUMBER) + xf86ConfigError("Option number expected"); + common->wcmResolY = val->num; + if (xf86Verbose) + ErrorF("%s Wacom resolution y = %d\n", XCONFIG_GIVEN, common->wcmResolY); + break; + + case RESOLUTION_Z: + if (xf86GetToken(NULL) != NUMBER) + xf86ConfigError("Option number expected"); + common->wcmResolZ = val->num; + if (xf86Verbose) + ErrorF("%s Wacom resolution y = %d\n", XCONFIG_GIVEN, common->wcmResolZ); + break; + case EOF: FatalError("Unexpected EOF (missing EndSubSection)"); break; @@ -893,7 +954,6 @@ flush_input_fd(int fd) { int err; - int n_bytes; fd_set readfds; struct timeval timeout; char dummy[1]; @@ -1848,7 +1908,7 @@ if ((ds->device_id & 0xf06) != 0x802) ds->discard_first = 1; - if (PEN(ds) || INKING_PEN(ds) || AIRBRUSH(ds)) + if (PEN(ds) || STROKING_PEN(ds) || INKING_PEN(ds) || AIRBRUSH(ds)) ds->device_type = STYLUS_ID; else if (MOUSE_4D(ds) || LENS_CURSOR(ds)) ds->device_type = CURSOR_ID; @@ -2027,7 +2087,6 @@ xf86WcmOpen(LocalDevicePtr local) { #ifndef XFREE86_V4 - struct termios termios_tty; struct timeval timeout; #endif char buffer[256]; @@ -2185,30 +2244,39 @@ common->wcmResolY = 1000; is_a_penpartner = 1; } - else if (common->wcmProtocolLevel == 4) { + else if (common->wcmProtocolLevel == 4 && !(common->wcmResolX && common->wcmResolY)) { DBG(2, ErrorF("reading config\n")); - if (!send_request(local->fd, WC_CONFIG, buffer)) - return !Success; - DBG(2, ErrorF("%s\n", buffer)); - /* The header string is simply a place to put the unwanted - * config header don't use buffer+xx because the header size - * varies on different tablets - */ - if (sscanf(buffer, "%[^,],%d,%d,%d,%d", &header, &a, &b, &common->wcmResolX, &common->wcmResolY) == 5) { - DBG(6, ErrorF("WC_CONFIG Header = %s\n", header)); + if (send_request(local->fd, WC_CONFIG, buffer)) { + DBG(2, ErrorF("%s\n", buffer)); + /* The header string is simply a place to put the unwanted + * config header don't use buffer+xx because the header size + * varies on different tablets + */ + if (sscanf(buffer, "%[^,],%d,%d,%d,%d", header, &a, &b, &common->wcmResolX, &common->wcmResolY) == 5) { + DBG(6, ErrorF("WC_CONFIG Header = %s\n", header)); + } + else { + ErrorF("WACOM: unable to parse resolution. Using default.\n"); + common->wcmResolX = common->wcmResolY = 1270; + } } else { ErrorF("WACOM: unable to read resolution. Using default.\n"); + common->wcmResolX = common->wcmResolY = 1270; } + } - if (!(common->wcmFlags & GRAPHIRE_FLAG)) { + if (!(common->wcmFlags & GRAPHIRE_FLAG) && !(common->wcmMaxX && common->wcmMaxY)) { DBG(2, ErrorF("reading max coordinates\n")); - if (!send_request(local->fd, WC_COORD, buffer)) + if (!send_request(local->fd, WC_COORD, buffer)) { + ErrorF("WACOM: unable to read max coordinates. Use the MaxX and MaxY options.\n"); return !Success; + } DBG(2, ErrorF("%s\n", buffer)); if (sscanf(buffer+2, "%d,%d", &common->wcmMaxX, &common->wcmMaxY) != 2) { - ErrorF("WACOM: unable to read max coordinates. Using default.\n"); + ErrorF("WACOM: unable to parse max coordinates. Use the MaxX and MaxY options.\n"); + return !Success; } } @@ -2218,31 +2286,36 @@ /* We can't change the resolution on PenPartner and Graphire models */ if (!is_a_penpartner && common->wcmProtocolLevel == 4) { + int resolX = common->wcmResolX, resolY = common->wcmResolY; + /* Force the resolution. */ if (((float)version) >= 1.2) { - common->wcmResolY = common->wcmResolX = 2540; + resolX = resolY = 2540; } - sprintf(buffer, "%s%d\r", WC_NEW_RESOLUTION, common->wcmResolX); + sprintf(buffer, "%s%d\r", WC_NEW_RESOLUTION, resolX); SYSCALL(err = write(local->fd, buffer, strlen(buffer))); /* Verify the resolution change. */ DBG(2, ErrorF("rereading config\n")); - if (!send_request(local->fd, WC_CONFIG, buffer)) - return !Success; - DBG(2, ErrorF("%s\n", buffer)); - /* The header string is simply a place to put the unwanted - * config header don't use buffer+xx because the header size - * varies on different tablets - */ - if (sscanf(buffer, "%[^,],%d,%d,%d,%d", &header, &a, &b, &common->wcmResolX, &common->wcmResolY) == 5) { - DBG(6, ErrorF("WC_CONFIG Header = %s\n", header)); + if (send_request(local->fd, WC_CONFIG, buffer)) { + DBG(2, ErrorF("%s\n", buffer)); + /* The header string is simply a place to put the unwanted + * config header don't use buffer+xx because the header size + * varies on different tablets + */ + if (sscanf(buffer, "%[^,],%d,%d,%d,%d", header, &a, &b, &common->wcmResolX, &common->wcmResolY) == 5) { + DBG(6, ErrorF("WC_CONFIG Header = %s\n", header)); + } + else { + ErrorF("WACOM: unable to reparse resolution. Using previous values.\n"); + } } else { - ErrorF("WACOM: unable to reread resolution. Using default.\n"); + ErrorF("WACOM: unable to reread resolution. Using previous values.\n"); } - + /* The following couple of lines convert the MaxX and MaxY returned by * the Wacom from 1270lpi to the Wacom's active resolution. */ @@ -2852,11 +2925,11 @@ common->wcmNumDevices = 1; /* number of devices */ common->wcmIndex = 0; /* number of bytes read */ common->wcmPktLength = 7; /* length of a packet */ - common->wcmMaxX = 22860; /* max X value */ - common->wcmMaxY = 15240; /* max Y value */ + common->wcmMaxX = 0; /* max X value */ + common->wcmMaxY = 0; /* max Y value */ common->wcmMaxZ = 240; /* max Z value */ - common->wcmResolX = 1270; /* X resolution in points/inch */ - common->wcmResolY = 1270; /* Y resolution in points/inch */ + common->wcmResolX = 0; /* X resolution in points/inch */ + common->wcmResolY = 0; /* Y resolution in points/inch */ common->wcmResolZ = 1270; /* Z resolution in points/inch */ common->wcmHasEraser = (flag & ERASER_ID) ? TRUE : FALSE; /* True if an eraser has been configured */ common->wcmStylusSide = TRUE; /* eraser or stylus ? */ @@ -3169,6 +3242,36 @@ if (common->wcmThreshold != INVALID_THRESHOLD) { xf86Msg(X_CONFIG, "%s: threshold = %d\n", dev->identifier, common->wcmThreshold); + } + common->wcmMaxX = xf86SetIntOption(local->options, "MaxX", 0); + if (common->wcmMaxX != 0) { + xf86Msg(X_CONFIG, "%s: max x = %d\n", dev->identifier, + common->wcmMaxX); + } + common->wcmMaxY = xf86SetIntOption(local->options, "MaxY", 0); + if (common->wcmMaxY != 0) { + xf86Msg(X_CONFIG, "%s: max x = %d\n", dev->identifier, + common->wcmMaxY); + } + common->wcmMaxZ = xf86SetIntOption(local->options, "MaxZ", 0); + if (common->wcmMaxZ != 0) { + xf86Msg(X_CONFIG, "%s: max x = %d\n", dev->identifier, + common->wcmMaxZ); + } + common->wcmResolX = xf86SetIntOption(local->options, "ResolutionX", 0); + if (common->wcmResolX != 0) { + xf86Msg(X_CONFIG, "%s: resol x = %d\n", dev->identifier, + common->wcmResolX); + } + common->wcmResolY = xf86SetIntOption(local->options, "ResolutionY", 0); + if (common->wcmResolY != 0) { + xf86Msg(X_CONFIG, "%s: resol x = %d\n", dev->identifier, + common->wcmResolY); + } + common->wcmResolZ = xf86SetIntOption(local->options, "ResolutionZ", 0); + if (common->wcmResolZ != 0) { + xf86Msg(X_CONFIG, "%s: resol x = %d\n", dev->identifier, + common->wcmResolZ); } { Index: xc/programs/Xserver/hw/xfree86/int10/Imakefile diff -u xc/programs/Xserver/hw/xfree86/int10/Imakefile:1.5 xc/programs/Xserver/hw/xfree86/int10/Imakefile:1.6 --- xc/programs/Xserver/hw/xfree86/int10/Imakefile:1.5 Wed Mar 8 16:31:44 2000 +++ xc/programs/Xserver/hw/xfree86/int10/Imakefile Wed Mar 8 16:31:44 2000 @@ -1,11 +1,11 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/int10/Imakefile,v 1.5 2000/02/17 14:00:32 dawes Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/int10/Imakefile,v 1.6 2000/02/29 03:09:24 dawes Exp $ /* An OS-independent INT10 module/library */ #define IHaveModules #include <Server.tmpl> -#if !UseX86Emu +#if !UseX86Emu || (XF86INT10_BUILD == X86INT10_STUB) SRCS = xf86int10module.c stub.c OBJS = xf86int10module.c stub.o Index: xc/programs/Xserver/hw/xfree86/loader/Imakefile diff -u xc/programs/Xserver/hw/xfree86/loader/Imakefile:1.21 xc/programs/Xserver/hw/xfree86/loader/Imakefile:1.22 --- xc/programs/Xserver/hw/xfree86/loader/Imakefile:1.21 Wed Mar 8 16:31:44 2000 +++ xc/programs/Xserver/hw/xfree86/loader/Imakefile Wed Mar 8 16:31:44 2000 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/loader/Imakefile,v 1.21 2000/02/13 06:15:40 dawes Exp $ */ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/loader/Imakefile,v 1.22 2000/02/23 19:21:16 alanh Exp $ */ @@ -30,11 +30,12 @@ MODULEDEFINES = -DDEFAULT_MODULE_PATH=\"$(MODULEDIR)\" - INCLUDES = -I. -I.. -I$(XF86COMSRC) -I$(XF86OSSRC) \ - -I$(SERVERSRC)/dbe -I$(SERVERSRC)/Xext \ + INCLUDES = -I. -I.. -I$(XF86COMSRC) -I$(XF86OSSRC) -I$(XF86OSSRC)/vbe \ + -I$(SERVERSRC)/dbe -I$(SERVERSRC)/Xext -I$(XF86SRC)/int10 \ -I$(SERVERSRC)/mfb -I$(SERVERSRC)/mi -I$(SERVERSRC)/include \ -I$(SERVERSRC)/os -I$(XINCLUDESRC) -I$(FONTINCSRC) \ - -I$(FONTLIBSRC)/include -I$(FONTLIBSRC)/fontcache -I$(EXTINCSRC) + -I$(FONTLIBSRC)/include -I$(FONTLIBSRC)/fontcache \ + -I$(EXTINCSRC) -I$(XF86SRC)/ddc -I$(XF86SRC)/i2c #ifdef OS2Architecture SRCS1 = os2funcs.c Index: xc/programs/Xserver/hw/xfree86/loader/dixsym.c diff -u xc/programs/Xserver/hw/xfree86/loader/dixsym.c:1.29 xc/programs/Xserver/hw/xfree86/loader/dixsym.c:1.30 --- xc/programs/Xserver/hw/xfree86/loader/dixsym.c:1.29 Wed Mar 8 16:31:44 2000 +++ xc/programs/Xserver/hw/xfree86/loader/dixsym.c Wed Mar 8 16:31:44 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/dixsym.c,v 1.29 2000/02/02 21:24:22 alanh Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/dixsym.c,v 1.30 2000/03/05 23:47:52 dawes Exp $ */ /* @@ -248,6 +248,7 @@ SYMFUNC(LocalClient) /* util.c */ SYMFUNC(Error) + SYMFUNC(VErrorF) SYMFUNC(ErrorF) SYMFUNC(FatalError) SYMFUNC(Xstrdup) Index: xc/programs/Xserver/hw/xfree86/loader/xf86sym.c diff -u xc/programs/Xserver/hw/xfree86/loader/xf86sym.c:1.131 xc/programs/Xserver/hw/xfree86/loader/xf86sym.c:1.134 --- xc/programs/Xserver/hw/xfree86/loader/xf86sym.c:1.131 Wed Mar 8 16:31:45 2000 +++ xc/programs/Xserver/hw/xfree86/loader/xf86sym.c Wed Mar 8 16:31:45 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/xf86sym.c,v 1.131 2000/02/21 19:23:14 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/xf86sym.c,v 1.134 2000/03/01 16:01:30 tsi Exp $ */ /* * @@ -52,6 +52,9 @@ #include "xf86_ansic.h" #include "xisb.h" #include "xf86Priv.h" +#include "vbe.h" + +extern xf86MonPtr ConfiguredMonitor; /* XXX Should get all of these from elsewhere */ #if defined (PowerMAX_OS) @@ -284,6 +287,9 @@ #ifdef async SYMFUNC(xf86QueueAsyncEvent) #endif + + /* xf86Configure.c */ + SYMFUNC(xf86AddDeviceToConfigure) /* xf86Cursor.c XXX not all of these should be exported */ SYMFUNC(xf86LockZoom) @@ -472,8 +478,9 @@ /* xf86xv.c */ SYMFUNC(xf86XVScreenInit) - SYMFUNC(xf86XVRegisterGenericAdaptor) + SYMFUNC(xf86XVRegisterGenericAdaptorDriver) SYMFUNC(xf86XVListGenericAdaptors) + SYMFUNC(xf86XVRegisterOffscreenImages) /* xf86VidMode.c */ SYMFUNC(VidModeExtensionInit) @@ -930,6 +937,9 @@ /* Globals from xf86Globals.c and xf86Priv.h */ SYMVAR(xf86ConfigDRI) + + /* Globals from xf86Configure.c */ + SYMVAR(ConfiguredMonitor) /* Pci.c */ SYMVAR(pciNumBuses) Index: xc/programs/Xserver/hw/xfree86/os-support/Imakefile diff -u xc/programs/Xserver/hw/xfree86/os-support/Imakefile:3.36 xc/programs/Xserver/hw/xfree86/os-support/Imakefile:3.37 --- xc/programs/Xserver/hw/xfree86/os-support/Imakefile:3.36 Wed Mar 8 16:31:48 2000 +++ xc/programs/Xserver/hw/xfree86/os-support/Imakefile Wed Mar 8 16:31:48 2000 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/Imakefile,v 3.36 2000/02/12 20:45:40 dawes Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/Imakefile,v 3.37 2000/02/22 01:02:34 mvojkovi Exp $ @@ -10,7 +10,7 @@ #define IHaveSubdirs -#if defined(i386Architecture) || \ +#if defined(i386Architecture) || defined(ia64Architecture) || \ (defined(LinuxArchitecture) && defined(AlphaArchitecture)) || \ (defined(FreeBSDArchitecture) && defined(AlphaArchitecture)) || \ defined(PpcArchitecture) || defined(SparcArchitecture) Index: xc/programs/Xserver/hw/xfree86/os-support/xf86drm.h diff -u xc/programs/Xserver/hw/xfree86/os-support/xf86drm.h:1.6 xc/programs/Xserver/hw/xfree86/os-support/xf86drm.h:1.7 --- xc/programs/Xserver/hw/xfree86/os-support/xf86drm.h:1.6 Wed Mar 8 16:31:48 2000 +++ xc/programs/Xserver/hw/xfree86/os-support/xf86drm.h Wed Mar 8 16:31:48 2000 @@ -24,8 +24,7 @@ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * - * $PI: xc/programs/Xserver/hw/xfree86/os-support/xf86drm.h,v 1.44 1999/08/04 18:14:42 faith Exp $ - * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/xf86drm.h,v 1.6 2000/02/14 06:27:24 martin Exp $ + * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/xf86drm.h,v 1.7 2000/02/23 04:47:21 martin Exp $ * */ Index: xc/programs/Xserver/hw/xfree86/os-support/bsd/Imakefile diff -u xc/programs/Xserver/hw/xfree86/os-support/bsd/Imakefile:3.39 xc/programs/Xserver/hw/xfree86/os-support/bsd/Imakefile:3.41 --- xc/programs/Xserver/hw/xfree86/os-support/bsd/Imakefile:3.39 Wed Mar 8 16:31:48 2000 +++ xc/programs/Xserver/hw/xfree86/os-support/bsd/Imakefile Wed Mar 8 16:31:48 2000 @@ -4,7 +4,7 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bsd/Imakefile,v 3.39 2000/02/13 03:36:06 dawes Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bsd/Imakefile,v 3.41 2000/03/05 16:59:16 dawes Exp $ #include <Server.tmpl> @@ -60,13 +60,36 @@ #endif +#if defined(NetBSDArchitecture) || defined(OpenBSDArchitecture) +APMSRC = bsd_apm.c +APMOBJ = bsd_apm.o +#else +APMSRC = pm_noop.c +APMOBJ = pm_noop.o +#endif + +#if defined(i386Architecture) || defined(ia64Architecture) +RES_SRC=stdResource.c +RES_OBJ=stdResource.o +#else +RES_SRC=bsdResource.c +RES_OBJ=bsdResource.o +#endif + +#if defined(AlphaArchitecture) +AXP_SRC=bsd_ev56.c +AXP_OBJ=bsd_ev56.o +#endif + SRCS = bsd_init.c bsd_video.c bsd_io.c bsd_VTsw.c \ libc_wrapper.c $(IOPERM_SRC) std_kbdEv.c posix_tty.c $(MOUSESRC) \ - stdResource.c stdPci.c vidmem.c $(JOYSTICK_SRC) sigio.c pm_noop.c + $(RES_SRC) stdPci.c vidmem.c $(JOYSTICK_SRC) sigio.c $(APMSRC) \ + $(AXP_SRC) OBJS = bsd_init.o bsd_video.o bsd_io.o bsd_VTsw.o \ libc_wrapper.o $(IOPERM_OBJ) std_kbdEv.o posix_tty.o $(MOUSEOBJ) \ - stdResource.o stdPci.o vidmem.o $(JOYSTICK_OBJ) sigio.o pm_noop.o + $(RES_OBJ) stdPci.o vidmem.o $(JOYSTICK_OBJ) sigio.o $(APMOBJ) \ + $(AXP_OBJ) INCLUDES = -I$(XF86COMSRC) -I$(XF86OSSRC) -I. -I$(SERVERSRC)/include \ -I$(XINCLUDESRC) -I$(EXTINCSRC) -I$(SERVERSRC)/mi -I$(APINCLUDES) \ @@ -84,6 +107,10 @@ DEFINES = $(CONSDEFINES) $(APDEFINES) $(IOPERMDEFINES) $(RESDEFINES) \ $(MTRRDEFINES) $(USBMOUSEDEFINES) +#if defined(AlphaArchitecture) +SpecialObjectRule(bsd_ev56.o, bsd_ev56.c, -mcpu=ev56) +#endif + SubdirLibraryRule($(OBJS)) NormalLibraryObjectRule() @@ -98,6 +125,9 @@ # endif #endif +#if !defined(NetBSDArchitecture) && !defined(OpenBSDArchitecture) +LinkSourceFile(pm_noop.c,../shared) +#endif LinkSourceFile(ioperm_noop.c,../shared) LinkSourceFile(std_kbdEv.c,../shared) LinkSourceFile(posix_tty.c,../shared) @@ -106,7 +136,6 @@ LinkSourceFile(stdPci.c,../shared) LinkSourceFile(vidmem.c,../shared) LinkSourceFile(sigio.c,../shared) -LinkSourceFile(pm_noop.c,../shared) DependTarget() Index: xc/programs/Xserver/hw/xfree86/os-support/bsd/bsdResource.c diff -u /dev/null xc/programs/Xserver/hw/xfree86/os-support/bsd/bsdResource.c:1.1 --- /dev/null Wed Mar 8 16:31:48 2000 +++ xc/programs/Xserver/hw/xfree86/os-support/bsd/bsdResource.c Wed Mar 8 16:31:48 2000 @@ -0,0 +1,96 @@ +/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bsd/bsdResource.c,v 1.1 2000/03/05 16:59:17 dawes Exp $ */ + +/* Resource information code */ + +#include "X.h" +#include "xf86.h" +#include "xf86Priv.h" +#include "xf86Privstr.h" +#include "xf86Pci.h" +#include "xf86Resources.h" +#define NEED_OS_RAC_PROTOS +#include "xf86_OSlib.h" + +#ifdef __alpha__ + +#include <sys/sysctl.h> + +resRange PciAvoid[] = {_PCI_AVOID_PC_STYLE, _END}; + +resPtr +xf86BusAccWindowsFromOS(void) +{ + resPtr ret = NULL; + resRange range; + + RANGE(range,0,0xffffffff,ResExcMemBlock); + ret = xf86AddResToList(ret, &range, -1); + + RANGE(range,0,0xffffffff,ResExcIoBlock); + ret = xf86AddResToList(ret, &range, -1); + return ret; +} + +resPtr +xf86PciBusAccWindowsFromOS(void) +{ + resPtr ret = NULL; + resRange range; + + /* + * Only allow the upper half of the pci memory range to be used + * for allocation. The lower half includes magic regions for DMA. + * XXX this is not right for XP1000's and similar where we use the + * region 0x40000000-0xbfffffff for DMA but this only matters if + * the bios screws up the pci region mappings. + */ + RANGE(range,0x80000000,0xffffffff,ResExcMemBlock); + ret = xf86AddResToList(ret, &range, -1); + + RANGE(range,0,0xffffffff,ResExcIoBlock); + ret = xf86AddResToList(ret, &range, -1); + return ret; +} + +resPtr +xf86IsaBusAccWindowsFromOS(void) +{ + resPtr ret = NULL; + resRange range; + + RANGE(range,0,0xffffffff,ResExcMemBlock); + ret = xf86AddResToList(ret, &range, -1); + + RANGE(range,0,0xffffffff,ResExcIoBlock); + ret = xf86AddResToList(ret, &range, -1); + return ret; +} + +resPtr +xf86AccResFromOS(resPtr ret) +{ + resRange range; + + /* + * Fallback is to claim the following areas: + * + * 0x000C0000 - 0x000EFFFF location of VGA and other extensions ROMS + */ + + RANGE(range,0xc0000,0xeffff,ResExcMemBlock); + ret = xf86AddResToList(ret, &range, -1); + + /* Fallback is to claim well known ports in the 0x0 - 0x3ff range */ + /* Possibly should claim some of them as sparse ranges */ + + RANGE(range,0,0x1ff,ResExcIoBlock | ResEstimated); + ret = xf86AddResToList(ret, &range, -1); + /* XXX add others */ + return ret; +} + +#else + +#error : Put your platform dependent code here!! + +#endif Index: xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_apm.c diff -u /dev/null xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_apm.c:1.1 --- /dev/null Wed Mar 8 16:31:48 2000 +++ xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_apm.c Wed Mar 8 16:31:48 2000 @@ -0,0 +1,137 @@ +/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_apm.c,v 1.1 2000/02/29 03:09:25 dawes Exp $ */ + +#include "X.h" +#include "os.h" +#include "xf86.h" +#include "xf86Priv.h" +#define XF86_OS_PRIVS +#include "xf86_OSproc.h" +#include "xf86_OSlib.h" + +#include <machine/apmvar.h> + +#define APM_DEVICE "/dev/apm" + +static pointer APMihPtr = NULL; +static void bsdCloseAPM(void); + +static struct { + u_int apmBsd; + pmEvent xf86; +} bsdToXF86Array [] = { + { APM_STANDBY_REQ, XF86_APM_SYS_STANDBY }, + { APM_SUSPEND_REQ, XF86_APM_SYS_SUSPEND }, + { APM_NORMAL_RESUME, XF86_APM_NORMAL_RESUME }, + { APM_CRIT_RESUME, XF86_APM_CRITICAL_RESUME }, + { APM_BATTERY_LOW, XF86_APM_LOW_BATTERY }, + { APM_POWER_CHANGE, XF86_APM_POWER_STATUS_CHANGE }, + { APM_UPDATE_TIME, XF86_APM_UPDATE_TIME }, + { APM_CRIT_SUSPEND_REQ, XF86_APM_CRITICAL_SUSPEND }, + { APM_USER_STANDBY_REQ, XF86_APM_USER_STANDBY }, + { APM_USER_SUSPEND_REQ, XF86_APM_USER_SUSPEND }, + { APM_SYS_STANDBY_RESUME, XF86_APM_STANDBY_RESUME }, +#ifdef APM_CAPABILITY_CHANGE + { APM_CAPABILITY_CHANGE, XF86_APM_CAPABILITY_CHANGED }, +#endif +}; + +#define numApmEvents (sizeof(bsdToXF86Array) / sizeof(bsdToXF86Array[0])) + +static pmEvent +bsdToXF86(int type) +{ + int i; + + for (i = 0; i < numApmEvents; i++) { + if (type == bsdToXF86Array[i].apmBsd) { + return bsdToXF86Array[i].xf86; + } + } + return XF86_APM_UNKNOWN; +} + +/* + * APM events can be requested direclty from /dev/apm + */ +static int +bsdPMGetEventFromOS(int fd, pmEvent *events, int num) +{ + struct apm_event_info bsdEvent; + int i; + + for (i = 0; i < num; i++) { + + if (ioctl(fd, APM_IOC_NEXTEVENT, &bsdEvent) < 0) { + if (errno != EAGAIN) { + xf86Msg(X_WARNING, "bsdPMGetEventFromOS: APM_IOC_NEXTEVENT" + " errno = %d\n", errno); + } + break; + } + events[i] = bsdToXF86(bsdEvent.type); + } + return i; +} + +/* + * XXX This won't work on /dev/apm ! + * We should either use /dev/apm_ctl (and kill apmd(8)) + * or talk to apmd (but its protocol is not publically available)... + */ +static pmWait +bsdPMConfirmEventToOs(int fd, pmEvent event) +{ + switch (event) { + case XF86_APM_SYS_STANDBY: + case XF86_APM_USER_STANDBY: + if (ioctl( fd, APM_IOC_STANDBY, NULL ) == 0) + return PM_WAIT; /* should we stop the Xserver in standby, too? */ + else + return PM_NONE; + case XF86_APM_SYS_SUSPEND: + case XF86_APM_CRITICAL_SUSPEND: + case XF86_APM_USER_SUSPEND: + if (ioctl( fd, APM_IOC_SUSPEND, NULL ) == 0) + return PM_WAIT; + else + return PM_NONE; + case XF86_APM_STANDBY_RESUME: + case XF86_APM_NORMAL_RESUME: + case XF86_APM_CRITICAL_RESUME: + case XF86_APM_STANDBY_FAILED: + case XF86_APM_SUSPEND_FAILED: + return PM_CONTINUE; + default: + return PM_NONE; + } +} + +PMClose +xf86OSPMOpen(void) +{ + int fd; + + if (APMihPtr || !xf86Info.pmFlag) { + return NULL; + } + + if ((fd = open(APM_DEVICE, O_RDWR)) == -1) { + return NULL; + } + xf86PMGetEventFromOs = bsdPMGetEventFromOS; + xf86PMConfirmEventToOs = bsdPMConfirmEventToOs; + APMihPtr = xf86AddInputHandler(fd, xf86HandlePMEvents, NULL); + return bsdCloseAPM; +} + +static void +bsdCloseAPM(void) +{ + int fd; + + if (APMihPtr) { + fd = xf86RemoveInputHandler(APMihPtr); + close(fd); + APMihPtr = NULL; + } +} Index: xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_ev56.c diff -u /dev/null xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_ev56.c:1.1 --- /dev/null Wed Mar 8 16:31:48 2000 +++ xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_ev56.c Wed Mar 8 16:31:48 2000 @@ -0,0 +1,84 @@ +/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_ev56.c,v 1.1 2000/03/05 16:59:17 dawes Exp $ */ + +#include "X.h" +#include "input.h" +#include "scrnintstr.h" +#include "compiler.h" + +#include "xf86.h" +#include "xf86Priv.h" +#include "xf86_OSlib.h" +#include "xf86OSpriv.h" + +int readDense8(pointer Base, register unsigned long Offset); +int readDense16(pointer Base, register unsigned long Offset); +int readDense32(pointer Base, register unsigned long Offset); +void +writeDenseNB8(int Value, pointer Base, register unsigned long Offset); +void +writeDenseNB16(int Value, pointer Base, register unsigned long Offset); +void +writeDenseNB32(int Value, pointer Base, register unsigned long Offset); +void +writeDense8(int Value, pointer Base, register unsigned long Offset); +void +writeDense16(int Value, pointer Base, register unsigned long Offset); +void +writeDense32(int Value, pointer Base, register unsigned long Offset); + +int +readDense8(pointer Base, register unsigned long Offset) +{ + return *(volatile CARD8*) ((unsigned long)Base+(Offset)); +} + +int +readDense16(pointer Base, register unsigned long Offset) +{ + return *(volatile CARD16*) ((unsigned long)Base+(Offset)); +} + +int +readDense32(pointer Base, register unsigned long Offset) +{ + return *(volatile CARD32*)((unsigned long)Base+(Offset)); +} + +void +writeDenseNB8(int Value, pointer Base, register unsigned long Offset) +{ + *(volatile CARD8*)((unsigned long)Base+(Offset)) = Value; +} + +void +writeDenseNB16(int Value, pointer Base, register unsigned long Offset) +{ + *(volatile CARD16*)((unsigned long)Base + (Offset)) = Value; +} + +void +writeDenseNB32(int Value, pointer Base, register unsigned long Offset) +{ + *(volatile CARD32*)((unsigned long)Base+(Offset)) = Value; +} + +void +writeDense8(int Value, pointer Base, register unsigned long Offset) +{ + *(volatile CARD8 *)((unsigned long)Base+(Offset)) = Value; + mem_barrier(); +} + +void +writeDense16(int Value, pointer Base, register unsigned long Offset) +{ + *(volatile CARD16 *)((unsigned long)Base+(Offset)) = Value; + mem_barrier(); +} + +void +writeDense32(int Value, pointer Base, register unsigned long Offset) +{ + *(volatile CARD32 *)((unsigned long)Base+(Offset)) = Value; + mem_barrier(); +} Index: xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_video.c diff -u xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_video.c:3.33 xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_video.c:3.34 --- xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_video.c:3.33 Wed Mar 8 16:31:49 2000 +++ xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_video.c Wed Mar 8 16:31:49 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_video.c,v 3.33 2000/02/12 20:45:41 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_video.c,v 3.34 2000/03/05 16:59:17 dawes Exp $ */ /* * Copyright 1992 by Rich Murphey <Rich@Rice.edu> * Copyright 1993 by David Wexelblat <dwex@goblin.org> @@ -74,6 +74,10 @@ #define X_MTRR_ID "XFree86" #endif +#ifdef __alpha__ +#include <sys/sysctl.h> +#endif + #ifdef __arm32__ #include "machine/devmap.h" struct memAccess @@ -110,10 +114,45 @@ #endif #ifdef __alpha__ -extern u_int64_t dense_base(void); + +extern unsigned long dense_base(void); + +static unsigned long +memory_base(void) +{ + static unsigned long base = 0; + + if (base == 0) { + size_t len = sizeof(base); + int error; + if ((error = sysctlbyname("hw.chipset.memory", &base, &len, + 0, 0)) < 0) + FatalError("xf86MapVidMem: can't find memory\n"); + } + + return base; +} + +static int +has_bwx(void) +{ + static int bwx = 0; + size_t len = sizeof(bwx); + int error; + if ((error = sysctlbyname("hw.chipset.bwx", &bwx, &len, 0, 0)) < 0) + return FALSE; + else + return bwx; +} + #define BUS_BASE dense_base() +#define BUS_BASE_BWX memory_base() + #else + #define BUS_BASE 0L +#define BUS_BASE_BWX 0L + #endif /***************************************************************************/ @@ -229,23 +268,29 @@ #endif } - void xf86OSInitVidMem(VidMemInfoPtr pVidMem) { checkDevMem(TRUE); pVidMem->linearSupported = useDevMem; -#ifndef __arm32__ - pVidMem->mapMem = mapVidMem; - pVidMem->unmapMem = unmapVidMem; -#else +#if defined(__alpha__) + if (has_bwx()) { + xf86Msg(X_INFO,"Machine type has 8/16 bit access\n"); + pVidMem->mapMem = mapVidMem; + pVidMem->unmapMem = unmapVidMem; + } else { + xf86Msg(X_INFO,"Machine needs sparse mapping\n"); + pVidMem->mapMem = mapVidMemSparse; + pVidMem->unmapMem = unmapVidMemSparse; + } +#elif defined(__arm32__) pVidMem->mapMem = armMapVidMem; pVidMem->unmapVidMem = armUnmapVidMem; +#else + pVidMem->mapMem = mapVidMem; + pVidMem->unmapMem = unmapVidMem; #endif -#ifdef __alpha__ - pVidMem->mapMemSparse = mapVidMemSparse; - pVidMem->unmapMemSparse = unmapVidMemSparse; -#endif + #ifdef HAS_MTRR_SUPPORT if (useDevMem) { if (cleanMTRR()) { @@ -276,7 +321,7 @@ DEV_MEM, strerror(errno)); } base = mmap((caddr_t)0, Size, PROT_READ|PROT_WRITE, - MAP_FLAGS, devMemFd, (off_t)Base + BUS_BASE); + MAP_FLAGS, devMemFd, (off_t)Base + BUS_BASE_BWX); if (base == MAP_FAILED) { FatalError("%s: could not mmap %s [s=%x,a=%x] (%s)\n", @@ -1249,101 +1294,260 @@ #if defined(__FreeBSD__) && defined(__alpha__) -extern void *map_memory(u_int32_t address, u_int32_t size); -extern void unmap_memory(void *handle, u_int32_t size); -extern u_int8_t readb(void *handle, u_int32_t offset); -extern u_int16_t readw(void *handle, u_int32_t offset); -extern u_int32_t readl(void *handle, u_int32_t offset); -extern void writeb(void *handle, u_int32_t offset, u_int8_t val); -extern void writew(void *handle, u_int32_t offset, u_int16_t val); -extern void writel(void *handle, u_int32_t offset, u_int32_t val); -extern void writeb_nb(void *handle, u_int32_t offset, u_int8_t val); -extern void writew_nb(void *handle, u_int32_t offset, u_int16_t val); -extern void writel_nb(void *handle, u_int32_t offset, u_int32_t val); +#define vuip volatile unsigned int * + +static unsigned long msb_set = 0; +static pointer memSBase = 0; +static pointer memBase = 0; + +extern int readDense8(pointer Base, register unsigned long Offset); +extern int readDense16(pointer Base, register unsigned long Offset); +extern int readDense32(pointer Base, register unsigned long Offset); +extern void +writeDenseNB8(int Value, pointer Base, register unsigned long Offset); +extern void +writeDenseNB16(int Value, pointer Base, register unsigned long Offset); +extern void +writeDenseNB32(int Value, pointer Base, register unsigned long Offset); +extern void +writeDense8(int Value, pointer Base, register unsigned long Offset); +extern void +writeDense16(int Value, pointer Base, register unsigned long Offset); +extern void +writeDense32(int Value, pointer Base, register unsigned long Offset); + +static int readSparse8(pointer Base, register unsigned long Offset); +static int readSparse16(pointer Base, register unsigned long Offset); +static int readSparse32(pointer Base, register unsigned long Offset); +static void +writeSparseNB8(int Value, pointer Base, register unsigned long Offset); +static void +writeSparseNB16(int Value, pointer Base, register unsigned long Offset); +static void +writeSparseNB32(int Value, pointer Base, register unsigned long Offset); +static void +writeSparse8(int Value, pointer Base, register unsigned long Offset); +static void +writeSparse16(int Value, pointer Base, register unsigned long Offset); +static void +writeSparse32(int Value, pointer Base, register unsigned long Offset); + +#include <machine/sysarch.h> + +extern int sysarch(int, char *); + +struct parms { + u_int64_t hae; +}; + +static int +sethae(u_int64_t hae) +{ + struct parms p; + p.hae = hae; + return (sysarch(ALPHA_SETHAE, (char *)&p)); +} static pointer mapVidMemSparse(int ScreenNum, unsigned long Base, unsigned long Size) { - return (pointer) map_memory((u_int32_t) (u_int64_t) Base, Size); + static Bool was_here = FALSE; + + if (!was_here) { + was_here = TRUE; + + checkDevMem(FALSE); + + xf86WriteMmio8 = writeSparse8; + xf86WriteMmio16 = writeSparse16; + xf86WriteMmio32 = writeSparse32; + xf86WriteMmioNB8 = writeSparseNB8; + xf86WriteMmioNB16 = writeSparseNB16; + xf86WriteMmioNB32 = writeSparseNB32; + xf86ReadMmio8 = readSparse8; + xf86ReadMmio16 = readSparse16; + xf86ReadMmio32 = readSparse32; + + memBase = mmap((caddr_t)0, 0x100000000, + PROT_READ | PROT_WRITE, + MAP_SHARED, devMemFd, + (off_t) dense_base()); + memSBase = mmap((caddr_t)0, 0x100000000, + PROT_READ | PROT_WRITE, + MAP_SHARED, devMemFd, + (off_t) memory_base()); + + if (memSBase == MAP_FAILED || memBase == MAP_FAILED) { + FatalError("xf86MapVidMem: Could not mmap framebuffer (%s)\n", + strerror(errno)); + } + } + return (pointer)((unsigned long)memBase + Base); } static void unmapVidMemSparse(int ScreenNum, pointer Base, unsigned long Size) { - unmap_memory(Base, Size); } static int -readMmio8(pointer Base, unsigned long Offset) +readSparse8(pointer Base, register unsigned long Offset) { - return readb(Base, Offset); + register unsigned long result, shift; + register unsigned long msb; + + Offset += (unsigned long)Base - (unsigned long)memBase; + shift = (Offset & 0x3) << 3; + if (Offset >= (1UL << 24)) { + msb = Offset & 0xf8000000UL; + Offset -= msb; + if (msb_set != msb) { + sethae(msb); + msb_set = msb; + } + } + + result = *(vuip) ((unsigned long)memSBase + (Offset << 5)); + result >>= shift; + return 0xffUL & result; } static int -readMmio16(pointer Base, unsigned long Offset) +readSparse16(pointer Base, register unsigned long Offset) { - return readw(Base, Offset); + register unsigned long result, shift; + register unsigned long msb; + + Offset += (unsigned long)Base - (unsigned long)memBase; + shift = (Offset & 0x2) << 3; + if (Offset >= (1UL << 24)) { + msb = Offset & 0xf8000000UL; + Offset -= msb; + if (msb_set != msb) { + sethae(msb); + msb_set = msb; + } + } + result = *(vuip)((unsigned long)memSBase+(Offset<<5)+(1<<(5-2))); + result >>= shift; + return 0xffffUL & result; } static int -readMmio32(pointer Base, unsigned long Offset) +readSparse32(pointer Base, register unsigned long Offset) { - return readl(Base, Offset); + return *(vuip)((unsigned long)Base+(Offset)); } static void -writeMmio8(int Value, pointer Base, unsigned long Offset) +writeSparse8(int Value, pointer Base, register unsigned long Offset) { - writeb(Base, Offset, Value); + register unsigned long msb; + register unsigned int b = Value & 0xffU; + + Offset += (unsigned long)Base - (unsigned long)memBase; + if (Offset >= (1UL << 24)) { + msb = Offset & 0xf8000000; + Offset -= msb; + if (msb_set != msb) { + sethae(msb); + msb_set = msb; + } + } + *(vuip) ((unsigned long)memSBase + (Offset << 5)) = b * 0x01010101; + mem_barrier(); } static void -writeMmio16(int Value, pointer Base, unsigned long Offset) +writeSparse16(int Value, pointer Base, register unsigned long Offset) { - writew(Base, Offset, Value); + register unsigned long msb; + register unsigned int w = Value & 0xffffU; + + Offset += (unsigned long)Base - (unsigned long)memBase; + if (Offset >= (1UL << 24)) { + msb = Offset & 0xf8000000; + Offset -= msb; + if (msb_set != msb) { + sethae(msb); + msb_set = msb; + } + } + *(vuip)((unsigned long)memSBase+(Offset<<5)+(1<<(5-2))) = + w * 0x00010001; + mem_barrier(); + } static void -writeMmio32(int Value, pointer Base, unsigned long Offset) +writeSparse32(int Value, pointer Base, register unsigned long Offset) { - writel(Base, Offset, Value); + *(vuip)((unsigned long)Base + (Offset)) = Value; + mem_barrier(); + return; } static void -writeMmioNB8(int Value, pointer Base, unsigned long Offset) +writeSparseNB8(int Value, pointer Base, register unsigned long Offset) { - writeb_nb(Base, Offset, Value); + register unsigned long msb; + register unsigned int b = Value & 0xffU; + + Offset += (unsigned long)Base - (unsigned long)memBase; + if (Offset >= (1UL << 24)) { + msb = Offset & 0xf8000000; + Offset -= msb; + if (msb_set != msb) { + sethae(msb); + msb_set = msb; + } + } + *(vuip) ((unsigned long)memSBase + (Offset << 5)) = b * 0x01010101; } static void -writeMmioNB16(int Value, pointer Base, unsigned long Offset) +writeSparseNB16(int Value, pointer Base, register unsigned long Offset) { - writew_nb(Base, Offset, Value); + register unsigned long msb; + register unsigned int w = Value & 0xffffU; + + Offset += (unsigned long)Base - (unsigned long)memBase; + if (Offset >= (1UL << 24)) { + msb = Offset & 0xf8000000; + Offset -= msb; + if (msb_set != msb) { + sethae(msb); + msb_set = msb; + } + } + *(vuip)((unsigned long)memSBase+(Offset<<5)+(1<<(5-2))) = + w * 0x00010001; } static void -writeMmioNB32(int Value, pointer Base, unsigned long Offset) +writeSparseNB32(int Value, pointer Base, register unsigned long Offset) { - writel_nb(Base, Offset, Value); + *(vuip)((unsigned long)Base + (Offset)) = Value; + return; } void (*xf86WriteMmio8)(int Value, pointer Base, unsigned long Offset) - = writeMmio8; + = writeDense8; void (*xf86WriteMmio16)(int Value, pointer Base, unsigned long Offset) - = writeMmio16; + = writeDense16; void (*xf86WriteMmio32)(int Value, pointer Base, unsigned long Offset) - = writeMmio32; + = writeDense32; void (*xf86WriteMmioNB8)(int Value, pointer Base, unsigned long Offset) - = writeMmioNB8; + = writeDenseNB8; void (*xf86WriteMmioNB16)(int Value, pointer Base, unsigned long Offset) - = writeMmioNB16; + = writeDenseNB16; void (*xf86WriteMmioNB32)(int Value, pointer Base, unsigned long Offset) - = writeMmioNB32; + = writeDenseNB32; int (*xf86ReadMmio8)(pointer Base, unsigned long Offset) - = readMmio8; + = readDense8; int (*xf86ReadMmio16)(pointer Base, unsigned long Offset) - = readMmio16; + = readDense16; int (*xf86ReadMmio32)(pointer Base, unsigned long Offset) - = readMmio32; + = readDense32; #endif /* __FreeBSD__ && __alpha__ */ Index: xc/programs/Xserver/hw/xfree86/os-support/bus/Imakefile diff -u xc/programs/Xserver/hw/xfree86/os-support/bus/Imakefile:1.8 xc/programs/Xserver/hw/xfree86/os-support/bus/Imakefile:1.10 --- xc/programs/Xserver/hw/xfree86/os-support/bus/Imakefile:1.8 Wed Mar 8 16:31:49 2000 +++ xc/programs/Xserver/hw/xfree86/os-support/bus/Imakefile Wed Mar 8 16:31:49 2000 @@ -3,7 +3,7 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/Imakefile,v 1.8 2000/02/12 20:45:42 dawes Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/Imakefile,v 1.10 2000/03/07 13:59:06 dawes Exp $ #include <Server.tmpl> @@ -42,7 +42,7 @@ PCIDRVRSRC = freebsdPci.c PCIDRVROBJ = freebsdPci.o -#elif defined(i386Architecture) +#elif defined(i386Architecture) || defined(ia64Architecture) XCOMM ix86 PCI driver @@ -68,7 +68,7 @@ * egcs 1.1.2 as provided with some Linux distributions has an optimisation * bug that results in bad code for this file. */ -#if defined(Egcs112Bug) +#if Egcs112Bug SpecialCObjectRule(Pci,NullParameter,-O0) #endif Index: xc/programs/Xserver/hw/xfree86/os-support/linux/Imakefile diff -u xc/programs/Xserver/hw/xfree86/os-support/linux/Imakefile:3.36 xc/programs/Xserver/hw/xfree86/os-support/linux/Imakefile:3.38 --- xc/programs/Xserver/hw/xfree86/os-support/linux/Imakefile:3.36 Wed Mar 8 16:31:49 2000 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/Imakefile Wed Mar 8 16:31:50 2000 @@ -1,6 +1,5 @@ XCOMM $XConsortium: Imakefile /main/10 1996/10/19 18:06:19 kaleb $ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/Imakefile,v 3.36 2000/02/21 18:05:48 dawes Exp $ -XCOMM $PI: xc/programs/Xserver/hw/xfree86/os-support/linux/Imakefile,v 1.9 1999/06/07 13:01:42 faith Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/Imakefile,v 3.38 2000/02/23 04:47:22 martin Exp $ #include <Server.tmpl> @@ -27,7 +26,7 @@ MOUSESRC = lnx_mouse.c MOUSEOBJ = lnx_mouse.o -#if defined(i386Architecture) +#if defined(i386Architecture) || defined(ia64Architecture) RES_SRCS=stdResource.c RES_OBJS=stdResource.o #else @@ -104,7 +103,7 @@ LinkSourceFile($(DRI_SRC),../shared) -#if defined(i386Architecture) +#if defined(i386Architecture) || defined(ia64Architecture) LinkSourceFile(stdResource.c,../shared) #endif Index: xc/programs/Xserver/hw/xfree86/os-support/linux/agpgart.h diff -u /dev/null xc/programs/Xserver/hw/xfree86/os-support/linux/agpgart.h:1.1 --- /dev/null Wed Mar 8 16:31:50 2000 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/agpgart.h Wed Mar 8 16:31:50 2000 @@ -0,0 +1,224 @@ +/* + * AGPGART module version 0.99 + * Copyright (C) 1999 Jeff Hartmann + * Copyright (C) 1999 Precision Insight, Inc. + * Copyright (C) 1999 Xi Graphics, 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 + * JEFF HARTMANN, OR ANY OTHER CONTRIBUTORS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 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 _AGP_H +#define _AGP_H 1 + +#define AGPIOC_BASE 'A' +#define AGPIOC_INFO _IOR (AGPIOC_BASE, 0, agp_info*) +#define AGPIOC_ACQUIRE _IO (AGPIOC_BASE, 1) +#define AGPIOC_RELEASE _IO (AGPIOC_BASE, 2) +#define AGPIOC_SETUP _IOW (AGPIOC_BASE, 3, agp_setup*) +#define AGPIOC_RESERVE _IOW (AGPIOC_BASE, 4, agp_region*) +#define AGPIOC_PROTECT _IOW (AGPIOC_BASE, 5, agp_region*) +#define AGPIOC_ALLOCATE _IOWR(AGPIOC_BASE, 6, agp_allocate*) +#define AGPIOC_DEALLOCATE _IOW (AGPIOC_BASE, 7, int) +#define AGPIOC_BIND _IOW (AGPIOC_BASE, 8, agp_bind*) +#define AGPIOC_UNBIND _IOW (AGPIOC_BASE, 9, agp_unbind*) + +#define AGP_DEVICE "/dev/agpgart" + +#ifndef TRUE +#define TRUE 1 +#endif + +#ifndef FALSE +#define FALSE 0 +#endif + +#ifndef __KERNEL__ +#include <linux/types.h> +#include <asm/types.h> + +typedef struct _agp_version { + __u16 major; + __u16 minor; +} agp_version; + +typedef struct _agp_info { + agp_version version; /* version of the driver */ + __u32 bridge_id; /* bridge vendor/device */ + __u32 agp_mode; /* mode info of bridge */ + off_t aper_base; /* base of aperture */ + size_t aper_size; /* size of aperture */ + size_t pg_total; /* max pages (swap + system) */ + size_t pg_system; /* max pages (system) */ + size_t pg_used; /* current pages used */ +} agp_info; + +typedef struct _agp_setup { + __u32 agp_mode; /* mode info of bridge */ +} agp_setup; + +/* + * The "prot" down below needs still a "sleep" flag somehow ... + */ +typedef struct _agp_segment { + off_t pg_start; /* starting page to populate */ + size_t pg_count; /* number of pages */ + int prot; /* prot flags for mmap */ +} agp_segment; + +typedef struct _agp_region { + pid_t pid; /* pid of process */ + size_t seg_count; /* number of segments */ + struct _agp_segment *seg_list; +} agp_region; + +typedef struct _agp_allocate { + int key; /* tag of allocation */ + size_t pg_count; /* number of pages */ + __u32 type; /* 0 == normal, other devspec */ + __u32 physical; /* device specific (some devices + * need a phys address of the + * actual page behind the gatt + * table) */ +} agp_allocate; + +typedef struct _agp_bind { + int key; /* tag of allocation */ + off_t pg_start; /* starting page to populate */ +} agp_bind; + +typedef struct _agp_unbind { + int key; /* tag of allocation */ + __u32 priority; /* priority for paging out */ +} agp_unbind; + +#else /* __KERNEL__ */ + +#define AGPGART_MINOR 175 + +#define AGP_UNLOCK() up(&(agp_fe.agp_mutex)); +#define AGP_LOCK() down(&(agp_fe.agp_mutex)); +#define AGP_LOCK_INIT() sema_init(&(agp_fe.agp_mutex), 1) + +#ifndef _AGP_BACKEND_H +typedef struct _agp_version { + u16 major; + u16 minor; +} agp_version; + +#endif + +typedef struct _agp_info { + agp_version version; /* version of the driver */ + u32 bridge_id; /* bridge vendor/device */ + u32 agp_mode; /* mode info of bridge */ + off_t aper_base; /* base of aperture */ + size_t aper_size; /* size of aperture */ + size_t pg_total; /* max pages (swap + system) */ + size_t pg_system; /* max pages (system) */ + size_t pg_used; /* current pages used */ +} agp_info; + +typedef struct _agp_setup { + u32 agp_mode; /* mode info of bridge */ +} agp_setup; + +/* + * The "prot" down below needs still a "sleep" flag somehow ... + */ +typedef struct _agp_segment { + off_t pg_start; /* starting page to populate */ + size_t pg_count; /* number of pages */ + int prot; /* prot flags for mmap */ +} agp_segment; + +typedef struct _agp_segment_priv { + off_t pg_start; + size_t pg_count; + pgprot_t prot; +} agp_segment_priv; + +typedef struct _agp_region { + pid_t pid; /* pid of process */ + size_t seg_count; /* number of segments */ + struct _agp_segment *seg_list; +} agp_region; + +typedef struct _agp_allocate { + int key; /* tag of allocation */ + size_t pg_count; /* number of pages */ + u32 type; /* 0 == normal, other devspec */ + u32 physical; /* device specific (some devices + * need a phys address of the + * actual page behind the gatt + * table) */ +} agp_allocate; + +typedef struct _agp_bind { + int key; /* tag of allocation */ + off_t pg_start; /* starting page to populate */ +} agp_bind; + +typedef struct _agp_unbind { + int key; /* tag of allocation */ + u32 priority; /* priority for paging out */ +} agp_unbind; + +typedef struct _agp_client { + struct _agp_client *next; + struct _agp_client *prev; + pid_t pid; + int num_segments; + agp_segment_priv **segments; +} agp_client; + +typedef struct _agp_controller { + struct _agp_controller *next; + struct _agp_controller *prev; + pid_t pid; + int num_clients; + agp_memory *pool; + agp_client *clients; +} agp_controller; + +#define AGP_FF_ALLOW_CLIENT 0 +#define AGP_FF_ALLOW_CONTROLLER 1 +#define AGP_FF_IS_CLIENT 2 +#define AGP_FF_IS_CONTROLLER 3 +#define AGP_FF_IS_VALID 4 + +typedef struct _agp_file_private { + struct _agp_file_private *next; + struct _agp_file_private *prev; + pid_t my_pid; + u32 access_flags; +} agp_file_private; + +struct agp_front_data { + struct semaphore agp_mutex; + agp_controller *current_controller; + agp_controller *controllers; + agp_file_private *file_priv_list; + u8 used_by_controller; + u8 backend_acquired; +}; + +#endif /* __KERNEL__ */ + +#endif /* _AGP_H */ Index: xc/programs/Xserver/hw/xfree86/os-support/linux/lnxResource.c diff -u xc/programs/Xserver/hw/xfree86/os-support/linux/lnxResource.c:3.6 xc/programs/Xserver/hw/xfree86/os-support/linux/lnxResource.c:3.7 --- xc/programs/Xserver/hw/xfree86/os-support/linux/lnxResource.c:3.6 Wed Mar 8 16:31:50 2000 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/lnxResource.c Wed Mar 8 16:31:50 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/lnxResource.c,v 3.6 2000/02/18 16:23:24 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/lnxResource.c,v 3.7 2000/03/06 22:59:33 dawes Exp $ */ /* Resource information code */ @@ -147,6 +147,62 @@ RANGE(range,0,0x1ff,ResExcIoBlock | ResEstimated); ret = xf86AddResToList(ret, &range, -1); /* XXX add others */ + return ret; +} + +#elif defined(__powerpc__) + + /* XXX this isn't exactly correct but it will get the server working + * for now until we get something better. + */ + +resRange PciAvoid[] = {_PCI_AVOID_PC_STYLE, _END}; + +resPtr +xf86BusAccWindowsFromOS(void) +{ + resPtr ret = NULL; + resRange range; + + RANGE(range,0,0xffffffff,ResExcMemBlock); + ret = xf86AddResToList(ret, &range, -1); + + RANGE(range,0,0x0000ffff,ResExcIoBlock); + ret = xf86AddResToList(ret, &range, -1); + return ret; +} + +resPtr +xf86PciBusAccWindowsFromOS(void) +{ + resPtr ret = NULL; + resRange range; + + RANGE(range,0,0xffffffff,ResExcMemBlock); + ret = xf86AddResToList(ret, &range, -1); + + RANGE(range,0,0x0000ffff,ResExcIoBlock); + ret = xf86AddResToList(ret, &range, -1); + return ret; +} + +resPtr +xf86IsaBusAccWindowsFromOS(void) +{ + resPtr ret = NULL; + resRange range; + + RANGE(range,0,0xffffffff,ResExcMemBlock); + ret = xf86AddResToList(ret, &range, -1); + + RANGE(range,0,0x0000ffff,ResExcIoBlock); + ret = xf86AddResToList(ret, &range, -1); + return ret; +} + +resPtr +xf86AccResFromOS(resPtr ret) +{ return ret; } Index: xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_apm.c diff -u xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_apm.c:3.4 xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_apm.c:3.5 --- xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_apm.c:3.4 Wed Mar 8 16:31:50 2000 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_apm.c Wed Mar 8 16:31:50 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_apm.c,v 3.4 2000/02/12 23:56:20 eich Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_apm.c,v 3.5 2000/03/01 00:25:26 dawes Exp $ */ #include "X.h" #include "os.h" @@ -126,7 +126,7 @@ if (APMihPtr || !xf86Info.pmFlag) return NULL; - if (access( APM_PROC, R_OK ) || (fd = open( APM_PROC, O_RDONLY) == -1)) + if (access( APM_PROC, R_OK ) || ((fd = open( APM_PROC, O_RDONLY)) == -1)) return NULL; close( fd ); Index: xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_init.c diff -u xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_init.c:3.11 xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_init.c:3.12 --- xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_init.c:3.11 Wed Mar 8 16:31:50 2000 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_init.c Wed Mar 8 16:31:50 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_init.c,v 3.11 2000/02/08 13:13:30 eich Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_init.c,v 3.12 2000/02/25 18:28:11 dawes Exp $ */ /* * Copyright 1992 by Orest Zborowski <obz@Kodak.com> * Copyright 1993 by David Wexelblat <dwex@goblin.org> @@ -57,6 +57,8 @@ struct fb_var_screeninfo var; int fbfd; #endif + char *tty0[] = { "/dev/tty0", "/dev/vc/0", NULL }; + char *vcs[] = { "/dev/vc/%d", "/dev/tty%d", NULL }; if (serverGeneration == 1) { @@ -73,11 +75,17 @@ xf86Info.vtno = VTnum; from = X_CMDLINE; } else { - if ((fd = open("/dev/tty0",O_WRONLY,0)) < 0) { + i=0; + while (tty0[i] != NULL) + { + if ((fd = open(tty0[i],O_WRONLY,0)) >= 0) + break; + i++; + } + if (fd < 0) FatalError( "xf86OpenConsole: Cannot open /dev/tty0 (%s)\n", strerror(errno)); - } if ((ioctl(fd, VT_OPENQRY, &xf86Info.vtno) < 0) || (xf86Info.vtno == -1)) { FatalError("xf86OpenConsole: Cannot find a free VT\n"); @@ -97,15 +105,22 @@ #endif xf86Msg(from, "using VT number %d\n\n", xf86Info.vtno); - sprintf(vtname,"/dev/tty%d",xf86Info.vtno); /* /dev/tty1-64 */ - if (!KeepTty) { setpgrp(); } - if ((xf86Info.consoleFd = open(vtname, O_RDWR|O_NDELAY, 0)) < 0) { - FatalError("xf86OpenConsole: Cannot open %s (%s)\n", - vtname, strerror(errno)); + i=0; + while (vcs[i] != NULL) + { + sprintf(vtname, vcs[i], xf86Info.vtno); /* /dev/tty1-64 */ + if ((xf86Info.consoleFd = open(vtname, O_RDWR|O_NDELAY, 0)) >= 0) + break; + i++; + } + + if (xf86Info.consoleFd < 0) { + FatalError("xf86OpenConsole: Cannot open virtual console %d (%s)\n", + xf86Info.vtno, strerror(errno)); } /* change ownership of the vt */ Index: xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_video.c diff -u xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_video.c:3.31 xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_video.c:3.32 --- xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_video.c:3.31 Wed Mar 8 16:31:50 2000 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_video.c Wed Mar 8 16:31:50 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_video.c,v 3.31 2000/02/17 13:45:50 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_video.c,v 3.32 2000/02/22 01:02:37 mvojkovi Exp $ */ /* * Copyright 1992 by Orest Zborowski <obz@Kodak.com> * Copyright 1993 by David Wexelblat <dwex@goblin.org> @@ -45,6 +45,11 @@ static Bool ExtendedEnabled = FALSE; +#ifdef __ia64__ +#include "compiler.h" +#include <sys/io.h> +#endif + #ifdef __alpha__ # ifdef LIBC_IS_FIXED @@ -420,7 +425,11 @@ #if defined(__alpha__) || defined(__mc68000__) || defined(__powerpc__) || defined(__sparc__) #else #ifdef __GNUC__ - __asm__ __volatile__("cli"); +#if defined(__ia64__) + __asm__ __volatile__ (";; rsm psr.i;; srlz.d" ::: "memory"); +#else + __asm__ __volatile__("cli"); +#endif #else asm("cli"); #endif @@ -443,7 +452,11 @@ #if defined(__alpha__) || defined(__mc68000__) || defined(__powerpc__) || defined(__sparc__) #else #ifdef __GNUC__ - __asm__ __volatile__("sti"); +#if defined(__ia64__) + __asm__ __volatile__ (";; ssm psr.i;; srlz.d" ::: "memory"); +#else + __asm__ __volatile__("sti"); +#endif #else asm("sti"); #endif Index: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/Imakefile diff -u xc/programs/Xserver/hw/xfree86/os-support/linux/drm/Imakefile:1.4 xc/programs/Xserver/hw/xfree86/os-support/linux/drm/Imakefile:1.5 --- xc/programs/Xserver/hw/xfree86/os-support/linux/drm/Imakefile:1.4 Sat Sep 25 10:37:49 1999 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/drm/Imakefile Wed Mar 8 16:31:50 2000 @@ -1,5 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/Imakefile,v 1.4 1999/09/25 14:37:49 dawes Exp $ -XCOMM $PI: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/Imakefile,v 1.7 1999/09/14 19:55:15 faith Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/Imakefile,v 1.5 2000/02/23 04:47:22 martin Exp $ #define IHaveModules #include <Server.tmpl> Index: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/drmmodule.c diff -u xc/programs/Xserver/hw/xfree86/os-support/linux/drm/drmmodule.c:1.1 xc/programs/Xserver/hw/xfree86/os-support/linux/drm/drmmodule.c:1.2 --- xc/programs/Xserver/hw/xfree86/os-support/linux/drm/drmmodule.c:1.1 Mon Jun 14 03:32:01 1999 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/drm/drmmodule.c Wed Mar 8 16:31:50 2000 @@ -24,8 +24,7 @@ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * - * $PI: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/drmmodule.c,v 1.1 1999/06/07 13:01:42 faith Exp $ - * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/drmmodule.c,v 1.1 1999/06/14 07:32:01 dawes Exp $ + * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/drmmodule.c,v 1.2 2000/02/23 04:47:22 martin Exp $ * */ Index: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drm.c diff -u xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drm.c:1.9 xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drm.c:1.10 --- xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drm.c:1.9 Wed Mar 8 16:31:50 2000 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drm.c Wed Mar 8 16:31:50 2000 @@ -24,8 +24,7 @@ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * - * $PI: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drm.c,v 1.43 1999/08/04 18:14:43 faith Exp $ - * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drm.c,v 1.9 2000/02/14 06:27:24 martin Exp $ + * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drm.c,v 1.10 2000/02/23 04:47:23 martin Exp $ * */ Index: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drmHash.c diff -u xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drmHash.c:1.1 xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drmHash.c:1.2 --- xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drmHash.c:1.1 Mon Jun 14 03:32:02 1999 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drmHash.c Wed Mar 8 16:31:50 2000 @@ -24,8 +24,7 @@ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * - * $PI: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drmHash.c,v 1.3 1999/06/07 13:01:42 faith Exp $ - * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drmHash.c,v 1.1 1999/06/14 07:32:02 dawes Exp $ + * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drmHash.c,v 1.2 2000/02/23 04:47:23 martin Exp $ * * DESCRIPTION * Index: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drmRandom.c diff -u xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drmRandom.c:1.2 xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drmRandom.c:1.3 --- xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drmRandom.c:1.2 Sun Jun 27 10:08:20 1999 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drmRandom.c Wed Mar 8 16:31:50 2000 @@ -24,8 +24,7 @@ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * - * $PI: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drmRandom.c,v 1.4 1999/06/24 18:54:55 faith Exp $ - * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drmRandom.c,v 1.2 1999/06/27 14:08:20 dawes Exp $ + * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drmRandom.c,v 1.3 2000/02/23 04:47:23 martin Exp $ * * DESCRIPTION * Index: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drmSL.c diff -u xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drmSL.c:1.1 xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drmSL.c:1.2 --- xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drmSL.c:1.1 Mon Jun 14 03:32:02 1999 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drmSL.c Wed Mar 8 16:31:50 2000 @@ -24,8 +24,7 @@ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * - * $PI: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drmSL.c,v 1.2 1999/06/07 13:01:42 faith Exp $ - * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drmSL.c,v 1.1 1999/06/14 07:32:02 dawes Exp $ + * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drmSL.c,v 1.2 2000/02/23 04:47:24 martin Exp $ * * DESCRIPTION * Index: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/Imakefile diff -u xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/Imakefile:1.1 xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/Imakefile:1.2 --- xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/Imakefile:1.1 Sat Sep 25 10:37:56 1999 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/Imakefile Wed Mar 8 16:31:51 2000 @@ -1,5 +1,4 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/Imakefile,v 1.1 1999/09/25 14:37:56 dawes Exp $ -XCOMM $PI: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/Imakefile,v 1.8 1999/07/02 17:46:30 faith Exp $ +XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/Imakefile,v 1.2 2000/02/23 04:47:24 martin Exp $ #include <Server.tmpl> Index: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/Makefile.linux diff -u xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/Makefile.linux:1.5 xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/Makefile.linux:1.6 --- xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/Makefile.linux:1.5 Wed Mar 8 16:31:51 2000 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/Makefile.linux Wed Mar 8 16:31:51 2000 @@ -24,8 +24,7 @@ # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # DEALINGS IN THE SOFTWARE. # -# $PI: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/generic/Makefile.linux,v 1.23 1999/07/02 17:46:30 faith Exp $ -# $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/Makefile.linux,v 1.5 2000/02/14 06:27:25 martin Exp $ +# $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/Makefile.linux,v 1.6 2000/02/23 04:47:25 martin Exp $ # .SUFFIXES: Index: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/auth.c diff -u xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/auth.c:1.1 xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/auth.c:1.2 --- xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/auth.c:1.1 Sat Sep 25 10:37:57 1999 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/auth.c Wed Mar 8 16:31:51 2000 @@ -24,8 +24,7 @@ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * - * $PI: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/auth.c,v 1.4 1999/08/30 13:05:00 faith Exp $ - * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/auth.c,v 1.1 1999/09/25 14:37:57 dawes Exp $ + * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/auth.c,v 1.2 2000/02/23 04:47:25 martin Exp $ * */ Index: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/bufs.c diff -u xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/bufs.c:1.4 xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/bufs.c:1.5 --- xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/bufs.c:1.4 Wed Mar 8 16:31:51 2000 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/bufs.c Wed Mar 8 16:31:51 2000 @@ -24,8 +24,7 @@ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * - * $PI: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/bufs.c,v 1.8 1999/08/30 13:05:00 faith Exp $ - * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/bufs.c,v 1.4 2000/02/14 06:27:25 martin Exp $ + * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/bufs.c,v 1.5 2000/02/23 04:47:25 martin Exp $ * */ Index: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/context.c diff -u xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/context.c:1.1 xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/context.c:1.2 --- xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/context.c:1.1 Sat Sep 25 10:37:58 1999 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/context.c Wed Mar 8 16:31:51 2000 @@ -24,8 +24,7 @@ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * - * $PI: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/context.c,v 1.5 1999/08/30 13:05:00 faith Exp $ - * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/context.c,v 1.1 1999/09/25 14:37:58 dawes Exp $ + * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/context.c,v 1.2 2000/02/23 04:47:26 martin Exp $ * */ Index: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/dma.c diff -u xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/dma.c:1.4 xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/dma.c:1.5 --- xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/dma.c:1.4 Wed Mar 8 16:31:52 2000 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/dma.c Wed Mar 8 16:31:52 2000 @@ -24,8 +24,7 @@ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * - * $PI: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/dma.c,v 1.7 1999/09/16 16:56:18 faith Exp $ - * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/dma.c,v 1.4 2000/02/14 06:27:26 martin Exp $ + * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/dma.c,v 1.5 2000/02/23 04:47:26 martin Exp $ * */ Index: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drawable.c diff -u xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drawable.c:1.1 xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drawable.c:1.2 --- xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drawable.c:1.1 Sat Sep 25 10:37:58 1999 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drawable.c Wed Mar 8 16:31:52 2000 @@ -24,8 +24,7 @@ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * - * $PI: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drawable.c,v 1.3 1999/08/30 13:05:00 faith Exp $ - * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drawable.c,v 1.1 1999/09/25 14:37:58 dawes Exp $ + * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drawable.c,v 1.2 2000/02/23 04:47:26 martin Exp $ * */ Index: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drm.h diff -u xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drm.h:1.4 xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drm.h:1.5 --- xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drm.h:1.4 Wed Mar 8 16:31:52 2000 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drm.h Wed Mar 8 16:31:52 2000 @@ -24,8 +24,7 @@ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * - * $PI: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drm.h,v 1.46 1999/08/20 20:00:53 faith Exp $ - * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drm.h,v 1.4 2000/02/14 06:27:26 martin Exp $ + * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drm.h,v 1.5 2000/02/23 04:47:26 martin Exp $ * * Acknowledgements: * Dec 1999, Richard Henderson <rth@twiddle.net>, move to generic cmpxchg. Index: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drmP.h diff -u xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drmP.h:1.5 xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drmP.h:1.6 --- xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drmP.h:1.5 Wed Mar 8 16:31:52 2000 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drmP.h Wed Mar 8 16:31:52 2000 @@ -24,8 +24,7 @@ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * - * $PI: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drmP.h,v 1.58 1999/08/30 13:05:00 faith Exp $ - * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drmP.h,v 1.5 2000/02/14 06:27:26 martin Exp $ + * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drmP.h,v 1.6 2000/02/23 04:47:27 martin Exp $ * */ Index: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drmstat.c diff -u xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drmstat.c:1.5 xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drmstat.c:1.6 --- xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drmstat.c:1.5 Wed Mar 8 16:31:52 2000 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drmstat.c Wed Mar 8 16:31:52 2000 @@ -24,8 +24,7 @@ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * - * $PI: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drmstat.c,v 1.28 1999/08/04 18:12:11 faith Exp $ - * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drmstat.c,v 1.5 2000/02/14 06:27:27 martin Exp $ + * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drmstat.c,v 1.6 2000/02/23 04:47:27 martin Exp $ * */ Index: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/fops.c diff -u xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/fops.c:1.5 xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/fops.c:1.6 --- xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/fops.c:1.5 Wed Mar 8 16:31:52 2000 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/fops.c Wed Mar 8 16:31:52 2000 @@ -24,8 +24,7 @@ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * - * $PI: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/fops.c,v 1.3 1999/08/20 15:36:45 faith Exp $ - * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/fops.c,v 1.5 2000/02/14 06:27:27 martin Exp $ + * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/fops.c,v 1.6 2000/02/23 04:47:27 martin Exp $ * */ Index: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/gamma_dma.c diff -u xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/gamma_dma.c:1.1 xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/gamma_dma.c:1.2 --- xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/gamma_dma.c:1.1 Sat Sep 25 10:38:00 1999 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/gamma_dma.c Wed Mar 8 16:31:52 2000 @@ -24,8 +24,7 @@ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * - * $PI: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/gamma_dma.c,v 1.9 1999/09/16 16:56:18 faith Exp $ - * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/gamma_dma.c,v 1.1 1999/09/25 14:38:00 dawes Exp $ + * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/gamma_dma.c,v 1.2 2000/02/23 04:47:28 martin Exp $ * */ Index: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/gamma_drv.c diff -u xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/gamma_drv.c:1.3 xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/gamma_drv.c:1.4 --- xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/gamma_drv.c:1.3 Wed Mar 8 16:31:52 2000 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/gamma_drv.c Wed Mar 8 16:31:52 2000 @@ -24,8 +24,7 @@ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * - * $PI: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/gamma_drv.c,v 1.17 1999/08/30 13:05:00 faith Exp $ - * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/gamma_drv.c,v 1.3 2000/01/20 07:25:35 martin Exp $ + * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/gamma_drv.c,v 1.4 2000/02/23 04:47:28 martin Exp $ * */ Index: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/gamma_drv.h diff -u xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/gamma_drv.h:1.1 xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/gamma_drv.h:1.2 --- xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/gamma_drv.h:1.1 Sat Sep 25 10:38:00 1999 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/gamma_drv.h Wed Mar 8 16:31:52 2000 @@ -24,8 +24,7 @@ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * - * $PI: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/gamma_drv.h,v 1.4 1999/08/30 13:05:00 faith Exp $ - * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/gamma_drv.h,v 1.1 1999/09/25 14:38:00 dawes Exp $ + * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/gamma_drv.h,v 1.2 2000/02/23 04:47:28 martin Exp $ * */ Index: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/init.c diff -u xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/init.c:1.1 xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/init.c:1.2 --- xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/init.c:1.1 Sat Sep 25 10:38:01 1999 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/init.c Wed Mar 8 16:31:52 2000 @@ -24,8 +24,7 @@ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * - * $PI: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/init.c,v 1.3 1999/08/20 15:07:01 faith Exp $ - * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/init.c,v 1.1 1999/09/25 14:38:01 dawes Exp $ + * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/init.c,v 1.2 2000/02/23 04:47:29 martin Exp $ * */ Index: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/ioctl.c diff -u xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/ioctl.c:1.1 xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/ioctl.c:1.2 --- xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/ioctl.c:1.1 Sat Sep 25 10:38:01 1999 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/ioctl.c Wed Mar 8 16:31:52 2000 @@ -24,8 +24,7 @@ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * - * $PI: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/ioctl.c,v 1.3 1999/08/30 13:05:00 faith Exp $ - * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/ioctl.c,v 1.1 1999/09/25 14:38:01 dawes Exp $ + * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/ioctl.c,v 1.2 2000/02/23 04:47:29 martin Exp $ * */ Index: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/lists.c diff -u xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/lists.c:1.4 xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/lists.c:1.6 --- xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/lists.c:1.4 Wed Mar 8 16:31:52 2000 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/lists.c Wed Mar 8 16:31:52 2000 @@ -24,8 +24,7 @@ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * - * $PI: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/lists.c,v 1.3 1999/08/20 15:07:02 faith Exp $ - * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/lists.c,v 1.4 2000/02/14 06:27:27 martin Exp $ + * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/lists.c,v 1.6 2000/02/23 04:56:42 martin Exp $ * */ @@ -154,7 +153,7 @@ buf->list = DRM_LIST_FREE; do { old = bl->next; - bl->next = old; + buf->next = old; prev = cmpxchg(&bl->next, old, buf); if (++count > DRM_LOOPING_LIMIT) { DRM_ERROR("Looping\n"); Index: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/lock.c diff -u xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/lock.c:1.4 xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/lock.c:1.5 --- xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/lock.c:1.4 Wed Mar 8 16:31:52 2000 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/lock.c Wed Mar 8 16:31:52 2000 @@ -24,8 +24,7 @@ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * - * $PI: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/lock.c,v 1.5 1999/08/30 13:05:00 faith Exp $ - * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/lock.c,v 1.4 2000/02/14 06:27:27 martin Exp $ + * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/lock.c,v 1.5 2000/02/23 04:47:29 martin Exp $ * */ Index: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/memory.c diff -u xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/memory.c:1.4 xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/memory.c:1.5 --- xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/memory.c:1.4 Wed Mar 8 16:31:53 2000 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/memory.c Wed Mar 8 16:31:53 2000 @@ -24,8 +24,7 @@ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * - * $PI: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/memory.c,v 1.4 1999/08/20 20:00:53 faith Exp $ - * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/memory.c,v 1.4 2000/02/14 06:27:28 martin Exp $ + * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/memory.c,v 1.5 2000/02/23 04:47:30 martin Exp $ * */ Index: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/proc.c diff -u xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/proc.c:1.5 xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/proc.c:1.6 --- xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/proc.c:1.5 Wed Mar 8 16:31:53 2000 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/proc.c Wed Mar 8 16:31:53 2000 @@ -24,8 +24,7 @@ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * - * $PI: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/proc.c,v 1.4 1999/08/20 15:36:46 faith Exp $ - * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/proc.c,v 1.5 2000/02/14 06:27:28 martin Exp $ + * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/proc.c,v 1.6 2000/02/23 04:47:30 martin Exp $ * */ Index: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/tdfx_context.c diff -u xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/tdfx_context.c:1.1 xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/tdfx_context.c:1.2 --- xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/tdfx_context.c:1.1 Mon Dec 13 20:49:21 1999 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/tdfx_context.c Wed Mar 8 16:31:53 2000 @@ -24,8 +24,7 @@ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * - * $PI$ - * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/tdfx_context.c,v 1.1 1999/12/14 01:49:21 robin Exp $ + * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/tdfx_context.c,v 1.2 2000/02/23 04:47:30 martin Exp $ * */ Index: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/tdfx_drv.c diff -u xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/tdfx_drv.c:1.2 xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/tdfx_drv.c:1.3 --- xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/tdfx_drv.c:1.2 Wed Mar 8 16:31:53 2000 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/tdfx_drv.c Wed Mar 8 16:31:53 2000 @@ -24,8 +24,7 @@ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * - * $PI$ - * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/tdfx_drv.c,v 1.2 2000/01/20 07:25:36 martin Exp $ + * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/tdfx_drv.c,v 1.3 2000/02/23 04:47:31 martin Exp $ * */ Index: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/tdfx_drv.h diff -u xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/tdfx_drv.h:1.1 xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/tdfx_drv.h:1.2 --- xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/tdfx_drv.h:1.1 Mon Dec 13 20:49:22 1999 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/tdfx_drv.h Wed Mar 8 16:31:53 2000 @@ -24,8 +24,7 @@ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * - * $PI$ - * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/tdfx_drv.h,v 1.1 1999/12/14 01:49:22 robin Exp $ + * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/tdfx_drv.h,v 1.2 2000/02/23 04:47:31 martin Exp $ * */ Index: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/vm.c diff -u xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/vm.c:1.4 xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/vm.c:1.5 --- xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/vm.c:1.4 Wed Mar 8 16:31:53 2000 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/vm.c Wed Mar 8 16:31:53 2000 @@ -24,8 +24,7 @@ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * - * $PI: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/vm.c,v 1.7 1999/08/21 02:48:34 faith Exp $ - * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/vm.c,v 1.4 2000/02/14 06:27:28 martin Exp $ + * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/vm.c,v 1.5 2000/02/23 04:47:31 martin Exp $ * */ Index: xc/programs/Xserver/hw/xfree86/os-support/linux/int10/linux.c diff -u xc/programs/Xserver/hw/xfree86/os-support/linux/int10/linux.c:1.7 xc/programs/Xserver/hw/xfree86/os-support/linux/int10/linux.c:1.8 --- xc/programs/Xserver/hw/xfree86/os-support/linux/int10/linux.c:1.7 Wed Mar 8 16:31:53 2000 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/int10/linux.c Wed Mar 8 16:31:53 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/int10/linux.c,v 1.7 2000/02/08 17:19:23 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/int10/linux.c,v 1.8 2000/02/29 03:09:26 dawes Exp $ */ /* * linux specific part of the int10 module * Copyright 1999 Egbert Eich @@ -419,9 +419,21 @@ { int __res; - __asm__ __volatile__("int $0x80\n" +#ifdef __PIC__ + /* When compiling with -fPIC, we can't use asm constraint "b" because + %ebx is already taken by gcc. */ + __asm__ __volatile__("pushl %%ebx\n\t" + "movl %2,%%ebx\n\t" + "movl %1,%%eax\n\t" + "int $0x80\n\t" + "popl %%ebx" + :"=a" (__res) + :"n" ((int)113), "r" ((struct vm86_struct *)ptr)); +#else + __asm__ __volatile__("int $0x80" :"=a" (__res):"a" ((int)113), "b" ((struct vm86_struct *)ptr)); +#endif if ((__res) < 0) { errno = -__res; Index: xc/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_video.c diff -u xc/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_video.c:3.14 xc/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_video.c:3.15 --- xc/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_video.c:3.14 Wed Dec 8 01:10:13 1999 +++ xc/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_video.c Wed Mar 8 16:31:53 2000 @@ -21,7 +21,7 @@ * */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_video.c,v 3.14 1999/12/08 06:10:13 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_video.c,v 3.15 2000/03/03 20:02:20 dawes Exp $ */ #include "X.h" #include "input.h" @@ -190,8 +190,6 @@ pVidMem->linearSupported = TRUE; pVidMem->mapMem = MapVidMem; pVidMem->unmapMem = UnMapVidMem; - pVidMem->mapMemSparse = 0; - pVidMem->unmapMemSparse = 0; pVidMem->setWC = 0; pVidMem->undoWC = 0; #ifdef HAS_MTRR_SUPPORT Index: xc/programs/Xserver/hw/xfree86/os-support/shared/sigio.c diff -u xc/programs/Xserver/hw/xfree86/os-support/shared/sigio.c:1.8 xc/programs/Xserver/hw/xfree86/os-support/shared/sigio.c:1.9 --- xc/programs/Xserver/hw/xfree86/os-support/shared/sigio.c:1.8 Wed Mar 8 16:31:56 2000 +++ xc/programs/Xserver/hw/xfree86/os-support/shared/sigio.c Wed Mar 8 16:31:56 2000 @@ -1,6 +1,5 @@ /* sigio.c -- Support for SIGIO handler installation and removal * Created: Thu Jun 3 15:39:18 1999 by faith@precisioninsight.com - * Revised: Thu Jun 3 16:16:35 1999 by faith@precisioninsight.com * Revised: Thu Jan 6 10:32:25 2000 by faith@precisioninsight.com * * Copyright 1999 Precision Insight, Inc., Cedar Park, Texas. @@ -25,7 +24,7 @@ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * - * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/sigio.c,v 1.8 2000/02/08 17:19:24 dawes Exp $ + * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/sigio.c,v 1.9 2000/03/02 16:07:53 martin Exp $ * */ Index: xc/programs/Xserver/hw/xfree86/parser/DRI.c diff -u xc/programs/Xserver/hw/xfree86/parser/DRI.c:1.1 xc/programs/Xserver/hw/xfree86/parser/DRI.c:1.3 --- xc/programs/Xserver/hw/xfree86/parser/DRI.c:1.1 Sun Jun 27 10:08:30 1999 +++ xc/programs/Xserver/hw/xfree86/parser/DRI.c Wed Mar 8 16:31:56 2000 @@ -24,8 +24,7 @@ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * - * $PI: xc/programs/Xserver/hw/xfree86/parser/DRI.c,v 1.2 1999/06/17 21:45:25 faith Exp $ - * $XFree86: xc/programs/Xserver/hw/xfree86/parser/DRI.c,v 1.1 1999/06/27 14:08:30 dawes Exp $ + * $XFree86: xc/programs/Xserver/hw/xfree86/parser/DRI.c,v 1.3 2000/03/05 17:04:19 dawes Exp $ * */ @@ -43,8 +42,6 @@ {MODE, "mode"}, {-1, ""}, }; - -#define DEBUG #define CLEANUP freeBuffersList Index: xc/programs/Xserver/hw/xfree86/parser/Device.c diff -u xc/programs/Xserver/hw/xfree86/parser/Device.c:1.13 xc/programs/Xserver/hw/xfree86/parser/Device.c:1.14 --- xc/programs/Xserver/hw/xfree86/parser/Device.c:1.13 Wed Mar 8 16:31:56 2000 +++ xc/programs/Xserver/hw/xfree86/parser/Device.c Wed Mar 8 16:31:56 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/parser/Device.c,v 1.13 2000/01/30 00:55:36 alanh Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/parser/Device.c,v 1.14 2000/03/01 16:01:30 tsi Exp $ */ /* * * Copyright (c) 1997 Metro Link Incorporated @@ -75,6 +75,7 @@ /* Zero is a valid value for these */ ptr->dev_chipid = -1; ptr->dev_chiprev = -1; + ptr->dev_irq = -1; while ((token = xf86GetToken (DeviceTab)) != ENDSECTION) { switch (token) @@ -287,9 +288,9 @@ if (ptr->dev_clockchip) fprintf (cf, "\tClockChip \"%s\"\n", ptr->dev_clockchip); if (ptr->dev_chipid != -1) - fprintf (cf, "\tChipId %d\n", ptr->dev_chipid); + fprintf (cf, "\tChipId 0x%x\n", ptr->dev_chipid); if (ptr->dev_chiprev != -1) - fprintf (cf, "\tChipRev %d\n", ptr->dev_chiprev); + fprintf (cf, "\tChipRev 0x%x\n", ptr->dev_chiprev); for (optr = ptr->dev_option_lst; optr; optr = optr->list.next) { Index: xc/programs/Xserver/hw/xfree86/parser/Imakefile diff -u xc/programs/Xserver/hw/xfree86/parser/Imakefile:1.10 xc/programs/Xserver/hw/xfree86/parser/Imakefile:1.11 --- xc/programs/Xserver/hw/xfree86/parser/Imakefile:1.10 Sat Sep 4 09:04:53 1999 +++ xc/programs/Xserver/hw/xfree86/parser/Imakefile Wed Mar 8 16:31:56 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/parser/Imakefile,v 1.10 1999/09/04 13:04:53 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/parser/Imakefile,v 1.11 2000/03/02 17:53:13 dawes Exp $ */ @@ -25,6 +25,7 @@ XCONFIGFILE = XConfigFile XCONFIGDIR = XConfigDir +XVERS = XFree86Version INCLUDES = -I. -I$(XF86OSSRC) @@ -36,7 +37,9 @@ Video.o Monitor.o Pointer.o Screen.o Vendor.o read.o scan.o write.o \ DRI.o -CONFIG_DEFINES = -DXCONFIGDIR=\"$(XCONFIGDIR)\" -DXCONFIGFILE=\"$(XCONFIGFILE)\" +CONFIG_DEFINES = -DXCONFIGDIR=\"$(XCONFIGDIR)\" \ + -DXCONFIGFILE=\"$(XCONFIGFILE)\" \ + -DXVERSION=$(XVERS) #include <Library.tmpl> Index: xc/programs/Xserver/hw/xfree86/parser/Screen.c diff -u xc/programs/Xserver/hw/xfree86/parser/Screen.c:1.10 xc/programs/Xserver/hw/xfree86/parser/Screen.c:1.11 --- xc/programs/Xserver/hw/xfree86/parser/Screen.c:1.10 Wed Mar 8 16:31:56 2000 +++ xc/programs/Xserver/hw/xfree86/parser/Screen.c Wed Mar 8 16:31:56 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/parser/Screen.c,v 1.10 2000/01/26 02:00:51 alanh Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/parser/Screen.c,v 1.11 2000/02/25 19:07:53 dawes Exp $ */ /* * * Copyright (c) 1997 Metro Link Incorporated @@ -96,7 +96,7 @@ break; case VISUAL: if (xf86GetToken (NULL) != STRING) - Error (NUMBER_MSG, "Display"); + Error (QUOTE_MSG, "Display"); ptr->disp_visual = val.str; break; case WEIGHT: @@ -381,7 +381,7 @@ { fprintf (cf, "\tSubSection \"Display\"\n"); if (dptr->disp_comment) - fprintf (cf, "\t\t### %d %d\n", + fprintf (cf, "\t\t### %s\n", dptr->disp_comment); if (dptr->disp_frameX0 != 0 || dptr->disp_frameY0 != 0) { Index: xc/programs/Xserver/hw/xfree86/parser/scan.c diff -u xc/programs/Xserver/hw/xfree86/parser/scan.c:1.9 xc/programs/Xserver/hw/xfree86/parser/scan.c:1.10 --- xc/programs/Xserver/hw/xfree86/parser/scan.c:1.9 Wed Mar 8 16:31:56 2000 +++ xc/programs/Xserver/hw/xfree86/parser/scan.c Wed Mar 8 16:31:56 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/parser/scan.c,v 1.9 2000/01/31 19:33:39 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/parser/scan.c,v 1.10 2000/03/02 17:53:13 dawes Exp $ */ /* * * Copyright (c) 1997 Metro Link Incorporated @@ -357,6 +357,7 @@ * %G config file environment ($XF86CONFIG) as a safe path * %D $HOME * %P projroot + * %M major version number * %% % */ @@ -369,6 +370,13 @@ #ifndef XCONFENV #define XCONFENV "XF86CONFIG" #endif +#ifndef XF86_VERSION_MAJOR +#ifdef XVERSION +#define XF86_VERSION_MAJOR (XVERSION / 1000) +#else +#define XF86_VERSION_MAJOR 4 +#endif +#endif #define BAIL_OUT do { \ xf86conffree(result); \ @@ -398,6 +406,7 @@ int i, l; static const char *env = NULL, *home = NULL; static char *hostname = NULL; + static char majorvers[3] = ""; if (!template) return NULL; @@ -500,6 +509,16 @@ else BAIL_OUT; break; + case 'M': + if (!majorvers[0]) { + if (XF86_VERSION_MAJOR < 0 || XF86_VERSION_MAJOR > 99) { + fprintf(stderr, "XF86_VERSION_MAJOR is out of range\n"); + BAIL_OUT; + } else + sprintf(majorvers, "%d", XF86_VERSION_MAJOR); + } + APPEND_STR(majorvers); + break; case '%': result[l++] = '%'; CHECK_LENGTH; @@ -539,11 +558,14 @@ "%P/etc/X11/%S," \ "/etc/X11/%G," \ "%P/etc/X11/%G," \ + "/etc/X11/%X-%M," \ "/etc/X11/%X," \ "/etc/%X," \ "%P/etc/X11/%X.%H," \ + "%P/etc/X11/%X-%M," \ "%P/etc/X11/%X," \ "%P/lib/X11/%X.%H," \ + "%P/lib/X11/%X-%M," \ "%P/lib/X11/%X" #endif Index: xc/programs/Xserver/hw/xfree86/parser/write.c diff -u xc/programs/Xserver/hw/xfree86/parser/write.c:1.8 xc/programs/Xserver/hw/xfree86/parser/write.c:1.10 --- xc/programs/Xserver/hw/xfree86/parser/write.c:1.8 Sat Sep 4 09:04:54 1999 +++ xc/programs/Xserver/hw/xfree86/parser/write.c Wed Mar 8 16:31:57 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/parser/write.c,v 1.8 1999/09/04 13:04:54 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/parser/write.c,v 1.10 2000/03/06 22:59:34 dawes Exp $ */ /* * * Copyright (c) 1997 Metro Link Incorporated @@ -33,8 +33,37 @@ #include "xf86tokens.h" #include "Configint.h" -int -xf86WriteConfigFile (const char *filename, XF86ConfigPtr cptr) +#include <unistd.h> +#include <sys/types.h> +#include <sys/wait.h> +#include <signal.h> +#include <errno.h> + +#if (defined(X_NOT_STDC_ENV) || (defined(sun) && !defined(SVR4)) || defined(macII)) && !defined(__GLIBC__) +#ifndef strerror +extern char *sys_errlist[]; +extern int sys_nerr; +#define strerror(n) \ + (((n) >= 0 && (n) < sys_nerr) ? sys_errlist[n] : "unknown error") +#endif +#endif + +#if defined(SVR4) || defined(__linux__) || defined(CSRG_BASED) +#define HAS_SAVED_IDS_AND_SETEUID +#endif +#if defined(__EMX__) || defined(WIN32) +#define HAS_NO_UIDS +#endif + +#ifdef HAS_NO_UIDS +#define doWriteConfigFile xf86WriteConfigFile +#define Local /**/ +#else +#define Local static +#endif + +Local int +doWriteConfigFile (const char *filename, XF86ConfigPtr cptr) { FILE *cf; @@ -74,3 +103,82 @@ fclose(cf); return 1; } + +#ifndef HAS_NO_UIDS + +int +xf86WriteConfigFile (const char *filename, XF86ConfigPtr cptr) +{ + int ret; + +#if !defined(HAS_SAVED_IDS_AND_SETEUID) + int pid, p; + int status; + void (*csig)(int); +#else + int ruid, euid; +#endif + + if (getuid() != geteuid()) + { + +#if !defined(HAS_SAVED_IDS_AND_SETEUID) + /* Need to fork to change ruid without loosing euid */ +#ifdef SIGCHLD + csig = signal(SIGCHLD, SIG_DFL); +#endif + switch ((pid = fork())) + { + case -1: + ErrorF("xf86WriteConfigFile(): fork failed (%s)\n", + strerror(errno)); + return 0; + case 0: /* child */ + setuid(getuid()); + ret = doWriteConfigFile(filename, cptr); + exit(ret); + break; + default: /* parent */ + do + { + p = waitpid(pid, &status, 0); + } while (p == -1 && errno == EINTR); + } +#ifdef SIGCHLD + signal(SIGCHLD, csig); +#endif + if (p != -1 && WIFEXITED(status) && WEXITSTATUS(status) == 0) + return 1; /* success */ + else + return 0; + +#else /* HAS_SAVED_IDS_AND_SETEUID */ + + ruid = getuid(); + euid = geteuid(); + + if (seteuid(ruid) == -1) + { + ErrorF("xf86WriteConfigFile(): seteuid(%d) failed (%s)\n", + ruid, strerror(errno)); + return 0; + } + ret = doWriteConfigFile(filename, cptr); + + if (seteuid(euid) == -1) + { + ErrorF("xf86WriteConfigFile(): seteuid(%d) failed (%s)\n", + euid, strerror(errno)); + } + return ret; + +#endif /* HAS_SAVED_IDS_AND_SETEUID */ + + } + else + { + return doWriteConfigFile(filename, cptr); + } +} + +#endif /* !HAS_NO_UIDS */ Index: xc/programs/Xserver/hw/xfree86/xaa/xaaBitmap.c diff -u xc/programs/Xserver/hw/xfree86/xaa/xaaBitmap.c:1.5 xc/programs/Xserver/hw/xfree86/xaa/xaaBitmap.c:1.6 --- xc/programs/Xserver/hw/xfree86/xaa/xaaBitmap.c:1.5 Sat Aug 14 06:50:13 1999 +++ xc/programs/Xserver/hw/xfree86/xaa/xaaBitmap.c Wed Mar 8 16:32:12 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaBitmap.c,v 1.5 1999/08/14 10:50:13 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaBitmap.c,v 1.6 2000/03/03 18:49:55 mvojkovi Exp $ */ #include "xaa.h" @@ -113,6 +113,9 @@ return base; } +#define BitmapScanline_Shifted_Careful BitmapScanline_Shifted +#define BitmapScanline_Shifted_Inverted_Careful BitmapScanline_Shifted_Inverted + #else static CARD32* BitmapScanline( @@ -192,6 +195,36 @@ } return base; } + +static CARD32* +BitmapScanline_Shifted_Careful( + CARD32 *bits, CARD32 *base, + int count, int skipleft ) +{ + while(--count) { + WRITE_BITS(SHIFT_R(*bits,skipleft) | + SHIFT_L(*(bits + 1),(32 - skipleft))); + bits++; + } + WRITE_BITS(SHIFT_R(*bits,skipleft)); + + return base; +} + +static CARD32* +BitmapScanline_Shifted_Inverted_Careful( + CARD32 *bits, CARD32 *base, + int count, int skipleft ) +{ + while(--count) { + WRITE_BITS(~(SHIFT_R(*bits,skipleft) | + SHIFT_L(*(bits + 1),(32 - skipleft)))); + bits++; + } + WRITE_BITS(~(SHIFT_R(*bits,skipleft))); + return base; +} + #endif /* @@ -250,8 +283,14 @@ (!(infoRec->CPUToScreenColorExpandFillFlags & LEFT_EDGE_CLIPPING_NEGATIVE_X) && (skipleft > x)))) { #endif - firstFunc = BitmapScanline_Shifted; - secondFunc = BitmapScanline_Shifted_Inverted; + if((skipleft + ((w + 31) & ~31)) > ((skipleft + w + 31) & ~31)) { + /* don't read past the end */ + firstFunc = BitmapScanline_Shifted_Careful; + secondFunc = BitmapScanline_Shifted_Inverted_Careful; + } else { + firstFunc = BitmapScanline_Shifted; + secondFunc = BitmapScanline_Shifted_Inverted; + } shift = skipleft; skipleft = 0; } else { @@ -360,8 +399,14 @@ (!(infoRec->ScanlineCPUToScreenColorExpandFillFlags & LEFT_EDGE_CLIPPING_NEGATIVE_X) && (skipleft > x)))) { #endif - firstFunc = BitmapScanline_Shifted; - secondFunc = BitmapScanline_Shifted_Inverted; + if((skipleft + ((w + 31) & ~31)) > ((skipleft + w + 31) & ~31)) { + /* don't read past the end */ + firstFunc = BitmapScanline_Shifted_Careful; + secondFunc = BitmapScanline_Shifted_Inverted_Careful; + } else { + firstFunc = BitmapScanline_Shifted; + secondFunc = BitmapScanline_Shifted_Inverted; + } shift = skipleft; skipleft = 0; } else { Index: xc/programs/Xserver/hw/xfree86/xaa/xaaPCache.c diff -u xc/programs/Xserver/hw/xfree86/xaa/xaaPCache.c:1.24 xc/programs/Xserver/hw/xfree86/xaa/xaaPCache.c:1.28 --- xc/programs/Xserver/hw/xfree86/xaa/xaaPCache.c:1.24 Wed Mar 8 16:32:13 2000 +++ xc/programs/Xserver/hw/xfree86/xaa/xaaPCache.c Wed Mar 8 16:32:13 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaPCache.c,v 1.24 2000/01/21 01:12:22 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaPCache.c,v 1.28 2000/02/27 21:50:20 mvojkovi Exp $ */ #include "misc.h" #include "xf86.h" @@ -15,6 +15,7 @@ #include "servermd.h" #include "xf86str.h" #include "xaa.h" +#include "xaacexp.h" #include "xaalocal.h" #include "xaawrap.h" @@ -833,9 +834,10 @@ */ next = List128->next; while(Num128 > max) { - List128->next = ListPartial; ListPartial = List128; - List128 = next; - next = List128->next; + List128->next = ListPartial; + ListPartial = List128; + if((List128 = next)) + next = List128->next; NumPartial++; Num128--; } } @@ -1069,12 +1071,21 @@ CACHEINIT(pScrn) = 1; } +#if X_BYTE_ORDER == X_BIG_ENDIAN +static CARD32 StippleMasks[4] = { + 0x80808080, + 0xC0C0C0C0, + 0x00000000, + 0xF0F0F0F0 +}; +#else static CARD32 StippleMasks[4] = { 0x01010101, 0x03030303, 0x00000000, 0x0F0F0F0F }; +#endif Bool XAACheckStippleReducibility(PixmapPtr pPixmap) @@ -1086,6 +1097,7 @@ int h = pPixmap->drawable.height; int i; CARD32 bits[8]; + CARD32 mask = SHIFT_R(0xFFFFFFFF,24); pPriv->flags |= REDUCIBILITY_CHECKED | REDUCIBLE_TO_2_COLOR; pPriv->flags &= ~REDUCIBLE_TO_8x8; @@ -1098,23 +1110,23 @@ switch(w) { case 32: while(i--) { - bits[i] = IntPtr[i] & 0x000000FF; - if( (bits[i] != ((IntPtr[i] & 0x0000FF00) >> 8)) || - (bits[i] != ((IntPtr[i] & 0x00FF0000) >> 16)) || - (bits[i] != ((IntPtr[i] & 0xFF000000) >> 24))) + bits[i] = IntPtr[i] & mask; + if( (bits[i] != SHIFT_R((IntPtr[i] & SHIFT_L(mask, 8)), 8)) || + (bits[i] != SHIFT_R((IntPtr[i] & SHIFT_L(mask,16)),16)) || + (bits[i] != SHIFT_R((IntPtr[i] & SHIFT_L(mask,24)),24))) return FALSE; } break; case 16: while(i--) { - bits[i] = IntPtr[i] & 0x000000FF; - if(bits[i] != ((IntPtr[i] & 0x0000FF00) >> 8)) + bits[i] = IntPtr[i] & mask; + if(bits[i] != ((IntPtr[i] & SHIFT_R(SHIFT_L(mask,8),8)))) return FALSE; } break; default: while(i--) - bits[i] = IntPtr[i] & 0x000000FF; + bits[i] = IntPtr[i] & mask; break; } @@ -1146,20 +1158,20 @@ pPriv->flags |= REDUCIBLE_TO_8x8; - pPriv->pattern0 = bits[0] | (bits[1]<<8) | (bits[2]<<16) | (bits[3]<<24); - pPriv->pattern1 = bits[4] | (bits[5]<<8) | (bits[6]<<16) | (bits[7]<<24); + pPriv->pattern0 = bits[0] | SHIFT_L(bits[1],8) | SHIFT_L(bits[2],16) | SHIFT_L(bits[3],24); + pPriv->pattern1 = bits[4] | SHIFT_L(bits[5],8) | SHIFT_L(bits[6],16) | SHIFT_L(bits[7],24); if(w < 8) { pPriv->pattern0 &= StippleMasks[w - 1]; pPriv->pattern1 &= StippleMasks[w - 1]; switch(w) { - case 1: pPriv->pattern0 |= (pPriv->pattern0 << 1); - pPriv->pattern1 |= (pPriv->pattern1 << 1); - case 2: pPriv->pattern0 |= (pPriv->pattern0 << 2); - pPriv->pattern1 |= (pPriv->pattern1 << 2); - case 4: pPriv->pattern0 |= (pPriv->pattern0 << 4); - pPriv->pattern1 |= (pPriv->pattern1 << 4); + case 1: pPriv->pattern0 |= SHIFT_L(pPriv->pattern0,1); + pPriv->pattern1 |= SHIFT_L(pPriv->pattern1,1); + case 2: pPriv->pattern0 |= SHIFT_L(pPriv->pattern0,2); + pPriv->pattern1 |= SHIFT_L(pPriv->pattern1,2); + case 4: pPriv->pattern0 |= SHIFT_L(pPriv->pattern0,4); + pPriv->pattern1 |= SHIFT_L(pPriv->pattern1,4); } } @@ -1899,8 +1911,8 @@ pScreenPix = (*pScreen->GetScreenPixmap)(pScreen); - pDstPix = GetScratchPixmapHeader(pScreen, pScreenPix->drawable.width, - y + h, depth, bpp, pScreenPix->devKind, + pDstPix = GetScratchPixmapHeader(pScreen, x + w, y + h, + depth, bpp, pScreenPix->devKind, pScreenPix->devPrivate.ptr); pGC = GetScratchGC(depth, pScreen); Index: xc/programs/Xserver/hw/xfree86/xaa/xaaStipple.c diff -u xc/programs/Xserver/hw/xfree86/xaa/xaaStipple.c:1.5 xc/programs/Xserver/hw/xfree86/xaa/xaaStipple.c:1.7 --- xc/programs/Xserver/hw/xfree86/xaa/xaaStipple.c:1.5 Sat Aug 14 06:50:14 1999 +++ xc/programs/Xserver/hw/xfree86/xaa/xaaStipple.c Wed Mar 8 16:32:13 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaStipple.c,v 1.5 1999/08/14 10:50:14 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaStipple.c,v 1.7 2000/02/29 17:38:32 tsi Exp $ */ #include "xaa.h" #include "xaalocal.h" @@ -37,14 +37,23 @@ #if defined(FIXEDBASE) && defined(MSBFIRST) unsigned int XAAShiftMasks[32] = { - 0x00000000, 0x00000001, 0x00000003, 0x00000007, - 0x0000000F, 0x0000001F, 0x0000003F, 0x0000007F, - 0x000000FF, 0x000001FF, 0x000003FF, 0x000007FF, - 0x00000FFF, 0x00001FFF, 0x00003FFF, 0x00007FFF, - 0x0000FFFF, 0x0001FFFF, 0x0003FFFF, 0x0007FFFF, - 0x000FFFFF, 0x001FFFFF, 0x003FFFFF, 0x007FFFFF, - 0x00FFFFFF, 0x01FFFFFF, 0x03FFFFFF, 0x07FFFFFF, - 0x0FFFFFFF, 0x1FFFFFFF, 0x3FFFFFFF, 0x7FFFFFFF + /* gcc is rather pedantic about SHIFT_R(0xFFFFFFFF,32) */ + 0x00000000 , SHIFT_R(0xFFFFFFFF,31), + SHIFT_R(0xFFFFFFFF,30), SHIFT_R(0xFFFFFFFF,29), + SHIFT_R(0xFFFFFFFF,28), SHIFT_R(0xFFFFFFFF,27), + SHIFT_R(0xFFFFFFFF,26), SHIFT_R(0xFFFFFFFF,25), + SHIFT_R(0xFFFFFFFF,24), SHIFT_R(0xFFFFFFFF,23), + SHIFT_R(0xFFFFFFFF,22), SHIFT_R(0xFFFFFFFF,21), + SHIFT_R(0xFFFFFFFF,20), SHIFT_R(0xFFFFFFFF,19), + SHIFT_R(0xFFFFFFFF,18), SHIFT_R(0xFFFFFFFF,17), + SHIFT_R(0xFFFFFFFF,16), SHIFT_R(0xFFFFFFFF,15), + SHIFT_R(0xFFFFFFFF,14), SHIFT_R(0xFFFFFFFF,13), + SHIFT_R(0xFFFFFFFF,12), SHIFT_R(0xFFFFFFFF,11), + SHIFT_R(0xFFFFFFFF,10), SHIFT_R(0xFFFFFFFF,9), + SHIFT_R(0xFFFFFFFF,8), SHIFT_R(0xFFFFFFFF,7), + SHIFT_R(0xFFFFFFFF,6), SHIFT_R(0xFFFFFFFF,5), + SHIFT_R(0xFFFFFFFF,4), SHIFT_R(0xFFFFFFFF,3), + SHIFT_R(0xFFFFFFFF,2), SHIFT_R(0xFFFFFFFF,1) }; #endif Index: xc/programs/Xserver/hw/xfree86/xf24_32bpp/cfbimage.c diff -u xc/programs/Xserver/hw/xfree86/xf24_32bpp/cfbimage.c:1.2 xc/programs/Xserver/hw/xfree86/xf24_32bpp/cfbimage.c:1.3 --- xc/programs/Xserver/hw/xfree86/xf24_32bpp/cfbimage.c:1.2 Sun Aug 29 08:21:05 1999 +++ xc/programs/Xserver/hw/xfree86/xf24_32bpp/cfbimage.c Wed Mar 8 16:32:15 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/xf24_32bpp/cfbimage.c,v 1.2 1999/08/29 12:21:05 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/xf24_32bpp/cfbimage.c,v 1.3 2000/02/25 00:21:00 mvojkovi Exp $ */ #include "X.h" #include "windowstr.h" @@ -25,6 +25,9 @@ ){ if(!w || !h) return; + if (!cfbDrawableEnabled (pDraw)) + return; + if(pDraw->bitsPerPixel != 24) { cfb32GetImage(pDraw, sx, sy, w, h, format, planemask, pdstLine); return; @@ -69,6 +72,9 @@ ){ int pitch, i; CARD8 *ptr, *ptrBase; + + if (!cfbDrawableEnabled (pDraw)) + return; if(pDraw->bitsPerPixel != 24){ cfb32GetSpans(pDraw, wMax, ppt, pwidth, nspans, pDst); Index: xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfb8_32.h diff -u xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfb8_32.h:1.3 xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfb8_32.h:1.5 --- xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfb8_32.h:1.3 Wed Mar 8 16:32:17 2000 +++ xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfb8_32.h Wed Mar 8 16:32:17 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfb8_32.h,v 1.3 2000/02/11 06:33:46 mvojkovi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfb8_32.h,v 1.5 2000/03/02 02:32:52 mvojkovi Exp $ */ #ifndef _CFB8_32_H #define _CFB8_32_H @@ -14,6 +14,8 @@ typedef struct { unsigned char key; + void (*EnableDisableFBAccess)(int scrnIndex, Bool enable); + pointer visualData; } cfb8_32ScreenRec, *cfb8_32ScreenPtr; Index: xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbcpyarea.c diff -u xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbcpyarea.c:1.4 xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbcpyarea.c:1.5 --- xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbcpyarea.c:1.4 Sun May 23 02:33:51 1999 +++ xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbcpyarea.c Wed Mar 8 16:32:17 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbcpyarea.c,v 1.4 1999/05/23 06:33:51 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbcpyarea.c,v 1.5 2000/02/29 00:17:16 mvojkovi Exp $ */ #include "X.h" #include "Xmd.h" @@ -327,7 +327,7 @@ } if(xdir < 0) { - register tmp = (width - 1) << 2; + register int tmp = (width - 1) << 2; src += tmp; dst += tmp; } @@ -371,7 +371,7 @@ } if(xdir < 0) { - register tmp = (width - 1) << 2; + register int tmp = (width - 1) << 2; src += tmp; dst += tmp; } Index: xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbgcmisc.c diff -u xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbgcmisc.c:1.2 xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbgcmisc.c:1.3 --- xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbgcmisc.c:1.2 Wed Mar 8 16:32:17 2000 +++ xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbgcmisc.c Wed Mar 8 16:32:17 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbgcmisc.c,v 1.2 2000/02/11 06:33:46 mvojkovi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbgcmisc.c,v 1.3 2000/02/29 00:17:16 mvojkovi Exp $ */ #include "X.h" #include "Xmd.h" @@ -51,8 +51,6 @@ static void cfb32DestroyGC_Underlay(GCPtr pGC) { - cfb8_32GCPtr pGCPriv = CFB8_32_GET_GC_PRIVATE(pGC); - if (pGC->freeCompClip) REGION_DESTROY(pGC->pScreen, pGC->pCompositeClip); Index: xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbimage.c diff -u xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbimage.c:1.1 xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbimage.c:1.2 --- xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbimage.c:1.1 Sat Jan 2 22:58:56 1999 +++ xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbimage.c Wed Mar 8 16:32:17 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbimage.c,v 1.1 1999/01/03 03:58:56 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbimage.c,v 1.2 2000/02/25 00:21:40 mvojkovi Exp $ */ #include "X.h" #include "windowstr.h" @@ -24,6 +24,9 @@ ){ if(!w || !h) return; + if (!cfbDrawableEnabled (pDraw)) + return; + if(pDraw->depth == 24){ cfb32GetImage(pDraw, sx, sy, w, h, format, planemask, pdstLine); return; @@ -129,6 +132,9 @@ ){ int pitch, i; CARD8 *ptr, *ptrBase; + + if (!cfbDrawableEnabled (pDraw)) + return; if(pDraw->bitsPerPixel == 1) { mfbGetSpans(pDraw, wMax, ppt, pwidth, nspans, pDst); Index: xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbpntwin.c diff -u xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbpntwin.c:1.3 xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbpntwin.c:1.4 --- xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbpntwin.c:1.3 Wed Mar 8 16:32:18 2000 +++ xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbpntwin.c Wed Mar 8 16:32:18 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbpntwin.c,v 1.3 2000/02/11 06:33:46 mvojkovi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbpntwin.c,v 1.4 2000/02/29 00:17:16 mvojkovi Exp $ */ #include "X.h" @@ -25,7 +25,6 @@ RegionPtr pRegion, int what ){ - cfb8_32ScreenPtr pScreenPriv; WindowPtr pBgWin; int xorg, yorg; Index: xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbscrinit.c diff -u xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbscrinit.c:1.6 xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbscrinit.c:1.9 --- xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbscrinit.c:1.6 Wed Mar 8 16:32:18 2000 +++ xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbscrinit.c Wed Mar 8 16:32:18 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbscrinit.c,v 1.6 2000/02/11 06:33:47 mvojkovi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbscrinit.c,v 1.9 2000/03/03 00:22:47 mvojkovi Exp $ */ #include "X.h" @@ -153,6 +153,9 @@ { cfb8_32ScreenPtr pScreenPriv = CFB8_32_GET_SCREEN_PRIVATE(pScreen); + if(pScreenPriv->visualData) + xfree(pScreenPriv->visualData); + xfree((pointer) pScreenPriv); return(cfb32CloseScreen(i, pScreen)); @@ -204,23 +207,99 @@ return TRUE; } +static void +cfb8_32EnableDisableFBAccess ( + int index, + Bool enable +){ + ScreenPtr pScreen = screenInfo.screens[index]; + cfb8_32ScreenPtr pScreenPriv = CFB8_32_GET_SCREEN_PRIVATE(pScreen); + + miOverlaySetRootClip(pScreen, enable); + + (*pScreenPriv->EnableDisableFBAccess) (index, enable); +} + +static Atom overlayVisualsAtom; + +typedef struct { + CARD32 overlay_visual; + CARD32 transparent_type; + CARD32 value; + CARD32 layer; +} overlayVisualRec; + +static void +cfb8_32SetupVisuals (ScreenPtr pScreen) +{ + cfb8_32ScreenPtr pScreenPriv = CFB8_32_GET_SCREEN_PRIVATE(pScreen); + char atomString[] = {"SERVER_OVERLAY_VISUALS"}; + overlayVisualRec *overlayVisuals; + VisualID *visuals = NULL; + int numVisuals = 0; + DepthPtr pDepth = pScreen->allowedDepths; + int numDepths = pScreen->numDepths; + int i; + + /* find depth 8 visuals */ + for(i = 0; i < numDepths; i++, pDepth++) { + if(pDepth->depth == 8) { + numVisuals = pDepth->numVids; + visuals = pDepth->vids; + break; + } + } + + if(!numVisuals || !visuals) { + ErrorF("No overlay visuals found!\n"); + return; + } + + if(!(overlayVisuals = xalloc(numVisuals * sizeof(overlayVisualRec)))) + return; + + for(i = 0; i < numVisuals; i++) { + overlayVisuals[i].overlay_visual = visuals[i]; + overlayVisuals[i].transparent_type = 1; /* transparent pixel */ + overlayVisuals[i].value = pScreenPriv->key; + overlayVisuals[i].layer = 1; + } + + overlayVisualsAtom = MakeAtom(atomString, sizeof(atomString) - 1, TRUE); + + xf86RegisterRootWindowProperty(pScreen->myNum, overlayVisualsAtom, + overlayVisualsAtom, 32, numVisuals * 4, overlayVisuals); + + pScreenPriv->visualData = (pointer)overlayVisuals; +} + Bool cfb8_32ScreenInit( ScreenPtr pScreen, pointer pbits, /* pointer to screen bitmap */ int xsize, int ysize, /* in pixels */ int dpix, int dpiy, /* dots per inch */ - int width /* pixel width of frame buffer */ + int w /* pixel width of frame buffer */ ){ cfb8_32ScreenPtr pScreenPriv; ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; - if (!cfb8_32SetupScreen(pScreen, pbits, xsize, ysize, dpix, dpiy, width)) + if (!cfb8_32SetupScreen(pScreen, pbits, xsize, ysize, dpix, dpiy, w)) return FALSE; pScreenPriv = CFB8_32_GET_SCREEN_PRIVATE(pScreen); pScreenPriv->key = pScrn->colorKey; + pScreenPriv->visualData = NULL; + - return cfb8_32FinishScreenInit( - pScreen, pbits, xsize, ysize, dpix, dpiy, width); + pScreenPriv->EnableDisableFBAccess = pScrn->EnableDisableFBAccess; + pScrn->EnableDisableFBAccess = cfb8_32EnableDisableFBAccess; + + + if(cfb8_32FinishScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, w)) + { + cfb8_32SetupVisuals(pScreen); + return TRUE; + } + return FALSE; } Index: xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbwindow.c diff -u xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbwindow.c:1.5 xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbwindow.c:1.6 --- xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbwindow.c:1.5 Wed Mar 8 16:32:18 2000 +++ xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbwindow.c Wed Mar 8 16:32:18 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbwindow.c,v 1.5 2000/02/11 06:33:47 mvojkovi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbwindow.c,v 1.6 2000/02/29 00:17:16 mvojkovi Exp $ */ #include "X.h" @@ -12,6 +12,7 @@ #include "mistruct.h" #include "regionstr.h" #include "cfbmskbits.h" +#include "mioverlay.h" /* We don't bother with cfb's fastBackground/Border so we don't Index: xc/programs/Xserver/hw/xnest/Keyboard.c diff -u xc/programs/Xserver/hw/xnest/Keyboard.c:1.1.1.4 xc/programs/Xserver/hw/xnest/Keyboard.c:1.3 --- xc/programs/Xserver/hw/xnest/Keyboard.c:1.1.1.4 Sun Sep 27 07:06:25 1998 +++ xc/programs/Xserver/hw/xnest/Keyboard.c Wed Mar 8 16:32:29 2000 @@ -12,6 +12,8 @@ is" without express or implied warranty. */ +/* $XFree86: xc/programs/Xserver/hw/xnest/Keyboard.c,v 1.3 2000/02/27 04:52:56 dawes Exp $ */ + #define NEED_EVENTS #include "X.h" #include "Xproto.h" @@ -139,7 +141,11 @@ InitKeyboardDeviceStruct(pDev, &keySyms, modmap, xnestBell, xnestChangeKeyboardControl); +#ifdef _XSERVER64 + xfree(keymap); +#else XFree(keymap); +#endif break; case DEVICE_ON: xnestEventMask |= XNEST_KEYBOARD_EVENT_MASK; Index: xc/programs/Xserver/include/servermd.h diff -u xc/programs/Xserver/include/servermd.h:3.37 xc/programs/Xserver/include/servermd.h:3.38 --- xc/programs/Xserver/include/servermd.h:3.37 Wed Mar 8 16:32:31 2000 +++ xc/programs/Xserver/include/servermd.h Wed Mar 8 16:32:31 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/include/servermd.h,v 3.37 2000/02/12 03:39:58 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/include/servermd.h,v 3.38 2000/02/22 01:04:01 mvojkovi Exp $ */ /*********************************************************** Copyright 1987, 1998 The Open Group @@ -310,6 +310,28 @@ # define PLENTIFUL_REGISTERS #endif /* alpha */ + + +#if defined(__ia64__) +# define IMAGE_BYTE_ORDER LSBFirst + +# if defined(XF86MONOVGA) || defined(XF86VGA16) || defined(XF86MONO) +# define BITMAP_BIT_ORDER MSBFirst +# else +# define BITMAP_BIT_ORDER LSBFirst +# endif + +# if defined(XF86MONOVGA) || defined(XF86VGA16) +# define BITMAP_SCANLINE_UNIT 8 +# endif + +# define GLYPHPADBYTES 4 +# define GETLEFTBITS_ALIGNMENT 1 +# define FAST_CONSTANT_OFFSET_MODE +# define LARGE_INSTRUCTION_CACHE +# define PLENTIFUL_REGISTERS + +#endif /* ia64 */ #ifdef stellar Index: xc/programs/Xserver/mi/mioverlay.c diff -u xc/programs/Xserver/mi/mioverlay.c:3.2 xc/programs/Xserver/mi/mioverlay.c:3.4 --- xc/programs/Xserver/mi/mioverlay.c:3.2 Wed Mar 8 16:32:32 2000 +++ xc/programs/Xserver/mi/mioverlay.c Wed Mar 8 16:32:32 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/mi/mioverlay.c,v 3.2 2000/02/12 05:43:26 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/mi/mioverlay.c,v 3.4 2000/02/29 00:16:03 mvojkovi Exp $ */ #include "X.h" #include "scrnintstr.h" @@ -9,6 +9,7 @@ #include "regionstr.h" #include "mivalidate.h" #include "mioverlay.h" +#include "migc.h" #include "globals.h" @@ -42,6 +43,7 @@ CreateWindowProcPtr CreateWindow; DestroyWindowProcPtr DestroyWindow; UnrealizeWindowProcPtr UnrealizeWindow; + RealizeWindowProcPtr RealizeWindow; miOverlayTransFunc MakeTransparent; int overlayDepth; Bool underlayMarked; @@ -61,6 +63,7 @@ static Bool miOverlayCreateWindow(WindowPtr); static Bool miOverlayDestroyWindow(WindowPtr); static Bool miOverlayUnrealizeWindow(WindowPtr); +static Bool miOverlayRealizeWindow(WindowPtr); static void miOverlayMarkWindow(WindowPtr); static void miOverlayReparentWindow(WindowPtr, WindowPtr); static void miOverlayRestackWindow(WindowPtr, WindowPtr); @@ -133,11 +136,13 @@ pScreenPriv->CreateWindow = pScreen->CreateWindow; pScreenPriv->DestroyWindow = pScreen->DestroyWindow; pScreenPriv->UnrealizeWindow = pScreen->UnrealizeWindow; + pScreenPriv->RealizeWindow = pScreen->RealizeWindow; pScreen->CloseScreen = miOverlayCloseScreen; pScreen->CreateWindow = miOverlayCreateWindow; pScreen->DestroyWindow = miOverlayDestroyWindow; pScreen->UnrealizeWindow = miOverlayUnrealizeWindow; + pScreen->RealizeWindow = miOverlayRealizeWindow; pScreen->ReparentWindow = miOverlayReparentWindow; pScreen->RestackWindow = miOverlayRestackWindow; @@ -166,6 +171,8 @@ pScreen->CloseScreen = pScreenPriv->CloseScreen; pScreen->CreateWindow = pScreen->CreateWindow; pScreen->DestroyWindow = pScreen->DestroyWindow; + pScreen->UnrealizeWindow = pScreen->UnrealizeWindow; + pScreen->RealizeWindow = pScreen->RealizeWindow; xfree(pScreenPriv); @@ -272,6 +279,36 @@ return result; } + +static Bool +miOverlayRealizeWindow(WindowPtr pWin) +{ + ScreenPtr pScreen = pWin->drawable.pScreen; + miOverlayScreenPtr pScreenPriv = MIOVERLAY_GET_SCREEN_PRIVATE(pScreen); + Bool result = TRUE; + + if(pScreenPriv->RealizeWindow) { + pScreen->RealizeWindow = pScreenPriv->RealizeWindow; + result = (*pScreen->RealizeWindow)(pWin); + pScreen->RealizeWindow = miOverlayRealizeWindow; + } + + /* we only need to cache the root window realization */ + + if(result && !pWin->parent && + (pWin->drawable.depth != pScreenPriv->overlayDepth)) + { + BoxRec box; + box.x1 = box.y1 = 0; + box.x2 = pWin->drawable.width; + box.y2 = pWin->drawable.height; + (*pScreenPriv->MakeTransparent)(pScreen, 1, &box); + } + + return result; +} + + static void miOverlayReparentWindow(WindowPtr pWin, WindowPtr pPriorParent) { @@ -311,7 +348,7 @@ box = REGION_EXTENTS(pScreen, &pWin->borderSize); - if(pChild = pFirst) { + if((pChild = pFirst)) { pLast = pChild->parent->lastChild; while (1) { if (pChild == pWin) markAll = TRUE; @@ -319,18 +356,25 @@ if(doUnderlay && IN_UNDERLAY(pChild)) pTree = MIOVERLAY_GET_WINDOW_TREE(pChild); - if (pChild->viewable && - (markAll || RECT_IN_REGION(pScreen, &pChild->borderSize, box))) - { - MARK_OVERLAY(pChild); - overMarked = TRUE; - if(doUnderlay && IN_UNDERLAY(pChild)) { - MARK_UNDERLAY(pChild); - underMarked = TRUE; - } - if (pChild->firstChild) { - pChild = pChild->firstChild; - continue; + if(pChild->viewable) { + if (REGION_BROKEN (pScreen, &pChild->winSize)) + SetWinSize (pChild); + if (REGION_BROKEN (pScreen, &pChild->borderSize)) + SetBorderSize (pChild); + + if (markAll || + RECT_IN_REGION(pScreen, &pChild->borderSize, box)) + { + MARK_OVERLAY(pChild); + overMarked = TRUE; + if(doUnderlay && IN_UNDERLAY(pChild)) { + MARK_UNDERLAY(pChild); + underMarked = TRUE; + } + if (pChild->firstChild) { + pChild = pChild->firstChild; + continue; + } } } while (!pChild->nextSib && (pChild != pLast)) { @@ -371,11 +415,17 @@ tLast = pTree->nextSib; while(1) { - if(tChild->pWin->viewable && - RECT_IN_REGION(pScreen, &(tChild->pWin->borderSize), box)) - { - MARK_UNDERLAY(tChild->pWin); - underMarked = TRUE; + if(tChild->pWin->viewable) { + if (REGION_BROKEN (pScreen, &tChild->pWin->winSize)) + SetWinSize (tChild->pWin); + if (REGION_BROKEN (pScreen, &tChild->pWin->borderSize)) + SetBorderSize (tChild->pWin); + + if(RECT_IN_REGION(pScreen, &(tChild->pWin->borderSize), box)) + { + MARK_UNDERLAY(tChild->pWin); + underMarked = TRUE; + } } if(tChild->lastChild) { @@ -709,11 +759,27 @@ else tChild = tParent->firstChild; - for(tWin = tChild; tWin; tWin = tWin->nextSib) { - if(tWin->valdata) - REGION_APPEND(pScreen, &totalClip, &tWin->borderClip); + if (REGION_BROKEN (pScreen, &tParent->clipList) && + !REGION_BROKEN (pScreen, &tParent->borderClip)) + { + kind = VTBroken; + REGION_COPY (pScreen, &totalClip, &tParent->borderClip); + REGION_INTERSECT (pScreen, &totalClip, &totalClip, + &tParent->pWin->winSize); + + for (tWin = tParent->firstChild; tWin != tChild; tWin = tWin->nextSib) { + if (tWin->pWin->viewable) + REGION_SUBTRACT (pScreen, &totalClip, &totalClip, + &tWin->pWin->borderSize); + } + REGION_EMPTY (pScreen, &tParent->clipList); + } else { + for(tWin = tChild; tWin; tWin = tWin->nextSib) { + if(tWin->valdata) + REGION_APPEND(pScreen, &totalClip, &tWin->borderClip); + } + REGION_VALIDATE(pScreen, &totalClip, &overlap); } - REGION_VALIDATE(pScreen, &totalClip, &overlap); if(kind != VTStack) REGION_UNION(pScreen, &totalClip, &totalClip, &tParent->clipList); @@ -1498,7 +1564,6 @@ { Bool WasViewable = (Bool)(pWin->viewable); ScreenPtr pScreen = pWin->drawable.pScreen; - WindowPtr pParent = pWin->parent; RegionPtr pOldClip, bsExposed; #ifdef DO_SAVE_UNDERS Bool dosave = FALSE; @@ -1650,7 +1715,31 @@ WindowsRestructured (); } +/* We need this as an addition since the xf86 common code doesn't + know about the second tree which is static to this file. */ + +void +miOverlaySetRootClip(ScreenPtr pScreen, Bool enable) +{ + WindowPtr pRoot = WindowTable[pScreen->myNum]; + miOverlayTreePtr pTree = MIOVERLAY_GET_WINDOW_TREE(pRoot); + MARK_UNDERLAY(pRoot); + + if(enable) { + BoxRec box; + + box.x1 = 0; + box.y1 = 0; + box.x2 = pScreen->width; + box.y2 = pScreen->height; + + REGION_RESET(pScreen, &pTree->borderClip, &box); + } else + REGION_EMPTY(pScreen, &pTree->borderClip); + + REGION_BREAK(pScreen, &pTree->clipList); +} /****************************************************************/ Index: xc/programs/Xserver/mi/mioverlay.h diff -u xc/programs/Xserver/mi/mioverlay.h:3.2 xc/programs/Xserver/mi/mioverlay.h:3.3 --- xc/programs/Xserver/mi/mioverlay.h:3.2 Wed Mar 8 16:32:32 2000 +++ xc/programs/Xserver/mi/mioverlay.h Wed Mar 8 16:32:32 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/mi/mioverlay.h,v 3.2 2000/02/12 05:43:26 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/mi/mioverlay.h,v 3.3 2000/02/29 00:16:03 mvojkovi Exp $ */ #ifndef __MIOVERLAY_H #define __MIOVERLAY_H @@ -23,5 +23,6 @@ void miOverlayComputeCompositeClip(GCPtr, WindowPtr); Bool miOverlayCopyUnderlay(ScreenPtr); void miOverlaySetTransFunction(ScreenPtr, miOverlayTransFunc); +void miOverlaySetRootClip(ScreenPtr, Bool); #endif /* __MIOVERLAY_H */ Index: xc/programs/Xserver/mi/miscrinit.c diff -u xc/programs/Xserver/mi/miscrinit.c:3.10 xc/programs/Xserver/mi/miscrinit.c:3.11 --- xc/programs/Xserver/mi/miscrinit.c:3.10 Wed Oct 13 18:33:12 1999 +++ xc/programs/Xserver/mi/miscrinit.c Wed Mar 8 16:32:32 2000 @@ -22,7 +22,7 @@ from The Open Group. */ -/* $XFree86: xc/programs/Xserver/mi/miscrinit.c,v 3.10 1999/10/13 22:33:12 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/mi/miscrinit.c,v 3.11 2000/03/07 13:37:51 dawes Exp $ */ #include "X.h" #include "servermd.h" @@ -248,6 +248,7 @@ /* PaintWindowBackground, PaintWindowBorder, CopyWindow */ pScreen->ClearToBackground = miClearToBackground; pScreen->ClipNotify = (ClipNotifyProcPtr) 0; + pScreen->RestackWindow = (RestackWindowProcPtr) 0; /* CreatePixmap, DestroyPixmap */ /* RealizeFont, UnrealizeFont */ /* CreateGC */ Index: xc/programs/Xserver/mi/mizerarc.c diff -u xc/programs/Xserver/mi/mizerarc.c:1.1.1.2 xc/programs/Xserver/mi/mizerarc.c:1.3 --- xc/programs/Xserver/mi/mizerarc.c:1.1.1.2 Sun Sep 27 04:04:22 1998 +++ xc/programs/Xserver/mi/mizerarc.c Wed Mar 8 16:32:33 2000 @@ -1,3 +1,4 @@ +/* $XFree86: xc/programs/Xserver/mi/mizerarc.c,v 1.3 2000/03/01 01:04:22 dawes Exp $ */ /************************************************************ Copyright 1989, 1998 The Open Group @@ -734,7 +735,7 @@ if (!maxPts) return; numPts = maxPts << 2; - dospans = (pGC->lineStyle != LineSolid) || (pGC->fillStyle != FillSolid); + dospans = (pGC->fillStyle != FillSolid); if (dospans) { widths = (int *)ALLOCATE_LOCAL(sizeof(int) * numPts); Index: xc/programs/Xserver/os/utils.c diff -u xc/programs/Xserver/os/utils.c:3.55 xc/programs/Xserver/os/utils.c:3.56 --- xc/programs/Xserver/os/utils.c:3.55 Sun Dec 26 19:39:58 1999 +++ xc/programs/Xserver/os/utils.c Wed Mar 8 16:32:33 2000 @@ -45,7 +45,7 @@ OR PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/os/utils.c,v 3.55 1999/12/27 00:39:58 robin Exp $ */ +/* $XFree86: xc/programs/Xserver/os/utils.c,v 3.56 2000/02/23 20:30:18 dawes Exp $ */ #ifdef WIN32 #include <X11/Xwinsock.h> @@ -121,8 +121,8 @@ Bool CoreDump; Bool noTestExtensions; -Bool noPanoramiXExtension = TRUE; #ifdef PANORAMIX +Bool noPanoramiXExtension = TRUE; Bool PanoramiXVisibilityNotifySent = FALSE; Bool PanoramiXMapped = FALSE; Bool PanoramiXWindowExposureSent = FALSE; Index: xc/programs/Xserver/os/xalloc.c diff -u xc/programs/Xserver/os/xalloc.c:3.24 xc/programs/Xserver/os/xalloc.c:3.25 --- xc/programs/Xserver/os/xalloc.c:3.24 Wed Mar 8 16:32:33 2000 +++ xc/programs/Xserver/os/xalloc.c Wed Mar 8 16:32:33 2000 @@ -25,7 +25,7 @@ Pascal Haible. */ -/* $XFree86: xc/programs/Xserver/os/xalloc.c,v 3.24 2000/02/08 13:13:35 eich Exp $ */ +/* $XFree86: xc/programs/Xserver/os/xalloc.c,v 3.25 2000/02/22 01:03:25 mvojkovi Exp $ */ /* Only used if INTERNAL_MALLOC is defined * - otherwise xalloc() in utils.c is used @@ -186,7 +186,7 @@ #define TAIL_SIZE 0 #endif -#ifdef __alpha__ +#if defined(__alpha__) || defined(__ia64__) #define MAGIC 0x1404196414071968 #define MAGIC_FREE 0x1506196615061966 #define MAGIC2 0x2515207525182079 @@ -327,7 +327,7 @@ } /* alignment check */ -#if defined(__alpha__) || defined(__sparc__) || defined(__mips__) || defined(__powerpc__) || defined(__arm32__) +#if defined(__alpha__) || defined(__sparc__) || defined(__mips__) || defined(__powerpc__) || defined(__arm32__) || defined(__ia64__) amount = (amount + (sizeof(long)-1)) & ~(sizeof(long)-1); #endif Index: xc/programs/makepsres/makepsres.man diff -u xc/programs/makepsres/makepsres.man:1.1 xc/programs/makepsres/makepsres.man:1.2 --- xc/programs/makepsres/makepsres.man:1.1 Wed Mar 8 16:32:37 2000 +++ xc/programs/makepsres/makepsres.man Wed Mar 8 16:32:37 2000 @@ -1,4 +1,4 @@ -.\" $Id: makepsres.man,v 6.1 1994/05/18 23:21:05 asente Exp $ +.\" Id: makepsres.man,v 6.1 1994/05/18 23:21:05 asente Exp $ .TH MAKEPSRES 1 "13 May 1993" "Adobe Systems" .SH NAME makepsres \- Build PostScript resource database file. Index: xc/programs/xclock/Clock.c diff -u xc/programs/xclock/Clock.c:3.5 xc/programs/xclock/Clock.c:3.6 --- xc/programs/xclock/Clock.c:3.5 Wed Mar 8 16:32:43 2000 +++ xc/programs/xclock/Clock.c Wed Mar 8 16:32:43 2000 @@ -42,13 +42,14 @@ SOFTWARE. ******************************************************************/ -/* $XFree86: xc/programs/xclock/Clock.c,v 3.5 2000/01/21 01:12:25 dawes Exp $ */ +/* $XFree86: xc/programs/xclock/Clock.c,v 3.6 2000/02/25 18:28:12 dawes Exp $ */ #include <X11/Xlib.h> #include <X11/StringDefs.h> #include <X11/IntrinsicP.h> #include "ClockP.h" #include <X11/Xosdefs.h> +#include <stdio.h> #if defined(__STDC__) && !defined(AIXV3) /* AIX is broken */ #define Const const @@ -111,7 +112,7 @@ {XtNanalog, XtCBoolean, XtRBoolean, sizeof(Boolean), offset(analog), XtRImmediate, (XtPointer) TRUE}, {XtNbrief, XtCBoolean, XtRBoolean, sizeof(Boolean), - offset(brief), XtRImmediate, (XtPointer) TRUE}, + offset(brief), XtRImmediate, (XtPointer) FALSE}, {XtNchime, XtCBoolean, XtRBoolean, sizeof(Boolean), offset(chime), XtRImmediate, (XtPointer) FALSE }, {XtNpadding, XtCMargin, XtRInt, sizeof(int), Index: xc/programs/xclock/xclock.man diff -u xc/programs/xclock/xclock.man:1.4 xc/programs/xclock/xclock.man:1.5 --- xc/programs/xclock/xclock.man:1.4 Sun Oct 4 05:40:48 1998 +++ xc/programs/xclock/xclock.man Wed Mar 8 16:32:43 2000 @@ -18,13 +18,16 @@ .\" 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/xclock/xclock.man,v 1.5 2000/02/25 18:28:12 dawes Exp $ +.\" .TH XCLOCK 1 "Release 6.4" "X Version 11" .SH NAME xclock \- analog / digital clock for X .SH SYNOPSIS .ta 8n \fBxclock\fP [ \fB\-help\fP ] [ \fB\-analog\fP ] [ \fB\-digital\fP ] -[ \fB\-chime\fP ] [ \fB\-hd\fP \fIcolor\fP ] +[ \fB\-brief\fP ] [ \fB\-chime\fP ] [ \fB\-hd\fP \fIcolor\fP ] [ \fB\-hl\fP \fIcolor\fP ] [ \fB\-update\fP \fIseconds\fP ] [ \fB\-padding\fP \fInumber\fP ] .SH DESCRIPTION @@ -47,6 +50,10 @@ .TP 8 \fB\-digital\fP or \fB\-d\fP This option indicates that a 24 hour digital clock should be used. +.TP 8 +\fB\-brief\fP +This option indicates that the digital clock should only display the hours +and minutes fields. The default is to show the full time and date information. .TP 8 .B \-chime This option indicates that the clock should chime Index: xc/programs/xditview/Dvi.c diff -u /dev/null xc/programs/xditview/Dvi.c:1.1 --- /dev/null Wed Mar 8 16:32:44 2000 +++ xc/programs/xditview/Dvi.c Wed Mar 8 16:32:44 2000 @@ -0,0 +1,500 @@ +/* $XConsortium: Dvi.c,v 1.21 94/04/17 20:43:34 keith Exp $ */ +/* + +Copyright (c) 1991 X Consortium + +Permission is hereby granted, free of charge, to 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. + +*/ +/* $XFree86: xc/programs/xditview/Dvi.c,v 1.1 2000/02/23 20:35:27 dawes Exp $ */ + + +/* + * Dvi.c - Dvi display widget + */ + +#define XtStrlen(s) ((s) ? strlen(s) : 0) + + /* The following are defined for the reader's convenience. Any + Xt..Field macro in this code just refers to some field in + one of the substructures of the WidgetRec. */ + +#include <X11/IntrinsicP.h> +#include <X11/StringDefs.h> +#include <X11/Xmu/Converters.h> +#include <stdio.h> +#include <ctype.h> +#include "DviP.h" + +/**************************************************************** + * + * Full class record constant + * + ****************************************************************/ + +/* Private Data */ +/* Note: default_font_map was too long a token for some machines... + * therefor it has been split in to and assigned to resources + * in the ClassInitialize routine. + */ +static char default_font_map_1[] = "\ +R -*-times-medium-r-normal--*-*-*-*-*-*-iso8859-1\n\ +I -*-times-medium-i-normal--*-*-*-*-*-*-iso8859-1\n\ +B -*-times-bold-r-normal--*-*-*-*-*-*-iso8859-1\n\ +F -*-times-bold-i-normal--*-*-*-*-*-*-iso8859-1\n\ +BI -*-times-bold-i-normal--*-*-*-*-*-*-iso8859-1\n\ +C -*-courier-medium-r-normal--*-*-*-*-*-*-iso8859-1\n\ +CO -*-courier-medium-o-normal--*-*-*-*-*-*-iso8859-1\n\ +CB -*-courier-bold-r-normal--*-*-*-*-*-*-iso8859-1\n\ +CF -*-courier-bold-o-normal--*-*-*-*-*-*-iso8859-1\n\ +H -*-helvetica-medium-r-normal--*-*-*-*-*-*-iso8859-1\n\ +HO -*-helvetica-medium-o-normal--*-*-*-*-*-*-iso8859-1\n\ +HB -*-helvetica-bold-r-normal--*-*-*-*-*-*-iso8859-1\n\ +HF -*-helvetica-bold-o-normal--*-*-*-*-*-*-iso8859-1\n\ +"; +static char default_font_map_2[] = "\ +N -*-new century schoolbook-medium-r-normal--*-*-*-*-*-*-iso8859-1\n\ +NI -*-new century schoolbook-medium-i-normal--*-*-*-*-*-*-iso8859-1\n\ +NB -*-new century schoolbook-bold-r-normal--*-*-*-*-*-*-iso8859-1\n\ +NF -*-new century schoolbook-bold-i-normal--*-*-*-*-*-*-iso8859-1\n\ +A -*-charter-medium-r-normal--*-*-*-*-*-*-iso8859-1\n\ +AI -*-charter-medium-i-normal--*-*-*-*-*-*-iso8859-1\n\ +AB -*-charter-bold-r-normal--*-*-*-*-*-*-iso8859-1\n\ +AF -*-charter-bold-i-normal--*-*-*-*-*-*-iso8859-1\n\ +S -*-symbol-medium-r-normal--*-*-*-*-*-*-adobe-fontspecific\n\ +S2 -*-symbol-medium-r-normal--*-*-*-*-*-*-adobe-fontspecific\n\ +"; + +#define offset(field) XtOffsetOf(DviRec, field) + +static XtResource resources[] = { + {XtNfontMap, XtCFontMap, XtRString, sizeof (char *), + offset(dvi.font_map_string), XtRString, NULL /* set in code */}, + {XtNforeground, XtCForeground, XtRPixel, sizeof (unsigned long), + offset(dvi.foreground), XtRString, XtDefaultForeground}, + {XtNpageNumber, XtCPageNumber, XtRInt, sizeof (int), + offset(dvi.requested_page), XtRImmediate, (XtPointer) 1}, + {XtNlastPageNumber, XtCLastPageNumber, XtRInt, sizeof (int), + offset (dvi.last_page), XtRImmediate, (XtPointer) 0}, + {XtNfile, XtCFile, XtRFile, sizeof (FILE *), + offset (dvi.file), XtRFile, (char *) 0}, + {XtNseek, XtCSeek, XtRBoolean, sizeof (Boolean), + offset(dvi.seek), XtRImmediate, (XtPointer) False}, + {XtNfont, XtCFont, XtRFontStruct, sizeof (XFontStruct *), + offset(dvi.default_font), XtRString, XtDefaultFont}, + {XtNbackingStore, XtCBackingStore, XtRBackingStore, sizeof (int), + offset(dvi.backing_store), XtRString, "default"}, + {XtNnoPolyText, XtCNoPolyText, XtRBoolean, sizeof (Boolean), + offset(dvi.noPolyText), XtRImmediate, (XtPointer) False}, + {XtNscreenResolution, XtCScreenResolution, XtRInt, sizeof (int), + offset(dvi.screen_resolution), XtRImmediate, (XtPointer) 75}, + {XtNpageWidth, XtCPageWidth, XtRFloat, sizeof (float), + offset(dvi.page_width), XtRString, "8.5"}, + {XtNpageHeight, XtCPageHeight, XtRFloat, sizeof (float), + offset(dvi.page_height), XtRString, "11"}, +}; + +#undef offset + +static void ClassInitialize (); +static void Initialize(), Realize (), Destroy (), Redisplay (); +static Boolean SetValues (), SetValuesHook (); +static XtGeometryResult QueryGeometry (); +static void ShowDvi (); +static void CloseFile (), OpenFile (); + +#define SuperClass ((SimpleWidgetClass)&simpleClassRec) + +DviClassRec dviClassRec = { +{ + (WidgetClass) SuperClass, /* superclass */ + "Dvi", /* class_name */ + sizeof(DviRec), /* size */ + ClassInitialize, /* class_initialize */ + NULL, /* class_part_initialize */ + FALSE, /* class_inited */ + Initialize, /* initialize */ + NULL, /* initialize_hook */ + Realize, /* realize */ + NULL, /* actions */ + 0, /* num_actions */ + resources, /* resources */ + XtNumber(resources), /* resource_count */ + NULLQUARK, /* xrm_class */ + FALSE, /* compress_motion */ + TRUE, /* compress_exposure */ + TRUE, /* compress_enterleave */ + FALSE, /* visible_interest */ + Destroy, /* destroy */ + NULL, /* resize */ + Redisplay, /* expose */ + SetValues, /* set_values */ + SetValuesHook, /* set_values_hook */ + XtInheritSetValuesAlmost, /* set_values_almost */ + NULL, /* get_values_hook */ + NULL, /* accept_focus */ + XtVersion, /* version */ + NULL, /* callback_private */ + 0, /* tm_table */ + QueryGeometry, /* query_geometry */ + XtInheritDisplayAccelerator, /* display_accelerator */ + NULL, /* extension */ +}, /* CoreClass fields initialization */ +{ + XtInheritChangeSensitive /* change_sensitive */ +}, /* SimpleClass fields initialization */ +{ + 0, /* field not used */ +}, /* DviClass fields initialization */ +}; + +WidgetClass dviWidgetClass = (WidgetClass) &dviClassRec; + +static void ClassInitialize () +{ + int len1 = strlen(default_font_map_1); + int len2 = strlen(default_font_map_2); + char *dfm = XtMalloc(len1 + len2 + 1); + char *ptr = dfm; + strcpy(ptr, default_font_map_1); ptr += len1; + strcpy(ptr, default_font_map_2); + resources[0].default_addr = dfm; + + XtAddConverter( XtRString, XtRBackingStore, XmuCvtStringToBackingStore, + NULL, 0 ); +} + +/**************************************************************** + * + * Private Procedures + * + ****************************************************************/ + +/* ARGSUSED */ +static void Initialize(request, new, args, num_args) + Widget request, new; + ArgList args; + Cardinal *num_args; +{ + DviWidget dw = (DviWidget) new; + + dw->dvi.tmpFile = 0; + dw->dvi.readingTmp = 0; + dw->dvi.ungot = 0; + dw->dvi.normal_GC = 0; + dw->dvi.file_map = 0; + dw->dvi.fonts = 0; + dw->dvi.font_map = 0; + dw->dvi.current_page = 0; + dw->dvi.font_size = 0; + dw->dvi.font_number = 0; + dw->dvi.device_resolution = 0; + dw->dvi.line_width = 0; + dw->dvi.line_style = 0; + dw->dvi.font = 0; + dw->dvi.display_enable = 0; + dw->dvi.scale = 0.0; + dw->dvi.state = 0; + dw->dvi.cache.index = 0; + dw->dvi.cache.font = 0; + RequestDesiredSize (dw); +} + +static void +Realize (w, valueMask, attrs) + Widget w; + XtValueMask *valueMask; + XSetWindowAttributes *attrs; +{ + DviWidget dw = (DviWidget) w; + XGCValues values; + + if (dw->dvi.backing_store != Always + WhenMapped + NotUseful) { + attrs->backing_store = dw->dvi.backing_store; + *valueMask |= CWBackingStore; + } + XtCreateWindow (w, (unsigned)InputOutput, (Visual *) CopyFromParent, + *valueMask, attrs); + values.foreground = dw->dvi.foreground; + dw->dvi.normal_GC = XCreateGC (XtDisplay (w), XtWindow (w), + GCForeground, &values); + if (dw->dvi.file) + OpenFile (dw); + ParseFontMap (dw); +} + +static void +Destroy(w) + Widget w; +{ + DviWidget dw = (DviWidget) w; + + XFreeGC (XtDisplay (w), dw->dvi.normal_GC); + DestroyFontMap (dw->dvi.font_map); + DestroyFileMap (dw->dvi.file_map); +} + +/* + * Repaint the widget window + */ + +/* ARGSUSED */ +static void +Redisplay(w, event, region) + Widget w; + XEvent *event; + Region region; +{ + DviWidget dw = (DviWidget) w; + XRectangle extents; + + XClipBox (region, &extents); + dw->dvi.extents.x1 = extents.x; + dw->dvi.extents.y1 = extents.y; + dw->dvi.extents.x2 = extents.x + extents.width; + dw->dvi.extents.y2 = extents.y + extents.height; + ShowDvi (dw); +} + +RequestDesiredSize (dw) + DviWidget dw; +{ + XtWidgetGeometry req, rep; + + dw->dvi.desired_width = dw->dvi.page_width * + dw->dvi.screen_resolution; + dw->dvi.desired_height = dw->dvi.page_height * + dw->dvi.screen_resolution; + req.request_mode = CWWidth|CWHeight; + req.width = dw->dvi.desired_width; + req.height = dw->dvi.desired_height; + XtMakeGeometryRequest ((Widget) dw, &req, &rep); +} + +/* + * Set specified arguments into widget + */ +/* ARGSUSED */ +static Boolean +SetValues (wcurrent, wrequest, wnew, args, num_args) + Widget wcurrent, wrequest, wnew; + ArgList args; + Cardinal *num_args; +{ + DviWidget current = (DviWidget) wcurrent; + DviWidget request = (DviWidget) wrequest; + DviWidget new = (DviWidget) wnew; + Boolean redisplay = FALSE; + char *new_map; + int cur, req; + + req = request->dvi.requested_page; + cur = current->dvi.requested_page; + if (cur != req) { + if (req < 1) + req = 1; + if (request->dvi.file) + { + if (current->dvi.last_page != 0 && + req > current->dvi.last_page) + req = current->dvi.last_page; + } + if (cur != req) + redisplay = TRUE; + new->dvi.requested_page = req; + } + + if (current->dvi.font_map_string != request->dvi.font_map_string) { + new_map = XtMalloc (strlen (request->dvi.font_map_string) + 1); + if (new_map) { + redisplay = TRUE; + strcpy (new_map, request->dvi.font_map_string); + new->dvi.font_map_string = new_map; + if (current->dvi.font_map_string) + XtFree (current->dvi.font_map_string); + current->dvi.font_map_string = 0; + ParseFontMap (new); + } + } + if (current->dvi.screen_resolution != request->dvi.screen_resolution) + { + ResetFonts (new); + new->dvi.line_width = -1; + } + if (request->dvi.device_resolution) + new->dvi.scale = ((double) request->dvi.screen_resolution) / + ((double) request->dvi.device_resolution); + if (current->dvi.page_width != request->dvi.page_width || + current->dvi.page_height != request->dvi.page_height || + current->dvi.screen_resolution != request->dvi.screen_resolution) + { + RequestDesiredSize (new); + redisplay = TRUE; + } + return redisplay; +} + +/* + * use the set_values_hook entry to check when + * the file is set + */ + +static Boolean +SetValuesHook (widget, args, num_argsp) + Widget widget; + ArgList args; + Cardinal *num_argsp; +{ + DviWidget dw = (DviWidget) widget; + Cardinal i; + + for (i = 0; i < *num_argsp; i++) { + if (!strcmp (args[i].name, XtNfile)) { + CloseFile (dw); + OpenFile (dw); + return TRUE; + } + } + return FALSE; +} + +static void CloseFile (dw) + DviWidget dw; +{ + if (dw->dvi.tmpFile) + fclose (dw->dvi.tmpFile); + ForgetPagePositions (dw); +} + +static void OpenFile (dw) + DviWidget dw; +{ + char tmpName[sizeof ("/tmp/dviXXXXXX")]; +#ifdef HAS_MKSTEMP + int fd; +#endif + + dw->dvi.tmpFile = 0; + if (!dw->dvi.seek) { + strcpy (tmpName, "/tmp/dviXXXXXX"); +#ifndef HAS_MKSTEMP + mktemp (tmpName); + dw->dvi.tmpFile = fopen (tmpName, "w+"); +#else + fd = mkstemp(tmpName); + dw->dvi.tmpFile = fdopen(fd, "w+"); +#endif + unlink (tmpName); + } + if (dw->dvi.requested_page < 1) + dw->dvi.requested_page = 1; + dw->dvi.last_page = 0; +} + +static XtGeometryResult +QueryGeometry (w, request, geometry_return) + Widget w; + XtWidgetGeometry *request, *geometry_return; +{ + XtGeometryResult ret; + DviWidget dw = (DviWidget) w; + + ret = XtGeometryYes; + if ((int)request->width < dw->dvi.desired_width + || (int)request->height < dw->dvi.desired_height) + ret = XtGeometryAlmost; + geometry_return->width = dw->dvi.desired_width; + geometry_return->height = dw->dvi.desired_height; + geometry_return->request_mode = CWWidth|CWHeight; + return ret; +} + +SetDeviceResolution (dw, resolution) + DviWidget dw; + int resolution; +{ + if (resolution != dw->dvi.device_resolution) { + dw->dvi.device_resolution = resolution; + dw->dvi.scale = ((double) dw->dvi.screen_resolution) / + ((double) resolution); + if (dw->dvi.state) + dw->dvi.state->line_width = + FontSizeInDevice(dw, dw->dvi.state->line_width/10.0); + } +} + +static void +ShowDvi (dw) + DviWidget dw; +{ + int i; + long file_position; + + if (!dw->dvi.file) + return; + + if (dw->dvi.requested_page < 1) + dw->dvi.requested_page = 1; + + if (dw->dvi.last_page != 0 && dw->dvi.requested_page > dw->dvi.last_page) + dw->dvi.requested_page = dw->dvi.last_page; + + file_position = SearchPagePosition (dw, dw->dvi.requested_page); + if (file_position != -1) { + FileSeek(dw, file_position); + dw->dvi.current_page = dw->dvi.requested_page; + } else { + for (i=dw->dvi.requested_page; i > 0; i--) { + file_position = SearchPagePosition (dw, i); + if (file_position != -1) + break; + } + if (file_position == -1) + file_position = 0; + FileSeek (dw, file_position); + + dw->dvi.current_page = i; + + dw->dvi.display_enable = 0; + while (dw->dvi.current_page != dw->dvi.requested_page) { + dw->dvi.current_page = ParseInput (dw); + /* + * at EOF, seek back to the begining of this page. + */ + if (feof (dw->dvi.file)) { + file_position = SearchPagePosition (dw, + dw->dvi.current_page); + if (file_position != -1) + FileSeek (dw, file_position); + break; + } + } + } + + dw->dvi.display_enable = 1; + ParseInput (dw); + if (dw->dvi.last_page && dw->dvi.requested_page > dw->dvi.last_page) + dw->dvi.requested_page = dw->dvi.last_page; +} Index: xc/programs/xditview/Dvi.h diff -u /dev/null xc/programs/xditview/Dvi.h:1.1 --- /dev/null Wed Mar 8 16:32:44 2000 +++ xc/programs/xditview/Dvi.h Wed Mar 8 16:32:44 2000 @@ -0,0 +1,48 @@ +/* +* $XConsortium: Dvi.h,v 1.5 91/07/25 21:33:53 keith Exp $ +*/ + +#ifndef _XtDvi_h +#define _XtDvi_h + +/*********************************************************************** + * + * Dvi Widget + * + ***********************************************************************/ + +/* Parameters: + + Name Class RepType Default Value + ---- ----- ------- ------------- + background Background pixel White + foreground Foreground Pixel Black + fontMap FontMap char * ... + pageNumber PageNumber int 1 +*/ + +#define XtNfontMap "fontMap" +#define XtNpageNumber "pageNumber" +#define XtNlastPageNumber "lastPageNumber" +#define XtNnoPolyText "noPolyText" +#define XtNseek "seek" +#define XtNscreenResolution "screenResolution" +#define XtNpageWidth "pageWidth" +#define XtNpageHeight "pageHeight" + +#define XtCFontMap "FontMap" +#define XtCPageNumber "PageNumber" +#define XtCLastPageNumber "LastPageNumber" +#define XtCNoPolyText "NoPolyText" +#define XtCSeek "Seek" +#define XtCScreenResolution "ScreenResolution" +#define XtCPageWidth "PageWidth" +#define XtCPageHeight "PageHeight" + +typedef struct _DviRec *DviWidget; /* completely defined in DviPrivate.h */ +typedef struct _DviClassRec *DviWidgetClass; /* completely defined in DviPrivate.h */ + +extern WidgetClass dviWidgetClass; + +#endif /* _XtDvi_h */ +/* DON'T ADD STUFF AFTER THIS #endif */ Index: xc/programs/xditview/DviChar.c diff -u /dev/null xc/programs/xditview/DviChar.c:1.1 --- /dev/null Wed Mar 8 16:32:44 2000 +++ xc/programs/xditview/DviChar.c Wed Mar 8 16:32:44 2000 @@ -0,0 +1,676 @@ +/* $XConsortium: DviChar.c,v 1.7 91/07/31 00:39:31 keith Exp $ */ + +/* + * DviChar.c + * + * Map DVI (ditrof output) character names to + * font indexes and back + */ + +# include <X11/Intrinsic.h> +# include "DviChar.h" + +# define allocHash() ((DviCharNameHash *) XtMalloc (sizeof (DviCharNameHash))) + +struct map_list { + struct map_list *next; + DviCharNameMap *map; +}; + +static struct map_list *world; + +static int standard_maps_loaded = 0; +static void load_standard_maps (); +static int hash_name (); +static void dispose_hash(), compute_hash(); + +DviCharNameMap * +DviFindMap (encoding) + char *encoding; +{ + struct map_list *m; + + if (!standard_maps_loaded) + load_standard_maps (); + for (m = world; m; m=m->next) + if (!strcmp (m->map->encoding, encoding)) + return m->map; + return 0; +} + +void +DviRegisterMap (map) + DviCharNameMap *map; +{ + struct map_list *m; + + if (!standard_maps_loaded) + load_standard_maps (); + for (m = world; m; m = m->next) + if (!strcmp (m->map->encoding, map->encoding)) + break; + if (!m) { + m = (struct map_list *) XtMalloc (sizeof *m); + m->next = world; + world = m; + } + dispose_hash (map); + m->map = map; + compute_hash (map); +} + +static void +dispose_hash (map) + DviCharNameMap *map; +{ + DviCharNameHash **buckets; + DviCharNameHash *h, *next; + int i; + + buckets = map->buckets; + for (i = 0; i < DVI_HASH_SIZE; i++) { + for (h = buckets[i]; h; h=next) { + next = h->next; + XtFree ((char *) h); + } + } +} + +static int +hash_name (name) + char *name; +{ + int i = 0; + + while (*name) + i = (i << 1) ^ *name++; + if (i < 0) + i = -i; + return i; +} + +static void +compute_hash (map) + DviCharNameMap *map; +{ + DviCharNameHash **buckets; + int c, s, i; + DviCharNameHash *h; + + buckets = map->buckets; + for (i = 0; i < DVI_HASH_SIZE; i++) + buckets[i] = 0; + for (c = 0; c < DVI_MAP_SIZE; c++) + for (s = 0; s < DVI_MAX_SYNONYMS; s++) { + if (!map->dvi_names[c][s]) + break; + i = hash_name (map->dvi_names[c][s]) % DVI_HASH_SIZE; + h = allocHash (); + h->next = buckets[i]; + buckets[i] = h; + h->name = map->dvi_names[c][s]; + h->position = c; + } + +} + +int +DviCharIndex (map, name) + DviCharNameMap *map; + char *name; +{ + int i; + DviCharNameHash *h; + + i = hash_name (name) % DVI_HASH_SIZE; + for (h = map->buckets[i]; h; h=h->next) + if (!strcmp (h->name, name)) + return h->position; + return -1; +} + +static DviCharNameMap ISO8859_1_map = { + "iso8859-1", + 0, +{ +{ 0, /* 0 */}, +{ 0, /* 1 */}, +{ 0, /* 2 */}, +{ 0, /* 3 */}, +{ 0, /* 4 */}, +{ 0, /* 5 */}, +{ 0, /* 6 */}, +{ 0, /* 7 */}, +{ 0, /* 8 */}, +{ 0, /* 9 */}, +{ 0, /* 10 */}, +{ 0, /* 11 */}, +{ 0, /* 12 */}, +{ 0, /* 13 */}, +{ 0, /* 14 */}, +{ 0, /* 15 */}, +{ 0, /* 16 */}, +{ 0, /* 17 */}, +{ 0, /* 18 */}, +{ 0, /* 19 */}, +{ 0, /* 20 */}, +{ 0, /* 21 */}, +{ 0, /* 22 */}, +{ 0, /* 23 */}, +{ 0, /* 24 */}, +{ 0, /* 25 */}, +{ 0, /* 26 */}, +{ 0, /* 27 */}, +{ 0, /* 28 */}, +{ 0, /* 29 */}, +{ 0, /* 30 */}, +{ 0, /* 31 */}, +{ 0, /* 32 */}, +{ "!", /* 33 */}, +{ "\"", /* 34 */}, +{ "#", /* 35 */}, +{ "$", /* 36 */}, +{ "%", /* 37 */}, +{ "&", /* 38 */}, +{ "'", /* 39 */}, +{ "(", /* 40 */}, +{ ")", /* 41 */}, +{ "*", /* 42 */}, +{ "+", /* 43 */}, +{ ",", /* 44 */}, +{ "-","\\-", /* 45 */}, +{ ".", /* 46 */}, +{ "/","sl", /* 47 */}, +{ "0", /* 48 */}, +{ "1", /* 49 */}, +{ "2", /* 50 */}, +{ "3", /* 51 */}, +{ "4", /* 52 */}, +{ "5", /* 53 */}, +{ "6", /* 54 */}, +{ "7", /* 55 */}, +{ "8", /* 56 */}, +{ "9", /* 57 */}, +{ ":", /* 58 */}, +{ ";", /* 59 */}, +{ "<", /* 60 */}, +{ "=","eq", /* 61 */}, +{ ">", /* 62 */}, +{ "?", /* 63 */}, +{ "@", /* 64 */}, +{ "A", /* 65 */}, +{ "B", /* 66 */}, +{ "C", /* 67 */}, +{ "D", /* 68 */}, +{ "E", /* 69 */}, +{ "F", /* 70 */}, +{ "G", /* 71 */}, +{ "H", /* 72 */}, +{ "I", /* 73 */}, +{ "J", /* 74 */}, +{ "K", /* 75 */}, +{ "L", /* 76 */}, +{ "M", /* 77 */}, +{ "N", /* 78 */}, +{ "O", /* 79 */}, +{ "P", /* 80 */}, +{ "Q", /* 81 */}, +{ "R", /* 82 */}, +{ "S", /* 83 */}, +{ "T", /* 84 */}, +{ "U", /* 85 */}, +{ "V", /* 86 */}, +{ "W", /* 87 */}, +{ "X", /* 88 */}, +{ "Y", /* 89 */}, +{ "Z", /* 90 */}, +{ "[", /* 91 */}, +{ "\\", /* 92 */}, +{ "]", /* 93 */}, +{ "a^", /* 94 */}, +{ "_","ru","ul", /* 95 */}, +{ "`", /* 96 */}, +{ "a", /* 97 */}, +{ "b", /* 98 */}, +{ "c", /* 99 */}, +{ "d", /* 100 */}, +{ "e", /* 101 */}, +{ "f", /* 102 */}, +{ "g", /* 103 */}, +{ "h", /* 104 */}, +{ "i", /* 105 */}, +{ "j", /* 106 */}, +{ "k", /* 107 */}, +{ "l", /* 108 */}, +{ "m", /* 109 */}, +{ "n", /* 110 */}, +{ "o", /* 111 */}, +{ "p", /* 112 */}, +{ "q", /* 113 */}, +{ "r", /* 114 */}, +{ "s", /* 115 */}, +{ "t", /* 116 */}, +{ "u", /* 117 */}, +{ "v", /* 118 */}, +{ "w", /* 119 */}, +{ "x", /* 120 */}, +{ "y", /* 121 */}, +{ "z", /* 122 */}, +{ "{", /* 123 */}, +{ "|","or" /* 124 */}, +{ "}", /* 125 */}, +{ "a~","ap" /* 126 */}, +{ 0, /* 127 */}, +{ 0, /* 128 */}, +{ 0, /* 129 */}, +{ 0, /* 130 */}, +{ 0, /* 131 */}, +{ 0, /* 132 */}, +{ 0, /* 133 */}, +{ 0, /* 134 */}, +{ 0, /* 135 */}, +{ 0, /* 136 */}, +{ 0, /* 137 */}, +{ 0, /* 138 */}, +{ 0, /* 139 */}, +{ 0, /* 140 */}, +{ 0, /* 141 */}, +{ 0, /* 142 */}, +{ 0, /* 143 */}, +{ 0, /* 144 */}, +{ 0, /* 145 */}, +{ 0, /* 146 */}, +{ 0, /* 147 */}, +{ 0, /* 148 */}, +{ 0, /* 149 */}, +{ 0, /* 150 */}, +{ 0, /* 151 */}, +{ 0, /* 152 */}, +{ 0, /* 153 */}, +{ 0, /* 154 */}, +{ 0, /* 155 */}, +{ 0, /* 156 */}, +{ 0, /* 157 */}, +{ 0, /* 158 */}, +{ 0, /* 159 */}, +{ 0, /* 160 */}, +{ "I!", /* 161 */}, +{ "ct", /* 162 */}, +{ "po", /* 163 */}, +{ "cu", /* 164 */}, +{ "$J", /* 165 */}, +{ 0, /* 166 */}, +{ "sc", /* 167 */}, +{ 0, /* 168 */}, +{ "co", /* 169 */}, +{ 0, /* 170 */}, +{ "d<", /* 171 */}, +{ "no", /* 172 */}, +{ "hy", /* 173 */}, +{ "rg", /* 174 */}, +{ "ma", /* 175 */}, +{ "de", /* 176 */}, +{ "+-", /* 177 */}, +{ 0, /* 178 */}, +{ 0, /* 179 */}, +{ "aa", /* 180 */}, +{ "*m", /* 181 */}, +{ "pp", /* 182 */}, +{ 0, /* 183 */}, +{ "cd", /* 184 */}, +{ 0, /* 185 */}, +{ 0, /* 186 */}, +{ "d>", /* 187 */}, +{ "14", /* 188 */}, +{ "12", /* 189 */}, +{ "34", /* 190 */}, +{ "I?", /* 191 */}, +{ 0, /* 192 */}, +{ 0, /* 193 */}, +{ 0, /* 194 */}, +{ 0, /* 195 */}, +{ 0, /* 196 */}, +{ 0, /* 197 */}, +{ "AE", /* 198 */}, +{ 0, /* 199 */}, +{ 0, /* 200 */}, +{ 0, /* 201 */}, +{ 0, /* 202 */}, +{ 0, /* 203 */}, +{ 0, /* 204 */}, +{ 0, /* 205 */}, +{ 0, /* 206 */}, +{ 0, /* 207 */}, +{ 0, /* 208 */}, +{ 0, /* 209 */}, +{ 0, /* 210 */}, +{ 0, /* 211 */}, +{ 0, /* 212 */}, +{ 0, /* 213 */}, +{ 0, /* 214 */}, +{ "mu", /* 215 */}, +{ "O/", /* 216 */}, +{ 0, /* 217 */}, +{ 0, /* 218 */}, +{ 0, /* 219 */}, +{ 0, /* 220 */}, +{ 0, /* 221 */}, +{ 0, /* 222 */}, +{ "ss", /* 223 */}, +{ 0, /* 224 */}, +{ 0, /* 225 */}, +{ 0, /* 226 */}, +{ 0, /* 227 */}, +{ 0, /* 228 */}, +{ 0, /* 229 */}, +{ "ae", /* 230 */}, +{ 0, /* 231 */}, +{ 0, /* 232 */}, +{ 0, /* 233 */}, +{ 0, /* 234 */}, +{ 0, /* 235 */}, +{ 0, /* 236 */}, +{ 0, /* 237 */}, +{ 0, /* 238 */}, +{ 0, /* 239 */}, +{ 0, /* 240 */}, +{ 0, /* 241 */}, +{ 0, /* 242 */}, +{ 0, /* 243 */}, +{ 0, /* 244 */}, +{ 0, /* 245 */}, +{ 0, /* 246 */}, +{ 0, /* 247 */}, +{ 0, /* 248 */}, +{ 0, /* 249 */}, +{ 0, /* 250 */}, +{ 0, /* 251 */}, +{ 0, /* 252 */}, +{ 0, /* 253 */}, +{ 0, /* 254 */}, +{ 0, /* 255 */}, +}, +{ +{ "fi", "fi", }, +{ "fl", "fl", }, +{ "ff", "ff", }, +{ "Fi", "ffi", }, +{ "Fl", "ffl", }, +{ 0, 0, }, +} +}; + +static DviCharNameMap Adobe_Symbol_map = { + "adobe-fontspecific", + 1, +{ +{ 0, /* 0 */}, +{ 0, /* 1 */}, +{ 0, /* 2 */}, +{ 0, /* 3 */}, +{ 0, /* 4 */}, +{ 0, /* 5 */}, +{ 0, /* 6 */}, +{ 0, /* 7 */}, +{ 0, /* 8 */}, +{ 0, /* 9 */}, +{ 0, /* 10 */}, +{ 0, /* 11 */}, +{ 0, /* 12 */}, +{ 0, /* 13 */}, +{ 0, /* 14 */}, +{ 0, /* 15 */}, +{ 0, /* 16 */}, +{ 0, /* 17 */}, +{ 0, /* 18 */}, +{ 0, /* 19 */}, +{ 0, /* 20 */}, +{ 0, /* 21 */}, +{ 0, /* 22 */}, +{ 0, /* 23 */}, +{ 0, /* 24 */}, +{ 0, /* 25 */}, +{ 0, /* 26 */}, +{ 0, /* 27 */}, +{ 0, /* 28 */}, +{ 0, /* 29 */}, +{ 0, /* 30 */}, +{ 0, /* 31 */}, +{ 0, /* 32 */}, +{ "!", /* 33 */}, +{ "fa", /* 34 */}, +{ "#", /* 35 */}, +{ "te", /* 36 */}, +{ "%", /* 37 */}, +{ "&", /* 38 */}, +{ "cm", /* 39 */}, +{ "(", /* 40 */}, +{ ")", /* 41 */}, +{ "**", /* 42 */}, +{ "+","pl", /* 43 */}, +{ ",", /* 44 */}, +{ "-","mi","\\-", /* 45 */}, +{ ".", /* 46 */}, +{ "/","sl", /* 47 */}, +{ "0", /* 48 */}, +{ "1", /* 49 */}, +{ "2", /* 50 */}, +{ "3", /* 51 */}, +{ "4", /* 52 */}, +{ "5", /* 53 */}, +{ "6", /* 54 */}, +{ "7", /* 55 */}, +{ "8", /* 56 */}, +{ "9", /* 57 */}, +{ ":", /* 58 */}, +{ ";", /* 59 */}, +{ "<", /* 60 */}, +{ "=","eq", /* 61 */}, +{ ">", /* 62 */}, +{ "?", /* 63 */}, +{ "=~", /* 64 */}, +{ "*A", /* 65 */}, +{ "*B", /* 66 */}, +{ "*C", /* 67 */}, +{ "*D", /* 68 */}, +{ "*E", /* 69 */}, +{ "*F", /* 70 */}, +{ "*G", /* 71 */}, +{ "*Y", /* 72 */}, +{ "*I", /* 73 */}, +{ 0, /* 74 */}, +{ "*K", /* 75 */}, +{ "*L", /* 76 */}, +{ "*M", /* 77 */}, +{ "*N", /* 78 */}, +{ "*O", /* 79 */}, +{ "*P", /* 80 */}, +{ "*H", /* 81 */}, +{ "*R", /* 82 */}, +{ "*S", /* 83 */}, +{ "*T", /* 84 */}, +{ "*U", /* 85 */}, +{ "ts", /* 86 */}, +{ "*W", /* 87 */}, +{ "*C", /* 88 */}, +{ "*Q", /* 89 */}, +{ "*Z", /* 90 */}, +{ "[", /* 91 */}, +{ "tf", /* 92 */}, +{ "]", /* 93 */}, +{ "bt", /* 94 */}, +{ "ul", /* 95 */}, +{ "rn", /* 96 */}, +{ "*a", /* 97 */}, +{ "*b", /* 98 */}, +{ "*x", /* 99 */}, +{ "*d", /* 100 */}, +{ "*e", /* 101 */}, +{ "*f", /* 102 */}, +{ "*g", /* 103 */}, +{ "*y", /* 104 */}, +{ "*i", /* 105 */}, +{ 0, /* 106 */}, +{ "*k", /* 107 */}, +{ "*l", /* 108 */}, +{ "*m", /* 109 */}, +{ "*n", /* 110 */}, +{ "*o", /* 111 */}, +{ "*p", /* 112 */}, +{ "*h", /* 113 */}, +{ "*r", /* 114 */}, +{ "*s", /* 115 */}, +{ "*t", /* 116 */}, +{ "*u", /* 117 */}, +{ 0, /* 118 */}, +{ "*w", /* 119 */}, +{ "*c", /* 120 */}, +{ "*q", /* 121 */}, +{ "*z", /* 122 */}, +{ "{", /* 123 */}, +{ "|", /* 124 */}, +{ "}", /* 125 */}, +{ "a~","ap", /* 126 */}, +{ 0, /* 127 */}, +{ 0, /* 128 */}, +{ 0, /* 129 */}, +{ 0, /* 130 */}, +{ 0, /* 131 */}, +{ 0, /* 132 */}, +{ 0, /* 133 */}, +{ 0, /* 134 */}, +{ 0, /* 135 */}, +{ 0, /* 136 */}, +{ 0, /* 137 */}, +{ 0, /* 138 */}, +{ 0, /* 139 */}, +{ 0, /* 140 */}, +{ 0, /* 141 */}, +{ 0, /* 142 */}, +{ 0, /* 143 */}, +{ 0, /* 144 */}, +{ 0, /* 145 */}, +{ 0, /* 146 */}, +{ 0, /* 147 */}, +{ 0, /* 148 */}, +{ 0, /* 149 */}, +{ 0, /* 150 */}, +{ 0, /* 151 */}, +{ 0, /* 152 */}, +{ 0, /* 153 */}, +{ 0, /* 154 */}, +{ 0, /* 155 */}, +{ 0, /* 156 */}, +{ 0, /* 157 */}, +{ 0, /* 158 */}, +{ 0, /* 159 */}, +{ 0, /* 160 */}, +{ 0, /* 161 */}, +{ "fm","mt", /* 162 */}, +{ "<=", /* 163 */}, +{ "/","sl" /* 164 */}, +{ "if", /* 165 */}, +{ 0, /* 166 */}, +{ "Cc", /* 167 */}, +{ "Cd", /* 168 */}, +{ "Ch", /* 169 */}, +{ "Cs", /* 170 */}, +{ "<>", /* 171 */}, +{ "<-", /* 172 */}, +{ "ua", /* 173 */}, +{ "->", /* 174 */}, +{ "da", /* 175 */}, +{ "de", /* 176 */}, +{ "+-", /* 177 */}, +{ "sd", /* 178 */}, +{ ">=", /* 179 */}, +{ "mu", /* 180 */}, +{ "pt", /* 181 */}, +{ "pd", /* 182 */}, +{ "bu", /* 183 */}, +{ "di", /* 184 */}, +{ "!=", /* 185 */}, +{ "==", /* 186 */}, +{ "~=", /* 187 */}, +{ "..", /* 188 */}, +{ "br", /* 189 */}, +{ "em", /* 190 */}, +{ "cr", /* 191 */}, +{ "al", /* 192 */}, +{ 0, /* 193 */}, +{ 0, /* 194 */}, +{ 0, /* 195 */}, +{ "ax", /* 196 */}, +{ "a+", /* 197 */}, +{ "es", /* 198 */}, +{ "ca", /* 199 */}, +{ "cu", /* 200 */}, +{ "sp", /* 201 */}, +{ "ip", /* 202 */}, +{ "!s", /* 203 */}, +{ "sb", /* 204 */}, +{ "ib", /* 205 */}, +{ "mo", /* 206 */}, +{ "!m", /* 207 */}, +{ "ag", /* 208 */}, +{ "gr", /* 209 */}, +{ 0, /* 210 */}, +{ 0, /* 211 */}, +{ 0, /* 212 */}, +{ 0, /* 213 */}, +{ "sr", /* 214 */}, +{ "m.", /* 215 */}, +{ "no", /* 216 */}, +{ "an", /* 217 */}, +{ "lo", /* 218 */}, +{ "io", /* 219 */}, +{ "<:", /* 220 */}, +{ "u=", /* 221 */}, +{ ":>", /* 222 */}, +{ "d=", /* 223 */}, +{ "dm", /* 224 */}, +{ "L<", /* 225 */}, +{ "rg", /* 226 */}, +{ "co", /* 227 */}, +{ "tm", /* 228 */}, +{ 0, /* 229 */}, +{ 0, /* 230 */}, +{ 0, /* 231 */}, +{ 0, /* 232 */}, +{ "lc", /* 233 */}, +{ 0, /* 234 */}, +{ "lf", /* 235 */}, +{ "lt", /* 236 */}, +{ "lk", /* 237 */}, +{ "lb", /* 238 */}, +{ "bv", /* 239 */}, +{ "AL", /* 240 */}, +{ "R>", /* 241 */}, +{ "is", /* 242 */}, +{ 0, /* 243 */}, +{ 0, /* 244 */}, +{ 0, /* 245 */}, +{ 0, /* 246 */}, +{ 0, /* 247 */}, +{ 0, /* 248 */}, +{ "rc", /* 249 */}, +{ 0, /* 250 */}, +{ "rf", /* 251 */}, +{ "rt", /* 252 */}, +{ "rk", /* 253 */}, +{ "rb", /* 254 */}, +{ 0, /* 255 */}, +}, +{ +{ 0, 0 }, +} +}; + +static void +load_standard_maps () +{ + standard_maps_loaded = 1; + DviRegisterMap (&ISO8859_1_map); + DviRegisterMap (&Adobe_Symbol_map); +} + Index: xc/programs/xditview/DviChar.h diff -u /dev/null xc/programs/xditview/DviChar.h:1.1 --- /dev/null Wed Mar 8 16:32:45 2000 +++ xc/programs/xditview/DviChar.h Wed Mar 8 16:32:45 2000 @@ -0,0 +1,41 @@ +/* + * DviChar.h + * + * descriptions for mapping dvi names to + * font indexes and back. Dvi fonts are all + * 256 elements (actually only 256-32 are usable). + * + * The encoding names are taken from X - + * case insensitive, a dash seperating the + * CharSetRegistry from the CharSetEncoding + */ + +# define DVI_MAX_SYNONYMS 10 +# define DVI_MAP_SIZE 256 +# define DVI_HASH_SIZE 256 +# define DVI_MAX_LIGATURES 16 + +typedef struct _dviCharNameHash { + struct _dviCharNameHash *next; + char *name; + int position; +} DviCharNameHash; + +typedef struct _dviCharNameMap { + char *encoding; + int special; + char *dvi_names[DVI_MAP_SIZE][DVI_MAX_SYNONYMS]; + char *ligatures[DVI_MAX_LIGATURES][2]; + DviCharNameHash *buckets[DVI_HASH_SIZE]; +} DviCharNameMap; + +extern DviCharNameMap *DviFindMap ( /* char *encoding */ ); +extern void DviRegisterMap ( /* DviCharNameMap *map */ ); +#ifdef NOTDEF +extern char *DviCharName ( /* DviCharNameMap *map, int index, int synonym */ ); +#else +#define DviCharName(map,index,synonym) ((map)->dvi_names[index][synonym]) +#endif +extern int DviCharIndex ( /* DviCharNameMap *map, char *name */ ); +extern unsigned char *DviCharIsLigature ( /* DviCharNameMap *map, char *name */ ); +extern void ResetFonts ( /* DviWidget dw */ ); Index: xc/programs/xditview/DviP.h diff -u /dev/null xc/programs/xditview/DviP.h:1.1 --- /dev/null Wed Mar 8 16:32:45 2000 +++ xc/programs/xditview/DviP.h Wed Mar 8 16:32:45 2000 @@ -0,0 +1,212 @@ +/* + * $XConsortium: DviP.h,v 1.10 92/02/11 01:27:15 keith Exp $ + */ + +/* + * DviP.h - Private definitions for Dvi widget + */ + +#ifndef _XtDviP_h +#define _XtDviP_h + +#include "Dvi.h" +#include <X11/Xaw/SimpleP.h> +#include "DviChar.h" + +/*********************************************************************** + * + * Dvi Widget Private Data + * + ***********************************************************************/ + +/************************************ + * + * Class structure + * + ***********************************/ + +/* + * New fields for the Dvi widget class record + */ + +typedef struct _DviClass { + int makes_compiler_happy; /* not used */ +} DviClassPart; + +/* + * Full class record declaration + */ + +typedef struct _DviClassRec { + CoreClassPart core_class; + SimpleClassPart simple_class; + DviClassPart command_class; +} DviClassRec; + +extern DviClassRec dviClassRec; + +/*************************************** + * + * Instance (widget) structure + * + **************************************/ + +/* + * a list of fonts we've used for this widget + */ + +typedef struct _dviFontSizeList { + struct _dviFontSizeList *next; + int size; + char *x_name; + XFontStruct *font; + int doesnt_exist; +} DviFontSizeList; + +typedef struct _dviFontList { + struct _dviFontList *next; + char *dvi_name; + char *x_name; + int dvi_number; + Boolean initialized; + Boolean scalable; + DviFontSizeList *sizes; + DviCharNameMap *char_map; +} DviFontList; + +typedef struct _dviFontMap { + struct _dviFontMap *next; + char *dvi_name; + char *x_name; +} DviFontMap; + +#define DVI_TEXT_CACHE_SIZE 256 +#define DVI_CHAR_CACHE_SIZE 1024 + +typedef struct _dviCharCache { + XTextItem cache[DVI_TEXT_CACHE_SIZE]; + char char_cache[DVI_CHAR_CACHE_SIZE]; + int index; + int max; + int char_index; + int font_size; + int font_number; + XFontStruct *font; + int start_x, start_y; + int x, y; +} DviCharCache; + +typedef struct _dviState { + struct _dviState *next; + int font_size; + int font_bound; + int font_number; + int line_style; + int line_width; + int x; + int y; +} DviState; + +typedef struct _dviFileMap { + struct _dviFileMap *next; + long position; + int page_number; +} DviFileMap; + +/* + * New fields for the Dvi widget record + */ + +typedef struct { + /* + * resource specifiable items + */ + char *font_map_string; + unsigned long foreground; + int requested_page; + int last_page; + FILE *file; + Boolean seek; /* file is "seekable" */ + XFontStruct *default_font; + int backing_store; + Boolean noPolyText; + int screen_resolution; + float page_width; + float page_height; + /* + * private state + */ + FILE *tmpFile; /* used when reading stdin */ + char readingTmp; /* reading now from tmp */ + char ungot; /* have ungetc'd a char */ + GC normal_GC; + DviFileMap *file_map; + DviFontList *fonts; + DviFontMap *font_map; + int current_page; + int font_size; + int font_number; + int device_resolution; + int line_width; + int line_style; + int desired_width; + int desired_height; + XFontStruct *font; + int display_enable; + double scale; /* device coordinates to pixels */ + struct ExposedExtents { + int x1, y1, x2, y2; + } extents; + DviState *state; + DviCharCache cache; +} DviPart; + +#define DviGetIn(dw,cp)\ + (dw->dvi.tmpFile ? (\ + DviGetAndPut (dw, cp) \ + ) :\ + (*cp = getc (dw->dvi.file))\ +) + +#define DviGetC(dw, cp)\ + (dw->dvi.readingTmp ? (\ + ((*cp = getc (dw->dvi.tmpFile)) == EOF) ? (\ + fseek (dw->dvi.tmpFile, 0l, 2),\ + (dw->dvi.readingTmp = 0),\ + DviGetIn (dw,cp)\ + ) : (\ + *cp\ + )\ + ) : (\ + DviGetIn(dw,cp)\ + )\ +) + +#define DviUngetC(dw, c)\ + (dw->dvi.readingTmp ? (\ + ungetc (c, dw->dvi.tmpFile)\ + ) : ( \ + (dw->dvi.ungot = 1),\ + ungetc (c, dw->dvi.file))) + +#define ToX(dw,device) ((int) ((device) * (dw)->dvi.scale + 0.5)) +#define ToDevice(dw,x) ((int) ((x) / (dw)->dvi.scale + 0.5)) +#define FontSizeInPixels(dw,size) ((int) ((size) * (dw)->dvi.screen_resolution / 72)) +#define FontSizeInDevice(dw,size) ((int) ((size) * (dw)->dvi.device_resolution / 72)) + +/* + * Full widget declaration + */ + +typedef struct _DviRec { + CorePart core; + SimplePart simple; + DviPart dvi; +} DviRec; + +extern XFontStruct *QueryFont (); + +extern DviCharNameMap *QueryFontMap (); +#endif /* _XtDviP_h */ + + Index: xc/programs/xditview/Imakefile diff -u /dev/null xc/programs/xditview/Imakefile:1.1 --- /dev/null Wed Mar 8 16:32:45 2000 +++ xc/programs/xditview/Imakefile Wed Mar 8 16:32:45 2000 @@ -0,0 +1,26 @@ +XCOMM $XConsortium: Imakefile,v 1.15 94/04/04 21:49:55 gildea Exp $ + + + + +XCOMM $XFree86: xc/programs/xditview/Imakefile,v 1.1 2000/02/23 20:35:28 dawes Exp $ + + +#define PassCDebugFlags 'CDEBUGFLAGS=$(CDEBUGFLAGS)' +#if HasMkstemp + DEFINES = -DHAS_MKSTEMP +#endif + DEPLIBS = XawClientDepLibs +LOCAL_LIBRARIES = XawClientLibs + SYS_LIBRARIES = MathLibrary + BITMAPS = ldblarrow rdblarrow + SRCS = xditview.c Dvi.c draw.c font.c lex.c page.c parse.c\ + XFontName.c DviChar.c + OBJS = xditview.o Dvi.o draw.o font.o lex.o page.o parse.o\ + XFontName.o DviChar.o + +ComplexProgramTarget(xditview) +BuildIncludes($(BITMAPS),X11/bitmaps,../..) +InstallAppDefaults(Xditview) +InstallAppDefaultsLong(Xdit-chrtr,Xditview-chrtr) +InstallMultipleFlags($(BITMAPS),$(INCDIR)/bitmaps,$(INSTINCFLAGS)) Index: xc/programs/xditview/Menu.h diff -u /dev/null xc/programs/xditview/Menu.h:1.1 --- /dev/null Wed Mar 8 16:32:45 2000 +++ xc/programs/xditview/Menu.h Wed Mar 8 16:32:45 2000 @@ -0,0 +1,46 @@ +/* + * $XConsortium: Menu.h,v 1.2 89/07/21 14:22:10 jim Exp $ + */ + +#ifndef _XtMenu_h +#define _XtMenu_h + +/*********************************************************************** + * + * Menu Widget + * + ***********************************************************************/ + +/* Parameters: + + Name Class RepType Default Value + ---- ----- ------- ------------- + background Background pixel White + border BorderColor pixel Black + borderWidth BorderWidth int 1 + height Height int 120 + mappedWhenManaged MappedWhenManaged Boolean True + reverseVideo ReverseVideo Boolean False + width Width int 120 + x Position int 0 + y Position int 0 + +*/ + +#define XtNmenuEntries "menuEntries" +#define XtNhorizontalPadding "horizontalPadding" +#define XtNverticalPadding "verticalPadding" +#define XtNselection "Selection" + +#define XtCMenuEntries "MenuEntries" +#define XtCPadding "Padding" +#define XtCSelection "Selection" + +typedef struct _MenuRec *MenuWidget; /* completely defined in MenuPrivate.h */ +typedef struct _MenuClassRec *MenuWidgetClass; /* completely defined in MenuPrivate.h */ + +extern WidgetClass menuWidgetClass; + +extern Widget XawMenuCreate (); +#endif /* _XtMenu_h */ +/* DON'T ADD STUFF AFTER THIS #endif */ Index: xc/programs/xditview/XFontName.c diff -u /dev/null xc/programs/xditview/XFontName.c:1.1 --- /dev/null Wed Mar 8 16:32:45 2000 +++ xc/programs/xditview/XFontName.c Wed Mar 8 16:32:45 2000 @@ -0,0 +1,256 @@ +/* + * XFontName.c + * + * build/parse X Font name strings + */ + +# include <X11/Xlib.h> +# include <X11/Intrinsic.h> +# include "XFontName.h" +#include <ctype.h> + +static char * +extractStringField (name, buffer, size, attrp, bit) + char *name; + char *buffer; + int size; + unsigned int *attrp; + unsigned int bit; +{ + char *buf = buffer; + + if (!*name) + return 0; + while (*name && *name != '-' && size > 0) { + *buf++ = *name++; + --size; + } + if (size <= 0) + return 0; + *buf = '\0'; + if (buffer[0] != '*' || buffer[1] != '\0') + *attrp |= bit; + if (*name == '-') + return name+1; + return name; +} + +static char * +extractUnsignedField (name, result, attrp, bit) + char *name; + unsigned int *result; + unsigned int *attrp; + unsigned int bit; +{ + char buf[256]; + char *c; + unsigned int i; + + name = extractStringField (name, buf, sizeof (buf), attrp, bit); + if (!name) + return 0; + if (!(*attrp & bit)) + return name; + i = 0; + for (c = buf; *c; c++) { + if (!isdigit (*c)) + return 0; + i = i * 10 + (*c - '0'); + } + *result = i; + return name; +} + +Bool +XParseFontName (fontNameString, fontName, fontNameAttributes) + XFontNameString fontNameString; + XFontName *fontName; + unsigned int *fontNameAttributes; +{ + char *name = fontNameString; + XFontName temp; + unsigned int attributes = 0; + +#define GetString(field,bit)\ + if (!(name = extractStringField \ + (name, temp.field, sizeof (temp.field),\ + &attributes, bit))) \ + return False; + +#define GetUnsigned(field,bit)\ + if (!(name = extractUnsignedField \ + (name, &temp.field, \ + &attributes, bit))) \ + return False; + + GetString (Registry, FontNameRegistry) + GetString (Foundry, FontNameFoundry) + GetString (FamilyName, FontNameFamilyName) + GetString (WeightName, FontNameWeightName) + GetString (Slant, FontNameSlant) + GetString (SetwidthName, FontNameSetwidthName) + GetString (AddStyleName, FontNameAddStyleName) + GetUnsigned (PixelSize, FontNamePixelSize) + GetUnsigned (PointSize, FontNamePointSize) + GetUnsigned (ResolutionX, FontNameResolutionX) + GetUnsigned (ResolutionY, FontNameResolutionY) + GetString (Spacing, FontNameSpacing) + GetUnsigned (AverageWidth, FontNameAverageWidth) + GetString (CharSetRegistry, FontNameCharSetRegistry) + if (!*name) { + temp.CharSetEncoding[0] = '\0'; + attributes |= FontNameCharSetEncoding; + } else { + GetString (CharSetEncoding, FontNameCharSetEncoding) + } + *fontName = temp; + *fontNameAttributes = attributes; + return True; +} + +static char * +utoa (u, s, size) + unsigned int u; + char *s; + int size; +{ + char *t; + + t = s + size; + *--t = '\0'; + do + *--t = (u % 10) + '0'; + while (u /= 10); + return t; +} + +Bool +XFormatFontName (fontName, fontNameAttributes, fontNameString) + XFontName *fontName; + unsigned int fontNameAttributes; + XFontNameString fontNameString; +{ + XFontNameString tmp; + char *name = tmp, *f; + int left = sizeof (tmp) - 1; + char number[32]; + +#define PutString(field, bit)\ + f = (fontNameAttributes & bit) ? \ + fontName->field \ + : "*"; \ + if ((left -= strlen (f)) < 0) \ + return False; \ + while (*f) \ + if ((*name++ = *f++) == '-') \ + return False; +#define PutHyphen()\ + if (--left < 0) \ + return False; \ + *name++ = '-'; + +#define PutUnsigned(field, bit) \ + f = (fontNameAttributes & bit) ? \ + utoa (fontName->field, number, sizeof (number)) \ + : "*"; \ + if ((left -= strlen (f)) < 0) \ + return False; \ + while (*f) \ + *name++ = *f++; + + PutString (Registry, FontNameRegistry) + PutHyphen (); + PutString (Foundry, FontNameFoundry) + PutHyphen (); + PutString (FamilyName, FontNameFamilyName) + PutHyphen (); + PutString (WeightName, FontNameWeightName) + PutHyphen (); + PutString (Slant, FontNameSlant) + PutHyphen (); + PutString (SetwidthName, FontNameSetwidthName) + PutHyphen (); + PutString (AddStyleName, FontNameAddStyleName) + PutHyphen (); + PutUnsigned (PixelSize, FontNamePixelSize) + PutHyphen (); + PutUnsigned (PointSize, FontNamePointSize) + PutHyphen (); + PutUnsigned (ResolutionX, FontNameResolutionX) + PutHyphen (); + PutUnsigned (ResolutionY, FontNameResolutionY) + PutHyphen (); + PutString (Spacing, FontNameSpacing) + PutHyphen (); + PutUnsigned (AverageWidth, FontNameAverageWidth) + PutHyphen (); + PutString (CharSetRegistry, FontNameCharSetRegistry) + PutHyphen (); + PutString (CharSetEncoding, FontNameCharSetEncoding) + *name = '\0'; + strcpy (fontNameString, tmp); + return True; +} + +Bool +XCompareFontName (name1, name2, fontNameAttributes) + XFontName *name1, *name2; + unsigned int fontNameAttributes; +{ +#define CompareString(field,bit) \ + if (fontNameAttributes & bit) \ + if (strcmp (name1->field, name2->field)) \ + return False; + +#define CompareUnsigned(field,bit) \ + if (fontNameAttributes & bit) \ + if (name1->field != name2->field) \ + return False; + + CompareString (Registry, FontNameRegistry) + CompareString (Foundry, FontNameFoundry) + CompareString (FamilyName, FontNameFamilyName) + CompareString (WeightName, FontNameWeightName) + CompareString (Slant, FontNameSlant) + CompareString (SetwidthName, FontNameSetwidthName) + CompareString (AddStyleName, FontNameAddStyleName) + CompareUnsigned (PixelSize, FontNamePixelSize) + CompareUnsigned (PointSize, FontNamePointSize) + CompareUnsigned (ResolutionX, FontNameResolutionX) + CompareUnsigned (ResolutionY, FontNameResolutionY) + CompareString (Spacing, FontNameSpacing) + CompareUnsigned (AverageWidth, FontNameAverageWidth) + CompareString (CharSetRegistry, FontNameCharSetRegistry) + CompareString (CharSetEncoding, FontNameCharSetEncoding) + return True; +} + +XCopyFontName (name1, name2, fontNameAttributes) + XFontName *name1, *name2; + unsigned int fontNameAttributes; +{ +#define CopyString(field,bit) \ + if (fontNameAttributes & bit) \ + strcpy (name2->field, name1->field); + +#define CopyUnsigned(field,bit) \ + if (fontNameAttributes & bit) \ + name2->field = name1->field; + + CopyString (Registry, FontNameRegistry) + CopyString (Foundry, FontNameFoundry) + CopyString (FamilyName, FontNameFamilyName) + CopyString (WeightName, FontNameWeightName) + CopyString (Slant, FontNameSlant) + CopyString (SetwidthName, FontNameSetwidthName) + CopyString (AddStyleName, FontNameAddStyleName) + CopyUnsigned (PixelSize, FontNamePixelSize) + CopyUnsigned (PointSize, FontNamePointSize) + CopyUnsigned (ResolutionX, FontNameResolutionX) + CopyUnsigned (ResolutionY, FontNameResolutionY) + CopyString (Spacing, FontNameSpacing) + CopyUnsigned (AverageWidth, FontNameAverageWidth) + CopyString (CharSetRegistry, FontNameCharSetRegistry) + CopyString (CharSetEncoding, FontNameCharSetEncoding) + return True; +} Index: xc/programs/xditview/XFontName.h diff -u /dev/null xc/programs/xditview/XFontName.h:1.1 --- /dev/null Wed Mar 8 16:32:45 2000 +++ xc/programs/xditview/XFontName.h Wed Mar 8 16:32:45 2000 @@ -0,0 +1,45 @@ +typedef struct _xFontName { + char Registry[256]; + char Foundry[256]; + char FamilyName[256]; + char WeightName[256]; + char Slant[3]; + char SetwidthName[256]; + char AddStyleName[256]; + unsigned int PixelSize; + unsigned int PointSize; + unsigned int ResolutionX; + unsigned int ResolutionY; + char Spacing[2]; + unsigned int AverageWidth; + char CharSetRegistry[256]; + char CharSetEncoding[256]; +} XFontName; + +#define FontNameRegistry (1<<0) +#define FontNameFoundry (1<<1) +#define FontNameFamilyName (1<<2) +#define FontNameWeightName (1<<3) +#define FontNameSlant (1<<4) +#define FontNameSetwidthName (1<<5) +#define FontNameAddStyleName (1<<6) +#define FontNamePixelSize (1<<7) +#define FontNamePointSize (1<<8) +#define FontNameResolutionX (1<<9) +#define FontNameResolutionY (1<<10) +#define FontNameSpacing (1<<11) +#define FontNameAverageWidth (1<<12) +#define FontNameCharSetRegistry (1<<13) +#define FontNameCharSetEncoding (1<<14) + +#define SlantRoman "R" +#define SlantItalic "I" +#define SlantOblique "O" +#define SlantReverseItalic "RI" +#define SlantReverseOblique "RO" + +#define SpacingMonoSpaced "M" +#define SpacingProportional "P" +#define SpacingCharacterCell "C" + +typedef char XFontNameString[256]; Index: xc/programs/xditview/Xdit-chrtr.ad diff -u /dev/null xc/programs/xditview/Xdit-chrtr.ad:1.1 --- /dev/null Wed Mar 8 16:32:45 2000 +++ xc/programs/xditview/Xdit-chrtr.ad Wed Mar 8 16:32:45 2000 @@ -0,0 +1,25 @@ +#include "Xditview" +*Dvi.fontMap:\ +R -*-charter-medium-r-normal--*-*-*-*-*-*-iso8859-1\n\ +I -*-charter-medium-i-normal--*-*-*-*-*-*-iso8859-1\n\ +B -*-charter-bold-r-normal--*-*-*-*-*-*-iso8859-1\n\ +F -*-charter-bold-i-normal--*-*-*-*-*-*-iso8859-1\n\ +BI -*-charter-bold-i-normal--*-*-*-*-*-*-iso8859-1\n\ +C -*-courier-medium-r-normal--*-*-*-*-*-*-iso8859-1\n\ +CO -*-courier-medium-o-normal--*-*-*-*-*-*-iso8859-1\n\ +CB -*-courier-bold-r-normal--*-*-*-*-*-*-iso8859-1\n\ +CF -*-courier-bold-o-normal--*-*-*-*-*-*-iso8859-1\n\ +H -*-helvetica-medium-r-normal--*-*-*-*-*-*-iso8859-1\n\ +HO -*-helvetica-medium-o-normal--*-*-*-*-*-*-iso8859-1\n\ +HB -*-helvetica-bold-r-normal--*-*-*-*-*-*-iso8859-1\n\ +HF -*-helvetica-bold-o-normal--*-*-*-*-*-*-iso8859-1\n\ +N -*-new century schoolbook-medium-r-normal--*-*-*-*-*-*-iso8859-1\n\ +NI -*-new century schoolbook-medium-i-normal--*-*-*-*-*-*-iso8859-1\n\ +NB -*-new century schoolbook-bold-r-normal--*-*-*-*-*-*-iso8859-1\n\ +NF -*-new century schoolbook-bold-i-normal--*-*-*-*-*-*-iso8859-1\n\ +A -*-charter-medium-r-normal--*-*-*-*-*-*-iso8859-1\n\ +AI -*-charter-medium-i-normal--*-*-*-*-*-*-iso8859-1\n\ +AB -*-charter-bold-r-normal--*-*-*-*-*-*-iso8859-1\n\ +AF -*-charter-bold-i-normal--*-*-*-*-*-*-iso8859-1\n\ +S -*-symbol-medium-r-normal--*-*-*-*-*-*-adobe-fontspecific\n\ +S2 -*-symbol-medium-r-normal--*-*-*-*-*-*-adobe-fontspecific\n Index: xc/programs/xditview/Xditview.ad diff -u /dev/null xc/programs/xditview/Xditview.ad:1.1 --- /dev/null Wed Mar 8 16:32:45 2000 +++ xc/programs/xditview/Xditview.ad Wed Mar 8 16:32:45 2000 @@ -0,0 +1,96 @@ +Xditview.geometry: 600x800 +*MenuButton*Font: -*-helvetica-bold-r-normal--*-120-*-*-*-*-iso8859-1 +*SimpleMenu*Font: -*-helvetica-bold-r-normal--*-120-*-*-*-*-iso8859-1 +*Text*Font: -*-courier-medium-r-normal--*-120-*-*-*-*-iso8859-1 + +*paned.allowResize: true +*paned.?.showGrip: false +*paned.?.skipAdjust: false +*paned.form.porthole.width: 600 +*paned.form.porthole.height: 800 +*paned.label.skipAdjust: true + +*MenuButton.shapeStyle: oval +*Command.shapeStyle: oval + +*fileMenuButton.label: File +*fileMenuButton.leftBitmap: menu12 +*fileMenuButton.menuName: fileMenu + +*fileMenu.openFile.label: Open File +*fileMenu.revisitFile.label: Reopen File +*fileMenu.setResolution.label: Set Screen Resolution +*fileMenu.quit.label: Quit + +*prevButton.bitmap: ldblarrow +*prevButton.internalHeight: 0 +*prevButton.Translations: #override <BtnUp>: PreviousPage() unset() + +*pageNumber.translations: #override\ + Ctrl<Key>J: SetPageNumber()\n\ + Ctrl<Key>M: SetPageNumber()\n\ + <Key>Linefeed: SetPageNumber()\n\ + <Key>Return: SetPageNumber()\n\ + Ctrl<Key>O: Noop()\n\ + Meta<Key>I: Noop()\n\ + Ctrl<Key>N: Noop()\n\ + Ctrl<Key>P: Noop()\n\ + Ctrl<Key>Z: Noop()\n\ + Meta<Key>Z: Noop()\n\ + <Key>space: NextPage()\n\ + Ctrl<Key>v: NextPage()\n\ + Meta<Key>v: PreviousPage()\n\ + <Key>Next: NextPage()\n\ + <Key>Prior: PreviousPage()\n\ + <Key>Find: OpenFile() +*pageNumber*editType: edit + +*nextButton.bitmap: rdblarrow +*nextButton.internalHeight: 0 +*nextButton.translations: #override <BtnUp>: NextPage() unset() + +*viewport.allowResize: false +*viewport.forceBars: true +*viewport.allowHoriz: true +*viewport.allowVert: true + +*dvi.translations: #augment \ + <Btn1Down>: XawPositionSimpleMenu(popupMenu) MenuPopup(popupMenu)\n\ + Ctrl<Key>v: NextPage()\n\ + Meta<Key>v: PreviousPage()\n\ + <Key>space: NextPage()\n\ + <Key>Next: NextPage()\n\ + <Key>Prior: PreviousPage()\n\ + <Key>Find: OpenFile() +*dvi.baseTranslations: #augment \ + <Btn1Down>: XawPositionSimpleMenu(popupMenu) MenuPopup(popupMenu)\n\ + <Key>space: NextPage()\n\ + Ctrl<Key>v: NextPage()\n\ + Meta<Key>v: PreviousPage()\n\ + <Key>Next: NextPage()\n\ + <Key>Prior: PreviousPage()\n\ + <Key>Find: OpenFile() +*popupMenu.nextPage.label: Next Page +*popupMenu.previousPage.label: Previous Page +*popupMenu.setResolution.label: Set Screen Resolution +*popupMenu.openFile.label: Open File +*popupMenu.revisitFile.label: Reopen File +*popupMenu.quit.label: Quit + +*promptShell.allowShellResize: true +*promptShell.promptDialog.value.translations: #override\ + <Key>Return: Accept() +*promptShell.promptDialog.value.baseTranslations: #override\ + <Key>Return: Accept() + +*promptShell.promptDialog.accept.label: Accept +*promptShell.promptDialog.accept.translations: #override\ + <BtnUp>: Accept() unset() +*promptShell.promptDialog.accept.baseTranslations: #override \ + <BtnUp>: Accept() unset() + +*promptShell.promptDialog.cancel.label: Cancel +*promptShell.promptDialog.cancel.translations: #override \ + <BtnUp>: Cancel() unset() +*promptShell.promptDialog.cancel.baseTranslations: #override \ + <BtnUp>: Cancel() unset() Index: xc/programs/xditview/draw.c diff -u /dev/null xc/programs/xditview/draw.c:1.1 --- /dev/null Wed Mar 8 16:32:45 2000 +++ xc/programs/xditview/draw.c Wed Mar 8 16:32:45 2000 @@ -0,0 +1,496 @@ +/* + * $XConsortium: draw.c,v 1.8 94/04/17 20:43:35 gildea Exp $ + * $XFree86: xc/programs/xditview/draw.c,v 1.1 2000/02/23 20:35:30 dawes Exp $ + * +Copyright (c) 1991 X Consortium + +Permission is hereby granted, free of charge, to 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. + * + */ + +/* + * draw.c + * + * accept dvi function calls and translate to X + */ + +/* + Support for ditroff drawing commands added: lines, circles, ellipses, + arcs and splines. Splines are approximated as short lines by iterating + a simple approximation algorithm. This seems good enough for previewing. + + David Evans <dre@cs.nott.ac.uk>, 14th March, 1990 +*/ + +#include <X11/Xos.h> +#include <X11/IntrinsicP.h> +#include <X11/StringDefs.h> +#include <stdio.h> +#include <ctype.h> +#include <math.h> +#include "DviP.h" + +#if !defined(X_NOT_STDC_ENV) || defined(SCO) +#include <stdlib.h> +#endif + +#ifndef M_PI +#define M_PI 3.14159265358979323846264338327950 +#endif + +/* the following are for use in the spline approximation algorithm */ + +typedef struct Point { + double x; + double y; + struct Point *next; +} Point; + +#define ITERATIONS 10 /* iterations to approximate spline */ + +#define midx(p,q) ((p->x + q->x) / 2) /* mid x point on pq */ +#define midy(p,q) ((p->y + q->y) / 2) /* mid y point on pq */ + +#define length(p,q) sqrt(((q->x - p->x)*(q->x - p->x)) \ + + ((q->y - p->y)*(q->y - p->y))) /* length of pq */ + +Point *spline = (Point *)NULL; /* head of spline linked list */ +Point *MakePoint(); + + +HorizontalMove(dw, delta) + DviWidget dw; + int delta; +{ + dw->dvi.state->x += delta; +} + +HorizontalGoto(dw, NewPosition) + DviWidget dw; + int NewPosition; +{ + dw->dvi.state->x = NewPosition; +} + +VerticalMove(dw, delta) + DviWidget dw; + int delta; +{ + dw->dvi.state->y += delta; +} + +VerticalGoto(dw, NewPosition) + DviWidget dw; + int NewPosition; +{ + dw->dvi.state->y = NewPosition; +} + +FlushCharCache (dw) + DviWidget dw; +{ + int xx, yx; + + xx = ToX(dw, dw->dvi.state->x); + yx = ToX(dw, dw->dvi.state->y); + if (dw->dvi.cache.char_index != 0) + XDrawText (XtDisplay (dw), XtWindow (dw), dw->dvi.normal_GC, + dw->dvi.cache.start_x, dw->dvi.cache.start_y, + dw->dvi.cache.cache, dw->dvi.cache.index + 1); + dw->dvi.cache.index = 0; + dw->dvi.cache.max = DVI_TEXT_CACHE_SIZE; + if (dw->dvi.noPolyText) + dw->dvi.cache.max = 1; + dw->dvi.cache.char_index = 0; + dw->dvi.cache.cache[0].nchars = 0; + dw->dvi.cache.start_x = dw->dvi.cache.x = xx; + dw->dvi.cache.start_y = dw->dvi.cache.y = yx; +} + +ClearPage (dw) + DviWidget dw; +{ + if (dw->dvi.display_enable) + XClearWindow (XtDisplay (dw), XtWindow (dw)); +} + +SetGCForDraw (dw) + DviWidget dw; +{ + int lw; + if (dw->dvi.state->line_style != dw->dvi.line_style || + dw->dvi.state->line_width != dw->dvi.line_width) + { + lw = ToX(dw, dw->dvi.state->line_width); + if (lw <= 1) + lw = 0; + XSetLineAttributes (XtDisplay (dw), dw->dvi.normal_GC, + lw, LineSolid, CapButt, JoinMiter); + dw->dvi.line_style = dw->dvi.state->line_style; + dw->dvi.line_width = dw->dvi.state->line_width; + } +} + +DrawLine (dw, x, y) + DviWidget dw; + int x, y; +{ + if (dw->dvi.display_enable) + XDrawLine (XtDisplay (dw), XtWindow (dw), dw->dvi.normal_GC, + ToX(dw, dw->dvi.state->x), ToX(dw, dw->dvi.state->y), + ToX(dw, dw->dvi.state->x + x), ToX(dw,dw->dvi.state->y + y)); + dw->dvi.state->x += x; + dw->dvi.state->y += y; +} + +DrawCircle (dw, diameter) + DviWidget dw; + int diameter; +{ + if (dw->dvi.display_enable) + XDrawArc (XtDisplay (dw), XtWindow (dw), dw->dvi.normal_GC, + ToX(dw, dw->dvi.state->x), + ToX(dw, dw->dvi.state->y - (diameter / 2)), + ToX(dw, diameter), ToX(dw, diameter), 0, 360 * 64); + dw->dvi.state->x += diameter; +} + +DrawEllipse (dw, a, b) + DviWidget dw; + int a, b; +{ + if (dw->dvi.display_enable) + XDrawArc (XtDisplay (dw), XtWindow (dw), dw->dvi.normal_GC, + ToX(dw, dw->dvi.state->x), ToX(dw, dw->dvi.state->y - (b / 2)), + ToX(dw,a), ToX(dw,b), 0, 360 * 64); + dw->dvi.state->x += a; +} + + +/* Convert angle in degrees to 64ths of a degree */ + +ConvertAngle(theta) +int theta; +{ + return(theta * 64); +} + +DrawArc (dw, x0, y0, x1, y1) + DviWidget dw; + int x0, y0, x1, y1; +{ + int xc, yc, x2, y2, r; + int angle1, angle2; + + /* centre */ + xc = dw->dvi.state->x + x0; + yc = dw->dvi.state->y + y0; + + /* to */ + x2 = xc + x1; + y2 = yc + y1; + + dw->dvi.state->x = x2; + dw->dvi.state->y = y2; + + if (dw->dvi.display_enable) { + + /* radius */ + r = (int)sqrt((float) x1 * x1 + (float) y1 * y1); + + /* start and finish angles */ + if (x0 == 0) { + if (y0 >= 0) + angle1 = 90; + else + angle1 = 270; + } + else { + angle1 = (int) (atan((double)(y0) / (double)(x0)) * 180 / M_PI); + if (x0 > 0) + angle1 = 180 - angle1; + else + angle1 = -angle1; + } + + if (x1 == 0) { + if (y1 <= 0) + angle2 = 90; + else + angle2 = 270; + } + else { + angle2 = (int) (atan((double)(y1) / (double)(x1)) * 180 / M_PI); + if (x1 < 0) + angle2 = 180 - angle2; + else + angle2 = -angle2; + } + + if (angle1 < 0) + angle1 += 360; + if (angle2 < 0) + angle2 += 360; + + if (angle2 < angle1) + angle1 -= 360; + angle2 = angle2 - angle1; + + angle1 = ConvertAngle(angle1); + angle2 = ConvertAngle(angle2); + + XDrawArc (XtDisplay (dw), XtWindow (dw), dw->dvi.normal_GC, + ToX(dw, xc - r), ToX(dw, yc - r), + ToX(dw, 2 * r), ToX(dw, 2 * r), + angle1, angle2); + } +} + +/* copy next non-blank string from p to temp, update p */ + +char *getstr(p, temp) +char *p, *temp; +{ + while (*p == ' ' || *p == '\t' || *p == '\n') + p++; + if (*p == '\0') { + temp[0] = 0; + return((char *)NULL); + } + while (*p != ' ' && *p != '\t' && *p != '\n' && *p != '\0') + *temp++ = *p++; + *temp = '\0'; + return(p); +} + + +/* Draw a spline by approximating with short lines. */ + +/*ARGSUSED*/ +DrawSpline (dw, s, len) + DviWidget dw; + char *s; + int len; +{ + int n; + + /* get coordinate pairs into spline linked list */ + if ((n = GetSpline(s)) <= 0) + return; + + ApproxSpline(n); + + DrawSplineSegments(dw); +} + + +/* Parse string s to create a linked list of Point's with spline */ +/* as its head. Return the number of coordinate pairs found. */ + +GetSpline(s) + char *s; +{ + double x, y, x1, y1; + int n = 0; + Point *pt; + char *p = s, d[10]; + + if (!*p) + return(n); + + pt = spline = MakePoint(0.0, 0.0); + n = 1; + x = y = 0.0; + p = s; + while (p && *p) { + if ((p = getstr(p, d)) == (char *)NULL) + break; + x1 = x + atof(d); + if ((p = getstr(p, d)) == (char *)NULL) + break; + y1 = y + atof(d); + pt->next = MakePoint(x1, y1); + pt = pt->next; + x = pt->x; + y = pt->y; + n++; + } + + /* number of pairs of points */ + + return(n); +} + +/* Approximate a spline by lines generated by iterations of the */ +/* approximation algorithm from the original n points in the spline. */ + +ApproxSpline(n) +int n; +{ + int mid, j; + Point *p1, *p2, *p3, *p; + + if (n < 3) + return; + + /* number of mid-points to calculate */ + mid = n - 3; + + /* remember original points are stored as an array of n points */ + /* so I can index it directly to calculate mid-points only. */ + if (mid > 0) { + p = spline->next; + j = 1; + while (j < n-2) { + p1 = p; + p = p->next; + p2 = p; + InsertPoint(p1, MakePoint(midx(p1, p2), midy(p1, p2))); + j++; + } + } + + /* Now approximate curve by line segments. */ + /* There *should* be the correct number of points now! */ + + p = spline; + while (p != (Point *)NULL) { + p1 = p; + if ((p = p->next) == (Point *)NULL) + break; + p2 = p; + if ((p = p->next) == (Point *)NULL) + break; + p3 = p; /* This point becomes first point of next curve */ + + LineApprox(p1, p2, p3); + } +} + + +/* p1, p2, and p3 are initially 3 *consecutive* points on the curve. */ +/* For each adjacent pair of points find the mid-point, insert this */ +/* in the linked list, delete the first of the two used (unless it */ +/* is the first for this curve). Repeat this ITERATIONS times. */ + +/*ARGSUSED*/ +LineApprox(p1, p2, p3) +Point *p1, *p2, *p3; +{ + Point *p4, *p; + int reps = ITERATIONS; + + while (reps) { + for (p = p1; p != (Point *)NULL && p != p3; ) { + InsertPoint(p, p4 = MakePoint( midx(p,p->next), midy(p,p->next) )); + if (p != p1) + DeletePoint(p); + p = p4->next; /* skip inserted point! */ + } + reps--; + } +} + + +/* Traverse the linked list, calling DrawLine to approximate the */ +/* spline curve. Rounding errors are taken into account so that */ +/* the "curve" is continuous, and ends up where expected. */ + +DrawSplineSegments(dw) +DviWidget dw; +{ + Point *p, *q; + double x1, y1; + int dx, dy; + double xpos, ypos; + + p = spline; + dx = dy = 0; + + /* save the start position */ + + xpos = dw->dvi.state->x; + ypos = dw->dvi.state->y; + + x1 = y1 = 0.0; + + while (p != (Point *)NULL) { + dx = p->x - x1 + 0.5; + dy = p->y - y1 + 0.5; + DrawLine (dw, dx, dy); + + x1 = p->x; + y1 = p->y; + dw->dvi.state->x = xpos + x1; + dw->dvi.state->y = ypos + y1; + + q = p; + p = p->next; + XtFree((char *)q); + } + spline = (Point *)NULL; +} + + +/* Malloc memory for a Point, and initialise the elements to x, y, NULL */ +/* Return a pointer to the new Point. */ + +Point *MakePoint(x, y) +double x, y; +{ + Point *p; + + p = (Point *) XtMalloc (sizeof (Point)); + p->x = x; + p->y = y; + p->next = (Point *)NULL; + + return(p); +} + + +/* Insert point q in linked list after point p. */ + +InsertPoint(p, q) +Point *p, *q; +{ + /* point q to the next point */ + q->next = p->next; + + /* point p to new inserted one */ + p->next = q; +} + +/* Delete point p from the linked list. */ + +DeletePoint(p) +Point *p; +{ + Point *tmp; + + tmp = p->next; + p->x = p->next->x; + p->y = p->next->y; + p->next = p->next->next; + XtFree((char *)tmp); +} + Index: xc/programs/xditview/font.c diff -u /dev/null xc/programs/xditview/font.c:1.1 --- /dev/null Wed Mar 8 16:32:45 2000 +++ xc/programs/xditview/font.c Wed Mar 8 16:32:45 2000 @@ -0,0 +1,444 @@ +/* + * font.c + * + * map dvi fonts to X fonts + */ + +#include <X11/Xos.h> +#include <X11/IntrinsicP.h> +#include <X11/StringDefs.h> +#include <stdio.h> +#include <ctype.h> +#include "DviP.h" +#include "XFontName.h" + +static char * +savestr (s) + char *s; +{ + char *n; + + if (!s) + return 0; + n = XtMalloc (strlen (s) + 1); + if (n) + strcpy (n, s); + return n; +} + +static DviFontList * +LookupFontByPosition (dw, position) + DviWidget dw; + int position; +{ + DviFontList *f; + + for (f = dw->dvi.fonts; f; f=f->next) + if (f->dvi_number == position) + break; + return f; +} + +static DviFontSizeList * +LookupFontSizeBySize (dw, f, size) + DviWidget dw; + DviFontList *f; + int size; +{ + DviFontSizeList *fs, *best = 0; + int bestdist; + char fontNameString[2048]; + XFontName fontName; + unsigned int fontNameAttributes; + int dist; + + if (f->scalable) + { + for (best = f->sizes; best; best = best->next) + if (best->size == size) + return best; + best = (DviFontSizeList *) XtMalloc (sizeof *best); + best->next = f->sizes; + best->size = size; + XParseFontName (f->x_name, &fontName, &fontNameAttributes); + fontNameAttributes &= ~(FontNamePixelSize|FontNameAverageWidth); + fontNameAttributes |= FontNameResolutionX; + fontNameAttributes |= FontNameResolutionY; + fontNameAttributes |= FontNamePointSize; + fontName.ResolutionX = dw->dvi.screen_resolution; + fontName.ResolutionY = dw->dvi.screen_resolution; + fontName.PointSize = size * 10; + XFormatFontName (&fontName, fontNameAttributes, fontNameString); + best->x_name = savestr (fontNameString); + best->doesnt_exist = 0; + best->font = 0; + f->sizes = best; + } + else + { + bestdist = 65536; + for (fs = f->sizes; fs; fs=fs->next) { + dist = size - fs->size; + if (dist < 0) + dist = -dist * 16; + if (dist < bestdist) + { + best = fs; + bestdist = dist; + } + } + } + return best; +} + +static char * +SkipFontNameElement (n) + char *n; +{ + while (*n != '-') + if (!*++n) + return 0; + return n+1; +} + +# define SizePosition 8 +# define EncodingPosition 13 + +static +ConvertFontNameToSize (n) + char *n; +{ + int i, size; + + for (i = 0; i < SizePosition; i++) { + n = SkipFontNameElement (n); + if (!n) + return -1; + } + size = atoi (n); + return size/10; +} + +static char * +ConvertFontNameToEncoding (n) + char *n; +{ + int i; + for (i = 0; i < EncodingPosition; i++) { + n = SkipFontNameElement (n); + if (!n) + return 0; + } + return n; +} + +static +DisposeFontSizes (dw, fs) + DviWidget dw; + DviFontSizeList *fs; +{ + DviFontSizeList *next; + + for (; fs; fs=next) { + next = fs->next; + if (fs->x_name) + XtFree (fs->x_name); + if (fs->font) + { + XUnloadFont (XtDisplay (dw), fs->font->fid); + XFree ((char *)fs->font); + } + XtFree ((char *) fs); + } +} + +void +ResetFonts (dw) + DviWidget dw; +{ + DviFontList *f; + + for (f = dw->dvi.fonts; f; f = f->next) + { + if (f->initialized) + { + DisposeFontSizes (dw, f->sizes); + f->sizes = 0; + f->initialized = FALSE; + f->scalable = FALSE; + } + } + /* + * force requery of fonts + */ + dw->dvi.font = 0; + dw->dvi.font_number = -1; + dw->dvi.cache.font = 0; + dw->dvi.cache.font_number = -1; +} + +DviFontSizeList * +InstallFontSizes (dw, x_name, scalablep) + DviWidget dw; + char *x_name; + Boolean *scalablep; +{ + char fontNameString[2048]; + char **fonts; + int i, count; + int size; + DviFontSizeList *sizes, *new; + XFontName fontName; + unsigned int fontNameAttributes; + + *scalablep = FALSE; + if (!XParseFontName (x_name, &fontName, &fontNameAttributes)) + return 0; + fontNameAttributes &= ~(FontNamePixelSize|FontNamePointSize); + fontNameAttributes |= FontNameResolutionX; + fontNameAttributes |= FontNameResolutionY; + fontName.ResolutionX = dw->dvi.screen_resolution; + fontName.ResolutionY = dw->dvi.screen_resolution; + XFormatFontName (&fontName, fontNameAttributes, fontNameString); + fonts = XListFonts (XtDisplay (dw), fontNameString, 10000000, &count); + sizes = 0; + for (i = 0; i < count; i++) { + size = ConvertFontNameToSize (fonts[i]); + if (size == 0) + { + DisposeFontSizes (dw, sizes); + *scalablep = TRUE; + sizes = 0; + break; + } + if (size != -1) { + new = (DviFontSizeList *) XtMalloc (sizeof *new); + new->next = sizes; + new->size = size; + new->x_name = savestr (fonts[i]); + new->doesnt_exist = 0; + new->font = 0; + sizes = new; + } + } + XFreeFontNames (fonts); + return sizes; +} + +static DviFontList * +InstallFont (dw, position, dvi_name, x_name) + DviWidget dw; + int position; + char *dvi_name; + char *x_name; +{ + DviFontList *f; + char *encoding; + + f = LookupFontByPosition (dw, position); + if (f) { + /* + * ignore gratuitous font loading + */ + if (!strcmp (f->dvi_name, dvi_name) && !strcmp (f->x_name, x_name)) + return f; + + DisposeFontSizes (dw, f->sizes); + if (f->dvi_name) + XtFree (f->dvi_name); + if (f->x_name) + XtFree (f->x_name); + } else { + f = (DviFontList *) XtMalloc (sizeof (*f)); + f->next = dw->dvi.fonts; + dw->dvi.fonts = f; + } + f->initialized = FALSE; + f->dvi_name = savestr (dvi_name); + f->x_name = savestr (x_name); + f->dvi_number = position; + f->sizes = 0; + f->scalable = FALSE; + if (f->x_name) { + encoding = ConvertFontNameToEncoding (f->x_name); + f->char_map = DviFindMap (encoding); + } else + f->char_map = 0; + /* + * force requery of fonts + */ + dw->dvi.font = 0; + dw->dvi.font_number = -1; + dw->dvi.cache.font = 0; + dw->dvi.cache.font_number = -1; + return f; +} + +static char * +MapDviNameToXName (dw, dvi_name) + DviWidget dw; + char *dvi_name; +{ + DviFontMap *fm; + + for (fm = dw->dvi.font_map; fm; fm=fm->next) + if (!strcmp (fm->dvi_name, dvi_name)) + return fm->x_name; + for (fm = dw->dvi.font_map; fm; fm=fm->next) + if (!strcmp (fm->dvi_name, "R")) + return fm->x_name; + if (dw->dvi.font_map->x_name) + return dw->dvi.font_map->x_name; + return "-*-*-*-*-*-*-*-*-*-*-*-*-iso8859-1"; +} + +#ifdef NOTUSED +static char * +MapXNameToDviName (dw, x_name) + DviWidget dw; + char *x_name; +{ + DviFontMap *fm; + + for (fm = dw->dvi.font_map; fm; fm=fm->next) + if (!strcmp (fm->x_name, x_name)) + return fm->dvi_name; + return 0; +} +#endif + +ParseFontMap (dw) + DviWidget dw; +{ + char dvi_name[1024]; + char x_name[2048]; + char *m, *s; + DviFontMap *fm, *new; + + if (dw->dvi.font_map) + DestroyFontMap (dw->dvi.font_map); + fm = 0; + m = dw->dvi.font_map_string; + while (*m) { + s = m; + while (*m && !isspace (*m)) + ++m; + strncpy (dvi_name, s, m-s); + dvi_name[m-s] = '\0'; + while (isspace (*m)) + ++m; + s = m; + while (*m && *m != '\n') + ++m; + strncpy (x_name, s, m-s); + x_name[m-s] = '\0'; + new = (DviFontMap *) XtMalloc (sizeof *new); + new->x_name = savestr (x_name); + new->dvi_name = savestr (dvi_name); + new->next = fm; + fm = new; + ++m; + } + dw->dvi.font_map = fm; +} + +DestroyFontMap (font_map) + DviFontMap *font_map; +{ + DviFontMap *next; + + for (; font_map; font_map = next) { + next = font_map->next; + if (font_map->x_name) + XtFree (font_map->x_name); + if (font_map->dvi_name) + XtFree (font_map->dvi_name); + XtFree ((char *) font_map); + } +} + +/*ARGSUSED*/ +SetFontPosition (dw, position, dvi_name, extra) + DviWidget dw; + int position; + char *dvi_name; + char *extra; /* unused */ +{ + char *x_name; + + x_name = MapDviNameToXName (dw, dvi_name); + (void) InstallFont (dw, position, dvi_name, x_name); +} + +XFontStruct * +QueryFont (dw, position, size) + DviWidget dw; + int position; + int size; +{ + DviFontList *f; + DviFontSizeList *fs; + + f = LookupFontByPosition (dw, position); + if (!f) + return dw->dvi.default_font; + if (!f->initialized) { + f->sizes = InstallFontSizes (dw, f->x_name, &f->scalable); + f->initialized = TRUE; + } + fs = LookupFontSizeBySize (dw, f, size); + if (!fs) + return dw->dvi.default_font; + if (!fs->font) { + if (fs->x_name) + fs->font = XLoadQueryFont (XtDisplay (dw), fs->x_name); + if (!fs->font) + fs->font = dw->dvi.default_font; + } + return fs->font; +} + +DviCharNameMap * +QueryFontMap (dw, position) + DviWidget dw; + int position; +{ + DviFontList *f; + + f = LookupFontByPosition (dw, position); + if (f) + return f->char_map; + else + return 0; +} + +unsigned char * +DviCharIsLigature (map, name) + DviCharNameMap *map; + char *name; +{ + int i; + + for (i = 0; i < DVI_MAX_LIGATURES; i++) { + if (!map->ligatures[i][0]) + break; + if (!strcmp (name, map->ligatures[i][0])) + return (unsigned char *) map->ligatures[i][1]; + } + return 0; +} + +LoadFont (dw, position, size) + DviWidget dw; + int position; + int size; +{ + XFontStruct *font; + + font = QueryFont (dw, position, size); + dw->dvi.font_number = position; + dw->dvi.font_size = size; + dw->dvi.font = font; + XSetFont (XtDisplay (dw), dw->dvi.normal_GC, font->fid); + return; +} Index: xc/programs/xditview/ldblarrow diff -u /dev/null xc/programs/xditview/ldblarrow:1.1 --- /dev/null Wed Mar 8 16:32:45 2000 +++ xc/programs/xditview/ldblarrow Wed Mar 8 16:32:45 2000 @@ -0,0 +1,5 @@ +#define previous_width 11 +#define previous_height 11 +static char previous_bits[] = { + 0x20, 0x04, 0x10, 0x02, 0x08, 0x01, 0x84, 0x00, 0x42, 0x00, 0x21, 0x00, + 0x42, 0x00, 0x84, 0x00, 0x08, 0x01, 0x10, 0x02, 0x20, 0x04}; Index: xc/programs/xditview/lex.c diff -u /dev/null xc/programs/xditview/lex.c:1.1 --- /dev/null Wed Mar 8 16:32:45 2000 +++ xc/programs/xditview/lex.c Wed Mar 8 16:32:45 2000 @@ -0,0 +1,88 @@ +#include <X11/Xos.h> +#include <X11/IntrinsicP.h> +#include <X11/StringDefs.h> +#include <stdio.h> +#include <ctype.h> +#include "DviP.h" + +DviGetAndPut(dw, cp) + DviWidget dw; + int *cp; +{ + if (dw->dvi.ungot) + { + dw->dvi.ungot = 0; + *cp = getc (dw->dvi.file); + } + else + { + *cp = getc (dw->dvi.file); + putc (*cp, dw->dvi.tmpFile); + } + return *cp; +} + +char * +GetLine(dw, Buffer, Length) + DviWidget dw; + char *Buffer; + int Length; +{ + int i = 0, c; + char *p = Buffer; + + Length--; /* Save room for final NULL */ + + while (i < Length && DviGetC (dw, &c) != EOF && c != '\n') + if (p) + *p++ = c; + if (c == '\n' && p) /* Retain the newline like fgets */ + *p++ = c; + if (c == '\n') + DviUngetC(dw, c); + if (p) + *p = '\0'; + return (Buffer); +} + +char * +GetWord(dw, Buffer, Length) + DviWidget dw; + char *Buffer; + int Length; +{ + int i = 0, c; + char *p = Buffer; + + Length--; /* Save room for final NULL */ + while (DviGetC(dw, &c) != EOF && isspace(c)) + ; + if (c != EOF) + DviUngetC(dw, c); + while (i < Length && DviGetC(dw, &c) != EOF && !isspace(c)) + if (p) + *p++ = c; + if (c != EOF) + DviUngetC(dw, c); + if (p) + *p = '\0'; + return (Buffer); +} + +GetNumber(dw) + DviWidget dw; +{ + int i = 0, c; + + while (DviGetC(dw, &c) != EOF && isspace(c)) + ; + if (c != EOF) + DviUngetC(dw, c); + while (DviGetC(dw, &c) != EOF && isdigit(c)) + i = i*10 + c - '0'; + if (c != EOF) + DviUngetC(dw, c); + return (i); +} + + Index: xc/programs/xditview/page.c diff -u /dev/null xc/programs/xditview/page.c:1.1 --- /dev/null Wed Mar 8 16:32:45 2000 +++ xc/programs/xditview/page.c Wed Mar 8 16:32:45 2000 @@ -0,0 +1,90 @@ +/* $XConsortium: page.c,v 1.5 91/07/26 00:40:20 keith Exp $ */ + +/* + * page.c + * + * map page numbers to file position + */ + +#include <X11/IntrinsicP.h> +#include <X11/StringDefs.h> +#include <X11/Xos.h> +#include <stdio.h> +#include <ctype.h> +#include "DviP.h" + +#ifdef X_NOT_STDC_ENV +extern long ftell(); +#endif + +static DviFileMap * +MapPageNumberToFileMap (dw, number) + DviWidget dw; + int number; +{ + DviFileMap *m; + + for (m = dw->dvi.file_map; m; m=m->next) + if (m->page_number == number) + break; + return m; +} + +DestroyFileMap (m) + DviFileMap *m; +{ + DviFileMap *next; + + for (; m; m = next) { + next = m->next; + XtFree ((char *) m); + } +} + +ForgetPagePositions (dw) + DviWidget dw; +{ + DestroyFileMap (dw->dvi.file_map); + dw->dvi.file_map = 0; +} + +RememberPagePosition(dw, number) + DviWidget dw; + int number; +{ + DviFileMap *m; + + if (!(m = MapPageNumberToFileMap (dw, number))) { + m = (DviFileMap *) XtMalloc (sizeof *m); + m->page_number = number; + m->next = dw->dvi.file_map; + dw->dvi.file_map = m; + } + if (dw->dvi.tmpFile) + m->position = ftell (dw->dvi.tmpFile); + else + m->position = ftell (dw->dvi.file); +} + +SearchPagePosition (dw, number) + DviWidget dw; + int number; +{ + DviFileMap *m; + + if (!(m = MapPageNumberToFileMap (dw, number))) + return -1; + return m->position; +} + +FileSeek(dw, position) +DviWidget dw; +long position; +{ + if (dw->dvi.tmpFile) { + dw->dvi.readingTmp = 1; + fseek (dw->dvi.tmpFile, position, 0); + } else + fseek (dw->dvi.file, position, 0); +} + Index: xc/programs/xditview/parse.c diff -u /dev/null xc/programs/xditview/parse.c:1.1 --- /dev/null Wed Mar 8 16:32:45 2000 +++ xc/programs/xditview/parse.c Wed Mar 8 16:32:45 2000 @@ -0,0 +1,423 @@ +/* $XConsortium: parse.c,v 1.13 94/04/17 20:43:36 keith Exp $ */ +/* + +Copyright (c) 1991 X Consortium + +Permission is hereby granted, free of charge, to 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. + +*/ + +/* + * parse.c + * + * parse dvi input + */ + +#include <X11/Xos.h> +#include <X11/IntrinsicP.h> +#include <X11/StringDefs.h> +#include <stdio.h> +#include <ctype.h> +#include "DviP.h" + +static int StopSeen = 0; +static ParseDrawFunction(), ParseDeviceControl(); +static push_env(), pop_env(); + +extern char *GetWord(), *GetLine (); + +#define HorizontalMove(dw, delta) ((dw)->dvi.state->x += (delta)) + +#define charWidth(fi,c) (\ + (fi)->per_char ?\ + (fi)->per_char[(c) - (fi)->min_char_or_byte2].width\ + :\ + (fi)->max_bounds.width\ +) + +ParseInput(dw) + register DviWidget dw; +{ + int n, k; + int c; + char Buffer[BUFSIZ]; + int NextPage; + int prevFont; + int otherc; + unsigned char tc; + + StopSeen = 0; + + /* + * make sure some state exists + */ + + if (!dw->dvi.state) + push_env (dw); + for (;;) { + switch (DviGetC(dw, &c)) { + case '\n': + break; + case ' ': /* when input is text */ + case 0: /* occasional noise creeps in */ + break; + case '{': /* push down current environment */ + push_env(dw); + break; + case '}': + pop_env(dw); + break; + /* + * two motion digits plus a character + */ + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + HorizontalMove(dw, (c-'0')*10 + + DviGetC(dw,&otherc)-'0'); + /* fall through */ + case 'c': /* single ascii character */ + (void) DviGetC(dw,&c); + if (c == ' ') + break; + tc = c; + PutCharacters (dw, &tc, 1); + break; + case 'C': + GetWord(dw, Buffer, BUFSIZ); + { + DviCharNameMap *map; + int i; + unsigned char *ligature; + + c = -1; + map = QueryFontMap (dw, dw->dvi.state->font_number); + if (map) + { + c = DviCharIndex (map, Buffer); + if (c == -1) + { + ligature = DviCharIsLigature (map, Buffer); + if (ligature) { + i = strlen ((char *) ligature); + PutCharacters (dw, ligature, i); + break; + } + } + } + prevFont = -1; + if (c == -1) { + for (i = 1; map = QueryFontMap (dw, i); i++) + if (map->special) + if ((c = DviCharIndex (map, Buffer)) != -1) { + prevFont = dw->dvi.state->font_number; + dw->dvi.state->font_number = i; + break; + } + } + if (c != -1) + { + tc = c; + PutCharacters (dw, &tc, 1); + } + if (prevFont != -1) + dw->dvi.state->font_number = prevFont; + } + break; + case 'D': /* draw function */ + GetLine(dw, Buffer, BUFSIZ); + ParseDrawFunction(dw, Buffer); + break; + case 's': /* ignore fractional sizes */ + n = GetNumber(dw); + dw->dvi.state->font_size = n; + dw->dvi.state->line_width = FontSizeInDevice(dw, n / 10.0); + break; + case 'f': + n = GetNumber(dw); + dw->dvi.state->font_number = n; + break; + case 'H': /* absolute horizontal motion */ + k = GetNumber(dw); + HorizontalGoto(dw, k); + break; + case 'h': /* relative horizontal motion */ + k = GetNumber(dw); + HorizontalMove(dw, k); + break; + case 'w': /* word space */ + break; + case 'V': + n = GetNumber(dw); + VerticalGoto(dw, n); + break; + case 'v': + n = GetNumber(dw); + VerticalMove(dw, n); + break; + case 'P': /* new spread */ + break; + case 'p': /* new page */ + (void) GetNumber(dw); + NextPage = dw->dvi.current_page + 1; + RememberPagePosition(dw, NextPage); + FlushCharCache (dw); + return(NextPage); + case 'n': /* end of line */ + GetNumber(dw); + GetNumber(dw); + HorizontalGoto(dw, 0); + break; + case '#': /* comment */ + GetLine(dw, NULL, 0); + break; + case 'x': /* device control */ + ParseDeviceControl(dw); + break; + case EOF: + dw->dvi.last_page = dw->dvi.current_page; + FlushCharCache (dw); + return dw->dvi.current_page; + default: + break; + } + } +} + +static +push_env(dw) + DviWidget dw; +{ + DviState *new; + + new = (DviState *) XtMalloc (sizeof (*new)); + if (dw->dvi.state) + *new = *(dw->dvi.state); + else { + new->font_size = 10; + new->font_number = 1; + new->line_style = 0; + new->line_width = FontSizeInDevice(dw, 10/10); + new->x = 0; + new->y = 0; + } + new->next = dw->dvi.state; + dw->dvi.state = new; +} + +static +pop_env(dw) + DviWidget dw; +{ + DviState *old; + + old = dw->dvi.state; + dw->dvi.state = old->next; + XtFree ((char *) old); +} + +static +InitTypesetter (dw) + DviWidget dw; +{ + while (dw->dvi.state) + pop_env (dw); + push_env (dw); + FlushCharCache (dw); +} + +SetFont (dw) + DviWidget dw; +{ + dw->dvi.cache.font_size = dw->dvi.state->font_size; + dw->dvi.cache.font_number = dw->dvi.state->font_number; + dw->dvi.cache.font = QueryFont (dw, + dw->dvi.cache.font_number, + dw->dvi.cache.font_size); +} + +PutCharacters (dw, src, len) + DviWidget dw; + unsigned char *src; + int len; +{ + int xx, yx; + int fx, fy; + char *dst; + int c; + + xx = ToX(dw, dw->dvi.state->x); + yx = ToX(dw, dw->dvi.state->y); + fy = FontSizeInPixels (dw, dw->dvi.state->font_size); + fx = fy * len; + /* + * quick and dirty extents calculation: + */ + if (yx + fy >= dw->dvi.extents.y1 && + yx - fy <= dw->dvi.extents.y2 && + xx + fx >= dw->dvi.extents.x1 && + xx - fx <= dw->dvi.extents.x2) + { + register XFontStruct *font; + register XTextItem *text; + + if (!dw->dvi.display_enable) + return FALSE; + + if (yx != dw->dvi.cache.y || + dw->dvi.cache.char_index + len > DVI_CHAR_CACHE_SIZE) + FlushCharCache (dw); + /* + * load a new font, if the current block is not empty, + * step to the next. + */ + if (dw->dvi.cache.font_size != dw->dvi.state->font_size || + dw->dvi.cache.font_number != dw->dvi.state->font_number) + { + SetFont (dw); + if (dw->dvi.cache.cache[dw->dvi.cache.index].nchars != 0) { + ++dw->dvi.cache.index; + if (dw->dvi.cache.index >= dw->dvi.cache.max) + FlushCharCache (dw); + dw->dvi.cache.cache[dw->dvi.cache.index].nchars = 0; + } + } + if (xx != dw->dvi.cache.x) { + if (dw->dvi.cache.cache[dw->dvi.cache.index].nchars != 0) { + ++dw->dvi.cache.index; + if (dw->dvi.cache.index >= dw->dvi.cache.max) + FlushCharCache (dw); + dw->dvi.cache.cache[dw->dvi.cache.index].nchars = 0; + } + } + text = &dw->dvi.cache.cache[dw->dvi.cache.index]; + font = dw->dvi.cache.font; + dst = &dw->dvi.cache.char_cache[dw->dvi.cache.char_index]; + if (text->nchars == 0) { + text->chars = dst; + text->delta = xx - dw->dvi.cache.x; + if (font != dw->dvi.font) { + text->font = font->fid; + dw->dvi.font = font; + } else + text->font = None; + dw->dvi.cache.x += text->delta; + } + dw->dvi.cache.char_index += len; + text->nchars += len; + while (len--) + { + c = *src++; + *dst++ = c; + dw->dvi.cache.x += charWidth(font,c); + } + return TRUE; + } + return FALSE; +} + +static +ParseDrawFunction(dw, buf) + DviWidget dw; + char *buf; +{ + int n, m, n1, m1; + + SetGCForDraw (dw); + switch (buf[0]) { + case 'l': /* draw a line */ + sscanf(buf+1, "%d %d", &n, &m); + DrawLine(dw, n, m); + break; + case 'c': /* circle */ + sscanf(buf+1, "%d", &n); + DrawCircle(dw, n); + break; + case 'e': /* ellipse */ + sscanf(buf+1, "%d %d", &m, &n); + DrawEllipse(dw, m, n); + break; + case 'a': /* arc */ + sscanf(buf+1, "%d %d %d %d", &n, &m, &n1, &m1); + DrawArc(dw, n, m, n1, m1); + break; + case '~': /* wiggly line */ + DrawSpline(dw, buf+1,1); + break; + case 't': /* line width */ + sscanf(buf+1, "%d", &n); + dw->dvi.state->line_width = n; + break; + case 's': /* line style */ + sscanf(buf+1, "%d", &n); + /* XXX */ + break; + default: + /* warning("unknown drawing function %s", buf); */ + break; + } +} + +static +ParseDeviceControl(dw) /* Parse the x commands */ + DviWidget dw; +{ + char str[20], str1[50]; + int c, n; + extern int LastPage, CurrentPage; + + GetWord (dw, str, 20); + switch (str[0]) { /* crude for now */ + case 'T': /* output device */ + GetWord(dw, str, 20); + break; + case 'i': /* initialize */ + InitTypesetter (dw); + break; + case 't': /* trailer */ + break; + case 'p': /* pause -- can restart */ + break; + case 's': /* stop */ + StopSeen = 1; + return; + case 'r': /* resolution when prepared */ + SetDeviceResolution (dw, GetNumber (dw)); + break; + case 'f': /* font used */ + n = GetNumber(dw); + GetWord(dw, str, 20); + GetLine(dw, str1, 50); + SetFontPosition(dw, n, str, str1); + break; + case 'H': /* char height */ + break; + case 'S': /* slant */ + break; + } + while (DviGetC(dw,&c) != '\n') /* skip rest of input line */ + if (c == EOF) + return; + return; +} Index: xc/programs/xditview/rdblarrow diff -u /dev/null xc/programs/xditview/rdblarrow:1.1 --- /dev/null Wed Mar 8 16:32:45 2000 +++ xc/programs/xditview/rdblarrow Wed Mar 8 16:32:45 2000 @@ -0,0 +1,5 @@ +#define next_width 11 +#define next_height 11 +static char next_bits[] = { + 0x21, 0x00, 0x42, 0x00, 0x84, 0x00, 0x08, 0x01, 0x10, 0x02, 0x20, 0x04, + 0x10, 0x02, 0x08, 0x01, 0x84, 0x00, 0x42, 0x00, 0x21, 0x00}; Index: xc/programs/xditview/xdit.bm diff -u /dev/null xc/programs/xditview/xdit.bm:1.1 --- /dev/null Wed Mar 8 16:32:45 2000 +++ xc/programs/xditview/xdit.bm Wed Mar 8 16:32:45 2000 @@ -0,0 +1,14 @@ +#define xdit_width 32 +#define xdit_height 32 +static unsigned char xdit_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x02, 0x00, 0x00, 0x02, + 0x8a, 0xa2, 0xfc, 0x03, 0x52, 0x14, 0x03, 0x04, 0x02, 0x80, 0x00, 0x08, + 0x52, 0x54, 0x00, 0x10, 0x8a, 0x22, 0x8f, 0x23, 0x02, 0x20, 0x06, 0x21, + 0x8a, 0x12, 0x8c, 0x40, 0x52, 0x14, 0x8c, 0x40, 0x02, 0x10, 0x58, 0x40, + 0x52, 0x14, 0x30, 0x40, 0x8a, 0x12, 0x30, 0x40, 0x02, 0x10, 0x70, 0x40, + 0x8a, 0x12, 0xc8, 0x40, 0x52, 0x24, 0xc4, 0xe0, 0x02, 0x20, 0x84, 0xe1, + 0x52, 0x54, 0xce, 0xf3, 0x8a, 0xa2, 0x00, 0xf8, 0x02, 0x00, 0x03, 0xfc, + 0x8a, 0x22, 0xfc, 0xf3, 0x52, 0x14, 0x00, 0xc2, 0x02, 0x00, 0x00, 0x02, + 0x52, 0x14, 0x45, 0x02, 0x8a, 0xa2, 0x28, 0x02, 0x02, 0x00, 0x00, 0x02, + 0x02, 0x00, 0x00, 0x02, 0xfe, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; Index: xc/programs/xditview/xdit_mask.bm diff -u /dev/null xc/programs/xditview/xdit_mask.bm:1.1 --- /dev/null Wed Mar 8 16:32:45 2000 +++ xc/programs/xditview/xdit_mask.bm Wed Mar 8 16:32:45 2000 @@ -0,0 +1,14 @@ +#define xdit_mask_width 32 +#define xdit_mask_height 32 +static unsigned char xdit_mask_bits[] = { + 0xff, 0xff, 0xff, 0x07, 0xff, 0xff, 0xff, 0x07, 0xff, 0xff, 0xff, 0x07, + 0xff, 0xff, 0xff, 0x07, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0x1f, + 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x7f, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xc7, + 0xff, 0xff, 0xff, 0x07, 0xff, 0xff, 0xff, 0x07, 0xff, 0xff, 0xff, 0x07, + 0xff, 0xff, 0xff, 0x07, 0xff, 0xff, 0xff, 0x07, 0xff, 0xff, 0xff, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; Index: xc/programs/xditview/xditview.c diff -u /dev/null xc/programs/xditview/xditview.c:1.1 --- /dev/null Wed Mar 8 16:32:45 2000 +++ xc/programs/xditview/xditview.c Wed Mar 8 16:32:45 2000 @@ -0,0 +1,650 @@ +/* $XConsortium: xditview.c,v 1.32 94/04/17 20:43:36 eswu Exp $ */ +/* + +Copyright (c) 1991 X Consortium + +Permission is hereby granted, free of charge, to 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. + +*/ + +/* + * xditview -- + * + * Display ditroff output in an X window + */ + +#include <X11/Intrinsic.h> +#include <X11/StringDefs.h> +#include <X11/Xatom.h> +#include <X11/Shell.h> +#include <X11/Xos.h> /* rindex declaration */ +#include <X11/Xaw/Paned.h> +#include <X11/Xaw/Panner.h> +#include <X11/Xaw/Porthole.h> +#include <X11/Xaw/Viewport.h> +#include <X11/Xaw/Box.h> +#include <X11/Xaw/Command.h> +#include <X11/Xaw/Dialog.h> +#include <X11/Xaw/Label.h> +#include <X11/Xaw/MenuButton.h> +#include <X11/Xaw/SimpleMenu.h> +#include <X11/Xaw/SmeBSB.h> +#include <X11/Xaw/AsciiText.h> + +#include "Dvi.h" + +#include "xdit.bm" +#include "xdit_mask.bm" +#include <stdio.h> + +#ifndef sgi /* SGI declares popen() in stdio.h */ +extern FILE *popen(); +#endif +extern void exit(); + +/* Command line options table. Only resources are entered here...there is a + pass over the remaining options after XtParseCommand is let loose. */ + +static XrmOptionDescRec options[] = { +{"-page", "*dvi.pageNumber", XrmoptionSepArg, NULL}, +{"-backingStore", "*dvi.backingStore", XrmoptionSepArg, NULL}, +{"-noPolyText", "*dvi.noPolyText", XrmoptionNoArg, "TRUE"}, +{"-resolution", "*dvi.screenResolution",XrmoptionSepArg, NULL}, +}; + +static char current_file_name[1024]; +static FILE *current_file; + +/* + * Report the syntax for calling xditview. + */ + +static +Syntax(call) + char *call; +{ + (void) printf ("Usage: %s [-fg <color>] [-bg <color>]\n", call); + (void) printf (" [-bd <color>] [-bw <pixels>] [-help]\n"); + (void) printf (" [-display displayname] [-geometry geom]\n"); + (void) printf (" [-page <page-number>] [-backing <backing-store>]\n"); + (void) printf (" [-resolution <screen-resolution>]\n\n"); + exit(1); +} + +static void NewResolution (); +static void NewFile (); +static void DisplayPageNumber (); +static void VisitFile (); +static Widget toplevel, paned, porthole, dvi; +#ifdef NOTDEF +static Widget form, panner; +#endif +static Widget popupMenu; +static Widget menuBar; +static Widget fileMenuButton, fileMenu; +static Widget prevButton, pageNumber, nextButton; + +static void NextPage(), PreviousPage(), SetResolution (); +static void OpenFile(), RevisitFile (), Quit(); + +struct menuEntry { + char *name; + void (*function)(); +}; + +static struct menuEntry popupMenuEntries[] = { + "nextPage", NextPage, + "previousPage", PreviousPage, + "setResolution",SetResolution, + "openFile", OpenFile, + "revisitFile", RevisitFile, + "quit", Quit, +}; + +static struct menuEntry fileMenuEntries[] = { + "openFile", OpenFile, + "revisitFile", RevisitFile, + "setResolution",SetResolution, + "quit", Quit, +}; + +static void NextPageAction(), PreviousPageAction(), SetResolutionAction(); +static void OpenFileAction(), RevisitFileAction (), QuitAction(); +static void AcceptAction(), CancelAction(); +static void UpdatePageNumber (), Noop (); + +XtActionsRec xditview_actions[] = { + "NextPage", NextPageAction, + "PreviousPage", PreviousPageAction, + "SetResolution",SetResolutionAction, + "OpenFile", OpenFileAction, + "Quit", QuitAction, + "Accept", AcceptAction, + "Cancel", CancelAction, + "SetPageNumber",UpdatePageNumber, + "Noop", Noop, +}; + +static Atom wm_delete_window; + +/* Function Name: PannerCallback + * Description: called when the panner has moved. + * Arguments: panner - the panner widget. + * closure - *** NOT USED ***. + * report_ptr - the panner record. + * Returns: none. + */ + +/* ARGSUSED */ +void +PannerCallback(w, closure, report_ptr) +Widget w; +XtPointer closure, report_ptr; +{ + Arg args[2]; + XawPannerReport *report = (XawPannerReport *) report_ptr; + + if (!dvi) + return; + XtSetArg (args[0], XtNx, -report->slider_x); + XtSetArg (args[1], XtNy, -report->slider_y); + + XtSetValues(dvi, args, 2); +} + +/* Function Name: PortholeCallback + * Description: called when the porthole or its child has + * changed + * Arguments: porthole - the porthole widget. + * panner_ptr - the panner widget. + * report_ptr - the porthole record. + * Returns: none. + */ + +/* ARGSUSED */ +void +PortholeCallback(w, panner_ptr, report_ptr) +Widget w; +XtPointer panner_ptr, report_ptr; +{ + Arg args[10]; + Cardinal n = 0; + XawPannerReport *report = (XawPannerReport *) report_ptr; + Widget panner = (Widget) panner_ptr; + + XtSetArg (args[n], XtNsliderX, report->slider_x); n++; + XtSetArg (args[n], XtNsliderY, report->slider_y); n++; + if (report->changed != (XawPRSliderX | XawPRSliderY)) { + XtSetArg (args[n], XtNsliderWidth, report->slider_width); n++; + XtSetArg (args[n], XtNsliderHeight, report->slider_height); n++; + XtSetArg (args[n], XtNcanvasWidth, report->canvas_width); n++; + XtSetArg (args[n], XtNcanvasHeight, report->canvas_height); n++; + } + XtSetValues (panner, args, n); +} + +void main(argc, argv) + int argc; + char **argv; +{ + char *file_name = 0; + int i; + XtAppContext xtcontext; + Arg topLevelArgs[2]; + Widget entry; + + XtSetLanguageProc(NULL, (XtLanguageProc) NULL, NULL); + + toplevel = XtAppInitialize(&xtcontext, "Xditview", + options, XtNumber (options), + &argc, argv, NULL, NULL, 0); + if (argc > 2) + Syntax(argv[0]); + + XtAppAddActions(xtcontext, xditview_actions, XtNumber (xditview_actions)); + XtOverrideTranslations + (toplevel, XtParseTranslationTable ("<Message>WM_PROTOCOLS: Quit()")); + + XtSetArg (topLevelArgs[0], XtNiconPixmap, + XCreateBitmapFromData (XtDisplay (toplevel), + XtScreen(toplevel)->root, + (char *) xdit_bits, + xdit_width, xdit_height)); + + XtSetArg (topLevelArgs[1], XtNiconMask, + XCreateBitmapFromData (XtDisplay (toplevel), + XtScreen(toplevel)->root, + (char *) xdit_mask_bits, + xdit_mask_width, xdit_mask_height)); + XtSetValues (toplevel, topLevelArgs, 2); + if (argc > 1) + file_name = argv[1]; + + /* + * create the popup menu and insert the entries + */ + popupMenu = XtCreatePopupShell ("popupMenu", simpleMenuWidgetClass, toplevel, + NULL, 0); + for (i = 0; i < XtNumber (popupMenuEntries); i++) { + entry = XtCreateManagedWidget(popupMenuEntries[i].name, + smeBSBObjectClass, popupMenu, + NULL, (Cardinal) 0); + XtAddCallback(entry, XtNcallback, popupMenuEntries[i].function, NULL); + } + + paned = XtCreateManagedWidget("paned", panedWidgetClass, toplevel, + NULL, (Cardinal) 0); + menuBar = XtCreateManagedWidget ("menuBar", boxWidgetClass, paned, 0, 0); + + fileMenuButton = XtCreateManagedWidget ("fileMenuButton", menuButtonWidgetClass, + menuBar, NULL, (Cardinal) 0); + fileMenu = XtCreatePopupShell ("fileMenu", simpleMenuWidgetClass, + fileMenuButton, NULL, (Cardinal) 0); + for (i = 0; i < XtNumber (fileMenuEntries); i++) { + entry = XtCreateManagedWidget(fileMenuEntries[i].name, + smeBSBObjectClass, fileMenu, + NULL, (Cardinal) 0); + XtAddCallback (entry, XtNcallback, fileMenuEntries[i].function, NULL); + } + + prevButton = XtCreateManagedWidget ("prevButton", commandWidgetClass, + menuBar, NULL, (Cardinal) 0); + + pageNumber = XtCreateManagedWidget("pageNumber", asciiTextWidgetClass, + menuBar, NULL, (Cardinal) 0); + + nextButton = XtCreateManagedWidget ("nextButton", commandWidgetClass, + menuBar, NULL, (Cardinal) 0); + +#ifdef NOTDEF + form = XtCreateManagedWidget ("form", formWidgetClass, paned, + NULL, (Cardinal) 0); + panner = XtCreateManagedWidget ("panner", pannerWidgetClass, + form, NULL, 0); + porthole = XtCreateManagedWidget ("porthole", portholeWidgetClass, + form, NULL, 0); + XtAddCallback(porthole, + XtNreportCallback, PortholeCallback, (XtPointer) panner); + XtAddCallback(panner, + XtNreportCallback, PannerCallback, (XtPointer) porthole); +#else + porthole = XtCreateManagedWidget ("viewport", viewportWidgetClass, + paned, NULL, 0); +#endif + dvi = XtCreateManagedWidget ("dvi", dviWidgetClass, porthole, NULL, 0); + if (file_name) + VisitFile (file_name, FALSE); + XtRealizeWidget (toplevel); + wm_delete_window = XInternAtom(XtDisplay(toplevel), "WM_DELETE_WINDOW", + False); + (void) XSetWMProtocols (XtDisplay(toplevel), XtWindow(toplevel), + &wm_delete_window, 1); + XtAppMainLoop(xtcontext); +} + +static void +DisplayPageNumber () +{ + Arg arg[2]; + int actual_number, last_page; + XawTextBlock text; + int length; + char value[128]; + char *cur; + + XtSetArg (arg[0], XtNpageNumber, &actual_number); + XtSetArg (arg[1], XtNlastPageNumber, &last_page); + XtGetValues (dvi, arg, 2); + if (actual_number == 0) + sprintf (value, "<none>"); + else if (last_page > 0) + sprintf (value, "%d of %d", actual_number, last_page); + else + sprintf (value, "%d", actual_number); + text.firstPos = 0; + text.length = strlen (value); + text.ptr = value; + text.format = FMT8BIT; + XtSetArg (arg[0], XtNstring, &cur); + XtGetValues (XawTextGetSource (pageNumber), arg, 1); + length = strlen (cur); + XawTextReplace (pageNumber, 0, length, &text); +} + +static void +SetPageNumber (number) +{ + Arg arg[1]; + + XtSetArg (arg[0], XtNpageNumber, number); + XtSetValues (dvi, arg, 1); + DisplayPageNumber (); +} + +static void +UpdatePageNumber () +{ + char *string; + Arg arg[1]; + + XtSetArg (arg[0], XtNstring, &string); + XtGetValues (XawTextGetSource(pageNumber), arg, 1); + SetPageNumber (atoi(string)); +} + +static void +NewResolution(resString) +char *resString; +{ + int res; + Arg arg[1]; + + res = atoi (resString); + if (res <= 0) + return; + XtSetArg (arg[0], XtNscreenResolution, res); + XtSetValues (dvi, arg, 1); +} + +static void +VisitFile (name, resetPage) +char *name; +Boolean resetPage; +{ + Arg arg[3]; + char *n; + FILE *new_file; + Boolean seek = 0; + int i; + + if (current_file) { + if (!strcmp (current_file_name, "-")) + ; + else if (current_file_name[0] == '|') + pclose (current_file); + else + fclose (current_file); + } + if (!strcmp (name, "-")) + new_file = stdin; + else if (name[0] == '|') + new_file = popen (name+1, "r"); + else { + new_file = fopen (name, "r"); + seek = 1; + } + if (!new_file) { + /* XXX display error message */ + return; + } + i = 0; + XtSetArg (arg[i], XtNfile, new_file); i++; + XtSetArg (arg[i], XtNseek, seek); i++; + if (resetPage) { + XtSetArg (arg[i], XtNpageNumber, 1); i++; + } + XtSetValues (dvi, arg, i); + XtSetArg (arg[0], XtNtitle, name); + if (name[0] != '/' && (n = rindex (name, '/'))) + n = n + 1; + else + n = name; + XtSetArg (arg[1], XtNiconName, n); + XtSetValues (toplevel, arg, 2); + strcpy (current_file_name, name); + current_file = new_file; + DisplayPageNumber (); +} + +static void +NewFile (name) +char *name; +{ + VisitFile (name, TRUE); +} + +static char fileBuf[1024]; +static char resolutionBuf[1024]; + +ResetMenuEntry (entry) + Widget entry; +{ + Arg arg[1]; + + XtSetArg (arg[0], XtNpopupOnEntry, entry); + XtSetValues (XtParent(entry) , arg, (Cardinal) 1); +} + +/*ARGSUSED*/ +static void +NextPage (entry, name, data) + Widget entry; + caddr_t name, data; +{ + NextPageAction(); + ResetMenuEntry (entry); +} + +static void +NextPageAction () +{ + Arg args[1]; + int number; + + XtSetArg (args[0], XtNpageNumber, &number); + XtGetValues (dvi, args, 1); + SetPageNumber (number+1); +} + +/*ARGSUSED*/ +static void +PreviousPage (entry, name, data) + Widget entry; + caddr_t name, data; +{ + PreviousPageAction (); + ResetMenuEntry (entry); +} + +static void +PreviousPageAction () +{ + Arg args[1]; + int number; + + XtSetArg (args[0], XtNpageNumber, &number); + XtGetValues (dvi, args, 1); + SetPageNumber (number-1); +} + +/*ARGSUSED*/ +static void +SetResolution (entry, name, data) + Widget entry; + caddr_t name, data; +{ + SetResolutionAction (); + ResetMenuEntry (entry); +} + +static void +SetResolutionAction () +{ + Arg args[1]; + int cur; + + XtSetArg (args[0], XtNscreenResolution, &cur); + XtGetValues (dvi, args, 1); + sprintf (resolutionBuf, "%d", cur); + MakePrompt (toplevel, "Screen resolution:", NewResolution, resolutionBuf); +} + +/*ARGSUSED*/ +static void +OpenFile (entry, name, data) + Widget entry; + caddr_t name, data; +{ + OpenFileAction (); + ResetMenuEntry (entry); +} + +static void +OpenFileAction () +{ + if (current_file_name[0]) + strcpy (fileBuf, current_file_name); + else + fileBuf[0] = '\0'; + MakePrompt (toplevel, "File to open:", NewFile, fileBuf); +} + +/*ARGSUSED*/ +static void +RevisitFile (entry, name, data) + Widget entry; + caddr_t name, data; +{ + RevisitFileAction (); + ResetMenuEntry (entry); +} + +static void +RevisitFileAction () +{ + if (current_file_name[0]) + VisitFile (current_file_name, FALSE); +} + +/*ARGSUSED*/ +static void +Quit (entry, closure, data) + Widget entry; + caddr_t closure, data; +{ + QuitAction (); +} + +static void +QuitAction () +{ + exit (0); +} + +Widget promptShell, promptDialog; +void (*promptfunction)(); + +/* ARGSUSED */ +static +void CancelAction (widget, event, params, num_params) + Widget widget; + XEvent *event; + String *params; + Cardinal *num_params; +{ + if (promptShell) { + XtSetKeyboardFocus(toplevel, (Widget) None); + XtDestroyWidget(promptShell); + promptShell = (Widget) 0; + } +} + + +/* ARGSUSED */ +static +void AcceptAction (widget, event, params, num_params) + Widget widget; + XEvent *event; + String *params; + Cardinal *num_params; +{ + (*promptfunction)(XawDialogGetValueString(promptDialog)); + CancelAction (widget, event, params, num_params); +} + +static +void Noop () +{ +} + +MakePrompt(centerw, prompt, func, def) +Widget centerw; +char *prompt; +void (*func)(); +char *def; +{ + static Arg dialogArgs[] = { + {XtNlabel, (XtArgVal) 0}, + {XtNvalue, (XtArgVal) 0}, + }; + Arg valueArgs[1]; + Arg centerArgs[2]; + Position source_x, source_y; + Position dest_x, dest_y; + Dimension center_width, center_height; + Dimension prompt_width, prompt_height; + Widget valueWidget; + + CancelAction ((Widget)NULL, (XEvent *) 0, (String *) 0, (Cardinal *) 0); + promptShell = XtCreatePopupShell ("promptShell", transientShellWidgetClass, + toplevel, NULL, (Cardinal) 0); + dialogArgs[0].value = (XtArgVal)prompt; + dialogArgs[1].value = (XtArgVal)def; + promptDialog = XtCreateManagedWidget( "promptDialog", dialogWidgetClass, + promptShell, dialogArgs, XtNumber (dialogArgs)); + XawDialogAddButton(promptDialog, "accept", NULL, (caddr_t) 0); + XawDialogAddButton(promptDialog, "cancel", NULL, (caddr_t) 0); + valueWidget = XtNameToWidget (promptDialog, "value"); + if (valueWidget) { + XtSetArg (valueArgs[0], XtNresizable, TRUE); + XtSetValues (valueWidget, valueArgs, 1); + /* + * as resizable isn't set until just above, the + * default value will be displayed incorrectly. + * rectify the situation by resetting the values + */ + XtSetValues (promptDialog, dialogArgs, XtNumber (dialogArgs)); + } + XtSetKeyboardFocus (promptDialog, valueWidget); + XtSetKeyboardFocus (toplevel, valueWidget); + XtRealizeWidget (promptShell); + /* + * place the widget in the center of the "parent" + */ + XtSetArg (centerArgs[0], XtNwidth, ¢er_width); + XtSetArg (centerArgs[1], XtNheight, ¢er_height); + XtGetValues (centerw, centerArgs, 2); + XtSetArg (centerArgs[0], XtNwidth, &prompt_width); + XtSetArg (centerArgs[1], XtNheight, &prompt_height); + XtGetValues (promptShell, centerArgs, 2); + source_x = (int)(center_width - prompt_width) / 2; + source_y = (int)(center_height - prompt_height) / 3; + XtTranslateCoords (centerw, source_x, source_y, &dest_x, &dest_y); + XtSetArg (centerArgs[0], XtNx, dest_x); + XtSetArg (centerArgs[1], XtNy, dest_y); + XtSetValues (promptShell, centerArgs, 2); + XtMapWidget(promptShell); + promptfunction = func; +} Index: xc/programs/xditview/xditview.man diff -u /dev/null xc/programs/xditview/xditview.man:1.1 --- /dev/null Wed Mar 8 16:32:45 2000 +++ xc/programs/xditview/xditview.man Wed Mar 8 16:32:45 2000 @@ -0,0 +1,174 @@ +.\" $XConsortium: xditview.man,v 1.10 94/04/17 20:43:37 gildea Exp $ +.TH XDITVIEW 1 "Release 6" "X Version 11" +.SH NAME +xditview \- display ditroff output +.SH SYNOPSIS +.B xditview +[ \-\fItoolkitoption\fP .\|.\|. ] [ \-\fIoption\fP .\|.\|. ] [ \fIfilename\fP ] +.SH DESCRIPTION +The +.I xditview +program displays +.I ditroff +output on an X display. It uses no special +metrics and automatically converts the printer coordinates into screen +coordinates; using the user-specified screen resolution, rather than the +actual resolution so that the appropriate fonts can be found. If +``\fB\-\fP'' is given as the +.I filename, +.I xditview +reads from standard input. +If ``\fB|\fP'' is the first character of +.I filename, +.I xditview +forks +.I sh +to run the rest of the ``file name'' and uses the +standard output of that command. +.SH OPTIONS +.I Xditview +accepts all of the standard X Toolkit command line options along with the +additional options listed below: +.TP 8 +.B \-page \fIpage-number\fP +This option specifies the page number of the document to be displayed at +start up time. +.TP 8 +.B \-resolution \fIscreen-resolution\fP +This specifies the desired screen resolution to use; fonts will be opened by +requesting this resolution field in the XLFD names. +.TP 8 +.B \-noPolyText +Some X servers incorrectly implement PolyText with multiple strings +per request. This option suppesses the use of this feature in +.I xditview. +.TP 8 +.B \-backingStore \fIbacking-store-type\fP +Redisplay can take up to a second or so; this option causes +the server to save the window contents so that when it is scrolled around the +viewport, the window is painted from contents saved in backing store. +\fIbacking-store-type\fP can be one of \fBAlways\fP, \fPWhenMapped\fP or +\fPNotUseful\fP. +.PP +The following standard X Toolkit command line arguments are commonly used with +.I xditview: +.TP 8 +.B \-bg \fIcolor\fP +This option specifies the color to use for the background of the window. +The default is \fIwhite\fP. +.TP 8 +.B \-bd \fIcolor\fP +This option specifies the color to use for the border of the window. +The default is \fIblack\fP. +.TP 8 +.B \-bw \fInumber\fP +This option specifies the width in pixels of the border surrounding the window. +.TP 8 +.B \-fg \fIcolor\fP +This option specifies the color to use for displaying text. The default is +\fIblack\fP. +.TP 8 +.B \-fn \fIfont\fP +This option specifies the font to be used for displaying widget text. The +default is \fIfixed\fP. +.TP 8 +.B \-rv +This option indicates that reverse video should be simulated by swapping +the foreground and background colors. +.TP 8 +.B \-geometry \fIgeometry\fP +This option specifies the preferred size and position of the window. +.TP 8 +.B \-display \fIhost\fP:\fIdisplay\fP +This option specifies the X server to contact. +.TP 8 +.B \-xrm \fIresourcestring\fP +This option specifies a resource string to be used. +.SH X DEFAULTS +This program uses a +.I Dvi +widget. It understands all of the core resource names and +classes as well as: +.PP +.TP 8 +.B width (\fPclass\fB Width) +Specifies the width of the window. +.TP 8 +.B height (\fPclass\fB Height) +Specifies the height of the window. +.TP 8 +.B foreground (\fPclass\fB Foreground) +Specifies the default foreground color. +.TP 8 +.B font (\fPclass\fB Font) +Specifies the font to be used for error messages. +.TP 8 +.B FontMap (\fBclass\fB FontMap) +To associate the +.I ditroff +fonts with appropriate X fonts, this string +resource contains a set of new-line separated specifications, each of which +consists of a ditroff name, some white space and an XLFD pattern with * +characters in appropriate places to allow all sizes to be listed. The +default fontMap is: +.nf +.sp +R \-*\-times\-medium\-r\-normal\-\^\-*\-*\-*\-*\-*\-*\-iso8859\-1\en\e +I \-*\-times\-medium\-i\-normal\-\^\-*\-*\-*\-*\-*\-*\-iso8859\-1\en\e +B \-*\-times\-bold\-r\-normal\-\^\-*\-*\-*\-*\-*\-*\-iso8859\-1\en\e +F \-*\-times\-bold\-i\-normal\-\^\-*\-*\-*\-*\-*\-*\-iso8859\-1\en\e +BI \-*\-times\-bold\-i\-normal\-\^\-*\-*\-*\-*\-*\-*\-iso8859\-1\en\e +C \-*\-courier\-medium\-r\-normal\-\^\-*\-*\-*\-*\-*\-*\-iso8859\-1\en\e +CO \-*\-courier\-medium\-o\-normal\-\^\-*\-*\-*\-*\-*\-*\-iso8859\-1\en\e +CB \-*\-courier\-bold\-r\-normal\-\^\-*\-*\-*\-*\-*\-*\-iso8859\-1\en\e +CF \-*\-courier\-bold\-o\-normal\-\^\-*\-*\-*\-*\-*\-*\-iso8859\-1\en\e +H \-*\-helvetica\-medium\-r\-normal\-\^\-*\-*\-*\-*\-*\-*\-iso8859\-1\en\e +HO \-*\-helvetica\-medium\-o\-normal\-\^\-*\-*\-*\-*\-*\-*\-iso8859\-1\en\e +HB \-*\-helvetica\-bold\-r\-normal\-\^\-*\-*\-*\-*\-*\-*\-iso8859\-1\en\e +HF \-*\-helvetica\-bold\-o\-normal\-\^\-*\-*\-*\-*\-*\-*\-iso8859\-1\en\e +N \-*\-new century schoolbook\-medium\-r\-normal\-\^\-*\-*\-*\-*\-*\-*\-iso8859\-1\en\e +NI \-*\-new century schoolbook\-medium\-i\-normal\-\^\-*\-*\-*\-*\-*\-*\-iso8859\-1\en\e +NB \-*\-new century schoolbook\-bold\-r\-normal\-\^\-*\-*\-*\-*\-*\-*\-iso8859\-1\en\e +NF \-*\-new century schoolbook\-bold\-i\-normal\-\^\-*\-*\-*\-*\-*\-*\-iso8859\-1\en\e +A \-*\-charter\-medium\-r\-normal\-\^\-*\-*\-*\-*\-*\-*\-iso8859\-1\en\e +AI \-*\-charter\-medium\-i\-normal\-\^\-*\-*\-*\-*\-*\-*\-iso8859\-1\en\e +AB \-*\-charter\-bold\-r\-normal\-\^\-*\-*\-*\-*\-*\-*\-iso8859\-1\en\e +AF \-*\-charter\-bold\-i\-normal\-\^\-*\-*\-*\-*\-*\-*\-iso8859\-1\en\e +S \-*\-symbol\-medium\-r\-normal\-\^\-*\-*\-*\-*\-*\-*\-adobe\-fontspecific\en\e +S2 \-*\-symbol\-medium\-r\-normal\-\^\-*\-*\-*\-*\-*\-*\-adobe\-fontspecific\en +.sp +.fi +.SH "USING XDITVIEW WITH DITROFF" +.PP +You can use any ditroff output file with +.I xditview, +although files which use +the fonts appropriate to the fontMap will look more accurate on the screen. +On servers which support scaled fonts, all requested font sizes will be +accurately reflected on the screen; for servers which do not support scaled +.I xditview +will use the closest font from the same family. +.SH "SEE ALSO" +.IR X (1), +.IR xrdb (1), +.IR ditroff (1), +.I "X Logical Font Description Conventions" +.SH ORIGIN +Portions of this program originated in +.I xtroff which was derived +from +.I suntroff. +.SH COPYRIGHT +Copyright ([\d,\s]*) X Consortium +.br +See \fIX\fP(1) for a full statement of rights and permissions. +.SH AUTHORS +Keith Packard (MIT X Consortium) +.br +Richard L. Hyde (Purdue) +.br +David Slattengren (Berkeley) +.br +Malcom Slaney (Schlumberger Palo Alto Research) +.br +Mark Moraes (University of Toronto) Index: xc/programs/xman/ScrollByL.c diff -u xc/programs/xman/ScrollByL.c:1.1 xc/programs/xman/ScrollByL.c:1.3 --- xc/programs/xman/ScrollByL.c:1.1 Wed Mar 8 16:32:58 2000 +++ xc/programs/xman/ScrollByL.c Wed Mar 8 16:32:58 2000 @@ -1,5 +1,4 @@ /* $XConsortium: ScrollByL.c,v 1.30 94/04/17 20:43:46 rws Exp $ */ -/* $XFree86: xc/programs/xman/ScrollByL.c,v 1.1 2000/02/12 03:55:14 dawes Exp $ */ /* Copyright (c) 1987, 1988 X Consortium @@ -29,6 +28,7 @@ from the X Consortium. */ +/* $XFree86: xc/programs/xman/ScrollByL.c,v 1.3 2000/03/03 23:16:25 dawes Exp $ */ #if ( !defined(lint) && !defined(SABER)) static char rcs_version[] = "$Athena: ScrollByL.c,v 4.5 88/12/19 13:46:04 kit Exp $"; @@ -37,6 +37,11 @@ #include <stdio.h> #include <ctype.h> +#include <X11/Xos.h> +#ifndef X_NOT_STDC_ENV +#include <stdlib.h> +#endif + #include <X11/IntrinsicP.h> #include <sys/stat.h> /* depends on IntrinsicP.h */ #include <X11/StringDefs.h> @@ -102,14 +107,24 @@ * ****************************************************************/ -static Boolean ScrollVerticalText(); -static void MoveAndClearText(), LoadFile(), PrintText(), VerticalJump(); -static void VerticalScroll(), SetThumbHeight(), PaintText(), Layout(); +static Boolean ScrollVerticalText(Widget w, int new_line, Boolean force_redisp); +static void Layout(Widget w); +static void LoadFile(Widget w); +static void MoveAndClearText(Widget w, int old_y, int height, int new_y); +static void PaintText(Widget w, int y_loc, int height); +static void PrintText(Widget w, int start_line, int num_lines, int location); +static void SetThumbHeight(Widget w); +static void VerticalJump(Widget w, XtPointer junk, XtPointer percent_ptr); +static void VerticalScroll(Widget w, XtPointer client_data, XtPointer call_data); /* semi - public functions. */ -static void Realize(), Initialize(), Destroy(), Redisplay(), Page(); -static Boolean SetValuesHook(); +static void Realize(Widget w, Mask *valueMask, XSetWindowAttributes *attributes); +static void Initialize(Widget req, Widget new, ArgList args, Cardinal *num_args); +static void Destroy(Widget w); +static void Redisplay(Widget w, XEvent *event, Region region); +static void Page(Widget w, XEvent * event, String * params, Cardinal *num_params); +static Boolean SetValuesHook(Widget w, ArgList args, Cardinal *num_args); static XtActionsRec actions[] = { { "Page", Page}, @@ -178,8 +193,7 @@ */ static void -Layout(w) -Widget w; +Layout(Widget w) { ScrollByLineWidget sblw = (ScrollByLineWidget) w; Dimension width, height; @@ -215,11 +229,7 @@ /* ARGSUSED */ static void -GExpose(w,junk,event,cont) -Widget w; -XtPointer junk; -XEvent *event; -Boolean *cont; +GExpose(Widget w, XtPointer junk, XEvent *event, Boolean *cont) { /* @@ -236,10 +246,8 @@ */ /* ARGSUSED */ -static void Redisplay(w, event, region) -Widget w; -XEvent *event; -Region region; +static void +Redisplay(Widget w, XEvent *event, Region region) { int top, height; /* the locations of the top and height of the region that needs to be repainted. */ @@ -269,9 +277,7 @@ */ static void -PaintText(w, y_loc, height) -Widget w; -int y_loc, height; +PaintText(Widget w, int y_loc, int height) { ScrollByLineWidget sblw = (ScrollByLineWidget) w; int start_line, num_lines, location; @@ -304,11 +310,7 @@ /* ARGSUSED */ static void -Page(w, event, params, num_params) -Widget w; -XEvent * event; -String * params; -Cardinal *num_params; +Page(Widget w, XEvent * event, String * params, Cardinal *num_params) { ScrollByLineWidget sblw = (ScrollByLineWidget) w; Widget bar = sblw->scroll.bar; @@ -327,18 +329,18 @@ case 'f': case 'F': /* move one page forward */ - VerticalScroll(bar, NULL, (int) bar->core.height); + VerticalScroll(bar, NULL, (XtPointer)((int) bar->core.height)); break; case 'b': case 'B': /* move one page backward */ - VerticalScroll(bar, NULL, - (int) bar->core.height); + VerticalScroll(bar, NULL, (XtPointer)(- (int) bar->core.height)); break; case 'L': case 'l': /* move one line forward */ VerticalScroll(bar, NULL, - (int) atoi(params[1]) * sblw->scroll.font_height); + (XtPointer)((int) atoi(params[1]) * sblw->scroll.font_height)); break; default: return; @@ -352,8 +354,7 @@ */ static void -CreateScrollbar(w) -Widget w; +CreateScrollbar(Widget w) { ScrollByLineWidget sblw = (ScrollByLineWidget) w; Arg args[5]; @@ -380,10 +381,10 @@ */ static Boolean -ScrollVerticalText(w, new_line, force_redisp) -Widget w; -int new_line; -Boolean force_redisp; +ScrollVerticalText( +Widget w, +int new_line, +Boolean force_redisp) { ScrollByLineWidget sblw = (ScrollByLineWidget) w; int num_lines = (int)w->core.height / sblw->scroll.font_height + 1; @@ -453,9 +454,7 @@ */ static void -MoveAndClearText(w, old_y, height, new_y) -Widget w; -int old_y, new_y, height; +MoveAndClearText(Widget w, int old_y, int height, int new_y) { ScrollByLineWidget sblw = (ScrollByLineWidget) w; int from_left = sblw->scroll.indent + sblw->scroll.offset - 1; @@ -520,8 +519,7 @@ */ static void -SetThumbHeight(w) -Widget w; +SetThumbHeight(Widget w) { ScrollByLineWidget sblw = (ScrollByLineWidget) w; float shown; @@ -547,8 +545,7 @@ */ static void -SetThumb(w) -Widget w; +SetThumb(Widget w) { float location; ScrollByLineWidget sblw = (ScrollByLineWidget) w; @@ -571,10 +568,7 @@ /* ARGSUSED */ static void -VerticalJump(w, junk, percent_ptr) -Widget w; -XtPointer junk; -XtPointer percent_ptr; +VerticalJump(Widget w, XtPointer junk, XtPointer percent_ptr) { float percent = *((float *) percent_ptr); int new_line; /* The new location for the line pointer. */ @@ -596,10 +590,7 @@ /* ARGSUSED */ static void -VerticalScroll(w, client_data, call_data) -Widget w; -XtPointer client_data; -XtPointer call_data; +VerticalScroll(Widget w, XtPointer client_data, XtPointer call_data) { int pos = (int)(long) call_data; int new_line; /* The new location for the line pointer. */ @@ -614,10 +605,7 @@ /* ARGSUSED */ static void -Initialize(req, new, args, num_args) -Widget req, new; -ArgList args; -Cardinal *num_args; +Initialize(Widget req, Widget new, ArgList args, Cardinal *num_args) { ScrollByLineWidget sblw = (ScrollByLineWidget) new; unsigned long figWidth; @@ -649,8 +637,7 @@ */ static void -CreateGCs(w) -Widget w; +CreateGCs(Widget w) { ScrollByLineWidget sblw = (ScrollByLineWidget) w; @@ -683,8 +670,7 @@ */ static void -DestroyGCs(w) -Widget w; +DestroyGCs(Widget w) { ScrollByLineWidget sblw = (ScrollByLineWidget) w; @@ -695,10 +681,7 @@ } static void -Realize(w, valueMask, attributes) -register Widget w; -Mask *valueMask; -XSetWindowAttributes *attributes; +Realize(Widget w, Mask *valueMask, XSetWindowAttributes *attributes) { ScrollByLineWidget sblw = (ScrollByLineWidget) w; @@ -719,8 +702,7 @@ */ static void -Destroy(w) -Widget w; +Destroy(Widget w) { ScrollByLineWidget sblw = (ScrollByLineWidget) w; @@ -739,10 +721,7 @@ /* ARGSUSED */ static Boolean -SetValuesHook( w, args, num_args) -Widget w; -ArgList args; -Cardinal *num_args; +SetValuesHook(Widget w, ArgList args, Cardinal *num_args) { Boolean ret = TRUE; int i; @@ -800,8 +779,7 @@ */ static void -LoadFile(w) -Widget w; +LoadFile(Widget w) { ScrollByLineWidget sblw = (ScrollByLineWidget) w; FILE * file = sblw->scroll.file; @@ -905,8 +883,8 @@ /* Choose BOLD over ITALICS. If neither */ /* is chosen, use NORMAL. */ -static int DumpText(); -static Boolean Boldify(); +static int DumpText(Widget w, int x_loc, int y_loc, char * buf, int len, int format); +static Boolean Boldify(char *); /* Function Name: PrintText * Description: This function actually prints the text. @@ -920,9 +898,7 @@ /* ARGSUSED */ static void -PrintText(w, start_line, num_lines, location) -Widget w; -int start_line, num_lines, location; +PrintText(Widget w, int start_line, int num_lines, int location) { ScrollByLineWidget sblw = (ScrollByLineWidget) w; @@ -1185,12 +1161,7 @@ */ static int -DumpText(w, x_loc, y_loc, buf, len, format) -Widget w; -int x_loc, y_loc; -char * buf; -int len; -int format; +DumpText(Widget w, int x_loc, int y_loc, char * buf, int len, int format) { ScrollByLineWidget sblw = (ScrollByLineWidget) w; GC gc; @@ -1230,8 +1201,7 @@ */ static Boolean -Boldify(sp) -register char *sp; +Boldify(register char *sp) { register char *sp_pointer; int length,count; Index: xc/programs/xman/buttons.c diff -u xc/programs/xman/buttons.c:1.1 xc/programs/xman/buttons.c:1.3 --- xc/programs/xman/buttons.c:1.1 Wed Mar 8 16:32:58 2000 +++ xc/programs/xman/buttons.c Wed Mar 8 16:32:58 2000 @@ -28,6 +28,7 @@ from the X Consortium. */ +/* $XFree86: xc/programs/xman/buttons.c,v 1.3 2000/03/03 23:16:26 dawes Exp $ */ /* * xman - X window system manual page display program. @@ -36,6 +37,7 @@ */ #include "globals.h" +#include "vendor.h" /* The files with the icon bits in them. */ @@ -43,10 +45,10 @@ #include "icon_help.h" #include "iconclosed.h" -static void CreateOptionMenu(), CreateSectionMenu(); -static void StartManpage(); -static Widget * ConvertNamesToWidgets(); -ManpageGlobals * InitPsuedoGlobals(); +static void CreateOptionMenu(ManpageGlobals * man_globals, Widget parent); +static void CreateSectionMenu(ManpageGlobals * man_globals, Widget parent); +static void StartManpage(ManpageGlobals * man_globals, Boolean help, Boolean page); +static Widget * ConvertNamesToWidgets(Widget parent, char ** names); /* Function Name: MakeTopBox * Description: This funtion creates the top menu, in a shell widget. @@ -61,7 +63,7 @@ Widget top; /* needed in PopupWarning, misc.c */ void -MakeTopBox() +MakeTopBox(void) { Widget form, command, label; /* widgets. */ Arg arglist[TOPARGS]; /* An argument list */ @@ -150,8 +152,7 @@ */ Widget -CreateManpage( file ) -FILE * file; +CreateManpage(FILE * file) { ManpageGlobals * man_globals; /* The psuedo global structure. */ @@ -174,7 +175,7 @@ */ ManpageGlobals * -InitPsuedoGlobals() +InitPsuedoGlobals(void) { ManpageGlobals * man_globals; @@ -210,14 +211,14 @@ #define MANPAGEARGS 10 void -CreateManpageWidget(man_globals, name, full_instance) -ManpageGlobals * man_globals; -char * name; -Boolean full_instance; +CreateManpageWidget( +ManpageGlobals * man_globals, +char * name, +Boolean full_instance) { Arg arglist[MANPAGEARGS]; /* An argument list for widget creation */ Cardinal num_args; /* The number of arguments in the list. */ - Widget top, pane, hpane, sections; /* Widgets */ + Widget mytop, pane, hpane, mysections; /* Widgets */ ManPageWidgets * mpw = &(man_globals->manpagewidgets); num_args = (Cardinal) 0; @@ -226,25 +227,25 @@ XtSetArg(arglist[num_args], XtNheight, default_height); num_args++; - top = XtCreatePopupShell(name, topLevelShellWidgetClass, initial_widget, + mytop = XtCreatePopupShell(name, topLevelShellWidgetClass, initial_widget, arglist, num_args); - man_globals->This_Manpage = top; /* pointer to root widget of Manualpage. */ + man_globals->This_Manpage = mytop; /* pointer to root widget of Manualpage. */ num_args = 0; if (full_instance) XtSetArg(arglist[num_args], XtNiconPixmap, - XCreateBitmapFromData( XtDisplay(top), XtScreen(top)->root, + XCreateBitmapFromData( XtDisplay(mytop), XtScreen(mytop)->root, (char *)icon_open_bits, icon_open_width, icon_open_height)); else XtSetArg(arglist[num_args], XtNiconPixmap, - XCreateBitmapFromData( XtDisplay(top), XtScreen(top)->root, + XCreateBitmapFromData( XtDisplay(mytop), XtScreen(mytop)->root, (char *)icon_help_bits, icon_help_width, icon_help_height)); num_args++; - XtSetValues(top, arglist, num_args); + XtSetValues(mytop, arglist, num_args); - pane = XtCreateManagedWidget("vertPane", panedWidgetClass, top, NULL, + pane = XtCreateManagedWidget("vertPane", panedWidgetClass, mytop, NULL, (Cardinal) 0); /* Create menu bar. */ @@ -256,22 +257,22 @@ (void) XtCreateManagedWidget("options", menuButtonWidgetClass, hpane, arglist, num_args); - CreateOptionMenu(man_globals, top); + CreateOptionMenu(man_globals, mytop); num_args = 0; XtSetArg(arglist[num_args], XtNmenuName, SECTION_MENU); num_args++; - sections = XtCreateManagedWidget("sections", menuButtonWidgetClass, + mysections = XtCreateManagedWidget("sections", menuButtonWidgetClass, hpane, arglist, num_args); XtSetArg(arglist[0], XtNlabel, SHOW_BOTH); XtSetValues(man_globals->both_screens_entry, arglist, (Cardinal) 1); if (full_instance) { - MakeSearchWidget(man_globals, top); - CreateSectionMenu(man_globals, top); - MakeSaveWidgets(man_globals, top); + MakeSearchWidget(man_globals, mytop); + CreateSectionMenu(man_globals, mytop); + MakeSaveWidgets(man_globals, mytop); } else { - XtSetSensitive(sections, FALSE); + XtSetSensitive(mysections, FALSE); XtSetArg(arglist[0], XtNsensitive, FALSE); XtSetValues(man_globals->dir_entry, arglist, ONE); XtSetValues(man_globals->manpage_entry, arglist, ONE); @@ -316,9 +317,7 @@ */ static void -StartManpage(man_globals, help, page) -ManpageGlobals * man_globals; -Boolean help, page; +StartManpage(ManpageGlobals * man_globals, Boolean help, Boolean page) { Widget dir = man_globals->manpagewidgets.directory; Widget manpage = man_globals->manpagewidgets.manpage; @@ -409,9 +408,7 @@ /* ARGSUSED */ static void -MenuDestroy(w, free_me, junk) -Widget w; -XtPointer free_me, junk; +MenuDestroy(Widget w, XtPointer free_me, XtPointer junk) { XtFree( (char *) free_me); } @@ -424,9 +421,7 @@ */ static void -CreateOptionMenu(man_globals, parent) -ManpageGlobals * man_globals; -Widget parent; +CreateOptionMenu(ManpageGlobals * man_globals, Widget parent) { Widget menu, entry; int i; @@ -492,9 +487,7 @@ */ static void -CreateSectionMenu(man_globals, parent) -ManpageGlobals * man_globals; -Widget parent; +CreateSectionMenu(ManpageGlobals * man_globals, Widget parent) { Widget menu, entry; int i; @@ -529,7 +522,7 @@ */ static char ** -CreateList(section) +CreateList(int section) { char ** ret_list, **current; int count; @@ -556,10 +549,7 @@ */ void -MakeDirectoryBox(man_globals,parent,dir_disp,section) -ManpageGlobals *man_globals; -Widget parent, *dir_disp; -int section; +MakeDirectoryBox(ManpageGlobals *man_globals, Widget parent, Widget *dir_disp, int section) { Arg arglist[10]; Cardinal num_args; @@ -594,9 +584,7 @@ */ void -MakeSaveWidgets(man_globals, parent) -ManpageGlobals *man_globals; -Widget parent; +MakeSaveWidgets(ManpageGlobals *man_globals, Widget parent) { Widget shell, dialog; /* misc. widgets. */ Arg warg[1]; @@ -639,9 +627,7 @@ */ void -FormUpWidgets(parent, full_size, half_size) -Widget parent; -char ** full_size, ** half_size; +FormUpWidgets(Widget parent, char ** full_size, char ** half_size) { Widget * full_widgets, * half_widgets, *temp, long_widget; Dimension longest, length, b_width; @@ -723,9 +709,7 @@ */ static Widget * -ConvertNamesToWidgets(parent, names) -Widget parent; -char ** names; +ConvertNamesToWidgets(Widget parent, char ** names) { char ** temp; Widget * ids, * temp_ids; @@ -751,4 +735,3 @@ *temp_ids = (Widget) NULL; return(ids); } - Index: xc/programs/xman/defs.h diff -u xc/programs/xman/defs.h:1.1 xc/programs/xman/defs.h:1.2 --- xc/programs/xman/defs.h:1.1 Wed Mar 8 16:32:58 2000 +++ xc/programs/xman/defs.h Wed Mar 8 16:32:58 2000 @@ -1,5 +1,4 @@ /* $XConsortium: defs.h,v 1.25 94/04/17 20:43:50 converse Exp $ */ -/* $XFree86: xc/programs/xman/defs.h,v 1.1 2000/02/12 03:55:15 dawes Exp $ */ /* Copyright (c) 1987, 1988 X Consortium @@ -29,6 +28,7 @@ from the X Consortium. */ +/* $XFree86: xc/programs/xman/defs.h,v 1.2 2000/03/03 23:16:26 dawes Exp $ */ /* * xman - X window system manual page display program. Index: xc/programs/xman/globals.h diff -u xc/programs/xman/globals.h:1.1 xc/programs/xman/globals.h:1.3 --- xc/programs/xman/globals.h:1.1 Wed Mar 8 16:32:59 2000 +++ xc/programs/xman/globals.h Wed Mar 8 16:32:59 2000 @@ -28,6 +28,7 @@ from the X Consortium. */ +/* $XFree86: xc/programs/xman/globals.h,v 1.3 2000/03/03 23:16:26 dawes Exp $ */ #include "man.h" @@ -50,8 +51,6 @@ extern XContext manglobals_context; /* The context for man_globals. */ extern Widget initial_widget; /* The initial widget, never realized. */ - -extern char * option_names[]; extern char **saved_argv; extern int saved_argc; Index: xc/programs/xman/handler.c diff -u xc/programs/xman/handler.c:1.1 xc/programs/xman/handler.c:1.4 --- xc/programs/xman/handler.c:1.1 Wed Mar 8 16:32:59 2000 +++ xc/programs/xman/handler.c Wed Mar 8 16:32:59 2000 @@ -1,5 +1,4 @@ /* $XConsortium: handler.c,v 1.22 94/12/16 21:36:53 gildea Exp $ */ -/* $XFree86: xc/programs/xman/handler.c,v 1.1 2000/02/12 03:55:16 dawes Exp $ */ /* Copyright (c) 1987, 1988 X Consortium @@ -29,6 +28,7 @@ from the X Consortium. */ +/* $XFree86: xc/programs/xman/handler.c,v 1.4 2000/03/06 22:59:34 dawes Exp $ */ /* * xman - X window system manual page display program. @@ -36,11 +36,13 @@ * Created: October 29, 1987 */ +#include <sys/types.h> +#include <sys/stat.h> #include "globals.h" #include "vendor.h" -static void PutUpManpage(); -static void ToggleBothShownState(); +static void PutUpManpage(ManpageGlobals * man_globals, FILE * file); +static void ToggleBothShownState(ManpageGlobals * man_globals); /* Function Name: OptionCallback * Description: This is the callback function for the callback menu. @@ -53,10 +55,7 @@ /*ARGSUSED*/ void -OptionCallback(w, pointer, junk) -Widget w; -XtPointer pointer; -XtPointer junk; /* unused */ +OptionCallback(Widget w, XtPointer pointer, XtPointer junk) { ManpageGlobals * man_globals = (ManpageGlobals *) pointer; String params; @@ -98,8 +97,7 @@ */ static void -ToggleBothShownState(man_globals) -ManpageGlobals * man_globals; +ToggleBothShownState(ManpageGlobals * man_globals) { char * label_str; Arg arglist[1]; @@ -156,9 +154,7 @@ #define OFF_OF_TOP 25 void -Popup(w, grab_kind) -Widget w; -XtGrabKind grab_kind; +Popup(Widget w, XtGrabKind grab_kind) { int x_root,y_root,y_pos,garbage; unsigned int mask; @@ -181,9 +177,7 @@ */ static void -PutUpManpage(man_globals, file) -ManpageGlobals * man_globals; -FILE * file; +PutUpManpage(ManpageGlobals * man_globals, FILE * file) { String params = "ManualPage"; Cardinal num_params = 1; @@ -213,9 +207,7 @@ */ void -DirectoryHandler(w, global_pointer, ret_val) -Widget w; -XtPointer global_pointer, ret_val; +DirectoryHandler(Widget w, XtPointer global_pointer, XtPointer ret_val) { FILE * file; /* The manpage file. */ ManpageGlobals * man_globals = (ManpageGlobals *) global_pointer; @@ -237,10 +229,7 @@ /*ARGSUSED*/ void -DirPopupCallback(w,pointer,junk) -Widget w; -XtPointer pointer; -XtPointer junk; /* unused */ +DirPopupCallback(Widget w, XtPointer pointer, XtPointer junk) { ManpageGlobals * man_globals; MenuStruct * menu_struct; @@ -295,11 +284,7 @@ /*ARGSUSED*/ void -SaveFormattedPage(w, event, params, num_params) -Widget w; -XEvent * event; -String * params; -Cardinal * num_params; +SaveFormattedPage(Widget w, XEvent * event, String * params, Cardinal * num_params) { ManpageGlobals * man_globals; char cmdbuf[BUFSIZ], error_buf[BUFSIZ]; @@ -385,11 +370,7 @@ /*ARGSUSED*/ void -GotoPage(w, event, params, num_params) -Widget w; -XEvent * event; -String * params; -Cardinal * num_params; +GotoPage(Widget w, XEvent * event, String * params, Cardinal * num_params) { ManpageGlobals * man_globals; char error_buf[BUFSIZ]; @@ -448,11 +429,7 @@ /*ARGSUSED*/ void -Quit(w, event, params, num_params) -Widget w; -XEvent * event; -String * params; -Cardinal * num_params; +Quit(Widget w, XEvent * event, String * params, Cardinal * num_params) { XCloseDisplay(XtDisplay(w)); exit(0); @@ -468,11 +445,7 @@ /*ARGSUSED*/ void -PopupHelp(w, event, params, num_params) -Widget w; -XEvent * event; -String * params; -Cardinal * num_params; +PopupHelp(Widget w, XEvent * event, String * params, Cardinal * num_params) { if (MakeHelpWidget()) XtPopup(help_widget,XtGrabNone); @@ -488,11 +461,7 @@ /*ARGSUSED*/ void -PopupSearch(w, event, params, num_params) -Widget w; -XEvent * event; -String * params; -Cardinal * num_params; +PopupSearch(Widget w, XEvent * event, String * params, Cardinal * num_params) { ManpageGlobals * man_globals = GetGlobals(w); if (!XtIsRealized(man_globals->search_widget)) { @@ -512,11 +481,7 @@ /*ARGSUSED*/ void -CreateNewManpage(w, event, params, num_params) -Widget w; -XEvent * event; -String * params; -Cardinal * num_params; +CreateNewManpage(Widget w, XEvent * event, String * params, Cardinal * num_params) { (void) CreateManpage(NULL); man_pages_shown++; @@ -532,11 +497,7 @@ /*ARGSUSED*/ void -RemoveThisManpage(w, event, params, num_params) -Widget w; -XEvent * event; -String * params; -Cardinal * num_params; +RemoveThisManpage(Widget w, XEvent * event, String * params, Cardinal * num_params) { ManpageGlobals * man_globals = GetGlobals(w); @@ -565,11 +526,7 @@ /*ARGSUSED*/ void -Search(w, event, params, num_params) -Widget w; -XEvent * event; -String * params; -Cardinal * num_params; +Search(Widget w, XEvent * event, String * params, Cardinal * num_params) { ManpageGlobals * man_globals = GetGlobals(w); FILE * file; @@ -641,11 +598,7 @@ /*ARGSUSED*/ void -ShowVersion(w, event, params, num_params) -Widget w; -XEvent * event; -String * params; -Cardinal * num_params; +ShowVersion(Widget w, XEvent * event, String * params, Cardinal * num_params) { ManpageGlobals * man_globals = GetGlobals(w); ChangeLabel(man_globals->label, XMAN_VERSION); Index: xc/programs/xman/help.c diff -u xc/programs/xman/help.c:1.1 xc/programs/xman/help.c:1.3 --- xc/programs/xman/help.c:1.1 Wed Mar 8 16:32:59 2000 +++ xc/programs/xman/help.c Wed Mar 8 16:32:59 2000 @@ -28,6 +28,7 @@ from the X Consortium. */ +/* $XFree86: xc/programs/xman/help.c,v 1.3 2000/03/03 23:16:27 dawes Exp $ */ /* * xman - X window system manual page display program. @@ -39,8 +40,6 @@ extern Atom wm_delete_window; /* in main.c */ -ManpageGlobals * InitPsuedoGlobals(); - /* Function Name: MakeHelpWidget. * Description: This function creates the help widget so that it will be * ready to be displayed. @@ -49,7 +48,7 @@ */ Boolean -MakeHelpWidget() +MakeHelpWidget(void) { ManpageGlobals * man_globals; /* The psuedo global structure. */ @@ -96,8 +95,7 @@ */ Boolean -OpenHelpfile(man_globals) -ManpageGlobals * man_globals; +OpenHelpfile(ManpageGlobals * man_globals) { FILE * help_file_ptr; Index: xc/programs/xman/main.c diff -u xc/programs/xman/main.c:1.1 xc/programs/xman/main.c:1.3 --- xc/programs/xman/main.c:1.1 Wed Mar 8 16:32:59 2000 +++ xc/programs/xman/main.c Wed Mar 8 16:32:59 2000 @@ -1,5 +1,4 @@ /* $XConsortium: main.c,v 1.23 94/04/17 20:43:55 rws Exp $ */ -/* $XFree86: xc/programs/xman/main.c,v 1.1 2000/02/12 03:55:17 dawes Exp $ */ /* Copyright (c) 1987, 1988 X Consortium @@ -29,6 +28,7 @@ from the X Consortium. */ +/* $XFree86: xc/programs/xman/main.c,v 1.3 2000/03/03 23:16:27 dawes Exp $ */ /* * xman - X window system manual page display program. @@ -45,8 +45,8 @@ static char version[] = XMAN_VERSION; /* via strings. */ #endif -static void ArgError(); -static void AdjustDefResources(); +static void ArgError(int argc, char ** argv); +static void AdjustDefResources(void); #define Offset(field) (XtOffsetOf(Xman_Resources , field)) @@ -142,9 +142,7 @@ * Returns: return, what return. */ -int main(argc,argv) -char ** argv; -int argc; +int main(int argc, char ** argv) { XtAppContext app_con; @@ -216,6 +214,8 @@ man_pages_shown = 1; XtAppMainLoop(app_con); + + exit(0); } /* Function Name: ArgError @@ -225,9 +225,7 @@ */ static void -ArgError(argc, argv) -char ** argv; -int argc; +ArgError(int argc, char ** argv) { int i; @@ -277,7 +275,7 @@ */ static void -AdjustDefResources() +AdjustDefResources(void) { char *xwinhome = NULL; int i; Index: xc/programs/xman/man.c diff -u xc/programs/xman/man.c:1.1 xc/programs/xman/man.c:1.3 --- xc/programs/xman/man.c:1.1 Wed Mar 8 16:32:59 2000 +++ xc/programs/xman/man.c Wed Mar 8 16:32:59 2000 @@ -1,5 +1,4 @@ /* $XConsortium: man.c,v 1.30 94/04/17 20:43:56 rws Exp $ */ -/* $XFree86: xc/programs/xman/man.c,v 1.1 2000/02/12 03:55:17 dawes Exp $ */ /* Copyright (c) 1987, 1988 X Consortium @@ -29,6 +28,7 @@ from the X Consortium. */ +/* $XFree86: xc/programs/xman/man.c,v 1.3 2000/03/03 23:16:27 dawes Exp $ */ #include "globals.h" @@ -55,16 +55,27 @@ static char error_buf[BUFSIZ]; /* The buffer for error messages. */ #endif /* DEBUG */ -static void SortList(), ReadMandescFile(), SortAndRemove(), InitManual(); -static void AddToCurrentSection(); -static void ReadCurrentSection(); - -#ifdef MANCONF -Bool ReadManConfig(); -#endif +static void AddToCurrentSection(Manual * local_manual, char * path); +static void InitManual(Manual * l_manual, char * label); +static void ReadCurrentSection(Manual * local_manual, char * path); +static void ReadMandescFile(SectionList ** section_list, char * path); +static void SortAndRemove(Manual *man, int number); +static void SortList(SectionList ** list); #define SECT_ERROR -1 +#ifndef Byte +#define Byte unsigned char +#endif + +#ifndef reg +#define reg register +#endif + +static void sortstrs (Byte *data[], int size, Byte *otherdata[]); +static void sortstrs_block (Byte **, Byte **, int, Byte, Byte **, Byte **); +static void sortstrs_block_oo (Byte **, Byte **, int, Byte, int *, int *, Byte **, Byte **); + /* Function Name: Man * Description: Builds a list of all manual directories and files. * Arguments: none. @@ -72,11 +83,11 @@ */ int -Man() +Man(void) { SectionList *list = NULL; - char *ptr, *lang, manpath[BUFSIZ], buf[BUFSIZ], *path, *current_label; - int sect, num_alloced, uselang = False; + char *ptr, *lang = 0, manpath[BUFSIZ], buf[BUFSIZ], *path, *current_label; + int sect, num_alloced; /* * Get the environment variable MANPATH, and if it doesn't exist then use @@ -85,7 +96,7 @@ ptr = getenv("MANPATH"); if (ptr == NULL || streq(ptr , "") ) { - uselang = (lang = getenv("LANG")) != NULL; + lang = getenv("LANG"); #ifdef MANCONF if (!ReadManConfig(manpath)) #endif @@ -107,7 +118,7 @@ for ( path = manpath ; (ptr = index(path , ':')) != NULL ; path = ++ptr) { *ptr = '\0'; - if (uselang) { + if (lang != 0) { strcpy(buf, path); strcat(buf, "/"); strncat(buf, lang, sizeof(buf) - strlen(path) + 1); @@ -116,7 +127,7 @@ } ReadMandescFile(&list, path); } - if (uselang) { + if (lang != 0) { strcpy(buf, path); strcat(buf, "/"); strncat(buf, lang, sizeof(buf) - strlen(path) + 1); @@ -195,8 +206,7 @@ */ static void -SortList(list) -SectionList ** list; +SortList(SectionList ** list) { SectionList * local; SectionList *head, *last, *inner, *old; @@ -218,12 +228,14 @@ head = local; /* Find end of standard block */ - for ( ; (local->next != NULL) && (local->flags) + for (old = 0 ; (local->next != NULL) && (local->flags) ; old = local, local = local->next); - last->next = old->next; /* Move the block. */ - old->next = *list; - *list = head; + if (old != 0) { + last->next = old->next; /* Move the block. */ + old->next = *list; + *list = head; + } break; /* First step accomplished. */ } @@ -262,9 +274,7 @@ */ static void -ReadMandescFile( section_list, path ) -SectionList ** section_list; -char * path; +ReadMandescFile(SectionList ** section_list, char * path) { char mandesc_file[BUFSIZ]; /* full path to the mandesc file. */ FILE * descfile; @@ -327,10 +337,10 @@ */ void -AddNewSection(list, path, file, label, flags) -SectionList **list; -char * path, * label, * file; -int flags; +AddNewSection( +SectionList **list, +char * path, char * file, char * label, +int flags) { SectionList * local_list, * end; char full_path[BUFSIZ]; @@ -362,9 +372,7 @@ */ static void -AddToCurrentSection(local_manual, path) -Manual * local_manual; -char * path; +AddToCurrentSection(Manual * local_manual, char * path) { char temp_path[BUFSIZ]; @@ -387,9 +395,7 @@ */ static void -ReadCurrentSection(local_manual, path) -Manual * local_manual; -char * path; +ReadCurrentSection(Manual * local_manual, char * path) { DIR * dir; @@ -482,15 +488,13 @@ */ static void -SortAndRemove(man, number) -Manual *man; -int number; +SortAndRemove(Manual *man, int number) { - int i,j; + int i; char *l1, *l2, **s1; for ( i = 0; i < number; man++, i++) { /* sort each section */ - register int j = 0; + register int i2 = 0; #ifdef DEBUG printf("sorting section %d - %s\n", i, man->blabel); @@ -500,15 +504,15 @@ /* temporarily remove suffixes of entries, preventing them from */ /* being used in alpabetic comparison ie sccs-delta.1 vs sccs.1 */ - for (j=0; j<man->nentries; j++) - if ((s1[j] = rindex(man->entries_less_paths[j], '.')) != NULL) - *s1[j] = '\0'; + for (i2=0; i2<man->nentries; i2++) + if ((s1[i2] = rindex(man->entries_less_paths[i2], '.')) != NULL) + *s1[i2] = '\0'; - sortstrs ( man->entries_less_paths, man->nentries, man->entries ); + sortstrs ( (Byte **)man->entries_less_paths, man->nentries, (Byte **)man->entries ); /* put back suffixes */ - for (j=0; j<man->nentries; j++) - if (s1[j] != NULL) *s1[j] = '.'; + for (i2=0; i2<man->nentries; i2++) + if (s1[i2] != NULL) *s1[i2] = '.'; free(s1); @@ -569,23 +573,9 @@ isn't preserved. */ -#ifndef Byte -#define Byte unsigned char -#endif - -#ifndef reg -#define reg register -#endif - - - - sortstrs ( data, size, otherdata ) /* Sort an array of string ptrs */ - - Byte *data[]; - int size; - Byte *otherdata[]; - - { +static void +sortstrs (Byte *data[], int size, Byte *otherdata[]) +{ Byte **sp, **ep; Byte **othersp, **otherep; int *origorder; @@ -611,24 +601,24 @@ } else sortstrs_block ( sp, ep, 0, 0x80, othersp, otherep ); - } +} - + /*---------------------------------*/ /* Sort 1 block of data on 1 bit */ /*---------------------------------*/ - sortstrs_block ( start, end, offset, mask, otherstart, otherend ) - - Byte **start; - Byte **end; - int offset; - Byte mask; - Byte **otherstart; - Byte **otherend; +static void +sortstrs_block ( + Byte **start, + Byte **end, + int offset, + Byte mask, + Byte **otherstart, + Byte **otherend) - { +{ reg Byte **sp, **ep; reg Byte m; reg int off; @@ -718,27 +708,26 @@ sortstrs_block ( start, sp, off, m, otherstart, othersp ); if ( ep != end ) sortstrs_block ( ep, end, off, m, otherep, otherend ); - } +} - + /*-----------------------------------------------------------------*/ /* Sort 1 block of data on 1 bit; check for out-of-order entries */ /*-----------------------------------------------------------------*/ - sortstrs_block_oo ( start, end, offset, mask, ostart, oend, - otherstart, otherend ) - - Byte **start; - Byte **end; - int offset; - Byte mask; - int *ostart; - int *oend; - Byte **otherstart; - Byte **otherend; +static void + sortstrs_block_oo ( + Byte **start, + Byte **end, + int offset, + Byte mask, + int *ostart, + int *oend, + Byte **otherstart, + Byte **otherend) - { +{ reg Byte **sp, **ep; reg int *osp, *oep; reg Byte m; @@ -916,7 +905,7 @@ sortstrs_block_oo ( start, sp, off, m, ostart, osp, otherstart, othersp ); if ( ep != end ) sortstrs_block_oo ( ep, end, off, m, oep, oend, otherep, otherend ); - } +} /* Function Name: InitManual @@ -927,9 +916,7 @@ */ static void -InitManual(l_manual, label) -Manual * l_manual; -char * label; +InitManual(Manual * l_manual, char * label) { bzero( l_manual, sizeof(Manual) ); /* clear it. */ l_manual->blabel = label; /* set label. */ @@ -944,7 +931,8 @@ * Returns: none. */ -DumpManual(number) +void +DumpManual(int number) { register int i,j; @@ -969,12 +957,8 @@ * Returns: TRUE if read was successful. */ - Bool -ReadManConfig(manpath) - -char manpath[]; - +ReadManConfig(char manpath[]) { FILE *fp; char line[BUFSIZ]; @@ -1012,12 +996,8 @@ * Returns: TRUE if read was successful. */ - Bool -ReadManConfig(manpath) - -char manpath[]; - +ReadManConfig(char manpath[]) { FILE *fp; char line[BUFSIZ]; @@ -1031,7 +1011,7 @@ path = strtok(line, " \t\n"); if (!path || *path == '#' || strcmp(path, "_default")) continue; - while (path = strtok((char *)NULL, " \t\n")) { + while ((path = strtok((char *)NULL, " \t\n"))) { if (firstpath) { strcpy(manpath, path); firstpath = FALSE; @@ -1061,10 +1041,7 @@ #include <glob.h> Bool -ReadManConfig(manpath) - -char manpath[]; - +ReadManConfig(char manpath[]) { FILE *fp; char line[BUFSIZ]; Index: xc/programs/xman/man.h diff -u xc/programs/xman/man.h:1.1 xc/programs/xman/man.h:1.3 --- xc/programs/xman/man.h:1.1 Wed Mar 8 16:32:59 2000 +++ xc/programs/xman/man.h Wed Mar 8 16:32:59 2000 @@ -1,5 +1,4 @@ /* $XConsortium: man.h,v 1.31 94/12/16 21:36:53 gildea Exp $ */ -/* $XFree86: xc/programs/xman/man.h,v 1.1 2000/02/12 03:55:17 dawes Exp $ */ /* Copyright (c) 1987, 1988 X Consortium @@ -29,6 +28,7 @@ from the X Consortium. */ +/* $XFree86: xc/programs/xman/man.h,v 1.3 2000/03/03 23:16:27 dawes Exp $ */ /* X toolkit header files */ @@ -71,8 +71,6 @@ #include "version.h" #include "defs.h" -typedef void (*fcall)(); /* function pointer typedef */ - /* * Assigning values here allows the user of Bitwise Or. */ @@ -200,58 +198,65 @@ void exit(); #endif -/* Toolkit standard definitions. */ - -void XtResizeWidget(), XtMoveWidget(); - /* buttons.c */ -void MakeTopBox(), FormUpWidgets(); -void CreateManpageWidget(), MakeSaveWidgets(), WriteLabel(); -void MakeTopPopUpWidget(),MakeDirPopUpWidget(), MakeDirectoryBox(); -char * CreateManpageName(); -Widget CreateManpage(); +ManpageGlobals * InitPsuedoGlobals(void); +Widget CreateManpage(FILE * file); +void CreateManpageWidget(ManpageGlobals * man_globals, char * name, Boolean full_instance); +void FormUpWidgets(Widget parent, char ** full_size, char ** half_size); +void MakeDirectoryBox(ManpageGlobals *man_globals, Widget parent, Widget *dir_disp, int section); +void MakeSaveWidgets(ManpageGlobals *man_globals, Widget parent); +void MakeTopBox(void); /* handler.c */ -void DirectoryHandler(), PopUpMenu(), SaveCallback(), OptionCallback(); -void Popup(),ManpageButtonPress(), GotoManpage(), DirPopupCallback(); +void DirPopupCallback(Widget w, XtPointer pointer, XtPointer junk); +void DirectoryHandler(Widget w, XtPointer global_pointer, XtPointer ret_val); +void OptionCallback(Widget w, XtPointer pointer, XtPointer junk); +void Popup(Widget w, XtGrabKind grab_kind); /* Action Routines. */ -void GotoPage(), PopupHelp(), PopupSearch(), Quit(), SaveFormattedPage(); -void CreateNewManpage(), RemoveThisManpage(), Search(), ShowVersion(); +void CreateNewManpage(Widget w, XEvent * event, String * params, Cardinal * num_params); +void GotoPage(Widget w, XEvent * event, String * params, Cardinal * num_params); +void PopupHelp(Widget w, XEvent * event, String * params, Cardinal * num_params); +void PopupSearch(Widget w, XEvent * event, String * params, Cardinal * num_params); +void Quit(Widget w, XEvent * event, String * params, Cardinal * num_params); +void RemoveThisManpage(Widget w, XEvent * event, String * params, Cardinal * num_params); +void SaveFormattedPage(Widget w, XEvent * event, String * params, Cardinal * num_params); +void Search(Widget w, XEvent * event, String * params, Cardinal * num_params); +void ShowVersion(Widget w, XEvent * event, String * params, Cardinal * num_params); /* help.c */ -Boolean MakeHelpWidget(), OpenHelpfile(); +Boolean MakeHelpWidget(void); +Boolean OpenHelpfile(ManpageGlobals * man_globals); /* man.c */ - -int Man(); +Bool ReadManConfig(char manpath[]); +int Man(void); /* misc.c */ - -void PrintError(),PrintWarning(), PopupWarning(), ChangeLabel(), OpenFile(); -void RemovePixmaps(),PositionCenter(),AddCursor(),ParseEntry(); -FILE *FindManualFile(),*Format(), *OpenEntryFile(); -ManpageGlobals * GetGlobals(); -void SaveGlobals(), RemoveGlobals(); - -/* pages.c */ - -Boolean InitManpage(); -void PrintManpage(); -Boolean Boldify(); +FILE * DoSearch(ManpageGlobals * man_globals, int type); +FILE * FindManualFile(ManpageGlobals * man_globals, int section_num, int entry_num); +ManpageGlobals * GetGlobals(Widget w); +void AddCursor(Widget w, Cursor cursor); +void ChangeLabel(Widget w, char * str); +void OpenFile(ManpageGlobals * man_globals, FILE * file); +void PopupWarning(ManpageGlobals * man_globals, char * string); +void PositionCenter(Widget widget, int x, int y, int above, int left, int v_space, int h_space); +void PrintError(char * string); +void RemoveGlobals(Widget w); +void SaveGlobals(Widget w, ManpageGlobals * globals); +void ParseEntry(char *entry, char *path, char *sect, char *page); +FILE * Format(ManpageGlobals * man_globals, char * entry); /* search */ - -void MakeSearchWidget(); -FILE * DoSearch(); +void MakeSearchWidget(ManpageGlobals * man_globals, Widget parent); /* tkfunctions.c */ -int Width(), Height(), BorderWidth(); -Widget PopupChild(), Child(); -char * Name(); -Boolean MakeLong(); +int Width(Widget); +int Height(Widget); +int BorderWidth(Widget); +char * Name(Widget); Index: xc/programs/xman/misc.c diff -u xc/programs/xman/misc.c:1.1 xc/programs/xman/misc.c:1.3 --- xc/programs/xman/misc.c:1.1 Wed Mar 8 16:32:59 2000 +++ xc/programs/xman/misc.c Wed Mar 8 16:32:59 2000 @@ -1,5 +1,4 @@ /* $XConsortium: misc.c,v 1.31 94/12/16 21:36:53 gildea Exp $ */ -/* $XFree86: xc/programs/xman/misc.c,v 1.1 2000/02/12 03:55:18 dawes Exp $ */ /* Copyright (c) 1987, 1988 X Consortium @@ -29,6 +28,7 @@ from the X Consortium. */ +/* $XFree86: xc/programs/xman/misc.c,v 1.3 2000/03/03 23:16:28 dawes Exp $ */ /* * xman - X window system manual page display program. @@ -44,9 +44,9 @@ #include <X11/Xaw/Dialog.h> #include <X11/Shell.h> -static FILE * Uncompress(); -static Boolean UncompressNamed(), UncompressUnformatted(); -extern int errno; /* error codes. */ +static FILE * Uncompress(ManpageGlobals * man_globals, char * filename); +static Boolean UncompressNamed(ManpageGlobals * man_globals, char * filename, char * output); +static Boolean UncompressUnformatted(ManpageGlobals * man_globals, char * entry, char * filename); #if defined(ISC) || defined(SCO) static char *uncompress_format = NULL; @@ -63,20 +63,17 @@ * Returns: none */ -extern Widget initial_widget, top; +extern Widget top; static Widget warnShell, warnDialog; -void -PopdownWarning(w, client, call) - Widget w; XtPointer client, call; +static void +PopdownWarning(Widget w, XtPointer client, XtPointer call) { XtPopdown((Widget)client); } void -PopupWarning(man_globals, string) -ManpageGlobals * man_globals; -char * string; +PopupWarning(ManpageGlobals * man_globals, char * string) { int n; Arg wargs[3]; @@ -122,29 +119,6 @@ } } - -/* THIS ROUTINE IS OBSOLETE... - * Function Name: PrintWarning - * Description: This function prints a warning message to stderr. - * Arguments: string - the specific warning string. - * Returns: none - */ - -void -PrintWarning(man_globals, string) -ManpageGlobals * man_globals; -char * string; -{ - char buffer[BUFSIZ]; - - sprintf( buffer, "Xman Warning: %s", string); - - if (man_globals != NULL) - ChangeLabel(man_globals->label, buffer); - - fprintf(stderr, "%s\n", buffer); -} - /* Function Name: PrintError * Description: This Function prints an error message and exits. * Arguments: string - the specific message. @@ -152,8 +126,7 @@ */ void -PrintError(string) -char * string; +PrintError(char * string) { fprintf(stderr,"Xman Error: %s\n",string); exit(1); @@ -167,9 +140,7 @@ */ void -OpenFile(man_globals, file) -ManpageGlobals * man_globals; -FILE * file; +OpenFile(ManpageGlobals * man_globals, FILE * file) { Arg arglist[1]; Cardinal num_args = 0; @@ -199,9 +170,7 @@ */ FILE * -FindManualFile(man_globals, section_num, entry_num) -ManpageGlobals * man_globals; -int section_num, entry_num; +FindManualFile(ManpageGlobals * man_globals, int section_num, int entry_num) { FILE * file; char path[BUFSIZ], page[BUFSIZ], section[BUFSIZ], *temp; @@ -212,7 +181,7 @@ int i; #endif - temp = CreateManpageName(entry); + temp = CreateManpageName(entry, 0, 0); sprintf(man_globals->manpage_title, "The current manual page is: %s.", temp); XtFree(temp); @@ -305,9 +274,7 @@ */ static FILE * -Uncompress(man_globals, filename) -ManpageGlobals * man_globals; -char * filename; +Uncompress(ManpageGlobals * man_globals, char * filename) { char tmp_file[BUFSIZ], error_buf[BUFSIZ]; FILE * file; @@ -336,9 +303,7 @@ */ static Boolean -UncompressNamed(man_globals, filename, output) -ManpageGlobals * man_globals; -char * filename, * output; +UncompressNamed(ManpageGlobals * man_globals, char * filename, char * output) { char tmp[BUFSIZ], cmdbuf[BUFSIZ], error_buf[BUFSIZ]; struct stat junk; @@ -389,9 +354,7 @@ /* ARGSUSED */ FILE * -Format(man_globals, entry) -ManpageGlobals * man_globals; -char * entry; +Format(ManpageGlobals * man_globals, char * entry) { FILE * file; Widget manpage = man_globals->manpagewidgets.manpage; @@ -489,9 +452,7 @@ */ static Boolean -UncompressUnformatted(man_globals, entry, filename) -ManpageGlobals * man_globals; -char * entry, * filename; +UncompressUnformatted(ManpageGlobals * man_globals, char * entry, char * filename) { char path[BUFSIZ], page[BUFSIZ], section[BUFSIZ], input[BUFSIZ]; int len_cat = strlen(CAT), len_man = strlen(MAN); @@ -593,9 +554,7 @@ */ void -AddCursor(w,cursor) -Widget w; -Cursor cursor; +AddCursor(Widget w, Cursor cursor) { XColor colors[2]; Arg args[10]; @@ -627,9 +586,7 @@ */ void -ChangeLabel(w,str) -Widget w; -char * str; +ChangeLabel(Widget w, char * str) { Arg arglist[3]; /* An argument list. */ @@ -664,10 +621,7 @@ */ void -PositionCenter(widget,x,y,above,left,v_space,h_space) -Widget widget; -int x,y,above,left; -int h_space,v_space; +PositionCenter(Widget widget, int x, int y, int above, int left, int v_space, int h_space) { Arg wargs[2]; int x_temp,y_temp; /* location of the new window. */ @@ -711,8 +665,7 @@ */ void -ParseEntry(entry, path, sect, page) -char *entry, *path, *page, *sect; +ParseEntry(char *entry, char *path, char *sect, char *page) { char *c, temp[BUFSIZ]; @@ -755,8 +708,7 @@ */ ManpageGlobals * -GetGlobals(w) -Widget w; +GetGlobals(Widget w) { Widget temp; caddr_t data; @@ -788,9 +740,7 @@ */ void -SaveGlobals(w, globals) -Widget w; -ManpageGlobals * globals; +SaveGlobals(Widget w, ManpageGlobals * globals) { if (XSaveContext(XtDisplay(w), XtWindow(w), manglobals_context, (caddr_t) globals) != XCSUCCESS) @@ -808,8 +758,7 @@ */ void -RemoveGlobals(w) -Widget w; +RemoveGlobals(Widget w) { if (XDeleteContext(XtDisplay(w), XtWindow(w), manglobals_context) != XCSUCCESS) Index: xc/programs/xman/pages.c diff -u xc/programs/xman/pages.c:1.1 xc/programs/xman/pages.c:removed --- xc/programs/xman/pages.c:1.1 Wed Mar 8 16:32:59 2000 +++ xc/programs/xman/pages.c Wed Mar 8 16:32:59 2000 @@ -1 +0,0 @@ -/* This file is now obsolete. */ Index: xc/programs/xman/search.c diff -u xc/programs/xman/search.c:1.1 xc/programs/xman/search.c:1.3 --- xc/programs/xman/search.c:1.1 Wed Mar 8 16:32:59 2000 +++ xc/programs/xman/search.c Wed Mar 8 16:32:59 2000 @@ -1,5 +1,4 @@ /* $XConsortium: search.c,v 1.21 94/04/17 20:43:58 rws Exp $ */ -/* $XFree86: xc/programs/xman/search.c,v 1.1 2000/02/12 03:55:18 dawes Exp $ */ /* Copyright (c) 1987, 1988 X Consortium @@ -29,6 +28,7 @@ from the X Consortium. */ +/* $XFree86: xc/programs/xman/search.c,v 1.3 2000/03/03 23:16:28 dawes Exp $ */ #include "globals.h" @@ -38,12 +38,8 @@ #define SEARCHARGS 10 -FILE * DoManualSearch(); -static int BEntrySearch(); - -#ifdef MANCONF -Bool ReadManConfig(); -#endif +FILE * DoManualSearch(ManpageGlobals *man_globals, char * string); +static int BEntrySearch(char * string, char ** first, int number); /* Function Name: MakeSearchWidget * Description: This Function Creates the Search Widget. @@ -53,12 +49,10 @@ */ void -MakeSearchWidget(man_globals, parent) -ManpageGlobals * man_globals; -Widget parent; +MakeSearchWidget(ManpageGlobals * man_globals, Widget parent) { Widget dialog, command, text, cancel; - Arg arglist[1]; + Arg arglist[2]; Cardinal num_args = 0; XtSetArg(arglist[0], XtNtransientFor, parent); @@ -94,8 +88,6 @@ PopupWarning(NULL, "Could not find manual search widget in MakeSearchWidget."); else { - Cardinal num_args = 0; - Arg arglist[2]; static char * half_size[] = { MANUALSEARCH, APROPOSSEARCH, NULL }; @@ -103,6 +95,7 @@ "label", "value", CANCEL, NULL }; + num_args = 0; XtSetArg(arglist[num_args], XtNfromVert, command); num_args++; XtSetArg(arglist[num_args], XtNfromHoriz, NULL); num_args++; XtSetValues(cancel, arglist, num_args); @@ -118,8 +111,8 @@ */ static char * -SearchString(man_globals) -ManpageGlobals * man_globals; +SearchString( +ManpageGlobals * man_globals) { Widget dialog; @@ -154,9 +147,7 @@ */ FILE * -DoSearch(man_globals,type) -ManpageGlobals * man_globals; -int type; +DoSearch(ManpageGlobals * man_globals, int type) { char cmdbuf[BUFSIZ],*mantmp,*manpath; char tmp[BUFSIZ],path[BUFSIZ]; @@ -298,9 +289,7 @@ #define NO_ENTRY -100 FILE * -DoManualSearch(man_globals, string) -ManpageGlobals *man_globals; -char * string; +DoManualSearch(ManpageGlobals *man_globals, char * string) { int e_num = NO_ENTRY; int i; @@ -350,10 +339,10 @@ */ static int -BEntrySearch(string, first, number) -char * string; -char ** first; -int number; +BEntrySearch( +char * string, +char ** first, +int number) { int check, cmp, len_cmp, global_number; char *head, *tail; Index: xc/programs/xman/tkfuncs.c diff -u xc/programs/xman/tkfuncs.c:1.1 xc/programs/xman/tkfuncs.c:1.3 --- xc/programs/xman/tkfuncs.c:1.1 Wed Mar 8 16:32:59 2000 +++ xc/programs/xman/tkfuncs.c Wed Mar 8 16:32:59 2000 @@ -28,6 +28,7 @@ from the X Consortium. */ +/* $XFree86: xc/programs/xman/tkfuncs.c,v 1.3 2000/03/03 23:16:28 dawes Exp $ */ #include <X11/X.h> #include <X11/Xos.h> @@ -36,6 +37,8 @@ #include <X11/StringDefs.h> #include <X11/IntrinsicP.h> +#include "globals.h" + /* * I am doing the "wrong" thing here by looking in the core field for the * widget to get this info, the "right" thing to do is to do a XtGetValues @@ -49,8 +52,7 @@ */ int -Width(w) -Widget w; +Width(Widget w) { return( (int) w->core.width ); } @@ -62,8 +64,7 @@ */ int -Height(w) -Widget w; +Height(Widget w) { return( (int) w->core.height ); } @@ -75,8 +76,7 @@ */ int -BorderWidth(w) -Widget w; +BorderWidth(Widget w) { return( (int) w->core.border_width ); } @@ -93,8 +93,7 @@ */ char * -Name(w) -Widget w; +Name(Widget w) { return( w->core.name); } Index: xc/programs/xman/vendor.c diff -u xc/programs/xman/vendor.c:1.1 xc/programs/xman/vendor.c:1.3 --- xc/programs/xman/vendor.c:1.1 Wed Mar 8 16:32:59 2000 +++ xc/programs/xman/vendor.c Wed Mar 8 16:32:59 2000 @@ -1,5 +1,4 @@ /* $XConsortium: vendor.c,v 1.10 94/04/17 20:43:59 rws Exp $ */ -/* $XFree86: xc/programs/xman/vendor.c,v 1.1 2000/02/12 03:55:19 dawes Exp $ */ /* Copyright (c) 1987, 1988 X Consortium @@ -29,6 +28,7 @@ from the X Consortium. */ +/* $XFree86: xc/programs/xman/vendor.c,v 1.3 2000/03/03 23:16:28 dawes Exp $ */ /* Vendor-specific data structures and operations */ @@ -174,9 +174,9 @@ * Returns: none. */ -void AddStandardSections(list, path) -SectionList **list; -char * path; +void AddStandardSections( +SectionList **list, +char * path) { #ifdef CRAY AddStandardCraySections(list, path); @@ -206,9 +206,9 @@ * Returns: none. */ -AddStandardCraySections(list, path) -SectionList **list; -char *path; +void AddStandardCraySections( +SectionList **list, +char *path) { char file[BUFSIZ]; int i; @@ -273,20 +273,19 @@ */ char * -CreateManpageName(entry, section, flags) -char * entry; -int section; -int flags; +CreateManpageName( +char * entry, +int section, /* FIXME: unused */ +int flags) { char * cp; - char *p; char page[BUFSIZ]; char sect[BUFSIZ]; ParseEntry(entry, NULL, sect, page); #ifndef CRAY - if ( (cp = rindex(page, '.')) != NULL) + if ( (cp = rindex(page, '.')) != NULL) { if ( (int)strlen(cp) > 2 ) { *cp++ = '('; while( (cp[1] != '\0') ) { @@ -298,13 +297,14 @@ } else *cp = '\0'; + } #else /* CRAY - pick up the Cray name from the section */ if ( (cp = rindex(page, '.')) == NULL) cp = page + strlen(page); if ((flags & MSUFFIX) && strlen(sect) > 4) { - p = sect + 4; + char *p = sect + 4; *cp++ = '('; while (*p) *cp++ = *p++; Index: xc/programs/xman/vendor.h diff -u xc/programs/xman/vendor.h:1.2 xc/programs/xman/vendor.h:1.4 --- xc/programs/xman/vendor.h:1.2 Wed Mar 8 16:32:59 2000 +++ xc/programs/xman/vendor.h Wed Mar 8 16:32:59 2000 @@ -1,5 +1,4 @@ /* $XConsortium: vendor.h,v 1.12 94/04/17 20:44:00 rws Exp $ */ -/* $XFree86: xc/programs/xman/vendor.h,v 1.2 2000/02/18 12:20:19 tsi Exp $ */ /* Copyright (c) 1991 X Consortium @@ -29,6 +28,7 @@ from the X Consortium. */ +/* $XFree86: xc/programs/xman/vendor.h,v 1.4 2000/03/03 23:16:29 dawes Exp $ */ /* Vendor-specific definitions */ @@ -197,12 +197,13 @@ # define CAT "cat" #endif -extern void AddStandardSections(); -extern void AddNewSection(); - typedef struct _SectionList { struct _SectionList * next; char * label; /* section label */ char * directory; /* section directory */ int flags; } SectionList; + +extern char * CreateManpageName(char * entry, int section, int flags); +extern void AddStandardSections(SectionList **list, char * path); +extern void AddNewSection(SectionList **list, char * path, char * file, char * label, int flags); Index: xc/programs/xterm/INSTALL diff -u xc/programs/xterm/INSTALL:3.19 xc/programs/xterm/INSTALL:3.20 --- xc/programs/xterm/INSTALL:3.19 Wed Mar 8 16:33:02 2000 +++ xc/programs/xterm/INSTALL Wed Mar 8 16:33:02 2000 @@ -1,4 +1,4 @@ --- $XFree86: xc/programs/xterm/INSTALL,v 3.19 2000/01/24 22:21:50 dawes Exp $ +-- $XFree86: xc/programs/xterm/INSTALL,v 3.20 2000/03/03 20:02:27 dawes Exp $ -- Thomas E. Dickey <dickey@clark.net> Xterm is normally built as part of the X Windows source tree, using @@ -217,6 +217,10 @@ Logging was disabled in X11R5 xterm because of security problems. They were addressed in X11R6, but the feature was not reinstated. + + --enable-sco-fkeys enable support for SCO-style function keys + + Compile-in code to support SCO-style function keys. --enable-toolbar enable pulldown menus on toolbar Index: xc/programs/xterm/Imakefile diff -u xc/programs/xterm/Imakefile:3.28 xc/programs/xterm/Imakefile:3.29 --- xc/programs/xterm/Imakefile:3.28 Wed Mar 8 16:33:03 2000 +++ xc/programs/xterm/Imakefile Wed Mar 8 16:33:03 2000 @@ -7,7 +7,7 @@ XCOMM bcopy (or memcpy) cannot, write a routine called bcopy and link it in XCOMM or add -Dbcopy=mybcopy to the DEFINES list below. XCOMM -XCOMM $XFree86: xc/programs/xterm/Imakefile,v 3.28 2000/01/24 22:21:51 dawes Exp $ +XCOMM $XFree86: xc/programs/xterm/Imakefile,v 3.29 2000/03/03 20:02:27 dawes Exp $ XCOMM /* Uncomment SCROLLBAR_RIGHT if you want the scroll bar to be on the right */ @@ -61,12 +61,17 @@ PTYLIB = -lutil #endif +#ifdef OS2Architecture +/* + * Only used in os2main.c, see ptyx.h for OPT_I18N_SUPPORT + * <werner@suse.de> + */ #if XtermWithI18N I18NDEF = -DI18N -#endif - -#ifdef OS2Architecture + FEATURE_DEFINES = -DDEBUG -DALLOWLOGGING $(I18NDEF) +#else FEATURE_DEFINES = -DDEBUG -DALLOWLOGGING +#endif #endif OSMAJORVERSION = OSMajorVersion Index: xc/programs/xterm/XTerm.ad diff -u xc/programs/xterm/XTerm.ad:3.15 xc/programs/xterm/XTerm.ad:3.16 --- xc/programs/xterm/XTerm.ad:3.15 Wed Mar 8 16:33:03 2000 +++ xc/programs/xterm/XTerm.ad Wed Mar 8 16:33:03 2000 @@ -3,7 +3,7 @@ ! ! ! -! $XFree86: xc/programs/xterm/XTerm.ad,v 3.15 2000/02/13 00:56:11 dawes Exp $ +! $XFree86: xc/programs/xterm/XTerm.ad,v 3.16 2000/03/03 20:02:28 dawes Exp $ XTerm.JoinSession:False @@ -83,6 +83,7 @@ *fontMenu*fontescape*Label: Escape Sequence *fontMenu*fontsel*Label: Selection !fontescape and fontsel overridden by application +*fontMenu*font-linedrawing*Label: Line-Drawing Characters *fontMenu*font-doublesize*Label: Doublesized Characters *fontMenu*font-loadable*Label: VT220 Soft Fonts Index: xc/programs/xterm/aclocal.m4 diff -u xc/programs/xterm/aclocal.m4:3.29 xc/programs/xterm/aclocal.m4:3.30 --- xc/programs/xterm/aclocal.m4:3.29 Wed Mar 8 16:33:03 2000 +++ xc/programs/xterm/aclocal.m4 Wed Mar 8 16:33:03 2000 @@ -1,5 +1,5 @@ dnl -dnl $XFree86: xc/programs/xterm/aclocal.m4,v 3.29 2000/01/24 22:21:52 dawes Exp $ +dnl $XFree86: xc/programs/xterm/aclocal.m4,v 3.30 2000/03/03 20:02:28 dawes Exp $ dnl dnl --------------------------------------------------------------------------- dnl @@ -613,9 +613,9 @@ ],[ { XIM xim; - XIMStyles *xim_styles; + XIMStyles *xim_styles = 0; XIMStyle input_style; - Widget w; + Widget w = 0; XSetLocaleModifiers("@im=none"); xim = XOpenIM(XtDisplay(w), NULL, NULL, NULL); Index: xc/programs/xterm/charproc.c diff -u xc/programs/xterm/charproc.c:3.101 xc/programs/xterm/charproc.c:3.102 --- xc/programs/xterm/charproc.c:3.101 Wed Mar 8 16:33:03 2000 +++ xc/programs/xterm/charproc.c Wed Mar 8 16:33:03 2000 @@ -1,6 +1,6 @@ /* * $XConsortium: charproc.c /main/196 1996/12/03 16:52:46 swick $ - * $XFree86: xc/programs/xterm/charproc.c,v 3.101 2000/02/18 12:20:22 tsi Exp $ + * $XFree86: xc/programs/xterm/charproc.c,v 3.102 2000/02/29 03:09:26 dawes Exp $ */ /* @@ -196,7 +196,7 @@ #if DFT_COLORMODE #define DFT_COLOR(name) name #else -#define DFT_COLOR(name) "XtDefaultForeground" +#define DFT_COLOR(name) XtDefaultForeground #endif #endif @@ -411,9 +411,9 @@ XtRBoolean, (XtPointer) &defaultFALSE}, {XtNbackground, XtCBackground, XtRPixel, sizeof(Pixel), XtOffsetOf(XtermWidgetRec, core.background_pixel), - XtRString, "XtDefaultBackground"}, -COLOR_RES(XtNforeground, screen.foreground, "XtDefaultForeground"), -COLOR_RES(XtNcursorColor, screen.cursorcolor, "XtDefaultForeground"), + XtRString, XtDefaultBackground}, +Cres(XtNforeground, screen.foreground, XtDefaultForeground), +Cres(XtNcursorColor, screen.cursorcolor, XtDefaultForeground), #if OPT_BLINK_CURS {XtNcursorBlink, XtCCursorBlink, XtRBoolean, sizeof(Boolean), XtOffsetOf(XtermWidgetRec, screen.cursor_blink), @@ -488,7 +488,7 @@ {XtNmarginBell, XtCMarginBell, XtRBoolean, sizeof(Boolean), XtOffsetOf(XtermWidgetRec, screen.marginbell), XtRBoolean, (XtPointer) &defaultFALSE}, -COLOR_RES(XtNpointerColor, screen.mousecolor, "XtDefaultForeground"), +Cres(XtNpointerColor, screen.mousecolor, XtDefaultForeground), {XtNpointerColorBackground, XtCBackground, XtRPixel, sizeof(Pixel), XtOffsetOf(XtermWidgetRec, screen.mousecolorback), XtRString, "XtDefaultBackground"}, @@ -659,9 +659,9 @@ #elif OPT_88_COLORS # include <88colres.h> #endif -COLOR_RES(XtNcolorBD, screen.Acolors[COLOR_BD], DFT_COLOR("XtDefaultForeground")), -COLOR_RES(XtNcolorBL, screen.Acolors[COLOR_BL], DFT_COLOR("XtDefaultForeground")), -COLOR_RES(XtNcolorUL, screen.Acolors[COLOR_UL], DFT_COLOR("XtDefaultForeground")), +COLOR_RES(XtNcolorBD, screen.Acolors[COLOR_BD], DFT_COLOR(XtDefaultForeground)), +COLOR_RES(XtNcolorBL, screen.Acolors[COLOR_BL], DFT_COLOR(XtDefaultForeground)), +COLOR_RES(XtNcolorUL, screen.Acolors[COLOR_UL], DFT_COLOR(XtDefaultForeground)), {XtNcolorMode, XtCColorMode, XtRBoolean, sizeof(Boolean), XtOffsetOf(XtermWidgetRec, screen.colorMode), XtRBoolean, (XtPointer) &defaultCOLORMODE}, @@ -685,7 +685,7 @@ XtOffsetOf(XtermWidgetRec, misc.dynamicColors), XtRBoolean, (XtPointer) &defaultTRUE}, #if OPT_HIGHLIGHT_COLOR -COLOR_RES(XtNhighlightColor, screen.highlightcolor, "XtDefaultForeground"), +Cres(XtNhighlightColor, screen.highlightcolor, XtDefaultForeground), #endif /* OPT_HIGHLIGHT_COLOR */ {XtNboldMode, XtCBoldMode, XtRBoolean, sizeof(Boolean), XtOffsetOf(XtermWidgetRec, screen.bold_mode), @@ -857,7 +857,6 @@ { int fg = term->sgr_foreground; -#if NUM_ANSI_COLORS < 256 if (term->screen.colorAttrMode || (fg < 0)) { if (term->screen.colorULMode && (term->flags & UNDERLINE)) @@ -867,7 +866,6 @@ if (term->screen.colorBLMode && (term->flags & BLINK)) fg = COLOR_BL; } -#endif /* This implements the IBM PC-style convention of 8-colors, with one * bit for bold, thus mapping the 0-7 codes to 8-15. It won't make @@ -4306,12 +4304,18 @@ wnew->screen.colorULMode = request->screen.colorULMode; for (i = 0, color_ok = False; i < MAXCOLORS; i++) { - TRACE(("Acolors[%d] = %#lx\n", i, request->screen.Acolors[i])); wnew->screen.Acolors[i] = request->screen.Acolors[i]; +#if OPT_COLOR_RES + TRACE(("Acolors[%d] = %s\n", i, request->screen.Acolors[i].resource)); + if (strcmp(wnew->screen.Acolors[i].resource, XtDefaultForeground)) + color_ok = True; +#else + TRACE(("Acolors[%d] = %#lx\n", i, request->screen.Acolors[i])); if (wnew->screen.Acolors[i] != wnew->dft_foreground && wnew->screen.Acolors[i] != request->screen.foreground && wnew->screen.Acolors[i] != request->core.background_pixel) color_ok = True; +#endif } /* If none of the colors are anything other than the foreground or Index: xc/programs/xterm/configure diff -u xc/programs/xterm/configure:3.45 xc/programs/xterm/configure:3.46 --- xc/programs/xterm/configure:3.45 Wed Mar 8 16:33:03 2000 +++ xc/programs/xterm/configure Wed Mar 8 16:33:03 2000 @@ -205,13 +205,14 @@ --disable-doublechars disable support for double-size chars --disable-boxchars disable fallback-support for box chars --enable-hp-fkeys enable support for HP-style function keys + --enable-sco-fkeys enable support for SCO-style function keys --disable-i18n disable internationalization --disable-initial-erase disable setup for stty erase --disable-input-method disable input-method --enable-logging enable logging - --enable-logfile-exec enable exec'd logfile filter EOF cat <<EOF + --enable-logfile-exec enable exec'd logfile filter --disable-maximize disable actions for iconify/deiconify/maximize/restore --disable-num-lock disable NumLock keypad support --disable-rightbar disable right-scrollbar support @@ -223,9 +224,9 @@ --enable-dec-locator enable DECterm Locator support --disable-ziconbeep disable -ziconbeep option --enable-trace test: set to enable debugging traces - --disable-echo display "compiling" commands EOF cat <<EOF + --disable-echo display "compiling" commands --enable-xmc-glitch test: enable xmc magic-cookie emulation --enable-warnings test: turn on GCC compiler warnings EOF @@ -595,7 +596,7 @@ fi echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:599: checking host system type" >&5 +echo "configure:600: checking host system type" >&5 host_alias=$host case "$host_alias" in @@ -646,7 +647,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:650: checking for $ac_word" >&5 +echo "configure:651: 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 @@ -676,7 +677,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:680: checking for $ac_word" >&5 +echo "configure:681: 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 @@ -727,7 +728,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:731: checking for $ac_word" >&5 +echo "configure:732: 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 @@ -759,7 +760,7 @@ fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:763: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:764: 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. @@ -770,12 +771,12 @@ cat > conftest.$ac_ext << EOF -#line 774 "configure" +#line 775 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:779: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:780: \"$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 @@ -801,12 +802,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:805: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:806: 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:810: checking whether we are using GNU C" >&5 +echo "configure:811: 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 @@ -815,7 +816,7 @@ yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:819: \"$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:820: \"$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 @@ -834,7 +835,7 @@ ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:838: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:839: 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 @@ -866,7 +867,7 @@ fi echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:870: checking how to run the C preprocessor" >&5 +echo "configure:871: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -881,13 +882,13 @@ # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext <<EOF -#line 885 "configure" +#line 886 "configure" #include "confdefs.h" #include <assert.h> Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:891: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:892: \"$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 : @@ -898,13 +899,13 @@ rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext <<EOF -#line 902 "configure" +#line 903 "configure" #include "confdefs.h" #include <assert.h> Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:908: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:909: \"$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 : @@ -915,13 +916,13 @@ rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext <<EOF -#line 919 "configure" +#line 920 "configure" #include "confdefs.h" #include <assert.h> Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:925: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:926: \"$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 : @@ -947,13 +948,13 @@ if test $ac_cv_prog_gcc = yes; then echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6 -echo "configure:951: checking whether ${CC-cc} needs -traditional" >&5 +echo "configure:952: 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 <<EOF -#line 957 "configure" +#line 958 "configure" #include "confdefs.h" #include <sgtty.h> Autoconf TIOCGETP @@ -971,7 +972,7 @@ if test $ac_cv_prog_gcc_traditional = no; then cat > conftest.$ac_ext <<EOF -#line 975 "configure" +#line 976 "configure" #include "confdefs.h" #include <termio.h> Autoconf TCGETA @@ -1004,7 +1005,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:1008: checking for a BSD compatible install" >&5 +echo "configure:1009: 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 @@ -1059,9 +1060,9 @@ ### checks for UNIX variants that set C preprocessor variables echo $ac_n "checking for AIX""... $ac_c" 1>&6 -echo "configure:1063: checking for AIX" >&5 +echo "configure:1064: checking for AIX" >&5 cat > conftest.$ac_ext <<EOF -#line 1065 "configure" +#line 1066 "configure" #include "confdefs.h" #ifdef _AIX yes @@ -1083,7 +1084,7 @@ echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6 -echo "configure:1087: checking for POSIXized ISC" >&5 +echo "configure:1088: 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 @@ -1105,17 +1106,17 @@ ac_safe=`echo "minix/config.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for minix/config.h""... $ac_c" 1>&6 -echo "configure:1109: checking for minix/config.h" >&5 +echo "configure:1110: checking for minix/config.h" >&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 -#line 1114 "configure" +#line 1115 "configure" #include "confdefs.h" #include <minix/config.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1119: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1120: \"$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* @@ -1162,17 +1163,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1166: checking for $ac_hdr" >&5 +echo "configure:1167: 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 -#line 1171 "configure" +#line 1172 "configure" #include "confdefs.h" #include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1176: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1177: \"$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* @@ -1202,13 +1203,13 @@ ### checks for typedefs echo $ac_n "checking for size_t in <sys/types.h> or <stdio.h>""... $ac_c" 1>&6 -echo "configure:1206: checking for size_t in <sys/types.h> or <stdio.h>" >&5 +echo "configure:1207: checking for size_t in <sys/types.h> or <stdio.h>" >&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 <<EOF -#line 1212 "configure" +#line 1213 "configure" #include "confdefs.h" #include <sys/types.h> @@ -1221,7 +1222,7 @@ size_t x ; return 0; } EOF -if { (eval echo configure:1225: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1226: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cf_cv_type_size_t=yes else @@ -1241,12 +1242,12 @@ echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:1245: checking for ANSI C header files" >&5 +echo "configure:1246: 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 <<EOF -#line 1250 "configure" +#line 1251 "configure" #include "confdefs.h" #include <stdlib.h> #include <stdarg.h> @@ -1254,7 +1255,7 @@ #include <float.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1258: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1259: \"$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* @@ -1271,7 +1272,7 @@ 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 -#line 1275 "configure" +#line 1276 "configure" #include "confdefs.h" #include <string.h> EOF @@ -1289,7 +1290,7 @@ 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 -#line 1293 "configure" +#line 1294 "configure" #include "confdefs.h" #include <stdlib.h> EOF @@ -1310,7 +1311,7 @@ : else cat > conftest.$ac_ext <<EOF -#line 1314 "configure" +#line 1315 "configure" #include "confdefs.h" #include <ctype.h> #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -1321,7 +1322,7 @@ exit (0); } EOF -if { (eval echo configure:1325: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:1326: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -1345,12 +1346,12 @@ fi echo $ac_n "checking for time_t""... $ac_c" 1>&6 -echo "configure:1349: checking for time_t" >&5 +echo "configure:1350: 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 cat > conftest.$ac_ext <<EOF -#line 1354 "configure" +#line 1355 "configure" #include "confdefs.h" #include <sys/types.h> #if STDC_HEADERS @@ -1388,12 +1389,12 @@ do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1392: checking for $ac_func" >&5 +echo "configure:1393: 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 <<EOF -#line 1397 "configure" +#line 1398 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -1416,7 +1417,7 @@ ; return 0; } EOF -if { (eval echo configure:1420: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1421: \"$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 @@ -1442,12 +1443,12 @@ echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:1446: checking for memmove" >&5 +echo "configure:1447: checking for memmove" >&5 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 1451 "configure" +#line 1452 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char memmove(); below. */ @@ -1470,7 +1471,7 @@ ; return 0; } EOF -if { (eval echo configure:1474: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1475: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_memmove=yes" else @@ -1489,12 +1490,12 @@ echo "$ac_t""no" 1>&6 echo $ac_n "checking for bcopy""... $ac_c" 1>&6 -echo "configure:1493: checking for bcopy" >&5 +echo "configure:1494: 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 <<EOF -#line 1498 "configure" +#line 1499 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char bcopy(); below. */ @@ -1517,7 +1518,7 @@ ; return 0; } EOF -if { (eval echo configure:1521: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1522: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_bcopy=yes" else @@ -1533,7 +1534,7 @@ echo "$ac_t""yes" 1>&6 echo $ac_n "checking if bcopy does overlapping moves""... $ac_c" 1>&6 -echo "configure:1537: checking if bcopy does overlapping moves" >&5 +echo "configure:1538: 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 @@ -1542,7 +1543,7 @@ cf_cv_good_bcopy=unknown else cat > conftest.$ac_ext <<EOF -#line 1546 "configure" +#line 1547 "configure" #include "confdefs.h" int main() { @@ -1555,7 +1556,7 @@ } EOF -if { (eval echo configure:1559: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:1560: \"$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 @@ -1593,7 +1594,7 @@ echo $ac_n "checking for full tgetent function""... $ac_c" 1>&6 -echo "configure:1597: checking for full tgetent function" >&5 +echo "configure:1598: 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 @@ -1608,7 +1609,7 @@ echo "cross-compiling, cannot verify if a termcap/tgetent is present in $cf_termlib" 1>&5 else cat > conftest.$ac_ext <<EOF -#line 1612 "configure" +#line 1613 "configure" #include "confdefs.h" /* terminfo implementations ignore the buffer argument, making it useless for @@ -1622,7 +1623,7 @@ tgetent(buffer, "vt100"); exit(buffer[0] == 0); } EOF -if { (eval echo configure:1626: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:1627: \"$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 @@ -1658,7 +1659,7 @@ EOF cat > conftest.$ac_ext <<EOF -#line 1662 "configure" +#line 1663 "configure" #include "confdefs.h" #include <termcap.h> @@ -1669,7 +1670,7 @@ #endif ; return 0; } EOF -if { (eval echo configure:1673: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1674: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cat >> confdefs.h <<\EOF #define HAVE_TERMCAP_H 1 @@ -1687,7 +1688,7 @@ # 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:1691: checking for partial tgetent function" >&5 +echo "configure:1692: 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 @@ -1696,14 +1697,14 @@ for cf_termlib in $cf_TERMLIB ; do LIBS="$cf_save_LIBS -l$cf_termlib" cat > conftest.$ac_ext <<EOF -#line 1700 "configure" +#line 1701 "configure" #include "confdefs.h" int main() { tgetent(0, 0) ; return 0; } EOF -if { (eval echo configure:1707: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1708: \"$ac_link\") 1>&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" @@ -1726,17 +1727,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1730: checking for $ac_hdr" >&5 +echo "configure:1731: 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 -#line 1735 "configure" +#line 1736 "configure" #include "confdefs.h" #include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1740: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1741: \"$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* @@ -1777,17 +1778,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1781: checking for $ac_hdr" >&5 +echo "configure:1782: 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 -#line 1786 "configure" +#line 1787 "configure" #include "confdefs.h" #include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1791: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1792: \"$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* @@ -1814,13 +1815,13 @@ done echo $ac_n "checking for lastlog path""... $ac_c" 1>&6 -echo "configure:1818: checking for lastlog path" >&5 +echo "configure:1819: 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 <<EOF -#line 1824 "configure" +#line 1825 "configure" #include "confdefs.h" #include <sys/types.h> @@ -1835,7 +1836,7 @@ char *path = _PATH_LASTLOG ; return 0; } EOF -if { (eval echo configure:1839: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1840: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cf_cv_path_lastlog="_PATH_LASTLOG" else @@ -1862,7 +1863,7 @@ echo $ac_n "checking for utmp implementation""... $ac_c" 1>&6 -echo "configure:1866: checking for utmp implementation" >&5 +echo "configure:1867: 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 @@ -1870,7 +1871,7 @@ cf_cv_have_utmp=no for cf_header in utmpx utmp ; do cat > conftest.$ac_ext <<EOF -#line 1874 "configure" +#line 1875 "configure" #include "confdefs.h" #include <sys/types.h> @@ -1886,7 +1887,7 @@ ; return 0; } EOF -if { (eval echo configure:1890: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1891: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cf_cv_have_utmp=$cf_header break @@ -1896,7 +1897,7 @@ rm -rf conftest* cat > conftest.$ac_ext <<EOF -#line 1900 "configure" +#line 1901 "configure" #include "confdefs.h" #include <sys/types.h> @@ -1912,7 +1913,7 @@ ; return 0; } EOF -if { (eval echo configure:1916: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1917: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cf_cv_have_utmp=$cf_header cat >> confdefs.h <<\EOF @@ -1947,13 +1948,13 @@ if test $cf_cv_have_utmp != no ; then echo $ac_n "checking if utmp.ut_host is declared""... $ac_c" 1>&6 -echo "configure:1951: checking if utmp.ut_host is declared" >&5 +echo "configure:1952: 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 <<EOF -#line 1957 "configure" +#line 1958 "configure" #include "confdefs.h" #include <sys/types.h> @@ -1962,7 +1963,7 @@ struct $cf_cv_have_utmp x; char *y = &x.ut_host[0] ; return 0; } EOF -if { (eval echo configure:1966: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1967: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cf_cv_have_utmp_ut_host=yes else @@ -1986,7 +1987,7 @@ 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:1990: checking for exit-status in $cf_cv_have_utmp" >&5 +echo "configure:1991: 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 @@ -1998,7 +1999,7 @@ ut_exit.ut_exit do cat > conftest.$ac_ext <<EOF -#line 2002 "configure" +#line 2003 "configure" #include "confdefs.h" #include <sys/types.h> @@ -2007,7 +2008,7 @@ struct $cf_cv_have_utmp x; long y = x.$cf_result = 0 ; return 0; } EOF -if { (eval echo configure:2011: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2012: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cf_cv_have_utmp_ut_xstatus=$cf_result break @@ -2039,13 +2040,13 @@ if test $cf_cv_have_utmp != no ; then echo $ac_n "checking if utmp.ut_xtime is declared""... $ac_c" 1>&6 -echo "configure:2043: checking if utmp.ut_xtime is declared" >&5 +echo "configure:2044: 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 <<EOF -#line 2049 "configure" +#line 2050 "configure" #include "confdefs.h" #include <sys/types.h> @@ -2054,7 +2055,7 @@ struct $cf_cv_have_utmp x; long y = x.ut_xtime = 0 ; return 0; } EOF -if { (eval echo configure:2058: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2059: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cf_cv_have_utmp_ut_xtime=yes else @@ -2062,7 +2063,7 @@ cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext <<EOF -#line 2066 "configure" +#line 2067 "configure" #include "confdefs.h" #include <sys/types.h> @@ -2071,7 +2072,7 @@ struct $cf_cv_have_utmp x; long y = x.ut_tv.tv_sec ; return 0; } EOF -if { (eval echo configure:2075: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2076: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cf_cv_have_utmp_ut_xtime=define else @@ -2106,13 +2107,13 @@ if test $cf_cv_have_utmp != no ; then echo $ac_n "checking if utmp.ut_session is declared""... $ac_c" 1>&6 -echo "configure:2110: checking if utmp.ut_session is declared" >&5 +echo "configure:2111: 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 <<EOF -#line 2116 "configure" +#line 2117 "configure" #include "confdefs.h" #include <sys/types.h> @@ -2121,7 +2122,7 @@ struct $cf_cv_have_utmp x; long y = x.ut_session ; return 0; } EOF -if { (eval echo configure:2125: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2126: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cf_cv_have_utmp_ut_session=yes else @@ -2146,14 +2147,14 @@ echo $ac_n "checking if $cf_cv_have_utmp is SYSV flavor""... $ac_c" 1>&6 -echo "configure:2150: checking if $cf_cv_have_utmp is SYSV flavor" >&5 +echo "configure:2151: 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 <<EOF -#line 2157 "configure" +#line 2158 "configure" #include "confdefs.h" #include <sys/types.h> @@ -2167,7 +2168,7 @@ end${cf_prefix}ent(); ; return 0; } EOF -if { (eval echo configure:2171: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2172: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* cf_cv_sysv_utmp=yes else @@ -2190,7 +2191,7 @@ echo $ac_n "checking if you want to link with utempter""... $ac_c" 1>&6 -echo "configure:2194: checking if you want to link with utempter" >&5 +echo "configure:2195: 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 @@ -2205,7 +2206,7 @@ if test $use_utempter = yes ; then echo $ac_n "checking if we can link with utempter library""... $ac_c" 1>&6 -echo "configure:2209: checking if we can link with utempter library" >&5 +echo "configure:2210: 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 @@ -2213,7 +2214,7 @@ cf_save_LIBS="$LIBS" LIBS="-lutempter $LIBS" cat > conftest.$ac_ext <<EOF -#line 2217 "configure" +#line 2218 "configure" #include "confdefs.h" #include <utempter.h> @@ -2225,7 +2226,7 @@ ; return 0; } EOF -if { (eval echo configure:2229: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2230: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* cf_cv_have_utempter=yes @@ -2255,14 +2256,14 @@ ### checks for structures echo $ac_n "checking if POSIX VDISABLE symbol should be used""... $ac_c" 1>&6 -echo "configure:2259: checking if POSIX VDISABLE symbol should be used" >&5 +echo "configure:2260: checking if POSIX VDISABLE symbol should be used" >&5 if eval "test \"`echo '$''{'cf_cv_posix_vdisable'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$cross_compiling" = yes; then cat > conftest.$ac_ext <<EOF -#line 2266 "configure" +#line 2267 "configure" #include "confdefs.h" #if defined(HAVE_TERMIOS_H) && defined(HAVE_TCGETATTR) @@ -2280,7 +2281,7 @@ #endif ; return 0; } EOF -if { (eval echo configure:2284: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2285: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cf_cv_posix_vdisable=yes else @@ -2292,7 +2293,7 @@ rm -f conftest* else cat > conftest.$ac_ext <<EOF -#line 2296 "configure" +#line 2297 "configure" #include "confdefs.h" #if defined(HAVE_TERMIOS_H) && defined(HAVE_TCGETATTR) @@ -2305,7 +2306,7 @@ int main() { exit(_POSIX_VDISABLE == -1); } #endif EOF -if { (eval echo configure:2309: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2310: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then cf_cv_posix_vdisable=yes else @@ -2331,13 +2332,13 @@ echo $ac_n "checking if external errno is declared""... $ac_c" 1>&6 -echo "configure:2335: checking if external errno is declared" >&5 +echo "configure:2336: 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 <<EOF -#line 2341 "configure" +#line 2342 "configure" #include "confdefs.h" #ifdef HAVE_STDLIB_H @@ -2350,7 +2351,7 @@ long x = (long) errno ; return 0; } EOF -if { (eval echo configure:2354: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2355: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* eval 'cf_cv_dcl_'errno'=yes' else @@ -2381,13 +2382,13 @@ # 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:2385: checking if external errno exists" >&5 +echo "configure:2386: 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 <<EOF -#line 2391 "configure" +#line 2392 "configure" #include "confdefs.h" #undef errno @@ -2397,7 +2398,7 @@ errno = 2 ; return 0; } EOF -if { (eval echo configure:2401: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2402: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval 'cf_cv_have_'errno'=yes' else @@ -2429,7 +2430,7 @@ echo $ac_n "checking for tty group""... $ac_c" 1>&6 -echo "configure:2433: checking for tty group" >&5 +echo "configure:2434: checking for tty group" >&5 if eval "test \"`echo '$''{'cf_cv_tty_group'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2438,7 +2439,7 @@ cf_cv_tty_group=unknown else cat > conftest.$ac_ext <<EOF -#line 2442 "configure" +#line 2443 "configure" #include "confdefs.h" #include <sys/types.h> @@ -2452,7 +2453,7 @@ } EOF -if { (eval echo configure:2456: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2457: \"$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 @@ -2477,7 +2478,7 @@ ### checks for compiler characteristics echo $ac_n "checking for ${CC-cc} option to accept ANSI C""... $ac_c" 1>&6 -echo "configure:2481: checking for ${CC-cc} option to accept ANSI C" >&5 +echo "configure:2482: 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 @@ -2501,7 +2502,7 @@ do CFLAGS="$cf_save_CFLAGS $cf_arg" cat > conftest.$ac_ext <<EOF -#line 2505 "configure" +#line 2506 "configure" #include "confdefs.h" #ifndef CC_HAS_PROTOS @@ -2517,7 +2518,7 @@ struct s2 {int (*f) (double a);}; ; return 0; } EOF -if { (eval echo configure:2521: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2522: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cf_cv_ansi_cc="$cf_arg"; break else @@ -2544,12 +2545,12 @@ fi echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:2548: checking for working const" >&5 +echo "configure:2549: 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 <<EOF -#line 2553 "configure" +#line 2554 "configure" #include "confdefs.h" int main() { @@ -2598,7 +2599,7 @@ ; return 0; } EOF -if { (eval echo configure:2602: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2603: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -2622,12 +2623,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:2626: checking for sys/wait.h that is POSIX.1 compatible" >&5 +echo "configure:2627: 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 <<EOF -#line 2631 "configure" +#line 2632 "configure" #include "confdefs.h" #include <sys/types.h> #include <sys/wait.h> @@ -2643,7 +2644,7 @@ s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } EOF -if { (eval echo configure:2647: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2648: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_sys_wait_h=yes else @@ -2666,13 +2667,13 @@ echo $ac_n "checking if we must define _GNU_SOURCE""... $ac_c" 1>&6 -echo "configure:2670: checking if we must define _GNU_SOURCE" >&5 +echo "configure:2671: 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 <<EOF -#line 2676 "configure" +#line 2677 "configure" #include "confdefs.h" #include <sys/types.h> int main() { @@ -2682,7 +2683,7 @@ #endif ; return 0; } EOF -if { (eval echo configure:2686: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2687: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cf_cv_gnu_source=no else @@ -2692,7 +2693,7 @@ cf_save="$CFLAGS" CFLAGS="$CFLAGS -D_GNU_SOURCE" cat > conftest.$ac_ext <<EOF -#line 2696 "configure" +#line 2697 "configure" #include "confdefs.h" #include <sys/types.h> int main() { @@ -2702,7 +2703,7 @@ #endif ; return 0; } EOF -if { (eval echo configure:2706: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2707: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cf_cv_gnu_source=no else @@ -2727,7 +2728,7 @@ # 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:2731: checking for X" >&5 +echo "configure:2732: checking for X" >&5 # Check whether --with-x or --without-x was given. @@ -2790,12 +2791,12 @@ # First, try using that file with no special directory specified. cat > conftest.$ac_ext <<EOF -#line 2794 "configure" +#line 2795 "configure" #include "confdefs.h" #include <$x_direct_test_include> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2799: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2800: \"$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* @@ -2864,14 +2865,14 @@ ac_save_LIBS="$LIBS" LIBS="-l$x_direct_test_library $LIBS" cat > conftest.$ac_ext <<EOF -#line 2868 "configure" +#line 2869 "configure" #include "confdefs.h" int main() { ${x_direct_test_function}() ; return 0; } EOF -if { (eval echo configure:2875: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2876: \"$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. @@ -2971,7 +2972,7 @@ # FIXME: modify the library lookup in autoconf to # allow _s.a suffix ahead of .a echo $ac_n "checking for open in -lc_s""... $ac_c" 1>&6 -echo "configure:2975: checking for open in -lc_s" >&5 +echo "configure:2976: checking for open in -lc_s" >&5 ac_lib_var=`echo c_s'_'open | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2979,7 +2980,7 @@ ac_save_LIBS="$LIBS" LIBS="-lc_s $LIBS" cat > conftest.$ac_ext <<EOF -#line 2983 "configure" +#line 2984 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -2990,7 +2991,7 @@ open() ; return 0; } EOF -if { (eval echo configure:2994: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2995: \"$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 @@ -3007,7 +3008,7 @@ echo "$ac_t""yes" 1>&6 LIBS="-lc_s $LIBS" echo $ac_n "checking for gethostname in -lbsd""... $ac_c" 1>&6 -echo "configure:3011: checking for gethostname in -lbsd" >&5 +echo "configure:3012: checking for gethostname in -lbsd" >&5 ac_lib_var=`echo bsd'_'gethostname | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3015,7 +3016,7 @@ ac_save_LIBS="$LIBS" LIBS="-lbsd $LIBS" cat > conftest.$ac_ext <<EOF -#line 3019 "configure" +#line 3020 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -3026,7 +3027,7 @@ gethostname() ; return 0; } EOF -if { (eval echo configure:3030: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3031: \"$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 @@ -3043,7 +3044,7 @@ echo "$ac_t""yes" 1>&6 LIBS="-lbsd $LIBS" echo $ac_n "checking for gethostname in -lnsl_s""... $ac_c" 1>&6 -echo "configure:3047: checking for gethostname in -lnsl_s" >&5 +echo "configure:3048: checking for gethostname in -lnsl_s" >&5 ac_lib_var=`echo nsl_s'_'gethostname | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3051,7 +3052,7 @@ ac_save_LIBS="$LIBS" LIBS="-lnsl_s $LIBS" cat > conftest.$ac_ext <<EOF -#line 3055 "configure" +#line 3056 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -3062,7 +3063,7 @@ gethostname() ; return 0; } EOF -if { (eval echo configure:3066: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3067: \"$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 @@ -3079,7 +3080,7 @@ echo "$ac_t""yes" 1>&6 LIBS="-lnsl_s $LIBS" echo $ac_n "checking for XOpenDisplay in -lX11_s""... $ac_c" 1>&6 -echo "configure:3083: checking for XOpenDisplay in -lX11_s" >&5 +echo "configure:3084: checking for XOpenDisplay in -lX11_s" >&5 ac_lib_var=`echo X11_s'_'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 @@ -3087,7 +3088,7 @@ ac_save_LIBS="$LIBS" LIBS="-lX11_s $LIBS" cat > conftest.$ac_ext <<EOF -#line 3091 "configure" +#line 3092 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -3098,7 +3099,7 @@ XOpenDisplay() ; return 0; } EOF -if { (eval echo configure:3102: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3103: \"$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 @@ -3115,7 +3116,7 @@ echo "$ac_t""yes" 1>&6 LIBS="-lX11_s $LIBS" echo $ac_n "checking for XtAppInitialize in -lXt_s""... $ac_c" 1>&6 -echo "configure:3119: checking for XtAppInitialize in -lXt_s" >&5 +echo "configure:3120: checking for XtAppInitialize in -lXt_s" >&5 ac_lib_var=`echo Xt_s'_'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 @@ -3123,7 +3124,7 @@ ac_save_LIBS="$LIBS" LIBS="-lXt_s $LIBS" cat > conftest.$ac_ext <<EOF -#line 3127 "configure" +#line 3128 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -3134,7 +3135,7 @@ XtAppInitialize() ; 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:3139: \"$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 @@ -3175,7 +3176,7 @@ ;; *) echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6 -echo "configure:3179: checking for socket in -lsocket" >&5 +echo "configure:3180: checking for socket in -lsocket" >&5 ac_lib_var=`echo socket'_'socket | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3183,7 +3184,7 @@ ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <<EOF -#line 3187 "configure" +#line 3188 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -3194,7 +3195,7 @@ socket() ; return 0; } EOF -if { (eval echo configure:3198: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3199: \"$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 @@ -3222,7 +3223,7 @@ fi echo $ac_n "checking for gethostname in -lnsl""... $ac_c" 1>&6 -echo "configure:3226: checking for gethostname in -lnsl" >&5 +echo "configure:3227: checking for gethostname in -lnsl" >&5 ac_lib_var=`echo nsl'_'gethostname | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3230,7 +3231,7 @@ ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <<EOF -#line 3234 "configure" +#line 3235 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -3241,7 +3242,7 @@ gethostname() ; return 0; } EOF -if { (eval echo configure:3245: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3246: \"$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 @@ -3292,17 +3293,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:3296: checking whether -R must be followed by a space" >&5 +echo "configure:3297: checking whether -R must be followed by a space" >&5 ac_xsave_LIBS="$LIBS"; LIBS="$LIBS -R$x_libraries" cat > conftest.$ac_ext <<EOF -#line 3299 "configure" +#line 3300 "configure" #include "confdefs.h" int main() { ; return 0; } EOF -if { (eval echo configure:3306: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3307: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_R_nospace=yes else @@ -3318,14 +3319,14 @@ else LIBS="$ac_xsave_LIBS -R $x_libraries" cat > conftest.$ac_ext <<EOF -#line 3322 "configure" +#line 3323 "configure" #include "confdefs.h" int main() { ; return 0; } EOF -if { (eval echo configure:3329: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3330: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_R_space=yes else @@ -3357,7 +3358,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:3361: checking for dnet_ntoa in -ldnet" >&5 +echo "configure:3362: 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 @@ -3365,7 +3366,7 @@ ac_save_LIBS="$LIBS" LIBS="-ldnet $LIBS" cat > conftest.$ac_ext <<EOF -#line 3369 "configure" +#line 3370 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -3376,7 +3377,7 @@ dnet_ntoa() ; return 0; } EOF -if { (eval echo configure:3380: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3381: \"$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 @@ -3398,7 +3399,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:3402: checking for dnet_ntoa in -ldnet_stub" >&5 +echo "configure:3403: 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 @@ -3406,7 +3407,7 @@ ac_save_LIBS="$LIBS" LIBS="-ldnet_stub $LIBS" cat > conftest.$ac_ext <<EOF -#line 3410 "configure" +#line 3411 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -3417,7 +3418,7 @@ dnet_ntoa() ; return 0; } EOF -if { (eval echo configure:3421: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3422: \"$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 @@ -3446,12 +3447,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:3450: checking for gethostbyname" >&5 +echo "configure:3451: 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 <<EOF -#line 3455 "configure" +#line 3456 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char gethostbyname(); below. */ @@ -3474,7 +3475,7 @@ ; return 0; } EOF -if { (eval echo configure:3478: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3479: \"$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 @@ -3495,7 +3496,7 @@ if test $ac_cv_func_gethostbyname = no; then echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:3499: checking for gethostbyname in -lnsl" >&5 +echo "configure:3500: 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 @@ -3503,7 +3504,7 @@ ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <<EOF -#line 3507 "configure" +#line 3508 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -3514,7 +3515,7 @@ gethostbyname() ; return 0; } EOF -if { (eval echo configure:3518: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3519: \"$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 @@ -3544,12 +3545,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:3548: checking for connect" >&5 +echo "configure:3549: 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 <<EOF -#line 3553 "configure" +#line 3554 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char connect(); below. */ @@ -3572,7 +3573,7 @@ ; return 0; } EOF -if { (eval echo configure:3576: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3577: \"$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 @@ -3593,7 +3594,7 @@ if test $ac_cv_func_connect = no; then echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6 -echo "configure:3597: checking for connect in -lsocket" >&5 +echo "configure:3598: 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 @@ -3601,7 +3602,7 @@ ac_save_LIBS="$LIBS" LIBS="-lsocket $X_EXTRA_LIBS $LIBS" cat > conftest.$ac_ext <<EOF -#line 3605 "configure" +#line 3606 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -3612,7 +3613,7 @@ connect() ; return 0; } EOF -if { (eval echo configure:3616: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3617: \"$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 @@ -3636,12 +3637,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:3640: checking for remove" >&5 +echo "configure:3641: 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 <<EOF -#line 3645 "configure" +#line 3646 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char remove(); below. */ @@ -3664,7 +3665,7 @@ ; return 0; } EOF -if { (eval echo configure:3668: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3669: \"$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 @@ -3685,7 +3686,7 @@ if test $ac_cv_func_remove = no; then echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6 -echo "configure:3689: checking for remove in -lposix" >&5 +echo "configure:3690: 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 @@ -3693,7 +3694,7 @@ ac_save_LIBS="$LIBS" LIBS="-lposix $LIBS" cat > conftest.$ac_ext <<EOF -#line 3697 "configure" +#line 3698 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -3704,7 +3705,7 @@ remove() ; return 0; } EOF -if { (eval echo configure:3708: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3709: \"$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 @@ -3728,12 +3729,12 @@ # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. echo $ac_n "checking for shmat""... $ac_c" 1>&6 -echo "configure:3732: checking for shmat" >&5 +echo "configure:3733: 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 <<EOF -#line 3737 "configure" +#line 3738 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shmat(); below. */ @@ -3756,7 +3757,7 @@ ; return 0; } EOF -if { (eval echo configure:3760: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3761: \"$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 @@ -3777,7 +3778,7 @@ if test $ac_cv_func_shmat = no; then echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6 -echo "configure:3781: checking for shmat in -lipc" >&5 +echo "configure:3782: 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 @@ -3785,7 +3786,7 @@ ac_save_LIBS="$LIBS" LIBS="-lipc $LIBS" cat > conftest.$ac_ext <<EOF -#line 3789 "configure" +#line 3790 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -3796,7 +3797,7 @@ shmat() ; return 0; } EOF -if { (eval echo configure:3800: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3801: \"$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 @@ -3829,7 +3830,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:3833: checking for IceConnectionNumber in -lICE" >&5 +echo "configure:3834: 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 @@ -3837,7 +3838,7 @@ ac_save_LIBS="$LIBS" LIBS="-lICE $X_EXTRA_LIBS $LIBS" cat > conftest.$ac_ext <<EOF -#line 3841 "configure" +#line 3842 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -3848,7 +3849,7 @@ IceConnectionNumber() ; return 0; } EOF -if { (eval echo configure:3852: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3853: \"$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 @@ -3875,7 +3876,7 @@ LDFLAGS="$LDFLAGS $X_LIBS" CFLAGS="$CFLAGS $X_CFLAGS" echo $ac_n "checking for XOpenDisplay in -lX11""... $ac_c" 1>&6 -echo "configure:3879: checking for XOpenDisplay in -lX11" >&5 +echo "configure:3880: 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 @@ -3883,7 +3884,7 @@ ac_save_LIBS="$LIBS" LIBS="-lX11 $X_PRE_LIBS $LIBS $X_EXTRA_LIBS $LIBS" cat > conftest.$ac_ext <<EOF -#line 3887 "configure" +#line 3888 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -3894,7 +3895,7 @@ XOpenDisplay() ; return 0; } EOF -if { (eval echo configure:3898: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3899: \"$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 @@ -3915,7 +3916,7 @@ fi echo $ac_n "checking for XtAppInitialize in -lXt""... $ac_c" 1>&6 -echo "configure:3919: checking for XtAppInitialize in -lXt" >&5 +echo "configure:3920: 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 @@ -3923,7 +3924,7 @@ ac_save_LIBS="$LIBS" LIBS="-lXt $X_PRE_LIBS $LIBS $X_EXTRA_LIBS $LIBS" cat > conftest.$ac_ext <<EOF -#line 3927 "configure" +#line 3928 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -3934,7 +3935,7 @@ XtAppInitialize() ; return 0; } EOF -if { (eval echo configure:3938: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3939: \"$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 @@ -3990,17 +3991,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3994: checking for $ac_hdr" >&5 +echo "configure:3995: 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 -#line 3999 "configure" +#line 4000 "configure" #include "confdefs.h" #include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4004: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4005: \"$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* @@ -4048,7 +4049,7 @@ echo $ac_n "checking for XextCreateExtension in -lXext""... $ac_c" 1>&6 -echo "configure:4052: checking for XextCreateExtension in -lXext" >&5 +echo "configure:4053: 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 @@ -4056,7 +4057,7 @@ ac_save_LIBS="$LIBS" LIBS="-lXext $LIBS" cat > conftest.$ac_ext <<EOF -#line 4060 "configure" +#line 4061 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -4067,7 +4068,7 @@ XextCreateExtension() ; return 0; } EOF -if { (eval echo configure:4071: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4072: \"$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 @@ -4103,13 +4104,13 @@ if test $cf_path != default ; then CFLAGS="-I$cf_path/include $cf_save" echo $ac_n "checking for $cf_test in $cf_path""... $ac_c" 1>&6 -echo "configure:4107: checking for $cf_test in $cf_path" >&5 +echo "configure:4108: checking for $cf_test in $cf_path" >&5 else echo $ac_n "checking for $cf_test""... $ac_c" 1>&6 -echo "configure:4110: checking for $cf_test" >&5 +echo "configure:4111: checking for $cf_test" >&5 fi cat > conftest.$ac_ext <<EOF -#line 4113 "configure" +#line 4114 "configure" #include "confdefs.h" #include <X11/Intrinsic.h> @@ -4118,7 +4119,7 @@ ; return 0; } EOF -if { (eval echo configure:4122: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4123: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cf_result=yes else @@ -4144,21 +4145,21 @@ 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:4148: checking for $cf_lib in $cf_path" >&5 +echo "configure:4149: 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:4152: checking for $cf_test in $cf_lib" >&5 +echo "configure:4153: checking for $cf_test in $cf_lib" >&5 fi cat > conftest.$ac_ext <<EOF -#line 4155 "configure" +#line 4156 "configure" #include "confdefs.h" int main() { $cf_test() ; return 0; } EOF -if { (eval echo configure:4162: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4163: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* cf_result=yes else @@ -4196,13 +4197,13 @@ echo $ac_n "checking for declaration of fd_set""... $ac_c" 1>&6 -echo "configure:4200: checking for declaration of fd_set" >&5 +echo "configure:4201: 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 <<EOF -#line 4206 "configure" +#line 4207 "configure" #include "confdefs.h" #include <sys/types.h> @@ -4210,7 +4211,7 @@ fd_set x ; return 0; } EOF -if { (eval echo configure:4214: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4215: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cf_cv_type_fd_set=sys/types.h else @@ -4219,7 +4220,7 @@ rm -rf conftest* echo "trying X11/Xpoll.h" 1>&5 cat > conftest.$ac_ext <<EOF -#line 4223 "configure" +#line 4224 "configure" #include "confdefs.h" #ifdef HAVE_X11_XPOLL_H @@ -4229,7 +4230,7 @@ fd_set x ; return 0; } EOF -if { (eval echo configure:4233: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4234: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cf_cv_type_fd_set=X11/Xpoll.h else @@ -4238,7 +4239,7 @@ rm -rf conftest* echo "trying sys/select.h" 1>&5 cat > conftest.$ac_ext <<EOF -#line 4242 "configure" +#line 4243 "configure" #include "confdefs.h" #include <sys/types.h> @@ -4247,7 +4248,7 @@ fd_set x ; return 0; } EOF -if { (eval echo configure:4251: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4252: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cf_cv_type_fd_set=sys/select.h else @@ -4281,12 +4282,12 @@ for ac_func in grantpt do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4285: checking for $ac_func" >&5 +echo "configure:4286: 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 <<EOF -#line 4290 "configure" +#line 4291 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -4309,7 +4310,7 @@ ; return 0; } EOF -if { (eval echo configure:4313: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4314: \"$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 @@ -4331,7 +4332,7 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for openpty in -lutil""... $ac_c" 1>&6 -echo "configure:4335: checking for openpty in -lutil" >&5 +echo "configure:4336: 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 @@ -4339,7 +4340,7 @@ ac_save_LIBS="$LIBS" LIBS="-lutil $LIBS" cat > conftest.$ac_ext <<EOF -#line 4343 "configure" +#line 4344 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -4350,7 +4351,7 @@ openpty() ; return 0; } EOF -if { (eval echo configure:4354: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4355: \"$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 @@ -4384,7 +4385,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:4388: checking for $ac_word" >&5 +echo "configure:4389: 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 @@ -4422,12 +4423,12 @@ do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4426: checking for $ac_func" >&5 +echo "configure:4427: 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 <<EOF -#line 4431 "configure" +#line 4432 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -4450,7 +4451,7 @@ ; return 0; } EOF -if { (eval echo configure:4454: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4455: \"$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 @@ -4476,7 +4477,7 @@ echo $ac_n "checking if we should use imake to help""... $ac_c" 1>&6 -echo "configure:4480: checking if we should use imake to help" >&5 +echo "configure:4481: 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 @@ -4501,7 +4502,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:4505: checking for $ac_word" >&5 +echo "configure:4506: 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 @@ -4640,7 +4641,7 @@ echo $ac_n "checking for default terminal-id""... $ac_c" 1>&6 -echo "configure:4644: checking for default terminal-id" >&5 +echo "configure:4645: 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 @@ -4661,7 +4662,7 @@ echo $ac_n "checking for default terminal-type""... $ac_c" 1>&6 -echo "configure:4665: checking for default terminal-type" >&5 +echo "configure:4666: 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 @@ -4678,7 +4679,7 @@ echo $ac_n "checking for private terminfo-directory""... $ac_c" 1>&6 -echo "configure:4682: checking for private terminfo-directory" >&5 +echo "configure:4683: 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 @@ -4717,7 +4718,7 @@ ### checks for optional features echo $ac_n "checking if you want active-icons""... $ac_c" 1>&6 -echo "configure:4721: checking if you want active-icons" >&5 +echo "configure:4722: 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 @@ -4743,7 +4744,7 @@ fi echo $ac_n "checking if you want ANSI color""... $ac_c" 1>&6 -echo "configure:4747: checking if you want ANSI color" >&5 +echo "configure:4748: 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 @@ -4769,7 +4770,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:4773: checking if you want 16 colors like aixterm" >&5 +echo "configure:4774: 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 @@ -4793,7 +4794,7 @@ echo $ac_n "checking if you want 256 colors""... $ac_c" 1>&6 -echo "configure:4797: checking if you want 256 colors" >&5 +echo "configure:4798: 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 @@ -4820,7 +4821,7 @@ else echo $ac_n "checking if you want 88 colors""... $ac_c" 1>&6 -echo "configure:4824: checking if you want 88 colors" >&5 +echo "configure:4825: 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 @@ -4851,7 +4852,7 @@ fi echo $ac_n "checking if you want blinking cursor""... $ac_c" 1>&6 -echo "configure:4855: checking if you want blinking cursor" >&5 +echo "configure:4856: 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 @@ -4877,7 +4878,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:4881: checking if you want bold colors mapped like IBM PC" >&5 +echo "configure:4882: 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 @@ -4901,7 +4902,7 @@ echo $ac_n "checking if you want color-mode enabled by default""... $ac_c" 1>&6 -echo "configure:4905: checking if you want color-mode enabled by default" >&5 +echo "configure:4906: 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 @@ -4927,7 +4928,7 @@ fi echo $ac_n "checking if you want support for color highlighting""... $ac_c" 1>&6 -echo "configure:4931: checking if you want support for color highlighting" >&5 +echo "configure:4932: 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 @@ -4951,7 +4952,7 @@ echo $ac_n "checking if you want support for doublesize characters""... $ac_c" 1>&6 -echo "configure:4955: checking if you want support for doublesize characters" >&5 +echo "configure:4956: 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 @@ -4975,7 +4976,7 @@ echo $ac_n "checking if you want fallback-support for box characters""... $ac_c" 1>&6 -echo "configure:4979: checking if you want fallback-support for box characters" >&5 +echo "configure:4980: 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 @@ -4999,7 +5000,7 @@ echo $ac_n "checking if you want support for HP-style function keys""... $ac_c" 1>&6 -echo "configure:5003: checking if you want support for HP-style function keys" >&5 +echo "configure:5004: 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 @@ -5024,8 +5025,34 @@ fi +echo $ac_n "checking if you want support for SCO-style function keys""... $ac_c" 1>&6 +echo "configure:5030: 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 + enableval="$enable_sco_fkeys" + test "$enableval" != yes && enableval=no + if test "$enableval" != "no" ; then + enable_sco_fkeys=yes + else + enable_sco_fkeys=no + fi +else + enableval=no + enable_sco_fkeys=no + +fi + +echo "$ac_t""$enable_sco_fkeys" 1>&6 +if test $enable_sco_fkeys = yes ; then + cat >> confdefs.h <<\EOF +#define OPT_SCO_FUNC_KEYS 1 +EOF + +fi + echo $ac_n "checking if you want support for internationalization""... $ac_c" 1>&6 -echo "configure:5029: checking if you want support for internationalization" >&5 +echo "configure:5056: checking if you want support for internationalization" >&5 # Check whether --enable-i18n or --disable-i18n was given. if test "${enable_i18n+set}" = set; then @@ -5051,7 +5078,7 @@ fi echo $ac_n "checking if you want support for initial-erase setup""... $ac_c" 1>&6 -echo "configure:5055: checking if you want support for initial-erase setup" >&5 +echo "configure:5082: 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 @@ -5077,7 +5104,7 @@ fi echo $ac_n "checking if you want support for input-method""... $ac_c" 1>&6 -echo "configure:5081: checking if you want support for input-method" >&5 +echo "configure:5108: 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 @@ -5097,13 +5124,13 @@ echo "$ac_t""$enable_ximp" 1>&6 echo $ac_n "checking if X libraries support input-method""... $ac_c" 1>&6 -echo "configure:5101: checking if X libraries support input-method" >&5 +echo "configure:5128: 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 <<EOF -#line 5107 "configure" +#line 5134 "configure" #include "confdefs.h" #include <X11/IntrinsicP.h> @@ -5117,9 +5144,9 @@ { XIM xim; - XIMStyles *xim_styles; + XIMStyles *xim_styles = 0; XIMStyle input_style; - Widget w; + Widget w = 0; XSetLocaleModifiers("@im=none"); xim = XOpenIM(XtDisplay(w), NULL, NULL, NULL); @@ -5130,7 +5157,7 @@ ; return 0; } EOF -if { (eval echo configure:5134: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5161: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* cf_cv_input_method=yes else @@ -5153,7 +5180,7 @@ fi echo $ac_n "checking if you want support for logging""... $ac_c" 1>&6 -echo "configure:5157: checking if you want support for logging" >&5 +echo "configure:5184: checking if you want support for logging" >&5 # Check whether --enable-logging or --disable-logging was given. if test "${enable_logging+set}" = set; then @@ -5177,7 +5204,7 @@ EOF echo $ac_n "checking if you want to allow logging via a pipe""... $ac_c" 1>&6 -echo "configure:5181: checking if you want to allow logging via a pipe" >&5 +echo "configure:5208: 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 @@ -5204,7 +5231,7 @@ fi echo $ac_n "checking if you want support for iconify/maximize translations""... $ac_c" 1>&6 -echo "configure:5208: checking if you want support for iconify/maximize translations" >&5 +echo "configure:5235: 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 @@ -5228,7 +5255,7 @@ echo $ac_n "checking if you want NumLock to override keyboard tables""... $ac_c" 1>&6 -echo "configure:5232: checking if you want NumLock to override keyboard tables" >&5 +echo "configure:5259: 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 @@ -5252,7 +5279,7 @@ echo $ac_n "checking if you want support for right-scrollbar""... $ac_c" 1>&6 -echo "configure:5256: checking if you want support for right-scrollbar" >&5 +echo "configure:5283: 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 @@ -5278,7 +5305,7 @@ fi echo $ac_n "checking if you want check for redundant name-change""... $ac_c" 1>&6 -echo "configure:5282: checking if you want check for redundant name-change" >&5 +echo "configure:5309: 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 @@ -5302,7 +5329,7 @@ echo $ac_n "checking if you want support for tek4014""... $ac_c" 1>&6 -echo "configure:5306: checking if you want support for tek4014" >&5 +echo "configure:5333: checking if you want support for tek4014" >&5 # Check whether --enable-tek4014 or --disable-tek4014 was given. if test "${enable_tek4014+set}" = set; then @@ -5332,7 +5359,7 @@ fi echo $ac_n "checking if you want pulldown menus with a toolbar""... $ac_c" 1>&6 -echo "configure:5336: checking if you want pulldown menus with a toolbar" >&5 +echo "configure:5363: 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 @@ -5356,7 +5383,7 @@ echo $ac_n "checking if you want VT52 emulation""... $ac_c" 1>&6 -echo "configure:5360: checking if you want VT52 emulation" >&5 +echo "configure:5387: checking if you want VT52 emulation" >&5 # Check whether --enable-vt52 or --disable-vt52 was given. if test "${enable_vt52+set}" = set; then @@ -5380,7 +5407,7 @@ echo $ac_n "checking if you want wide-character support""... $ac_c" 1>&6 -echo "configure:5384: checking if you want wide-character support" >&5 +echo "configure:5411: 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 @@ -5409,7 +5436,7 @@ fi echo $ac_n "checking if you want DECterm Locator support""... $ac_c" 1>&6 -echo "configure:5413: checking if you want DECterm Locator support" >&5 +echo "configure:5440: 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 @@ -5435,7 +5462,7 @@ fi echo $ac_n "checking if you want -ziconbeep option""... $ac_c" 1>&6 -echo "configure:5439: checking if you want -ziconbeep option" >&5 +echo "configure:5466: checking if you want -ziconbeep option" >&5 # Check whether --enable-ziconbeep or --disable-ziconbeep was given. if test "${enable_ziconbeep+set}" = set; then @@ -5460,7 +5487,7 @@ # development/testing aids echo $ac_n "checking if you want debugging traces""... $ac_c" 1>&6 -echo "configure:5464: checking if you want debugging traces" >&5 +echo "configure:5491: checking if you want debugging traces" >&5 # Check whether --enable-trace or --disable-trace was given. if test "${enable_trace+set}" = set; then @@ -5489,7 +5516,7 @@ echo $ac_n "checking if you want to see long compiling messages""... $ac_c" 1>&6 -echo "configure:5493: checking if you want to see long compiling messages" >&5 +echo "configure:5520: 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 @@ -5529,7 +5556,7 @@ echo $ac_n "checking if you want magic cookie emulation""... $ac_c" 1>&6 -echo "configure:5533: checking if you want magic cookie emulation" >&5 +echo "configure:5560: 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 @@ -5558,7 +5585,7 @@ if test -n "$GCC" ; then echo $ac_n "checking if you want to turn on gcc warnings""... $ac_c" 1>&6 -echo "configure:5562: checking if you want to turn on gcc warnings" >&5 +echo "configure:5589: 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 @@ -5598,9 +5625,9 @@ if test -n "$GCC" then echo "checking for $CC __attribute__ directives" 1>&6 -echo "configure:5602: checking for $CC __attribute__ directives" >&5 +echo "configure:5629: checking for $CC __attribute__ directives" >&5 cat > conftest.$ac_ext <<EOF -#line 5604 "configure" +#line 5631 "configure" #include "confdefs.h" #include "conftest.h" #include "conftest.i" @@ -5638,7 +5665,7 @@ EOF ;; esac - if { (eval echo configure:5642: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + if { (eval echo configure:5669: \"$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 # else @@ -5655,11 +5682,11 @@ if test -n "$GCC" then cat > conftest.$ac_ext <<EOF -#line 5659 "configure" +#line 5686 "configure" int main(int argc, char *argv[]) { return (argv[argc-1] == 0) ; } EOF echo "checking for $CC warning options" 1>&6 -echo "configure:5663: checking for $CC warning options" >&5 +echo "configure:5690: checking for $CC warning options" >&5 cf_save_CFLAGS="$CFLAGS" EXTRA_CFLAGS="-W -Wall" cf_warn_CONST="" @@ -5677,7 +5704,7 @@ Wstrict-prototypes $cf_warn_CONST do CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt" - if { (eval echo configure:5681: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + if { (eval echo configure:5708: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then test -n "$verbose" && echo "$ac_t""... -$cf_opt" 1>&6 EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt" test "$cf_opt" = Wcast-qual && EXTRA_CFLAGS="$EXTRA_CFLAGS -DXTSTRINGDEFINES" Index: xc/programs/xterm/configure.in diff -u xc/programs/xterm/configure.in:3.38 xc/programs/xterm/configure.in:3.39 --- xc/programs/xterm/configure.in:3.38 Wed Mar 8 16:33:04 2000 +++ xc/programs/xterm/configure.in Wed Mar 8 16:33:04 2000 @@ -1,5 +1,5 @@ dnl -dnl $XFree86: xc/programs/xterm/configure.in,v 3.38 2000/01/24 22:21:55 dawes Exp $ +dnl $XFree86: xc/programs/xterm/configure.in,v 3.39 2000/03/03 20:02:30 dawes Exp $ dnl dnl --------------------------------------------------------------------------- dnl @@ -304,6 +304,16 @@ AC_MSG_RESULT($enable_hp_fkeys) if test $enable_hp_fkeys = yes ; then AC_DEFINE(OPT_HP_FUNC_KEYS,1) +fi + +AC_MSG_CHECKING(if you want support for SCO-style function keys) +CF_ARG_ENABLE(sco-fkeys, + [ --enable-sco-fkeys enable support for SCO-style function keys], + [enable_sco_fkeys=yes], + [enable_sco_fkeys=no]) +AC_MSG_RESULT($enable_sco_fkeys) +if test $enable_sco_fkeys = yes ; then + AC_DEFINE(OPT_SCO_FUNC_KEYS,1) fi AC_MSG_CHECKING(if you want support for internationalization) Index: xc/programs/xterm/fontutils.c diff -u xc/programs/xterm/fontutils.c:1.15 xc/programs/xterm/fontutils.c:1.16 --- xc/programs/xterm/fontutils.c:1.15 Wed Mar 8 16:33:04 2000 +++ xc/programs/xterm/fontutils.c Wed Mar 8 16:33:04 2000 @@ -1,5 +1,5 @@ /* - * $XFree86: xc/programs/xterm/fontutils.c,v 1.15 2000/02/08 17:19:34 dawes Exp $ + * $XFree86: xc/programs/xterm/fontutils.c,v 1.16 2000/03/03 20:02:31 dawes Exp $ */ /************************************************************ @@ -601,6 +601,7 @@ * characters. Check that they are all present. The null character * (0) is special, and is not used. */ + screen->force_box_chars = False; for (ch = 1; ch < 32; ch++) { int n = ch; #if OPT_WIDE_CHARS @@ -616,7 +617,9 @@ break; } } + TRACE(("Will %suse internal line-drawing characters\n", screen->fnt_boxes ? "not " : "")); #endif + screen->force_box_chars = !screen->fnt_boxes; screen->enbolden = screen->bold_mode && ((nfs == bfs) || same_font_name(normal, bfontname)); @@ -766,6 +769,11 @@ TRACE(("xtermMissingChar %#04x (!exists)\n", ch)); return True; } + } + if (ch < 32 + && term->screen.force_box_chars) { + TRACE(("xtermMissingChar %#04x (forced off)\n", ch)); + return True; } return False; } Index: xc/programs/xterm/input.c diff -u xc/programs/xterm/input.c:3.43 xc/programs/xterm/input.c:3.44 --- xc/programs/xterm/input.c:3.43 Wed Mar 8 16:33:04 2000 +++ xc/programs/xterm/input.c Wed Mar 8 16:33:04 2000 @@ -1,6 +1,6 @@ /* * $XConsortium: input.c /main/21 1996/04/17 15:54:23 kaleb $ - * $XFree86: xc/programs/xterm/input.c,v 3.43 2000/02/13 00:56:12 dawes Exp $ + * $XFree86: xc/programs/xterm/input.c,v 3.44 2000/03/03 20:02:31 dawes Exp $ */ /* @@ -90,6 +90,9 @@ #if OPT_HP_FUNC_KEYS static int hpfuncvalue (KeySym keycode); #endif +#if OPT_SCO_FUNC_KEYS +static int scofuncvalue (KeySym keycode); +#endif #if OPT_TRACE static char * @@ -490,6 +493,14 @@ unparseseq(&reply, pty); } else #endif +#if OPT_SCO_FUNC_KEYS + if (term->keyboard.type == keyboardIsSCO + && (reply.a_final = scofuncvalue (keysym)) != 0) { + reply.a_type = CSI; + MODIFIER_PARM; + unparseseq(&reply, pty); + } else +#endif if (IsPFKey(keysym)) { reply.a_type = SS3; reply.a_final = keysym-XK_KP_F1+'P'; @@ -757,6 +768,64 @@ #endif case XK_Select: return('F'); case XK_Find: return('h'); + default: return 0; + } +} +#endif + +#if OPT_SCO_FUNC_KEYS +static int +scofuncvalue (KeySym keycode) +{ + switch (keycode) { + case XK_Up: return('A'); + case XK_Down: return('B'); + case XK_Right: return('C'); + case XK_Left: return('D'); + case XK_End: return('F'); + case XK_Insert: return('L'); + case XK_Next: return('G'); + case XK_Prior: return('I'); + case XK_Home: return('H'); + case XK_F1: return('M'); + case XK_F2: return('N'); + case XK_F3: return('O'); + case XK_F4: return('P'); + case XK_F5: return('Q'); + case XK_F6: return('R'); + case XK_F7: return('S'); + case XK_F8: return('T'); + case XK_F9: return('U'); + case XK_F10: return('V'); + case XK_F11: return('W'); + case XK_F12: return('X'); + case XK_F13: return('Y'); + case XK_F15: return('a'); + case XK_F16: return('b'); + case XK_F17: return('c'); + case XK_F18: return('d'); + case XK_F19: return('e'); + case XK_F20: return('f'); +#if defined(XK_F21) + case XK_F21: return('g'); + case XK_F22: return('h'); + case XK_F23: return('i'); + case XK_F24: return('j'); + case XK_F25: return('k'); + case XK_F26: return('l'); + case XK_F27: return('m'); + case XK_F28: return('n'); + case XK_F29: return('o'); + case XK_F30: return('p'); + case XK_F31: return('q'); + case XK_F32: return('r'); + case XK_F33: return('s'); + case XK_F34: return('t'); + case XK_F35: return('u'); +#endif +#ifdef XK_KP_Insert + case XK_KP_Insert: return('L'); +#endif default: return 0; } } Index: xc/programs/xterm/main.c diff -u xc/programs/xterm/main.c:3.108 xc/programs/xterm/main.c:3.109 --- xc/programs/xterm/main.c:3.108 Wed Mar 8 16:33:04 2000 +++ xc/programs/xterm/main.c Wed Mar 8 16:33:04 2000 @@ -64,7 +64,7 @@ ******************************************************************/ -/* $XFree86: xc/programs/xterm/main.c,v 3.108 2000/02/10 18:57:39 dawes Exp $ */ +/* $XFree86: xc/programs/xterm/main.c,v 3.109 2000/03/03 20:02:32 dawes Exp $ */ /* main.c */ @@ -4261,7 +4261,7 @@ /* ARGSUSED */ static void -resize(TScreen *screen, register char *oldtc, register char *newtc) +resize(TScreen *screen, register char *oldtc, char *newtc) { #ifndef USE_SYSV_ENVVARS register char *ptr1, *ptr2; Index: xc/programs/xterm/menu.c diff -u xc/programs/xterm/menu.c:3.31 xc/programs/xterm/menu.c:3.32 --- xc/programs/xterm/menu.c:3.31 Wed Mar 8 16:33:04 2000 +++ xc/programs/xterm/menu.c Wed Mar 8 16:33:04 2000 @@ -1,5 +1,5 @@ /* $XConsortium: menu.c /main/66 1996/12/01 23:46:59 swick $ */ -/* $XFree86: xc/programs/xterm/menu.c,v 3.31 2000/02/13 00:56:13 dawes Exp $ */ +/* $XFree86: xc/programs/xterm/menu.c,v 3.32 2000/03/03 20:02:33 dawes Exp $ */ /* Copyright 1999-2000 by Thomas E. Dickey <dickey@clark.net> @@ -125,6 +125,10 @@ static void do_cursorblink PROTO_XT_CALLBACK_ARGS; #endif +#if OPT_BOX_CHARS +static void do_font_boxchars PROTO_XT_CALLBACK_ARGS; +#endif + #if OPT_DEC_CHRSET static void do_font_doublesize PROTO_XT_CALLBACK_ARGS; #endif @@ -257,8 +261,11 @@ { "fontescape", do_vtfont, NULL }, { "fontsel", do_vtfont, NULL }, /* down to here should match NMENUFONTS in ptyx.h */ -#if OPT_DEC_CHRSET || OPT_DEC_SOFTFONT +#if OPT_DEC_CHRSET || OPT_BOX_CHARS || OPT_DEC_SOFTFONT { "line1", NULL, NULL }, +#if OPT_BOX_CHARS + { "font-linedrawing",do_font_boxchars,NULL }, +#endif #if OPT_DEC_CHRSET { "font-doublesize",do_font_doublesize,NULL }, #endif @@ -534,14 +541,20 @@ fontMenuEntries[fontMenu_fontescape].widget, (screen->menu_font_names[fontMenu_fontescape] ? TRUE : FALSE)); - update_font_doublesize(); - update_font_loadable(); +#if OPT_BOX_CHARS + update_font_boxchars(); + set_sensitivity (mw, + fontMenuEntries[fontMenu_font_boxchars].widget, + True); +#endif #if OPT_DEC_SOFTFONT /* FIXME: not implemented */ + update_font_loadable(); set_sensitivity (mw, fontMenuEntries[fontMenu_font_loadable].widget, FALSE); #endif #if OPT_DEC_CHRSET + update_font_doublesize(); if (term->screen.cache_doublesize == 0) set_sensitivity (mw, fontMenuEntries[fontMenu_font_doublesize].widget, @@ -1197,6 +1210,18 @@ } #endif +#if OPT_BOX_CHARS +static void do_font_boxchars ( + Widget gw GCC_UNUSED, + XtPointer closure GCC_UNUSED, + XtPointer data GCC_UNUSED) +{ + term->screen.force_box_chars = ! term->screen.force_box_chars; + update_font_boxchars(); + Redraw (); +} +#endif + #if OPT_DEC_SOFTFONT static void do_font_loadable ( Widget gw GCC_UNUSED, @@ -1795,6 +1820,18 @@ Cardinal *param_count) { handle_toggle (do_font_doublesize, (int) term->screen.font_doublesize, + params, *param_count, w, (XtPointer)0, (XtPointer)0); +} +#endif + +#if OPT_BOX_CHARS +void HandleFontBoxChars( + Widget w, + XEvent *event GCC_UNUSED, + String *params, + Cardinal *param_count) +{ + handle_toggle (do_font_boxchars, (int) term->screen.force_box_chars, params, *param_count, w, (XtPointer)0, (XtPointer)0); } #endif Index: xc/programs/xterm/menu.h diff -u xc/programs/xterm/menu.h:3.20 xc/programs/xterm/menu.h:3.21 --- xc/programs/xterm/menu.h:3.20 Wed Mar 8 16:33:04 2000 +++ xc/programs/xterm/menu.h Wed Mar 8 16:33:04 2000 @@ -1,5 +1,5 @@ /* $XConsortium: menu.h /main/27 1996/12/01 23:47:03 swick $ */ -/* $XFree86: xc/programs/xterm/menu.h,v 3.20 2000/02/13 00:56:13 dawes Exp $ */ +/* $XFree86: xc/programs/xterm/menu.h,v 3.21 2000/03/03 20:02:34 dawes Exp $ */ /* Copyright 1999-2000 by Thomas E. Dickey <dickey@clark.net> @@ -88,6 +88,7 @@ extern void HandleCursesEmul PROTO_XT_ACTIONS_ARGS; extern void HandleCursorBlink PROTO_XT_ACTIONS_ARGS; extern void HandleDeleteIsDEL PROTO_XT_ACTIONS_ARGS; +extern void HandleFontBoxChars PROTO_XT_ACTIONS_ARGS; extern void HandleFontDoublesize PROTO_XT_ACTIONS_ARGS; extern void HandleFontLoading PROTO_XT_ACTIONS_ARGS; extern void HandleHardReset PROTO_XT_ACTIONS_ARGS; @@ -97,13 +98,13 @@ extern void HandleMarginBell PROTO_XT_ACTIONS_ARGS; extern void HandleMetaEsc PROTO_XT_ACTIONS_ARGS; extern void HandleNumLock PROTO_XT_ACTIONS_ARGS; +extern void HandleOldFunctionKeys PROTO_XT_ACTIONS_ARGS; extern void HandlePopupMenu PROTO_XT_ACTIONS_ARGS; extern void HandlePrint PROTO_XT_ACTIONS_ARGS; extern void HandleQuit PROTO_XT_ACTIONS_ARGS; extern void HandleRedraw PROTO_XT_ACTIONS_ARGS; extern void HandleReverseVideo PROTO_XT_ACTIONS_ARGS; extern void HandleReverseWrap PROTO_XT_ACTIONS_ARGS; -extern void HandleOldFunctionKeys PROTO_XT_ACTIONS_ARGS; extern void HandleScoFunctionKeys PROTO_XT_ACTIONS_ARGS; extern void HandleScrollKey PROTO_XT_ACTIONS_ARGS; extern void HandleScrollTtyOutput PROTO_XT_ACTIONS_ARGS; @@ -153,7 +154,7 @@ mainMenu_hp_fkeys, #endif #if OPT_SCO_FUNC_KEYS - mainMenu_sco_kbd, + mainMenu_sco_fkeys, #endif mainMenu_sun_fkeys, #if OPT_SUNPC_KBD @@ -226,8 +227,11 @@ fontMenu_fontescape, fontMenu_fontsel, /* number of non-line items down to here should match NMENUFONTS in ptyx.h */ -#if OPT_DEC_CHRSET +#if OPT_DEC_CHRSET || OPT_BOX_CHARS || OPT_DEC_SOFTFONT fontMenu_line1, +#if OPT_BOX_CHARS + fontMenu_font_boxchars, +#endif #if OPT_DEC_CHRSET fontMenu_font_doublesize, #endif @@ -463,6 +467,15 @@ term->screen.font_doublesize) #else #define update_font_doublesize() /* nothing */ +#endif + +#if OPT_BOX_CHARS +#define update_font_boxchars() \ + update_menu_item (term->screen.fontMenu, \ + fontMenuEntries[fontMenu_font_boxchars].widget, \ + term->screen.force_box_chars) +#else +#define update_font_boxchars() /* nothing */ #endif #if OPT_DEC_SOFTFONT Index: xc/programs/xterm/misc.c diff -u xc/programs/xterm/misc.c:3.48 xc/programs/xterm/misc.c:3.49 --- xc/programs/xterm/misc.c:3.48 Wed Mar 8 16:33:05 2000 +++ xc/programs/xterm/misc.c Wed Mar 8 16:33:05 2000 @@ -1,6 +1,6 @@ /* * $XConsortium: misc.c /main/112 1996/11/29 10:34:07 swick $ - * $XFree86: xc/programs/xterm/misc.c,v 3.48 2000/02/08 17:19:38 dawes Exp $ + * $XFree86: xc/programs/xterm/misc.c,v 3.49 2000/02/29 03:09:27 dawes Exp $ */ /* @@ -1017,7 +1017,7 @@ char buffer[80]; TRACE(("ReportAnsiColorRequest %d\n", colornum)); - color.pixel = pTerm->screen.Acolors[colornum]; + color.pixel = GET_COLOR_RES(pTerm->screen.Acolors[colornum]); XQueryColor(term->screen.display, cmap, &color); sprintf(buffer, "4;%d;rgb:%04x/%04x/%04x", colornum, @@ -1032,23 +1032,43 @@ static Boolean AllocateAnsiColor( XtermWidget pTerm, - int color, - char *name) + ColorRes *res, + char *spec) { XColor def; register TScreen *screen = &pTerm->screen; Colormap cmap = pTerm->core.colormap; - if (XParseColor(screen->display, cmap, name, &def) + if (XParseColor(screen->display, cmap, spec, &def) && XAllocColor(screen->display, cmap, &def)) { - screen->Acolors[color] = def.pixel; - TRACE(("AllocateAnsiColor #%d: %s (pixel %#lx)\n", color, name, def.pixel)); + SET_COLOR_RES(res, def.pixel); + TRACE(("AllocateAnsiColor %s (pixel %#lx)\n", spec, def.pixel)); return(TRUE); } - TRACE(("AllocateAnsiColor #%d: %s (failed)\n", color, name)); + TRACE(("AllocateAnsiColor %s (failed)\n", spec)); return(FALSE); } +#if OPT_COLOR_RES +Pixel +xtermGetColorRes(ColorRes *res) +{ + if (!res->mode) { + if (AllocateAnsiColor(term, res, res->resource)) { + res->mode = True; + } else { + res->value = term->screen.foreground; + res->mode = -True; + fprintf(stderr, + "%s: Cannot allocate color %s\n", + xterm_name, + res->resource); + } + } + return res->value; +} +#endif + static Boolean ChangeAnsiColorRequest( XtermWidget pTerm, @@ -1077,7 +1097,7 @@ } if (!strcmp(name, "?")) ReportAnsiColorRequest(pTerm, color, final); - else if (!AllocateAnsiColor(pTerm, color, name)) + else if (!AllocateAnsiColor(pTerm, &(pTerm->screen.Acolors[color]), name)) break; /* FIXME: free old color somehow? We aren't for the other color * change style (dynamic colors). Index: xc/programs/xterm/ptyx.h diff -u xc/programs/xterm/ptyx.h:3.71 xc/programs/xterm/ptyx.h:3.73 --- xc/programs/xterm/ptyx.h:3.71 Wed Mar 8 16:33:05 2000 +++ xc/programs/xterm/ptyx.h Wed Mar 8 16:33:05 2000 @@ -1,6 +1,6 @@ /* * $XConsortium: ptyx.h /main/67 1996/11/29 10:34:19 swick $ - * $XFree86: xc/programs/xterm/ptyx.h,v 3.71 2000/02/13 00:56:14 dawes Exp $ + * $XFree86: xc/programs/xterm/ptyx.h,v 3.73 2000/03/03 22:50:36 dawes Exp $ */ /* @@ -322,28 +322,25 @@ #define RES_OFFSET(offset) XtOffsetOf(XtermWidgetRec, offset) #endif +#define RES_NAME(name) name +#define RES_CLASS(name) name + #define Bres(name,class,offset,value) \ - {name, class, XtRBoolean, sizeof(Boolean), \ + {RES_NAME(name), RES_CLASS(class), XtRBoolean, sizeof(Boolean), \ RES_OFFSET(offset), XtRImmediate, (XtPointer) value} +#define Cres(name,offset,value) \ + {RES_NAME(name), XtCForeground, XtRPixel, sizeof(Pixel), \ + RES_OFFSET(offset), XtRString, value} + #define Ires(name,class,offset,value) \ - {name, class, XtRInt, sizeof(int), \ - RES_OFFSET(offset), XtRInt, (XtPointer) value} + {RES_NAME(name), RES_CLASS(class), XtRInt, sizeof(int), \ + RES_OFFSET(offset), XtRImmediate, (XtPointer) value} #define Sres(name,class,offset,value) \ - {name, class, XtRString, sizeof(String), \ + {RES_NAME(name), RES_CLASS(class), XtRString, sizeof(char *), \ RES_OFFSET(offset), XtRString, (XtPointer) value} -#define COLOR_RES(name,offset,value) \ - {name, XtCForeground, XtRPixel, sizeof(Pixel), \ - RES_OFFSET(offset), XtRString, value} - -typedef struct { - unsigned which; /* must have NCOLORS bits */ - Pixel colors[NCOLORS]; - char *names[NCOLORS]; -} ScrnColors; - /***====================================================================***/ #if (XtSpecificationRelease < 6) @@ -368,6 +365,10 @@ #define OPT_CLIP_BOLD 1 /* true if xterm uses clipping to avoid bold-trash */ #endif +#ifndef OPT_COLOR_RES +#define OPT_COLOR_RES 1 /* true if xterm delays color-resource evaluation */ +#endif + #ifndef OPT_DEC_CHRSET #define OPT_DEC_CHRSET 1 /* true if xterm is configured for DEC charset */ #endif @@ -583,6 +584,12 @@ # define if_OPT_ISO_TRADITIONAL_COLORS(screen, code) /*nothing*/ #endif +#if OPT_COLOR_RES +#define COLOR_RES(name,offset,value) Sres(name, XtCForeground, offset.resource, value) +#else +#define COLOR_RES(name,offset,value) Cres(name, offset, value) +#endif + /***====================================================================***/ #if OPT_DEC_CHRSET @@ -806,6 +813,22 @@ #define NUM_POPUP_MENUS 4 +#if OPT_COLOR_RES +typedef struct { + String resource; + Pixel value; + int mode; +} ColorRes; +#else +#define ColorRes Pixel +#endif + +typedef struct { + unsigned which; /* must have NCOLORS bits */ + Pixel colors[NCOLORS]; + char *names[NCOLORS]; +} ScrnColors; + typedef struct { Boolean saved; int row; @@ -873,7 +896,7 @@ Pixel mousecolor; /* Mouse color */ Pixel mousecolorback; /* Mouse color background */ #if OPT_ISO_COLORS - Pixel Acolors[MAXCOLORS]; /* ANSI color emulation */ + ColorRes Acolors[MAXCOLORS]; /* ANSI color emulation */ Boolean boldColors; /* can we make bold colors? */ Boolean colorMode; /* are we using color mode? */ Boolean colorULMode; /* use color for underline? */ @@ -951,6 +974,7 @@ Boolean fnt_prop; /* true if proportional fonts */ Boolean fnt_boxes; /* true if font has box-chars */ + Boolean force_box_chars; /* true if we assume that */ Dimension fnt_wide; Dimension fnt_high; XFontStruct *fnt_norm; /* normal font of terminal */ Index: xc/programs/xterm/screen.c diff -u xc/programs/xterm/screen.c:3.47 xc/programs/xterm/screen.c:3.48 --- xc/programs/xterm/screen.c:3.47 Wed Mar 8 16:33:05 2000 +++ xc/programs/xterm/screen.c Wed Mar 8 16:33:05 2000 @@ -54,7 +54,7 @@ * SOFTWARE. */ -/* $XFree86: xc/programs/xterm/screen.c,v 3.47 2000/02/08 17:19:41 dawes Exp $ */ +/* $XFree86: xc/programs/xterm/screen.c,v 3.48 2000/03/03 20:02:34 dawes Exp $ */ /* screen.c */ @@ -284,7 +284,7 @@ PAIRED_CHARS(Char *str, Char *str2), register unsigned flags, register unsigned cur_fg_bg, - register int length) /* length of string */ + register int len) /* length of string */ { #if OPT_ISO_COLORS #if OPT_EXT_COLORS @@ -297,6 +297,7 @@ #if OPT_DEC_CHRSET register Char *cb = 0; #endif + register int length = len; /* workaround for compiler bug? */ register Char *attrs; register int avail = screen->max_col - screen->cur_col + 1; register Char *col; Index: xc/programs/xterm/scrollbar.c diff -u xc/programs/xterm/scrollbar.c:3.25 xc/programs/xterm/scrollbar.c:3.26 --- xc/programs/xterm/scrollbar.c:3.25 Wed Mar 8 16:33:05 2000 +++ xc/programs/xterm/scrollbar.c Wed Mar 8 16:33:05 2000 @@ -1,6 +1,6 @@ /* * $XConsortium: scrollbar.c /main/47 1996/12/01 23:47:08 swick $ - * $XFree86: xc/programs/xterm/scrollbar.c,v 3.25 2000/02/08 17:19:41 dawes Exp $ + * $XFree86: xc/programs/xterm/scrollbar.c,v 3.26 2000/03/03 20:02:34 dawes Exp $ */ /* @@ -66,6 +66,7 @@ #include <data.h> #include <error.h> #include <menu.h> +#include <xcharmouse.h> /* Event handlers */ @@ -361,7 +362,7 @@ if (screen->scrollWidget) return; /* make it a dummy size and resize later */ - if ((screen->scrollWidget = CreateScrollBar (xw, -1, - 1, 5)) + if ((screen->scrollWidget = CreateScrollBar (xw, -1, -1, 5)) == NULL) { Bell(XkbBI_MinorError,0); return; @@ -561,6 +562,18 @@ return mult; } +static long +AmountToScroll(Widget gw, String *params, Cardinal nparams) +{ + if (IsXtermWidget(gw)) { + register TScreen *screen = &((XtermWidget)gw)->screen; + if (nparams > 2 + && screen->send_mouse_pos != MOUSE_OFF) + return 0; + return params_to_pixels (screen, params, nparams); + } + return 0; +} /*ARGSUSED*/ void HandleScrollForward ( @@ -569,12 +582,11 @@ String *params, Cardinal *nparams) { - if (IsXtermWidget(gw)) { - register TScreen *screen = &((XtermWidget)gw)->screen; - long amount = params_to_pixels (screen, params, *nparams); + long amount; + + if ((amount = AmountToScroll(gw, params, *nparams)) != 0) { ScrollTextUpDownBy (gw, (XtPointer) 0, (XtPointer)amount); } - return; } @@ -585,10 +597,9 @@ String *params, Cardinal *nparams) { - if (IsXtermWidget(gw)) { - register TScreen *screen = &((XtermWidget)gw)->screen; - long amount = -params_to_pixels (screen, params, *nparams); + long amount; + + if ((amount = -AmountToScroll(gw, params, *nparams)) != 0) { ScrollTextUpDownBy (gw, (XtPointer) 0, (XtPointer)amount); } - return; } Index: xc/programs/xterm/sinstall.sh diff -u xc/programs/xterm/sinstall.sh:1.2 xc/programs/xterm/sinstall.sh:1.3 --- xc/programs/xterm/sinstall.sh:1.2 Fri Nov 19 08:55:23 1999 +++ xc/programs/xterm/sinstall.sh Wed Mar 8 16:33:05 2000 @@ -1,5 +1,5 @@ #!/bin/sh -# $XFree86: xc/programs/xterm/sinstall.sh,v 1.2 1999/11/19 13:55:23 hohndel Exp $ +# $XFree86: xc/programs/xterm/sinstall.sh,v 1.3 2000/03/03 20:02:35 dawes Exp $ # # Install program setuid if the installer is running as root, and if xterm is # already installed on the system with setuid privilege. This is a safeguard @@ -24,7 +24,7 @@ test -z "$SINSTALL" && SINSTALL=install test -z "$NEW_PROG" && NEW_PROG=xterm test -z "$REF_PROG" && REF_PROG=/usr/bin/X11/xterm -test -z "$TST_PROG" && REF_PROG="$REF_PROG" +test -z "$TST_PROG" && TST_PROG="$REF_PROG" PROG_MODE=755 PROG_USR= Index: xc/programs/xterm/termcap diff -u xc/programs/xterm/termcap:3.24 xc/programs/xterm/termcap:3.25 --- xc/programs/xterm/termcap:3.24 Wed Mar 8 16:33:05 2000 +++ xc/programs/xterm/termcap Wed Mar 8 16:33:05 2000 @@ -1,5 +1,5 @@ # $XConsortium: termcap,v 1.13 94/10/13 21:24:32 gildea Exp $ -# $XFree86: xc/programs/xterm/termcap,v 3.24 2000/02/08 17:19:42 dawes Exp $ +# $XFree86: xc/programs/xterm/termcap,v 3.25 2000/02/29 03:09:29 dawes Exp $ # # Note: # termcap format is limited to 1023 characters. This set of descriptions @@ -116,7 +116,7 @@ :nd=\233C:rc=\E8:sc=\E7:se=\23327m:sf=^J:so=\2337m:sr=\215:\ :st=\210:ta=^I:te=\233?1049l:ti=\233?1049h:ue=\23324m:\ :up=\233A:us=\2334m:vb=\233?5h\233?5l:ve=\233?25h:\ - :vi=\233?25l:vs=\233?25h: + :vi=\233?25l: # hp|xterm-hp|XFree86 xterm with hpterm function keys:\ :k1=\Ep:k2=\Eq:k3=\Er:k4=\Es:k5=\Et:\ Index: xc/programs/xterm/terminfo diff -u xc/programs/xterm/terminfo:3.38 xc/programs/xterm/terminfo:3.39 --- xc/programs/xterm/terminfo:3.38 Wed Mar 8 16:33:05 2000 +++ xc/programs/xterm/terminfo Wed Mar 8 16:33:05 2000 @@ -1,5 +1,5 @@ # $XConsortium: terminfo,v 1.11 94/10/13 21:24:31 gildea Exp $ -# $XFree86: xc/programs/xterm/terminfo,v 3.38 2000/02/08 17:19:42 dawes Exp $ +# $XFree86: xc/programs/xterm/terminfo,v 3.39 2000/02/29 03:09:29 dawes Exp $ # # XFree86 updates/notes/new entries (including xterm-8bit, xterm-16color) # - Thomas E. Dickey <dickey@clark.net> @@ -92,6 +92,7 @@ # pageup and pagedown for window manager functions. # xterm-xfree86|xterm-new|xterm terminal emulator (XFree86), + npc, kDC=\E[3;5~, kEND=\EO5F, kHOM=\EO5H, @@ -196,7 +197,6 @@ cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - cvvis=\E[?25h, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, @@ -206,7 +206,7 @@ el=\E[K, el1=\E[1K, enacs=\E(B\E)0, - flash=\E[?5h\E[?5l, + flash=\E[?5h$<100/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, @@ -242,7 +242,7 @@ setaf=\E[3%p1%dm, setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m, setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m, - sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, + sgr=\E[0%?%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, sgr0=\E[m\017, smacs=^N, smam=\E[?7h, @@ -577,6 +577,7 @@ mc5i, mir, msgr, + npc, xenl, colors#8, cols#80, @@ -602,7 +603,6 @@ cup=\233%i%p1%d;%p2%dH, cuu=\233%p1%dA, cuu1=\233A, - cvvis=\233?25h, dch=\233%p1%dP, dch1=\233P, dl=\233%p1%dM, @@ -612,7 +612,7 @@ el=\233K, el1=\2331K, enacs=\E(B\E)0, - flash=\233?5h\233?5l, + flash=\233?5h$<100/>\233?5l, home=\233H, hpa=\233%i%p1%dG, ht=^I, @@ -686,7 +686,7 @@ setaf=\2333%p1%dm, setb=\2334%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m, setf=\2333%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m, - sgr=\2330%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, + sgr=\2330%?%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, sgr0=\233m^O, smacs=^N, smam=\233?7h, Index: xc/programs/xterm/util.c diff -u xc/programs/xterm/util.c:3.50 xc/programs/xterm/util.c:3.51 --- xc/programs/xterm/util.c:3.50 Wed Mar 8 16:33:06 2000 +++ xc/programs/xterm/util.c Wed Mar 8 16:33:06 2000 @@ -1,6 +1,6 @@ /* * $XConsortium: util.c /main/33 1996/12/01 23:47:10 swick $ - * $XFree86: xc/programs/xterm/util.c,v 3.50 2000/02/10 18:57:42 dawes Exp $ + * $XFree86: xc/programs/xterm/util.c,v 3.51 2000/02/29 03:09:30 dawes Exp $ */ /* @@ -1266,8 +1266,9 @@ * and background because that tends to produce bizarre effects. */ if_OPT_ISO_COLORS(screen,{ - EXCHANGE( screen->Acolors[0], screen->Acolors[7], tmp ) - EXCHANGE( screen->Acolors[8], screen->Acolors[15], tmp ) + ColorRes tmp2; + EXCHANGE( screen->Acolors[0], screen->Acolors[7], tmp2 ) + EXCHANGE( screen->Acolors[8], screen->Acolors[15], tmp2 ) }) tmp = termw->core.background_pixel; @@ -1752,11 +1753,6 @@ fg = (int) ((color >> 4) & 0xf); #endif - /* - * If we allow exactly 256 colors, there is no room in a byte for - * the bold/blink/underline colors. - */ -#if NUM_ANSI_COLORS < 256 if (term->screen.colorAttrMode || (fg == extract_bg(color))) { if (term->screen.colorULMode && (flags & UNDERLINE)) @@ -1766,7 +1762,6 @@ if (term->screen.colorBLMode && (flags & BLINK)) fg = COLOR_BL; } -#endif return fg; } Index: xc/programs/xterm/version.h diff -u xc/programs/xterm/version.h:3.48 xc/programs/xterm/version.h:3.49 --- xc/programs/xterm/version.h:3.48 Wed Mar 8 16:33:06 2000 +++ xc/programs/xterm/version.h Wed Mar 8 16:33:06 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/xterm/version.h,v 3.48 2000/02/17 14:16:34 dawes Exp $ */ +/* $XFree86: xc/programs/xterm/version.h,v 3.49 2000/02/29 03:09:30 dawes Exp $ */ /* * These definitions are used to build the string that's printed in response to @@ -6,5 +6,5 @@ * XFree86 to which this version of xterm has been built. The number in * parentheses is my patch number (T.Dickey). */ -#define XTERM_PATCH 128 -#define XFREE86_VERSION "XFree86 3.9.18" +#define XTERM_PATCH 129 +#define XFREE86_VERSION "XFree86 4.0" Index: xc/programs/xterm/xterm.h diff -u xc/programs/xterm/xterm.h:3.55 xc/programs/xterm/xterm.h:3.56 --- xc/programs/xterm/xterm.h:3.55 Wed Mar 8 16:33:06 2000 +++ xc/programs/xterm/xterm.h Wed Mar 8 16:33:06 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/xterm/xterm.h,v 3.55 2000/02/13 00:56:15 dawes Exp $ */ +/* $XFree86: xc/programs/xterm/xterm.h,v 3.56 2000/02/29 03:09:31 dawes Exp $ */ /************************************************************ @@ -701,13 +701,22 @@ #define getXtermForeground(flags, color) \ (((flags) & FG_COLOR) && ((color) >= 0) \ - ? term->screen.Acolors[color] \ + ? GET_COLOR_RES(term->screen.Acolors[color]) \ : term->screen.foreground) #define getXtermBackground(flags, color) \ (((flags) & BG_COLOR) && ((color) >= 0) \ - ? term->screen.Acolors[color] \ + ? GET_COLOR_RES(term->screen.Acolors[color]) \ : term->core.background_pixel) + +#if OPT_COLOR_RES +#define GET_COLOR_RES(res) xtermGetColorRes(&res) +#define SET_COLOR_RES(res,color) res->value = color +extern Pixel xtermGetColorRes(ColorRes *res); +#else +#define GET_COLOR_RES(res) res +#define SET_COLOR_RES(res,color) *res = color +#endif #if OPT_EXT_COLORS #define extract_bg(color) ((int)((color) & 0xff)) Index: xc/programs/xterm/xterm.log.html diff -u xc/programs/xterm/xterm.log.html:1.47 xc/programs/xterm/xterm.log.html:1.49 --- xc/programs/xterm/xterm.log.html:1.47 Wed Mar 8 16:33:06 2000 +++ xc/programs/xterm/xterm.log.html Wed Mar 8 16:33:06 2000 @@ -20,7 +20,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * ***************************************************************************** - $XFree86: xc/programs/xterm/xterm.log.html,v 1.47 2000/02/17 14:16:35 dawes Exp $ + $XFree86: xc/programs/xterm/xterm.log.html,v 1.49 2000/03/03 20:02:35 dawes Exp $ --> <HTML> <HEAD> @@ -41,6 +41,8 @@ xc/programs/Xserver/hw/xfree86). <UL> +<LI><A HREF="#xterm_130">Patch #130 - 2000/3/1 - XFree86 3.9.18a</A> +<LI><A HREF="#xterm_129">Patch #129 - 2000/2/26 - XFree86 3.9.18a</A> <LI><A HREF="#xterm_128">Patch #128 - 2000/2/17 - XFree86 3.9.18</A> <LI><A HREF="#xterm_127">Patch #127 - 2000/2/12 - XFree86 3.9.17e</A> <LI><A HREF="#xterm_126">Patch #126 - 2000/2/8 - XFree86 3.9.17c</A> @@ -171,6 +173,47 @@ <LI><A HREF="#xterm_02">Patch #2 - 1996/1/7</A> <LI><A HREF="#xterm_01">Patch #1 - 1996/1/6</A> </UL> + +<H1><A NAME="xterm_130">Patch #130 - 2000/3/1 - XFree86 3.9.18a</A></H1> +<ul> + <li>modify <code>scroll-forw()</code> and <code>scroll-back()</code> + actions, adding a third parameter which will direct xterm to ignore + the action when mouse reporting is enabled. This is needed for + the wheel mouse to be used to report to the application rather than + scroll the window. + + <li>add menu entry and action to allow disabling xterm's assumption + that the current font contains line-drawing characters if the + font cells 1-31 are nonempty. Some fonts may have other characters + (reported by Bruno Betro <bruno@iami.mi.cnr.it>). + + <li>add a check in <code>creat_as()</code> to ensure that the user + really owns the logfile that has been opened. + + <li>add logic to implement SCO function-keys. (This is really + incomplete, since I intend to revisit this and make xterm able to + emulate scoansi better than just the function-keys). + + <li>add configure script option --enable-sco-fkeys, minor related fixes + (patch by Dr Werner Fink). + + <li>fix typos in ctlseqs.ms (reported by Bram Moolenaar) + + <li>fix typo in sinstall.sh default for $TST_PROG (reported by + Paul Gilmartin <pg@sweng.stortek.com>) +</ul> + +<H1><A NAME="xterm_129">Patch #129 - 2000/2/26 - XFree86 3.9.18a</A></H1> +<ul> + <li>improve initialization of ANSI colors by delaying allocation until + each color is first used. + + <li>remove ifdef that prevented colorBD/colorUL/colorBL resources from + working when 256-color configuration was built (reported by + Todd Larason). + + <li>fix some minor inconsistencies in terminfo (Debian #58530). +</ul> <H1><A NAME="xterm_128">Patch #128 - 2000/2/17 - XFree86 3.9.18</A></H1> <ul> Index: xc/programs/xterm/xterm.man diff -u xc/programs/xterm/xterm.man:3.58 xc/programs/xterm/xterm.man:3.59 --- xc/programs/xterm/xterm.man:3.58 Wed Mar 8 16:33:06 2000 +++ xc/programs/xterm/xterm.man Wed Mar 8 16:33:06 2000 @@ -1,5 +1,5 @@ .\" $XConsortium: xterm.man /main/85 1996/12/09 17:10:53 kaleb $ -.\" $XFree86: xc/programs/xterm/xterm.man,v 3.58 2000/02/13 00:56:17 dawes Exp $ +.\" $XFree86: xc/programs/xterm/xterm.man,v 3.59 2000/03/03 20:02:36 dawes Exp $ .\" .\" .\" Copyright 1996,1997,1998,1999,2000 by Thomas E. Dickey <dickey@clark.net> @@ -136,6 +136,11 @@ .I xterm is started in, or the home directory for a login .IR xterm ). +.PP +Not all of the features described in this manual are necessarily available in +this version of xterm. Some (e.g., the non-VT220 extensions) are available +only if they were compiled in, though the most commonly-used are in the +default configuration. .SH "OTHER FEATURES" .I Xterm automatically highlights the text cursor when the @@ -1484,6 +1489,9 @@ .B "hp\ function-keys (\fPclass\fB SmeBSB)" This entry invokes the \fBhp\ function-keys(toggle)\fP action. .TP 8 +.B "sco\ function-keys (\fPclass\fB SmeBSB)" +This entry invokes the \fBsco\ function-keys(toggle)\fP action. +.TP 8 .B "sun\ function-keys (\fPclass\fB SmeBSB)" This entry invokes the \fBsun\ function-keys(toggle)\fP action. .TP 8 @@ -1636,6 +1644,9 @@ .B "line1 (\fPclass\fB SmeLine)" This is a separator. .TP 8 +.B "font-linedrawing (\fPclass\fB SmeBSB)" +This entry invokes the \fBset-font-linedrawing(s)\fP action. +.TP 8 .B "font-doublesize (\fPclass\fB SmeBSB)" This entry invokes the \fBset-font-doublesize(s)\fP action. .sp @@ -2101,13 +2112,15 @@ .B "restore()" Restores the window to the size before it was last maximized. .TP 8 -.B "scroll-back(\fIcount\fP [,\fIunits\fP])" +.B "scroll-back(\fIcount\fP [,\fIunits\fP [,\fImouse\fP] ])" This action scrolls the text window backward so that text that had previously scrolled off the top of the screen is now visible. The \fIcount\fP argument indicates the number of \fIunits\fP (which may be \fIpage\fP, \fIhalfpage\fP, \fIpixel\fP, or \fIline\fP) by which to scroll. +If the third parameter \fImouse\fP is given, the action is ignored when +mouse reporting is enabled. .TP 8 -.B "scroll-forw(\fIcount\fP [,\fIunits\fP])" +.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. .TP 8 @@ -2204,18 +2217,23 @@ .TP 8 .B "set-hp-function-keys(\fIon/off/toggle\fP)" This action toggles the \fBhpFunctionKeys\fP resource and is also invoked by -the \fBhp function-keys\fP entry in \fImainMenu\fP. +the \fBhp\ function-keys\fP entry in \fImainMenu\fP. .TP 8 .B "set-jumpscroll(\fIon/off/toggle\fP)" This action toggles the \fBjumpscroll\fP resource and is also invoked by the \fBjumpscroll\fP entry in \fIvtMenu\fP. .TP 8 +.B "set-font-linedrawing(\fIon/off/toggle\fP)" +This action toggles the xterm's state regarding whether the current font +has line-drawing characters and whether it should draw them directly. +It is also invoked by the \fBfont-linedrawing\fP entry in \fIfontMenu\fP. +.TP 8 .B "set-logging()" This action toggles the state of the logging option. .TP 8 .B "set-old-function-keys(\fIon/off/toggle\fP)" This action toggles the state of legacy function keys and is also invoked by -the \fBold function-keys\fP entry in \fImainMenu\fP. +the \fBold\ function-keys\fP entry in \fImainMenu\fP. .TP 8 .B "set-marginbell(\fIon/off/toggle\fP)" This action toggles the \fBmarginBell\fP resource and is also invoked from @@ -2244,9 +2262,13 @@ This action toggles the \fBscrollbar\fP resource and is also invoked by the \fBscrollbar\fP entry in \fIvtMenu\fP. .TP 8 +.B "set-sco-function-keys(\fIon/off/toggle\fP)" +This action toggles the \fBscoFunctionKeys\fP resource and is also invoked by +the \fBsco\ function-keys\fP entry in \fImainMenu\fP. +.TP 8 .B "set-sun-function-keys(\fIon/off/toggle\fP)" This action toggles the \fBsunFunctionKeys\fP resource and is also invoked by -the \fBsun function-keys\fP entry in \fImainMenu\fP. +the \fBsun\ function-keys\fP entry in \fImainMenu\fP. .TP 8 .B "set-sun-keyboard(\fIon/off/toggle\fP)" This action toggles the \fBsunKeyboard\fP resource and is also invoked by @@ -2375,7 +2397,7 @@ !Lock Ctrl @Num_Lock <Btn2Down>:popup-menu(vtMenu) \\n\\ ! @Num_Lock Ctrl <Btn2Down>:popup-menu(vtMenu) \\n\\ ~Ctrl ~Meta <Btn2Down>:ignore() \\n\\ - Meta <Btn2Down>:clear-saved-lines() \n\ + Meta <Btn2Down>:clear-saved-lines() \\n\\ ~Ctrl ~Meta <Btn2Up>:insert-selection(PRIMARY, CUT_BUFFER0) \\n\\ !Ctrl <Btn3Down>:popup-menu(fontMenu) \\n\\ !Lock Ctrl <Btn3Down>:popup-menu(fontMenu) \\n\\ @@ -2383,16 +2405,16 @@ ! @Num_Lock Ctrl <Btn3Down>:popup-menu(fontMenu) \\n\\ ~Ctrl ~Meta <Btn3Down>:start-extend() \\n\\ ~Meta <Btn3Motion>:select-extend() \\n\\ - Ctrl <Btn4Down>:scroll-back(1,halfpage) \\n\\ - Lock Ctrl <Btn4Down>:scroll-back(1,halfpage) \\n\\ - Lock @Num_Lock Ctrl <Btn4Down>:scroll-back(1,halfpage) \\n\\ - @Num_Lock Ctrl <Btn4Down>:scroll-back(1,halfpage) \\n\\ - <Btn4Down>:scroll-back(5,line) \\n\\ - Ctrl <Btn5Down>:scroll-forw(1,halfpage) \\n\\ - Lock Ctrl <Btn5Down>:scroll-forw(1,halfpage) \\n\\ - Lock @Num_Lock Ctrl <Btn5Down>:scroll-forw(1,halfpage) \\n\\ - @Num_Lock Ctrl <Btn5Down>:scroll-forw(1,halfpage) \\n\\ - <Btn5Down>:scroll-forw(5,line) \\n\\ + Ctrl <Btn4Down>:scroll-back(1,halfpage,m) \\n\\ + Lock Ctrl <Btn4Down>:scroll-back(1,halfpage,m) \\n\\ + Lock @Num_Lock Ctrl <Btn4Down>:scroll-back(1,halfpage,m) \\n\\ + @Num_Lock Ctrl <Btn4Down>:scroll-back(1,halfpage,m) \\n\\ + <Btn4Down>:scroll-back(5,line,m) \\n\\ + Ctrl <Btn5Down>:scroll-forw(1,halfpage,m) \\n\\ + Lock Ctrl <Btn5Down>:scroll-forw(1,halfpage,m) \\n\\ + Lock @Num_Lock Ctrl <Btn5Down>:scroll-forw(1,halfpage,m) \\n\\ + @Num_Lock Ctrl <Btn5Down>:scroll-forw(1,halfpage,m) \\n\\ + <Btn5Down>:scroll-forw(5,line,m) \\n\\ <BtnUp>:select-end(PRIMARY, CUT_BUFFER0) \\n\\ <BtnDown>:bell(0) .fi Index: xc/programs/xterm/xtermcfg.hin diff -u xc/programs/xterm/xtermcfg.hin:3.30 xc/programs/xterm/xtermcfg.hin:3.31 --- xc/programs/xterm/xtermcfg.hin:3.30 Wed Mar 8 16:33:07 2000 +++ xc/programs/xterm/xtermcfg.hin Wed Mar 8 16:33:07 2000 @@ -1,5 +1,5 @@ /* - * $XFree86: xc/programs/xterm/xtermcfg.hin,v 3.30 2000/02/08 17:19:48 dawes Exp $ + * $XFree86: xc/programs/xterm/xtermcfg.hin,v 3.31 2000/03/03 20:02:37 dawes Exp $ */ /************************************************************ @@ -74,6 +74,7 @@ #undef OPT_MAXIMIZE /* CF_ARG_DISABLE(maximize) */ #undef OPT_NUM_LOCK /* CF_ARG_DISABLE(num-lock) */ #undef OPT_PC_COLORS /* CF_ARG_DISABLE(pc-color) */ +#undef OPT_SCO_FUNC_KEYS /* CF_ARG_ENABLE(sco-fkeys) */ #undef OPT_TEK4014 /* CF_ARG_DISABLE(tek4014) */ #undef OPT_TOOLBAR /* CF_ARG_ENABLE(toolbar) */ #undef OPT_TRACE /* CF_ARG_ENABLE(trace) */ Index: xc/include/Xmd.h diff -u xc/include/Xmd.h:3.5 xc/include/Xmd.h:3.6 --- xc/include/Xmd.h:3.5 Fri Oct 2 03:38:50 1998 +++ xc/include/Xmd.h Wed Mar 8 16:33:08 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/include/Xmd.h,v 3.5 1998/10/02 07:38:50 dawes Exp $ */ +/* $XFree86: xc/include/Xmd.h,v 3.6 2000/02/22 00:59:40 mvojkovi Exp $ */ /*********************************************************** Copyright 1987, 1998 The Open Group @@ -54,7 +54,7 @@ #ifdef CRAY #define WORD64 /* 64-bit architecture */ #endif -#if defined(__alpha) || defined(__alpha__) +#if defined(__alpha) || defined(__alpha__) || defined(__ia64__) #define LONG64 /* 32/64-bit architecture */ #endif #ifdef __sgi Index: xc/include/GL/Imakefile diff -u xc/include/GL/Imakefile:1.6 xc/include/GL/Imakefile:1.8 --- xc/include/GL/Imakefile:1.6 Sat Aug 14 06:49:14 1999 +++ xc/include/GL/Imakefile Wed Mar 8 16:33:09 2000 @@ -1,9 +1,11 @@ -XCOMM $XFree86: xc/include/GL/Imakefile,v 1.6 1999/08/14 10:49:14 dawes Exp $ -XCOMM $PI: xc/include/GL/Imakefile,v 1.7 1999/06/24 03:11:32 faith Exp $ +XCOMM $XFree86: xc/include/GL/Imakefile,v 1.8 2000/03/02 16:07:29 martin Exp $ + +LinkSourceFile(gl.h, ../../extras/Mesa/include/GL) +LinkSourceFile(glext.h, ../../extras/Mesa/include/GL) #if BuildGLXLibrary -GLXHEADERS = gl.h glx.h glxint.h glxmd.h glxproto.h glxtokens.h +GLXHEADERS = gl.h glext.h glx.h glxint.h glxmd.h glxproto.h glxtokens.h #endif HEADERS = $(GLXHEADERS) Index: xc/include/GL/gl.h diff -u xc/include/GL/gl.h:1.6 xc/include/GL/gl.h:removed --- xc/include/GL/gl.h:1.6 Wed Mar 8 16:33:09 2000 +++ xc/include/GL/gl.h Wed Mar 8 16:33:09 2000 @@ -1,1904 +0,0 @@ -#ifndef __gl_h_ -#define __gl_h_ - -#ifdef __cplusplus -extern "C" { -#endif - -/* $XFree86: xc/include/GL/gl.h,v 1.6 2000/02/15 07:13:21 martin Exp $ */ -/* -** The contents of this file are subject to the GLX Public License Version 1.0 -** (the "License"). You may not use this file except in compliance with the -** License. You may obtain a copy of the License at Silicon Graphics, Inc., -** attn: Legal Services, 2011 N. Shoreline Blvd., Mountain View, CA 94043 -** or at http://www.sgi.com/software/opensource/glx/license.html. -** -** Software distributed under the License is distributed on an "AS IS" -** basis. ALL WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY -** IMPLIED WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR -** PURPOSE OR OF NON- INFRINGEMENT. See the License for the specific -** language governing rights and limitations under the License. -** -** The Original Software is GLX version 1.2 source code, released February, -** 1999. The developer of the Original Software is Silicon Graphics, Inc. -** Those portions of the Subject Software created by Silicon Graphics, Inc. -** are Copyright (c) 1991-9 Silicon Graphics, Inc. All Rights Reserved. -** -** $SGI$ -*/ - -typedef unsigned long GLenum; -typedef unsigned char GLboolean; -typedef unsigned long GLbitfield; -typedef signed char GLbyte; -typedef short GLshort; -typedef long GLint; -typedef long GLsizei; -typedef unsigned char GLubyte; -typedef unsigned short GLushort; -typedef unsigned long GLuint; -typedef float GLfloat; -typedef float GLclampf; -typedef double GLdouble; -typedef double GLclampd; -typedef void GLvoid; - -/*************************************************************/ - -/* Version */ -#define GL_VERSION_1_1 1 -#define GL_VERSION_1_2 1 - -/* AccumOp */ -#define GL_ACCUM 0x0100 -#define GL_LOAD 0x0101 -#define GL_RETURN 0x0102 -#define GL_MULT 0x0103 -#define GL_ADD 0x0104 - -/* AlphaFunction */ -#define GL_NEVER 0x0200 -#define GL_LESS 0x0201 -#define GL_EQUAL 0x0202 -#define GL_LEQUAL 0x0203 -#define GL_GREATER 0x0204 -#define GL_NOTEQUAL 0x0205 -#define GL_GEQUAL 0x0206 -#define GL_ALWAYS 0x0207 - -/* AttribMask */ -#define GL_CURRENT_BIT 0x00000001 -#define GL_POINT_BIT 0x00000002 -#define GL_LINE_BIT 0x00000004 -#define GL_POLYGON_BIT 0x00000008 -#define GL_POLYGON_STIPPLE_BIT 0x00000010 -#define GL_PIXEL_MODE_BIT 0x00000020 -#define GL_LIGHTING_BIT 0x00000040 -#define GL_FOG_BIT 0x00000080 -#define GL_DEPTH_BUFFER_BIT 0x00000100 -#define GL_ACCUM_BUFFER_BIT 0x00000200 -#define GL_STENCIL_BUFFER_BIT 0x00000400 -#define GL_VIEWPORT_BIT 0x00000800 -#define GL_TRANSFORM_BIT 0x00001000 -#define GL_ENABLE_BIT 0x00002000 -#define GL_COLOR_BUFFER_BIT 0x00004000 -#define GL_HINT_BIT 0x00008000 -#define GL_EVAL_BIT 0x00010000 -#define GL_LIST_BIT 0x00020000 -#define GL_TEXTURE_BIT 0x00040000 -#define GL_SCISSOR_BIT 0x00080000 -#define GL_ALL_ATTRIB_BITS 0x000fffff - -/* BeginMode */ -#define GL_POINTS 0x0000 -#define GL_LINES 0x0001 -#define GL_LINE_LOOP 0x0002 -#define GL_LINE_STRIP 0x0003 -#define GL_TRIANGLES 0x0004 -#define GL_TRIANGLE_STRIP 0x0005 -#define GL_TRIANGLE_FAN 0x0006 -#define GL_QUADS 0x0007 -#define GL_QUAD_STRIP 0x0008 -#define GL_POLYGON 0x0009 - -/* BlendEquationMode */ -/* GL_LOGIC_OP */ -/* GL_FUNC_ADD */ -/* GL_MIN */ -/* GL_MAX */ -/* GL_FUNC_SUBTRACT */ -/* GL_FUNC_REVERSE_SUBTRACT */ - -/* BlendingFactorDest */ -#define GL_ZERO 0 -#define GL_ONE 1 -#define GL_SRC_COLOR 0x0300 -#define GL_ONE_MINUS_SRC_COLOR 0x0301 -#define GL_SRC_ALPHA 0x0302 -#define GL_ONE_MINUS_SRC_ALPHA 0x0303 -#define GL_DST_ALPHA 0x0304 -#define GL_ONE_MINUS_DST_ALPHA 0x0305 -/* GL_CONSTANT_COLOR */ -/* GL_ONE_MINUS_CONSTANT_COLOR */ -/* GL_CONSTANT_ALPHA */ -/* GL_ONE_MINUS_CONSTANT_ALPHA */ - -/* BlendingFactorSrc */ -/* GL_ZERO */ -/* GL_ONE */ -#define GL_DST_COLOR 0x0306 -#define GL_ONE_MINUS_DST_COLOR 0x0307 -#define GL_SRC_ALPHA_SATURATE 0x0308 -/* GL_SRC_ALPHA */ -/* GL_ONE_MINUS_SRC_ALPHA */ -/* GL_DST_ALPHA */ -/* GL_ONE_MINUS_DST_ALPHA */ -/* GL_CONSTANT_COLOR */ -/* GL_ONE_MINUS_CONSTANT_COLOR */ -/* GL_CONSTANT_ALPHA */ -/* GL_ONE_MINUS_CONSTANT_ALPHA */ - -/* Boolean */ -#define GL_TRUE 1 -#define GL_FALSE 0 - -/* ClearBufferMask */ -/* GL_COLOR_BUFFER_BIT */ -/* GL_ACCUM_BUFFER_BIT */ -/* GL_STENCIL_BUFFER_BIT */ -/* GL_DEPTH_BUFFER_BIT */ - -/* ClientArrayType */ -/* GL_VERTEX_ARRAY */ -/* GL_NORMAL_ARRAY */ -/* GL_COLOR_ARRAY */ -/* GL_INDEX_ARRAY */ -/* GL_TEXTURE_COORD_ARRAY */ -/* GL_EDGE_FLAG_ARRAY */ - -/* ClipPlaneName */ -#define GL_CLIP_PLANE0 0x3000 -#define GL_CLIP_PLANE1 0x3001 -#define GL_CLIP_PLANE2 0x3002 -#define GL_CLIP_PLANE3 0x3003 -#define GL_CLIP_PLANE4 0x3004 -#define GL_CLIP_PLANE5 0x3005 - -/* ColorMaterialFace */ -/* GL_FRONT */ -/* GL_BACK */ -/* GL_FRONT_AND_BACK */ - -/* ColorMaterialParameter */ -/* GL_AMBIENT */ -/* GL_DIFFUSE */ -/* GL_SPECULAR */ -/* GL_EMISSION */ -/* GL_AMBIENT_AND_DIFFUSE */ - -/* ColorPointerType */ -/* GL_BYTE */ -/* GL_UNSIGNED_BYTE */ -/* GL_SHORT */ -/* GL_UNSIGNED_SHORT */ -/* GL_INT */ -/* GL_UNSIGNED_INT */ -/* GL_FLOAT */ -/* GL_DOUBLE */ - -/* ColorTableParameterPName */ -/* GL_COLOR_TABLE_SCALE */ -/* GL_COLOR_TABLE_BIAS */ - -/* ColorTableTarget */ -/* GL_COLOR_TABLE */ -/* GL_POST_CONVOLUTION_COLOR_TABLE */ -/* GL_POST_COLOR_MATRIX_COLOR_TABLE */ -/* GL_PROXY_COLOR_TABLE */ -/* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */ -/* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */ - -/* ConvolutionBorderMode */ -/* GL_REDUCE */ -/* GL_IGNORE_BORDER */ -/* GL_CONSTANT_BORDER */ - -/* ConvolutionParameter */ -/* GL_CONVOLUTION_BORDER_MODE */ -/* GL_CONVOLUTION_FILTER_SCALE */ -/* GL_CONVOLUTION_FILTER_BIAS */ - -/* ConvolutionTarget */ -/* GL_CONVOLUTION_1D */ -/* GL_CONVOLUTION_2D */ - -/* CullFaceMode */ -/* GL_FRONT */ -/* GL_BACK */ -/* GL_FRONT_AND_BACK */ - -/* DataType */ -#define GL_BYTE 0x1400 -#define GL_UNSIGNED_BYTE 0x1401 -#define GL_SHORT 0x1402 -#define GL_UNSIGNED_SHORT 0x1403 -#define GL_INT 0x1404 -#define GL_UNSIGNED_INT 0x1405 -#define GL_FLOAT 0x1406 -#define GL_2_BYTES 0x1407 -#define GL_3_BYTES 0x1408 -#define GL_4_BYTES 0x1409 -#define GL_DOUBLE 0x140A - -/* DepthFunction */ -/* GL_NEVER */ -/* GL_LESS */ -/* GL_EQUAL */ -/* GL_LEQUAL */ -/* GL_GREATER */ -/* GL_NOTEQUAL */ -/* GL_GEQUAL */ -/* GL_ALWAYS */ - -/* DrawBufferMode */ -#define GL_NONE 0 -#define GL_FRONT_LEFT 0x0400 -#define GL_FRONT_RIGHT 0x0401 -#define GL_BACK_LEFT 0x0402 -#define GL_BACK_RIGHT 0x0403 -#define GL_FRONT 0x0404 -#define GL_BACK 0x0405 -#define GL_LEFT 0x0406 -#define GL_RIGHT 0x0407 -#define GL_FRONT_AND_BACK 0x0408 -#define GL_AUX0 0x0409 -#define GL_AUX1 0x040A -#define GL_AUX2 0x040B -#define GL_AUX3 0x040C - -/* Enable */ -/* GL_FOG */ -/* GL_LIGHTING */ -/* GL_TEXTURE_1D */ -/* GL_TEXTURE_2D */ -/* GL_LINE_STIPPLE */ -/* GL_POLYGON_STIPPLE */ -/* GL_CULL_FACE */ -/* GL_ALPHA_TEST */ -/* GL_BLEND */ -/* GL_INDEX_LOGIC_OP */ -/* GL_COLOR_LOGIC_OP */ -/* GL_DITHER */ -/* GL_STENCIL_TEST */ -/* GL_DEPTH_TEST */ -/* GL_CLIP_PLANE0 */ -/* GL_CLIP_PLANE1 */ -/* GL_CLIP_PLANE2 */ -/* GL_CLIP_PLANE3 */ -/* GL_CLIP_PLANE4 */ -/* GL_CLIP_PLANE5 */ -/* GL_LIGHT0 */ -/* GL_LIGHT1 */ -/* GL_LIGHT2 */ -/* GL_LIGHT3 */ -/* GL_LIGHT4 */ -/* GL_LIGHT5 */ -/* GL_LIGHT6 */ -/* GL_LIGHT7 */ -/* GL_TEXTURE_GEN_S */ -/* GL_TEXTURE_GEN_T */ -/* GL_TEXTURE_GEN_R */ -/* GL_TEXTURE_GEN_Q */ -/* GL_MAP1_VERTEX_3 */ -/* GL_MAP1_VERTEX_4 */ -/* GL_MAP1_COLOR_4 */ -/* GL_MAP1_INDEX */ -/* GL_MAP1_NORMAL */ -/* GL_MAP1_TEXTURE_COORD_1 */ -/* GL_MAP1_TEXTURE_COORD_2 */ -/* GL_MAP1_TEXTURE_COORD_3 */ -/* GL_MAP1_TEXTURE_COORD_4 */ -/* GL_MAP2_VERTEX_3 */ -/* GL_MAP2_VERTEX_4 */ -/* GL_MAP2_COLOR_4 */ -/* GL_MAP2_INDEX */ -/* GL_MAP2_NORMAL */ -/* GL_MAP2_TEXTURE_COORD_1 */ -/* GL_MAP2_TEXTURE_COORD_2 */ -/* GL_MAP2_TEXTURE_COORD_3 */ -/* GL_MAP2_TEXTURE_COORD_4 */ -/* GL_POINT_SMOOTH */ -/* GL_LINE_SMOOTH */ -/* GL_POLYGON_SMOOTH */ -/* GL_SCISSOR_TEST */ -/* GL_COLOR_MATERIAL */ -/* GL_NORMALIZE */ -/* GL_AUTO_NORMAL */ -/* GL_VERTEX_ARRAY */ -/* GL_NORMAL_ARRAY */ -/* GL_COLOR_ARRAY */ -/* GL_INDEX_ARRAY */ -/* GL_TEXTURE_COORD_ARRAY */ -/* GL_EDGE_FLAG_ARRAY */ -/* GL_POLYGON_OFFSET_POINT */ -/* GL_POLYGON_OFFSET_LINE */ -/* GL_POLYGON_OFFSET_FILL */ -/* GL_COLOR_TABLE */ -/* GL_POST_CONVOLUTION_COLOR_TABLE */ -/* GL_POST_COLOR_MATRIX_COLOR_TABLE */ -/* GL_CONVOLUTION_1D */ -/* GL_CONVOLUTION_2D */ -/* GL_SEPARABLE_2D */ -/* GL_HISTOGRAM */ -/* GL_MINMAX */ -/* GL_RESCALE_NORMAL */ -/* GL_TEXTURE_3D */ - -/* ErrorCode */ -#define GL_NO_ERROR 0 -#define GL_INVALID_ENUM 0x0500 -#define GL_INVALID_VALUE 0x0501 -#define GL_INVALID_OPERATION 0x0502 -#define GL_STACK_OVERFLOW 0x0503 -#define GL_STACK_UNDERFLOW 0x0504 -#define GL_OUT_OF_MEMORY 0x0505 -/* GL_TABLE_TOO_LARGE */ - -/* FeedBackMode */ -#define GL_2D 0x0600 -#define GL_3D 0x0601 -#define GL_3D_COLOR 0x0602 -#define GL_3D_COLOR_TEXTURE 0x0603 -#define GL_4D_COLOR_TEXTURE 0x0604 - -/* FeedBackToken */ -#define GL_PASS_THROUGH_TOKEN 0x0700 -#define GL_POINT_TOKEN 0x0701 -#define GL_LINE_TOKEN 0x0702 -#define GL_POLYGON_TOKEN 0x0703 -#define GL_BITMAP_TOKEN 0x0704 -#define GL_DRAW_PIXEL_TOKEN 0x0705 -#define GL_COPY_PIXEL_TOKEN 0x0706 -#define GL_LINE_RESET_TOKEN 0x0707 - -/* FogMode */ -/* GL_LINEAR */ -#define GL_EXP 0x0800 -#define GL_EXP2 0x0801 - -/* FogParameter */ -/* GL_FOG_COLOR */ -/* GL_FOG_DENSITY */ -/* GL_FOG_END */ -/* GL_FOG_INDEX */ -/* GL_FOG_MODE */ -/* GL_FOG_START */ - -/* FrontFaceDirection */ -#define GL_CW 0x0900 -#define GL_CCW 0x0901 - -/* GetColorTableParameterPName */ -/* GL_COLOR_TABLE_SCALE */ -/* GL_COLOR_TABLE_BIAS */ -/* GL_COLOR_TABLE_FORMAT */ -/* GL_COLOR_TABLE_WIDTH */ -/* GL_COLOR_TABLE_RED_SIZE */ -/* GL_COLOR_TABLE_GREEN_SIZE */ -/* GL_COLOR_TABLE_BLUE_SIZE */ -/* GL_COLOR_TABLE_ALPHA_SIZE */ -/* GL_COLOR_TABLE_LUMINANCE_SIZE */ -/* GL_COLOR_TABLE_INTENSITY_SIZE */ - -/* GetConvolutionParameter */ -/* GL_CONVOLUTION_BORDER_COLOR */ -/* GL_CONVOLUTION_BORDER_MODE */ -/* GL_CONVOLUTION_FILTER_SCALE */ -/* GL_CONVOLUTION_FILTER_BIAS */ -/* GL_CONVOLUTION_FORMAT */ -/* GL_CONVOLUTION_WIDTH */ -/* GL_CONVOLUTION_HEIGHT */ -/* GL_MAX_CONVOLUTION_WIDTH */ -/* GL_MAX_CONVOLUTION_HEIGHT */ - -/* GetHistogramParameterPName */ -/* GL_HISTOGRAM_WIDTH */ -/* GL_HISTOGRAM_FORMAT */ -/* GL_HISTOGRAM_RED_SIZE */ -/* GL_HISTOGRAM_GREEN_SIZE */ -/* GL_HISTOGRAM_BLUE_SIZE */ -/* GL_HISTOGRAM_ALPHA_SIZE */ -/* GL_HISTOGRAM_LUMINANCE_SIZE */ -/* GL_HISTOGRAM_SINK */ - -/* GetMapTarget */ -#define GL_COEFF 0x0A00 -#define GL_ORDER 0x0A01 -#define GL_DOMAIN 0x0A02 - -/* GetMinmaxParameterPName */ -/* GL_MINMAX_FORMAT */ -/* GL_MINMAX_SINK */ - -/* GetPixelMap */ -/* GL_PIXEL_MAP_I_TO_I */ -/* GL_PIXEL_MAP_S_TO_S */ -/* GL_PIXEL_MAP_I_TO_R */ -/* GL_PIXEL_MAP_I_TO_G */ -/* GL_PIXEL_MAP_I_TO_B */ -/* GL_PIXEL_MAP_I_TO_A */ -/* GL_PIXEL_MAP_R_TO_R */ -/* GL_PIXEL_MAP_G_TO_G */ -/* GL_PIXEL_MAP_B_TO_B */ -/* GL_PIXEL_MAP_A_TO_A */ - -/* GetPointerTarget */ -/* GL_VERTEX_ARRAY_POINTER */ -/* GL_NORMAL_ARRAY_POINTER */ -/* GL_COLOR_ARRAY_POINTER */ -/* GL_INDEX_ARRAY_POINTER */ -/* GL_TEXTURE_COORD_ARRAY_POINTER */ -/* GL_EDGE_FLAG_ARRAY_POINTER */ - -/* GetTarget */ -#define GL_CURRENT_COLOR 0x0B00 -#define GL_CURRENT_INDEX 0x0B01 -#define GL_CURRENT_NORMAL 0x0B02 -#define GL_CURRENT_TEXTURE_COORDS 0x0B03 -#define GL_CURRENT_RASTER_COLOR 0x0B04 -#define GL_CURRENT_RASTER_INDEX 0x0B05 -#define GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06 -#define GL_CURRENT_RASTER_POSITION 0x0B07 -#define GL_CURRENT_RASTER_POSITION_VALID 0x0B08 -#define GL_CURRENT_RASTER_DISTANCE 0x0B09 -#define GL_POINT_SMOOTH 0x0B10 -#define GL_POINT_SIZE 0x0B11 -#define GL_POINT_SIZE_RANGE 0x0B12 -#define GL_POINT_SIZE_GRANULARITY 0x0B13 -#define GL_LINE_SMOOTH 0x0B20 -#define GL_LINE_WIDTH 0x0B21 -#define GL_LINE_WIDTH_RANGE 0x0B22 -#define GL_LINE_WIDTH_GRANULARITY 0x0B23 -#define GL_LINE_STIPPLE 0x0B24 -#define GL_LINE_STIPPLE_PATTERN 0x0B25 -#define GL_LINE_STIPPLE_REPEAT 0x0B26 -#define GL_LIST_MODE 0x0B30 -#define GL_MAX_LIST_NESTING 0x0B31 -#define GL_LIST_BASE 0x0B32 -#define GL_LIST_INDEX 0x0B33 -#define GL_POLYGON_MODE 0x0B40 -#define GL_POLYGON_SMOOTH 0x0B41 -#define GL_POLYGON_STIPPLE 0x0B42 -#define GL_EDGE_FLAG 0x0B43 -#define GL_CULL_FACE 0x0B44 -#define GL_CULL_FACE_MODE 0x0B45 -#define GL_FRONT_FACE 0x0B46 -#define GL_LIGHTING 0x0B50 -#define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51 -#define GL_LIGHT_MODEL_TWO_SIDE 0x0B52 -#define GL_LIGHT_MODEL_AMBIENT 0x0B53 -#define GL_SHADE_MODEL 0x0B54 -#define GL_COLOR_MATERIAL_FACE 0x0B55 -#define GL_COLOR_MATERIAL_PARAMETER 0x0B56 -#define GL_COLOR_MATERIAL 0x0B57 -#define GL_FOG 0x0B60 -#define GL_FOG_INDEX 0x0B61 -#define GL_FOG_DENSITY 0x0B62 -#define GL_FOG_START 0x0B63 -#define GL_FOG_END 0x0B64 -#define GL_FOG_MODE 0x0B65 -#define GL_FOG_COLOR 0x0B66 -#define GL_DEPTH_RANGE 0x0B70 -#define GL_DEPTH_TEST 0x0B71 -#define GL_DEPTH_WRITEMASK 0x0B72 -#define GL_DEPTH_CLEAR_VALUE 0x0B73 -#define GL_DEPTH_FUNC 0x0B74 -#define GL_ACCUM_CLEAR_VALUE 0x0B80 -#define GL_STENCIL_TEST 0x0B90 -#define GL_STENCIL_CLEAR_VALUE 0x0B91 -#define GL_STENCIL_FUNC 0x0B92 -#define GL_STENCIL_VALUE_MASK 0x0B93 -#define GL_STENCIL_FAIL 0x0B94 -#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 -#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 -#define GL_STENCIL_REF 0x0B97 -#define GL_STENCIL_WRITEMASK 0x0B98 -#define GL_MATRIX_MODE 0x0BA0 -#define GL_NORMALIZE 0x0BA1 -#define GL_VIEWPORT 0x0BA2 -#define GL_MODELVIEW_STACK_DEPTH 0x0BA3 -#define GL_PROJECTION_STACK_DEPTH 0x0BA4 -#define GL_TEXTURE_STACK_DEPTH 0x0BA5 -#define GL_MODELVIEW_MATRIX 0x0BA6 -#define GL_PROJECTION_MATRIX 0x0BA7 -#define GL_TEXTURE_MATRIX 0x0BA8 -#define GL_ATTRIB_STACK_DEPTH 0x0BB0 -#define GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1 -#define GL_ALPHA_TEST 0x0BC0 -#define GL_ALPHA_TEST_FUNC 0x0BC1 -#define GL_ALPHA_TEST_REF 0x0BC2 -#define GL_DITHER 0x0BD0 -#define GL_BLEND_DST 0x0BE0 -#define GL_BLEND_SRC 0x0BE1 -#define GL_BLEND 0x0BE2 -#define GL_LOGIC_OP_MODE 0x0BF0 -#define GL_INDEX_LOGIC_OP 0x0BF1 -#define GL_COLOR_LOGIC_OP 0x0BF2 -#define GL_AUX_BUFFERS 0x0C00 -#define GL_DRAW_BUFFER 0x0C01 -#define GL_READ_BUFFER 0x0C02 -#define GL_SCISSOR_BOX 0x0C10 -#define GL_SCISSOR_TEST 0x0C11 -#define GL_INDEX_CLEAR_VALUE 0x0C20 -#define GL_INDEX_WRITEMASK 0x0C21 -#define GL_COLOR_CLEAR_VALUE 0x0C22 -#define GL_COLOR_WRITEMASK 0x0C23 -#define GL_INDEX_MODE 0x0C30 -#define GL_RGBA_MODE 0x0C31 -#define GL_DOUBLEBUFFER 0x0C32 -#define GL_STEREO 0x0C33 -#define GL_RENDER_MODE 0x0C40 -#define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50 -#define GL_POINT_SMOOTH_HINT 0x0C51 -#define GL_LINE_SMOOTH_HINT 0x0C52 -#define GL_POLYGON_SMOOTH_HINT 0x0C53 -#define GL_FOG_HINT 0x0C54 -#define GL_TEXTURE_GEN_S 0x0C60 -#define GL_TEXTURE_GEN_T 0x0C61 -#define GL_TEXTURE_GEN_R 0x0C62 -#define GL_TEXTURE_GEN_Q 0x0C63 -#define GL_PIXEL_MAP_I_TO_I 0x0C70 -#define GL_PIXEL_MAP_S_TO_S 0x0C71 -#define GL_PIXEL_MAP_I_TO_R 0x0C72 -#define GL_PIXEL_MAP_I_TO_G 0x0C73 -#define GL_PIXEL_MAP_I_TO_B 0x0C74 -#define GL_PIXEL_MAP_I_TO_A 0x0C75 -#define GL_PIXEL_MAP_R_TO_R 0x0C76 -#define GL_PIXEL_MAP_G_TO_G 0x0C77 -#define GL_PIXEL_MAP_B_TO_B 0x0C78 -#define GL_PIXEL_MAP_A_TO_A 0x0C79 -#define GL_PIXEL_MAP_I_TO_I_SIZE 0x0CB0 -#define GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1 -#define GL_PIXEL_MAP_I_TO_R_SIZE 0x0CB2 -#define GL_PIXEL_MAP_I_TO_G_SIZE 0x0CB3 -#define GL_PIXEL_MAP_I_TO_B_SIZE 0x0CB4 -#define GL_PIXEL_MAP_I_TO_A_SIZE 0x0CB5 -#define GL_PIXEL_MAP_R_TO_R_SIZE 0x0CB6 -#define GL_PIXEL_MAP_G_TO_G_SIZE 0x0CB7 -#define GL_PIXEL_MAP_B_TO_B_SIZE 0x0CB8 -#define GL_PIXEL_MAP_A_TO_A_SIZE 0x0CB9 -#define GL_UNPACK_SWAP_BYTES 0x0CF0 -#define GL_UNPACK_LSB_FIRST 0x0CF1 -#define GL_UNPACK_ROW_LENGTH 0x0CF2 -#define GL_UNPACK_SKIP_ROWS 0x0CF3 -#define GL_UNPACK_SKIP_PIXELS 0x0CF4 -#define GL_UNPACK_ALIGNMENT 0x0CF5 -#define GL_PACK_SWAP_BYTES 0x0D00 -#define GL_PACK_LSB_FIRST 0x0D01 -#define GL_PACK_ROW_LENGTH 0x0D02 -#define GL_PACK_SKIP_ROWS 0x0D03 -#define GL_PACK_SKIP_PIXELS 0x0D04 -#define GL_PACK_ALIGNMENT 0x0D05 -#define GL_MAP_COLOR 0x0D10 -#define GL_MAP_STENCIL 0x0D11 -#define GL_INDEX_SHIFT 0x0D12 -#define GL_INDEX_OFFSET 0x0D13 -#define GL_RED_SCALE 0x0D14 -#define GL_RED_BIAS 0x0D15 -#define GL_ZOOM_X 0x0D16 -#define GL_ZOOM_Y 0x0D17 -#define GL_GREEN_SCALE 0x0D18 -#define GL_GREEN_BIAS 0x0D19 -#define GL_BLUE_SCALE 0x0D1A -#define GL_BLUE_BIAS 0x0D1B -#define GL_ALPHA_SCALE 0x0D1C -#define GL_ALPHA_BIAS 0x0D1D -#define GL_DEPTH_SCALE 0x0D1E -#define GL_DEPTH_BIAS 0x0D1F -#define GL_MAX_EVAL_ORDER 0x0D30 -#define GL_MAX_LIGHTS 0x0D31 -#define GL_MAX_CLIP_PLANES 0x0D32 -#define GL_MAX_TEXTURE_SIZE 0x0D33 -#define GL_MAX_PIXEL_MAP_TABLE 0x0D34 -#define GL_MAX_ATTRIB_STACK_DEPTH 0x0D35 -#define GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36 -#define GL_MAX_NAME_STACK_DEPTH 0x0D37 -#define GL_MAX_PROJECTION_STACK_DEPTH 0x0D38 -#define GL_MAX_TEXTURE_STACK_DEPTH 0x0D39 -#define GL_MAX_VIEWPORT_DIMS 0x0D3A -#define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 0x0D3B -#define GL_SUBPIXEL_BITS 0x0D50 -#define GL_INDEX_BITS 0x0D51 -#define GL_RED_BITS 0x0D52 -#define GL_GREEN_BITS 0x0D53 -#define GL_BLUE_BITS 0x0D54 -#define GL_ALPHA_BITS 0x0D55 -#define GL_DEPTH_BITS 0x0D56 -#define GL_STENCIL_BITS 0x0D57 -#define GL_ACCUM_RED_BITS 0x0D58 -#define GL_ACCUM_GREEN_BITS 0x0D59 -#define GL_ACCUM_BLUE_BITS 0x0D5A -#define GL_ACCUM_ALPHA_BITS 0x0D5B -#define GL_NAME_STACK_DEPTH 0x0D70 -#define GL_AUTO_NORMAL 0x0D80 -#define GL_MAP1_COLOR_4 0x0D90 -#define GL_MAP1_INDEX 0x0D91 -#define GL_MAP1_NORMAL 0x0D92 -#define GL_MAP1_TEXTURE_COORD_1 0x0D93 -#define GL_MAP1_TEXTURE_COORD_2 0x0D94 -#define GL_MAP1_TEXTURE_COORD_3 0x0D95 -#define GL_MAP1_TEXTURE_COORD_4 0x0D96 -#define GL_MAP1_VERTEX_3 0x0D97 -#define GL_MAP1_VERTEX_4 0x0D98 -#define GL_MAP2_COLOR_4 0x0DB0 -#define GL_MAP2_INDEX 0x0DB1 -#define GL_MAP2_NORMAL 0x0DB2 -#define GL_MAP2_TEXTURE_COORD_1 0x0DB3 -#define GL_MAP2_TEXTURE_COORD_2 0x0DB4 -#define GL_MAP2_TEXTURE_COORD_3 0x0DB5 -#define GL_MAP2_TEXTURE_COORD_4 0x0DB6 -#define GL_MAP2_VERTEX_3 0x0DB7 -#define GL_MAP2_VERTEX_4 0x0DB8 -#define GL_MAP1_GRID_DOMAIN 0x0DD0 -#define GL_MAP1_GRID_SEGMENTS 0x0DD1 -#define GL_MAP2_GRID_DOMAIN 0x0DD2 -#define GL_MAP2_GRID_SEGMENTS 0x0DD3 -#define GL_TEXTURE_1D 0x0DE0 -#define GL_TEXTURE_2D 0x0DE1 -#define GL_FEEDBACK_BUFFER_POINTER 0x0DF0 -#define GL_FEEDBACK_BUFFER_SIZE 0x0DF1 -#define GL_FEEDBACK_BUFFER_TYPE 0x0DF2 -#define GL_SELECTION_BUFFER_POINTER 0x0DF3 -#define GL_SELECTION_BUFFER_SIZE 0x0DF4 -/* GL_TEXTURE_BINDING_1D */ -/* GL_TEXTURE_BINDING_2D */ -/* GL_TEXTURE_BINDING_3D */ -/* GL_VERTEX_ARRAY */ -/* GL_NORMAL_ARRAY */ -/* GL_COLOR_ARRAY */ -/* GL_INDEX_ARRAY */ -/* GL_TEXTURE_COORD_ARRAY */ -/* GL_EDGE_FLAG_ARRAY */ -/* GL_VERTEX_ARRAY_SIZE */ -/* GL_VERTEX_ARRAY_TYPE */ -/* GL_VERTEX_ARRAY_STRIDE */ -/* GL_NORMAL_ARRAY_TYPE */ -/* GL_NORMAL_ARRAY_STRIDE */ -/* GL_COLOR_ARRAY_SIZE */ -/* GL_COLOR_ARRAY_TYPE */ -/* GL_COLOR_ARRAY_STRIDE */ -/* GL_INDEX_ARRAY_TYPE */ -/* GL_INDEX_ARRAY_STRIDE */ -/* GL_TEXTURE_COORD_ARRAY_SIZE */ -/* GL_TEXTURE_COORD_ARRAY_TYPE */ -/* GL_TEXTURE_COORD_ARRAY_STRIDE */ -/* GL_EDGE_FLAG_ARRAY_STRIDE */ -/* GL_POLYGON_OFFSET_FACTOR */ -/* GL_POLYGON_OFFSET_UNITS */ -/* GL_COLOR_TABLE */ -/* GL_POST_CONVOLUTION_COLOR_TABLE */ -/* GL_POST_COLOR_MATRIX_COLOR_TABLE */ -/* GL_CONVOLUTION_1D */ -/* GL_CONVOLUTION_2D */ -/* GL_SEPARABLE_2D */ -/* GL_POST_CONVOLUTION_RED_SCALE */ -/* GL_POST_CONVOLUTION_GREEN_SCALE */ -/* GL_POST_CONVOLUTION_BLUE_SCALE */ -/* GL_POST_CONVOLUTION_ALPHA_SCALE */ -/* GL_POST_CONVOLUTION_RED_BIAS */ -/* GL_POST_CONVOLUTION_GREEN_BIAS */ -/* GL_POST_CONVOLUTION_BLUE_BIAS */ -/* GL_POST_CONVOLUTION_ALPHA_BIAS */ -/* GL_COLOR_MATRIX */ -/* GL_COLOR_MATRIX_STACK_DEPTH */ -/* GL_MAX_COLOR_MATRIX_STACK_DEPTH */ -/* GL_POST_COLOR_MATRIX_RED_SCALE */ -/* GL_POST_COLOR_MATRIX_GREEN_SCALE */ -/* GL_POST_COLOR_MATRIX_BLUE_SCALE */ -/* GL_POST_COLOR_MATRIX_ALPHA_SCALE */ -/* GL_POST_COLOR_MATRIX_RED_BIAS */ -/* GL_POST_COLOR_MATRIX_GREEN_BIAS */ -/* GL_POST_COLOR_MATRIX_BLUE_BIAS */ -/* GL_POST_COLOR_MATRIX_ALPHA_BIAS */ -/* GL_HISTOGRAM */ -/* GL_MINMAX */ -/* GL_MAX_ELEMENTS_VERTICES */ -/* GL_MAX_ELEMENTS_INDICES */ -/* GL_RESCALE_NORMAL */ -/* GL_LIGHT_MODEL_COLOR_CONTROL */ -/* GL_PACK_SKIP_IMAGES */ -/* GL_PACK_IMAGE_HEIGHT */ -/* GL_UNPACK_SKIP_IMAGES */ -/* GL_UNPACK_IMAGE_HEIGHT */ -/* GL_TEXTURE_3D */ -/* GL_MAX_3D_TEXTURE_SIZE */ -/* GL_BLEND_COLOR */ -/* GL_BLEND_EQUATION */ -/* GL_ACTIVE_TEXTURE_ARB */ -/* GL_CLIENT_ACTIVE_TEXTURE_ARB */ -/* GL_MAX_TEXTURE_UNITS_ARB */ - -/* GetTextureParameter */ -/* GL_TEXTURE_MAG_FILTER */ -/* GL_TEXTURE_MIN_FILTER */ -/* GL_TEXTURE_WRAP_S */ -/* GL_TEXTURE_WRAP_T */ -#define GL_TEXTURE_WIDTH 0x1000 -#define GL_TEXTURE_HEIGHT 0x1001 -#define GL_TEXTURE_INTERNAL_FORMAT 0x1003 -#define GL_TEXTURE_BORDER_COLOR 0x1004 -#define GL_TEXTURE_BORDER 0x1005 -/* GL_TEXTURE_RED_SIZE */ -/* GL_TEXTURE_GREEN_SIZE */ -/* GL_TEXTURE_BLUE_SIZE */ -/* GL_TEXTURE_ALPHA_SIZE */ -/* GL_TEXTURE_LUMINANCE_SIZE */ -/* GL_TEXTURE_INTENSITY_SIZE */ -/* GL_TEXTURE_PRIORITY */ -/* GL_TEXTURE_RESIDENT */ -/* GL_TEXTURE_DEPTH */ -/* GL_TEXTURE_WRAP_R */ -/* GL_TEXTURE_MIN_LOD */ -/* GL_TEXTURE_MAX_LOD */ -/* GL_TEXTURE_BASE_LEVEL */ -/* GL_TEXTURE_MAX_LEVEL */ - -/* HintMode */ -#define GL_DONT_CARE 0x1100 -#define GL_FASTEST 0x1101 -#define GL_NICEST 0x1102 - -/* HintTarget */ -/* GL_PERSPECTIVE_CORRECTION_HINT */ -/* GL_POINT_SMOOTH_HINT */ -/* GL_LINE_SMOOTH_HINT */ -/* GL_POLYGON_SMOOTH_HINT */ -/* GL_FOG_HINT */ - -/* HistogramTarget */ -/* GL_HISTOGRAM */ -/* GL_PROXY_HISTOGRAM */ - -/* IndexPointerType */ -/* GL_SHORT */ -/* GL_INT */ -/* GL_FLOAT */ -/* GL_DOUBLE */ - -/* LightModelColorControl */ -/* GL_SINGLE_COLOR */ -/* GL_SEPARATE_SPECULAR_COLOR */ - -/* LightModelParameter */ -/* GL_LIGHT_MODEL_AMBIENT */ -/* GL_LIGHT_MODEL_LOCAL_VIEWER */ -/* GL_LIGHT_MODEL_TWO_SIDE */ -/* GL_LIGHT_MODEL_COLOR_CONTROL */ - -/* LightName */ -#define GL_LIGHT0 0x4000 -#define GL_LIGHT1 0x4001 -#define GL_LIGHT2 0x4002 -#define GL_LIGHT3 0x4003 -#define GL_LIGHT4 0x4004 -#define GL_LIGHT5 0x4005 -#define GL_LIGHT6 0x4006 -#define GL_LIGHT7 0x4007 - -/* LightParameter */ -#define GL_AMBIENT 0x1200 -#define GL_DIFFUSE 0x1201 -#define GL_SPECULAR 0x1202 -#define GL_POSITION 0x1203 -#define GL_SPOT_DIRECTION 0x1204 -#define GL_SPOT_EXPONENT 0x1205 -#define GL_SPOT_CUTOFF 0x1206 -#define GL_CONSTANT_ATTENUATION 0x1207 -#define GL_LINEAR_ATTENUATION 0x1208 -#define GL_QUADRATIC_ATTENUATION 0x1209 - -/* InterleavedArrays */ -/* GL_V2F */ -/* GL_V3F */ -/* GL_C4UB_V2F */ -/* GL_C4UB_V3F */ -/* GL_C3F_V3F */ -/* GL_N3F_V3F */ -/* GL_C4F_N3F_V3F */ -/* GL_T2F_V3F */ -/* GL_T4F_V4F */ -/* GL_T2F_C4UB_V3F */ -/* GL_T2F_C3F_V3F */ -/* GL_T2F_N3F_V3F */ -/* GL_T2F_C4F_N3F_V3F */ -/* GL_T4F_C4F_N3F_V4F */ - -/* ListMode */ -#define GL_COMPILE 0x1300 -#define GL_COMPILE_AND_EXECUTE 0x1301 - -/* ListNameType */ -/* GL_BYTE */ -/* GL_UNSIGNED_BYTE */ -/* GL_SHORT */ -/* GL_UNSIGNED_SHORT */ -/* GL_INT */ -/* GL_UNSIGNED_INT */ -/* GL_FLOAT */ -/* GL_2_BYTES */ -/* GL_3_BYTES */ -/* GL_4_BYTES */ - -/* LogicOp */ -#define GL_CLEAR 0x1500 -#define GL_AND 0x1501 -#define GL_AND_REVERSE 0x1502 -#define GL_COPY 0x1503 -#define GL_AND_INVERTED 0x1504 -#define GL_NOOP 0x1505 -#define GL_XOR 0x1506 -#define GL_OR 0x1507 -#define GL_NOR 0x1508 -#define GL_EQUIV 0x1509 -#define GL_INVERT 0x150A -#define GL_OR_REVERSE 0x150B -#define GL_COPY_INVERTED 0x150C -#define GL_OR_INVERTED 0x150D -#define GL_NAND 0x150E -#define GL_SET 0x150F - -/* MapTarget */ -/* GL_MAP1_COLOR_4 */ -/* GL_MAP1_INDEX */ -/* GL_MAP1_NORMAL */ -/* GL_MAP1_TEXTURE_COORD_1 */ -/* GL_MAP1_TEXTURE_COORD_2 */ -/* GL_MAP1_TEXTURE_COORD_3 */ -/* GL_MAP1_TEXTURE_COORD_4 */ -/* GL_MAP1_VERTEX_3 */ -/* GL_MAP1_VERTEX_4 */ -/* GL_MAP2_COLOR_4 */ -/* GL_MAP2_INDEX */ -/* GL_MAP2_NORMAL */ -/* GL_MAP2_TEXTURE_COORD_1 */ -/* GL_MAP2_TEXTURE_COORD_2 */ -/* GL_MAP2_TEXTURE_COORD_3 */ -/* GL_MAP2_TEXTURE_COORD_4 */ -/* GL_MAP2_VERTEX_3 */ -/* GL_MAP2_VERTEX_4 */ - -/* MaterialFace */ -/* GL_FRONT */ -/* GL_BACK */ -/* GL_FRONT_AND_BACK */ - -/* MaterialParameter */ -#define GL_EMISSION 0x1600 -#define GL_SHININESS 0x1601 -#define GL_AMBIENT_AND_DIFFUSE 0x1602 -#define GL_COLOR_INDEXES 0x1603 -/* GL_AMBIENT */ -/* GL_DIFFUSE */ -/* GL_SPECULAR */ - -/* MatrixMode */ -#define GL_MODELVIEW 0x1700 -#define GL_PROJECTION 0x1701 -#define GL_TEXTURE 0x1702 - -/* MeshMode1 */ -/* GL_POINT */ -/* GL_LINE */ - -/* MeshMode2 */ -/* GL_POINT */ -/* GL_LINE */ -/* GL_FILL */ - -/* MinmaxTarget */ -/* GL_MINMAX */ - -/* NormalPointerType */ -/* GL_BYTE */ -/* GL_SHORT */ -/* GL_INT */ -/* GL_FLOAT */ -/* GL_DOUBLE */ - -/* PixelCopyType */ -#define GL_COLOR 0x1800 -#define GL_DEPTH 0x1801 -#define GL_STENCIL 0x1802 - -/* PixelFormat */ -#define GL_COLOR_INDEX 0x1900 -#define GL_STENCIL_INDEX 0x1901 -#define GL_DEPTH_COMPONENT 0x1902 -#define GL_RED 0x1903 -#define GL_GREEN 0x1904 -#define GL_BLUE 0x1905 -#define GL_ALPHA 0x1906 -#define GL_RGB 0x1907 -#define GL_RGBA 0x1908 -#define GL_LUMINANCE 0x1909 -#define GL_LUMINANCE_ALPHA 0x190A -/* GL_ABGR */ - -/* PixelInternalFormat */ -/* GL_ALPHA4 */ -/* GL_ALPHA8 */ -/* GL_ALPHA12 */ -/* GL_ALPHA16 */ -/* GL_LUMINANCE4 */ -/* GL_LUMINANCE8 */ -/* GL_LUMINANCE12 */ -/* GL_LUMINANCE16 */ -/* GL_LUMINANCE4_ALPHA4 */ -/* GL_LUMINANCE6_ALPHA2 */ -/* GL_LUMINANCE8_ALPHA8 */ -/* GL_LUMINANCE12_ALPHA4 */ -/* GL_LUMINANCE12_ALPHA12 */ -/* GL_LUMINANCE16_ALPHA16 */ -/* GL_INTENSITY */ -/* GL_INTENSITY4 */ -/* GL_INTENSITY8 */ -/* GL_INTENSITY12 */ -/* GL_INTENSITY16 */ -/* GL_R3_G3_B2 */ -/* GL_RGB4 */ -/* GL_RGB5 */ -/* GL_RGB8 */ -/* GL_RGB10 */ -/* GL_RGB12 */ -/* GL_RGB16 */ -/* GL_RGBA2 */ -/* GL_RGBA4 */ -/* GL_RGB5_A1 */ -/* GL_RGBA8 */ -/* GL_RGB10_A2 */ -/* GL_RGBA12 */ -/* GL_RGBA16 */ - -/* PixelMap */ -/* GL_PIXEL_MAP_I_TO_I */ -/* GL_PIXEL_MAP_S_TO_S */ -/* GL_PIXEL_MAP_I_TO_R */ -/* GL_PIXEL_MAP_I_TO_G */ -/* GL_PIXEL_MAP_I_TO_B */ -/* GL_PIXEL_MAP_I_TO_A */ -/* GL_PIXEL_MAP_R_TO_R */ -/* GL_PIXEL_MAP_G_TO_G */ -/* GL_PIXEL_MAP_B_TO_B */ -/* GL_PIXEL_MAP_A_TO_A */ - -/* PixelStore */ -/* GL_UNPACK_SWAP_BYTES */ -/* GL_UNPACK_LSB_FIRST */ -/* GL_UNPACK_ROW_LENGTH */ -/* GL_UNPACK_SKIP_ROWS */ -/* GL_UNPACK_SKIP_PIXELS */ -/* GL_UNPACK_ALIGNMENT */ -/* GL_PACK_SWAP_BYTES */ -/* GL_PACK_LSB_FIRST */ -/* GL_PACK_ROW_LENGTH */ -/* GL_PACK_SKIP_ROWS */ -/* GL_PACK_SKIP_PIXELS */ -/* GL_PACK_ALIGNMENT */ -/* GL_PACK_SKIP_IMAGES */ -/* GL_PACK_IMAGE_HEIGHT */ -/* GL_UNPACK_SKIP_IMAGES */ -/* GL_UNPACK_IMAGE_HEIGHT */ - -/* PixelTransfer */ -/* GL_MAP_COLOR */ -/* GL_MAP_STENCIL */ -/* GL_INDEX_SHIFT */ -/* GL_INDEX_OFFSET */ -/* GL_RED_SCALE */ -/* GL_RED_BIAS */ -/* GL_GREEN_SCALE */ -/* GL_GREEN_BIAS */ -/* GL_BLUE_SCALE */ -/* GL_BLUE_BIAS */ -/* GL_ALPHA_SCALE */ -/* GL_ALPHA_BIAS */ -/* GL_DEPTH_SCALE */ -/* GL_DEPTH_BIAS */ -/* GL_POST_CONVOLUTION_RED_SCALE */ -/* GL_POST_CONVOLUTION_GREEN_SCALE */ -/* GL_POST_CONVOLUTION_BLUE_SCALE */ -/* GL_POST_CONVOLUTION_ALPHA_SCALE */ -/* GL_POST_CONVOLUTION_RED_BIAS */ -/* GL_POST_CONVOLUTION_GREEN_BIAS */ -/* GL_POST_CONVOLUTION_BLUE_BIAS */ -/* GL_POST_CONVOLUTION_ALPHA_BIAS */ -/* GL_POST_COLOR_MATRIX_RED_SCALE */ -/* GL_POST_COLOR_MATRIX_GREEN_SCALE */ -/* GL_POST_COLOR_MATRIX_BLUE_SCALE */ -/* GL_POST_COLOR_MATRIX_ALPHA_SCALE */ -/* GL_POST_COLOR_MATRIX_RED_BIAS */ -/* GL_POST_COLOR_MATRIX_GREEN_BIAS */ -/* GL_POST_COLOR_MATRIX_BLUE_BIAS */ -/* GL_POST_COLOR_MATRIX_ALPHA_BIAS */ - -/* PixelType */ -#define GL_BITMAP 0x1A00 -/* GL_BYTE */ -/* GL_UNSIGNED_BYTE */ -/* GL_SHORT */ -/* GL_UNSIGNED_SHORT */ -/* GL_INT */ -/* GL_UNSIGNED_INT */ -/* GL_FLOAT */ -/* GL_BGR */ -/* GL_BGRA */ -/* GL_UNSIGNED_BYTE_3_3_2 */ -/* GL_UNSIGNED_SHORT_4_4_4_4 */ -/* GL_UNSIGNED_SHORT_5_5_5_1 */ -/* GL_UNSIGNED_INT_8_8_8_8 */ -/* GL_UNSIGNED_INT_10_10_10_2 */ -/* GL_UNSIGNED_SHORT_5_6_5 */ -/* GL_UNSIGNED_BYTE_2_3_3_REV */ -/* GL_UNSIGNED_SHORT_5_6_5_REV */ -/* GL_UNSIGNED_SHORT_4_4_4_4_REV */ -/* GL_UNSIGNED_SHORT_1_5_5_5_REV */ -/* GL_UNSIGNED_INT_8_8_8_8_REV */ -/* GL_UNSIGNED_INT_2_10_10_10_REV */ - -/* PolygonMode */ -#define GL_POINT 0x1B00 -#define GL_LINE 0x1B01 -#define GL_FILL 0x1B02 - -/* ReadBufferMode */ -/* GL_FRONT_LEFT */ -/* GL_FRONT_RIGHT */ -/* GL_BACK_LEFT */ -/* GL_BACK_RIGHT */ -/* GL_FRONT */ -/* GL_BACK */ -/* GL_LEFT */ -/* GL_RIGHT */ -/* GL_AUX0 */ -/* GL_AUX1 */ -/* GL_AUX2 */ -/* GL_AUX3 */ - -/* RenderingMode */ -#define GL_RENDER 0x1C00 -#define GL_FEEDBACK 0x1C01 -#define GL_SELECT 0x1C02 - -/* SeparableTarget */ -/* GL_SEPARABLE_2D */ - -/* ShadingModel */ -#define GL_FLAT 0x1D00 -#define GL_SMOOTH 0x1D01 - -/* StencilFunction */ -/* GL_NEVER */ -/* GL_LESS */ -/* GL_EQUAL */ -/* GL_LEQUAL */ -/* GL_GREATER */ -/* GL_NOTEQUAL */ -/* GL_GEQUAL */ -/* GL_ALWAYS */ - -/* StencilOp */ -/* GL_ZERO */ -#define GL_KEEP 0x1E00 -#define GL_REPLACE 0x1E01 -#define GL_INCR 0x1E02 -#define GL_DECR 0x1E03 -/* GL_INVERT */ - -/* StringName */ -#define GL_VENDOR 0x1F00 -#define GL_RENDERER 0x1F01 -#define GL_VERSION 0x1F02 -#define GL_EXTENSIONS 0x1F03 - -/* TextureCoordName */ -#define GL_S 0x2000 -#define GL_T 0x2001 -#define GL_R 0x2002 -#define GL_Q 0x2003 - -/* TexCoordPointerType */ -/* GL_SHORT */ -/* GL_INT */ -/* GL_FLOAT */ -/* GL_DOUBLE */ - -/* TextureEnvMode */ -#define GL_MODULATE 0x2100 -#define GL_DECAL 0x2101 -/* GL_BLEND */ -/* GL_REPLACE */ - -/* TextureEnvParameter */ -#define GL_TEXTURE_ENV_MODE 0x2200 -#define GL_TEXTURE_ENV_COLOR 0x2201 - -/* TextureEnvTarget */ -#define GL_TEXTURE_ENV 0x2300 - -/* TextureGenMode */ -#define GL_EYE_LINEAR 0x2400 -#define GL_OBJECT_LINEAR 0x2401 -#define GL_SPHERE_MAP 0x2402 - -/* TextureGenParameter */ -#define GL_TEXTURE_GEN_MODE 0x2500 -#define GL_OBJECT_PLANE 0x2501 -#define GL_EYE_PLANE 0x2502 - -/* TextureMagFilter */ -#define GL_NEAREST 0x2600 -#define GL_LINEAR 0x2601 - -/* TextureMinFilter */ -/* GL_NEAREST */ -/* GL_LINEAR */ -#define GL_NEAREST_MIPMAP_NEAREST 0x2700 -#define GL_LINEAR_MIPMAP_NEAREST 0x2701 -#define GL_NEAREST_MIPMAP_LINEAR 0x2702 -#define GL_LINEAR_MIPMAP_LINEAR 0x2703 - -/* TextureParameterName */ -#define GL_TEXTURE_MAG_FILTER 0x2800 -#define GL_TEXTURE_MIN_FILTER 0x2801 -#define GL_TEXTURE_WRAP_S 0x2802 -#define GL_TEXTURE_WRAP_T 0x2803 -/* GL_TEXTURE_BORDER_COLOR */ -/* GL_TEXTURE_PRIORITY */ -/* GL_TEXTURE_WRAP_R */ - -/* TextureTarget */ -/* GL_TEXTURE_1D */ -/* GL_TEXTURE_2D */ -/* GL_PROXY_TEXTURE_1D */ -/* GL_PROXY_TEXTURE_2D */ -/* GL_TEXTURE_3D */ -/* GL_PROXY_TEXTURE_3D */ -/* GL_TEXTURE_MIN_LOD */ -/* GL_TEXTURE_MAX_LOD */ -/* GL_TEXTURE_BASE_LEVEL */ -/* GL_TEXTURE_MAX_LEVEL */ - -/* TextureUnit */ -/* GL_TEXTURE0_ARB */ -/* GL_TEXTURE1_ARB */ -/* GL_TEXTURE2_ARB */ -/* GL_TEXTURE3_ARB */ -/* GL_TEXTURE4_ARB */ -/* GL_TEXTURE5_ARB */ -/* GL_TEXTURE6_ARB */ -/* GL_TEXTURE7_ARB */ -/* GL_TEXTURE8_ARB */ -/* GL_TEXTURE9_ARB */ -/* GL_TEXTURE10_ARB */ -/* GL_TEXTURE11_ARB */ -/* GL_TEXTURE12_ARB */ -/* GL_TEXTURE13_ARB */ -/* GL_TEXTURE14_ARB */ -/* GL_TEXTURE15_ARB */ -/* GL_TEXTURE16_ARB */ -/* GL_TEXTURE17_ARB */ -/* GL_TEXTURE18_ARB */ -/* GL_TEXTURE19_ARB */ -/* GL_TEXTURE20_ARB */ -/* GL_TEXTURE21_ARB */ -/* GL_TEXTURE22_ARB */ -/* GL_TEXTURE23_ARB */ -/* GL_TEXTURE24_ARB */ -/* GL_TEXTURE25_ARB */ -/* GL_TEXTURE26_ARB */ -/* GL_TEXTURE27_ARB */ -/* GL_TEXTURE28_ARB */ -/* GL_TEXTURE29_ARB */ -/* GL_TEXTURE30_ARB */ -/* GL_TEXTURE31_ARB */ - -/* TextureWrapMode */ -#define GL_CLAMP 0x2900 -#define GL_REPEAT 0x2901 -/* GL_CLAMP_TO_EDGE */ - -/* VertexPointerType */ -/* GL_SHORT */ -/* GL_INT */ -/* GL_FLOAT */ -/* GL_DOUBLE */ - -/* ClientAttribMask */ -#define GL_CLIENT_PIXEL_STORE_BIT 0x00000001 -#define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002 -#define GL_CLIENT_ALL_ATTRIB_BITS 0xffffffff - -/* polygon_offset */ -#define GL_POLYGON_OFFSET_FACTOR 0x8038 -#define GL_POLYGON_OFFSET_UNITS 0x2A00 -#define GL_POLYGON_OFFSET_POINT 0x2A01 -#define GL_POLYGON_OFFSET_LINE 0x2A02 -#define GL_POLYGON_OFFSET_FILL 0x8037 - -/* texture */ -#define GL_ALPHA4 0x803B -#define GL_ALPHA8 0x803C -#define GL_ALPHA12 0x803D -#define GL_ALPHA16 0x803E -#define GL_LUMINANCE4 0x803F -#define GL_LUMINANCE8 0x8040 -#define GL_LUMINANCE12 0x8041 -#define GL_LUMINANCE16 0x8042 -#define GL_LUMINANCE4_ALPHA4 0x8043 -#define GL_LUMINANCE6_ALPHA2 0x8044 -#define GL_LUMINANCE8_ALPHA8 0x8045 -#define GL_LUMINANCE12_ALPHA4 0x8046 -#define GL_LUMINANCE12_ALPHA12 0x8047 -#define GL_LUMINANCE16_ALPHA16 0x8048 -#define GL_INTENSITY 0x8049 -#define GL_INTENSITY4 0x804A -#define GL_INTENSITY8 0x804B -#define GL_INTENSITY12 0x804C -#define GL_INTENSITY16 0x804D -#define GL_R3_G3_B2 0x2A10 -#define GL_RGB4 0x804F -#define GL_RGB5 0x8050 -#define GL_RGB8 0x8051 -#define GL_RGB10 0x8052 -#define GL_RGB12 0x8053 -#define GL_RGB16 0x8054 -#define GL_RGBA2 0x8055 -#define GL_RGBA4 0x8056 -#define GL_RGB5_A1 0x8057 -#define GL_RGBA8 0x8058 -#define GL_RGB10_A2 0x8059 -#define GL_RGBA12 0x805A -#define GL_RGBA16 0x805B -#define GL_TEXTURE_RED_SIZE 0x805C -#define GL_TEXTURE_GREEN_SIZE 0x805D -#define GL_TEXTURE_BLUE_SIZE 0x805E -#define GL_TEXTURE_ALPHA_SIZE 0x805F -#define GL_TEXTURE_LUMINANCE_SIZE 0x8060 -#define GL_TEXTURE_INTENSITY_SIZE 0x8061 -#define GL_PROXY_TEXTURE_1D 0x8063 -#define GL_PROXY_TEXTURE_2D 0x8064 - -/* texture_object */ -#define GL_TEXTURE_PRIORITY 0x8066 -#define GL_TEXTURE_RESIDENT 0x8067 -#define GL_TEXTURE_BINDING_1D 0x8068 -#define GL_TEXTURE_BINDING_2D 0x8069 -#define GL_TEXTURE_BINDING_3D 0x806A - -/* vertex_array */ -#define GL_VERTEX_ARRAY 0x8074 -#define GL_NORMAL_ARRAY 0x8075 -#define GL_COLOR_ARRAY 0x8076 -#define GL_INDEX_ARRAY 0x8077 -#define GL_TEXTURE_COORD_ARRAY 0x8078 -#define GL_EDGE_FLAG_ARRAY 0x8079 -#define GL_VERTEX_ARRAY_SIZE 0x807A -#define GL_VERTEX_ARRAY_TYPE 0x807B -#define GL_VERTEX_ARRAY_STRIDE 0x807C -#define GL_NORMAL_ARRAY_TYPE 0x807E -#define GL_NORMAL_ARRAY_STRIDE 0x807F -#define GL_COLOR_ARRAY_SIZE 0x8081 -#define GL_COLOR_ARRAY_TYPE 0x8082 -#define GL_COLOR_ARRAY_STRIDE 0x8083 -#define GL_INDEX_ARRAY_TYPE 0x8085 -#define GL_INDEX_ARRAY_STRIDE 0x8086 -#define GL_TEXTURE_COORD_ARRAY_SIZE 0x8088 -#define GL_TEXTURE_COORD_ARRAY_TYPE 0x8089 -#define GL_TEXTURE_COORD_ARRAY_STRIDE 0x808A -#define GL_EDGE_FLAG_ARRAY_STRIDE 0x808C -#define GL_VERTEX_ARRAY_POINTER 0x808E -#define GL_NORMAL_ARRAY_POINTER 0x808F -#define GL_COLOR_ARRAY_POINTER 0x8090 -#define GL_INDEX_ARRAY_POINTER 0x8091 -#define GL_TEXTURE_COORD_ARRAY_POINTER 0x8092 -#define GL_EDGE_FLAG_ARRAY_POINTER 0x8093 -#define GL_V2F 0x2A20 -#define GL_V3F 0x2A21 -#define GL_C4UB_V2F 0x2A22 -#define GL_C4UB_V3F 0x2A23 -#define GL_C3F_V3F 0x2A24 -#define GL_N3F_V3F 0x2A25 -#define GL_C4F_N3F_V3F 0x2A26 -#define GL_T2F_V3F 0x2A27 -#define GL_T4F_V4F 0x2A28 -#define GL_T2F_C4UB_V3F 0x2A29 -#define GL_T2F_C3F_V3F 0x2A2A -#define GL_T2F_N3F_V3F 0x2A2B -#define GL_T2F_C4F_N3F_V3F 0x2A2C -#define GL_T4F_C4F_N3F_V4F 0x2A2D - -/* bgra */ -#define GL_BGR 0x80E0 -#define GL_BGRA 0x80E1 - -/* blend_color */ -#define GL_CONSTANT_COLOR 0x8001 -#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 -#define GL_CONSTANT_ALPHA 0x8003 -#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 -#define GL_BLEND_COLOR 0x8005 - -/* blend_minmax */ -#define GL_FUNC_ADD 0x8006 -#define GL_MIN 0x8007 -#define GL_MAX 0x8008 -#define GL_BLEND_EQUATION 0x8009 - -/* blend_subtract */ -#define GL_FUNC_SUBTRACT 0x800A -#define GL_FUNC_REVERSE_SUBTRACT 0x800B - -/* color_matrix */ -#define GL_COLOR_MATRIX 0x80B1 -#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2 -#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3 -#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4 -#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5 -#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6 -#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7 -#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8 -#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9 -#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA -#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB - -/* color_table */ -#define GL_COLOR_TABLE 0x80D0 -#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1 -#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2 -#define GL_PROXY_COLOR_TABLE 0x80D3 -#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4 -#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5 -#define GL_COLOR_TABLE_SCALE 0x80D6 -#define GL_COLOR_TABLE_BIAS 0x80D7 -#define GL_COLOR_TABLE_FORMAT 0x80D8 -#define GL_COLOR_TABLE_WIDTH 0x80D9 -#define GL_COLOR_TABLE_RED_SIZE 0x80DA -#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB -#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC -#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD -#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE -#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF - -/* convolution */ -#define GL_CONVOLUTION_1D 0x8010 -#define GL_CONVOLUTION_2D 0x8011 -#define GL_SEPARABLE_2D 0x8012 -#define GL_CONVOLUTION_BORDER_MODE 0x8013 -#define GL_CONVOLUTION_FILTER_SCALE 0x8014 -#define GL_CONVOLUTION_FILTER_BIAS 0x8015 -#define GL_REDUCE 0x8016 -#define GL_CONVOLUTION_FORMAT 0x8017 -#define GL_CONVOLUTION_WIDTH 0x8018 -#define GL_CONVOLUTION_HEIGHT 0x8019 -#define GL_MAX_CONVOLUTION_WIDTH 0x801A -#define GL_MAX_CONVOLUTION_HEIGHT 0x801B -#define GL_POST_CONVOLUTION_RED_SCALE 0x801C -#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D -#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E -#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F -#define GL_POST_CONVOLUTION_RED_BIAS 0x8020 -#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021 -#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022 -#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023 -#define GL_CONSTANT_BORDER 0x8151 -#define GL_REPLICATE_BORDER 0x8153 -#define GL_CONVOLUTION_BORDER_COLOR 0x8154 - -/* draw_range_elements */ -#define GL_MAX_ELEMENTS_VERTICES 0x80E8 -#define GL_MAX_ELEMENTS_INDICES 0x80E9 - -/* histogram */ -#define GL_HISTOGRAM 0x8024 -#define GL_PROXY_HISTOGRAM 0x8025 -#define GL_HISTOGRAM_WIDTH 0x8026 -#define GL_HISTOGRAM_FORMAT 0x8027 -#define GL_HISTOGRAM_RED_SIZE 0x8028 -#define GL_HISTOGRAM_GREEN_SIZE 0x8029 -#define GL_HISTOGRAM_BLUE_SIZE 0x802A -#define GL_HISTOGRAM_ALPHA_SIZE 0x802B -#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C -#define GL_HISTOGRAM_SINK 0x802D -#define GL_MINMAX 0x802E -#define GL_MINMAX_FORMAT 0x802F -#define GL_MINMAX_SINK 0x8030 -#define GL_TABLE_TOO_LARGE 0x8031 - -/* packed_pixels */ -#define GL_UNSIGNED_BYTE_3_3_2 0x8032 -#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 -#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 -#define GL_UNSIGNED_INT_8_8_8_8 0x8035 -#define GL_UNSIGNED_INT_10_10_10_2 0x8036 -#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 -#define GL_UNSIGNED_SHORT_5_6_5 0x8363 -#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 -#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 -#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 -#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 -#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 - -/* rescale_normal */ -#define GL_RESCALE_NORMAL 0x803A - -/* separate_specular_color */ -#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8 -#define GL_SINGLE_COLOR 0x81F9 -#define GL_SEPARATE_SPECULAR_COLOR 0x81FA - -/* texture3D */ -#define GL_PACK_SKIP_IMAGES 0x806B -#define GL_PACK_IMAGE_HEIGHT 0x806C -#define GL_UNPACK_SKIP_IMAGES 0x806D -#define GL_UNPACK_IMAGE_HEIGHT 0x806E -#define GL_TEXTURE_3D 0x806F -#define GL_PROXY_TEXTURE_3D 0x8070 -#define GL_TEXTURE_DEPTH 0x8071 -#define GL_TEXTURE_WRAP_R 0x8072 -#define GL_MAX_3D_TEXTURE_SIZE 0x8073 - -/* texture_edge_clamp */ -#define GL_CLAMP_TO_EDGE 0x812F - -/* texture_lod */ -#define GL_TEXTURE_MIN_LOD 0x813A -#define GL_TEXTURE_MAX_LOD 0x813B -#define GL_TEXTURE_BASE_LEVEL 0x813C -#define GL_TEXTURE_MAX_LEVEL 0x813D - -/* multitexture */ -#define GL_TEXTURE0_ARB 0x84C0 -#define GL_TEXTURE1_ARB 0x84C1 -#define GL_TEXTURE2_ARB 0x84C2 -#define GL_TEXTURE3_ARB 0x84C3 -#define GL_TEXTURE4_ARB 0x84C4 -#define GL_TEXTURE5_ARB 0x84C5 -#define GL_TEXTURE6_ARB 0x84C6 -#define GL_TEXTURE7_ARB 0x84C7 -#define GL_TEXTURE8_ARB 0x84C8 -#define GL_TEXTURE9_ARB 0x84C9 -#define GL_TEXTURE10_ARB 0x84CA -#define GL_TEXTURE11_ARB 0x84CB -#define GL_TEXTURE12_ARB 0x84CC -#define GL_TEXTURE13_ARB 0x84CD -#define GL_TEXTURE14_ARB 0x84CE -#define GL_TEXTURE15_ARB 0x84CF -#define GL_TEXTURE16_ARB 0x84D0 -#define GL_TEXTURE17_ARB 0x84D1 -#define GL_TEXTURE18_ARB 0x84D2 -#define GL_TEXTURE19_ARB 0x84D3 -#define GL_TEXTURE20_ARB 0x84D4 -#define GL_TEXTURE21_ARB 0x84D5 -#define GL_TEXTURE22_ARB 0x84D6 -#define GL_TEXTURE23_ARB 0x84D7 -#define GL_TEXTURE24_ARB 0x84D8 -#define GL_TEXTURE25_ARB 0x84D9 -#define GL_TEXTURE26_ARB 0x84DA -#define GL_TEXTURE27_ARB 0x84DB -#define GL_TEXTURE28_ARB 0x84DC -#define GL_TEXTURE29_ARB 0x84DD -#define GL_TEXTURE30_ARB 0x84DE -#define GL_TEXTURE31_ARB 0x84DF -#define GL_ACTIVE_TEXTURE_ARB 0x84E0 -#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1 -#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2 - -/* Extensions */ -#define GL_EXT_abgr 1 -#define GL_EXT_blend_color 1 -#define GL_EXT_blend_minmax 1 -#define GL_EXT_blend_subtract 1 - -/* EXT_abgr */ -#define GL_ABGR_EXT 0x8000 - -/* EXT_blend_color */ -#define GL_CONSTANT_COLOR_EXT 0x8001 -#define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002 -#define GL_CONSTANT_ALPHA_EXT 0x8003 -#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004 -#define GL_BLEND_COLOR_EXT 0x8005 - -/* EXT_blend_minmax */ -#define GL_FUNC_ADD_EXT 0x8006 -#define GL_MIN_EXT 0x8007 -#define GL_MAX_EXT 0x8008 -#define GL_BLEND_EQUATION_EXT 0x8009 - -/* EXT_blend_subtract */ -#define GL_FUNC_SUBTRACT_EXT 0x800A -#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B - -/* For compatibility with OpenGL v1.0 */ -#define GL_LOGIC_OP GL_INDEX_LOGIC_OP -#define GL_TEXTURE_COMPONENTS GL_TEXTURE_INTERNAL_FORMAT - - /* GL_EXT_paletted_texture */ -#define GL_TABLE_TOO_LARGE_EXT 0x8031 -#define GL_COLOR_TABLE_FORMAT_EXT 0x80D8 -#define GL_COLOR_TABLE_WIDTH_EXT 0x80D9 -#define GL_COLOR_TABLE_RED_SIZE_EXT 0x80DA -#define GL_COLOR_TABLE_GREEN_SIZE_EXT 0x80DB -#define GL_COLOR_TABLE_BLUE_SIZE_EXT 0x80DC -#define GL_COLOR_TABLE_ALPHA_SIZE_EXT 0x80DD -#define GL_COLOR_TABLE_LUMINANCE_SIZE_EXT 0x80DE -#define GL_COLOR_TABLE_INTENSITY_SIZE_EXT 0x80DF -#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED -#define GL_COLOR_INDEX1_EXT 0x80E2 -#define GL_COLOR_INDEX2_EXT 0x80E3 -#define GL_COLOR_INDEX4_EXT 0x80E4 -#define GL_COLOR_INDEX8_EXT 0x80E5 -#define GL_COLOR_INDEX12_EXT 0x80E6 -#define GL_COLOR_INDEX16_EXT 0x80E7 - - -/*************************************************************/ - -extern void glAccum (GLenum op, GLfloat value); -extern void glAlphaFunc (GLenum func, GLclampf ref); -extern GLboolean glAreTexturesResident (GLsizei n, const GLuint *textures, GLboolean *residences); -extern void glArrayElement (GLint i); -extern void glArrayElementEXT (GLint i); -extern void glBegin (GLenum mode); -extern void glBindTexture (GLenum target, GLuint texture); -extern void glBitmap (GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap); -extern void glBlendColorEXT (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); -extern void glBlendEquationEXT (GLenum mode); -extern void glBlendFunc (GLenum sfactor, GLenum dfactor); -extern void glCallList (GLuint list); -extern void glCallLists (GLsizei n, GLenum type, const GLvoid *lists); -extern void glClear (GLbitfield mask); -extern void glClearAccum (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -extern void glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); -extern void glClearDepth (GLclampd depth); -extern void glClearIndex (GLfloat c); -extern void glClearStencil (GLint s); -extern void glClipPlane (GLenum plane, const GLdouble *equation); -extern void glColor3b (GLbyte red, GLbyte green, GLbyte blue); -extern void glColor3bv (const GLbyte *v); -extern void glColor3d (GLdouble red, GLdouble green, GLdouble blue); -extern void glColor3dv (const GLdouble *v); -extern void glColor3f (GLfloat red, GLfloat green, GLfloat blue); -extern void glColor3fv (const GLfloat *v); -extern void glColor3i (GLint red, GLint green, GLint blue); -extern void glColor3iv (const GLint *v); -extern void glColor3s (GLshort red, GLshort green, GLshort blue); -extern void glColor3sv (const GLshort *v); -extern void glColor3ub (GLubyte red, GLubyte green, GLubyte blue); -extern void glColor3ubv (const GLubyte *v); -extern void glColor3ui (GLuint red, GLuint green, GLuint blue); -extern void glColor3uiv (const GLuint *v); -extern void glColor3us (GLushort red, GLushort green, GLushort blue); -extern void glColor3usv (const GLushort *v); -extern void glColor4b (GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); -extern void glColor4bv (const GLbyte *v); -extern void glColor4d (GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); -extern void glColor4dv (const GLdouble *v); -extern void glColor4f (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -extern void glColor4fv (const GLfloat *v); -extern void glColor4i (GLint red, GLint green, GLint blue, GLint alpha); -extern void glColor4iv (const GLint *v); -extern void glColor4s (GLshort red, GLshort green, GLshort blue, GLshort alpha); -extern void glColor4sv (const GLshort *v); -extern void glColor4ub (GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); -extern void glColor4ubv (const GLubyte *v); -extern void glColor4ui (GLuint red, GLuint green, GLuint blue, GLuint alpha); -extern void glColor4uiv (const GLuint *v); -extern void glColor4us (GLushort red, GLushort green, GLushort blue, GLushort alpha); -extern void glColor4usv (const GLushort *v); -extern void glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); -extern void glColorMaterial (GLenum face, GLenum mode); -extern void glColorPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -extern void glColorPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); -extern void glCopyPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); -extern void glCopyTexImage1D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); -extern void glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -extern void glCopyTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); -extern void glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -extern void glCopyTexSubImage3D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height ); -extern void glCullFace (GLenum mode); -extern void glDeleteLists (GLuint list, GLsizei range); -extern void glDeleteTextures (GLsizei n, const GLuint *textures); -extern void glDepthFunc (GLenum func); -extern void glDepthMask (GLboolean flag); -extern void glDepthRange (GLclampd zNear, GLclampd zFar); -extern void glDisable (GLenum cap); -extern void glDisableClientState (GLenum array); -extern void glDrawArrays (GLenum mode, GLint first, GLsizei count); -extern void glDrawBuffer (GLenum mode); -extern void glDrawElements (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); -extern void glDrawPixels (GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); -extern void glDrawRangeElements (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); -extern void glEdgeFlag (GLboolean flag); -extern void glEdgeFlagPointer (GLsizei stride, const GLvoid *pointer); -extern void glEdgeFlagPointerEXT (GLsizei stride, GLsizei count, const GLboolean *pointer); -extern void glEdgeFlagv (const GLboolean *flag); -extern void glEnable (GLenum cap); -extern void glEnableClientState (GLenum array); -extern void glEnd (void); -extern void glEndList (void); -extern void glEvalCoord1d (GLdouble u); -extern void glEvalCoord1dv (const GLdouble *u); -extern void glEvalCoord1f (GLfloat u); -extern void glEvalCoord1fv (const GLfloat *u); -extern void glEvalCoord2d (GLdouble u, GLdouble v); -extern void glEvalCoord2dv (const GLdouble *u); -extern void glEvalCoord2f (GLfloat u, GLfloat v); -extern void glEvalCoord2fv (const GLfloat *u); -extern void glEvalMesh1 (GLenum mode, GLint i1, GLint i2); -extern void glEvalMesh2 (GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); -extern void glEvalPoint1 (GLint i); -extern void glEvalPoint2 (GLint i, GLint j); -extern void glFeedbackBuffer (GLsizei size, GLenum type, GLfloat *buffer); -extern void glFinish (void); -extern void glFlush (void); -extern void glFogf (GLenum pname, GLfloat param); -extern void glFogfv (GLenum pname, const GLfloat *params); -extern void glFogi (GLenum pname, GLint param); -extern void glFogiv (GLenum pname, const GLint *params); -extern void glFrontFace (GLenum mode); -extern void glFrustum (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); -extern GLuint glGenLists (GLsizei range); -extern void glGenTextures (GLsizei n, GLuint *textures); -extern void glGetBooleanv (GLenum pname, GLboolean *params); -extern void glGetClipPlane (GLenum plane, GLdouble *equation); -extern void glGetDoublev (GLenum pname, GLdouble *params); -extern GLenum glGetError (void); -extern void glGetFloatv (GLenum pname, GLfloat *params); -extern void glGetIntegerv (GLenum pname, GLint *params); -extern void glGetLightfv (GLenum light, GLenum pname, GLfloat *params); -extern void glGetLightiv (GLenum light, GLenum pname, GLint *params); -extern void glGetMapdv (GLenum target, GLenum query, GLdouble *v); -extern void glGetMapfv (GLenum target, GLenum query, GLfloat *v); -extern void glGetMapiv (GLenum target, GLenum query, GLint *v); -extern void glGetMaterialfv (GLenum face, GLenum pname, GLfloat *params); -extern void glGetMaterialiv (GLenum face, GLenum pname, GLint *params); -extern void glGetPixelMapfv (GLenum map, GLfloat *values); -extern void glGetPixelMapuiv (GLenum map, GLuint *values); -extern void glGetPixelMapusv (GLenum map, GLushort *values); -extern void glGetPointerv (GLenum pname, GLvoid* *params); -extern void glGetPointervEXT (GLenum pname, GLvoid* *params); -extern void glGetPolygonStipple (GLubyte *mask); -extern const GLubyte * glGetString (GLenum name); -extern void glGetTexEnvfv (GLenum target, GLenum pname, GLfloat *params); -extern void glGetTexEnviv (GLenum target, GLenum pname, GLint *params); -extern void glGetTexGendv (GLenum coord, GLenum pname, GLdouble *params); -extern void glGetTexGenfv (GLenum coord, GLenum pname, GLfloat *params); -extern void glGetTexGeniv (GLenum coord, GLenum pname, GLint *params); -extern void glGetTexImage (GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); -extern void glGetTexLevelParameterfv (GLenum target, GLint level, GLenum pname, GLfloat *params); -extern void glGetTexLevelParameteriv (GLenum target, GLint level, GLenum pname, GLint *params); -extern void glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params); -extern void glGetTexParameteriv (GLenum target, GLenum pname, GLint *params); -extern void glHint (GLenum target, GLenum mode); -extern void glIndexMask (GLuint mask); -extern void glIndexPointer (GLenum type, GLsizei stride, const GLvoid *pointer); -extern void glIndexPointerEXT (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); -extern void glIndexd (GLdouble c); -extern void glIndexdv (const GLdouble *c); -extern void glIndexf (GLfloat c); -extern void glIndexfv (const GLfloat *c); -extern void glIndexi (GLint c); -extern void glIndexiv (const GLint *c); -extern void glIndexs (GLshort c); -extern void glIndexsv (const GLshort *c); -extern void glIndexub (GLubyte c); -extern void glIndexubv (const GLubyte *c); -extern void glInitNames (void); -extern void glInterleavedArrays (GLenum format, GLsizei stride, const GLvoid *pointer); -extern GLboolean glIsEnabled (GLenum cap); -extern GLboolean glIsList (GLuint list); -extern GLboolean glIsTexture (GLuint texture); -extern void glLightModelf (GLenum pname, GLfloat param); -extern void glLightModelfv (GLenum pname, const GLfloat *params); -extern void glLightModeli (GLenum pname, GLint param); -extern void glLightModeliv (GLenum pname, const GLint *params); -extern void glLightf (GLenum light, GLenum pname, GLfloat param); -extern void glLightfv (GLenum light, GLenum pname, const GLfloat *params); -extern void glLighti (GLenum light, GLenum pname, GLint param); -extern void glLightiv (GLenum light, GLenum pname, const GLint *params); -extern void glLineStipple (GLint factor, GLushort pattern); -extern void glLineWidth (GLfloat width); -extern void glListBase (GLuint base); -extern void glLoadIdentity (void); -extern void glLoadMatrixd (const GLdouble *m); -extern void glLoadMatrixf (const GLfloat *m); -extern void glLoadName (GLuint name); -extern void glLockArraysEXT (GLint first, GLsizei count); -extern void glLogicOp (GLenum opcode); -extern void glMap1d (GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); -extern void glMap1f (GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); -extern void glMap2d (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); -extern void glMap2f (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); -extern void glMapGrid1d (GLint un, GLdouble u1, GLdouble u2); -extern void glMapGrid1f (GLint un, GLfloat u1, GLfloat u2); -extern void glMapGrid2d (GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); -extern void glMapGrid2f (GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); -extern void glMaterialf (GLenum face, GLenum pname, GLfloat param); -extern void glMaterialfv (GLenum face, GLenum pname, const GLfloat *params); -extern void glMateriali (GLenum face, GLenum pname, GLint param); -extern void glMaterialiv (GLenum face, GLenum pname, const GLint *params); -extern void glMatrixMode (GLenum mode); -extern void glMultMatrixd (const GLdouble *m); -extern void glMultMatrixf (const GLfloat *m); -extern void glNewList (GLuint list, GLenum mode); -extern void glNormal3b (GLbyte nx, GLbyte ny, GLbyte nz); -extern void glNormal3bv (const GLbyte *v); -extern void glNormal3d (GLdouble nx, GLdouble ny, GLdouble nz); -extern void glNormal3dv (const GLdouble *v); -extern void glNormal3f (GLfloat nx, GLfloat ny, GLfloat nz); -extern void glNormal3fv (const GLfloat *v); -extern void glNormal3i (GLint nx, GLint ny, GLint nz); -extern void glNormal3iv (const GLint *v); -extern void glNormal3s (GLshort nx, GLshort ny, GLshort nz); -extern void glNormal3sv (const GLshort *v); -extern void glNormalPointer (GLenum type, GLsizei stride, const GLvoid *pointer); -extern void glNormalPointerEXT (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); -extern void glOrtho (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); -extern void glPassThrough (GLfloat token); -extern void glPixelMapfv (GLenum map, GLint mapsize, const GLfloat *values); -extern void glPixelMapuiv (GLenum map, GLint mapsize, const GLuint *values); -extern void glPixelMapusv (GLenum map, GLint mapsize, const GLushort *values); -extern void glPixelStoref (GLenum pname, GLfloat param); -extern void glPixelStorei (GLenum pname, GLint param); -extern void glPixelTransferf (GLenum pname, GLfloat param); -extern void glPixelTransferi (GLenum pname, GLint param); -extern void glPixelZoom (GLfloat xfactor, GLfloat yfactor); -extern void glPointSize (GLfloat size); -extern void glPolygonMode (GLenum face, GLenum mode); -extern void glPolygonOffset (GLfloat factor, GLfloat units); -extern void glPolygonStipple (const GLubyte *mask); -extern void glPopAttrib (void); -extern void glPopClientAttrib (void); -extern void glPopMatrix (void); -extern void glPopName (void); -extern void glPrioritizeTextures (GLsizei n, const GLuint *textures, const GLclampf *priorities); -extern void glPushAttrib (GLbitfield mask); -extern void glPushClientAttrib (GLbitfield mask); -extern void glPushMatrix (void); -extern void glPushName (GLuint name); -extern void glRasterPos2d (GLdouble x, GLdouble y); -extern void glRasterPos2dv (const GLdouble *v); -extern void glRasterPos2f (GLfloat x, GLfloat y); -extern void glRasterPos2fv (const GLfloat *v); -extern void glRasterPos2i (GLint x, GLint y); -extern void glRasterPos2iv (const GLint *v); -extern void glRasterPos2s (GLshort x, GLshort y); -extern void glRasterPos2sv (const GLshort *v); -extern void glRasterPos3d (GLdouble x, GLdouble y, GLdouble z); -extern void glRasterPos3dv (const GLdouble *v); -extern void glRasterPos3f (GLfloat x, GLfloat y, GLfloat z); -extern void glRasterPos3fv (const GLfloat *v); -extern void glRasterPos3i (GLint x, GLint y, GLint z); -extern void glRasterPos3iv (const GLint *v); -extern void glRasterPos3s (GLshort x, GLshort y, GLshort z); -extern void glRasterPos3sv (const GLshort *v); -extern void glRasterPos4d (GLdouble x, GLdouble y, GLdouble z, GLdouble w); -extern void glRasterPos4dv (const GLdouble *v); -extern void glRasterPos4f (GLfloat x, GLfloat y, GLfloat z, GLfloat w); -extern void glRasterPos4fv (const GLfloat *v); -extern void glRasterPos4i (GLint x, GLint y, GLint z, GLint w); -extern void glRasterPos4iv (const GLint *v); -extern void glRasterPos4s (GLshort x, GLshort y, GLshort z, GLshort w); -extern void glRasterPos4sv (const GLshort *v); -extern void glReadBuffer (GLenum mode); -extern void glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); -extern void glRectd (GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); -extern void glRectdv (const GLdouble *v1, const GLdouble *v2); -extern void glRectf (GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); -extern void glRectfv (const GLfloat *v1, const GLfloat *v2); -extern void glRecti (GLint x1, GLint y1, GLint x2, GLint y2); -extern void glRectiv (const GLint *v1, const GLint *v2); -extern void glRects (GLshort x1, GLshort y1, GLshort x2, GLshort y2); -extern void glRectsv (const GLshort *v1, const GLshort *v2); -extern GLint glRenderMode (GLenum mode); -extern void glRotated (GLdouble angle, GLdouble x, GLdouble y, GLdouble z); -extern void glRotatef (GLfloat angle, GLfloat x, GLfloat y, GLfloat z); -extern void glScaled (GLdouble x, GLdouble y, GLdouble z); -extern void glScalef (GLfloat x, GLfloat y, GLfloat z); -extern void glScissor (GLint x, GLint y, GLsizei width, GLsizei height); -extern void glSelectBuffer (GLsizei size, GLuint *buffer); -extern void glShadeModel (GLenum mode); -extern void glStencilFunc (GLenum func, GLint ref, GLuint mask); -extern void glStencilMask (GLuint mask); -extern void glStencilOp (GLenum fail, GLenum zfail, GLenum zpass); -extern void glTexCoord1d (GLdouble s); -extern void glTexCoord1dv (const GLdouble *v); -extern void glTexCoord1f (GLfloat s); -extern void glTexCoord1fv (const GLfloat *v); -extern void glTexCoord1i (GLint s); -extern void glTexCoord1iv (const GLint *v); -extern void glTexCoord1s (GLshort s); -extern void glTexCoord1sv (const GLshort *v); -extern void glTexCoord2d (GLdouble s, GLdouble t); -extern void glTexCoord2dv (const GLdouble *v); -extern void glTexCoord2f (GLfloat s, GLfloat t); -extern void glTexCoord2fv (const GLfloat *v); -extern void glTexCoord2i (GLint s, GLint t); -extern void glTexCoord2iv (const GLint *v); -extern void glTexCoord2s (GLshort s, GLshort t); -extern void glTexCoord2sv (const GLshort *v); -extern void glTexCoord3d (GLdouble s, GLdouble t, GLdouble r); -extern void glTexCoord3dv (const GLdouble *v); -extern void glTexCoord3f (GLfloat s, GLfloat t, GLfloat r); -extern void glTexCoord3fv (const GLfloat *v); -extern void glTexCoord3i (GLint s, GLint t, GLint r); -extern void glTexCoord3iv (const GLint *v); -extern void glTexCoord3s (GLshort s, GLshort t, GLshort r); -extern void glTexCoord3sv (const GLshort *v); -extern void glTexCoord4d (GLdouble s, GLdouble t, GLdouble r, GLdouble q); -extern void glTexCoord4dv (const GLdouble *v); -extern void glTexCoord4f (GLfloat s, GLfloat t, GLfloat r, GLfloat q); -extern void glTexCoord4fv (const GLfloat *v); -extern void glTexCoord4i (GLint s, GLint t, GLint r, GLint q); -extern void glTexCoord4iv (const GLint *v); -extern void glTexCoord4s (GLshort s, GLshort t, GLshort r, GLshort q); -extern void glTexCoord4sv (const GLshort *v); -extern void glTexCoordPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -extern void glTexCoordPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); -extern void glTexEnvf (GLenum target, GLenum pname, GLfloat param); -extern void glTexEnvfv (GLenum target, GLenum pname, const GLfloat *params); -extern void glTexEnvi (GLenum target, GLenum pname, GLint param); -extern void glTexEnviv (GLenum target, GLenum pname, const GLint *params); -extern void glTexGend (GLenum coord, GLenum pname, GLdouble param); -extern void glTexGendv (GLenum coord, GLenum pname, const GLdouble *params); -extern void glTexGenf (GLenum coord, GLenum pname, GLfloat param); -extern void glTexGenfv (GLenum coord, GLenum pname, const GLfloat *params); -extern void glTexGeni (GLenum coord, GLenum pname, GLint param); -extern void glTexGeniv (GLenum coord, GLenum pname, const GLint *params); -extern void glTexImage1D (GLenum target, GLint level, GLint components, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -extern void glTexImage2D (GLenum target, GLint level, GLint components, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -extern void glTexImage3D (GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -extern void glTexParameterf (GLenum target, GLenum pname, GLfloat param); -extern void glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params); -extern void glTexParameteri (GLenum target, GLenum pname, GLint param); -extern void glTexParameteriv (GLenum target, GLenum pname, const GLint *params); -extern void glTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); -extern void glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); -extern void glTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); -extern void glTranslated (GLdouble x, GLdouble y, GLdouble z); -extern void glTranslatef (GLfloat x, GLfloat y, GLfloat z); -extern void glUnlockArraysEXT (void); -extern void glVertex2d (GLdouble x, GLdouble y); -extern void glVertex2dv (const GLdouble *v); -extern void glVertex2f (GLfloat x, GLfloat y); -extern void glVertex2fv (const GLfloat *v); -extern void glVertex2i (GLint x, GLint y); -extern void glVertex2iv (const GLint *v); -extern void glVertex2s (GLshort x, GLshort y); -extern void glVertex2sv (const GLshort *v); -extern void glVertex3d (GLdouble x, GLdouble y, GLdouble z); -extern void glVertex3dv (const GLdouble *v); -extern void glVertex3f (GLfloat x, GLfloat y, GLfloat z); -extern void glVertex3fv (const GLfloat *v); -extern void glVertex3i (GLint x, GLint y, GLint z); -extern void glVertex3iv (const GLint *v); -extern void glVertex3s (GLshort x, GLshort y, GLshort z); -extern void glVertex3sv (const GLshort *v); -extern void glVertex4d (GLdouble x, GLdouble y, GLdouble z, GLdouble w); -extern void glVertex4dv (const GLdouble *v); -extern void glVertex4f (GLfloat x, GLfloat y, GLfloat z, GLfloat w); -extern void glVertex4fv (const GLfloat *v); -extern void glVertex4i (GLint x, GLint y, GLint z, GLint w); -extern void glVertex4iv (const GLint *v); -extern void glVertex4s (GLshort x, GLshort y, GLshort z, GLshort w); -extern void glVertex4sv (const GLshort *v); -extern void glVertexPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -extern void glVertexPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); -extern void glViewport (GLint x, GLint y, GLsizei width, GLsizei height); - -#ifdef __cplusplus -} -#endif - -#endif /* __gl_h_ */ Index: xc/include/GL/glx.h diff -u xc/include/GL/glx.h:1.4 xc/include/GL/glx.h:1.5 --- xc/include/GL/glx.h:1.4 Wed Mar 8 16:33:09 2000 +++ xc/include/GL/glx.h Wed Mar 8 16:33:09 2000 @@ -1,7 +1,7 @@ #ifndef __GLX_glx_h__ #define __GLX_glx_h__ -/* $XFree86: xc/include/GL/glx.h,v 1.4 2000/02/15 07:13:24 martin Exp $ */ +/* $XFree86: xc/include/GL/glx.h,v 1.5 2000/03/02 16:07:29 martin Exp $ */ /* ** The contents of this file are subject to the GLX Public License Version 1.0 ** (the "License"). You may not use this file except in compliance with the @@ -39,6 +39,13 @@ typedef XID GLXContextID; typedef XID GLXPixmap; typedef XID GLXDrawable; +/* GLX 1.3 */ +typedef XID GLXFBConfigID; +typedef XID GLXPfuffer; +typedef XID GLXWindow; +typedef XID GLXPbuffer; +typedef XID GLXFBConfig; + /* ** GLXContext is a pointer to opaque data. @@ -69,6 +76,25 @@ extern const char * glXQueryServerString (Display *dpy, int screen, int name ); extern const char * glXQueryExtensionsString (Display *dpy, int screen ); +/* GLX 1.3 */ +extern GLXFBConfig glXChooseFBConfig (Display *dpy, int screen, const int *attribList, int *nitems); +extern int glXGetFBConfigAttrib (Display *dpy, GLXFBConfig config, int attribute, int *value); +extern XVisualInfo * glXGetVisualFromFBConfig (Display *dpy, GLXFBConfig config); +extern GLXWindow glXCreateWindow (Display *dpy, GLXFBConfig config, Window win, const int *attribList); +extern void glXDestroyWindow (Display *dpy, GLXWindow window); +extern GLXPixmap glXCreatePixmap (Display *dpy, GLXFBConfig config,Pixmap pixmap, const int *attribList); +extern void glXDestroyPixmap (Display *dpy, GLXPixmap pixmap); +extern GLXPbuffer glXCreatePbuffer (Display *dpy, GLXFBConfig config, const int *attribList); +extern void glXDestroyPbuffer (Display *dpy, GLXPbuffer pbuf); +extern void glXQueryDrawable (Display *dpy, GLXDrawable draw, int attribute, unsigned int *value); +extern GLXContext glXCreateNewContext (Display *dpy, GLXFBConfig config, int renderType, GLXContext shareList, Bool direct); +extern Bool glXMakeContextCurrent (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx); +extern GLXDrawable glXGetCurrentReadDrawable (void); +extern int glXQueryContext (Display *dpy, GLXContext ctx, int attribute, int *value); +extern void glXSelectEvent (Display *dpy, GLXDrawable drawable, unsigned long mask); +extern void glXGetSelectedEvent (Display *dpy, GLXDrawable drawable, unsigned long *mask); + +/* Extensions */ extern Display * glXGetCurrentDisplay (void); extern GLXContextID glXGetContextIDEXT (const GLXContext ctx); extern GLXDrawable glXGetCurrentDrawableEXT (void); Index: xc/include/extensions/Imakefile diff -u xc/include/extensions/Imakefile:3.31 xc/include/extensions/Imakefile:3.33 --- xc/include/extensions/Imakefile:3.31 Wed Mar 8 16:33:10 2000 +++ xc/include/extensions/Imakefile Wed Mar 8 16:33:10 2000 @@ -1,5 +1,5 @@ XCOMM $TOG: Imakefile /main/50 1997/11/24 16:47:55 kaleb $ -XCOMM $XFree86: xc/include/extensions/Imakefile,v 3.31 2000/02/13 06:15:21 dawes Exp $ +XCOMM $XFree86: xc/include/extensions/Imakefile,v 3.33 2000/02/29 03:09:00 dawes Exp $ #if BuildScreenSaverLibrary SCREENSAVERHEADERS = saver.h saverproto.h scrnsaver.h @@ -29,10 +29,14 @@ #if BuildFontCache FONTCACHEHEADERS = fontcache.h fontcacheP.h fontcachstr.h #endif +#if BuildXinerama +XINERAMAHEADERS = panoramiXext.h panoramiXproto.h Xinerama.h +#endif EXTRAHEADERS = $(SCREENSAVERHEADERS) $(XF86MISCHEADERS) $(XF86BIGFONTHEADERS) \ - $(XF86VIDMODEHEADERS) $(XF86DGAHEADERS) \ - $(LBXHEADERS) $(XVHEADERS) $(FONTCACHEHEADERS) + $(XF86VIDMODEHEADERS) $(XF86DGAHEADERS) $(XINERAMAHEADERS) \ + $(LBXHEADERS) $(XVHEADERS) $(XF86RUSHHEADERS) \ + $(FONTCACHEHEADERS) @@ -50,7 +54,6 @@ security.h securstr.h \ Print.h Printstr.h \ Xcup.h Xcupstr.h \ - panoramiXext.h panoramiXproto.h \ dpms.h dpmsstr.h \ XEVI.h XEVIstr.h Index: xc/include/extensions/Xinerama.h diff -u /dev/null xc/include/extensions/Xinerama.h:3.2 --- /dev/null Wed Mar 8 16:33:10 2000 +++ xc/include/extensions/Xinerama.h Wed Mar 8 16:33:10 2000 @@ -0,0 +1,44 @@ +/* $XFree86: xc/include/extensions/Xinerama.h,v 3.2 2000/03/01 01:04:20 dawes Exp $ */ + +#ifndef _Xinerama_h +#define _Xinerama_h + +typedef struct { + int screen_number; + short x_org; + short y_org; + short width; + short height; +} XineramaScreenInfo; + +Bool XineramaQueryExtension ( + Display *dpy, + int *event_base, + int *error_base +); + +Status XineramaQueryVersion( + Display *dpy, + int *major, + int *minor +); + +Bool XineramaIsActive(Display *dpy); + + +/* + Returns the number of heads and a pointer to an array of + structures describing the position and size of the individual + heads. Returns NULL and number = 0 if Xinerama is not active. + + Returned array should be freed with XFree(). +*/ + +XineramaScreenInfo * +XineramaQueryScreens( + Display *dpy, + int *number +); + +#endif /* _Xinerama_h */ + Index: xc/include/extensions/fontcache.h diff -u xc/include/extensions/fontcache.h:1.1 xc/include/extensions/fontcache.h:1.2 --- xc/include/extensions/fontcache.h:1.1 Wed Mar 8 16:33:10 2000 +++ xc/include/extensions/fontcache.h Wed Mar 8 16:33:10 2000 @@ -25,7 +25,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: fontcache.h,v 1.6 1999/01/31 12:41:32 akiyama Exp $ + * Id: fontcache.h,v 1.6 1999/01/31 12:41:32 akiyama Exp $ */ /* THIS IS NOT AN X CONSORTIUM STANDARD */ Index: xc/include/extensions/fontcacheP.h diff -u xc/include/extensions/fontcacheP.h:1.1 xc/include/extensions/fontcacheP.h:1.4 --- xc/include/extensions/fontcacheP.h:1.1 Wed Mar 8 16:33:10 2000 +++ xc/include/extensions/fontcacheP.h Wed Mar 8 16:33:10 2000 @@ -24,8 +24,9 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: fontcacheP.h,v 1.6 1999/01/31 12:43:53 akiyama Exp $ + * Id: fontcacheP.h,v 1.6 1999/01/31 12:43:53 akiyama Exp $ */ +/* $XFree86: xc/include/extensions/fontcacheP.h,v 1.4 2000/03/01 01:04:21 dawes Exp $ */ #ifndef _FONTCACHEP_H_ #define _FONTCACHEP_H_ @@ -54,7 +55,7 @@ typedef struct fc_cache_settings FontCacheSettings, *FontCacheSettingsPtr; typedef struct fc_cache_statistics FontCacheStatistics, *FontCacheStatisticsPtr; -int FontCahceChangeSettings(FontCacheSettingsPtr /* cinfo */); +int FontCacheChangeSettings(FontCacheSettingsPtr /* cinfo */); void FontCacheGetSettings(FontCacheSettingsPtr /* cinfo */); void FontCacheGetStatistics(FontCacheStatisticsPtr /* cstats */); Index: xc/include/extensions/fontcachstr.h diff -u xc/include/extensions/fontcachstr.h:1.1 xc/include/extensions/fontcachstr.h:1.2 --- xc/include/extensions/fontcachstr.h:1.1 Wed Mar 8 16:33:10 2000 +++ xc/include/extensions/fontcachstr.h Wed Mar 8 16:33:10 2000 @@ -25,7 +25,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: fontcachstr.h,v 1.7 1999/01/31 14:58:40 akiyama Exp $ + * Id: fontcachstr.h,v 1.7 1999/01/31 14:58:40 akiyama Exp $ */ /* THIS IS NOT AN X CONSORTIUM STANDARD */ Index: xc/include/extensions/panoramiXext.h diff -u xc/include/extensions/panoramiXext.h:3.3 xc/include/extensions/panoramiXext.h:3.5 --- xc/include/extensions/panoramiXext.h:3.3 Fri Oct 2 03:46:18 1998 +++ xc/include/extensions/panoramiXext.h Wed Mar 8 16:33:11 2000 @@ -22,11 +22,12 @@ /* * PanoramiX definitions */ +/* $XFree86: xc/include/extensions/panoramiXext.h,v 3.5 2000/03/01 01:04:21 dawes Exp $ */ /* THIS IS NOT AN X PROJECT TEAM SPECIFICATION */ #define PANORAMIX_MAJOR_VERSION 1 /* current version number */ -#define PANORAMIX_MINOR_VERSION 0 +#define PANORAMIX_MINOR_VERSION 1 typedef struct { Window window; /* PanoramiX window - may not exist */ Index: xc/include/extensions/panoramiXproto.h diff -u xc/include/extensions/panoramiXproto.h:3.3 xc/include/extensions/panoramiXproto.h:3.5 --- xc/include/extensions/panoramiXproto.h:3.3 Fri Oct 2 03:46:18 1998 +++ xc/include/extensions/panoramiXproto.h Wed Mar 8 16:33:11 2000 @@ -19,6 +19,7 @@ * or in FAR 52.227-19, as applicable. * * * *****************************************************************/ +/* $XFree86: xc/include/extensions/panoramiXproto.h,v 3.5 2000/03/01 01:04:21 dawes Exp $ */ /* THIS IS NOT AN X PROJECT TEAM SPECIFICATION */ @@ -32,6 +33,9 @@ #define X_PanoramiXGetScreenCount 2 #define X_PanoramiXGetScreenSize 3 +#define X_XineramaIsActive 4 +#define X_XineramaQueryScreens 5 + typedef struct _PanoramiXQueryVersion { CARD8 reqType; /* always PanoramiXReqCode */ CARD8 panoramiXReqType; /* always X_PanoramiXQueryVersion */ @@ -128,13 +132,57 @@ } xPanoramiXGetScreenSizeReply; #define sz_panoramiXGetScreenSizeReply 32 -/* define any errors specific to this extension */ +/************ Alternate protocol ******************/ -/* If a client asks for ScreenCount when PanoramiX - is not in use */ +typedef struct { + CARD8 reqType; + CARD8 panoramiXReqType; + CARD16 length B16; +} xXineramaIsActiveReq; +#define sz_xXineramaIsActiveReq 4 + +typedef struct { + BYTE type; + CARD8 pad1; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD32 state B32; + CARD32 pad2 B32; + CARD32 pad3 B32; + CARD32 pad4 B32; + CARD32 pad5 B32; + CARD32 pad6 B32; +} xXineramaIsActiveReply; +#define sz_XineramaIsActiveReply 32 -/* If a client asks for Screen Size of a screen when - PanoramiX is not in use */ +typedef struct { + CARD8 reqType; + CARD8 panoramiXReqType; + CARD16 length B16; +} xXineramaQueryScreensReq; +#define sz_xXineramaQueryScreensReq 4 + +typedef struct { + BYTE type; + CARD8 pad1; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD32 number B32; + CARD32 pad2 B32; + CARD32 pad3 B32; + CARD32 pad4 B32; + CARD32 pad5 B32; + CARD32 pad6 B32; +} xXineramaQueryScreensReply; +#define sz_XineramaQueryScreensReply 32 + +typedef struct { + INT16 x_org B16; + INT16 y_org B16; + CARD16 width B16; + CARD16 height B16; +} xXineramaScreenInfo; +#define sz_XineramaScreenInfo 8 #endif Index: xc/include/extensions/xf86bigfstr.h diff -u xc/include/extensions/xf86bigfstr.h:1.1 xc/include/extensions/xf86bigfstr.h:1.2 --- xc/include/extensions/xf86bigfstr.h:1.1 Wed Mar 8 16:33:11 2000 +++ xc/include/extensions/xf86bigfstr.h Wed Mar 8 16:33:11 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/include/extensions/xf86bigfstr.h,v 1.1 2000/02/08 17:18:25 dawes Exp $ */ +/* $XFree86: xc/include/extensions/xf86bigfstr.h,v 1.2 2000/02/29 03:09:00 dawes Exp $ */ /* * Declarations of request structures for the BIGFONT extension. * @@ -16,7 +16,7 @@ #define XF86BIGFONTNAME "XFree86-Bigfont" #define XF86BIGFONT_MAJOR_VERSION 1 /* current version numbers */ -#define XF86BIGFONT_MINOR_VERSION 0 +#define XF86BIGFONT_MINOR_VERSION 1 typedef struct _XF86BigfontQueryVersion { CARD8 reqType; /* always XF86BigfontReqCode */ @@ -34,19 +34,23 @@ CARD16 minorVersion B16; /* minor version of XFree86-Bigfont */ CARD32 uid B32; CARD32 gid B32; + CARD32 signature B32; CARD32 pad1 B32; CARD32 pad2 B32; - CARD32 pad3 B32; } xXF86BigfontQueryVersionReply; #define sz_xXF86BigfontQueryVersionReply 32 +/* Bit masks that can be set in the capabilities */ +#define XF86Bigfont_CAP_LocalShm 1 + typedef struct _XF86BigfontQueryFont { CARD8 reqType; /* always XF86BigfontReqCode */ CARD8 xf86bigfontReqType; /* always X_XF86BigfontQueryFont */ CARD16 length B16; CARD32 id B32; + CARD32 flags B32; } xXF86BigfontQueryFontReq; -#define sz_xXF86BigfontQueryFontReq 8 +#define sz_xXF86BigfontQueryFontReq 12 typedef struct { BYTE type; /* X_Reply */ @@ -82,5 +86,8 @@ and then, if nCharInfos is odd, one more CARD16 for padding. */ } xXF86BigfontQueryFontReply; #define sz_xXF86BigfontQueryFontReply 72 + +/* Bit masks that can be set in the flags */ +#define XF86Bigfont_FLAGS_Shm 1 #endif /* _XF86BIGFSTR_H_ */ Index: xc/include/extensions/xf86rush.h diff -u xc/include/extensions/xf86rush.h:1.3 xc/include/extensions/xf86rush.h:1.4 --- xc/include/extensions/xf86rush.h:1.3 Wed Mar 8 16:33:11 2000 +++ xc/include/extensions/xf86rush.h Wed Mar 8 16:33:11 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/include/extensions/xf86rush.h,v 1.3 2000/02/11 22:35:44 dawes Exp $ */ +/* $XFree86: xc/include/extensions/xf86rush.h,v 1.4 2000/02/29 03:09:00 dawes Exp $ */ /* Copyright (c) 1998 Daryll Strauss @@ -20,6 +20,9 @@ #define X_XF86RushGetPixelStride 6 #define X_XF86RushSetPixelStride 7 #define X_XF86RushOverlayPixmap 8 +#define X_XF86RushStatusRegOffset 9 +#define X_XF86RushAT3DEnableRegs 10 +#define X_XF86RushAT3DDisableRegs 11 #define XF86RushNumberEvents 0 @@ -101,6 +104,27 @@ unsigned int /* dest_w */, unsigned int /* dest_h */, unsigned int /* id */ +#endif +); + +int XF86RushStatusRegOffset( +#if NeedFunctionPrototypes + Display * /* dpy */, + int /* screen */ +#endif +); + +Bool XF86RushAT3DEnableRegs( +#if NeedFunctionPrototypes + Display * /* dpy */, + int /* screen */ +#endif +); + +Bool XF86RushAT3DDisableRegs( +#if NeedFunctionPrototypes + Display * /* dpy */, + int /* screen */ #endif ); Index: xc/include/extensions/xf86rushstr.h diff -u xc/include/extensions/xf86rushstr.h:1.3 xc/include/extensions/xf86rushstr.h:1.4 --- xc/include/extensions/xf86rushstr.h:1.3 Wed Mar 8 16:33:11 2000 +++ xc/include/extensions/xf86rushstr.h Wed Mar 8 16:33:11 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/include/extensions/xf86rushstr.h,v 1.3 2000/02/11 22:35:44 dawes Exp $ */ +/* $XFree86: xc/include/extensions/xf86rushstr.h,v 1.4 2000/02/29 03:09:02 dawes Exp $ */ /* Copyright (c) 1998 Daryll Strauss @@ -118,5 +118,46 @@ CARD16 drw_h B16; } xXF86RushOverlayPixmapReq; #define sz_xXF86RushOverlayPixmapReq 40 + +typedef struct _XF86RushStatusRegOffset { + CARD8 reqType; /* always RushReqCode */ + CARD8 rushReqType; /* always X_RushStatusRegOffset */ + CARD16 length B16; + CARD16 screen B16; + CARD16 pad B16; +} xXF86RushStatusRegOffsetReq; +#define sz_xXF86RushStatusRegOffsetReq 8 + +typedef struct { + BYTE type; /* X_Reply */ + BOOL pad1; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD32 offset B32; /* Offset of Rush status reg in mem */ + CARD32 pad2 B32; + CARD32 pad3 B32; + CARD32 pad4 B32; + CARD32 pad5 B32; + CARD32 pad6 B32; +} xXF86RushStatusRegOffsetReply; +#define sz_xXF86RushStatusRegOffsetReply 32 + +typedef struct _XF86RushAT3DEnableRegs { + CARD8 reqType; /* always RushReqCode */ + CARD8 rushReqType; /* always X_RushAT3DEnableRegs */ + CARD16 length B16; + CARD16 screen B16; + CARD16 pad B16; +} xXF86RushAT3DEnableRegsReq; +#define sz_xXF86RushAT3DEnableRegsReq 8 + +typedef struct _XF86RushAT3DDisableRegs { + CARD8 reqType; /* always RushReqCode */ + CARD8 rushReqType; /* always X_RushAT3DDisableRegs */ + CARD16 length B16; + CARD16 screen B16; + CARD16 pad B16; +} xXF86RushAT3DDisableRegsReq; +#define sz_xXF86RushAT3DDisableRegsReq 8 #endif /* _XF86RUSHSTR_H_ */ Index: xc/lib/Imakefile diff -u xc/lib/Imakefile:3.33 xc/lib/Imakefile:3.36 --- xc/lib/Imakefile:3.33 Wed Mar 8 16:33:11 2000 +++ xc/lib/Imakefile Wed Mar 8 16:33:11 2000 @@ -1,5 +1,5 @@ XCOMM $TOG: Imakefile /main/39 1997/02/26 18:09:44 kaleb $ -XCOMM $XFree86: xc/lib/Imakefile,v 3.33 2000/02/13 06:15:22 dawes Exp $ +XCOMM $XFree86: xc/lib/Imakefile,v 3.36 2000/03/01 12:52:01 tsi Exp $ #define IHaveSubdirs #define PassCDebugFlags @@ -24,54 +24,59 @@ #endif #if BuildThreadStubLibrary -THRSTUBLIB = XThrStub +THRSTUBLIBDIR = XThrStub #endif #if BuildScreenSaverLibrary -SSLIB = Xss +SSLIBDIR = Xss #endif #if BuildXF86MiscLibrary -XF86MISCLIB = Xxf86misc +XF86MISCLIBDIR = Xxf86misc #endif #if BuildXF86VidModeLibrary -XF86VMLIB = Xxf86vm +XF86VMLIBDIR = Xxf86vm #endif #if BuildXF86DGALibrary -XF86DGALIB = Xxf86dga +XF86DGALIBDIR = Xxf86dga #endif #if BuildXF86RushLibrary -XF86RUSHLIB = Xxf86rush +XF86RUSHLIBDIR = Xxf86rush #endif #if BuildXvLibrary -XVLIB = Xv +XVLIBDIR = Xv +#endif + +#if BuildXineramaLibrary +XINERAMADIR=Xinerama #endif #if BuildXantiLibrary -XANTILIB = Xanti +XANTILIBDIR = Xanti #endif #if BuildGLXLibrary -GLXLIB = GL +GLXLIBDIR = GL #endif #if BuildDPSLibrary -DPSLIB = dps +DPSLIBDIR = dps #endif #if BuildDPSTkLibrary -DPSTKLIB = dpstk +DPSTKLIBDIR = dpstk #endif #if BuildPSResLibrary -PSRESLIB = psres +PSRESLIBDIR = psres #endif -XF86EXTLIBS = $(XF86MISCLIB) $(XF86VMLIB) $(XF86DGALIB) $(XF86RUSHLIB) +XF86EXTLIBS = $(XF86MISCLIBDIR) $(XF86VMLIBDIR) \ + $(XF86DGALIBDIR) $(XF86RUSHLIBDIR) #if BuildLBX LBXUTILDIR = lbxutil @@ -96,20 +101,21 @@ FONTSUBDIR = font #if !BuildServersOnly -LINTSUBDIRS = Xau Xdmcp $(THRSTUBLIB) X11 oldX ICE SM Xext Xt \ - $(SSLIB) $(XF86MISCLIB) $(XF86VMLIB) $(XF86DGALIB) $(XF86RUSHLIB) \ - Xmu Xpm Xaw $(XAW6LIBDIR) XIE Xi Xtst FS \ +LINTSUBDIRS = Xau Xdmcp $(THRSTUBLIBDIR) X11 oldX ICE SM Xext Xt \ + $(SSLIBDIR) $(XF86MISCLIBDIR) $(XF86VMLIBDIR) $(XF86DGALIBDIR) \ + $(XF86RUSHLIBDIR) Xmu Xpm Xaw $(XAW6LIBDIR) XIE Xi Xtst FS \ PEX5 $(XKBLIBDIR) $(XKBUILIBDIR) $(LBXUTILDIR) $(XALIBDIR) \ - Xp $(XVLIB) $(XANTILIB) $(GLXLIB) $(DPSLIB) $(DPSTKLIB) \ - $(PSRESLIB) $(ZLIBDIR) $(REGEXDIR) + Xp $(XVLIBDIR) $(XANTILIBDIR) $(GLXLIBDIR) $(DPSLIBDIR) \ + $(DPSTKLIBDIR) $(PSRESLIBDIR) $(XINERAMADIR) \ + $(ZLIBDIR) $(REGEXDIR) #else #if XnestServer || BuildGLXLibrary XEXTDIR = Xext #endif -LINTSUBDIRS = Xau Xdmcp X11 $(XEXTDIR) $(XKBLIBDIR) $(XKBUILIBDIR) \ - $(LBXUTILDIR) $(XF86EXTLIBS) $(XVLIB) $(GLXLIB) $(ZLIBDIR) \ - $(REGEXDIR) +LINTSUBDIRS = Xau Xdmcp X11 $(XINERAMADIR) $(XEXTDIR) $(XKBLIBDIR) \ + $(XKBUILIBDIR) $(LBXUTILDIR) $(XF86EXTLIBS) $(XVLIBDIR) \ + $(GLXLIBDIR) $(ZLIBDIR) $(REGEXDIR) #endif SUBDIRS = $(BERKDIR) xtrans $(LINTSUBDIRS) $(FONTSUBDIR) $(FONTCACHELIBDIR) Index: xc/lib/GL/Imakefile diff -u xc/lib/GL/Imakefile:1.15 xc/lib/GL/Imakefile:1.16 --- xc/lib/GL/Imakefile:1.15 Wed Mar 8 16:33:12 2000 +++ xc/lib/GL/Imakefile Wed Mar 8 16:33:12 2000 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/lib/GL/Imakefile,v 1.15 2000/02/16 17:26:30 dawes Exp $ +XCOMM $XFree86: xc/lib/GL/Imakefile,v 1.16 2000/03/02 16:07:30 martin Exp $ #include <Threads.tmpl> @@ -42,11 +42,30 @@ #if !GlxUseSGISI #if GlxBuiltInGamma - DRVOBJS = mesa/src/drv/gamma/?*.o - DRVUOBJS = mesa/src/drv/gamma/unshared/?*.o - DRVDOBJS = mesa/src/drv/gamma/debugger/?*.o - DRVPOBJS = mesa/src/drv/gamma/profiled/?*.o - DRVDONES = mesa/src/drv/gamma/DONE + DRMOBJS = dri/drm/?*.o + DRMUOBJS = dri/drm/unshared/?*.o + DRMDOBJS = dri/drm/debugger/?*.o + DRMPOBJS = dri/drm/profiled/?*.o + DRMDONES = dri/drm/DONE + + GAMMAOBJS = mesa/src/drv/gamma/?*.o + GAMMAUOBJS = mesa/src/drv/gamma/unshared/?*.o + GAMMADOBJS = mesa/src/drv/gamma/debugger/?*.o + GAMMAPOBJS = mesa/src/drv/gamma/profiled/?*.o + GAMMADONES = mesa/src/drv/gamma/DONE + + DRIMESAOBJS = mesa/dri/?*.o +DRIMESAUOBJS = mesa/dri/unshared/?*.o +DRIMESADOBJS = mesa/dri/debugger/?*.o +DRIMESAPOBJS = mesa/dri/profiled/?*.o +DRIMESADONES = mesa/dri/DONE + + DRVOBJS = $(GAMMAOBJS) $(MESAOBJS) $(DRIMESAOBJS) $(DRMOBJS) + DRVUOBJS = $(GAMMAUOBJS) $(MESAUOBJS) $(DRIMESAUOBJS) $(DRMUOBJS) + DRVDOBJS = $(GAMMADOBJS) $(MESADOBJS) $(DRIMESADOBJS) $(DRMDOBJS) + DRVPOBJS = $(GAMMAPOBJS) $(MESAPOBJS) $(DRIMESAPOBJS) $(DRMPOBJS) + DRVDONES = $(GAMMADONES) $(MESADONES) $(DRIMESADONES) $(DRMDONES) + #elif GlxBuiltInTdfx DRMOBJS = dri/drm/?*.o DRMUOBJS = dri/drm/unshared/?*.o Index: xc/lib/GL/dri/XF86dri.c diff -u xc/lib/GL/dri/XF86dri.c:1.4 xc/lib/GL/dri/XF86dri.c:1.5 --- xc/lib/GL/dri/XF86dri.c:1.4 Wed Mar 8 16:33:12 2000 +++ xc/lib/GL/dri/XF86dri.c Wed Mar 8 16:33:12 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/dri/XF86dri.c,v 1.4 2000/02/14 06:27:11 martin Exp $ */ +/* $XFree86: xc/lib/GL/dri/XF86dri.c,v 1.5 2000/02/23 04:46:33 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -31,7 +31,6 @@ * Kevin E. Martin <kevin@precisioninsight.com> * Jens Owen <jens@precisioninsight.com> * - * $PI: xc/lib/GL/dri/XF86dri.c,v 1.14 1999/06/16 20:08:33 faith Exp $ */ /* THIS IS NOT AN X CONSORTIUM STANDARD */ Index: xc/lib/GL/dri/dri_glx.c diff -u xc/lib/GL/dri/dri_glx.c:1.2 xc/lib/GL/dri/dri_glx.c:1.3 --- xc/lib/GL/dri/dri_glx.c:1.2 Wed Mar 8 16:33:12 2000 +++ xc/lib/GL/dri/dri_glx.c Wed Mar 8 16:33:12 2000 @@ -54,15 +54,15 @@ #ifdef BUILT_IN_DRI_DRIVER -extern void *driCreateScreen(Display *dpy, int scrn, __DRIscreen *psc, - int numConfigs, __GLXvisualConfig *config); +extern void *__driCreateScreen(Display *dpy, int scrn, __DRIscreen *psc, + int numConfigs, __GLXvisualConfig *config); #else /* BUILT_IN_DRI_DRIVER */ #ifndef DEFAULT_DRIVER_DIR -/* this should be defined in the Imakefile */ +/* this is normally defined in the Imakefile */ #define DEFAULT_DRIVER_DIR "/usr/X11R6/lib/modules/dri" #endif @@ -95,12 +95,8 @@ * Initialize two arrays: an array of createScreen function pointers * and an array of dlopen library handles. Arrays are indexed by * screen number. - * We use the DRI in order to find the driCreateScreen function + * We use the DRI in order to find the __driCreateScreen function * exported by each screen on a display. - * - * Also, this function calls the driver's _register_gl_extensions() - * function in order to let the driver hook new extension functions - * into the libGL dispatcher. */ static void Find_CreateScreenFuncs(Display *dpy, CreateScreenFunc *createFuncs, @@ -109,6 +105,8 @@ const int numScreens = ScreenCount(dpy); int scrn; + __glXRegisterExtensions(); + for (scrn = 0; scrn < numScreens; scrn++) { int directCapable; Bool b; @@ -141,7 +139,7 @@ /* * dlopen the driver module and save the pointer to its - * driCreateScreen function. + * __driCreateScreen function. */ { char realDriverName[100]; @@ -150,8 +148,8 @@ char *libDir = NULL; if (geteuid() == getuid()) { - /* don't allow setuid apps to use DRI_MODULES_DIR */ - libDir = getenv("DRI_MODULES_DIR"); + /* don't allow setuid apps to use LIBGL_DRIVERS_DIR */ + libDir = getenv("LIBGL_DRIVERS_DIR"); } if (!libDir) libDir = DEFAULT_DRIVER_DIR; @@ -166,7 +164,7 @@ continue; } - createScreenFunc = (CreateScreenFunc) dlsym(handle, "driCreateScreen"); + createScreenFunc = (CreateScreenFunc) dlsym(handle, "__driCreateScreen"); if (createScreenFunc) { /* success! */ createFuncs[scrn] = createScreenFunc; @@ -178,19 +176,6 @@ ErrorMessage(message); dlclose(handle); } - - /* Find the driver's _register_gl_extensions() function and - * call it if present. This will let the driver tell libGL.so - * about any extension functions it wants to export. - */ - { - typedef void *(*RegisterExtFunc)(void); - RegisterExtFunc registerExtFunc = (RegisterExtFunc) dlsym(handle, "_register_gl_extensions"); - if (registerExtFunc) { - (*registerExtFunc)(); - } - } - } } } @@ -254,11 +239,11 @@ } #ifdef BUILT_IN_DRI_DRIVER - /* we'll statically bind to the driCreateScreen function */ + /* we'll statically bind to the __driCreateScreen function */ { int i; for (i = 0; i < numScreens; i++) { - pdisp->createScreen[i] = driCreateScreen; + pdisp->createScreen[i] = __driCreateScreen; pdpyp->libraryHandles[i] = NULL; } } @@ -270,4 +255,139 @@ } +#ifndef BUILT_IN_DRI_DRIVER +/* + * Use the DRI and dlopen/dlsym facilities to find the GL extensions + * possible on the given display and screen. + */ +static void +register_extensions_on_screen(Display *dpy, int scrNum) +{ + GLboolean verbose = GL_FALSE; /* for debugging only */ + int eventBase, errorBase; + Bool b, b2; + int driMajor, driMinor, driPatch; + int driverMajor, driverMinor, driverPatch; + char *driverName = NULL; + + /* + * Check if the DRI extension is available, check the DRI version, + * determine the 3D driver for the screen. + */ + b = XF86DRIQueryExtension(dpy, &eventBase, &errorBase); + if (!b) { + if (verbose) + fprintf(stderr, "XF86DRIQueryExtension failed\n"); + return; + } + + b = XF86DRIQueryDirectRenderingCapable(dpy, scrNum, &b2); + if (!b || !b2) { + if (verbose) + fprintf(stderr, "XF86DRIQueryDirectRenderingCapable failed\n"); + return; + } + + b = XF86DRIQueryVersion(dpy, &driMajor, &driMinor, &driPatch); + if (!b) { + if (verbose) + fprintf(stderr, "XF86DRIQueryVersion failed\n"); + return; + } + + b = XF86DRIGetClientDriverName(dpy, scrNum, &driverMajor, &driverMinor, + &driverPatch, &driverName); + if (!b) { + if (verbose) + fprintf(stderr, "XF86DRIGetClientDriverName failed\n"); + return; + } + else if (verbose) { + printf("XF86DRIGetClientDriverName: %d.%d.%d %s\n", driverMajor, + driverMinor, driverPatch, driverName); + } + + /* + * OK, now we know the name of the relevant driver for this screen. + * dlopen() the driver library file, get a pointer to the driver's + * __driRegisterExtensions() function, and call it if it exists. + */ + { + char realDriverName[100]; + char *libDir = NULL; + void *handle; + + if (geteuid() == getuid()) { + /* don't allow setuid apps to use LIBGL_DRIVERS_DIR */ + libDir = getenv("LIBGL_DRIVERS_DIR"); + } + if (!libDir) + libDir = DEFAULT_DRIVER_DIR; + + sprintf(realDriverName, "%s/%s_dri.so", libDir, driverName); + /*printf("OPEN %s\n", realDriverName);*/ + handle = dlopen(realDriverName, RTLD_LAZY); + if (handle) { + typedef void *(*RegisterExtFunc)(void); + RegisterExtFunc registerExtFunc = (RegisterExtFunc) dlsym(handle, "__driRegisterExtensions"); + if (registerExtFunc) { + (*registerExtFunc)(); + } + dlclose(handle); + } + } +} +#endif /* !BUILT_IN_DRI_DRIVER */ + + + +/* +** Here we'll query the DRI driver for each screen and let each +** driver register its GL extension functions. We only have to +** do this once. But it MUST be done before we create any contexts +** (i.e. before any dispatch tables are created) and before +** glXGetProcAddressARB() returns. +** +** Currently called by glXGetProcAddress(), __glXInitialize(), and +** __glXNewIndirectAPI(). +*/ +void +__glXRegisterExtensions(void) +{ + static GLboolean alreadyCalled = GL_FALSE; + if (alreadyCalled) + return; + +#ifdef BUILT_IN_DRI_DRIVER + __driRegisterExtensions(); +#else + { + int displayNum; + for (displayNum = 0; ; displayNum++) { + char displayName[200]; + Display *dpy; + snprintf(displayName, 199, ":%d.0", displayNum); + dpy = XOpenDisplay(displayName); + if (dpy) { + const int numScreens = ScreenCount(dpy); + int screenNum; + for (screenNum = 0; screenNum < numScreens; screenNum++) { + register_extensions_on_screen(dpy, screenNum); + } + XCloseDisplay(dpy); + } + else { + break; + } + } + } +#endif + + alreadyCalled = GL_TRUE; +} + + #endif /* GLX_DIRECT_RENDERING */ + + + Index: xc/lib/GL/dri/dri_tmm.c diff -u xc/lib/GL/dri/dri_tmm.c:1.1 xc/lib/GL/dri/dri_tmm.c:1.2 --- xc/lib/GL/dri/dri_tmm.c:1.1 Mon Jun 14 03:23:32 1999 +++ xc/lib/GL/dri/dri_tmm.c Wed Mar 8 16:33:12 2000 @@ -24,8 +24,7 @@ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * - * $PI: xc/lib/GL/dri/dri_tmm.c,v 1.5 1999/05/18 06:46:11 martin Exp $ - * $XFree86: xc/lib/GL/dri/dri_tmm.c,v 1.1 1999/06/14 07:23:32 dawes Exp $ + * $XFree86: xc/lib/GL/dri/dri_tmm.c,v 1.2 2000/02/23 04:46:34 martin Exp $ * * * DESCRIPTION Index: xc/lib/GL/dri/dri_tmm.h diff -u xc/lib/GL/dri/dri_tmm.h:1.1 xc/lib/GL/dri/dri_tmm.h:1.2 --- xc/lib/GL/dri/dri_tmm.h:1.1 Mon Jun 14 03:23:32 1999 +++ xc/lib/GL/dri/dri_tmm.h Wed Mar 8 16:33:12 2000 @@ -24,8 +24,7 @@ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * - * $PI: xc/lib/GL/dri/dri_tmm.h,v 1.2 1999/05/18 06:46:11 martin Exp $ - * $XFree86: xc/lib/GL/dri/dri_tmm.h,v 1.1 1999/06/14 07:23:32 dawes Exp $ + * $XFree86: xc/lib/GL/dri/dri_tmm.h,v 1.2 2000/02/23 04:46:34 martin Exp $ * */ Index: xc/lib/GL/dri/xf86dri.h diff -u xc/lib/GL/dri/xf86dri.h:1.4 xc/lib/GL/dri/xf86dri.h:1.5 --- xc/lib/GL/dri/xf86dri.h:1.4 Wed Mar 8 16:33:12 2000 +++ xc/lib/GL/dri/xf86dri.h Wed Mar 8 16:33:12 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/dri/xf86dri.h,v 1.4 2000/02/14 06:27:11 martin Exp $ */ +/* $XFree86: xc/lib/GL/dri/xf86dri.h,v 1.5 2000/02/23 04:46:34 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -32,7 +32,6 @@ * Jens Owen <jens@precisioninsight.com> * Rickard E. Faith <faith@precisioninsight.com> * - * $PI: xc/lib/GL/dri/xf86dri.h,v 1.12 1999/06/16 20:08:34 faith Exp $ */ #ifndef _XF86DRI_H_ Index: xc/lib/GL/dri/xf86dristr.h diff -u xc/lib/GL/dri/xf86dristr.h:1.4 xc/lib/GL/dri/xf86dristr.h:1.5 --- xc/lib/GL/dri/xf86dristr.h:1.4 Wed Mar 8 16:33:12 2000 +++ xc/lib/GL/dri/xf86dristr.h Wed Mar 8 16:33:12 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/dri/xf86dristr.h,v 1.4 2000/02/14 06:27:11 martin Exp $ */ +/* $XFree86: xc/lib/GL/dri/xf86dristr.h,v 1.5 2000/02/23 04:46:34 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -31,7 +31,6 @@ * Kevin E. Martin <kevin@precisioninsight.com> * Jens Owen <jens@precisioninsight.com> * - * $PI: xc/lib/GL/dri/xf86dristr.h,v 1.11 1999/06/22 03:09:44 jens Exp $ */ #ifndef _XF86DRISTR_H_ Index: xc/lib/GL/dri/drm/Imakefile diff -u xc/lib/GL/dri/drm/Imakefile:1.3 xc/lib/GL/dri/drm/Imakefile:1.4 --- xc/lib/GL/dri/drm/Imakefile:1.3 Sat Sep 25 10:36:37 1999 +++ xc/lib/GL/dri/drm/Imakefile Wed Mar 8 16:33:12 2000 @@ -1,5 +1,4 @@ -XCOMM $XFree86: xc/lib/GL/dri/drm/Imakefile,v 1.3 1999/09/25 14:36:37 dawes Exp $ -XCOMM $PI: xc/lib/GL/dri/drm/Imakefile,v 1.12 1999/09/16 18:43:48 faith Exp $ +XCOMM $XFree86: xc/lib/GL/dri/drm/Imakefile,v 1.4 2000/02/23 04:46:35 martin Exp $ #define DoNormalLib NormalLibGlx #define DoSharedLib SharedLibGlx Index: xc/lib/GL/glx/glxclient.h diff -u xc/lib/GL/glx/glxclient.h:1.6 xc/lib/GL/glx/glxclient.h:1.7 --- xc/lib/GL/glx/glxclient.h:1.6 Wed Mar 8 16:33:13 2000 +++ xc/lib/GL/glx/glxclient.h Wed Mar 8 16:33:13 2000 @@ -537,6 +537,10 @@ /* Initialize the GLX extension for dpy */ extern __GLXdisplayPrivate *__glXInitialize(Display*); +/* Query drivers for dynamically registered extensions */ +extern void __glXRegisterExtensions(void); + + /************************************************************************/ extern int __glXDebug; Index: xc/lib/GL/glx/glxcmds.c diff -u xc/lib/GL/glx/glxcmds.c:1.7 xc/lib/GL/glx/glxcmds.c:1.8 --- xc/lib/GL/glx/glxcmds.c:1.7 Wed Mar 8 16:33:13 2000 +++ xc/lib/GL/glx/glxcmds.c Wed Mar 8 16:33:13 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/glx/glxcmds.c,v 1.7 2000/02/21 18:05:33 dawes Exp $ */ +/* $XFree86: xc/lib/GL/glx/glxcmds.c,v 1.8 2000/03/02 16:07:32 martin Exp $ */ /* ** The contents of this file are subject to the GLX Public License Version 1.0 ** (the "License"). You may not use this file except in compliance with the @@ -67,7 +67,8 @@ __GLXdisplayPrivate *priv; #endif - if (getenv("DRI_ALWAYS_INDIRECT")) allowDirect = GL_FALSE; + if (getenv("LIBGL_ALWAYS_INDIRECT")) + allowDirect = GL_FALSE; opcode = __glXSetupForCommand(dpy); if (!opcode) { return NULL; @@ -397,7 +398,7 @@ ** attribute "mask". */ void glXCopyContext(Display *dpy, GLXContext source, GLXContext dest, - GLuint mask) + unsigned long mask) { xGLXCopyContextReq *req; GLXContext gc = __glXGetCurrentContext(); @@ -1492,11 +1493,156 @@ } + +/* + * GLX 1.3 functions - these are just stubs for now! + */ + +GLXFBConfig glXChooseFBConfig(Display *dpy, int screen, const int *attribList, int *nitems) +{ + (void) dpy; + (void) screen; + (void) attribList; + (void) nitems; + return 0; +} + + +GLXContext glXCreateNewContext(Display *dpy, GLXFBConfig config, int renderType, GLXContext shareList, Bool direct) +{ + (void) dpy; + (void) config; + (void) renderType; + (void) shareList; + (void) direct; + return 0; +} + + +GLXPbuffer glXCreatePbuffer(Display *dpy, GLXFBConfig config, const int *attribList) +{ + (void) dpy; + (void) config; + (void) attribList; + return 0; +} + + +GLXPixmap glXCreatePixmap(Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attribList) +{ + (void) dpy; + (void) config; + (void) pixmap; + (void) attribList; + return 0; +} + + +GLXWindow glXCreateWindow(Display *dpy, GLXFBConfig config, Window win, const int *attribList) +{ + (void) dpy; + (void) config; + (void) win; + (void) attribList; + return 0; +} + + +void glXDestroyPbuffer(Display *dpy, GLXPbuffer pbuf) +{ + (void) dpy; + (void) pbuf; +} + + +void glXDestroyPixmap(Display *dpy, GLXPixmap pixmap) +{ + (void) dpy; + (void) pixmap; +} + + +void glXDestroyWindow(Display *dpy, GLXWindow window) +{ + (void) dpy; + (void) window; +} + + +GLXDrawable glXGetCurrentReadDrawable(void) +{ + return 0; +} + + +int glXGetFBConfigAttrib(Display *dpy, GLXFBConfig config, int attribute, int *value) +{ + (void) dpy; + (void) config; + (void) attribute; + (void) value; + return 0; +} + + +void glXGetSelectedEvent(Display *dpy, GLXDrawable drawable, unsigned long *mask) +{ + (void) dpy; + (void) drawable; + (void) mask; +} + + +XVisualInfo *glXGetVisualFromFBConfig(Display *dpy, GLXFBConfig config) +{ + (void) dpy; + (void) config; + return 0; +} + + +Bool glXMakeContextCurrent(Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx) +{ + (void) dpy; + (void) draw; + (void) read; + (void) ctx; + return 0; +} + + +int glXQueryContext(Display *dpy, GLXContext ctx, int attribute, int *value) +{ + (void) dpy; + (void) ctx; + (void) attribute; + (void) value; + return 0; +} + + +void glXQueryDrawable(Display *dpy, GLXDrawable draw, int attribute, unsigned int *value) +{ + (void) dpy; + (void) draw; + (void) attribute; + (void) value; +} + + +void glXSelectEvent(Display *dpy, GLXDrawable drawable, unsigned long mask) +{ + (void) dpy; + (void) drawable; + (void) mask; +} + + + /* ** glXGetProcAddress support */ - struct name_address_pair { const char *Name; GLvoid *Address; @@ -1527,7 +1673,6 @@ { "glXGetCurrentDisplay", (GLvoid *) glXGetCurrentDisplay }, -#if 0 /* enable this when GLX 1.3 is implemented */ { "glXChooseFBConfig", (GLvoid *) glXChooseFBConfig }, { "glXCreateNewContext", (GLvoid *) glXCreateNewContext }, { "glXCreatePbuffer", (GLvoid *) glXCreatePbuffer }, @@ -1544,7 +1689,6 @@ { "glXQueryContext", (GLvoid *) glXQueryContext }, { "glXQueryDrawable", (GLvoid *) glXQueryDrawable }, { "glXSelectEvent", (GLvoid *) glXSelectEvent }, -#endif /* extension functions */ { "glXGetContextIDEXT", (GLvoid *) glXGetContextIDEXT }, @@ -1574,6 +1718,10 @@ { typedef void (*gl_function)(); gl_function f; + +#if defined(GLX_DIRECT_RENDERING) + __glXRegisterExtensions(); +#endif f = (gl_function) get_glx_proc_address((const char *) procName); if (f) { Index: xc/lib/GL/glx/indirect_init.c diff -u xc/lib/GL/glx/indirect_init.c:1.4 xc/lib/GL/glx/indirect_init.c:1.5 --- xc/lib/GL/glx/indirect_init.c:1.4 Wed Mar 8 16:33:13 2000 +++ xc/lib/GL/glx/indirect_init.c Wed Mar 8 16:33:13 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/glx/indirect_init.c,v 1.4 2000/02/15 19:19:19 dawes Exp $ */ +/* $XFree86: xc/lib/GL/glx/indirect_init.c,v 1.5 2000/03/02 16:07:32 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -49,8 +49,16 @@ __GLapi *__glXNewIndirectAPI(void) { __GLapi *glAPI; - const GLuint entries = _glapi_get_dispatch_table_size(); + GLuint entries; + /* Have to register dynamic extensions before allocating any + * dispatch tables. + */ +#if defined(GLX_DIRECT_RENDERING) + __glXRegisterExtensions(); +#endif + + entries = _glapi_get_dispatch_table_size(); glAPI = (__GLapi *) Xmalloc(entries * sizeof(void *)); /* first, set all entries to point to no-op functions */ Index: xc/lib/GL/glx/xfont.c diff -u xc/lib/GL/glx/xfont.c:1.2 xc/lib/GL/glx/xfont.c:1.3 --- xc/lib/GL/glx/xfont.c:1.2 Wed Mar 8 16:33:13 2000 +++ xc/lib/GL/glx/xfont.c Wed Mar 8 16:33:13 2000 @@ -1,5 +1,3 @@ -/* $Id: xfont.c,v 1.1 1999/12/08 00:51:37 daryll Exp $ */ - /* * Mesa 3-D graphics library * Version: 3.1 Index: xc/lib/GL/mesa/dri/Imakefile diff -u xc/lib/GL/mesa/dri/Imakefile:1.1 xc/lib/GL/mesa/dri/Imakefile:1.2 --- xc/lib/GL/mesa/dri/Imakefile:1.1 Wed Mar 8 16:33:14 2000 +++ xc/lib/GL/mesa/dri/Imakefile Wed Mar 8 16:33:14 2000 @@ -1,5 +1,4 @@ -XCOMM $XFree86: xc/lib/GL/mesa/dri/Imakefile,v 1.1 2000/02/08 17:18:35 dawes Exp $ -XCOMM $PI$ +XCOMM $XFree86: xc/lib/GL/mesa/dri/Imakefile,v 1.2 2000/02/23 04:46:36 martin Exp $ #define DoNormalLib NormalLibGlx #define DoSharedLib SharedLibGlx Index: xc/lib/GL/mesa/dri/dri_mesa.c diff -u xc/lib/GL/mesa/dri/dri_mesa.c:1.4 xc/lib/GL/mesa/dri/dri_mesa.c:1.6 --- xc/lib/GL/mesa/dri/dri_mesa.c:1.4 Wed Mar 8 16:33:14 2000 +++ xc/lib/GL/mesa/dri/dri_mesa.c Wed Mar 8 16:33:14 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/dri/dri_mesa.c,v 1.4 2000/02/15 07:13:28 martin Exp $ */ +/* $XFree86: xc/lib/GL/mesa/dri/dri_mesa.c,v 1.6 2000/03/02 16:07:33 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -29,8 +29,7 @@ /* * Authors: * Kevin E. Martin <kevin@precisioninsight.com> - * - * $PI: xc/lib/GL/dri/dri_mesa.c,v 1.18 1999/08/04 18:13:27 faith Exp $ + * Brian Paul <brian@precisioninsight.com> */ #ifdef GLX_DIRECT_RENDERING @@ -45,9 +44,6 @@ #include "sarea.h" #include "dri_mesaint.h" #include "dri_xmesaapi.h" -#ifdef BRIAN -#include <dlfcn.h> -#endif #if XMESA_MAJOR_VERSION != 3 || XMESA_MINOR_VERSION != 3 @@ -735,8 +731,8 @@ * This is the entrypoint into the driver. * The driCreateScreen name is the symbol that libGL.so fetches. */ -void *driCreateScreen(Display *dpy, int scrn, __DRIscreen *psc, - int numConfigs, __GLXvisualConfig *config) +void *__driCreateScreen(Display *dpy, int scrn, __DRIscreen *psc, + int numConfigs, __GLXvisualConfig *config) { return driMesaCreateScreen(dpy, scrn, psc, numConfigs, config); } Index: xc/lib/GL/mesa/dri/dri_mesa.h diff -u xc/lib/GL/mesa/dri/dri_mesa.h:1.1 xc/lib/GL/mesa/dri/dri_mesa.h:1.3 --- xc/lib/GL/mesa/dri/dri_mesa.h:1.1 Wed Mar 8 16:33:14 2000 +++ xc/lib/GL/mesa/dri/dri_mesa.h Wed Mar 8 16:33:14 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/dri/dri_mesa.h,v 1.1 2000/02/08 17:18:36 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/dri/dri_mesa.h,v 1.3 2000/03/02 16:07:33 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -29,8 +29,7 @@ /* * Authors: * Kevin E. Martin <kevin@precisioninsight.com> - * - * $PI: xc/lib/GL/dri/dri_mesa.h,v 1.5 1999/04/05 05:24:31 martin Exp $ + * Brian Paul <brian@precisioninsight.com> */ #ifndef _DRI_MESA_H_ Index: xc/lib/GL/mesa/dri/dri_mesaint.h diff -u xc/lib/GL/mesa/dri/dri_mesaint.h:1.5 xc/lib/GL/mesa/dri/dri_mesaint.h:1.6 --- xc/lib/GL/mesa/dri/dri_mesaint.h:1.5 Wed Mar 8 16:33:14 2000 +++ xc/lib/GL/mesa/dri/dri_mesaint.h Wed Mar 8 16:33:14 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/dri/dri_mesaint.h,v 1.5 2000/02/15 07:13:28 martin Exp $ */ +/* $XFree86: xc/lib/GL/mesa/dri/dri_mesaint.h,v 1.6 2000/02/23 04:46:38 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -30,7 +30,6 @@ * Authors: * Kevin E. Martin <kevin@precisioninsight.com> * - * $PI: xc/lib/GL/dri/dri_mesaint.h,v 1.8 1999/06/14 21:10:35 faith Exp $ */ #ifndef _DRI_MESAINT_H_ Index: xc/lib/GL/mesa/dri/dri_xmesaapi.h diff -u xc/lib/GL/mesa/dri/dri_xmesaapi.h:1.2 xc/lib/GL/mesa/dri/dri_xmesaapi.h:1.3 --- xc/lib/GL/mesa/dri/dri_xmesaapi.h:1.2 Wed Mar 8 16:33:14 2000 +++ xc/lib/GL/mesa/dri/dri_xmesaapi.h Wed Mar 8 16:33:14 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/dri/dri_xmesaapi.h,v 1.2 2000/02/15 07:13:29 martin Exp $ */ +/* $XFree86: xc/lib/GL/mesa/dri/dri_xmesaapi.h,v 1.3 2000/02/23 04:46:38 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -30,7 +30,6 @@ * Authors: * Kevin E. Martin <kevin@precisioninsight.com> * - * $PI: xc/lib/GL/dri/dri_xmesaapi.h,v 1.4 1999/04/05 05:24:31 martin Exp $ */ #ifndef _DRI_XMESAAPI_H_ Index: xc/lib/GL/mesa/include/GL/Imakefile diff -u xc/lib/GL/mesa/include/GL/Imakefile:1.1 xc/lib/GL/mesa/include/GL/Imakefile:1.3 --- xc/lib/GL/mesa/include/GL/Imakefile:1.1 Wed Mar 8 16:33:14 2000 +++ xc/lib/GL/mesa/include/GL/Imakefile Wed Mar 8 16:33:14 2000 @@ -1,5 +1,4 @@ -XCOMM $XFree86: xc/lib/GL/mesa/include/GL/Imakefile,v 1.1 2000/02/08 17:18:37 dawes Exp $ -XCOMM $PI: xc/programs/Xserver/GL/mesa/include/GL/Imakefile,v 1.6 1999/03/15 21:36:09 martin Exp $ +XCOMM $XFree86: xc/lib/GL/mesa/include/GL/Imakefile,v 1.3 2000/03/02 16:07:33 martin Exp $ #define IHaveModules #include <Server.tmpl> @@ -7,6 +6,7 @@ DEFINES = $(GLX_DEFINES) LinkSourceFile(gl.h, ../../../../../extras/Mesa/include/GL) +LinkSourceFile(glext.h, ../../../../../extras/Mesa/include/GL) LinkSourceFile(glx.h, ../../../../../extras/Mesa/include/GL) LinkSourceFile(xmesa.h, ../../../../../extras/Mesa/include/GL) LinkSourceFile(xmesa_x.h, ../../../../../extras/Mesa/include/GL) Index: xc/lib/GL/mesa/src/Imakefile diff -u xc/lib/GL/mesa/src/Imakefile:1.9 xc/lib/GL/mesa/src/Imakefile:1.10 --- xc/lib/GL/mesa/src/Imakefile:1.9 Wed Mar 8 16:33:15 2000 +++ xc/lib/GL/mesa/src/Imakefile Wed Mar 8 16:33:15 2000 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/lib/GL/mesa/src/Imakefile,v 1.9 2000/02/15 07:13:29 martin Exp $ +XCOMM $XFree86: xc/lib/GL/mesa/src/Imakefile,v 1.10 2000/03/02 16:07:34 martin Exp $ #include <Threads.tmpl> @@ -335,7 +335,7 @@ #ifdef i386Architecture ASM_SRCS = ASM_OBJS = - ASM_DEFS = -DUSE_MMX_ASM -DUSE_X86_ASM -DUSE_3DNOW_ASM + ASM_DEFS = -DUSE_MMX_ASM -DUSE_X86_ASM #endif DEFINES = $(ALLOC_DEFINES) GlxDefines $(TDFX_DEFS) $(ASM_DEFS) Index: xc/lib/GL/mesa/src/X/Imakefile diff -u xc/lib/GL/mesa/src/X/Imakefile:1.4 xc/lib/GL/mesa/src/X/Imakefile:1.5 --- xc/lib/GL/mesa/src/X/Imakefile:1.4 Wed Mar 8 16:33:15 2000 +++ xc/lib/GL/mesa/src/X/Imakefile Wed Mar 8 16:33:15 2000 @@ -1,5 +1,4 @@ -XCOMM $XFree86: xc/lib/GL/mesa/src/X/Imakefile,v 1.4 2000/02/08 17:18:40 dawes Exp $ -XCOMM $PI: xc/lib/GL/mesa/src/X/Imakefile,v 1.4 1999/06/21 05:13:55 martin Exp $ +XCOMM $XFree86: xc/lib/GL/mesa/src/X/Imakefile,v 1.5 2000/02/23 04:46:39 martin Exp $ #define DoNormalLib NormalLibGlx #define DoSharedLib SharedLibGlx Index: xc/lib/GL/mesa/src/X86/Imakefile diff -u xc/lib/GL/mesa/src/X86/Imakefile:1.4 xc/lib/GL/mesa/src/X86/Imakefile:1.5 --- xc/lib/GL/mesa/src/X86/Imakefile:1.4 Wed Mar 8 16:33:16 2000 +++ xc/lib/GL/mesa/src/X86/Imakefile Wed Mar 8 16:33:16 2000 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/lib/GL/mesa/src/X86/Imakefile,v 1.4 2000/02/18 16:23:10 dawes Exp $ +XCOMM $XFree86: xc/lib/GL/mesa/src/X86/Imakefile,v 1.5 2000/03/02 16:07:34 martin Exp $ #define DoNormalLib NormalLibGlx #define DoSharedLib SharedLibGlx @@ -76,7 +76,7 @@ #endif DEFINES = $(ALLOC_DEFINES) GlxDefines -DFX $(X86_DEFS) $(MMX_DEFS) $(3DNOW_DEFS) - INCLUDES = -I$(XLIBSRC) -I$(EXTINCSRC) -I../include -I../../dri -I.. + INCLUDES = -I$(XLIBSRC) -I$(EXTINCSRC) -I../include -I../../include -I../../dri -I.. SRCS = $(X86_SRCS) $(MMX_SRCS) $(3DNOW_SRCS) OBJS = $(X86_OBJS) $(MMX_OBJS) $(3DNOW_OBJS) Index: xc/lib/GL/mesa/src/drv/Imakefile diff -u xc/lib/GL/mesa/src/drv/Imakefile:1.6 xc/lib/GL/mesa/src/drv/Imakefile:1.8 --- xc/lib/GL/mesa/src/drv/Imakefile:1.6 Wed Mar 8 16:33:16 2000 +++ xc/lib/GL/mesa/src/drv/Imakefile Wed Mar 8 16:33:16 2000 @@ -1,5 +1,4 @@ -XCOMM $XFree86: xc/lib/GL/mesa/src/drv/Imakefile,v 1.6 2000/02/14 06:27:12 martin Exp $ -XCOMM $PI: xc/lib/GL/mesa/src/drv/Imakefile,v 1.3 1999/06/14 21:10:41 faith Exp $ +XCOMM $XFree86: xc/lib/GL/mesa/src/drv/Imakefile,v 1.8 2000/03/07 14:31:38 dawes Exp $ #define DoNormalLib NormalLibGlx #define DoSharedLib SharedLibGlx @@ -21,7 +20,7 @@ SUBDIRS = $(DRIVER) #else SUBDIRS += gamma -#if HasGlide +#if HasGlide3 SUBDIRS += tdfx #endif #endif Index: xc/lib/GL/mesa/src/drv/common/Imakefile diff -u xc/lib/GL/mesa/src/drv/common/Imakefile:1.1 xc/lib/GL/mesa/src/drv/common/Imakefile:1.2 --- xc/lib/GL/mesa/src/drv/common/Imakefile:1.1 Wed Mar 8 16:33:16 2000 +++ xc/lib/GL/mesa/src/drv/common/Imakefile Wed Mar 8 16:33:16 2000 @@ -1,4 +1,3 @@ -XCOMM $PI:$ #define DoNormalLib NormalLibGlx #define DoSharedLib SharedLibGlx Index: xc/lib/GL/mesa/src/drv/gamma/Imakefile diff -u xc/lib/GL/mesa/src/drv/gamma/Imakefile:1.6 xc/lib/GL/mesa/src/drv/gamma/Imakefile:1.8 --- xc/lib/GL/mesa/src/drv/gamma/Imakefile:1.6 Wed Mar 8 16:33:16 2000 +++ xc/lib/GL/mesa/src/drv/gamma/Imakefile Wed Mar 8 16:33:16 2000 @@ -1,5 +1,4 @@ -XCOMM $XFree86: xc/lib/GL/mesa/src/drv/gamma/Imakefile,v 1.6 2000/02/15 07:13:30 martin Exp $ -XCOMM $PI: xc/lib/GL/mesa/src/drv/gamma/Imakefile,v 1.6 1999/06/21 05:13:55 martin Exp $ +XCOMM $XFree86: xc/lib/GL/mesa/src/drv/gamma/Imakefile,v 1.8 2000/03/02 16:07:35 martin Exp $ #define DoNormalLib NormalLibGlx #define DoSharedLib SharedLibGlx @@ -7,6 +6,10 @@ #define DoDebugLib DebugLibGlx #define DoProfileLib ProfileLibGlx +LinkSourceFile(xmesaP.h, ../../../../../../extras/Mesa/src/X) +LinkSourceFile(glapi.h, ../../../../../../extras/Mesa/src) + + #if Malloc0ReturnsNull ALLOC_DEFINES = -DMALLOC_0_RETURNS_NULL #endif @@ -48,7 +51,10 @@ GAMMAOBJS = gamma_gl.o gamma_xmesa.o gamma_init.o gamma_matrix.o \ gamma_inithw.o gamma_texture.o - SRCS = $(DRISRCS) $(DRMSRCS) $(GAMMASRCS) +XCOMM SRCS = $(DRISRCS) $(DRMSRCS) $(GAMMASRCS) +XCOMM OBJS = $(DRIOBJS) $(DRMOBJS) $(GAMMAOBJS) + + SRCS = $(GAMMASRCS) OBJS = $(DRIOBJS) $(DRMOBJS) $(GAMMAOBJS) Index: xc/lib/GL/mesa/src/drv/gamma/gamma_client.h diff -u xc/lib/GL/mesa/src/drv/gamma/gamma_client.h:1.1 xc/lib/GL/mesa/src/drv/gamma/gamma_client.h:1.2 --- xc/lib/GL/mesa/src/drv/gamma/gamma_client.h:1.1 Mon Jun 14 03:31:12 1999 +++ xc/lib/GL/mesa/src/drv/gamma/gamma_client.h Wed Mar 8 16:33:16 2000 @@ -31,8 +31,7 @@ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * - * $PI: xc/lib/GL/mesa/src/drv/gamma/gamma_client.h,v 1.1 1999/04/05 05:24:34 martin Exp $ - * $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_client.h,v 1.1 1999/06/14 07:31:12 dawes Exp $ + * $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_client.h,v 1.2 2000/02/23 04:46:41 martin Exp $ * */ Index: xc/lib/GL/mesa/src/drv/gamma/gamma_gl.c diff -u xc/lib/GL/mesa/src/drv/gamma/gamma_gl.c:1.2 xc/lib/GL/mesa/src/drv/gamma/gamma_gl.c:1.4 --- xc/lib/GL/mesa/src/drv/gamma/gamma_gl.c:1.2 Sun Jun 27 10:07:29 1999 +++ xc/lib/GL/mesa/src/drv/gamma/gamma_gl.c Wed Mar 8 16:33:16 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_gl.c,v 1.2 1999/06/27 14:07:29 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_gl.c,v 1.4 2000/03/02 16:07:35 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -29,8 +29,7 @@ /* * Authors: * Kevin E. Martin <kevin@precisioninsight.com> - * - * $PI: xc/lib/GL/mesa/src/drv/gamma/gamma_gl.c,v 1.24 1999/06/14 21:10:43 faith Exp $ + * Brian Paul <brian@precisioninsight.com> */ #ifdef GLX_DIRECT_RENDERING @@ -42,12 +41,12 @@ #include <stdlib.h> #endif -void glAccum(GLenum op, GLfloat value) +void _gamma_Accum(GLenum op, GLfloat value) { DEBUG_GLCMDS(("Accum: %d %f\n", (int)op, value)); } -void glAlphaFunc(GLenum func, GLclampf ref) +void _gamma_AlphaFunc(GLenum func, GLclampf ref) { unsigned char r = ref * 255.0; @@ -91,7 +90,7 @@ WRITE(gCCPriv->buf, AlphaTestMode, gCCPriv->AlphaTestMode); } -GLboolean glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences) +GLboolean _gamma_AreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences) { DEBUG_GLCMDS(("AreTexturesResident: %d\n", (int)n)); #ifdef DEBUG_VERBOSE_EXTRA @@ -105,12 +104,12 @@ return GL_TRUE; } -void glArrayElement(GLint i) +void _gamma_ArrayElement(GLint i) { DEBUG_GLCMDS(("ArrayElement: %d\n", (int)i)); } -void glBegin(GLenum mode) +void _gamma_Begin(GLenum mode) { DEBUG_GLCMDS(("Begin: %04x\n", (int)mode)); @@ -160,7 +159,7 @@ WRITE(gCCPriv->buf, Begin, gCCPriv->Begin); } -void glBindTexture(GLenum target, GLuint texture) +void _gamma_BindTexture(GLenum target, GLuint texture) { unsigned long addrs[MIPMAP_LEVELS]; int i; @@ -244,12 +243,12 @@ WRITE(gCCPriv->buf, TextureCacheControl, (TCC_Enable | TCC_Invalidate)); } -void glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap) +void _gamma_Bitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap) { DEBUG_GLCMDS(("Bitmap: \n")); } -void glBlendFunc(GLenum sfactor, GLenum dfactor) +void _gamma_BlendFunc(GLenum sfactor, GLenum dfactor) { DEBUG_GLCMDS(("BlendFunc: %04x %04x\n", (int)sfactor, (int)dfactor)); @@ -347,17 +346,17 @@ } } -void glCallList(GLuint list) +void _gamma_CallList(GLuint list) { DEBUG_GLCMDS(("CallList: %d\n", (unsigned int)list)); } -void glCallLists(GLsizei n, GLenum type, const GLvoid *lists) +void _gamma_CallLists(GLsizei n, GLenum type, const GLvoid *lists) { DEBUG_GLCMDS(("CallLists: %d %04x\n", (int)n, (int)type)); } -void glClear(GLbitfield mask) +void _gamma_Clear(GLbitfield mask) { unsigned int depth = 0; int do_clear = 0; @@ -587,12 +586,12 @@ #endif } -void glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +void _gamma_ClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) { DEBUG_GLCMDS(("ClearAccum: %f %f %f %f\n", red, green, blue, alpha)); } -void glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) +void _gamma_ClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) { DEBUG_GLCMDS(("ClearColor: %f %f %f %f\n", (float)red, (float)green, (float)blue, (float)alpha)); @@ -603,50 +602,50 @@ gCCPriv->ClearColor[3] = alpha; } -void glClearDepth(GLclampd depth) +void _gamma_ClearDepth(GLclampd depth) { DEBUG_GLCMDS(("ClearDepth: %f\n", (float)depth)); gCCPriv->ClearDepth = depth; } -void glClearIndex(GLfloat c) +void _gamma_ClearIndex(GLfloat c) { DEBUG_GLCMDS(("ClearIndex: %f\n", c)); } -void glClearStencil(GLint s) +void _gamma_ClearStencil(GLint s) { DEBUG_GLCMDS(("ClearStencil: %d\n", (int)s)); } -void glClipPlane(GLenum plane, const GLdouble *equation) +void _gamma_ClipPlane(GLenum plane, const GLdouble *equation) { DEBUG_GLCMDS(("ClipPlane: %04x %f %f %f %f\n", (int)plane, equation[0], equation[1], equation[2], equation[3])); } -void glColor3b(GLbyte red, GLbyte green, GLbyte blue) +void _gamma_Color3b(GLbyte red, GLbyte green, GLbyte blue) { DEBUG_GLCMDS(("Color3b: %d %d %d\n", red, green, blue)); } -void glColor3bv(const GLbyte *v) +void _gamma_Color3bv(const GLbyte *v) { DEBUG_GLCMDS(("Color3bv: %d %d %d\n", v[0], v[1], v[2])); } -void glColor3d(GLdouble red, GLdouble green, GLdouble blue) +void _gamma_Color3d(GLdouble red, GLdouble green, GLdouble blue) { DEBUG_GLCMDS(("Color3d: %f %f %f\n", red, green, blue)); } -void glColor3dv(const GLdouble *v) +void _gamma_Color3dv(const GLdouble *v) { DEBUG_GLCMDS(("Color3dv: %f %f %f\n", v[0], v[1], v[2])); } -void glColor3f(GLfloat red, GLfloat green, GLfloat blue) +void _gamma_Color3f(GLfloat red, GLfloat green, GLfloat blue) { DEBUG_GLCMDS(("Color3f: %f %f %f\n", red, green, blue)); @@ -662,7 +661,7 @@ WRITEF(gCCPriv->buf, Cr3, red); } -void glColor3fv(const GLfloat *v) +void _gamma_Color3fv(const GLfloat *v) { DEBUG_GLCMDS(("Color3fv: %f %f %f\n", v[0], v[1], v[2])); @@ -685,79 +684,79 @@ #endif } -void glColor3i(GLint red, GLint green, GLint blue) +void _gamma_Color3i(GLint red, GLint green, GLint blue) { DEBUG_GLCMDS(("Color3i: %d %d %d\n", (int)red, (int)green, (int)blue)); } -void glColor3iv(const GLint *v) +void _gamma_Color3iv(const GLint *v) { DEBUG_GLCMDS(("Color3iv: %d %d %d\n", (int)v[0], (int)v[1], (int)v[2])); } -void glColor3s(GLshort red, GLshort green, GLshort blue) +void _gamma_Color3s(GLshort red, GLshort green, GLshort blue) { DEBUG_GLCMDS(("Color3s: %d %d %d\n", red, green, blue)); } -void glColor3sv(const GLshort *v) +void _gamma_Color3sv(const GLshort *v) { DEBUG_GLCMDS(("Color3sv: %d %d %d\n", v[0], v[1], v[2])); } -void glColor3ub(GLubyte red, GLubyte green, GLubyte blue) +void _gamma_Color3ub(GLubyte red, GLubyte green, GLubyte blue) { DEBUG_GLCMDS(("Color3ub: %d %d %d\n", red, green, blue)); } -void glColor3ubv(const GLubyte *v) +void _gamma_Color3ubv(const GLubyte *v) { DEBUG_GLCMDS(("Color3ubv: %d %d %d\n", v[0], v[1], v[2])); } -void glColor3ui(GLuint red, GLuint green, GLuint blue) +void _gamma_Color3ui(GLuint red, GLuint green, GLuint blue) { DEBUG_GLCMDS(("Color3ui: %d %d %d\n", (unsigned int)red, (unsigned int)green, (unsigned int)blue)); } -void glColor3uiv(const GLuint *v) +void _gamma_Color3uiv(const GLuint *v) { DEBUG_GLCMDS(("Color3uiv: %d %d %d\n", (unsigned int)v[0], (unsigned int)v[1], (unsigned int)v[2])); } -void glColor3us(GLushort red, GLushort green, GLushort blue) +void _gamma_Color3us(GLushort red, GLushort green, GLushort blue) { DEBUG_GLCMDS(("Color3us: %d %d %d\n", red, green, blue)); } -void glColor3usv(const GLushort *v) +void _gamma_Color3usv(const GLushort *v) { DEBUG_GLCMDS(("Color3usv: %d %d %d\n", v[0], v[1], v[2])); } -void glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) +void _gamma_Color4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) { DEBUG_GLCMDS(("Color4b: %d %d %d %d\n", red, green, blue, alpha)); } -void glColor4bv(const GLbyte *v) +void _gamma_Color4bv(const GLbyte *v) { DEBUG_GLCMDS(("Color4bv: %d %d %d %d\n", v[0], v[1], v[2], v[3])); } -void glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) +void _gamma_Color4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) { DEBUG_GLCMDS(("Color4d: %f %f %f %f\n", red, green, blue, alpha)); } -void glColor4dv(const GLdouble *v) +void _gamma_Color4dv(const GLdouble *v) { DEBUG_GLCMDS(("Color4dv: %f %f %f %f\n", v[0], v[1], v[2], v[3])); } -void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +void _gamma_Color4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) { DEBUG_GLCMDS(("Color4f: %f %f %f %f\n", red, green, blue, alpha)); @@ -774,7 +773,7 @@ WRITEF(gCCPriv->buf, Cr4, red); } -void glColor4fv(const GLfloat *v) +void _gamma_Color4fv(const GLfloat *v) { DEBUG_GLCMDS(("Color4fv: %f %f %f %f\n", v[0], v[1], v[2], v[3])); @@ -799,29 +798,29 @@ #endif } -void glColor4i(GLint red, GLint green, GLint blue, GLint alpha) +void _gamma_Color4i(GLint red, GLint green, GLint blue, GLint alpha) { DEBUG_GLCMDS(("Color4i: %d %d %d %d\n", (int)red, (int)green, (int)blue, (int)alpha)); } -void glColor4iv(const GLint *v) +void _gamma_Color4iv(const GLint *v) { DEBUG_GLCMDS(("Color4iv: %d %d %d %d\n", (int)v[0], (int)v[1], (int)v[2], (int)v[3])); } -void glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha) +void _gamma_Color4s(GLshort red, GLshort green, GLshort blue, GLshort alpha) { DEBUG_GLCMDS(("Color4s: %d %d %d %d\n", red, green, blue, alpha)); } -void glColor4sv(const GLshort *v) +void _gamma_Color4sv(const GLshort *v) { DEBUG_GLCMDS(("Color4sv: %d %d %d %d\n", v[0], v[1], v[2], v[3])); } -void glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) +void _gamma_Color4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) { GLuint c; @@ -837,7 +836,7 @@ WRITE(gCCPriv->buf, PackedColor4, c); } -void glColor4ubv(const GLubyte *v) +void _gamma_Color4ubv(const GLubyte *v) { GLuint c; @@ -859,81 +858,81 @@ WRITE(gCCPriv->buf, PackedColor4, c); } -void glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha) +void _gamma_Color4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha) { DEBUG_GLCMDS(("Color4ui: %d %d %d %d\n", (unsigned int)red, (unsigned int)green, (unsigned int)blue, (unsigned int)alpha)); } -void glColor4uiv(const GLuint *v) +void _gamma_Color4uiv(const GLuint *v) { DEBUG_GLCMDS(("Color4uiv: %d %d %d %d\n", (unsigned int)v[0], (unsigned int)v[1], (unsigned int)v[2], (unsigned int)v[3])); } -void glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha) +void _gamma_Color4us(GLushort red, GLushort green, GLushort blue, GLushort alpha) { DEBUG_GLCMDS(("Color4us: %d %d %d %d\n", red, green, blue, alpha)); } -void glColor4usv(const GLushort *v) +void _gamma_Color4usv(const GLushort *v) { DEBUG_GLCMDS(("Color4usv: %d %d %d %d\n", v[0], v[1], v[2], v[3])); } -void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +void _gamma_ColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) { DEBUG_GLCMDS(("ColorMask: %d %d %d %d\n", red, green, blue, alpha)); } -void glColorMaterial(GLenum face, GLenum mode) +void _gamma_ColorMaterial(GLenum face, GLenum mode) { DEBUG_GLCMDS(("ColorMaterial: %04x %04x\n", (int)face, (int)mode)); } -void glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +void _gamma_ColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) { DEBUG_GLCMDS(("ColorPointer: %d %04x %d\n", (int)size, (int)type, (int)stride)); } -void glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type) +void _gamma_CopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type) { DEBUG_GLCMDS(("CopyPixels: %d %d %d %d %04x\n", (int)x, (int)y, (int)width, (int)height, (int)type)); } -void glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) +void _gamma_CopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) { DEBUG_GLCMDS(("CopyTexImage1D: %04x %d %04x %d %d %d %d\n", (int)target, (int)level, (int)internalformat, (int)x, (int)y, (int)width, (int)border)); } -void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) +void _gamma_CopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) { DEBUG_GLCMDS(("CopyTexImage2D: %04x %d %04x %d %d %d %d %d\n", (int)target, (int)level, (int)internalformat, (int)x, (int)y, (int)width, (int)height, (int)border)); } -void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) +void _gamma_CopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) { DEBUG_GLCMDS(("CopyTexSubImage1D: %04x %d %d %d %d %d\n", (int)target, (int)level, (int)xoffset, (int)x, (int)y, (int)width)); } -void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) +void _gamma_CopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) { DEBUG_GLCMDS(("CopyTexSubImage2D: %04x %d %d %d %d %d %d %d\n", (int)target, (int)level, (int)xoffset, (int)yoffset, (int)x, (int)y, (int)width, (int)height)); } -void glCullFace(GLenum mode) +void _gamma_CullFace(GLenum mode) { DEBUG_GLCMDS(("CullFace: %04x\n", (int)mode)); @@ -961,12 +960,12 @@ WRITE(gCCPriv->buf, GeometryMode, gCCPriv->GeometryMode); } -void glDeleteLists(GLuint list, GLsizei range) +void _gamma_DeleteLists(GLuint list, GLsizei range) { DEBUG_GLCMDS(("DeleteLists: %d %d\n", (unsigned int)list, (int)range)); } -void glDeleteTextures(GLsizei n, const GLuint *textures) +void _gamma_DeleteTextures(GLsizei n, const GLuint *textures) { int i; @@ -992,7 +991,7 @@ gCCPriv->curTexObj2D = gCCPriv->curTexObj; } -void glDepthFunc(GLenum func) +void _gamma_DepthFunc(GLenum func) { DEBUG_GLCMDS(("DepthFunc: %04x\n", (int)func)); @@ -1032,7 +1031,7 @@ WRITE(gCCPriv->buf, DepthMode, gCCPriv->DepthMode); } -void glDepthMask(GLboolean flag) +void _gamma_DepthMask(GLboolean flag) { DEBUG_GLCMDS(("DepthMask: %d\n", flag)); @@ -1046,7 +1045,7 @@ WRITE(gCCPriv->buf, DepthMode, gCCPriv->DepthMode); } -void glDepthRange(GLclampd zNear, GLclampd zFar) +void _gamma_DepthRange(GLclampd zNear, GLclampd zFar) { GLfloat sz, oz; @@ -1063,7 +1062,7 @@ WRITEF(gCCPriv->buf, ViewPortOffsetZ, oz); } -void glDisable(GLenum cap) +void _gamma_Disable(GLenum cap) { DEBUG_GLCMDS(("Disable %04x\n", (int)cap)); @@ -1134,50 +1133,50 @@ } } -void glDisableClientState(GLenum array) +void _gamma_DisableClientState(GLenum array) { DEBUG_GLCMDS(("DisableClientState: %04x\n", (int)array)); } -void glDrawArrays(GLenum mode, GLint first, GLsizei count) +void _gamma_DrawArrays(GLenum mode, GLint first, GLsizei count) { DEBUG_GLCMDS(("DrawArrays: %04x %d %d\n", (int)mode, (int)first, (int)count)); } -void glDrawBuffer(GLenum mode) +void _gamma_DrawBuffer(GLenum mode) { DEBUG_GLCMDS(("DrawBuffer: %04x\n", (int)mode)); } -void glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +void _gamma_DrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) { DEBUG_GLCMDS(("DrawElements: %04x %d %04x\n", (int)mode, (int)count, (int)type)); } -void glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image) +void _gamma_DrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image) { DEBUG_GLCMDS(("DrawPixels: %d %d %04x %04x\n", (int)width, (int)height, (int)format, (int)type)); } -void glEdgeFlag(GLboolean flag) +void _gamma_EdgeFlag(GLboolean flag) { DEBUG_GLCMDS(("EdgeFlag: %d\n", flag)); } -void glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer) +void _gamma_EdgeFlagPointer(GLsizei stride, const GLvoid *pointer) { DEBUG_GLCMDS(("EdgeFlagPointer: %d\n", (int)stride)); } -void glEdgeFlagv(const GLboolean *flag) +void _gamma_EdgeFlagv(const GLboolean *flag) { DEBUG_GLCMDS(("EdgeFlagv: \n")); } -void glEnable(GLenum cap) +void _gamma_Enable(GLenum cap) { DEBUG_GLCMDS(("Enable %04x\n", (int)cap)); @@ -1257,12 +1256,12 @@ } } -void glEnableClientState(GLenum array) +void _gamma_EnableClientState(GLenum array) { DEBUG_GLCMDS(("EnableClientState: %04x\n", (int)array)); } -void glEnd(void) +void _gamma_End(void) { DEBUG_GLCMDS(("End\n")); @@ -1283,105 +1282,105 @@ #endif } -void glEndList(void) +void _gamma_EndList(void) { DEBUG_GLCMDS(("EndList\n")); } -void glEvalCoord1d(GLdouble u) +void _gamma_EvalCoord1d(GLdouble u) { DEBUG_GLCMDS(("EvalCoord1d: %f\n", u)); } -void glEvalCoord1dv(const GLdouble *u) +void _gamma_EvalCoord1dv(const GLdouble *u) { } -void glEvalCoord1f(GLfloat u) +void _gamma_EvalCoord1f(GLfloat u) { } -void glEvalCoord1fv(const GLfloat *u) +void _gamma_EvalCoord1fv(const GLfloat *u) { } -void glEvalCoord2d(GLdouble u, GLdouble v) +void _gamma_EvalCoord2d(GLdouble u, GLdouble v) { } -void glEvalCoord2dv(const GLdouble *u) +void _gamma_EvalCoord2dv(const GLdouble *u) { } -void glEvalCoord2f(GLfloat u, GLfloat v) +void _gamma_EvalCoord2f(GLfloat u, GLfloat v) { } -void glEvalCoord2fv(const GLfloat *u) +void _gamma_EvalCoord2fv(const GLfloat *u) { } -void glEvalMesh1(GLenum mode, GLint i1, GLint i2) +void _gamma_EvalMesh1(GLenum mode, GLint i1, GLint i2) { } -void glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) +void _gamma_EvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) { } -void glEvalPoint1(GLint i) +void _gamma_EvalPoint1(GLint i) { } -void glEvalPoint2(GLint i, GLint j) +void _gamma_EvalPoint2(GLint i, GLint j) { } -void glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer) +void _gamma_FeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer) { DEBUG_GLCMDS(("FeedbackBuffer: %d %04x\n", (int)size, (int)type)); } -void glFinish(void) +void _gamma_Finish(void) { DEBUG_GLCMDS(("Finish\n")); FLUSH_DMA_BUFFER(gCC,gCCPriv); } -void glFlush(void) +void _gamma_Flush(void) { DEBUG_GLCMDS(("Flush\n")); FLUSH_DMA_BUFFER(gCC,gCCPriv); } -void glFogf(GLenum pname, GLfloat param) +void _gamma_Fogf(GLenum pname, GLfloat param) { DEBUG_GLCMDS(("Fogf: %04x %f\n", (int)pname, param)); } -void glFogfv(GLenum pname, const GLfloat *params) +void _gamma_Fogfv(GLenum pname, const GLfloat *params) { DEBUG_GLCMDS(("Fogfv: %04x %f\n", (int)pname, *params)); } -void glFogi(GLenum pname, GLint param) +void _gamma_Fogi(GLenum pname, GLint param) { DEBUG_GLCMDS(("Fogi: %04x %d\n", (int)pname, (int)param)); } -void glFogiv(GLenum pname, const GLint *params) +void _gamma_Fogiv(GLenum pname, const GLint *params) { DEBUG_GLCMDS(("Fogiv: %04x %d\n", (int)pname, (int)*params)); } -void glFrontFace(GLenum mode) +void _gamma_FrontFace(GLenum mode) { DEBUG_GLCMDS(("FrontFace: %04x\n", (int)mode)); } -void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +void _gamma_Frustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) { #define FRUSTUM_X() ((GLfloat)((2.0*zNear)/(right-left))) #define FRUSTUM_Y() ((GLfloat)((2.0*zNear)/(top-bottom))) @@ -1411,41 +1410,41 @@ gammaLoadHWMatrix(); } -GLuint glGenLists(GLsizei range) +GLuint _gamma_GenLists(GLsizei range) { DEBUG_GLCMDS(("GenLists: %d\n", (int)range)); return GL_TRUE; } -void glGenTextures(GLsizei n, GLuint *textures) +void _gamma_GenTextures(GLsizei n, GLuint *textures) { DEBUG_GLCMDS(("GenTextures: %d\n", (int)n)); } -void glGetBooleanv(GLenum val, GLboolean *b) +void _gamma_GetBooleanv(GLenum val, GLboolean *b) { DEBUG_GLCMDS(("GetBooleanv: %04x\n", (int)val)); } -void glGetClipPlane(GLenum plane, GLdouble *equation) +void _gamma_GetClipPlane(GLenum plane, GLdouble *equation) { DEBUG_GLCMDS(("GetClipPlane: %04x %f %f %f %f\n", (int)plane, equation[0], equation[1], equation[2], equation[3])); } -void glGetDoublev(GLenum val, GLdouble *d) +void _gamma_GetDoublev(GLenum val, GLdouble *d) { DEBUG_GLCMDS(("GetDoublev: %04x\n", (int)val)); } -GLenum glGetError(void) +GLenum _gamma_GetError(void) { DEBUG_GLCMDS(("GetError\n")); return 0; } -void glGetFloatv(GLenum val, GLfloat *f) +void _gamma_GetFloatv(GLenum val, GLfloat *f) { int i; @@ -1461,64 +1460,64 @@ } } -void glGetIntegerv(GLenum val, GLint *i) +void _gamma_GetIntegerv(GLenum val, GLint *i) { DEBUG_GLCMDS(("GetIntegerv: %04x\n", (int)val)); } -void glGetLightfv(GLenum light, GLenum pname, GLfloat *params) +void _gamma_GetLightfv(GLenum light, GLenum pname, GLfloat *params) { } -void glGetLightiv(GLenum light, GLenum pname, GLint *params) +void _gamma_GetLightiv(GLenum light, GLenum pname, GLint *params) { } -void glGetMapdv(GLenum target, GLenum query, GLdouble *v) +void _gamma_GetMapdv(GLenum target, GLenum query, GLdouble *v) { } -void glGetMapfv(GLenum target, GLenum query, GLfloat *v) +void _gamma_GetMapfv(GLenum target, GLenum query, GLfloat *v) { } -void glGetMapiv(GLenum target, GLenum query, GLint *v) +void _gamma_GetMapiv(GLenum target, GLenum query, GLint *v) { } -void glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) +void _gamma_GetMaterialfv(GLenum face, GLenum pname, GLfloat *params) { } -void glGetMaterialiv(GLenum face, GLenum pname, GLint *params) +void _gamma_GetMaterialiv(GLenum face, GLenum pname, GLint *params) { } -void glGetPixelMapfv(GLenum map, GLfloat *values) +void _gamma_GetPixelMapfv(GLenum map, GLfloat *values) { } -void glGetPixelMapuiv(GLenum map, GLuint *values) +void _gamma_GetPixelMapuiv(GLenum map, GLuint *values) { } -void glGetPixelMapusv(GLenum map, GLushort *values) +void _gamma_GetPixelMapusv(GLenum map, GLushort *values) { } -void glGetPointerv(GLenum pname, void **params) +void _gamma_GetPointerv(GLenum pname, void **params) { DEBUG_GLCMDS(("GetPointerv: %04x\n", (int)pname)); } -void glGetPolygonStipple(GLubyte *mask) +void _gamma_GetPolygonStipple(GLubyte *mask) { } -const GLubyte *glGetString(GLenum name) +const GLubyte *_gamma_GetString(GLenum name) { - static unsigned char vendor[] = "vendor"; - static unsigned char renderer[] = "renderer"; + static unsigned char vendor[] = "Precision Insight, Inc."; + static unsigned char renderer[] = "DRI Glint-Gamma 20000228"; static unsigned char version[] = "1.1"; static unsigned char ext[] = ""; @@ -1536,190 +1535,190 @@ return NULL; } -void glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params) +void _gamma_GetTexEnvfv(GLenum target, GLenum pname, GLfloat *params) { } -void glGetTexEnviv(GLenum target, GLenum pname, GLint *params) +void _gamma_GetTexEnviv(GLenum target, GLenum pname, GLint *params) { } -void glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params) +void _gamma_GetTexGendv(GLenum coord, GLenum pname, GLdouble *params) { } -void glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) +void _gamma_GetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) { } -void glGetTexGeniv(GLenum coord, GLenum pname, GLint *params) +void _gamma_GetTexGeniv(GLenum coord, GLenum pname, GLint *params) { } -void glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *texels) +void _gamma_GetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *texels) { } -void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +void _gamma_GetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) { } -void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +void _gamma_GetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) { } -void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +void _gamma_GetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) { } -void glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +void _gamma_GetTexParameteriv(GLenum target, GLenum pname, GLint *params) { } -void glHint(GLenum target, GLenum mode) +void _gamma_Hint(GLenum target, GLenum mode) { DEBUG_GLCMDS(("Hint: %04x %04x\n", (int)target, (int)mode)); } -void glIndexMask(GLuint mask) +void _gamma_IndexMask(GLuint mask) { DEBUG_GLCMDS(("Hint: %d\n", (unsigned int)mask)); } -void glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +void _gamma_IndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer) { DEBUG_GLCMDS(("IndexPointer: %04x %d\n", (int)type, (int)stride)); } -void glIndexd(GLdouble c) +void _gamma_Indexd(GLdouble c) { DEBUG_GLCMDS(("Indexd: %f\n", c)); } -void glIndexdv(const GLdouble *c) +void _gamma_Indexdv(const GLdouble *c) { DEBUG_GLCMDS(("Indexdv: %f\n", *c)); } -void glIndexf(GLfloat c) +void _gamma_Indexf(GLfloat c) { DEBUG_GLCMDS(("Indexf: %f\n", c)); } -void glIndexfv(const GLfloat *c) +void _gamma_Indexfv(const GLfloat *c) { DEBUG_GLCMDS(("Indexdv: %f\n", *c)); } -void glIndexi(GLint c) +void _gamma_Indexi(GLint c) { DEBUG_GLCMDS(("Indexi: %d\n", (int)c)); } -void glIndexiv(const GLint *c) +void _gamma_Indexiv(const GLint *c) { DEBUG_GLCMDS(("Indexiv: %d\n", (int)*c)); } -void glIndexs(GLshort c) +void _gamma_Indexs(GLshort c) { DEBUG_GLCMDS(("Indexs: %d\n", c)); } -void glIndexsv(const GLshort *c) +void _gamma_Indexsv(const GLshort *c) { DEBUG_GLCMDS(("Indexsv: %d\n", *c)); } -void glIndexub(GLubyte c) +void _gamma_Indexub(GLubyte c) { DEBUG_GLCMDS(("Indexub: %d\n", c)); } -void glIndexubv(const GLubyte *c) +void _gamma_Indexubv(const GLubyte *c) { DEBUG_GLCMDS(("Indexubv: %d\n", *c)); } -void glInitNames(void) +void _gamma_InitNames(void) { DEBUG_GLCMDS(("InitNames\n")); } -void glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer) +void _gamma_InterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer) { DEBUG_GLCMDS(("InterleavedArrays: %04x %d\n", (int)format, (int)stride)); } -GLboolean glIsEnabled(GLenum cap) +GLboolean _gamma_IsEnabled(GLenum cap) { DEBUG_GLCMDS(("IsEnabled: %04x\n", (int)cap)); return GL_TRUE; } -GLboolean glIsList(GLuint list) +GLboolean _gamma_IsList(GLuint list) { DEBUG_GLCMDS(("IsList: %04x\n", (unsigned int)list)); return GL_TRUE; } -GLboolean glIsTexture(GLuint texture) +GLboolean _gamma_IsTexture(GLuint texture) { DEBUG_GLCMDS(("IsTexture: %04x\n", (unsigned int)texture)); return GL_TRUE; } -void glLightModelf(GLenum pname, GLfloat param) +void _gamma_LightModelf(GLenum pname, GLfloat param) { } -void glLightModelfv(GLenum pname, const GLfloat *params) +void _gamma_LightModelfv(GLenum pname, const GLfloat *params) { } -void glLightModeli(GLenum pname, GLint param) +void _gamma_LightModeli(GLenum pname, GLint param) { } -void glLightModeliv(GLenum pname, const GLint *params) +void _gamma_LightModeliv(GLenum pname, const GLint *params) { } -void glLightf(GLenum light, GLenum pname, GLfloat param) +void _gamma_Lightf(GLenum light, GLenum pname, GLfloat param) { } -void glLightfv(GLenum light, GLenum pname, const GLfloat *params) +void _gamma_Lightfv(GLenum light, GLenum pname, const GLfloat *params) { } -void glLighti(GLenum light, GLenum pname, GLint param) +void _gamma_Lighti(GLenum light, GLenum pname, GLint param) { } -void glLightiv(GLenum light, GLenum pname, const GLint *params) +void _gamma_Lightiv(GLenum light, GLenum pname, const GLint *params) { } -void glLineStipple(GLint factor, GLushort pattern) +void _gamma_LineStipple(GLint factor, GLushort pattern) { DEBUG_GLCMDS(("LineStipple: %d %d\n", (int)factor, pattern)); } -void glLineWidth(GLfloat width) +void _gamma_LineWidth(GLfloat width) { DEBUG_GLCMDS(("LineWidth: %f\n", width)); } -void glListBase(GLuint base) +void _gamma_ListBase(GLuint base) { DEBUG_GLCMDS(("ListBase: %d\n", (unsigned int)base)); } -void glLoadIdentity(void) +void _gamma_LoadIdentity(void) { DEBUG_GLCMDS(("LoadIdentity: %04x\n", gCCPriv->MatrixMode)); @@ -1727,7 +1726,7 @@ gammaLoadHWMatrix(); } -void glLoadMatrixd(const GLdouble *m) +void _gamma_LoadMatrixd(const GLdouble *m) { GLfloat f[16]; int i; @@ -1739,7 +1738,7 @@ gammaLoadHWMatrix(); } -void glLoadMatrixf(const GLfloat *m) +void _gamma_LoadMatrixf(const GLfloat *m) { DEBUG_GLCMDS(("LoadMatrixf: %04x\n", gCCPriv->MatrixMode)); @@ -1747,29 +1746,29 @@ gammaLoadHWMatrix(); } -void glLoadName(GLuint name) +void _gamma_LoadName(GLuint name) { DEBUG_GLCMDS(("LoadName: %d\n", (unsigned int)name)); } -void glLogicOp(GLenum opcode) +void _gamma_LogicOp(GLenum opcode) { DEBUG_GLCMDS(("LogicOp: %04x\n", (int)opcode)); } -void glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *pnts) +void _gamma_Map1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *pnts) { DEBUG_GLCMDS(("Map1d: %04x %f %f %d %d\n", (int)target, u1, u2, (int)stride, (int)order)); } -void glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *pnts) +void _gamma_Map1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *pnts) { DEBUG_GLCMDS(("Map1f: %04x %f %f %d %d\n", (int)target, u1, u2, (int)stride, (int)order)); } -void glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustr, GLint uord, GLdouble v1, GLdouble v2, GLint vstr, GLint vord, const GLdouble *pnts) +void _gamma_Map2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustr, GLint uord, GLdouble v1, GLdouble v2, GLint vstr, GLint vord, const GLdouble *pnts) { DEBUG_GLCMDS(("Map2d: %04x %f %f %d %d %f %f %d %d\n", (int)target, @@ -1777,7 +1776,7 @@ v1, v2, (int)vstr, (int)vord)); } -void glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustr, GLint uord, GLfloat v1, GLfloat v2, GLint vstr, GLint vord, const GLfloat *pnts) +void _gamma_Map2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustr, GLint uord, GLfloat v1, GLfloat v2, GLint vstr, GLint vord, const GLfloat *pnts) { DEBUG_GLCMDS(("Map2f: %04x %f %f %d %d %f %f %d %d\n", (int)target, @@ -1785,54 +1784,54 @@ v1, v2, (int)vstr, (int)vord)); } -void glMapGrid1d(GLint un, GLdouble u1, GLdouble u2) +void _gamma_MapGrid1d(GLint un, GLdouble u1, GLdouble u2) { DEBUG_GLCMDS(("MapGrid1d: %d %f %f\n", (int)un, u1, u2)); } -void glMapGrid1f(GLint un, GLfloat u1, GLfloat u2) +void _gamma_MapGrid1f(GLint un, GLfloat u1, GLfloat u2) { DEBUG_GLCMDS(("MapGrid1f: %d %f %f\n", (int)un, u1, u2)); } -void glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2) +void _gamma_MapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2) { DEBUG_GLCMDS(("MapGrid2d: %d %f %f %d %f %f\n", (int)un, u1, u2, (int)vn, v1, v2)); } -void glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2) +void _gamma_MapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2) { DEBUG_GLCMDS(("MapGrid2f: %d %f %f %d %f %f\n", (int)un, u1, u2, (int)vn, v1, v2)); } -void glMaterialf(GLenum face, GLenum pname, GLfloat param) +void _gamma_Materialf(GLenum face, GLenum pname, GLfloat param) { DEBUG_GLCMDS(("Materialf: %04x %04x %f\n", (int)face, (int)pname, param)); } -void glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) +void _gamma_Materialfv(GLenum face, GLenum pname, const GLfloat *params) { DEBUG_GLCMDS(("Materialfv: %04x %04x %f\n", (int)face, (int)pname, *params)); } -void glMateriali(GLenum face, GLenum pname, GLint param) +void _gamma_Materiali(GLenum face, GLenum pname, GLint param) { DEBUG_GLCMDS(("Materiali: %04x %04x %d\n", (int)face, (int)pname, (int)param)); } -void glMaterialiv(GLenum face, GLenum pname, const GLint *params) +void _gamma_Materialiv(GLenum face, GLenum pname, const GLint *params) { DEBUG_GLCMDS(("Materialiv: %04x %04x %d\n", (int)face, (int)pname, (int)*params)); } -void glMatrixMode(GLenum mode) +void _gamma_MatrixMode(GLenum mode) { DEBUG_GLCMDS(("MatrixMode: %04x\n", (int)mode)); @@ -1852,7 +1851,7 @@ } -void glMultMatrixd(const GLdouble *m) +void _gamma_MultMatrixd(const GLdouble *m) { GLfloat f[16]; int i; @@ -1864,7 +1863,7 @@ gammaLoadHWMatrix(); } -void glMultMatrixf(const GLfloat *m) +void _gamma_MultMatrixf(const GLfloat *m) { DEBUG_GLCMDS(("MatrixMultf\n")); @@ -1872,67 +1871,67 @@ gammaLoadHWMatrix(); } -void glNewList(GLuint list, GLenum mode) +void _gamma_NewList(GLuint list, GLenum mode) { DEBUG_GLCMDS(("NewList: %d %04x\n", (unsigned int)list, (int)mode)); } -void glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz) +void _gamma_Normal3b(GLbyte nx, GLbyte ny, GLbyte nz) { DEBUG_GLCMDS(("Normal3b: %d %d %d\n", nx, ny, nz)); } -void glNormal3bv(const GLbyte *v) +void _gamma_Normal3bv(const GLbyte *v) { DEBUG_GLCMDS(("Normal3bv: %d %d %d\n", v[0], v[1], v[2])); } -void glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz) +void _gamma_Normal3d(GLdouble nx, GLdouble ny, GLdouble nz) { DEBUG_GLCMDS(("Normal3d: %f %f %f\n", nx, ny, nz)); } -void glNormal3dv(const GLdouble *v) +void _gamma_Normal3dv(const GLdouble *v) { DEBUG_GLCMDS(("Normal3dv: %f %f %f\n", v[0], v[1], v[2])); } -void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) +void _gamma_Normal3f(GLfloat nx, GLfloat ny, GLfloat nz) { DEBUG_GLCMDS(("Normal3f: %f %f %f\n", nx, ny, nz)); } -void glNormal3fv(const GLfloat *v) +void _gamma_Normal3fv(const GLfloat *v) { DEBUG_GLCMDS(("Normal3fv: %f %f %f\n", v[0], v[1], v[2])); } -void glNormal3i(GLint nx, GLint ny, GLint nz) +void _gamma_Normal3i(GLint nx, GLint ny, GLint nz) { DEBUG_GLCMDS(("Normal3i: %d %d %d\n", (int)nx, (int)ny, (int)nz)); } -void glNormal3iv(const GLint *v) +void _gamma_Normal3iv(const GLint *v) { DEBUG_GLCMDS(("Normal3iv: %d %d %d\n", (int)v[0], (int)v[1], (int)v[2])); } -void glNormal3s(GLshort nx, GLshort ny, GLshort nz) +void _gamma_Normal3s(GLshort nx, GLshort ny, GLshort nz) { DEBUG_GLCMDS(("Normal3s: %d %d %d\n", nx, ny, nz)); } -void glNormal3sv(const GLshort *v) +void _gamma_Normal3sv(const GLshort *v) { DEBUG_GLCMDS(("Normal3sv: %d %d %d\n", v[0], v[1], v[2])); } -void glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +void _gamma_NormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) { DEBUG_GLCMDS(("NormalPointer: %04x %d\n", (int)type, (int)stride)); } -void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +void _gamma_Ortho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) { #define ORTHO_X() ((GLfloat)( 2.0/(right-left))) #define ORTHO_Y() ((GLfloat)( 2.0/(top-bottom))) @@ -1962,52 +1961,52 @@ gammaLoadHWMatrix(); } -void glPassThrough(GLfloat token) +void _gamma_PassThrough(GLfloat token) { DEBUG_GLCMDS(("PassThrough: %f\n", token)); } -void glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values) +void _gamma_PixelMapfv(GLenum map, GLint mapsize, const GLfloat *values) { DEBUG_GLCMDS(("PixelMapfv: %04x %d\n", (int)map, (int)mapsize)); } -void glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values) +void _gamma_PixelMapuiv(GLenum map, GLint mapsize, const GLuint *values) { DEBUG_GLCMDS(("PixelMapiv: %04x %d\n", (int)map, (int)mapsize)); } -void glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values) +void _gamma_PixelMapusv(GLenum map, GLint mapsize, const GLushort *values) { DEBUG_GLCMDS(("PixelMapusv: %04x %d\n", (int)map, (int)mapsize)); } -void glPixelStoref(GLenum pname, GLfloat param) +void _gamma_PixelStoref(GLenum pname, GLfloat param) { DEBUG_GLCMDS(("PixelStoref: %04x %f\n", (int)pname, param)); } -void glPixelStorei(GLenum pname, GLint param) +void _gamma_PixelStorei(GLenum pname, GLint param) { DEBUG_GLCMDS(("PixelStorei: %04x %d\n", (int)pname, (int)param)); } -void glPixelTransferf(GLenum pname, GLfloat param) +void _gamma_PixelTransferf(GLenum pname, GLfloat param) { DEBUG_GLCMDS(("PixelTransferf: %04x %f\n", (int)pname, param)); } -void glPixelTransferi(GLenum pname, GLint param) +void _gamma_PixelTransferi(GLenum pname, GLint param) { DEBUG_GLCMDS(("PixelTransferi: %04x %d\n", (int)pname, (int)param)); } -void glPixelZoom(GLfloat xfactor, GLfloat yfactor) +void _gamma_PixelZoom(GLfloat xfactor, GLfloat yfactor) { DEBUG_GLCMDS(("PixelZoom: %f %f\n", xfactor, yfactor)); } -void glPointSize(GLfloat size) +void _gamma_PointSize(GLfloat size) { unsigned char s = size; @@ -2018,32 +2017,32 @@ WRITE(gCCPriv->buf, PointSize, s); } -void glPolygonMode(GLenum face, GLenum mode) +void _gamma_PolygonMode(GLenum face, GLenum mode) { DEBUG_GLCMDS(("PolygonMode: %04x %04x\n", (int)face, (int)mode)); } -void glPolygonOffset(GLfloat factor, GLfloat units) +void _gamma_PolygonOffset(GLfloat factor, GLfloat units) { DEBUG_GLCMDS(("PolygonOffset: %f %f\n", factor, units)); } -void glPolygonStipple(const GLubyte *mask) +void _gamma_PolygonStipple(const GLubyte *mask) { DEBUG_GLCMDS(("PolygonStipple: \n")); } -void glPopAttrib(void) +void _gamma_PopAttrib(void) { DEBUG_GLCMDS(("PopAttrib\n")); } -void glPopClientAttrib(void) +void _gamma_PopClientAttrib(void) { DEBUG_GLCMDS(("PopClientAttrib\n")); } -void glPopMatrix(void) +void _gamma_PopMatrix(void) { DEBUG_GLCMDS(("PopMatrix: %04x\n", gCCPriv->MatrixMode)); @@ -2087,27 +2086,27 @@ } } -void glPopName(void) +void _gamma_PopName(void) { DEBUG_GLCMDS(("PopName\n")); } -void glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLclampf *priorities) +void _gamma_PrioritizeTextures(GLsizei n, const GLuint *textures, const GLclampf *priorities) { DEBUG_GLCMDS(("PrioritizeTextures: %d\n", (int)n)); } -void glPushAttrib(GLbitfield mask) +void _gamma_PushAttrib(GLbitfield mask) { DEBUG_GLCMDS(("PushAttrib: %04x\n", (int)mask)); } -void glPushClientAttrib(GLuint mask) +void _gamma_PushClientAttrib(GLuint mask) { DEBUG_GLCMDS(("PushClientAttrib: %04x\n", (unsigned int)mask)); } -void glPushMatrix(void) +void _gamma_PushMatrix(void) { DEBUG_GLCMDS(("PushMatrix: %04x\n", gCCPriv->MatrixMode)); @@ -2148,167 +2147,167 @@ } } -void glPushName(GLuint name) +void _gamma_PushName(GLuint name) { DEBUG_GLCMDS(("PushName: %d\n", (int)name)); } -void glRasterPos2d(GLdouble x, GLdouble y) +void _gamma_RasterPos2d(GLdouble x, GLdouble y) { } -void glRasterPos2dv(const GLdouble *v) +void _gamma_RasterPos2dv(const GLdouble *v) { } -void glRasterPos2f(GLfloat x, GLfloat y) +void _gamma_RasterPos2f(GLfloat x, GLfloat y) { } -void glRasterPos2fv(const GLfloat *v) +void _gamma_RasterPos2fv(const GLfloat *v) { } -void glRasterPos2i(GLint x, GLint y) +void _gamma_RasterPos2i(GLint x, GLint y) { } -void glRasterPos2iv(const GLint *v) +void _gamma_RasterPos2iv(const GLint *v) { } -void glRasterPos2s(GLshort x, GLshort y) +void _gamma_RasterPos2s(GLshort x, GLshort y) { } -void glRasterPos2sv(const GLshort *v) +void _gamma_RasterPos2sv(const GLshort *v) { } -void glRasterPos3d(GLdouble x, GLdouble y, GLdouble z) +void _gamma_RasterPos3d(GLdouble x, GLdouble y, GLdouble z) { } -void glRasterPos3dv(const GLdouble *v) +void _gamma_RasterPos3dv(const GLdouble *v) { } -void glRasterPos3f(GLfloat x, GLfloat y, GLfloat z) +void _gamma_RasterPos3f(GLfloat x, GLfloat y, GLfloat z) { } -void glRasterPos3fv(const GLfloat *v) +void _gamma_RasterPos3fv(const GLfloat *v) { } -void glRasterPos3i(GLint x, GLint y, GLint z) +void _gamma_RasterPos3i(GLint x, GLint y, GLint z) { } -void glRasterPos3iv(const GLint *v) +void _gamma_RasterPos3iv(const GLint *v) { } -void glRasterPos3s(GLshort x, GLshort y, GLshort z) +void _gamma_RasterPos3s(GLshort x, GLshort y, GLshort z) { } -void glRasterPos3sv(const GLshort *v) +void _gamma_RasterPos3sv(const GLshort *v) { } -void glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +void _gamma_RasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) { } -void glRasterPos4dv(const GLdouble *v) +void _gamma_RasterPos4dv(const GLdouble *v) { } -void glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +void _gamma_RasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) { } -void glRasterPos4fv(const GLfloat *v) +void _gamma_RasterPos4fv(const GLfloat *v) { } -void glRasterPos4i(GLint x, GLint y, GLint z, GLint w) +void _gamma_RasterPos4i(GLint x, GLint y, GLint z, GLint w) { } -void glRasterPos4iv(const GLint *v) +void _gamma_RasterPos4iv(const GLint *v) { } -void glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w) +void _gamma_RasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w) { } -void glRasterPos4sv(const GLshort *v) +void _gamma_RasterPos4sv(const GLshort *v) { } -void glReadBuffer(GLenum mode) +void _gamma_ReadBuffer(GLenum mode) { DEBUG_GLCMDS(("ReadBuffer: %04x\n", (int)mode)); } -void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels) +void _gamma_ReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels) { DEBUG_GLCMDS(("ReadPixels: %d %d %d %d %04x %04x\n", (int)x, (int)y, (int)width, (int)height, (int)format, (int)type)); } -void glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) +void _gamma_Rectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) { DEBUG_GLCMDS(("Rectd: %f %f %f %f\n", x1, y1, x2, y2)); } -void glRectdv(const GLdouble *v1, const GLdouble *v2) +void _gamma_Rectdv(const GLdouble *v1, const GLdouble *v2) { DEBUG_GLCMDS(("Rectdv: %f %f %f %f\n", v1[0], v1[1], v2[0], v2[1])); } -void glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) +void _gamma_Rectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) { DEBUG_GLCMDS(("Rectf: %f %f %f %f\n", x1, y1, x2, y2)); } -void glRectfv(const GLfloat *v1, const GLfloat *v2) +void _gamma_Rectfv(const GLfloat *v1, const GLfloat *v2) { DEBUG_GLCMDS(("Rectfv: %f %f %f %f\n", v1[0], v1[1], v2[0], v2[1])); } -void glRecti(GLint x1, GLint y1, GLint x2, GLint y2) +void _gamma_Recti(GLint x1, GLint y1, GLint x2, GLint y2) { DEBUG_GLCMDS(("Recti: %d %d %d %d\n", (int)x1, (int)y1, (int)x2, (int)y2)); } -void glRectiv(const GLint *v1, const GLint *v2) +void _gamma_Rectiv(const GLint *v1, const GLint *v2) { DEBUG_GLCMDS(("Rectiv: %d %d %d %d\n", (int)v1[0], (int)v1[1], (int)v2[0], (int)v2[1])); } -void glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) +void _gamma_Rects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) { DEBUG_GLCMDS(("Rects: %d %d %d %d\n", x1, y1, x2, y2)); } -void glRectsv(const GLshort *v1, const GLshort *v2) +void _gamma_Rectsv(const GLshort *v1, const GLshort *v2) { DEBUG_GLCMDS(("Rectsv: %d %d %d %d\n", v1[0], v1[1], v2[0], v2[1])); } -GLint glRenderMode(GLenum mode) +GLint _gamma_RenderMode(GLenum mode) { DEBUG_GLCMDS(("RenderMode: %04x\n", (int)mode)); return GL_TRUE; } -void glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) +void _gamma_Rotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) { GLfloat m[16]; GLfloat l, c, s; @@ -2345,7 +2344,7 @@ gammaLoadHWMatrix(); } -void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) +void _gamma_Rotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) { GLfloat m[16]; GLfloat l, c, s; @@ -2382,7 +2381,7 @@ gammaLoadHWMatrix(); } -void glScaled(GLdouble x, GLdouble y, GLdouble z) +void _gamma_Scaled(GLdouble x, GLdouble y, GLdouble z) { GLfloat m[16]; int i; @@ -2400,7 +2399,7 @@ gammaLoadHWMatrix(); } -void glScalef(GLfloat x, GLfloat y, GLfloat z) +void _gamma_Scalef(GLfloat x, GLfloat y, GLfloat z) { GLfloat m[16]; int i; @@ -2418,18 +2417,18 @@ gammaLoadHWMatrix(); } -void glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +void _gamma_Scissor(GLint x, GLint y, GLsizei width, GLsizei height) { DEBUG_GLCMDS(("Scissor: %d %d %d %d\n", (int)x, (int)y, (int)width, (int)height)); } -void glSelectBuffer(GLsizei numnames, GLuint *buffer) +void _gamma_SelectBuffer(GLsizei numnames, GLuint *buffer) { DEBUG_GLCMDS(("SelectBuffer: %d\n", (int)numnames)); } -void glShadeModel(GLenum mode) +void _gamma_ShadeModel(GLenum mode) { DEBUG_GLCMDS(("ShadeModel: %04x\n", (int)mode)); @@ -2455,74 +2454,74 @@ WRITE(gCCPriv->buf, ColorDDAMode, gCCPriv->ColorDDAMode); } -void glStencilFunc(GLenum func, GLint ref, GLuint mask) +void _gamma_StencilFunc(GLenum func, GLint ref, GLuint mask) { DEBUG_GLCMDS(("StencilFunc: %04x %d %d\n", (int)func, (int)ref, (unsigned int)mask)); } -void glStencilMask(GLuint mask) +void _gamma_StencilMask(GLuint mask) { DEBUG_GLCMDS(("StencilMask: %d\n", (unsigned int)mask)); } -void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +void _gamma_StencilOp(GLenum fail, GLenum zfail, GLenum zpass) { DEBUG_GLCMDS(("StencilOp: %04x %04x %04x\n", (int)fail, (int)zfail, (int)zpass)); } -void glTexCoord1d(GLdouble s) +void _gamma_TexCoord1d(GLdouble s) { DEBUG_GLCMDS(("TexCoord1d: %f\n", s)); } -void glTexCoord1dv(const GLdouble *v) +void _gamma_TexCoord1dv(const GLdouble *v) { DEBUG_GLCMDS(("TexCoord1dv: %f\n", *v)); } -void glTexCoord1f(GLfloat s) +void _gamma_TexCoord1f(GLfloat s) { DEBUG_GLCMDS(("TexCoord1f: %f\n", s)); } -void glTexCoord1fv(const GLfloat *v) +void _gamma_TexCoord1fv(const GLfloat *v) { DEBUG_GLCMDS(("TexCoord1fv: %f\n", *v)); } -void glTexCoord1i(GLint s) +void _gamma_TexCoord1i(GLint s) { DEBUG_GLCMDS(("TexCoord1i: %d\n", (int)s)); } -void glTexCoord1iv(const GLint *v) +void _gamma_TexCoord1iv(const GLint *v) { DEBUG_GLCMDS(("TexCoord1iv: %d\n", (int)*v)); } -void glTexCoord1s(GLshort s) +void _gamma_TexCoord1s(GLshort s) { DEBUG_GLCMDS(("TexCoord1s: %d\n", s)); } -void glTexCoord1sv(const GLshort *v) +void _gamma_TexCoord1sv(const GLshort *v) { DEBUG_GLCMDS(("TexCoord1sv: %d\n", *v)); } -void glTexCoord2d(GLdouble s, GLdouble t) +void _gamma_TexCoord2d(GLdouble s, GLdouble t) { DEBUG_GLCMDS(("TexCoord2d: %f %f\n", s, t)); } -void glTexCoord2dv(const GLdouble *v) +void _gamma_TexCoord2dv(const GLdouble *v) { DEBUG_GLCMDS(("TexCoord2dv: %f %f\n", v[0], v[1])); } -void glTexCoord2f(GLfloat s, GLfloat t) +void _gamma_TexCoord2f(GLfloat s, GLfloat t) { DEBUG_GLCMDS(("TexCoord2f: %f %f\n", s, t)); @@ -2531,119 +2530,119 @@ WRITEF(gCCPriv->buf, Ts2, s); } -void glTexCoord2fv(const GLfloat *v) +void _gamma_TexCoord2fv(const GLfloat *v) { DEBUG_GLCMDS(("TexCoord2fv: %f %f\n", v[0], v[1])); } -void glTexCoord2i(GLint s, GLint t) +void _gamma_TexCoord2i(GLint s, GLint t) { DEBUG_GLCMDS(("TexCoord2i: %d %d\n", (int)s, (int)t)); } -void glTexCoord2iv(const GLint *v) +void _gamma_TexCoord2iv(const GLint *v) { DEBUG_GLCMDS(("TexCoord2iv: %d %d\n", (int)v[0], (int)v[1])); } -void glTexCoord2s(GLshort s, GLshort t) +void _gamma_TexCoord2s(GLshort s, GLshort t) { DEBUG_GLCMDS(("TexCoord2s: %d %d\n", s, t)); } -void glTexCoord2sv(const GLshort *v) +void _gamma_TexCoord2sv(const GLshort *v) { DEBUG_GLCMDS(("TexCoord2sv: %d %d\n", v[0], v[1])); } -void glTexCoord3d(GLdouble s, GLdouble t, GLdouble r) +void _gamma_TexCoord3d(GLdouble s, GLdouble t, GLdouble r) { DEBUG_GLCMDS(("TexCoord3d: %f %f %f\n", s, t, r)); } -void glTexCoord3dv(const GLdouble *v) +void _gamma_TexCoord3dv(const GLdouble *v) { DEBUG_GLCMDS(("TexCoord3dv: %f %f %f\n", v[0], v[1], v[2])); } -void glTexCoord3f(GLfloat s, GLfloat t, GLfloat r) +void _gamma_TexCoord3f(GLfloat s, GLfloat t, GLfloat r) { DEBUG_GLCMDS(("TexCoord3f: %f %f %f\n", s, t, r)); } -void glTexCoord3fv(const GLfloat *v) +void _gamma_TexCoord3fv(const GLfloat *v) { DEBUG_GLCMDS(("TexCoord3fv: %f %f %f\n", v[0], v[1], v[2])); } -void glTexCoord3i(GLint s, GLint t, GLint r) +void _gamma_TexCoord3i(GLint s, GLint t, GLint r) { DEBUG_GLCMDS(("TexCoord3i: %d %d %d\n", (int)s, (int)t, (int)r)); } -void glTexCoord3iv(const GLint *v) +void _gamma_TexCoord3iv(const GLint *v) { DEBUG_GLCMDS(("TexCoord3iv: %d %d %d\n", (int)v[0], (int)v[1], (int)v[2])); } -void glTexCoord3s(GLshort s, GLshort t, GLshort r) +void _gamma_TexCoord3s(GLshort s, GLshort t, GLshort r) { DEBUG_GLCMDS(("TexCoord3s: %d %d %d\n", s, t, r)); } -void glTexCoord3sv(const GLshort *v) +void _gamma_TexCoord3sv(const GLshort *v) { DEBUG_GLCMDS(("TexCoord3sv: %d %d %d\n", v[0], v[1], v[2])); } -void glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q) +void _gamma_TexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q) { DEBUG_GLCMDS(("TexCoord4d: %f %f %f %f\n", s, t, r, q)); } -void glTexCoord4dv(const GLdouble *v) +void _gamma_TexCoord4dv(const GLdouble *v) { DEBUG_GLCMDS(("TexCoord4dv: %f %f %f %f\n", v[0], v[1], v[2], v[3])); } -void glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) +void _gamma_TexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) { DEBUG_GLCMDS(("TexCoord4f: %f %f %f %f\n", s, t, r, q)); } -void glTexCoord4fv(const GLfloat *v) +void _gamma_TexCoord4fv(const GLfloat *v) { DEBUG_GLCMDS(("TexCoord4fv: %f %f %f %f\n", v[0], v[1], v[2], v[3])); } -void glTexCoord4i(GLint s, GLint t, GLint r, GLint q) +void _gamma_TexCoord4i(GLint s, GLint t, GLint r, GLint q) { DEBUG_GLCMDS(("TexCoord4i: %d %d %d %d\n", (int)s, (int)t, (int)r, (int)q)); } -void glTexCoord4iv(const GLint *v) +void _gamma_TexCoord4iv(const GLint *v) { DEBUG_GLCMDS(("TexCoord4iv: %d %d %d %d\n", (int)v[0], (int)v[1], (int)v[2], (int)v[3])); } -void glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q) +void _gamma_TexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q) { DEBUG_GLCMDS(("TexCoord4s: %d %d %d %d\n", s, t, r, q)); } -void glTexCoord4sv(const GLshort *v) +void _gamma_TexCoord4sv(const GLshort *v) { DEBUG_GLCMDS(("TexCoord4sv: %d %d %d %d\n", v[0], v[1], v[2], v[3])); } -void glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +void _gamma_TexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) { DEBUG_GLCMDS(("TexCoordPointer: %d %04x %d\n", (int)size, (int)type, (int)stride)); } -void glTexEnvf(GLenum target, GLenum pname, GLfloat param) +void _gamma_TexEnvf(GLenum target, GLenum pname, GLfloat param) { DEBUG_GLCMDS(("TexEnvf: %04x %04x %f\n", (int)target, (int)pname, param)); @@ -2675,64 +2674,64 @@ gCCPriv->curTexObj->TextureColorMode); } -void glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) +void _gamma_TexEnvfv(GLenum target, GLenum pname, const GLfloat *params) { DEBUG_GLCMDS(("TexEnvfv: %04x %04x %f\n", (int)target, (int)pname, *params)); } -void glTexEnvi(GLenum target, GLenum pname, GLint param) +void _gamma_TexEnvi(GLenum target, GLenum pname, GLint param) { DEBUG_GLCMDS(("TexEnvi: %04x %04x %d\n", (int)target, (int)pname, (int)param)); } -void glTexEnviv(GLenum target, GLenum pname, const GLint *params) +void _gamma_TexEnviv(GLenum target, GLenum pname, const GLint *params) { DEBUG_GLCMDS(("TexEnviv: %04x %04x %d\n", (int)target, (int)pname, (int)*params)); } -void glTexGend(GLenum coord, GLenum pname, GLdouble param) +void _gamma_TexGend(GLenum coord, GLenum pname, GLdouble param) { DEBUG_GLCMDS(("TexGend: %04x %04x %f\n", (int)coord, (int)pname, param)); } -void glTexGendv(GLenum coord, GLenum pname, const GLdouble *params) +void _gamma_TexGendv(GLenum coord, GLenum pname, const GLdouble *params) { DEBUG_GLCMDS(("TexGendv: %04x %04x %f\n", (int)coord, (int)pname, *params)); } -void glTexGenf(GLenum coord, GLenum pname, GLfloat param) +void _gamma_TexGenf(GLenum coord, GLenum pname, GLfloat param) { DEBUG_GLCMDS(("TexGenf: %04x %04x %f\n", (int)coord, (int)pname, param)); } -void glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params) +void _gamma_TexGenfv(GLenum coord, GLenum pname, const GLfloat *params) { DEBUG_GLCMDS(("TexGenfv: %04x %04x %f\n", (int)coord, (int)pname, *params)); } -void glTexGeni(GLenum coord, GLenum pname, GLint param) +void _gamma_TexGeni(GLenum coord, GLenum pname, GLint param) { DEBUG_GLCMDS(("TexGeni: %04x %04x %d\n", (int)coord, (int)pname, (int)param)); } -void glTexGeniv(GLenum coord, GLenum pname, const GLint *params) +void _gamma_TexGeniv(GLenum coord, GLenum pname, const GLint *params) { DEBUG_GLCMDS(("TexGeniv: %04x %04x %d\n", (int)coord, (int)pname, (int)*params)); } -void glTexImage1D(GLenum target, GLint level, GLint components, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *image) +void _gamma_TexImage1D(GLenum target, GLint level, GLint components, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *image) { DEBUG_GLCMDS(("TexImage1D: %04x %d %d %d %d %04x %04x\n", (int)target, (int)level, (int)components, (int)width, (int)border, (int)format, (int)type)); } -void glTexImage2D(GLenum target, GLint level, GLint components, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *image) +void _gamma_TexImage2D(GLenum target, GLint level, GLint components, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *image) { unsigned long addrs[MIPMAP_LEVELS]; int l2w, l2h, l2d; @@ -2884,7 +2883,7 @@ } } -void glTexParameterf(GLenum target, GLenum pname, GLfloat param) +void _gamma_TexParameterf(GLenum target, GLenum pname, GLfloat param) { DEBUG_GLCMDS(("TexParameterf: %04x %04x %f\n", (int)target, (int)pname, param)); @@ -3007,32 +3006,32 @@ } } -void glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +void _gamma_TexParameterfv(GLenum target, GLenum pname, const GLfloat *params) { DEBUG_GLCMDS(("TexParameterfv: %04x %04x %f\n", (int)target, (int)pname, *params)); } -void glTexParameteri(GLenum target, GLenum pname, GLint param) +void _gamma_TexParameteri(GLenum target, GLenum pname, GLint param) { DEBUG_GLCMDS(("TexParameteri: %04x %04x %d\n", (int)target, (int)pname, (int)param)); } -void glTexParameteriv(GLenum target, GLenum pname, const GLint *params) +void _gamma_TexParameteriv(GLenum target, GLenum pname, const GLint *params) { DEBUG_GLCMDS(("TexParameteriv: %04x %04x %d\n", (int)target, (int)pname, (int)*params)); } -void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *image) +void _gamma_TexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *image) { DEBUG_GLCMDS(("TexSubImage1D: %04x %d %d %d %04x %04x\n", (int)target, (int)level, (int)xoffset, (int)width, (int)format, (int)type)); } -void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image) +void _gamma_TexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image) { DEBUG_GLCMDS(("TexSubImage2D: %04x %d %d %d %d %d %04x %04x\n", (int)target, (int)level, @@ -3064,7 +3063,7 @@ } } -void glTranslated(GLdouble x, GLdouble y, GLdouble z) +void _gamma_Translated(GLdouble x, GLdouble y, GLdouble z) { GLfloat m[16]; int i; @@ -3085,7 +3084,7 @@ gammaLoadHWMatrix(); } -void glTranslatef(GLfloat x, GLfloat y, GLfloat z) +void _gamma_Translatef(GLfloat x, GLfloat y, GLfloat z) { GLfloat m[16]; int i; @@ -3106,17 +3105,17 @@ gammaLoadHWMatrix(); } -void glVertex2d(GLdouble x, GLdouble y) +void _gamma_Vertex2d(GLdouble x, GLdouble y) { DEBUG_GLCMDS(("Vertex2d: %f %f\n", x, y)); } -void glVertex2dv(const GLdouble *v) +void _gamma_Vertex2dv(const GLdouble *v) { DEBUG_GLCMDS(("Vertex2dv: %f %f\n", v[0], v[1])); } -void glVertex2f(GLfloat x, GLfloat y) +void _gamma_Vertex2f(GLfloat x, GLfloat y) { DEBUG_GLCMDS(("Vertex2f: %f %f\n", x, y)); @@ -3134,42 +3133,42 @@ WRITEF(gCCPriv->buf, Vx2, x); } -void glVertex2fv(const GLfloat *v) +void _gamma_Vertex2fv(const GLfloat *v) { DEBUG_GLCMDS(("Vertex2fv: %f %f\n", v[0], v[1])); } -void glVertex2i(GLint x, GLint y) +void _gamma_Vertex2i(GLint x, GLint y) { DEBUG_GLCMDS(("Vertex2i: %d %d\n", (int)x, (int)y)); } -void glVertex2iv(const GLint *v) +void _gamma_Vertex2iv(const GLint *v) { DEBUG_GLCMDS(("Vertex2iv: %d %d\n", (int)v[0], (int)v[1])); } -void glVertex2s(GLshort x, GLshort y) +void _gamma_Vertex2s(GLshort x, GLshort y) { DEBUG_GLCMDS(("Vertex2s: %d %d\n", x, y)); } -void glVertex2sv(const GLshort *v) +void _gamma_Vertex2sv(const GLshort *v) { DEBUG_GLCMDS(("Vertex2sv: %d %d\n", v[0], v[1])); } -void glVertex3d(GLdouble x, GLdouble y, GLdouble z) +void _gamma_Vertex3d(GLdouble x, GLdouble y, GLdouble z) { DEBUG_GLCMDS(("Vertex3d: %f %f %f\n", x, y, z)); } -void glVertex3dv(const GLdouble *v) +void _gamma_Vertex3dv(const GLdouble *v) { DEBUG_GLCMDS(("Vertex2fv: %f %f %f\n", v[0], v[1], v[2])); } -void glVertex3f(GLfloat x, GLfloat y, GLfloat z) +void _gamma_Vertex3f(GLfloat x, GLfloat y, GLfloat z) { DEBUG_GLCMDS(("Vertex3f: %f %f %f\n", x, y, z)); @@ -3188,7 +3187,7 @@ WRITEF(gCCPriv->buf, Vx3, x); } -void glVertex3fv(const GLfloat *v) +void _gamma_Vertex3fv(const GLfloat *v) { DEBUG_GLCMDS(("Vertex3fv: %f %f %f\n", v[0], v[1], v[2])); @@ -3207,74 +3206,74 @@ WRITEF(gCCPriv->buf, Vx3, v[0]); } -void glVertex3i(GLint x, GLint y, GLint z) +void _gamma_Vertex3i(GLint x, GLint y, GLint z) { DEBUG_GLCMDS(("Vertex3i: %d %d %d\n", (int)x, (int)y, (int)z)); } -void glVertex3iv(const GLint *v) +void _gamma_Vertex3iv(const GLint *v) { DEBUG_GLCMDS(("Vertex3iv: %d %d %d\n", (int)v[0], (int)v[1], (int)v[2])); } -void glVertex3s(GLshort x, GLshort y, GLshort z) +void _gamma_Vertex3s(GLshort x, GLshort y, GLshort z) { DEBUG_GLCMDS(("Vertex3s: %d %d %d\n", x, y, z)); } -void glVertex3sv(const GLshort *v) +void _gamma_Vertex3sv(const GLshort *v) { DEBUG_GLCMDS(("Vertex3sv: %d %d %d\n", v[0], v[1], v[2])); } -void glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +void _gamma_Vertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) { DEBUG_GLCMDS(("Vertex4d: %f %f %f %f\n", x, y, z, w)); } -void glVertex4dv(const GLdouble *v) +void _gamma_Vertex4dv(const GLdouble *v) { DEBUG_GLCMDS(("Vertex4dv: %f %f %f %f\n", v[0], v[1], v[2], v[3])); } -void glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +void _gamma_Vertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) { DEBUG_GLCMDS(("Vertex4f: %f %f %f %f\n", x, y, z, w)); } -void glVertex4fv(const GLfloat *v) +void _gamma_Vertex4fv(const GLfloat *v) { DEBUG_GLCMDS(("Vertex4fv: %f %f %f %f\n", v[0], v[1], v[2], v[3])); } -void glVertex4i(GLint x, GLint y, GLint z, GLint w) +void _gamma_Vertex4i(GLint x, GLint y, GLint z, GLint w) { DEBUG_GLCMDS(("Vertex4i: %d %d %d %d\n", (int)x, (int)y, (int)z, (int)w)); } -void glVertex4iv(const GLint *v) +void _gamma_Vertex4iv(const GLint *v) { DEBUG_GLCMDS(("Vertex4iv: %d %d %d %d\n", (int)v[0], (int)v[1], (int)v[2], (int)v[3])); } -void glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w) +void _gamma_Vertex4s(GLshort x, GLshort y, GLshort z, GLshort w) { DEBUG_GLCMDS(("Vertex4s: %d %d %d %d\n", x, y, z, w)); } -void glVertex4sv(const GLshort *v) +void _gamma_Vertex4sv(const GLshort *v) { DEBUG_GLCMDS(("Vertex4sv: %d %d %d %d\n", v[0], v[1], v[2], v[3])); } -void glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +void _gamma_VertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) { DEBUG_GLCMDS(("VertexPointer: %d %04x %d\n", (int)size, (int)type, (int)stride)); } -void glViewport(GLint x, GLint y, GLsizei width, GLsizei height) +void _gamma_Viewport(GLint x, GLint y, GLsizei width, GLsizei height) { GLfloat sx, sy, ox, oy; @@ -3302,5 +3301,378 @@ WRITEF(gCCPriv->buf, ViewPortScaleX, sx); WRITEF(gCCPriv->buf, ViewPortScaleY, sy); } + + +static GLint +generic_noop(void) +{ + return 0; +} + + +static void +init_no_op_table(struct _glapi_table *table) +{ + /* Check to be sure the dispatcher's table is at least as big as Mesa's. */ + const GLuint size = sizeof(struct _glapi_table) / sizeof(void *); + assert(_glapi_get_dispatch_table_size() >= size); + + { + const GLuint n = _glapi_get_dispatch_table_size(); + GLuint i; + void **dispatch = (void **) table; + for (i = 0; i < n; i++) { + dispatch[i] = (void *) generic_noop; + } + } +} + + +void +_gamma_init_dispatch(struct _glapi_table *dispatch) +{ + init_no_op_table(dispatch); + + /* 1.0 */ + dispatch->Accum = _gamma_Accum; + dispatch->AlphaFunc = _gamma_AlphaFunc; + dispatch->Begin = _gamma_Begin; + dispatch->Bitmap = _gamma_Bitmap; + dispatch->BlendFunc = _gamma_BlendFunc; + dispatch->CallList = _gamma_CallList; + dispatch->CallLists = _gamma_CallLists; + dispatch->Clear = _gamma_Clear; + dispatch->ClearAccum = _gamma_ClearAccum; + dispatch->ClearColor = _gamma_ClearColor; + dispatch->ClearDepth = _gamma_ClearDepth; + dispatch->ClearIndex = _gamma_ClearIndex; + dispatch->ClearStencil = _gamma_ClearStencil; + dispatch->ClipPlane = _gamma_ClipPlane; + dispatch->Color3b = _gamma_Color3b; + dispatch->Color3bv = _gamma_Color3bv; + dispatch->Color3d = _gamma_Color3d; + dispatch->Color3dv = _gamma_Color3dv; + dispatch->Color3f = _gamma_Color3f; + dispatch->Color3fv = _gamma_Color3fv; + dispatch->Color3i = _gamma_Color3i; + dispatch->Color3iv = _gamma_Color3iv; + dispatch->Color3s = _gamma_Color3s; + dispatch->Color3sv = _gamma_Color3sv; + dispatch->Color3ub = _gamma_Color3ub; + dispatch->Color3ubv = _gamma_Color3ubv; + dispatch->Color3ui = _gamma_Color3ui; + dispatch->Color3uiv = _gamma_Color3uiv; + dispatch->Color3us = _gamma_Color3us; + dispatch->Color3usv = _gamma_Color3usv; + dispatch->Color4b = _gamma_Color4b; + dispatch->Color4bv = _gamma_Color4bv; + dispatch->Color4d = _gamma_Color4d; + dispatch->Color4dv = _gamma_Color4dv; + dispatch->Color4f = _gamma_Color4f; + dispatch->Color4fv = _gamma_Color4fv; + dispatch->Color4i = _gamma_Color4i; + dispatch->Color4iv = _gamma_Color4iv; + dispatch->Color4s = _gamma_Color4s; + dispatch->Color4sv = _gamma_Color4sv; + dispatch->Color4ub = _gamma_Color4ub; + dispatch->Color4ubv = _gamma_Color4ubv; + dispatch->Color4ui = _gamma_Color4ui; + dispatch->Color4uiv = _gamma_Color4uiv; + dispatch->Color4us = _gamma_Color4us; + dispatch->Color4usv = _gamma_Color4usv; + dispatch->ColorMask = _gamma_ColorMask; + dispatch->ColorMaterial = _gamma_ColorMaterial; + dispatch->CopyPixels = _gamma_CopyPixels; + dispatch->CullFace = _gamma_CullFace; + dispatch->DeleteLists = _gamma_DeleteLists; + dispatch->DepthFunc = _gamma_DepthFunc; + dispatch->DepthMask = _gamma_DepthMask; + dispatch->DepthRange = _gamma_DepthRange; + dispatch->Disable = _gamma_Disable; + dispatch->DrawBuffer = _gamma_DrawBuffer; + dispatch->DrawPixels = _gamma_DrawPixels; + dispatch->EdgeFlag = _gamma_EdgeFlag; + dispatch->EdgeFlagv = _gamma_EdgeFlagv; + dispatch->Enable = _gamma_Enable; + dispatch->End = _gamma_End; + dispatch->EndList = _gamma_EndList; + dispatch->EvalCoord1d = _gamma_EvalCoord1d; + dispatch->EvalCoord1dv = _gamma_EvalCoord1dv; + dispatch->EvalCoord1f = _gamma_EvalCoord1f; + dispatch->EvalCoord1fv = _gamma_EvalCoord1fv; + dispatch->EvalCoord2d = _gamma_EvalCoord2d; + dispatch->EvalCoord2dv = _gamma_EvalCoord2dv; + dispatch->EvalCoord2f = _gamma_EvalCoord2f; + dispatch->EvalCoord2fv = _gamma_EvalCoord2fv; + dispatch->EvalMesh1 = _gamma_EvalMesh1; + dispatch->EvalMesh2 = _gamma_EvalMesh2; + dispatch->EvalPoint1 = _gamma_EvalPoint1; + dispatch->EvalPoint2 = _gamma_EvalPoint2; + dispatch->FeedbackBuffer = _gamma_FeedbackBuffer; + dispatch->Finish = _gamma_Finish; + dispatch->Flush = _gamma_Flush; + dispatch->Fogf = _gamma_Fogf; + dispatch->Fogfv = _gamma_Fogfv; + dispatch->Fogi = _gamma_Fogi; + dispatch->Fogiv = _gamma_Fogiv; + dispatch->FrontFace = _gamma_FrontFace; + dispatch->Frustum = _gamma_Frustum; + dispatch->GenLists = _gamma_GenLists; + dispatch->GetBooleanv = _gamma_GetBooleanv; + dispatch->GetClipPlane = _gamma_GetClipPlane; + dispatch->GetDoublev = _gamma_GetDoublev; + dispatch->GetError = _gamma_GetError; + dispatch->GetFloatv = _gamma_GetFloatv; + dispatch->GetIntegerv = _gamma_GetIntegerv; + dispatch->GetLightfv = _gamma_GetLightfv; + dispatch->GetLightiv = _gamma_GetLightiv; + dispatch->GetMapdv = _gamma_GetMapdv; + dispatch->GetMapfv = _gamma_GetMapfv; + dispatch->GetMapiv = _gamma_GetMapiv; + dispatch->GetMaterialfv = _gamma_GetMaterialfv; + dispatch->GetMaterialiv = _gamma_GetMaterialiv; + dispatch->GetPixelMapfv = _gamma_GetPixelMapfv; + dispatch->GetPixelMapuiv = _gamma_GetPixelMapuiv; + dispatch->GetPixelMapusv = _gamma_GetPixelMapusv; + dispatch->GetPolygonStipple = _gamma_GetPolygonStipple; + dispatch->GetString = _gamma_GetString; + dispatch->GetTexEnvfv = _gamma_GetTexEnvfv; + dispatch->GetTexEnviv = _gamma_GetTexEnviv; + dispatch->GetTexGendv = _gamma_GetTexGendv; + dispatch->GetTexGenfv = _gamma_GetTexGenfv; + dispatch->GetTexGeniv = _gamma_GetTexGeniv; + dispatch->GetTexImage = _gamma_GetTexImage; + dispatch->GetTexLevelParameterfv = _gamma_GetTexLevelParameterfv; + dispatch->GetTexLevelParameteriv = _gamma_GetTexLevelParameteriv; + dispatch->GetTexParameterfv = _gamma_GetTexParameterfv; + dispatch->GetTexParameteriv = _gamma_GetTexParameteriv; + dispatch->Hint = _gamma_Hint; + dispatch->IndexMask = _gamma_IndexMask; + dispatch->Indexd = _gamma_Indexd; + dispatch->Indexdv = _gamma_Indexdv; + dispatch->Indexf = _gamma_Indexf; + dispatch->Indexfv = _gamma_Indexfv; + dispatch->Indexi = _gamma_Indexi; + dispatch->Indexiv = _gamma_Indexiv; + dispatch->Indexs = _gamma_Indexs; + dispatch->Indexsv = _gamma_Indexsv; + dispatch->InitNames = _gamma_InitNames; + dispatch->IsEnabled = _gamma_IsEnabled; + dispatch->IsList = _gamma_IsList; + dispatch->LightModelf = _gamma_LightModelf; + dispatch->LightModelfv = _gamma_LightModelfv; + dispatch->LightModeli = _gamma_LightModeli; + dispatch->LightModeliv = _gamma_LightModeliv; + dispatch->Lightf = _gamma_Lightf; + dispatch->Lightfv = _gamma_Lightfv; + dispatch->Lighti = _gamma_Lighti; + dispatch->Lightiv = _gamma_Lightiv; + dispatch->LineStipple = _gamma_LineStipple; + dispatch->LineWidth = _gamma_LineWidth; + dispatch->ListBase = _gamma_ListBase; + dispatch->LoadIdentity = _gamma_LoadIdentity; + dispatch->LoadMatrixd = _gamma_LoadMatrixd; + dispatch->LoadMatrixf = _gamma_LoadMatrixf; + dispatch->LoadName = _gamma_LoadName; + dispatch->LogicOp = _gamma_LogicOp; + dispatch->Map1d = _gamma_Map1d; + dispatch->Map1f = _gamma_Map1f; + dispatch->Map2d = _gamma_Map2d; + dispatch->Map2f = _gamma_Map2f; + dispatch->MapGrid1d = _gamma_MapGrid1d; + dispatch->MapGrid1f = _gamma_MapGrid1f; + dispatch->MapGrid2d = _gamma_MapGrid2d; + dispatch->MapGrid2f = _gamma_MapGrid2f; + dispatch->Materialf = _gamma_Materialf; + dispatch->Materialfv = _gamma_Materialfv; + dispatch->Materiali = _gamma_Materiali; + dispatch->Materialiv = _gamma_Materialiv; + dispatch->MatrixMode = _gamma_MatrixMode; + dispatch->MultMatrixd = _gamma_MultMatrixd; + dispatch->MultMatrixf = _gamma_MultMatrixf; + dispatch->NewList = _gamma_NewList; + dispatch->Normal3b = _gamma_Normal3b; + dispatch->Normal3bv = _gamma_Normal3bv; + dispatch->Normal3d = _gamma_Normal3d; + dispatch->Normal3dv = _gamma_Normal3dv; + dispatch->Normal3f = _gamma_Normal3f; + dispatch->Normal3fv = _gamma_Normal3fv; + dispatch->Normal3i = _gamma_Normal3i; + dispatch->Normal3iv = _gamma_Normal3iv; + dispatch->Normal3s = _gamma_Normal3s; + dispatch->Normal3sv = _gamma_Normal3sv; + dispatch->Ortho = _gamma_Ortho; + dispatch->PassThrough = _gamma_PassThrough; + dispatch->PixelMapfv = _gamma_PixelMapfv; + dispatch->PixelMapuiv = _gamma_PixelMapuiv; + dispatch->PixelMapusv = _gamma_PixelMapusv; + dispatch->PixelStoref = _gamma_PixelStoref; + dispatch->PixelStorei = _gamma_PixelStorei; + dispatch->PixelTransferf = _gamma_PixelTransferf; + dispatch->PixelTransferi = _gamma_PixelTransferi; + dispatch->PixelZoom = _gamma_PixelZoom; + dispatch->PointSize = _gamma_PointSize; + dispatch->PolygonMode = _gamma_PolygonMode; + dispatch->PolygonOffset = _gamma_PolygonOffset; + dispatch->PolygonStipple = _gamma_PolygonStipple; + dispatch->PopAttrib = _gamma_PopAttrib; + dispatch->PopMatrix = _gamma_PopMatrix; + dispatch->PopName = _gamma_PopName; + dispatch->PushAttrib = _gamma_PushAttrib; + dispatch->PushMatrix = _gamma_PushMatrix; + dispatch->PushName = _gamma_PushName; + dispatch->RasterPos2d = _gamma_RasterPos2d; + dispatch->RasterPos2dv = _gamma_RasterPos2dv; + dispatch->RasterPos2f = _gamma_RasterPos2f; + dispatch->RasterPos2fv = _gamma_RasterPos2fv; + dispatch->RasterPos2i = _gamma_RasterPos2i; + dispatch->RasterPos2iv = _gamma_RasterPos2iv; + dispatch->RasterPos2s = _gamma_RasterPos2s; + dispatch->RasterPos2sv = _gamma_RasterPos2sv; + dispatch->RasterPos3d = _gamma_RasterPos3d; + dispatch->RasterPos3dv = _gamma_RasterPos3dv; + dispatch->RasterPos3f = _gamma_RasterPos3f; + dispatch->RasterPos3fv = _gamma_RasterPos3fv; + dispatch->RasterPos3i = _gamma_RasterPos3i; + dispatch->RasterPos3iv = _gamma_RasterPos3iv; + dispatch->RasterPos3s = _gamma_RasterPos3s; + dispatch->RasterPos3sv = _gamma_RasterPos3sv; + dispatch->RasterPos4d = _gamma_RasterPos4d; + dispatch->RasterPos4dv = _gamma_RasterPos4dv; + dispatch->RasterPos4f = _gamma_RasterPos4f; + dispatch->RasterPos4fv = _gamma_RasterPos4fv; + dispatch->RasterPos4i = _gamma_RasterPos4i; + dispatch->RasterPos4iv = _gamma_RasterPos4iv; + dispatch->RasterPos4s = _gamma_RasterPos4s; + dispatch->RasterPos4sv = _gamma_RasterPos4sv; + dispatch->ReadBuffer = _gamma_ReadBuffer; + dispatch->ReadPixels = _gamma_ReadPixels; + dispatch->Rectd = _gamma_Rectd; + dispatch->Rectdv = _gamma_Rectdv; + dispatch->Rectf = _gamma_Rectf; + dispatch->Rectfv = _gamma_Rectfv; + dispatch->Recti = _gamma_Recti; + dispatch->Rectiv = _gamma_Rectiv; + dispatch->Rects = _gamma_Rects; + dispatch->Rectsv = _gamma_Rectsv; + dispatch->RenderMode = _gamma_RenderMode; + dispatch->Rotated = _gamma_Rotated; + dispatch->Rotatef = _gamma_Rotatef; + dispatch->Scaled = _gamma_Scaled; + dispatch->Scalef = _gamma_Scalef; + dispatch->Scissor = _gamma_Scissor; + dispatch->SelectBuffer = _gamma_SelectBuffer; + dispatch->ShadeModel = _gamma_ShadeModel; + dispatch->StencilFunc = _gamma_StencilFunc; + dispatch->StencilMask = _gamma_StencilMask; + dispatch->StencilOp = _gamma_StencilOp; + dispatch->TexCoord1d = _gamma_TexCoord1d; + dispatch->TexCoord1dv = _gamma_TexCoord1dv; + dispatch->TexCoord1f = _gamma_TexCoord1f; + dispatch->TexCoord1fv = _gamma_TexCoord1fv; + dispatch->TexCoord1i = _gamma_TexCoord1i; + dispatch->TexCoord1iv = _gamma_TexCoord1iv; + dispatch->TexCoord1s = _gamma_TexCoord1s; + dispatch->TexCoord1sv = _gamma_TexCoord1sv; + dispatch->TexCoord2d = _gamma_TexCoord2d; + dispatch->TexCoord2dv = _gamma_TexCoord2dv; + dispatch->TexCoord2f = _gamma_TexCoord2f; + dispatch->TexCoord2fv = _gamma_TexCoord2fv; + dispatch->TexCoord2i = _gamma_TexCoord2i; + dispatch->TexCoord2iv = _gamma_TexCoord2iv; + dispatch->TexCoord2s = _gamma_TexCoord2s; + dispatch->TexCoord2sv = _gamma_TexCoord2sv; + dispatch->TexCoord3d = _gamma_TexCoord3d; + dispatch->TexCoord3dv = _gamma_TexCoord3dv; + dispatch->TexCoord3f = _gamma_TexCoord3f; + dispatch->TexCoord3fv = _gamma_TexCoord3fv; + dispatch->TexCoord3i = _gamma_TexCoord3i; + dispatch->TexCoord3iv = _gamma_TexCoord3iv; + dispatch->TexCoord3s = _gamma_TexCoord3s; + dispatch->TexCoord3sv = _gamma_TexCoord3sv; + dispatch->TexCoord4d = _gamma_TexCoord4d; + dispatch->TexCoord4dv = _gamma_TexCoord4dv; + dispatch->TexCoord4f = _gamma_TexCoord4f; + dispatch->TexCoord4fv = _gamma_TexCoord4fv; + dispatch->TexCoord4i = _gamma_TexCoord4i; + dispatch->TexCoord4iv = _gamma_TexCoord4iv; + dispatch->TexCoord4s = _gamma_TexCoord4s; + dispatch->TexCoord4sv = _gamma_TexCoord4sv; + dispatch->TexEnvf = _gamma_TexEnvf; + dispatch->TexEnvfv = _gamma_TexEnvfv; + dispatch->TexEnvi = _gamma_TexEnvi; + dispatch->TexEnviv = _gamma_TexEnviv; + dispatch->TexGend = _gamma_TexGend; + dispatch->TexGendv = _gamma_TexGendv; + dispatch->TexGenf = _gamma_TexGenf; + dispatch->TexGenfv = _gamma_TexGenfv; + dispatch->TexGeni = _gamma_TexGeni; + dispatch->TexGeniv = _gamma_TexGeniv; + dispatch->TexImage1D = _gamma_TexImage1D; + dispatch->TexImage2D = _gamma_TexImage2D; + dispatch->TexParameterf = _gamma_TexParameterf; + dispatch->TexParameterfv = _gamma_TexParameterfv; + dispatch->TexParameteri = _gamma_TexParameteri; + dispatch->TexParameteriv = _gamma_TexParameteriv; + dispatch->Translated = _gamma_Translated; + dispatch->Translatef = _gamma_Translatef; + dispatch->Vertex2d = _gamma_Vertex2d; + dispatch->Vertex2dv = _gamma_Vertex2dv; + dispatch->Vertex2f = _gamma_Vertex2f; + dispatch->Vertex2fv = _gamma_Vertex2fv; + dispatch->Vertex2i = _gamma_Vertex2i; + dispatch->Vertex2iv = _gamma_Vertex2iv; + dispatch->Vertex2s = _gamma_Vertex2s; + dispatch->Vertex2sv = _gamma_Vertex2sv; + dispatch->Vertex3d = _gamma_Vertex3d; + dispatch->Vertex3dv = _gamma_Vertex3dv; + dispatch->Vertex3f = _gamma_Vertex3f; + dispatch->Vertex3fv = _gamma_Vertex3fv; + dispatch->Vertex3i = _gamma_Vertex3i; + dispatch->Vertex3iv = _gamma_Vertex3iv; + dispatch->Vertex3s = _gamma_Vertex3s; + dispatch->Vertex3sv = _gamma_Vertex3sv; + dispatch->Vertex4d = _gamma_Vertex4d; + dispatch->Vertex4dv = _gamma_Vertex4dv; + dispatch->Vertex4f = _gamma_Vertex4f; + dispatch->Vertex4fv = _gamma_Vertex4fv; + dispatch->Vertex4i = _gamma_Vertex4i; + dispatch->Vertex4iv = _gamma_Vertex4iv; + dispatch->Vertex4s = _gamma_Vertex4s; + dispatch->Vertex4sv = _gamma_Vertex4sv; + dispatch->Viewport = _gamma_Viewport; + + /* 1.1 */ + dispatch->AreTexturesResident = _gamma_AreTexturesResident; + dispatch->ArrayElement = _gamma_ArrayElement; + dispatch->BindTexture = _gamma_BindTexture; + dispatch->ColorPointer = _gamma_ColorPointer; + dispatch->CopyTexImage1D = _gamma_CopyTexImage1D; + dispatch->CopyTexImage2D = _gamma_CopyTexImage2D; + dispatch->CopyTexSubImage1D = _gamma_CopyTexSubImage1D; + dispatch->CopyTexSubImage2D = _gamma_CopyTexSubImage2D; + dispatch->DeleteTextures = _gamma_DeleteTextures; + dispatch->DisableClientState = _gamma_DisableClientState; + dispatch->DrawArrays = _gamma_DrawArrays; + dispatch->DrawElements = _gamma_DrawElements; + dispatch->EdgeFlagPointer = _gamma_EdgeFlagPointer; + dispatch->EnableClientState = _gamma_EnableClientState; + dispatch->GenTextures = _gamma_GenTextures; + dispatch->GetPointerv = _gamma_GetPointerv; + dispatch->IndexPointer = _gamma_IndexPointer; + dispatch->Indexub = _gamma_Indexub; + dispatch->Indexubv = _gamma_Indexubv; + dispatch->InterleavedArrays = _gamma_InterleavedArrays; + dispatch->IsTexture = _gamma_IsTexture; + dispatch->NormalPointer = _gamma_NormalPointer; + dispatch->PopClientAttrib = _gamma_PopClientAttrib; + dispatch->PrioritizeTextures = _gamma_PrioritizeTextures; + dispatch->PushClientAttrib = _gamma_PushClientAttrib; + dispatch->TexCoordPointer = _gamma_TexCoordPointer; + dispatch->TexSubImage1D = _gamma_TexSubImage1D; + dispatch->TexSubImage2D = _gamma_TexSubImage2D; + dispatch->VertexPointer = _gamma_VertexPointer; +} + #endif Index: xc/lib/GL/mesa/src/drv/gamma/gamma_gl.h diff -u xc/lib/GL/mesa/src/drv/gamma/gamma_gl.h:1.2 xc/lib/GL/mesa/src/drv/gamma/gamma_gl.h:1.4 --- xc/lib/GL/mesa/src/drv/gamma/gamma_gl.h:1.2 Sun Jun 27 10:07:30 1999 +++ xc/lib/GL/mesa/src/drv/gamma/gamma_gl.h Wed Mar 8 16:33:17 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_gl.h,v 1.2 1999/06/27 14:07:30 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_gl.h,v 1.4 2000/03/02 16:07:36 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -29,20 +29,353 @@ /* * Authors: * Kevin E. Martin <kevin@precisioninsight.com> - * - * $PI: xc/lib/GL/mesa/src/drv/gamma/gamma_gl.h,v 1.4 1999/06/21 05:13:55 martin Exp $ + * Brian Paul <brian@precisioninsight.com> */ #ifndef _GAMMA_GL_H_ #define _GAMMA_GL_H_ -#ifdef GLX_DIRECT_RENDERING +#include "GL/gl.h" +#include "glapi.h" -#ifndef GLX_USE_DLOPEN -#define NEED_MESA_FUNCS_WRAPPED -#include "mesa_api.h" -#endif +extern void _gamma_Accum(GLenum op, GLfloat value); +extern void _gamma_AlphaFunc(GLenum func, GLclampf ref); +extern GLboolean _gamma_AreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences); +extern void _gamma_ArrayElement(GLint i); +extern void _gamma_Begin(GLenum mode); +extern void _gamma_BindTexture(GLenum target, GLuint texture); +extern void _gamma_Bitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap); +extern void _gamma_BlendFunc(GLenum sfactor, GLenum dfactor); +extern void _gamma_CallList(GLuint list); +extern void _gamma_CallLists(GLsizei n, GLenum type, const GLvoid *lists); +extern void _gamma_Clear(GLbitfield mask); +extern void _gamma_ClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +extern void _gamma_ClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); +extern void _gamma_ClearDepth(GLclampd depth); +extern void _gamma_ClearIndex(GLfloat c); +extern void _gamma_ClearStencil(GLint s); +extern void _gamma_ClipPlane(GLenum plane, const GLdouble *equation); +extern void _gamma_Color3b(GLbyte red, GLbyte green, GLbyte blue); +extern void _gamma_Color3bv(const GLbyte *v); +extern void _gamma_Color3d(GLdouble red, GLdouble green, GLdouble blue); +extern void _gamma_Color3dv(const GLdouble *v); +extern void _gamma_Color3f(GLfloat red, GLfloat green, GLfloat blue); +extern void _gamma_Color3fv(const GLfloat *v); +extern void _gamma_Color3i(GLint red, GLint green, GLint blue); +extern void _gamma_Color3iv(const GLint *v); +extern void _gamma_Color3s(GLshort red, GLshort green, GLshort blue); +extern void _gamma_Color3sv(const GLshort *v); +extern void _gamma_Color3ub(GLubyte red, GLubyte green, GLubyte blue); +extern void _gamma_Color3ubv(const GLubyte *v); +extern void _gamma_Color3ui(GLuint red, GLuint green, GLuint blue); +extern void _gamma_Color3uiv(const GLuint *v); +extern void _gamma_Color3us(GLushort red, GLushort green, GLushort blue); +extern void _gamma_Color3usv(const GLushort *v); +extern void _gamma_Color4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); +extern void _gamma_Color4bv(const GLbyte *v); +extern void _gamma_Color4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); +extern void _gamma_Color4dv(const GLdouble *v); +extern void _gamma_Color4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +extern void _gamma_Color4fv(const GLfloat *v); +extern void _gamma_Color4i(GLint red, GLint green, GLint blue, GLint alpha); +extern void _gamma_Color4iv(const GLint *v); +extern void _gamma_Color4s(GLshort red, GLshort green, GLshort blue, GLshort alpha); +extern void _gamma_Color4sv(const GLshort *v); +extern void _gamma_Color4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); +extern void _gamma_Color4ubv(const GLubyte *v); +extern void _gamma_Color4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha); +extern void _gamma_Color4uiv(const GLuint *v); +extern void _gamma_Color4us(GLushort red, GLushort green, GLushort blue, GLushort alpha); +extern void _gamma_Color4usv(const GLushort *v); +extern void _gamma_ColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +extern void _gamma_ColorMaterial(GLenum face, GLenum mode); +extern void _gamma_ColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +extern void _gamma_CopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); +extern void _gamma_CopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +extern void _gamma_CopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +extern void _gamma_CopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +extern void _gamma_CopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +extern void _gamma_CullFace(GLenum mode); +extern void _gamma_DeleteLists(GLuint list, GLsizei range); +extern void _gamma_DeleteTextures(GLsizei n, const GLuint *textures); +extern void _gamma_DepthFunc(GLenum func); +extern void _gamma_DepthMask(GLboolean flag); +extern void _gamma_DepthRange(GLclampd zNear, GLclampd zFar); +extern void _gamma_Disable(GLenum cap); +extern void _gamma_DisableClientState(GLenum array); +extern void _gamma_DrawArrays(GLenum mode, GLint first, GLsizei count); +extern void _gamma_DrawBuffer(GLenum mode); +extern void _gamma_DrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); +extern void _gamma_DrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); +extern void _gamma_EdgeFlag(GLboolean flag); +extern void _gamma_EdgeFlagPointer(GLsizei stride, const GLvoid *pointer); +extern void _gamma_EdgeFlagv(const GLboolean *flag); +extern void _gamma_Enable(GLenum cap); +extern void _gamma_EnableClientState(GLenum array); +extern void _gamma_End(void); +extern void _gamma_EndList(void); +extern void _gamma_EvalCoord1d(GLdouble u); +extern void _gamma_EvalCoord1dv(const GLdouble *u); +extern void _gamma_EvalCoord1f(GLfloat u); +extern void _gamma_EvalCoord1fv(const GLfloat *u); +extern void _gamma_EvalCoord2d(GLdouble u, GLdouble v); +extern void _gamma_EvalCoord2dv(const GLdouble *u); +extern void _gamma_EvalCoord2f(GLfloat u, GLfloat v); +extern void _gamma_EvalCoord2fv(const GLfloat *u); +extern void _gamma_EvalMesh1(GLenum mode, GLint i1, GLint i2); +extern void _gamma_EvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); +extern void _gamma_EvalPoint1(GLint i); +extern void _gamma_EvalPoint2(GLint i, GLint j); +extern void _gamma_FeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer); +extern void _gamma_Finish(void); +extern void _gamma_Flush(void); +extern void _gamma_Fogf(GLenum pname, GLfloat param); +extern void _gamma_Fogfv(GLenum pname, const GLfloat *params); +extern void _gamma_Fogi(GLenum pname, GLint param); +extern void _gamma_Fogiv(GLenum pname, const GLint *params); +extern void _gamma_FrontFace(GLenum mode); +extern void _gamma_Frustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +extern GLuint _gamma_GenLists(GLsizei range); +extern void _gamma_GenTextures(GLsizei n, GLuint *textures); +extern void _gamma_GetBooleanv(GLenum val, GLboolean *b); +extern void _gamma_GetClipPlane(GLenum plane, GLdouble *equation); +extern void _gamma_GetDoublev(GLenum val, GLdouble *d); +extern GLenum _gamma_GetError(void); +extern void _gamma_GetFloatv(GLenum val, GLfloat *f); +extern void _gamma_GetIntegerv(GLenum val, GLint *i); +extern void _gamma_GetLightfv(GLenum light, GLenum pname, GLfloat *params); +extern void _gamma_GetLightiv(GLenum light, GLenum pname, GLint *params); +extern void _gamma_GetMapdv(GLenum target, GLenum query, GLdouble *v); +extern void _gamma_GetMapfv(GLenum target, GLenum query, GLfloat *v); +extern void _gamma_GetMapiv(GLenum target, GLenum query, GLint *v); +extern void _gamma_GetMaterialfv(GLenum face, GLenum pname, GLfloat *params); +extern void _gamma_GetMaterialiv(GLenum face, GLenum pname, GLint *params); +extern void _gamma_GetPixelMapfv(GLenum map, GLfloat *values); +extern void _gamma_GetPixelMapuiv(GLenum map, GLuint *values); +extern void _gamma_GetPixelMapusv(GLenum map, GLushort *values); +extern void _gamma_GetPointerv(GLenum pname, void **params); +extern void _gamma_GetPolygonStipple(GLubyte *mask); +extern const GLubyte *_gamma_GetString(GLenum name); +extern void _gamma_GetTexEnvfv(GLenum target, GLenum pname, GLfloat *params); +extern void _gamma_GetTexEnviv(GLenum target, GLenum pname, GLint *params); +extern void _gamma_GetTexGendv(GLenum coord, GLenum pname, GLdouble *params); +extern void _gamma_GetTexGenfv(GLenum coord, GLenum pname, GLfloat *params); +extern void _gamma_GetTexGeniv(GLenum coord, GLenum pname, GLint *params); +extern void _gamma_GetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *texels); +extern void _gamma_GetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params); +extern void _gamma_GetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params); +extern void _gamma_GetTexParameterfv(GLenum target, GLenum pname, GLfloat *params); +extern void _gamma_GetTexParameteriv(GLenum target, GLenum pname, GLint *params); +extern void _gamma_Hint(GLenum target, GLenum mode); +extern void _gamma_IndexMask(GLuint mask); +extern void _gamma_IndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer); +extern void _gamma_Indexd(GLdouble c); +extern void _gamma_Indexdv(const GLdouble *c); +extern void _gamma_Indexf(GLfloat c); +extern void _gamma_Indexfv(const GLfloat *c); +extern void _gamma_Indexi(GLint c); +extern void _gamma_Indexiv(const GLint *c); +extern void _gamma_Indexs(GLshort c); +extern void _gamma_Indexsv(const GLshort *c); +extern void _gamma_Indexub(GLubyte c); +extern void _gamma_Indexubv(const GLubyte *c); +extern void _gamma_InitNames(void); +extern void _gamma_InterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer); +extern GLboolean _gamma_IsEnabled(GLenum cap); +extern GLboolean _gamma_IsList(GLuint list); +extern GLboolean _gamma_IsTexture(GLuint texture); +extern void _gamma_LightModelf(GLenum pname, GLfloat param); +extern void _gamma_LightModelfv(GLenum pname, const GLfloat *params); +extern void _gamma_LightModeli(GLenum pname, GLint param); +extern void _gamma_LightModeliv(GLenum pname, const GLint *params); +extern void _gamma_Lightf(GLenum light, GLenum pname, GLfloat param); +extern void _gamma_Lightfv(GLenum light, GLenum pname, const GLfloat *params); +extern void _gamma_Lighti(GLenum light, GLenum pname, GLint param); +extern void _gamma_Lightiv(GLenum light, GLenum pname, const GLint *params); +extern void _gamma_LineStipple(GLint factor, GLushort pattern); +extern void _gamma_LineWidth(GLfloat width); +extern void _gamma_ListBase(GLuint base); +extern void _gamma_LoadIdentity(void); +extern void _gamma_LoadMatrixd(const GLdouble *m); +extern void _gamma_LoadMatrixf(const GLfloat *m); +extern void _gamma_LoadName(GLuint name); +extern void _gamma_LogicOp(GLenum opcode); +extern void _gamma_Map1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *pnts); +extern void _gamma_Map1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *pnts); +extern void _gamma_Map2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustr, GLint uord, GLdouble v1, GLdouble v2, GLint vstr, GLint vord, const GLdouble *pnts); +extern void _gamma_Map2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustr, GLint uord, GLfloat v1, GLfloat v2, GLint vstr, GLint vord, const GLfloat *pnts); +extern void _gamma_MapGrid1d(GLint un, GLdouble u1, GLdouble u2); +extern void _gamma_MapGrid1f(GLint un, GLfloat u1, GLfloat u2); +extern void _gamma_MapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); +extern void _gamma_MapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); +extern void _gamma_Materialf(GLenum face, GLenum pname, GLfloat param); +extern void _gamma_Materialfv(GLenum face, GLenum pname, const GLfloat *params); +extern void _gamma_Materiali(GLenum face, GLenum pname, GLint param); +extern void _gamma_Materialiv(GLenum face, GLenum pname, const GLint *params); +extern void _gamma_MatrixMode(GLenum mode); +extern void _gamma_MultMatrixd(const GLdouble *m); +extern void _gamma_MultMatrixf(const GLfloat *m); +extern void _gamma_NewList(GLuint list, GLenum mode); +extern void _gamma_Normal3b(GLbyte nx, GLbyte ny, GLbyte nz); +extern void _gamma_Normal3bv(const GLbyte *v); +extern void _gamma_Normal3d(GLdouble nx, GLdouble ny, GLdouble nz); +extern void _gamma_Normal3dv(const GLdouble *v); +extern void _gamma_Normal3f(GLfloat nx, GLfloat ny, GLfloat nz); +extern void _gamma_Normal3fv(const GLfloat *v); +extern void _gamma_Normal3i(GLint nx, GLint ny, GLint nz); +extern void _gamma_Normal3iv(const GLint *v); +extern void _gamma_Normal3s(GLshort nx, GLshort ny, GLshort nz); +extern void _gamma_Normal3sv(const GLshort *v); +extern void _gamma_NormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer); +extern void _gamma_Ortho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +extern void _gamma_PassThrough(GLfloat token); +extern void _gamma_PixelMapfv(GLenum map, GLint mapsize, const GLfloat *values); +extern void _gamma_PixelMapuiv(GLenum map, GLint mapsize, const GLuint *values); +extern void _gamma_PixelMapusv(GLenum map, GLint mapsize, const GLushort *values); +extern void _gamma_PixelStoref(GLenum pname, GLfloat param); +extern void _gamma_PixelStorei(GLenum pname, GLint param); +extern void _gamma_PixelTransferf(GLenum pname, GLfloat param); +extern void _gamma_PixelTransferi(GLenum pname, GLint param); +extern void _gamma_PixelZoom(GLfloat xfactor, GLfloat yfactor); +extern void _gamma_PointSize(GLfloat size); +extern void _gamma_PolygonMode(GLenum face, GLenum mode); +extern void _gamma_PolygonOffset(GLfloat factor, GLfloat units); +extern void _gamma_PolygonStipple(const GLubyte *mask); +extern void _gamma_PopAttrib(void); +extern void _gamma_PopClientAttrib(void); +extern void _gamma_PopMatrix(void); +extern void _gamma_PopName(void); +extern void _gamma_PrioritizeTextures(GLsizei n, const GLuint *textures, const GLclampf *priorities); +extern void _gamma_PushAttrib(GLbitfield mask); +extern void _gamma_PushClientAttrib(GLuint mask); +extern void _gamma_PushMatrix(void); +extern void _gamma_PushName(GLuint name); +extern void _gamma_RasterPos2d(GLdouble x, GLdouble y); +extern void _gamma_RasterPos2dv(const GLdouble *v); +extern void _gamma_RasterPos2f(GLfloat x, GLfloat y); +extern void _gamma_RasterPos2fv(const GLfloat *v); +extern void _gamma_RasterPos2i(GLint x, GLint y); +extern void _gamma_RasterPos2iv(const GLint *v); +extern void _gamma_RasterPos2s(GLshort x, GLshort y); +extern void _gamma_RasterPos2sv(const GLshort *v); +extern void _gamma_RasterPos3d(GLdouble x, GLdouble y, GLdouble z); +extern void _gamma_RasterPos3dv(const GLdouble *v); +extern void _gamma_RasterPos3f(GLfloat x, GLfloat y, GLfloat z); +extern void _gamma_RasterPos3fv(const GLfloat *v); +extern void _gamma_RasterPos3i(GLint x, GLint y, GLint z); +extern void _gamma_RasterPos3iv(const GLint *v); +extern void _gamma_RasterPos3s(GLshort x, GLshort y, GLshort z); +extern void _gamma_RasterPos3sv(const GLshort *v); +extern void _gamma_RasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); +extern void _gamma_RasterPos4dv(const GLdouble *v); +extern void _gamma_RasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); +extern void _gamma_RasterPos4fv(const GLfloat *v); +extern void _gamma_RasterPos4i(GLint x, GLint y, GLint z, GLint w); +extern void _gamma_RasterPos4iv(const GLint *v); +extern void _gamma_RasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w); +extern void _gamma_RasterPos4sv(const GLshort *v); +extern void _gamma_ReadBuffer(GLenum mode); +extern void _gamma_ReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); +extern void _gamma_Rectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); +extern void _gamma_Rectdv(const GLdouble *v1, const GLdouble *v2); +extern void _gamma_Rectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); +extern void _gamma_Rectfv(const GLfloat *v1, const GLfloat *v2); +extern void _gamma_Recti(GLint x1, GLint y1, GLint x2, GLint y2); +extern void _gamma_Rectiv(const GLint *v1, const GLint *v2); +extern void _gamma_Rects(GLshort x1, GLshort y1, GLshort x2, GLshort y2); +extern void _gamma_Rectsv(const GLshort *v1, const GLshort *v2); +extern GLint _gamma_RenderMode(GLenum mode); +extern void _gamma_Rotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z); +extern void _gamma_Rotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); +extern void _gamma_Scaled(GLdouble x, GLdouble y, GLdouble z); +extern void _gamma_Scalef(GLfloat x, GLfloat y, GLfloat z); +extern void _gamma_Scissor(GLint x, GLint y, GLsizei width, GLsizei height); +extern void _gamma_SelectBuffer(GLsizei numnames, GLuint *buffer); +extern void _gamma_ShadeModel(GLenum mode); +extern void _gamma_StencilFunc(GLenum func, GLint ref, GLuint mask); +extern void _gamma_StencilMask(GLuint mask); +extern void _gamma_StencilOp(GLenum fail, GLenum zfail, GLenum zpass); +extern void _gamma_TexCoord1d(GLdouble s); +extern void _gamma_TexCoord1dv(const GLdouble *v); +extern void _gamma_TexCoord1f(GLfloat s); +extern void _gamma_TexCoord1fv(const GLfloat *v); +extern void _gamma_TexCoord1i(GLint s); +extern void _gamma_TexCoord1iv(const GLint *v); +extern void _gamma_TexCoord1s(GLshort s); +extern void _gamma_TexCoord1sv(const GLshort *v); +extern void _gamma_TexCoord2d(GLdouble s, GLdouble t); +extern void _gamma_TexCoord2dv(const GLdouble *v); +extern void _gamma_TexCoord2f(GLfloat s, GLfloat t); +extern void _gamma_TexCoord2fv(const GLfloat *v); +extern void _gamma_TexCoord2i(GLint s, GLint t); +extern void _gamma_TexCoord2iv(const GLint *v); +extern void _gamma_TexCoord2s(GLshort s, GLshort t); +extern void _gamma_TexCoord2sv(const GLshort *v); +extern void _gamma_TexCoord3d(GLdouble s, GLdouble t, GLdouble r); +extern void _gamma_TexCoord3dv(const GLdouble *v); +extern void _gamma_TexCoord3f(GLfloat s, GLfloat t, GLfloat r); +extern void _gamma_TexCoord3fv(const GLfloat *v); +extern void _gamma_TexCoord3i(GLint s, GLint t, GLint r); +extern void _gamma_TexCoord3iv(const GLint *v); +extern void _gamma_TexCoord3s(GLshort s, GLshort t, GLshort r); +extern void _gamma_TexCoord3sv(const GLshort *v); +extern void _gamma_TexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q); +extern void _gamma_TexCoord4dv(const GLdouble *v); +extern void _gamma_TexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q); +extern void _gamma_TexCoord4fv(const GLfloat *v); +extern void _gamma_TexCoord4i(GLint s, GLint t, GLint r, GLint q); +extern void _gamma_TexCoord4iv(const GLint *v); +extern void _gamma_TexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q); +extern void _gamma_TexCoord4sv(const GLshort *v); +extern void _gamma_TexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +extern void _gamma_TexEnvf(GLenum target, GLenum pname, GLfloat param); +extern void _gamma_TexEnvfv(GLenum target, GLenum pname, const GLfloat *params); +extern void _gamma_TexEnvi(GLenum target, GLenum pname, GLint param); +extern void _gamma_TexEnviv(GLenum target, GLenum pname, const GLint *params); +extern void _gamma_TexGend(GLenum coord, GLenum pname, GLdouble param); +extern void _gamma_TexGendv(GLenum coord, GLenum pname, const GLdouble *params); +extern void _gamma_TexGenf(GLenum coord, GLenum pname, GLfloat param); +extern void _gamma_TexGenfv(GLenum coord, GLenum pname, const GLfloat *params); +extern void _gamma_TexGeni(GLenum coord, GLenum pname, GLint param); +extern void _gamma_TexGeniv(GLenum coord, GLenum pname, const GLint *params); +extern void _gamma_TexImage1D(GLenum target, GLint level, GLint components, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *image); +extern void _gamma_TexImage2D(GLenum target, GLint level, GLint components, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *image); +extern void _gamma_TexParameterf(GLenum target, GLenum pname, GLfloat param); +extern void _gamma_TexParameterfv(GLenum target, GLenum pname, const GLfloat *params); +extern void _gamma_TexParameteri(GLenum target, GLenum pname, GLint param); +extern void _gamma_TexParameteriv(GLenum target, GLenum pname, const GLint *params); +extern void _gamma_TexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *image); +extern void _gamma_TexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); +extern void _gamma_Translated(GLdouble x, GLdouble y, GLdouble z); +extern void _gamma_Translatef(GLfloat x, GLfloat y, GLfloat z); +extern void _gamma_Vertex2d(GLdouble x, GLdouble y); +extern void _gamma_Vertex2dv(const GLdouble *v); +extern void _gamma_Vertex2f(GLfloat x, GLfloat y); +extern void _gamma_Vertex2fv(const GLfloat *v); +extern void _gamma_Vertex2i(GLint x, GLint y); +extern void _gamma_Vertex2iv(const GLint *v); +extern void _gamma_Vertex2s(GLshort x, GLshort y); +extern void _gamma_Vertex2sv(const GLshort *v); +extern void _gamma_Vertex3d(GLdouble x, GLdouble y, GLdouble z); +extern void _gamma_Vertex3dv(const GLdouble *v); +extern void _gamma_Vertex3f(GLfloat x, GLfloat y, GLfloat z); +extern void _gamma_Vertex3fv(const GLfloat *v); +extern void _gamma_Vertex3i(GLint x, GLint y, GLint z); +extern void _gamma_Vertex3iv(const GLint *v); +extern void _gamma_Vertex3s(GLshort x, GLshort y, GLshort z); +extern void _gamma_Vertex3sv(const GLshort *v); +extern void _gamma_Vertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); +extern void _gamma_Vertex4dv(const GLdouble *v); +extern void _gamma_Vertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); +extern void _gamma_Vertex4fv(const GLfloat *v); +extern void _gamma_Vertex4i(GLint x, GLint y, GLint z, GLint w); +extern void _gamma_Vertex4iv(const GLint *v); +extern void _gamma_Vertex4s(GLshort x, GLshort y, GLshort z, GLshort w); +extern void _gamma_Vertex4sv(const GLshort *v); +extern void _gamma_VertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +extern void _gamma_Viewport(GLint x, GLint y, GLsizei width, GLsizei height); -#endif + +extern void _gamma_init_dispatch(struct _glapi_table *dispatch); #endif /* _GAMMA_GL_H_ */ Index: xc/lib/GL/mesa/src/drv/gamma/gamma_init.c diff -u xc/lib/GL/mesa/src/drv/gamma/gamma_init.c:1.1 xc/lib/GL/mesa/src/drv/gamma/gamma_init.c:1.2 --- xc/lib/GL/mesa/src/drv/gamma/gamma_init.c:1.1 Mon Jun 14 03:31:15 1999 +++ xc/lib/GL/mesa/src/drv/gamma/gamma_init.c Wed Mar 8 16:33:17 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_init.c,v 1.1 1999/06/14 07:31:15 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_init.c,v 1.2 2000/02/23 04:46:43 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -30,7 +30,6 @@ * Authors: * Kevin E. Martin <kevin@precisioninsight.com> * - * $PI: xc/lib/GL/mesa/src/drv/gamma/gamma_init.c,v 1.4 1999/04/19 06:38:49 martin Exp $ */ #ifdef GLX_DIRECT_RENDERING Index: xc/lib/GL/mesa/src/drv/gamma/gamma_init.h diff -u xc/lib/GL/mesa/src/drv/gamma/gamma_init.h:1.1 xc/lib/GL/mesa/src/drv/gamma/gamma_init.h:1.2 --- xc/lib/GL/mesa/src/drv/gamma/gamma_init.h:1.1 Mon Jun 14 03:31:15 1999 +++ xc/lib/GL/mesa/src/drv/gamma/gamma_init.h Wed Mar 8 16:33:17 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_init.h,v 1.1 1999/06/14 07:31:15 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_init.h,v 1.2 2000/02/23 04:46:43 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -30,7 +30,6 @@ * Authors: * Kevin E. Martin <kevin@precisioninsight.com> * - * $PI: xc/lib/GL/mesa/src/drv/gamma/gamma_init.h,v 1.15 1999/06/07 02:20:06 martin Exp $ */ #ifndef _GAMMA_INIT_H_ Index: xc/lib/GL/mesa/src/drv/gamma/gamma_inithw.c diff -u xc/lib/GL/mesa/src/drv/gamma/gamma_inithw.c:1.2 xc/lib/GL/mesa/src/drv/gamma/gamma_inithw.c:1.3 --- xc/lib/GL/mesa/src/drv/gamma/gamma_inithw.c:1.2 Sun Jun 27 10:07:30 1999 +++ xc/lib/GL/mesa/src/drv/gamma/gamma_inithw.c Wed Mar 8 16:33:17 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_inithw.c,v 1.2 1999/06/27 14:07:30 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_inithw.c,v 1.3 2000/02/23 04:46:44 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -30,7 +30,6 @@ * Authors: * Kevin E. Martin <kevin@precisioninsight.com> * - * $PI: xc/lib/GL/mesa/src/drv/gamma/gamma_inithw.c,v 1.13 1999/06/23 22:16:31 martin Exp $ */ #ifdef GLX_DIRECT_RENDERING Index: xc/lib/GL/mesa/src/drv/gamma/gamma_macros.h diff -u xc/lib/GL/mesa/src/drv/gamma/gamma_macros.h:1.2 xc/lib/GL/mesa/src/drv/gamma/gamma_macros.h:1.3 --- xc/lib/GL/mesa/src/drv/gamma/gamma_macros.h:1.2 Sun Jun 27 10:07:31 1999 +++ xc/lib/GL/mesa/src/drv/gamma/gamma_macros.h Wed Mar 8 16:33:17 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_macros.h,v 1.2 1999/06/27 14:07:31 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_macros.h,v 1.3 2000/02/23 04:46:44 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -30,7 +30,6 @@ * Authors: * Kevin E. Martin <kevin@precisioninsight.com> * - * $PI: xc/lib/GL/mesa/src/drv/gamma/gamma_macros.h,v 1.18 1999/06/14 21:10:44 faith Exp $ */ #ifndef _GAMMA_MACROS_H_ Index: xc/lib/GL/mesa/src/drv/gamma/gamma_matrix.c diff -u xc/lib/GL/mesa/src/drv/gamma/gamma_matrix.c:1.1 xc/lib/GL/mesa/src/drv/gamma/gamma_matrix.c:1.2 --- xc/lib/GL/mesa/src/drv/gamma/gamma_matrix.c:1.1 Mon Jun 14 03:31:16 1999 +++ xc/lib/GL/mesa/src/drv/gamma/gamma_matrix.c Wed Mar 8 16:33:17 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_matrix.c,v 1.1 1999/06/14 07:31:16 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_matrix.c,v 1.2 2000/02/23 04:46:44 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -30,7 +30,6 @@ * Authors: * Kevin E. Martin <kevin@precisioninsight.com> * - * $PI: xc/lib/GL/mesa/src/drv/gamma/gamma_matrix.c,v 1.2 1999/06/07 02:20:06 martin Exp $ */ #ifdef GLX_DIRECT_RENDERING Index: xc/lib/GL/mesa/src/drv/gamma/gamma_region.h diff -u xc/lib/GL/mesa/src/drv/gamma/gamma_region.h:1.1 xc/lib/GL/mesa/src/drv/gamma/gamma_region.h:1.2 --- xc/lib/GL/mesa/src/drv/gamma/gamma_region.h:1.1 Mon Jun 14 03:31:16 1999 +++ xc/lib/GL/mesa/src/drv/gamma/gamma_region.h Wed Mar 8 16:33:17 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_region.h,v 1.1 1999/06/14 07:31:16 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_region.h,v 1.2 2000/02/23 04:46:45 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -31,7 +31,6 @@ * Rik Faith <faith@precisioninsight.com> * Kevin E. Martin <kevin@precisioninsight.com> * - * $PI: xc/lib/GL/mesa/src/drv/gamma/gamma_region.h,v 1.1 1999/04/05 05:24:36 martin Exp $ */ #ifndef _GAMMA_REGION_H_ Index: xc/lib/GL/mesa/src/drv/gamma/gamma_regs.h diff -u xc/lib/GL/mesa/src/drv/gamma/gamma_regs.h:1.1 xc/lib/GL/mesa/src/drv/gamma/gamma_regs.h:1.2 --- xc/lib/GL/mesa/src/drv/gamma/gamma_regs.h:1.1 Mon Jun 14 03:31:16 1999 +++ xc/lib/GL/mesa/src/drv/gamma/gamma_regs.h Wed Mar 8 16:33:17 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_regs.h,v 1.1 1999/06/14 07:31:16 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_regs.h,v 1.2 2000/02/23 04:46:45 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -30,7 +30,6 @@ * Authors: * Kevin E. Martin <kevin@precisioninsight.com> * - * $PI: xc/lib/GL/mesa/src/drv/gamma/gamma_regs.h,v 1.6 1999/05/18 06:43:46 martin Exp $ */ #ifndef _GAMMA_REGS_H_ Index: xc/lib/GL/mesa/src/drv/gamma/gamma_texture.c diff -u xc/lib/GL/mesa/src/drv/gamma/gamma_texture.c:1.1 xc/lib/GL/mesa/src/drv/gamma/gamma_texture.c:1.2 --- xc/lib/GL/mesa/src/drv/gamma/gamma_texture.c:1.1 Mon Jun 14 03:31:16 1999 +++ xc/lib/GL/mesa/src/drv/gamma/gamma_texture.c Wed Mar 8 16:33:17 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_texture.c,v 1.1 1999/06/14 07:31:16 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_texture.c,v 1.2 2000/02/23 04:46:45 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -30,7 +30,6 @@ * Authors: * Kevin E. Martin <kevin@precisioninsight.com> * - * $PI: xc/lib/GL/mesa/src/drv/gamma/gamma_texture.c,v 1.11 1999/06/07 02:20:06 martin Exp $ */ #ifdef GLX_DIRECT_RENDERING Index: xc/lib/GL/mesa/src/drv/gamma/gamma_texture.h diff -u xc/lib/GL/mesa/src/drv/gamma/gamma_texture.h:1.1 xc/lib/GL/mesa/src/drv/gamma/gamma_texture.h:1.2 --- xc/lib/GL/mesa/src/drv/gamma/gamma_texture.h:1.1 Mon Jun 14 03:31:17 1999 +++ xc/lib/GL/mesa/src/drv/gamma/gamma_texture.h Wed Mar 8 16:33:18 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_texture.h,v 1.1 1999/06/14 07:31:17 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_texture.h,v 1.2 2000/02/23 04:46:45 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -30,7 +30,6 @@ * Authors: * Kevin E. Martin <kevin@precisioninsight.com> * - * $PI: xc/lib/GL/mesa/src/drv/gamma/gamma_texture.h,v 1.7 1999/05/18 06:43:46 martin Exp $ */ #ifndef _GAMMA_TEXTURE_H_ Index: xc/lib/GL/mesa/src/drv/gamma/gamma_xmesa.c diff -u xc/lib/GL/mesa/src/drv/gamma/gamma_xmesa.c:1.2 xc/lib/GL/mesa/src/drv/gamma/gamma_xmesa.c:1.4 --- xc/lib/GL/mesa/src/drv/gamma/gamma_xmesa.c:1.2 Sun Jun 27 10:07:31 1999 +++ xc/lib/GL/mesa/src/drv/gamma/gamma_xmesa.c Wed Mar 8 16:33:18 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_xmesa.c,v 1.2 1999/06/27 14:07:31 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_xmesa.c,v 1.4 2000/03/02 16:07:36 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -29,19 +29,22 @@ /* * Authors: * Kevin E. Martin <kevin@precisioninsight.com> - * - * $PI: xc/lib/GL/mesa/src/drv/gamma/gamma_xmesa.c,v 1.24 1999/06/23 22:16:31 martin Exp $ + * Brian Paul <brian@precisioninsight.com> */ #ifdef GLX_DIRECT_RENDERING #include <X11/Xlibint.h> #include "gamma_init.h" +#include "glapi.h" + XMesaContext nullCC = NULL; XMesaContext gCC = NULL; gammaContextPrivate *gCCPriv = NULL; +static struct _glapi_table *Dispatch = NULL; + static int count_bits(unsigned int n) { int bits = 0; @@ -153,6 +156,12 @@ __DRIscreenPrivate *driScrnPriv = driContextPriv->driScreenPriv; gammaScreenPrivate *gPriv = (gammaScreenPrivate *)driScrnPriv->private; + if (!Dispatch) { + GLuint size = _glapi_get_dispatch_table_size() * sizeof(GLvoid *); + Dispatch = (struct _glapi_table *) malloc(size); + _gamma_init_dispatch(Dispatch); + } + c = (XMesaContext)Xmalloc(sizeof(struct xmesa_context)); if (!c) { return NULL; @@ -489,11 +498,27 @@ CHECK_DMA_BUFFER(gCC, gCCPriv, 1); WRITE(gCCPriv->buf, GLINTWindow, gCCPriv->Window); + + _glapi_set_dispatch(Dispatch); } else { gCC = NULL; gCCPriv = NULL; } return GL_TRUE; } + + +GLboolean XMesaUnbindContext( XMesaContext c ) +{ + /* XXX not 100% sure what's supposed to be done here */ + return GL_TRUE; +} + + +void __driRegisterExtensions(void) +{ + /* No extensions */ +} + #endif Index: xc/lib/GL/mesa/src/drv/i810/Imakefile diff -u xc/lib/GL/mesa/src/drv/i810/Imakefile:1.1 xc/lib/GL/mesa/src/drv/i810/Imakefile:1.2 --- xc/lib/GL/mesa/src/drv/i810/Imakefile:1.1 Wed Mar 8 16:33:18 2000 +++ xc/lib/GL/mesa/src/drv/i810/Imakefile Wed Mar 8 16:33:18 2000 @@ -1,4 +1,3 @@ -XCOMM $PI:$ #define DoNormalLib NormalLibGlx #define DoSharedLib SharedLibGlx Index: xc/lib/GL/mesa/src/drv/i810/i810_init.h diff -u xc/lib/GL/mesa/src/drv/i810/i810_init.h:1.1 xc/lib/GL/mesa/src/drv/i810/i810_init.h:1.2 --- xc/lib/GL/mesa/src/drv/i810/i810_init.h:1.1 Wed Mar 8 16:33:18 2000 +++ xc/lib/GL/mesa/src/drv/i810/i810_init.h Wed Mar 8 16:33:18 2000 @@ -30,7 +30,6 @@ * Keith Whitwell <keithw@precisioninsight.com> * Daryll Strauss <daryll@precisioninsight.com> (Origninal tdfx driver). * - * $PI: $ */ #ifndef _I810_INIT_H_ Index: xc/lib/GL/mesa/src/drv/i810/i810_xmesa.c diff -u xc/lib/GL/mesa/src/drv/i810/i810_xmesa.c:1.1 xc/lib/GL/mesa/src/drv/i810/i810_xmesa.c:1.2 --- xc/lib/GL/mesa/src/drv/i810/i810_xmesa.c:1.1 Wed Mar 8 16:33:18 2000 +++ xc/lib/GL/mesa/src/drv/i810/i810_xmesa.c Wed Mar 8 16:33:18 2000 @@ -29,7 +29,6 @@ * Authors: * Keith Whitwell <keithw@precisioninsight.com> * - * $PI: $ */ #ifdef GLX_DIRECT_RENDERING Index: xc/lib/GL/mesa/src/drv/mga/Imakefile diff -u xc/lib/GL/mesa/src/drv/mga/Imakefile:1.1 xc/lib/GL/mesa/src/drv/mga/Imakefile:1.2 --- xc/lib/GL/mesa/src/drv/mga/Imakefile:1.1 Wed Mar 8 16:33:18 2000 +++ xc/lib/GL/mesa/src/drv/mga/Imakefile Wed Mar 8 16:33:18 2000 @@ -1,4 +1,3 @@ -XCOMM $PI:$ #define DoNormalLib NormalLibGlx #define DoSharedLib SharedLibGlx Index: xc/lib/GL/mesa/src/drv/mga/mga_xmesa.c diff -u xc/lib/GL/mesa/src/drv/mga/mga_xmesa.c:1.1 xc/lib/GL/mesa/src/drv/mga/mga_xmesa.c:1.2 --- xc/lib/GL/mesa/src/drv/mga/mga_xmesa.c:1.1 Wed Mar 8 16:33:18 2000 +++ xc/lib/GL/mesa/src/drv/mga/mga_xmesa.c Wed Mar 8 16:33:18 2000 @@ -29,7 +29,6 @@ * Authors: * Daryll Strauss <daryll@precisioninsight.com> * - * $PI: $ */ #ifdef GLX_DIRECT_RENDERING Index: xc/lib/GL/mesa/src/drv/mga/mga_xmesa.h diff -u xc/lib/GL/mesa/src/drv/mga/mga_xmesa.h:1.1 xc/lib/GL/mesa/src/drv/mga/mga_xmesa.h:1.2 --- xc/lib/GL/mesa/src/drv/mga/mga_xmesa.h:1.1 Wed Mar 8 16:33:18 2000 +++ xc/lib/GL/mesa/src/drv/mga/mga_xmesa.h Wed Mar 8 16:33:18 2000 @@ -30,7 +30,6 @@ * Keith Whitwell <keithw@precisioninsight.com> * Daryll Strauss <daryll@precisioninsight.com> (Origninal tdfx driver). * - * $PI: $ */ #ifndef _MGA_INIT_H_ Index: xc/lib/GL/mesa/src/drv/tdfx/Imakefile diff -u xc/lib/GL/mesa/src/drv/tdfx/Imakefile:1.4 xc/lib/GL/mesa/src/drv/tdfx/Imakefile:1.5 --- xc/lib/GL/mesa/src/drv/tdfx/Imakefile:1.4 Wed Mar 8 16:33:19 2000 +++ xc/lib/GL/mesa/src/drv/tdfx/Imakefile Wed Mar 8 16:33:19 2000 @@ -51,7 +51,7 @@ DEFINES = $(ALLOC_DEFINES) $(DRI_DEFINES) INCLUDES = -I$(XLIBSRC) -I$(EXTINCSRC) $(MESA_INCLUDES) $(DRI_INCLUDES) \ - -I/usr/include/glide3 + -I$(GLIDE3INCDIR) DRISRCS = ../../../dri/dri_mesa.c \ ../../../../dri/dri_tmm.c Index: xc/lib/GL/mesa/src/drv/tdfx/tdfx_init.c diff -u xc/lib/GL/mesa/src/drv/tdfx/tdfx_init.c:1.2 xc/lib/GL/mesa/src/drv/tdfx/tdfx_init.c:1.3 --- xc/lib/GL/mesa/src/drv/tdfx/tdfx_init.c:1.2 Wed Mar 8 16:33:19 2000 +++ xc/lib/GL/mesa/src/drv/tdfx/tdfx_init.c Wed Mar 8 16:33:19 2000 @@ -29,7 +29,6 @@ * Authors: * Daryll Strauss <daryll@precisioninsight.com> * - * $PI: # */ #ifdef GLX_DIRECT_RENDERING Index: xc/lib/GL/mesa/src/drv/tdfx/tdfx_init.h diff -u xc/lib/GL/mesa/src/drv/tdfx/tdfx_init.h:1.2 xc/lib/GL/mesa/src/drv/tdfx/tdfx_init.h:1.3 --- xc/lib/GL/mesa/src/drv/tdfx/tdfx_init.h:1.2 Wed Mar 8 16:33:19 2000 +++ xc/lib/GL/mesa/src/drv/tdfx/tdfx_init.h Wed Mar 8 16:33:19 2000 @@ -29,7 +29,6 @@ * Authors: * Daryll Strauss <daryll@precisioninsight.com> * - * $PI: $ */ #ifndef _TDFX_INIT_H_ Index: xc/lib/GL/mesa/src/drv/tdfx/tdfx_inithw.c diff -u xc/lib/GL/mesa/src/drv/tdfx/tdfx_inithw.c:1.2 xc/lib/GL/mesa/src/drv/tdfx/tdfx_inithw.c:1.3 --- xc/lib/GL/mesa/src/drv/tdfx/tdfx_inithw.c:1.2 Wed Mar 8 16:33:19 2000 +++ xc/lib/GL/mesa/src/drv/tdfx/tdfx_inithw.c Wed Mar 8 16:33:19 2000 @@ -29,7 +29,6 @@ * Authors: * Daryll Strauss <daryll@precisioninsight.com> * - * $PI: $ */ #ifdef GLX_DIRECT_RENDERING Index: xc/lib/GL/mesa/src/drv/tdfx/tdfx_xmesa.c diff -u xc/lib/GL/mesa/src/drv/tdfx/tdfx_xmesa.c:1.3 xc/lib/GL/mesa/src/drv/tdfx/tdfx_xmesa.c:1.5 --- xc/lib/GL/mesa/src/drv/tdfx/tdfx_xmesa.c:1.3 Wed Mar 8 16:33:19 2000 +++ xc/lib/GL/mesa/src/drv/tdfx/tdfx_xmesa.c Wed Mar 8 16:33:19 2000 @@ -29,7 +29,6 @@ * Authors: * Daryll Strauss <daryll@precisioninsight.com> * - * $PI: $ */ #ifdef GLX_DIRECT_RENDERING @@ -390,17 +389,22 @@ } -extern void _register_gl_extensions(void); /* silence compiler warning */ +extern void __driRegisterExtensions(void); /* silence compiler warning */ -void _register_gl_extensions(void) +/* This function is called by libGL.so as soon as libGL.so is loaded. + * This is where we'd register new extension functions with the dispatcher. + */ +void __driRegisterExtensions(void) { - /* Here is where the 3Dfx driver would register new extensions - * with libGL.so. - * This function is called as soon as the driver object is dlopened. - */ #if 0 - /* really, the return code should be checked */ - _glapi_add_entrypoint("glFooBarEXT", _gloffset_FooBarEXT); + /* Example. Also look in fxdd.c for more details. */ + { + const int _gloffset_FooBarEXT = 555; /* just an example number! */ + if (_glapi_add_entrypoint("glFooBarEXT", _gloffset_FooBarEXT)) { + void *f = glXGetProcAddressARB("glFooBarEXT"); + assert(f); + } + } #endif } Index: xc/lib/X11/Font.c diff -u xc/lib/X11/Font.c:1.5 xc/lib/X11/Font.c:1.6 --- xc/lib/X11/Font.c:1.5 Wed Mar 8 16:33:21 2000 +++ xc/lib/X11/Font.c Wed Mar 8 16:33:21 2000 @@ -28,7 +28,7 @@ authorization from the X Consortium and the XFree86 Project. */ -/* $XFree86: xc/lib/X11/Font.c,v 1.5 2000/02/08 17:18:42 dawes Exp $ */ +/* $XFree86: xc/lib/X11/Font.c,v 1.6 2000/02/29 03:09:03 dawes Exp $ */ #define NEED_REPLIES #include "Xlibint.h" @@ -58,7 +58,17 @@ #ifdef USE_XF86BIGFONT -static XExtCodes *_XF86BigfontCodes( +/* Private data for this extension. */ +typedef struct { + XExtCodes *codes; + CARD32 serverSignature; + CARD32 serverCapabilities; +} XF86BigfontCodes; + +/* Additional bit masks that can be set in serverCapabilities */ +#define CAP_VerifiedLocal 256 + +static XF86BigfontCodes *_XF86BigfontCodes( #if NeedFunctionPrototypes Display* /* dpy */ #endif @@ -67,7 +77,7 @@ static XFontStruct *_XF86BigfontQueryFont( #if NeedFunctionPrototypes Display* /* dpy */, - XExtCodes* /* extcodes */, + XF86BigfontCodes* /* extcodes */, Font /* fid */, unsigned long /* seq */ #endif @@ -98,7 +108,7 @@ xOpenFontReq *req; unsigned long seq; #ifdef USE_XF86BIGFONT - XExtCodes *extcodes = _XF86BigfontCodes(dpy); + XF86BigfontCodes *extcodes = _XF86BigfontCodes(dpy); #endif LockDisplay(dpy); @@ -128,7 +138,7 @@ { XFontStruct *font_result; #ifdef USE_XF86BIGFONT - XExtCodes *extcodes = _XF86BigfontCodes(dpy); + XF86BigfontCodes *extcodes = _XF86BigfontCodes(dpy); #endif LockDisplay(dpy); @@ -326,18 +336,20 @@ _XF86BigfontFreeCodes (extension) XExtData *extension; { - /* Don't Xfree(extension->private_data) because this is shared with the - display's ext_procs list. */ + /* Don't Xfree(extension->private_data) because it is on the same malloc + chunk as extension. */ + /* Don't Xfree(extension->private_data->codes) because this is shared with + the display's ext_procs list. */ return 0; } -static XExtCodes * +static XF86BigfontCodes * _XF86BigfontCodes (dpy) register Display *dpy; { XEDataObject dpy_union; XExtData *pData; - XExtCodes *pCodes; + XF86BigfontCodes *pCodes; char *envval; dpy_union.display = dpy; @@ -349,20 +361,27 @@ pData = XFindOnExtensionList(XEHeadOfExtensionList(dpy_union), XF86BigfontNumber); if (pData) - return (XExtCodes *) pData->private_data; + return (XF86BigfontCodes *) pData->private_data; - pData = (XExtData *) Xmalloc(sizeof(XExtData)); + pData = (XExtData *) Xmalloc(sizeof(XExtData) + sizeof(XF86BigfontCodes)); if (!pData) { /* Out of luck. */ - return (XExtCodes *) NULL; + return (XF86BigfontCodes *) NULL; } /* See if the server supports the XF86Bigfont extension. */ envval = getenv("XF86BIGFONT_DISABLE"); /* Let the user disable it. */ if (envval != NULL && envval[0] != '\0') pCodes = NULL; - else - pCodes = XInitExtension(dpy, XF86BIGFONTNAME); + else { + XExtCodes *codes = XInitExtension(dpy, XF86BIGFONTNAME); + if (codes == NULL) + pCodes = NULL; + else { + pCodes = (XF86BigfontCodes *) &pData[1]; + pCodes->codes = codes; + } + } pData->number = XF86BigfontNumber; pData->private_data = (XPointer) pCodes; pData->free_private = _XF86BigfontFreeCodes; @@ -374,18 +393,31 @@ register xXF86BigfontQueryVersionReq *req; GetReq(XF86BigfontQueryVersion, req); - req->reqType = pCodes->major_opcode; + req->reqType = pCodes->codes->major_opcode; req->xf86bigfontReqType = X_XF86BigfontQueryVersion; if (!(_XReply (dpy, (xReply *) &reply, (SIZEOF(xXF86BigfontQueryVersionReply) - SIZEOF(xReply)) >> 2, - xFalse))) { - /* No need to Xfree(pCodes), see _XF86BigfontFreeCodes comment. */ - pCodes = (XExtCodes *) NULL; - pData->private_data = (XPointer) pCodes; - } + xFalse))) + goto ignore_extension; + + /* No need to provide backward compatibility with version 1.0. It + was never widely distributed. */ + if (!(reply.majorVersion > 1 + || (reply.majorVersion == 1 && reply.minorVersion >= 1))) + goto ignore_extension; + + pCodes->serverSignature = reply.signature; + pCodes->serverCapabilities = reply.capabilities; } return pCodes; + + ignore_extension: + /* No need to Xfree(pCodes) or Xfree(pCodes->codes), see + _XF86BigfontFreeCodes comment. */ + pCodes = (XF86BigfontCodes *) NULL; + pData->private_data = (XPointer) pCodes; + return pCodes; } static int @@ -398,7 +430,7 @@ static XFontStruct * _XF86BigfontQueryFont (dpy, extcodes, fid, seq) register Display *dpy; - XExtCodes *extcodes; + XF86BigfontCodes *extcodes; Font fid; unsigned long seq; { @@ -426,9 +458,11 @@ } GetReq(XF86BigfontQueryFont, req); - req->reqType = extcodes->major_opcode; + req->reqType = extcodes->codes->major_opcode; req->xf86bigfontReqType = X_XF86BigfontQueryFont; req->id = fid; + req->flags = (extcodes->serverCapabilities & XF86Bigfont_CAP_LocalShm + ? XF86Bigfont_FLAGS_Shm : 0); /* The function _XQueryFont benefits from a "magic" error handler for BadFont coming from a X_QueryFont request. (See function _XReply.) @@ -436,7 +470,7 @@ async2_state.min_sequence_number = dpy->request; async2_state.max_sequence_number = dpy->request; async2_state.error_code = BadFont; - async2_state.major_opcode = extcodes->major_opcode; + async2_state.major_opcode = extcodes->codes->major_opcode; async2_state.minor_opcode = X_XF86BigfontQueryFont; async2_state.error_count = 0; async2.next = dpy->async_handlers; @@ -553,14 +587,44 @@ return (XFontStruct *)NULL; } + /* In some cases (e.g. an ssh daemon forwarding an X session to + a remote machine) it is possible that the X server thinks we + are running on the same machine (because getpeername() and + LocalClient() cannot know about the forwarding) but we are + not really local. Therefore, when we attach the first shared + memory segment, we verify that we are on the same machine as + the X server by checking that 1. shmat() succeeds, 2. the + segment has a sufficient size, 3. it contains the X server's + signature. Then we set the CAP_VerifiedLocal bit to indicate + the verification was successful. */ + if ((addr = shmat(reply.shmid, 0, SHM_RDONLY)) == (char *)-1) { - fprintf(stderr, "_XF86BigfontQueryFont: could not attach shm segment\n"); + if (extcodes->serverCapabilities & CAP_VerifiedLocal) + fprintf(stderr, "_XF86BigfontQueryFont: could not attach shm segment\n"); Xfree((char *) pData); if (fs->properties) Xfree((char *) fs->properties); Xfree((char *) fs); + /* Stop requesting shared memory transport from now on. */ + extcodes->serverCapabilities &= ~ XF86Bigfont_CAP_LocalShm; return (XFontStruct *)NULL; } + if (!(extcodes->serverCapabilities & CAP_VerifiedLocal)) { + struct shmid_ds buf; + if (!(shmctl(reply.shmid, IPC_STAT, &buf) >= 0 + && buf.shm_segsz >= reply.shmsegoffset + reply.nCharInfos * sizeof(XCharStruct) + sizeof(CARD32) + && *(CARD32 *)(addr + reply.shmsegoffset + reply.nCharInfos * sizeof(XCharStruct)) == extcodes->serverSignature)) { + shmdt(addr); + Xfree((char *) pData); + if (fs->properties) Xfree((char *) fs->properties); + Xfree((char *) fs); + /* Stop requesting shared memory transport from now on. */ + extcodes->serverCapabilities &= ~ XF86Bigfont_CAP_LocalShm; + return (XFontStruct *)NULL; + } + extcodes->serverCapabilities |= CAP_VerifiedLocal; + } + pData->number = XF86BigfontNumber; pData->private_data = (XPointer) addr; pData->free_private = _XF86BigfontFreeNop; @@ -572,6 +636,8 @@ fprintf(stderr, "_XF86BigfontQueryFont: try recompiling libX11 with HasShm, Xserver has shm support\n"); if (fs->properties) Xfree((char *) fs->properties); Xfree((char *) fs); + /* Stop requesting shared memory transport from now on. */ + extcodes->serverCapabilities &= ~ XF86Bigfont_CAP_LocalShm; return (XFontStruct *)NULL; #endif } Index: xc/lib/X11/XErrorDB diff -u xc/lib/X11/XErrorDB:3.30 xc/lib/X11/XErrorDB:3.32 --- xc/lib/X11/XErrorDB:3.30 Wed Mar 8 16:33:24 2000 +++ xc/lib/X11/XErrorDB Wed Mar 8 16:33:24 2000 @@ -19,7 +19,7 @@ ! other dealings in this Software without prior written authorization ! from The Open Group. ! -! $XFree86: xc/lib/X11/XErrorDB,v 3.30 2000/02/10 22:33:22 dawes Exp $ +! $XFree86: xc/lib/X11/XErrorDB,v 3.32 2000/02/29 18:29:01 dawes Exp $ ! ! these are used in XGetErrorMessage. XlibMessage.XError: X Error of failed request @@ -759,13 +759,21 @@ XRequest.XINERAMA.1: XINERAMAGetState XRequest.XINERAMA.2: XINERAMAGetScreenCount XRequest.XINERAMA.3: XINERAMAGetScreenSize +XRequest.XINERAMA.4: XINERAMAIsActive +XRequest.XINERAMA.5: XINERAMAQueryScreens ! XF86Rush extension, not a standard spec Xrequest.XFree86-Rush.0: XF86RushQueryVersion Xrequest.XFree86-Rush.1: XF86RushLockPixmap Xrequest.XFree86-Rush.2: XF86RushUnlockPixmap Xrequest.XFree86-Rush.3: XF86RushUnlockAllPixmaps -Xrequest.XFree86-Rush.4: XF86RushSetCopyMode -Xrequest.XFree86-Rush.5: XF86RushSetPixelStride +Xrequest.XFree86-Rush.4: XF86RushGetCopyMode +Xrequest.XFree86-Rush.5: XF86RushSetCopyMode +Xrequest.XFree86-Rush.6: XF86RushGetPixelStride +Xrequest.XFree86-Rush.7: XF86RushSetPixelStride +Xrequest.XFree86-Rush.8: XF86RushOverlayPixmap +Xrequest.XFree86-Rush.9: XF86RushStatusRegOffset +Xrequest.XFree86-Rush.10: XF86RushAT3DEnableRegs +Xrequest.XFree86-Rush.11: XF86RushAT3DDisableRegs ! XVideo Xrequest.XVideo.0: XvQueryExtension Xrequest.XVideo.1: XvQueryAdaptors Index: xc/lib/X11/XlcGeneric.h diff -u xc/lib/X11/XlcGeneric.h:1.1.1.2 xc/lib/X11/XlcGeneric.h:1.2 --- xc/lib/X11/XlcGeneric.h:1.1.1.2 Sat Dec 21 22:27:02 1996 +++ xc/lib/X11/XlcGeneric.h Wed Mar 8 16:33:25 2000 @@ -31,6 +31,7 @@ * Modifier: Takanori Tateno FUJITSU LIMITED * */ +/* $XFree86: xc/lib/X11/XlcGeneric.h,v 1.2 2000/02/25 18:27:53 dawes Exp $ */ #ifndef _XLCGENERIC_H_ #define _XLCGENERIC_H_ @@ -93,6 +94,7 @@ ExtdSegment ctextseg; ParseInfo parse_info; unsigned long wc_encoding; + Bool string_encoding; } CodeSetRec, *CodeSet; typedef enum { Index: xc/lib/X11/XlcPublic.h diff -u xc/lib/X11/XlcPublic.h:1.3 xc/lib/X11/XlcPublic.h:1.5 --- xc/lib/X11/XlcPublic.h:1.3 Wed Mar 8 16:33:25 2000 +++ xc/lib/X11/XlcPublic.h Wed Mar 8 16:33:25 2000 @@ -31,7 +31,7 @@ * Modifier: Takanori Tateno FUJITSU LIMITED * */ -/* $XFree86: xc/lib/X11/XlcPublic.h,v 1.3 2000/02/12 02:54:07 dawes Exp $ */ +/* $XFree86: xc/lib/X11/XlcPublic.h,v 1.5 2000/02/29 03:09:03 dawes Exp $ */ /* * Most of this API is documented in i18n/Framework.PS */ @@ -79,6 +79,8 @@ #endif ); +typedef enum {CSsrcUndef = 0, CSsrcStd, CSsrcXLC} CSSrc; + typedef struct _XlcCharSetRec { char *name; /* character set name */ XrmQuark xrm_name; @@ -93,6 +95,8 @@ Bool string_encoding; UDCArea udc_area; int udc_area_num; + /* CS description source */ + CSSrc source; } XlcCharSetRec; /* @@ -183,6 +187,13 @@ extern XlcCharSet _XlcGetCharSet( #if NeedFunctionPrototypes _Xconst char* /* name */ +#endif +); + +extern XlcCharSet _XlcGetCharSetWithSide( +#if NeedFunctionPrototypes + _Xconst char* /* encoding_name */, + XlcSide /* side */ #endif ); Index: xc/lib/X11/lcCT.c diff -u xc/lib/X11/lcCT.c:3.15 xc/lib/X11/lcCT.c:3.16 --- xc/lib/X11/lcCT.c:3.15 Wed Mar 8 16:33:26 2000 +++ xc/lib/X11/lcCT.c Wed Mar 8 16:33:26 2000 @@ -36,7 +36,7 @@ * Modifier: Ivan Pascal The XFree86 Project * Modifier: Bruno Haible The XFree86 Project */ -/* $XFree86: xc/lib/X11/lcCT.c,v 3.15 2000/02/12 02:54:08 dawes Exp $ */ +/* $XFree86: xc/lib/X11/lcCT.c,v 3.16 2000/02/25 18:27:54 dawes Exp $ */ #include "Xlibint.h" #include "XlcPubI.h" @@ -130,18 +130,6 @@ #endif }; -CTDataRec *default_ct_data_list() -{ - return(default_ct_data); -} - -size_t default_ct_data_list_num() -{ - size_t num = sizeof(default_ct_data) / sizeof(CTDataRec); - return(num); -} - - /* ======================= Parsing ESC Sequences ======================= */ #define XctC0 0x0000 @@ -661,7 +649,7 @@ charset != state->GL_charset) ) { /* output esc-sequence */ - if ((ct_info->type == XctExtSeg) && (length >= 7)) { + if ((ct_info->type == XctExtSeg) && (length < 7)) { int comp_len = length + strlen(ct_info->ext_segment) + 3; if (ct_len < comp_len) @@ -918,13 +906,17 @@ if (ct_list == NULL) { CTData ct_data; int num; + XlcCharSet charset; /* Initialize ct_list. */ num = sizeof(default_ct_data) / sizeof(CTDataRec); - for (ct_data = default_ct_data; num > 0; ct_data++, num--) - _XlcAddCT(ct_data->name, ct_data->encoding); - + for (ct_data = default_ct_data; num > 0; ct_data++, num--) { + charset = _XlcAddCT(ct_data->name, ct_data->encoding); + if (charset == NULL) + continue; + charset->source = CSsrcStd; + } /* Register CompoundText and CharSet converters. */ _XlcSetConverter((XLCd) NULL, XlcNCompoundText, Index: xc/lib/X11/lcCharSet.c diff -u xc/lib/X11/lcCharSet.c:3.4 xc/lib/X11/lcCharSet.c:3.5 --- xc/lib/X11/lcCharSet.c:3.4 Wed Mar 8 16:33:26 2000 +++ xc/lib/X11/lcCharSet.c Wed Mar 8 16:33:26 2000 @@ -23,7 +23,7 @@ * Author: Katsuhisa Yano TOSHIBA Corp. * mopi@osa.ilab.toshiba.co.jp */ -/* $XFree86: xc/lib/X11/lcCharSet.c,v 3.4 2000/02/12 02:54:09 dawes Exp $ */ +/* $XFree86: xc/lib/X11/lcCharSet.c,v 3.5 2000/02/29 03:09:04 dawes Exp $ */ #include <stdio.h> #include "Xlibint.h" @@ -91,6 +91,25 @@ for (list = charset_list; list; list = list->next) { if (xrm_name == list->charset->xrm_name) + return (XlcCharSet) list->charset; + } + + return (XlcCharSet) NULL; +} + +XlcCharSet +_XlcGetCharSetWithSide(encoding_name, side) + _Xconst char *encoding_name; + XlcSide side; +{ + XlcCharSetList list; + XrmQuark xrm_encoding_name; + + xrm_encoding_name = XrmStringToQuark(encoding_name); + + for (list = charset_list; list; list = list->next) { + if (list->charset->xrm_encoding_name == xrm_encoding_name + && (list->charset->side == XlcGLGR || list->charset->side == side)) return (XlcCharSet) list->charset; } Index: xc/lib/X11/lcDefConv.c diff -u xc/lib/X11/lcDefConv.c:1.3 xc/lib/X11/lcDefConv.c:1.4 --- xc/lib/X11/lcDefConv.c:1.3 Wed Mar 8 16:33:26 2000 +++ xc/lib/X11/lcDefConv.c Wed Mar 8 16:33:26 2000 @@ -23,17 +23,25 @@ * Author: Katsuhisa Yano TOSHIBA Corp. * mopi@osa.ilab.toshiba.co.jp */ -/* $XFree86: xc/lib/X11/lcDefConv.c,v 1.3 2000/02/12 02:54:10 dawes Exp $ */ +/* + * 2000 + * Modifier: Ivan Pascal The XFree86 Project + */ +/* $XFree86: xc/lib/X11/lcDefConv.c,v 1.4 2000/02/25 18:27:54 dawes Exp $ */ /* * The default locale loader. - * Supports: only the "C" locale. + * Supports: one byte per char (iso8859 like) locales. * How: converts bytes to wide characters in a 1:1 manner. * Platforms: all systems. */ #include "Xlibint.h" -#include "XlcPubI.h" +#include "XlcGeneric.h" + +#ifndef MB_LEN_MAX +#define MB_LEN_MAX 6 +#endif extern void _XlcAddUtf8Converters( #if NeedFunctionPrototypes @@ -41,16 +49,103 @@ #endif ); +#if !defined(X_NOT_STDC_ENV) && !defined(macII) && !defined(Lynx_22) && !defined(X_LOCALE) +#define STDCVT +#endif + +#define GR 0x80 +#define GL 0x7f + typedef struct _StateRec { - XlcCharSet charset; - XlcCharSet GL_charset; - XlcCharSet GR_charset; - XlcConv ct_conv; - int (*to_converter)(); + CodeSet GL_codeset; + CodeSet GR_codeset; + wchar_t wc_mask; + wchar_t wc_encode_mask; + Bool (*MBtoWC)(); + Bool (*WCtoMB)(); } StateRec, *State; +static +Bool MBtoWCdef(state, ch, wc) + State state; + char *ch; + wchar_t *wc; +{ + wchar_t wc_encoding; + CodeSet codeset = (*ch & GR) ? state->GR_codeset : + state->GL_codeset; + if (!codeset) + return False; + wc_encoding = codeset->wc_encoding; + *wc = ((wchar_t) * ch & state->wc_mask) | wc_encoding; + return True; +} + +#ifdef STDCVT +static +Bool MBtoWCstd(state, ch, wc) + State state; + char *ch; + wchar_t *wc; +{ + return (mbtowc(wc, ch, 1) == 1); +} +#endif + +static +Bool WCtoMBdef(state, wc, ch) + State state; + wchar_t wc; + char *ch; +{ + wchar_t wc_encoding = wc & state->wc_encode_mask; + CodeSet codeset; + + codeset = state->GL_codeset; + if (codeset && (wc_encoding == codeset->wc_encoding)) { + *ch = wc & state->wc_mask; + return True; + } + codeset = state->GR_codeset; + if (codeset && (wc_encoding == codeset->wc_encoding)) { + *ch = (wc & state->wc_mask) | GR; + return True; + } + return False; +} + +#ifdef STDCVT +static +Bool WCtoMBstd(state, wc, ch) + State state; + wchar_t wc; + char *ch; +{ + return (wctomb(ch, wc) == 1); +} +#endif + +static +XlcCharSet get_charset(state, side) + State state; + char side; +{ + CodeSet codeset = side ? state->GR_codeset : state->GL_codeset; + if (codeset) { + int i; + XlcCharSet charset; + for (i = 0; i < codeset->num_charsets; i++) { + charset = codeset->charset_list[i]; + if (*charset->ct_sequence != '\0') + return charset; + } + return *(codeset->charset_list); + } + return (XlcCharSet) NULL; +} + static int -strtostr(conv, from, from_left, to, to_left, args, num_args) +def_mbstowcs(conv, from, from_left, to, to_left, args, num_args) XlcConv conv; XPointer *from; int *from_left; @@ -59,39 +154,96 @@ XPointer *args; int num_args; { - register char *src, *dst; - unsigned char side; - register int length; + register char *src = (char *) *from; + register wchar_t *dst = (wchar_t *) * to; + State state = (State) conv->state; + int unconv = 0; if (from == NULL || *from == NULL) return 0; - src = (char *) *from; - dst = (char *) *to; + while (*from_left && *to_left) { + (*from_left)--; + if ((state->MBtoWC) (state, src++, dst)) { + dst++; + (*to_left)--; + } else { + unconv++; + } + } + *from = (XPointer) src; + *to = (XPointer) dst; + return unconv; +} + +static int +def_wcstombs(conv, from, from_left, to, to_left, args, num_args) + XlcConv conv; + XPointer *from; + int *from_left; + XPointer *to; + int *to_left; + XPointer *args; + int num_args; +{ + register wchar_t *src = (wchar_t *) * from; + register char *dst = (char *) *to; + State state = (State) conv->state; + char ch[MB_LEN_MAX]; + int unconv = 0; - length = min(*from_left, *to_left); + if (from == NULL || *from == NULL) + return 0; - if (num_args > 0) { - side = (length > 0) ? *((unsigned char *) src) & 0x80 : 0; - while (length-- > 0 && side == (*((unsigned char *) src) & 0x80)) - *dst++ = *src++; - } else { - while (length-- > 0) - *dst++ = *src++; + while (*from_left && *to_left) { + (*from_left)--; + if ((state->WCtoMB) (state, *src++, ch)) { + *dst++ = *ch; + (*to_left)--; + } else { + unconv++; + } } - - *from_left -= src - (char *) *from; *from = (XPointer) src; - *to_left -= dst - (char *) *to; *to = (XPointer) dst; + return unconv; +} - if (num_args > 0) { - State state = (State) conv->state; +static int +mbstostr(conv, from, from_left, to, to_left, args, num_args) + XlcConv conv; + XPointer *from; + int *from_left; + XPointer *to; + int *to_left; + XPointer *args; + int num_args; +{ + register char *src = (char *) *from; + register char *dst = (char *) *to; + CodeSet codeset; + State state = (State) conv->state; + char ch; + int unconv = 0; - *((XlcCharSet *)args[0]) = side ? state->GR_charset : state->GL_charset; - } + if (from == NULL || *from == NULL) + return 0; - return 0; + while (*from_left && *to_left) { + ch = *src++; + (*from_left)--; + + codeset = (ch & GR) ? state->GR_codeset : state->GL_codeset; + if (codeset && codeset->string_encoding) { + *dst++ = ch; + (*to_left)--; + } else { + unconv++; + } + } + *from = (XPointer) src; + *to = (XPointer) dst; + return unconv; } static int @@ -104,43 +256,145 @@ XPointer *args; int num_args; { - register wchar_t *src, side; - register char *dst; - register int length; + register wchar_t *src = (wchar_t *) * from; + register char *dst = (char *) *to; + CodeSet codeset; + State state = (State) conv->state; + char ch[MB_LEN_MAX]; + int unconv = 0; if (from == NULL || *from == NULL) return 0; - src = (wchar_t *) *from; - dst = (char *) *to; + while (*from_left && *to_left) { + (*from_left)--; + if ((state->WCtoMB) (state, *src++, ch)) { + codeset = (*ch & GR) ? state->GR_codeset : state->GL_codeset; + if (codeset && codeset->string_encoding) { + *dst++ = *ch; + (*to_left)--; + } else { + unconv++; + } + } else { + unconv++; + } + } + *from = (XPointer) src; + *to = (XPointer) dst; + return unconv; +} + +static int +mbstocs(conv, from, from_left, to, to_left, args, num_args) + XlcConv conv; + XPointer *from; + int *from_left; + XPointer *to; + int *to_left; + XPointer *args; + int num_args; +{ + register char *src = (char *) *from; + register char *dst = (char *) *to; + register int length; + State state = (State) conv->state; + char cur_side; + int unconv = 0; + + if (from == NULL || *from == NULL) + return 0; length = min(*from_left, *to_left); + cur_side = *src & GR; + while (length) { + if ((char) (*src & GR) != cur_side) + break; + *dst++ = *src++; + length--; + } + if (num_args > 0) { - side = (length > 0) ? *src & 0x80 : 0; - while (length-- > 0 && side == (*src & 0x80)) - *dst++ = *src++; - } else { - while (length-- > 0) - *dst++ = *src++; + XlcCharSet charset = get_charset(state, cur_side); + if (charset) { + *((XlcCharSet *) args[0]) = charset; + } else { + dst = *to; + unconv = -1; + } } - - *from_left -= src - (wchar_t *) *from; - *from = (XPointer) src; + *from_left -= src - (char *) *from; *to_left -= dst - (char *) *to; + *from = (XPointer) src; *to = (XPointer) dst; + return unconv; +} - if (num_args > 0) { - State state = (State) conv->state; +static int +wcstocs(conv, from, from_left, to, to_left, args, num_args) + XlcConv conv; + XPointer *from; + int *from_left; + XPointer *to; + int *to_left; + XPointer *args; + int num_args; +{ + register wchar_t *src = (wchar_t *) * from; + register char *dst = (char *) *to; + State state = (State) conv->state; + char cur_side = 0, ch[MB_LEN_MAX]; + int unconv = 0; + Bool found = False; - *((XlcCharSet *)args[0]) = side ? state->GR_charset : state->GL_charset; + if (from == NULL || *from == NULL) + return 0; + + while (*from_left) { + if (found = (state->WCtoMB)(state, *src, ch)) + break; + unconv++; + src++; + (*from_left)--; } - return 0; + if (found) { + cur_side = *ch & GR; + while (*from_left && *to_left) { + (*from_left)--; + if ((state->WCtoMB)(state, *src++, ch)) { + if ((char) (*ch & GR) != cur_side) { + src--; + (*from_left)++; + break; + } else { + *dst++ = *ch; + (*to_left)--; + } + } else { + unconv++; + } + } + } else { + unconv++; + } + + if (num_args > 0) { + XlcCharSet charset = get_charset(state, cur_side); + if (charset) { + *((XlcCharSet *) args[0]) = charset; + } else { + unconv = -1; + } + } + *from = (XPointer) src; + *to = (XPointer) dst; + return unconv; } static int -cstostr(conv, from, from_left, to, to_left, args, num_args) +cstombs(conv, from, from_left, to, to_left, args, num_args) XlcConv conv; XPointer *from; int *from_left; @@ -149,51 +403,67 @@ XPointer *args; int num_args; { - register char *src, *dst; - unsigned char side; - register int length; + register char *src = (char *) *from; + register char *dst = (char *) *to; + CodeSet codeset; + XlcCharSet charset; + State state = (State) conv->state; + unsigned char cur_side = 0; + int i; + Bool found = False; if (from == NULL || *from == NULL) return 0; if (num_args > 0) { - State state = (State) conv->state; - XlcCharSet charset = (XlcCharSet) args[0]; - - if (charset != state->GL_charset && charset != state->GR_charset) + charset = (XlcCharSet) args[0]; + if (charset == NULL) return -1; + } else { + return -1; } - src = (char *) *from; - dst = (char *) *to; - - length = min(*from_left, *to_left); - - if (num_args > 0) { - side = (length > 0) ? *((unsigned char *) src) & 0x80 : 0; - while (length-- > 0 && side == (*((unsigned char *) src) & 0x80)) - *dst++ = *src++; + if ((charset->side == XlcGL) || (charset->side == XlcGLGR)) { + codeset = state->GL_codeset; + if (codeset) { + for (i = 0; i < codeset->num_charsets; i++) + if (charset == codeset->charset_list[i]) { + found = True; + cur_side = 0; + break; + } + } + } + if (!found && ((charset->side == XlcGR) || (charset->side == XlcGLGR))) { + codeset = state->GR_codeset; + if (codeset) { + for (i = 0; i < codeset->num_charsets; i++) + if (charset == codeset->charset_list[i]) { + found = True; + cur_side = GR; + break; + } + } + } + if (found) { + register int length = min(*from_left, *to_left); + while (length) { + *dst++ = *src++ | cur_side; + length--; + } } else { - while (length-- > 0) - *dst++ = *src++; + return -1; } - + *from_left -= src - (char *) *from; - *from = (XPointer) src; *to_left -= dst - (char *) *to; + *from = (XPointer) src; *to = (XPointer) dst; - - if (num_args > 0) { - State state = (State) conv->state; - - *((XlcCharSet *)args[0]) = side ? state->GR_charset : state->GL_charset; - } - return 0; } static int -strtowcs(conv, from, from_left, to, to_left, args, num_args) +cstowcs(conv, from, from_left, to, to_left, args, num_args) XlcConv conv; XPointer *from; int *from_left; @@ -202,38 +472,98 @@ XPointer *args; int num_args; { - register char *src; - register wchar_t *dst; - register int length; + register char *src = (char *) *from; + register wchar_t *dst = (wchar_t *) * to; + CodeSet codeset; + XlcCharSet charset; + State state = (State) conv->state; + Bool found = False; + int i, unconv = 0; + unsigned char cur_side = 0; if (from == NULL || *from == NULL) return 0; if (num_args > 0) { - State state = (State) conv->state; - XlcCharSet charset = (XlcCharSet) args[0]; - - if (charset != state->GL_charset && charset != state->GR_charset) + charset = (XlcCharSet) args[0]; + if (charset == NULL) return -1; + } else { + return -1; + } + + if ((charset->side == XlcGL) || (charset->side == XlcGLGR)) { + codeset = state->GL_codeset; + if (codeset) { + for (i = 0; i < codeset->num_charsets; i++) + if (charset == codeset->charset_list[i]) { + found = True; + cur_side = 0; + break; + } + } + } + if (!found && ((charset->side == XlcGR) || (charset->side == XlcGLGR))) { + codeset = state->GR_codeset; + if (codeset) { + for (i = 0; i < codeset->num_charsets; i++) + if (charset == codeset->charset_list[i]) { + found = True; + cur_side = GR; + break; + } + } } + if (found) { + char ch; + while (*from_left && *to_left) { + ch = *src++ | cur_side; + (*from_left)--; + if ((state->MBtoWC) (state, &ch, dst)) { + dst++; + (*to_left)--; + } else { + unconv++; + } + } + } else { + return -1; + } + *from = (XPointer) src; + *to = (XPointer) dst; + return unconv; +} + +static int +strtombs(conv, from, from_left, to, to_left, args, num_args) + XlcConv conv; + XPointer *from; + int *from_left; + XPointer *to; + int *to_left; + XPointer *args; + int num_args; +{ + register char *src = (char *) *from; + register char *dst = (char *) *to; + register int length; - src = (char *) *from; - dst = (wchar_t *) *to; + if (from == NULL || *from == NULL) + return 0; length = min(*from_left, *to_left); + while (length) { + *dst++ = *src++; + length--; + } - while (length-- > 0) - *dst++ = (wchar_t) *src++; - *from_left -= src - (char *) *from; + *to_left -= dst - (char *) *to; *from = (XPointer) src; - *to_left -= dst - (wchar_t *) *to; *to = (XPointer) dst; - return 0; } - static void close_converter(conv) XlcConv conv; @@ -245,62 +575,116 @@ } static XlcConv -create_conv(methods) +create_conv(lcd, methods) + XLCd lcd; XlcConvMethods methods; { register XlcConv conv; State state; - static XlcCharSet GL_charset = NULL; - static XlcCharSet GR_charset = NULL; - - if (GL_charset == NULL) { - GL_charset = _XlcGetCharSet("ISO8859-1:GL"); - GR_charset = _XlcGetCharSet("ISO8859-1:GR"); - } conv = (XlcConv) Xmalloc(sizeof(XlcConvRec)); if (conv == NULL) return (XlcConv) NULL; state = (State) Xmalloc(sizeof(StateRec)); - if (state == NULL) - goto err; - - state->GL_charset = state->charset = GL_charset; - state->GR_charset = GR_charset; + if (state == NULL) { + close_converter(conv); + return (XlcConv) NULL; + } + state->GL_codeset = XLC_GENERIC(lcd, initial_state_GL); + state->GR_codeset = XLC_GENERIC(lcd, initial_state_GR); + state->wc_mask = (1 << XLC_GENERIC(lcd, wc_shift_bits)) - 1; + state->wc_encode_mask = XLC_GENERIC(lcd, wc_encode_mask); + +#ifdef STDCVT + if (XLC_GENERIC(lcd, use_stdc_env) == True) + state->MBtoWC = &MBtoWCstd; + else +#endif + state->MBtoWC = &MBtoWCdef; + +#ifdef STDCVT + if (XLC_GENERIC(lcd, use_stdc_env) == True) + state->WCtoMB = &WCtoMBstd; + else +#endif + state->WCtoMB = &WCtoMBdef; conv->methods = methods; conv->state = (XPointer) state; return conv; +} -err: - close_converter(conv); +static XlcConvMethodsRec mbstowcs_methods = { + close_converter, + def_mbstowcs, + NULL +}; + +static XlcConv +open_mbstowcs(from_lcd, from_type, to_lcd, to_type) + XLCd from_lcd; + char *from_type; + XLCd to_lcd; + char *to_type; +{ + return create_conv(from_lcd, &mbstowcs_methods); +} - return (XlcConv) NULL; +static XlcConvMethodsRec mbstostr_methods = { + close_converter, + mbstostr, + NULL +}; + +static XlcConv +open_mbstostr(from_lcd, from_type, to_lcd, to_type) + XLCd from_lcd; + char *from_type; + XLCd to_lcd; + char *to_type; +{ + return create_conv(from_lcd, &mbstostr_methods); } -static XlcConvMethodsRec strtostr_methods = { +static XlcConvMethodsRec mbstocs_methods = { close_converter, - strtostr, + mbstocs, NULL -} ; +}; static XlcConv -open_strtostr(from_lcd, from_type, to_lcd, to_type) +open_mbstocs(from_lcd, from_type, to_lcd, to_type) XLCd from_lcd; char *from_type; XLCd to_lcd; char *to_type; { - return create_conv(&strtostr_methods); + return create_conv(from_lcd, &mbstocs_methods); +} + +static XlcConvMethodsRec wcstombs_methods = { + close_converter, + def_wcstombs, + NULL +}; + +static XlcConv +open_wcstombs(from_lcd, from_type, to_lcd, to_type) + XLCd from_lcd; + char *from_type; + XLCd to_lcd; + char *to_type; +{ + return create_conv(from_lcd, &wcstombs_methods); } static XlcConvMethodsRec wcstostr_methods = { close_converter, wcstostr, NULL -} ; +}; static XlcConv open_wcstostr(from_lcd, from_type, to_lcd, to_type) @@ -309,39 +693,71 @@ XLCd to_lcd; char *to_type; { - return create_conv(&wcstostr_methods); + return create_conv(from_lcd, &wcstostr_methods); +} + +static XlcConvMethodsRec wcstocs_methods = { + close_converter, + wcstocs, + NULL +}; + +static XlcConv +open_wcstocs(from_lcd, from_type, to_lcd, to_type) + XLCd from_lcd; + char *from_type; + XLCd to_lcd; + char *to_type; +{ + return create_conv(from_lcd, &wcstocs_methods); } -static XlcConvMethodsRec cstostr_methods = { +static XlcConvMethodsRec strtombs_methods = { close_converter, - cstostr, + strtombs, NULL -} ; +}; static XlcConv -open_cstostr(from_lcd, from_type, to_lcd, to_type) +open_strtombs(from_lcd, from_type, to_lcd, to_type) XLCd from_lcd; char *from_type; XLCd to_lcd; char *to_type; { - return create_conv(&cstostr_methods); + return create_conv(from_lcd, &strtombs_methods); } -static XlcConvMethodsRec strtowcs_methods = { +static XlcConvMethodsRec cstombs_methods = { close_converter, - strtowcs, + cstombs, NULL -} ; +}; static XlcConv -open_strtowcs(from_lcd, from_type, to_lcd, to_type) +open_cstombs(from_lcd, from_type, to_lcd, to_type) XLCd from_lcd; char *from_type; XLCd to_lcd; char *to_type; { - return create_conv(&strtowcs_methods); + return create_conv(from_lcd, &cstombs_methods); +} + +static XlcConvMethodsRec cstowcs_methods = { + close_converter, + cstowcs, + NULL +}; + +static XlcConv +open_cstowcs(from_lcd, from_type, to_lcd, to_type) + XLCd from_lcd; + char *from_type; + XLCd to_lcd; + char *to_type; +{ + return create_conv(from_lcd, &cstowcs_methods); } XLCd @@ -350,29 +766,29 @@ { XLCd lcd; - if (strcmp(name, "C")) - return (XLCd) NULL; - - lcd = _XlcCreateLC(name, _XlcPublicMethods); - if (lcd == (XLCd) NULL) + lcd = _XlcCreateLC(name, _XlcGenericMethods); + if (lcd == NULL) return lcd; - _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNWideChar, open_strtowcs); - _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNCompoundText, open_strtostr); - _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNString, open_strtostr); - _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNCharSet, open_strtostr); - _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNChar, open_strtostr);/* XXX */ + if (XLC_PUBLIC(lcd, mb_cur_max) != 1){ + _XlcDestroyLC(lcd); + return (XLCd) NULL; + } + + _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNWideChar, open_mbstowcs); + _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNString, open_mbstostr); + _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNCharSet, open_mbstocs); + _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNChar, open_mbstocs); - _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNMultiByte, open_wcstostr); - _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNCompoundText, open_wcstostr); + _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNMultiByte, open_wcstombs); _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNString, open_wcstostr); - _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNCharSet, open_wcstostr); + _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNCharSet, open_wcstocs); - _XlcSetConverter(lcd, XlcNString, lcd, XlcNMultiByte, open_strtostr); - _XlcSetConverter(lcd, XlcNString, lcd, XlcNWideChar, open_strtowcs); + _XlcSetConverter(lcd, XlcNString, lcd, XlcNMultiByte, open_strtombs); + _XlcSetConverter(lcd, XlcNString, lcd, XlcNWideChar, open_mbstowcs); - _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNMultiByte, open_cstostr); - _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNWideChar, open_strtowcs); + _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNMultiByte, open_cstombs); + _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNWideChar, open_cstowcs); _XlcAddUtf8Converters(lcd); Index: xc/lib/X11/lcGenConv.c diff -u xc/lib/X11/lcGenConv.c:3.13 xc/lib/X11/lcGenConv.c:3.14 --- xc/lib/X11/lcGenConv.c:3.13 Wed Mar 8 16:33:26 2000 +++ xc/lib/X11/lcGenConv.c Wed Mar 8 16:33:26 2000 @@ -31,7 +31,11 @@ * Modifier: Masayoshi Shimamura FUJITSU LIMITED * */ -/* $XFree86: xc/lib/X11/lcGenConv.c,v 3.13 2000/02/12 02:54:12 dawes Exp $ */ +/* + * 2000 + * Modifier: Ivan Pascal The XFree86 Project + */ +/* $XFree86: xc/lib/X11/lcGenConv.c,v 3.14 2000/02/25 18:27:55 dawes Exp $ */ /* * A generic locale loader for all kinds of ISO-2022 based codesets. @@ -63,9 +67,6 @@ char *encoding; /* Compound Text encoding */ } CTDataRec, *CTData; -extern CTDataRec *default_ct_data_list(); -extern size_t default_ct_data_list_num(); - static CTDataRec directionality_data[] = { { "BEGIN_LEFT-TO-RIGHT_TEXT", "\2331]" }, @@ -75,9 +76,13 @@ typedef struct _StateRec { XLCd lcd; + /* CT state */ XlcCharSet charset; /* charset of current state */ XlcCharSet GL_charset; /* charset of initial state in GL */ XlcCharSet GR_charset; /* charset of initial state in GR */ + /* MB shift state */ + CodeSet GL_codeset; + CodeSet GR_codeset; } StateRec, *State; #define GR 0x80 /* begins right-side (non-ascii) region */ @@ -86,14 +91,13 @@ #define CSI 0x9b #define STX 0x02 -#define isleftside(c) (((c) & GR) ? 0 : 1) -#define isrightside(c) (!isleftside(c)) - +#define isrightside(c) ((c) & GR) +#define isleftside(c) (!isrightside(c)) /* Forward declarations for local routines. */ static int mbstocts(); static int ctstombs(); - +static int cstombs(); /* ------------------------------------------------------------------------- */ /* Misc */ @@ -162,17 +166,16 @@ convlist = conv->convlist; for (i = 0; i < conv_num; i++) { - start_p = convlist[i].start + convlist[i].shift; - start_m = convlist[i].start - convlist[i].shift; - end_p = convlist[i].end + convlist[i].shift; - end_m = convlist[i].end - convlist[i].shift; - switch (convlist[i].shift_direction) { case '+': + start_p = convlist[i].start + convlist[i].shift; + end_p = convlist[i].end + convlist[i].shift; if (start_p <= code && code <= end_p) return(code - convlist[i].shift); break; case '-': + start_m = convlist[i].start - convlist[i].shift; + end_m = convlist[i].end - convlist[i].shift; if (start_m <= code && code <= end_m) return(code + convlist[i].shift); break; @@ -238,11 +241,10 @@ { unsigned char mask = 0; unsigned long wc_encoding = codeset->wc_encoding; - int i, length = codeset->length; + int length = codeset->length; unsigned long wc_shift_bits = XLC_GENERIC(lcd, wc_shift_bits); - for (i = wc_shift_bits; i > 0; i--) - mask = (mask << 1) | 0x01; + mask = (1 << wc_shift_bits) - 1 ; for (*wc = 0, length--; length >= 0; length--) *wc = (*wc << wc_shift_bits) | ((glyph_index >> (length * 8 )) & mask); @@ -277,8 +279,7 @@ if (*codeset == NULL) return(False); - for (i = wc_shift_bits; i > 0; i--) - mask = (mask << 1) | 0x01; + mask = (1 << wc_shift_bits) - 1 ; wc = wc & ~wc_encode_mask; for (*glyph_index = 0, i = (*codeset)->length - 1; i >= 0; i--) @@ -289,6 +290,37 @@ } static CodeSet +mb_parse_codeset(state, num, inbufptr, from_left) + State state; + int num; + char **inbufptr; + int *from_left; +{ + int len; + int from_len = (*from_left) + 1; + char *src = (*inbufptr) - 1; + ParseInfo *mb_parse_list = XLC_GENERIC(state->lcd, mb_parse_list); + ParseInfo parse_info; + CodeSet codeset; + + for (--num ; parse_info = mb_parse_list[num]; num++) { + len = compare(src, parse_info->encoding, from_len); + if (len > 0) { + codeset = parse_info->codeset; + if (parse_info->type == E_LSL) + state->GL_codeset = codeset; + else if (parse_info->type == E_LSR) + state->GR_codeset = codeset; + --len; + *inbufptr += len; + *from_left -= len; + return codeset; + } + } + return (CodeSet) NULL; +} + +static CodeSet byteM_parse_codeset(lcd, inbufptr) XLCd lcd; XPointer inbufptr; @@ -335,36 +367,9 @@ return(NULL); } -static CodeSet -GLGR_parse_codeset(lcd, ch) - XLCd lcd; - unsigned char ch; -{ - int i; - CodeSet initial_state_GL = XLC_GENERIC(lcd, initial_state_GL); - CodeSet initial_state_GR = XLC_GENERIC(lcd, initial_state_GR); - CodeSet *codeset_list = XLC_GENERIC(lcd, codeset_list); - int codeset_num = XLC_GENERIC(lcd, codeset_num); - - XlcSide side = XlcGL; - CodeSet codeset = initial_state_GL; - - if (isrightside(ch)) { - side = XlcGR; - codeset = initial_state_GR; - } - - if (codeset) - return(codeset); - - for (i = 0; i < codeset_num; i++) { - codeset = codeset_list[i]; - if (codeset->side == side) - return(codeset); - } - - return(NULL); -} +#define GLGR_parse_codeset(ch) \ + (isrightside(ch) ? (state->GR_codeset) : \ + (state->GL_codeset) ) static XlcCharSet gi_parse_charset(glyph_index, codeset) @@ -378,8 +383,6 @@ XlcCharSet charset; int area_num; FontScope area; - CTDataRec *default_ct_data = default_ct_data_list(); - size_t table_size = default_ct_data_list_num(); /* lockup ct sequence */ for (i = 0; i < num_charsets; i++) { @@ -390,15 +393,9 @@ if (i >= num_charsets) return(NULL); - /* Standard Character Set Encoding ? */ - for (i = 0; i < table_size; i++) - if (compare(charset->ct_sequence, - default_ct_data[i].encoding, strlen(charset->ct_sequence))) - goto check_extended_seg; - - return(charset); + if (charset->source != CSsrcStd) + return (charset); -check_extended_seg: if (!ctextseg) return(charset); @@ -442,15 +439,14 @@ } static int -cmp_esc_sequence(inbufptr, ct_sequence, encoding_name) +cmp_esc_sequence(inbufptr, charset) XPointer inbufptr; - char *ct_sequence; - char *encoding_name; + XlcCharSet charset; { - int i, seq_len, name_len, total_len; + int seq_len, name_len, total_len; unsigned char byte_m, byte_l; - CTDataRec *default_ct_data = default_ct_data_list(); - size_t table_size = default_ct_data_list_num(); + char *ct_sequence = charset->ct_sequence; + char *encoding_name = charset->encoding_name; /* check esc sequence */ if ( !(seq_len = strlen(ct_sequence) ) ) @@ -459,11 +455,8 @@ return(0); /* Standard Character Set Encoding ? */ - for (i = 0; i < table_size; i++) { - if (compare(ct_sequence, - default_ct_data[i].encoding, strlen(ct_sequence))) - return(seq_len); - } + if(charset->source == CSsrcStd) + return(seq_len); /* * Non-Standard Character Set Encoding @@ -525,15 +518,13 @@ for (j = 0; j < num_charsets; j++) { *charset = charset_list[j]; - if (( *ctr_seq_len = cmp_esc_sequence(inbufptr, - (*charset)->ct_sequence, (*charset)->encoding_name) )) + if ( *ctr_seq_len = cmp_esc_sequence(inbufptr, *charset) ) return(True); } if (ctextseg) { *charset = ctextseg->charset; - if (( *ctr_seq_len = cmp_esc_sequence(inbufptr, - (*charset)->ct_sequence, (*charset)->encoding_name) )) + if ( *ctr_seq_len = cmp_esc_sequence(inbufptr, *charset) ) return(True); } } @@ -545,15 +536,13 @@ for (i = 0; i < segment_conv_num; i++) { *charset = segment_conv[i].source; - if (( *ctr_seq_len = cmp_esc_sequence(inbufptr, - (*charset)->ct_sequence, (*charset)->encoding_name) )) + if ( *ctr_seq_len = cmp_esc_sequence(inbufptr, *charset) ) return(True); *charset = segment_conv[i].dest; - if (( *ctr_seq_len = cmp_esc_sequence(inbufptr, - (*charset)->ct_sequence, (*charset)->encoding_name) )) + if ( *ctr_seq_len = cmp_esc_sequence(inbufptr, *charset) ) return(True); } - + return(False); } @@ -632,15 +621,13 @@ CodeSet *codeset; unsigned long *glyph_index; { - int i, j, num; + int j, num; CodeSet *codeset_list = XLC_GENERIC(lcd, codeset_list); XlcCharSet *charset_list; int codeset_num, num_charsets; Conversion ctconv; unsigned long glyph_index_tmp; ExtdSegment ctextseg; - CTDataRec *default_ct_data = default_ct_data_list(); - size_t table_size = default_ct_data_list_num(); codeset_num = XLC_GENERIC(lcd, codeset_num); @@ -654,14 +641,7 @@ glyph_index_tmp = conv_to_source(ctconv, *glyph_index); - /* Standard Character Set Encoding ? */ - for (i = 0; i < table_size; i++) { - if (compare(charset->ct_sequence, - default_ct_data[i].encoding, strlen(charset->ct_sequence))) - break; - } - - if (i < table_size) { + if(charset->source == CSsrcStd) { /* Standard Character Set Encoding */ if (glyph_index_tmp == *glyph_index) { @@ -700,24 +680,7 @@ return(False); } -static Bool -check_string_encoding(codeset) - CodeSet codeset; -{ - int i; - XlcCharSet charset; - XlcCharSet *charset_list = codeset->charset_list; - int num_charsets = codeset->num_charsets; - - for (i = 0; i < num_charsets; i++) { - charset = charset_list[i]; - if ( strcmp(charset->encoding_name, "ISO8859-1") == 0 || - charset->string_encoding) - return(True); - } - - return(False); -} +#define check_string_encoding(codeset) (codeset->string_encoding) static void output_ulong_value(outbufptr, code, length, side) @@ -727,10 +690,9 @@ XlcSide side; { int i; - unsigned long mask = 0xff; - for (i = 0; i < length; i++) { - *outbufptr = ( code >> (8 * (length - i - 1)) ) & mask; + for (i = (length - 1) * 8; i >= 0; i -= 8) { + *outbufptr = ( code >> i) & 0xff; if (side == XlcC0 || side == XlcGL) { *outbufptr = *outbufptr & GL; @@ -746,6 +708,9 @@ /* Init */ /* -------------------------------------------------------------------------- */ +static XlcCharSet default_GL_charset = 0; +static XlcCharSet default_GR_charset = 0; + static void init_state(conv) XlcConv conv; @@ -754,8 +719,12 @@ /* for CT */ state->charset = NULL; - state->GL_charset = _XlcGetCharSet("ISO8859-1:GL"); - state->GR_charset = _XlcGetCharSet("ISO8859-1:GR"); + state->GL_charset = default_GL_charset; + state->GR_charset = default_GR_charset; + + /* for MB shift state */ + state->GL_codeset = XLC_GENERIC(state->lcd, initial_state_GL); + state->GR_codeset = XLC_GENERIC(state->lcd, initial_state_GR); } /* -------------------------------------------------------------------------- */ @@ -782,18 +751,19 @@ int length = 0, len_left = 0; int unconv_num = 0; int num; - Bool ss_flag = 0; CodeSet codeset = NULL; - ParseInfo parse_info; XPointer inbufptr = *from; wchar_t *outbufptr = (wchar_t *) *to; int from_size = *from_left; unsigned char *mb_parse_table = XLC_GENERIC(lcd, mb_parse_table); - ParseInfo *mb_parse_list = XLC_GENERIC(lcd, mb_parse_list); + if (from == NULL || *from == NULL) { + _XlcResetConverter(conv); + return( 0 ); + } if (*from_left > *to_left) *from_left = *to_left; @@ -822,25 +792,20 @@ goto output_one_wc; /* next mb char data for single shift ? */ - if (mb_parse_table) { - if ((num = mb_parse_table[ch]) > 0) { - parse_info = mb_parse_list[num - 1]; - - codeset = parse_info->codeset; + if (mb_parse_table && (num = mb_parse_table[ch]) ) { + if( codeset = mb_parse_codeset(state, num, &inbufptr, from_left)) { length = len_left = codeset->length; mb = 0; - ss_flag = 1; - continue; } - } + } /* next mb char data for byteM ? */ if ((codeset = byteM_parse_codeset(lcd, (inbufptr - 1)))) goto next_mb_char; /* next mb char data for GL or GR side ? */ - if ((codeset = GLGR_parse_codeset(lcd, ch))) + if ((codeset = GLGR_parse_codeset(ch))) goto next_mb_char; /* can't find codeset for the ch */ @@ -850,7 +815,6 @@ next_mb_char: length = len_left = codeset->length; mb = 0; - ss_flag = 0; output_one_wc: mb = (mb << 8) | ch; /* 1 byte left shift */ @@ -867,9 +831,9 @@ /* error check on last char */ if (len_left) { - inbufptr -= (length - len_left + ss_flag); - (*from_left) += (length - len_left + ss_flag); - unconv_num += (length - len_left + ss_flag); + inbufptr -= (length - len_left); + (*from_left) += (length - len_left); + unconv_num += (length - len_left); } *from = *from + from_size; @@ -979,9 +943,10 @@ /* output default_string of XDefaultString() */ if (*to_left < defstr_len) break; - if (outbufptr) {strncpy((char *)outbufptr, default_string, defstr_len);} - - if (outbufptr) {outbufptr += defstr_len;} + if (outbufptr) { + strncpy((char *)outbufptr, default_string, defstr_len); + outbufptr += defstr_len; + } (*to_left) -= defstr_len; unconv_num++; @@ -989,16 +954,37 @@ } else { mb = gi_to_mb(glyph_index, codeset); if (codeset->parse_info) { + Bool need_shift = False; + switch (codeset->parse_info->type) { + case E_LSL : + if (codeset != state->GL_codeset) { + need_shift = True; + state->GL_codeset = codeset; + } + break; + case E_LSR : + if (codeset != state->GR_codeset) { + need_shift = True; + state->GR_codeset = codeset; + } + break; + /* case E_SS */ + default: + need_shift = True; + } /* output shift sequence */ - encoding = codeset->parse_info->encoding; - length = strlen(encoding); - if (*to_left < length) - break; - if (outbufptr) {strncpy((char *)outbufptr, encoding, length);} - - if (outbufptr) {outbufptr += length;} - (*to_left) -= length; + if (need_shift) { + encoding = codeset->parse_info->encoding; + length = strlen(encoding); + if (*to_left < length) + break; + if (outbufptr) { + strncpy((char *)outbufptr, encoding, length); + outbufptr += length; + } + (*to_left) -= length; + } } /* output characters */ @@ -1076,13 +1062,11 @@ { State state = (State) conv->state; XLCd lcd = state->lcd; - CTDataRec *default_ct_data = default_ct_data_list(); - size_t table_size = default_ct_data_list_num(); unsigned long glyph_index; wchar_t wc; - int i, total_len, seq_len, name_len; + int total_len, seq_len, name_len; int unconv_num = 0; Bool first_flag = True, standard_flag; XlcSide side; @@ -1125,11 +1109,7 @@ } /* Standard Character Set Encoding ? */ - standard_flag = False; - for (i = 0; i < table_size; i++) - if (compare(charset->ct_sequence, - default_ct_data[i].encoding, strlen(charset->ct_sequence))) - standard_flag = True; + standard_flag = charset->source == CSsrcStd ? True : False; /* * Non-Standard Character Set Encoding @@ -1157,7 +1137,7 @@ /* output escape sequence of CT */ if ( (charset != old_charset) && - !(first_flag && (strcmp(charset->encoding_name,"ISO8859-1")==0))) { + !(first_flag && charset->string_encoding) ){ if (*to_left < total_len + 1) { unconv_num++; @@ -1271,10 +1251,10 @@ int from_size = *from_left; - init_state(conv); + _XlcResetConverter(conv); /* ??? */ if (from == NULL || *from == NULL) { - init_state(conv); + _XlcResetConverter(conv); return( 0 ); } @@ -1381,10 +1361,7 @@ /* segment conversion */ charset_tmp = state->charset; - if ( !segment_conversion(lcd, &charset_tmp, &glyph_index) ) { - unconv_num += gi_len; - continue; - } + segment_conversion(lcd, &charset_tmp, &glyph_index); /* get codeset */ if ( !_XlcGetCodeSetFromCharSet(lcd, charset_tmp, @@ -1436,6 +1413,105 @@ } static int +cstowcs(conv, from, from_left, to, to_left, args, num_args) + XlcConv conv; + XPointer *from; + int *from_left; + XPointer *to; + int *to_left; + XPointer *args; + int num_args; +{ + State state = (State) conv->state; + XLCd lcd = state->lcd; + + unsigned char ch; + unsigned long glyph_index = 0; + wchar_t wc; + int gi_len_left = 0, gi_len = 0; + + int unconv_num = 0; + + CodeSet codeset = NULL; + XlcCharSet charset, charset_tmp; + + XPointer inbufptr = *from; + wchar_t *outbufptr = (wchar_t *) *to; + int from_size = *from_left; + + if (from == NULL || *from == NULL) { + return( 0 ); + } + + charset = (XlcCharSet) args[0]; + + while (*from_left && *to_left) { + + if (!gi_len_left) { + gi_len_left = gi_len = charset->char_size; + glyph_index = 0; + } + + ch = *inbufptr++; + (*from_left)--; + + /* null ? */ + if (!ch) { + if (outbufptr) {*outbufptr++ = L'\0';} + (*to_left)--; + + /* error check */ + if (gi_len_left) { + unconv_num += (gi_len - gi_len_left); + gi_len_left = 0; + } + continue; + } + + if (charset->side == XlcC1 || charset->side == XlcGR) + glyph_index = (glyph_index << 8) | (ch & GL); + else + glyph_index = (glyph_index << 8) | ch; + + gi_len_left--; + + /* last of one glyph_index data */ + if (!gi_len_left) { + + /* segment conversion */ + charset_tmp = charset; + segment_conversion(lcd, &charset_tmp, &glyph_index); + + /* get codeset */ + if ( !_XlcGetCodeSetFromCharSet(lcd, charset_tmp, + &codeset, &glyph_index) ) { + unconv_num += gi_len; + continue; + } + + /* convert glyph index to wicd char */ + gi_to_wc(lcd, glyph_index, codeset, &wc); + if (outbufptr) {*outbufptr++ = wc;} + (*to_left)--; + } + + } /* end of while */ + + /* error check on last char */ + if (gi_len_left) { + inbufptr -= (gi_len - gi_len_left); + (*from_left) += (gi_len - gi_len_left); + unconv_num += (gi_len - gi_len_left); + } + + *from = *from + from_size; + *from_left = 0; + *to = (XPointer)outbufptr; + + return unconv_num; +} + +static int stdc_ctstowcs(conv, from, from_left, to, to_left, args, num_args) XlcConv conv; XPointer *from; @@ -1472,6 +1548,42 @@ } static int +stdc_cstowcs(conv, from, from_left, to, to_left, args, num_args) + XlcConv conv; + XPointer *from; + int *from_left; + XPointer *to; + int *to_left; + XPointer *args; + int num_args; +{ + XPointer buf = Xmalloc((*from_left) * MB_CUR_MAX); + XPointer buf_ptr1 = buf; + int buf_left1 = (*from_left) * MB_CUR_MAX; + XPointer buf_ptr2 = buf_ptr1; + int buf_left2; + int unconv_num1 = 0, unconv_num2 = 0; + + unconv_num1 = cstombs(conv, + from, from_left, &buf_ptr1, &buf_left1, args, num_args); + if (unconv_num1 < 0) + goto ret; + + buf_left2 = buf_ptr1 - buf_ptr2; + + unconv_num2 = stdc_mbstowcs(conv, + &buf_ptr2, &buf_left2, to, to_left, args, num_args); + if (unconv_num2 < 0) + goto ret; + +ret: + if (buf) + Xfree((char *)buf); + + return (unconv_num1 + unconv_num2); +} + +static int mbstocts(conv, from, from_left, to, to_left, args, num_args) XlcConv conv; XPointer *from; @@ -1523,22 +1635,22 @@ unsigned char ch; unsigned long mb = 0; - int length = 0, len_left = 0; int unconv_num = 0; int num; - Bool ss_flag = 0; CodeSet codeset = NULL; - ParseInfo parse_info; XPointer inbufptr = *from; XPointer outbufptr = *to; int from_size = *from_left; unsigned char *mb_parse_table = XLC_GENERIC(lcd, mb_parse_table); - ParseInfo *mb_parse_list = XLC_GENERIC(lcd, mb_parse_list); + if (from == NULL || *from == NULL) { + _XlcResetConverter(conv); + return( 0 ); + } if (*from_left > *to_left) *from_left = *to_left; @@ -1567,25 +1679,20 @@ goto output_one_mb; /* next mb char data for single shift ? */ - if (mb_parse_table) { - if ((num = mb_parse_table[ch]) > 0) { - parse_info = mb_parse_list[num - 1]; - - codeset = parse_info->codeset; - length = len_left = codeset->length; - mb = 0; - ss_flag = 1; - - continue; + if (mb_parse_table && (num = mb_parse_table[ch]) ) { + if( codeset = mb_parse_codeset(state, num, &inbufptr, from_left)) { + length = len_left = codeset->length; + mb = 0; + continue; } - } - + } + /* next char data : byteM ? */ if ((codeset = byteM_parse_codeset(lcd, (inbufptr - 1)))) goto next_mb_char; /* next char data : GL or GR side ? */ - if ((codeset = GLGR_parse_codeset(lcd, ch))) + if ((codeset = GLGR_parse_codeset(ch))) goto next_mb_char; /* can't find codeset for the ch */ @@ -1595,7 +1702,6 @@ next_mb_char: length = len_left = codeset->length; mb = 0; - ss_flag = 0; output_one_mb: mb = (mb << 8) | ch; /* 1 byte left shift */ @@ -1615,9 +1721,9 @@ /* error check on last char */ if (len_left) { - inbufptr -= (length - len_left + ss_flag); - (*from_left) += (length - len_left + ss_flag); - unconv_num += (length - len_left + ss_flag); + inbufptr -= (length - len_left); + (*from_left) += (length - len_left); + unconv_num += (length - len_left); } *from = *from + from_size; @@ -1651,16 +1757,17 @@ CodeSet codeset = NULL; XlcCharSet charset; - ParseInfo parse_info; XPointer inbufptr = *from; XPointer outbufptr = *to; int from_size = *from_left; - unsigned char *mb_parse_table = XLC_GENERIC(lcd, mb_parse_table); - ParseInfo *mb_parse_list = XLC_GENERIC(lcd, mb_parse_list); + if (from == NULL || *from == NULL) { + _XlcResetConverter(conv); + return( 0 ); + } if (*from_left > *to_left) *from_left = *to_left; @@ -1683,24 +1790,20 @@ goto output; /* next mb char data for single shift ? */ - if (mb_parse_table) { - if ((num = mb_parse_table[ch]) > 0) { - parse_info = mb_parse_list[num - 1]; - - codeset = parse_info->codeset; + if (mb_parse_table && (num = mb_parse_table[ch]) ) { + if( codeset = mb_parse_codeset(state, num, &inbufptr, from_left)) { length = len_left = codeset->length; mb = 0; - continue; } - } - + } + /* next mb char data for byteM ? */ if ((codeset = byteM_parse_codeset(lcd, (inbufptr - 1)))) goto next_mb_char; /* next mb char data for GL or GR side ? */ - if ((codeset = GLGR_parse_codeset(lcd, ch))) + if ((codeset = GLGR_parse_codeset(ch))) goto next_mb_char; /* can't find codeset for the ch */ @@ -1785,7 +1888,7 @@ ret = mbtocs(conv, from, from_left, to, to_left, tmp_args, 1); charset_old = charset; - + while ( ret == 0 && *from_left && *to_left) { inbufptr = *from; in_left = *from_left; @@ -1863,34 +1966,57 @@ /* output default_string of XDefaultString() */ if (*to_left < defstr_len) break; - if (outbufptr) {strncpy((char *)outbufptr, default_string, defstr_len);} - - if (outbufptr) {outbufptr += defstr_len;} + if (outbufptr) { + strncpy((char *)outbufptr, default_string, defstr_len); + outbufptr += defstr_len; + } (*to_left) -= defstr_len; unconv_num++; } else { mb = gi_to_mb(glyph_index, codeset); - if (codeset->parse_info) { - /* output shift sequence */ - encoding = codeset->parse_info->encoding; - length = strlen(encoding); - if (*to_left < length) - break; - if (check_string_encoding(codeset)) { - if (outbufptr) {strncpy((char *)outbufptr, encoding, length);} - if (outbufptr) {outbufptr += length;} - (*to_left) -= length; + if (check_string_encoding(codeset)) { + if (codeset->parse_info) { + Bool need_shift = False; + switch (codeset->parse_info->type) { + case E_LSL : + if (codeset != state->GL_codeset) { + need_shift = True; + state->GL_codeset = codeset; + } + break; + case E_LSR : + if (codeset != state->GR_codeset) { + need_shift = True; + state->GR_codeset = codeset; + } + break; + /* case E_SS */ + default: + need_shift = True; + } + + /* output shift sequence */ + if (need_shift) { + encoding = codeset->parse_info->encoding; + length = strlen(encoding); + if (*to_left < length) + break; + + if (outbufptr) { + strncpy((char *)outbufptr, encoding, length); + outbufptr += length; + } + (*to_left) -= length; + } } - } - /* output characters */ - length = codeset->length; - if (*to_left < length) - break; - if (check_string_encoding(codeset)) { + /* output characters */ + length = codeset->length; + if (*to_left < length) + break; if (outbufptr) { output_ulong_value(outbufptr, mb, length, XlcNONE); @@ -1975,8 +2101,6 @@ XPointer outbufptr = *to; int from_size = *from_left; - - if (*from_left > *to_left) *from_left = *to_left; @@ -2224,6 +2348,42 @@ } static int +cstombs(conv, from, from_left, to, to_left, args, num_args) + XlcConv conv; + XPointer *from; + int *from_left; + XPointer *to; + int *to_left; + XPointer *args; + int num_args; +{ + XPointer buf = Xmalloc((*from_left) * sizeof(wchar_t)); + XPointer buf_ptr1 = buf; + int buf_left1 = (*from_left); + XPointer buf_ptr2 = buf_ptr1; + int buf_left2; + int unconv_num1 = 0, unconv_num2 = 0; + + unconv_num1 = cstowcs(conv, + from, from_left, &buf_ptr1, &buf_left1, args, num_args); + if (unconv_num1 < 0) + goto ret; + + buf_left2 = (buf_ptr1 - buf_ptr2) / sizeof(wchar_t); + + unconv_num2 += wcstombs_org(conv, + &buf_ptr2, &buf_left2, to, to_left, args, num_args); + if (unconv_num2 < 0) + goto ret; + +ret: + if (buf) + Xfree((char *)buf); + + return (unconv_num1 + unconv_num2); +} + +static int strtombs(conv, from, from_left, to, to_left, args, num_args) XlcConv conv; XPointer *from; @@ -2281,16 +2441,37 @@ mb = gi_to_mb(glyph_index, codeset); if (codeset->parse_info) { + Bool need_shift = False; + switch (codeset->parse_info->type) { + case E_LSL : + if (codeset != state->GL_codeset) { + need_shift = True; + state->GL_codeset = codeset; + } + break; + case E_LSR : + if (codeset != state->GR_codeset) { + need_shift = True; + state->GR_codeset = codeset; + } + break; + /* case E_SS */ + default: + need_shift = True; + } /* output shift sequence */ - encoding = codeset->parse_info->encoding; - length = strlen(encoding); - if (*to_left < length) - break; - if (outbufptr) {strncpy((char *)outbufptr, encoding, length);} - - if (outbufptr) {outbufptr += length;} - (*to_left) -= length; + if (need_shift) { + encoding = codeset->parse_info->encoding; + length = strlen(encoding); + if (*to_left < length) + break; + if (outbufptr) { + strncpy((char *)outbufptr, encoding, length); + outbufptr += length; + } + (*to_left) -= length; + } } /* output characters */ @@ -2456,8 +2637,7 @@ if (conv->methods == NULL) goto err; *conv->methods = *methods; - if (XLC_PUBLIC(lcd, is_state_depend)) - conv->methods->reset = init_state; + conv->methods->reset = init_state; conv->state = (XPointer) Xmalloc(sizeof(StateRec)); if (conv->state == NULL) @@ -2466,7 +2646,8 @@ state = (State) conv->state; state->lcd = lcd; - init_state(conv); + + _XlcResetConverter(conv); return conv; @@ -2556,6 +2737,22 @@ return create_conv(from_lcd, &ctstombs_methods); } +static XlcConvMethodsRec cstombs_methods = { + close_converter, + cstombs, + NULL +} ; + +static XlcConv +open_cstombs(from_lcd, from_type, to_lcd, to_type) + XLCd from_lcd; + char *from_type; + XLCd to_lcd; + char *to_type; +{ + return create_conv(from_lcd, &cstombs_methods); +} + static XlcConvMethodsRec strtombs_methods = { close_converter, strtombs, @@ -2686,6 +2883,22 @@ return create_conv(from_lcd, &stdc_ctstowcs_methods); } +static XlcConvMethodsRec stdc_cstowcs_methods = { + close_converter, + stdc_cstowcs, + NULL +} ; + +static XlcConv +open_stdc_cstowcs(from_lcd, from_type, to_lcd, to_type) + XLCd from_lcd; + char *from_type; + XLCd to_lcd; + char *to_type; +{ + return create_conv(from_lcd, &stdc_cstowcs_methods); +} + static XlcConvMethodsRec stdc_strtowcs_methods = { close_converter, stdc_strtowcs, @@ -2816,6 +3029,22 @@ return create_conv(from_lcd, &ctstowcs_methods); } +static XlcConvMethodsRec cstowcs_methods = { + close_converter, + cstowcs, + NULL +} ; + +static XlcConv +open_cstowcs(from_lcd, from_type, to_lcd, to_type) + XLCd from_lcd; + char *from_type; + XLCd to_lcd; + char *to_type; +{ + return create_conv(from_lcd, &cstowcs_methods); +} + static XlcConvMethodsRec strtowcs_methods = { close_converter, strtowcs, @@ -2847,13 +3076,17 @@ if (lcd == NULL) return lcd; + default_GL_charset = _XlcGetCharSet("ISO8859-1:GL"); + default_GR_charset = _XlcGetCharSet("ISO8859-1:GR"); + _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNCompoundText, open_mbstocts); _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNString, open_mbstostr); _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNCharSet, open_mbstocs); _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNChar, open_mbtocs); _XlcSetConverter(lcd, XlcNCompoundText, lcd, XlcNMultiByte, open_ctstombs); _XlcSetConverter(lcd, XlcNString, lcd, XlcNMultiByte, open_strtombs); - + _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNMultiByte, open_cstombs); + #ifdef STDCVT gen = XLC_GENERIC_PART(lcd); @@ -2867,6 +3100,7 @@ _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNChar, open_wctocs); _XlcSetConverter(lcd, XlcNCompoundText, lcd, XlcNWideChar, open_ctstowcs); _XlcSetConverter(lcd, XlcNString, lcd, XlcNWideChar, open_strtowcs); + _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNWideChar, open_cstowcs); #ifdef STDCVT } #endif @@ -2881,6 +3115,7 @@ _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNChar, open_stdc_wctocs); _XlcSetConverter(lcd, XlcNCompoundText, lcd, XlcNWideChar, open_stdc_ctstowcs); _XlcSetConverter(lcd, XlcNString, lcd, XlcNWideChar, open_stdc_strtowcs); + _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNWideChar, open_stdc_cstowcs); } #endif @@ -2888,4 +3123,3 @@ return lcd; } - Index: xc/lib/X11/lcGeneric.c diff -u xc/lib/X11/lcGeneric.c:3.8 xc/lib/X11/lcGeneric.c:3.9 --- xc/lib/X11/lcGeneric.c:3.8 Wed Mar 8 16:33:26 2000 +++ xc/lib/X11/lcGeneric.c Wed Mar 8 16:33:26 2000 @@ -28,7 +28,7 @@ * This is source code modified by FUJITSU LIMITED under the Joint * Development Agreement for the CDE/Motif PST. */ -/* $XFree86: xc/lib/X11/lcGeneric.c,v 3.8 2000/02/08 17:18:45 dawes Exp $ */ +/* $XFree86: xc/lib/X11/lcGeneric.c,v 3.9 2000/02/25 18:27:56 dawes Exp $ */ #include <stdio.h> #include "Xlibint.h" @@ -405,6 +405,7 @@ (charset = _XlcCreateDefaultCharSet(name, ""))) { _XlcAddCharSet(charset); *new = 1; + charset->source = CSsrcXLC; } return(charset); } @@ -733,6 +734,7 @@ unsigned long l; int i; int M,ii; + XlcCharSet charset; gen->codeset_num = 0; @@ -861,7 +863,6 @@ sprintf(name, "%s.%s", cs, "ct_encoding"); _XlcGetResource(lcd, "XLC_XLOCALE", name, &value, &num); if (num > 0) { - XlcCharSet charset; char *encoding; if (codeset == NULL && (codeset = add_codeset(gen)) == NULL) @@ -981,6 +982,34 @@ read_charset_define(lcd,gen); /* For VW/UDC */ read_segmentconversion(lcd,gen); /* For VW/UDC */ + if (gen->initial_state_GL == NULL) { + CodeSetRec *codeset; + for (i = 0; i < gen->codeset_num; i++){ + codeset = gen->codeset_list[i]; + if (codeset->side == XlcGL) + gen->initial_state_GL = codeset; + } + } + + if (gen->initial_state_GR == NULL) { + CodeSetRec *codeset; + for (i = 0; i < gen->codeset_num; i++){ + codeset = gen->codeset_list[i]; + if (codeset->side == XlcGR) + gen->initial_state_GR = codeset; + } + } + + for (i = 0; i < gen->codeset_num; i++){ + CodeSetRec *codeset = gen->codeset_list[i]; + for (ii = 0; ii < codeset->num_charsets; ii++){ + charset = codeset->charset_list[ii]; + if (! strcmp(charset->encoding_name, "ISO8859-1")) + charset->string_encoding = True; + if ( charset->string_encoding ) + codeset->string_encoding = True; + } + } return True; err: Index: xc/lib/X11/lcUTF8.c diff -u xc/lib/X11/lcUTF8.c:1.1 xc/lib/X11/lcUTF8.c:1.2 --- xc/lib/X11/lcUTF8.c:1.1 Wed Mar 8 16:33:27 2000 +++ xc/lib/X11/lcUTF8.c Wed Mar 8 16:33:27 2000 @@ -24,7 +24,7 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************/ -/* $XFree86: xc/lib/X11/lcUTF8.c,v 1.1 2000/02/12 02:54:15 dawes Exp $ */ +/* $XFree86: xc/lib/X11/lcUTF8.c,v 1.2 2000/02/29 03:09:04 dawes Exp $ */ /* * This file contains: @@ -124,7 +124,8 @@ #define conv_t XlcConv typedef struct _Utf8ConvRec { - char *name; + const char *name; + XrmQuark xrm_name; #if NeedFunctionPrototypes int (* cstowc) (XlcConv, wchar_t *, unsigned char const *, int); #else @@ -205,92 +206,92 @@ #endif static Utf8ConvRec all_charsets[] = { - { "ISO8859-1", + { "ISO8859-1", NULLQUARK, iso8859_1_mbtowc, iso8859_1_wctomb }, - { "ISO8859-2", + { "ISO8859-2", NULLQUARK, iso8859_2_mbtowc, iso8859_2_wctomb }, - { "ISO8859-3", + { "ISO8859-3", NULLQUARK, iso8859_3_mbtowc, iso8859_3_wctomb }, - { "ISO8859-4", + { "ISO8859-4", NULLQUARK, iso8859_4_mbtowc, iso8859_4_wctomb }, - { "ISO8859-5", + { "ISO8859-5", NULLQUARK, iso8859_5_mbtowc, iso8859_5_wctomb }, - { "ISO8859-6", + { "ISO8859-6", NULLQUARK, iso8859_6_mbtowc, iso8859_6_wctomb }, - { "ISO8859-7", + { "ISO8859-7", NULLQUARK, iso8859_7_mbtowc, iso8859_7_wctomb }, - { "ISO8859-8", + { "ISO8859-8", NULLQUARK, iso8859_8_mbtowc, iso8859_8_wctomb }, - { "ISO8859-9", + { "ISO8859-9", NULLQUARK, iso8859_9_mbtowc, iso8859_9_wctomb }, - { "ISO8859-10", + { "ISO8859-10", NULLQUARK, iso8859_10_mbtowc, iso8859_10_wctomb }, - { "ISO8859-14", + { "ISO8859-14", NULLQUARK, iso8859_14_mbtowc, iso8859_14_wctomb }, - { "ISO8859-15", + { "ISO8859-15", NULLQUARK, iso8859_15_mbtowc, iso8859_15_wctomb }, - { "ISO8859-16", + { "ISO8859-16", NULLQUARK, iso8859_16_mbtowc, iso8859_16_wctomb }, - { "JISX0201.1976-0", + { "JISX0201.1976-0", NULLQUARK, jisx0201_mbtowc, jisx0201_wctomb }, - { "GB2312.1980-0", + { "GB2312.1980-0", NULLQUARK, gb2312_mbtowc, gb2312_wctomb }, - { "JISX0208.1983-0", + { "JISX0208.1983-0", NULLQUARK, jisx0208_mbtowc, jisx0208_wctomb }, - { "JISX0212.1990-0", + { "JISX0212.1990-0", NULLQUARK, jisx0212_mbtowc, jisx0212_wctomb }, - { "KSC5601.1987-0", + { "KSC5601.1987-0", NULLQUARK, ksc5601_mbtowc, ksc5601_wctomb }, - { "TIS620.2533-1", + { "TIS620.2533-1", NULLQUARK, tis620_mbtowc, tis620_wctomb }, - { "KOI8-R", + { "KOI8-R", NULLQUARK, koi8_r_mbtowc, koi8_r_wctomb }, - { "KOI8-U", + { "KOI8-U", NULLQUARK, koi8_u_mbtowc, koi8_u_wctomb }, - { "ARMSCII-8", + { "ARMSCII-8", NULLQUARK, armscii_8_mbtowc, armscii_8_wctomb }, - { "IBM-CP1133", + { "IBM-CP1133", NULLQUARK, cp1133_mbtowc, cp1133_wctomb }, - { "MULELAO-1", + { "MULELAO-1", NULLQUARK, mulelao_mbtowc, mulelao_wctomb }, - { "VISCII1.1-1", + { "VISCII1.1-1", NULLQUARK, viscii_mbtowc, viscii_wctomb }, - { "TCVN-5712", + { "TCVN-5712", NULLQUARK, tcvn_mbtowc, tcvn_wctomb }, - { "GEORGIAN-ACADEMY", + { "GEORGIAN-ACADEMY", NULLQUARK, georgian_academy_mbtowc, georgian_academy_wctomb }, - { "GEORGIAN-PS", + { "GEORGIAN-PS", NULLQUARK, georgian_ps_mbtowc, georgian_ps_wctomb }, #ifdef notdef - { "BIG-5", + { "BIG-5", NULLQUARK, big5_mbtowc, big5_wctomb }, #endif @@ -298,6 +299,22 @@ #define all_charsets_count (sizeof(all_charsets)/sizeof(all_charsets[0])) +static void +init_all_charsets() +{ + Utf8Conv convptr; + int i; + + for (convptr = all_charsets, i = all_charsets_count; i > 0; convptr++, i--) + convptr->xrm_name = XrmStringToQuark(convptr->name); +} + +#define lazy_init_all_charsets() \ + do { \ + if (all_charsets[0].xrm_name == NULLQUARK) \ + init_all_charsets(); \ + } while (0) + /* * UTF-8 itself */ @@ -500,6 +517,7 @@ XLCd to_lcd; char *to_type; { + lazy_init_all_charsets(); return create_conv(from_lcd, &methods_cstoutf8); } @@ -521,6 +539,8 @@ if (conv == (XlcConv) NULL) return (XlcConv) NULL; + lazy_init_all_charsets(); + codeset_list = XLC_GENERIC(lcd, codeset_list); codeset_num = XLC_GENERIC(lcd, codeset_num); @@ -575,12 +595,14 @@ /* * Converts a Unicode character to an appropriate character set. The NULL * terminated array of preferred character sets is passed as first argument. - * If successful, *charsetp is set to the character set that was used. + * If successful, *charsetp is set to the character set that was used, and + * *sidep is set to the character set side (XlcGL or XlcGR). */ static int -charset_wctocs(preferred, charsetp, conv, r, wc, n) +charset_wctocs(preferred, charsetp, sidep, conv, r, wc, n) Utf8Conv *preferred; Utf8Conv *charsetp; + XlcSide *sidep; XlcConv conv; unsigned char *r; wchar_t wc; @@ -597,6 +619,7 @@ return 0; if (count > 0) { *charsetp = convptr; + *sidep = (*r < 0x80 ? XlcGL : XlcGR); return count; } } @@ -606,6 +629,7 @@ return 0; if (count > 0) { *charsetp = convptr; + *sidep = (*r < 0x80 ? XlcGL : XlcGR); return count; } } @@ -623,7 +647,7 @@ int num_args; { Utf8Conv *preferred_charsets; - Utf8Conv last_charset = NULL; + XlcCharSet last_charset = NULL; unsigned char const *src; unsigned char const *srcend; unsigned char *dst; @@ -641,7 +665,8 @@ unconv_num = 0; while (src < srcend && dst < dstend) { - Utf8Conv chosen_charset = NULL; /* FIXME: side */ + Utf8Conv chosen_charset = NULL; + XlcSide chosen_side = XlcNONE; wchar_t wc; int consumed; int count; @@ -655,7 +680,7 @@ continue; } - count = charset_wctocs(preferred_charsets, &chosen_charset, conv, dst, wc, dstend-dst); + count = charset_wctocs(preferred_charsets, &chosen_charset, &chosen_side, conv, dst, wc, dstend-dst); if (count == 0) break; if (count < 0) { @@ -664,11 +689,22 @@ continue; } - if (last_charset != NULL && chosen_charset != last_charset) - break; + if (last_charset == NULL) { + last_charset = + _XlcGetCharSetWithSide(chosen_charset->name, chosen_side); + if (last_charset == NULL) { + src += consumed; + unconv_num++; + continue; + } + } else { + if (!(last_charset->xrm_encoding_name == chosen_charset->xrm_name + && (last_charset->side == XlcGLGR + || last_charset->side == chosen_side))) + break; + } src += consumed; dst += count; - last_charset = chosen_charset; } if (last_charset == NULL) @@ -680,7 +716,7 @@ *to_left = dstend - dst; if (num_args >= 1) - *((XlcCharSet *)args[0]) = _XlcGetCharSet(last_charset->name); + *((XlcCharSet *)args[0]) = last_charset; return unconv_num; } @@ -714,7 +750,7 @@ int num_args; { Utf8Conv *preferred_charsets; - Utf8Conv last_charset = NULL; + XlcCharSet last_charset = NULL; unsigned char const *src; unsigned char const *srcend; unsigned char *dst; @@ -732,7 +768,8 @@ unconv_num = 0; while (src < srcend && dst < dstend) { - Utf8Conv chosen_charset = NULL; /* FIXME: side */ + Utf8Conv chosen_charset = NULL; + XlcSide chosen_side = XlcNONE; wchar_t wc; int consumed; int count; @@ -746,7 +783,7 @@ continue; } - count = charset_wctocs(preferred_charsets, &chosen_charset, conv, dst, wc, dstend-dst); + count = charset_wctocs(preferred_charsets, &chosen_charset, &chosen_side, conv, dst, wc, dstend-dst); if (count == 0) break; if (count < 0) { @@ -755,11 +792,22 @@ continue; } - if (last_charset != NULL && chosen_charset != last_charset) - break; + if (last_charset == NULL) { + last_charset = + _XlcGetCharSetWithSide(chosen_charset->name, chosen_side); + if (last_charset == NULL) { + src += consumed; + unconv_num++; + continue; + } + } else { + if (!(last_charset->xrm_encoding_name == chosen_charset->xrm_name + && (last_charset->side == XlcGLGR + || last_charset->side == chosen_side))) + break; + } src += consumed; dst += count; - last_charset = chosen_charset; break; } @@ -772,7 +820,7 @@ *to_left = dstend - dst; if (num_args >= 1) - *((XlcCharSet *)args[0]) = _XlcGetCharSet(last_charset->name); + *((XlcCharSet *)args[0]) = last_charset; return unconv_num; } @@ -1267,6 +1315,7 @@ XLCd to_lcd; char *to_type; { + lazy_init_all_charsets(); return create_conv(from_lcd, &methods_cstowcs); } @@ -1283,7 +1332,7 @@ int num_args; { Utf8Conv *preferred_charsets; - Utf8Conv last_charset = NULL; + XlcCharSet last_charset = NULL; wchar_t const *src; wchar_t const *srcend; unsigned char *dst; @@ -1301,11 +1350,12 @@ unconv_num = 0; while (src < srcend && dst < dstend) { - Utf8Conv chosen_charset = NULL; /* FIXME: side */ + Utf8Conv chosen_charset = NULL; + XlcSide chosen_side = XlcNONE; wchar_t wc = *src; int count; - count = charset_wctocs(preferred_charsets, &chosen_charset, conv, dst, wc, dstend-dst); + count = charset_wctocs(preferred_charsets, &chosen_charset, &chosen_side, conv, dst, wc, dstend-dst); if (count == 0) break; if (count < 0) { @@ -1314,11 +1364,22 @@ continue; } - if (last_charset != NULL && chosen_charset != last_charset) - break; + if (last_charset == NULL) { + last_charset = + _XlcGetCharSetWithSide(chosen_charset->name, chosen_side); + if (last_charset == NULL) { + src++; + unconv_num++; + continue; + } + } else { + if (!(last_charset->xrm_encoding_name == chosen_charset->xrm_name + && (last_charset->side == XlcGLGR + || last_charset->side == chosen_side))) + break; + } src++; dst += count; - last_charset = chosen_charset; } if (last_charset == NULL) @@ -1330,7 +1391,7 @@ *to_left = dstend - dst; if (num_args >= 1) - *((XlcCharSet *)args[0]) = _XlcGetCharSet(last_charset->name); + *((XlcCharSet *)args[0]) = last_charset; return unconv_num; } @@ -1364,7 +1425,7 @@ int num_args; { Utf8Conv *preferred_charsets; - Utf8Conv last_charset = NULL; + XlcCharSet last_charset = NULL; wchar_t const *src; wchar_t const *srcend; unsigned char *dst; @@ -1382,11 +1443,12 @@ unconv_num = 0; while (src < srcend && dst < dstend) { - Utf8Conv chosen_charset = NULL; /* FIXME: side */ + Utf8Conv chosen_charset = NULL; + XlcSide chosen_side = XlcNONE; wchar_t wc = *src; int count; - count = charset_wctocs(preferred_charsets, &chosen_charset, conv, dst, wc, dstend-dst); + count = charset_wctocs(preferred_charsets, &chosen_charset, &chosen_side, conv, dst, wc, dstend-dst); if (count == 0) break; if (count < 0) { @@ -1395,11 +1457,22 @@ continue; } - if (last_charset != NULL && chosen_charset != last_charset) - break; + if (last_charset == NULL) { + last_charset = + _XlcGetCharSetWithSide(chosen_charset->name, chosen_side); + if (last_charset == NULL) { + src++; + unconv_num++; + continue; + } + } else { + if (!(last_charset->xrm_encoding_name == chosen_charset->xrm_name + && (last_charset->side == XlcGLGR + || last_charset->side == chosen_side))) + break; + } src++; dst += count; - last_charset = chosen_charset; break; } @@ -1412,7 +1485,7 @@ *to_left = dstend - dst; if (num_args >= 1) - *((XlcCharSet *)args[0]) = _XlcGetCharSet(last_charset->name); + *((XlcCharSet *)args[0]) = last_charset; return unconv_num; } Index: xc/lib/X11/omGeneric.c diff -u xc/lib/X11/omGeneric.c:3.13 xc/lib/X11/omGeneric.c:3.14 --- xc/lib/X11/omGeneric.c:3.13 Wed Mar 8 16:33:27 2000 +++ xc/lib/X11/omGeneric.c Wed Mar 8 16:33:27 2000 @@ -31,7 +31,7 @@ * Modifier: Takanori Tateno FUJITSU LIMITED * */ -/* $XFree86: xc/lib/X11/omGeneric.c,v 3.13 2000/02/12 02:54:16 dawes Exp $ */ +/* $XFree86: xc/lib/X11/omGeneric.c,v 3.14 2000/02/29 03:09:04 dawes Exp $ */ /* * Fixed the algorithms in parse_fontname() and parse_fontdata() @@ -466,6 +466,7 @@ continue; length += strlen(font_set->font_name) + 1; + count++; } if (count == 0) @@ -490,7 +491,7 @@ font_set = gen->font_set; font_set_num = gen->font_set_num; - for (count = 0; font_set_num-- > 0; font_set++, count++) { + for (count = 0; font_set_num-- > 0; font_set++) { if (font_set->font_name == NULL) continue; @@ -503,6 +504,8 @@ Xfree(font_set->font_name); *font_name_list++ = font_set->font_name = font_name_buf; font_name_buf += strlen(font_name_buf) + 1; + + count++; } set_fontset_extents(oc); Index: xc/lib/XThrStub/UIThrStubs.c diff -u xc/lib/XThrStub/UIThrStubs.c:3.0 xc/lib/XThrStub/UIThrStubs.c:3.1 --- xc/lib/XThrStub/UIThrStubs.c:3.0 Wed Nov 1 19:27:07 1995 +++ xc/lib/XThrStub/UIThrStubs.c Wed Mar 8 16:33:28 2000 @@ -1,5 +1,5 @@ /* - * $XFree86: xc/lib/XThrStub/UIThrStubs.c,v 3.0 1995/11/02 00:27:07 dawes Exp $ + * $XFree86: xc/lib/XThrStub/UIThrStubs.c,v 3.1 2000/02/29 03:09:06 dawes Exp $ * * Copyright (c) 1995 David E. Wexelblat. All rights reserved * @@ -37,89 +37,149 @@ * specificies the thread library on the link line. */ -#include <thread.h> -#include <synch.h> +/* + * Modifications by Carlos A M dos Santos, XFree86 Project, November 1999. + * + * Explanation from <X11/Xos_r.h>: + * The structure below is complicated, mostly because P1003.1c (the + * IEEE POSIX Threads spec) went through lots of drafts, and some + * vendors shipped systems based on draft API that were changed later. + * Unfortunately POSIX did not provide a feature-test macro for + * distinguishing each of the drafts. + */ +#ifdef CTHREADS +#include <cthreads.h> +typedef cthread_t xthread_t; +#define xthread_self cthread_self +#pragma weak cthread_self = _Xthr_self_stub_ +#define xmutex_init mutex_init +#pragma weak mutex_init = _Xmutex_init_stub_ +#pragma weak mutex_clear = _Xmutex_destroy_stub_ +#pragma weak mutex_lock = _Xmutex_lock_stub_ +#pragma weak mutex_unlock = _Xmutex_unlock_stub_ +#pragma weak condition_init = _Xcond_init_stub_ +#pragma weak condition_clear = _Xcond_destroy_stub_ +#pragma weak condition_wait = _Xcond_wait_stub_ +#pragma weak condition_signal = _Xcond_signal_stub_ +#pragma weak condition_broadcast = _Xcond_signal_stub_ +#else /* !CTHREADS */ +#if defined(SVR4) && !defined(__sgi) +#include <thread.h> +typedef thread_t xthread_t; #pragma weak thr_self = _Xthr_self_stub_ -thread_t +#pragma weak mutex_init = _Xmutex_init_stub_ +#pragma weak mutex_destroy = _Xmutex_destroy_stub_ +#pragma weak mutex_lock = _Xmutex_lock_stub_ +#pragma weak mutex_unlock = _Xmutex_unlock_stub_ +#pragma weak cond_init = _Xcond_init_stub_ +#pragma weak cond_destroy = _Xcond_destroy_stub_ +#pragma weak cond_wait = _Xcond_wait_stub_ +#pragma weak cond_signal = _Xcond_signal_stub_ +#pragma weak cond_broadcast = _Xcond_signal_stub_ +#else /* !SVR4 */ +#ifdef WIN32 + /* + * Don't know what to do here. Is there something do be done at all? + */ +#else /* !WIN32 */ +#ifdef USE_TIS_SUPPORT +#include <tis.h> +typedef pthread_t xthread_t; +#pragma weak tis_self = _Xthr_self_stub_ +#pragma weak tis_mutex_init = _Xmutex_init_stub_ +#pragma weak tis_mutex_destroy = _Xmutex_destroy_stub_ +#pragma weak tis_mutex_lock = _Xmutex_lock_stub_ +#pragma weak tis_mutex_unlock = _Xmutex_unlock_stub_ +#pragma weak tis_cond_init = _Xcond_init_stub_ +#pragma weak tis_cond_destroy = _Xcond_destroy_stub_ +#pragma weak tis_cond_wait = _Xcond_wait_stub_ +#pragma weak tis_cond_signal = _Xcond_signal_stub_ +#pragma weak tis_cond_broadcast = _Xcond_signal_stub_ +#else +#include <pthread.h> +typedef pthread_t xthread_t; +#pragma weak pthread_self = _Xthr_self_stub_ +#pragma weak pthread_mutex_init = _Xmutex_init_stub_ +#pragma weak pthread_mutex_destroy = _Xmutex_destroy_stub_ +#pragma weak pthread_mutex_lock = _Xmutex_lock_stub_ +#pragma weak pthread_mutex_unlock = _Xmutex_unlock_stub_ +#pragma weak pthread_cond_init = _Xcond_init_stub_ +#pragma weak pthread_cond_destroy = _Xcond_destroy_stub_ +#pragma weak pthread_cond_wait = _Xcond_wait_stub_ +#pragma weak pthread_cond_signal = _Xcond_signal_stub_ +#pragma weak pthread_cond_broadcast = _Xcond_broadcast_stub_ +#if defined(_DECTHREADS_) || defined(linux) +#pragma weak pthread_equal = _Xthr_equal_stub_ /* See Xthreads.h! */ +int +_Xthr_equal_stub_() +{ + return(1); +} +#endif /* _DECTHREADS_ || linux */ +#endif /* USE_TIS_SUPPORT */ +#endif /* WIN32 */ +#endif /* SVR4 */ +#endif /* CTHREADS */ + +xthread_t _Xthr_self_stub_() { - return((thread_t)0); + static xthread_t _X_no_thread_id; + + return(_X_no_thread_id); /* defined by <X11/Xthreads.h> */ } -#pragma weak mutex_init = _Xmutex_init_stub_ int -_Xmutex_init_stub_(m, t, a) - mutex_t *m; - int t; - void *a; +_Xmutex_init_stub_() { return(0); } -#pragma weak mutex_destroy = _Xmutex_destroy_stub_ int -_Xmutex_destroy_stub_(m) - mutex_t *m; +_Xmutex_destroy_stub_() { return(0); } -#pragma weak mutex_lock = _Xmutex_lock_stub_ int -_Xmutex_lock_stub_(m) - mutex_t *m; +_Xmutex_lock_stub_() { return(0); } -#pragma weak mutex_unlock = _Xmutex_unlock_stub_ int -_Xmutex_unlock_stub_(m) - mutex_t *m; +_Xmutex_unlock_stub_() { return(0); } -#pragma weak cond_init = _Xcond_init_stub_ int -_Xcond_init_stub_(c, t, a) - cond_t *c; - int t; - void *a; +_Xcond_init_stub_() { return(0); } -#pragma weak cond_destroy = _Xcond_destroy_stub_ int -_Xcond_destroy_stub_(c) - cond_t *c; +_Xcond_destroy_stub_() { return(0); } -#pragma weak cond_wait = _Xcond_wait_stub_ int -_Xcond_wait_stub_(c,m) - cond_t *c; - mutex_t *m; +_Xcond_wait_stub_() { return(0); } -#pragma weak cond_signal = _Xcond_signal_stub_ int -_Xcond_signal_stub_(c) - cond_t *c; +_Xcond_signal_stub_() { return(0); } -#pragma weak cond_broadcast = _Xcond_broadcast_stub_ int -_Xcond_broadcast_stub_(c) - cond_t *c; +_Xcond_broadcast_stub_() { return(0); } Index: xc/lib/Xaw/List.c diff -u xc/lib/Xaw/List.c:1.12 xc/lib/Xaw/List.c:1.14 --- xc/lib/Xaw/List.c:1.12 Wed Dec 29 21:12:50 1999 +++ xc/lib/Xaw/List.c Wed Mar 8 16:33:29 2000 @@ -19,7 +19,7 @@ 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/lib/Xaw/List.c,v 1.12 1999/12/30 02:12:50 robin Exp $ */ +/* $XFree86: xc/lib/Xaw/List.c,v 1.14 2000/02/25 23:20:46 dawes Exp $ */ /* * List.c - List widget @@ -242,6 +242,17 @@ XtRCallback, NULL }, +#ifndef OLDXAW + { + XtNshowCurrent, + XtCBoolean, + XtRBoolean, + sizeof(Boolean), + offset(list.show_current), + XtRImmediate, + (XtPointer)False + }, +#endif }; #undef offset @@ -971,7 +982,14 @@ */ if ((CvtToItem(w, event->xbutton.x, event->xbutton.y, &item) == OUT_OF_RANGE) || lw->list.highlight != item) { +#ifndef OLDXAW + if (!lw->list.show_current || lw->list.selected == NO_HIGHLIGHT) + XawListUnhighlight(w); + else + XawListHighlight(w, lw->list.selected); +#else XawListUnhighlight(w); +#endif return; } @@ -980,6 +998,9 @@ if (lw->list.paste) /* if XtNpasteBuffer set then paste it */ XStoreBytes(XtDisplay(w), lw->list.list[item], item_len); +#ifndef OLDXAW + lw->list.selected = item; +#endif /* * Call Callback function */ @@ -1009,6 +1030,9 @@ int item; ListWidget lw = (ListWidget)w; +#ifndef OLDXAW + lw->list.selected = lw->list.highlight; +#endif if (CvtToItem(w, event->xbutton.x, event->xbutton.y, &item) == OUT_OF_RANGE) XawListUnhighlight(w); /* Unhighlight current item */ else if (lw->list.is_highlighted != item) /* If this item is not */ Index: xc/lib/Xaw/List.h diff -u xc/lib/Xaw/List.h:1.5 xc/lib/Xaw/List.h:1.6 --- xc/lib/Xaw/List.h:1.5 Mon May 3 08:15:40 1999 +++ xc/lib/Xaw/List.h Wed Mar 8 16:33:29 2000 @@ -19,7 +19,7 @@ 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/lib/Xaw/List.h,v 1.5 1999/05/03 12:15:40 dawes Exp $ */ +/* $XFree86: xc/lib/Xaw/List.h,v 1.6 2000/02/25 18:27:58 dawes Exp $ */ /* This is the List widget, it is useful to display a list, without the * overhead of having a widget for each item in the list. It allows @@ -122,6 +122,7 @@ #define XtNpasteBuffer "pasteBuffer" #define XtNrowSpacing "rowSpacing" #define XtNverticalList "verticalList" +#define XtNshowCurrent "showCurrent" #ifndef XtNfontSet #define XtNfontSet "fontSet" Index: xc/lib/Xaw/ListP.h diff -u xc/lib/Xaw/ListP.h:1.6 xc/lib/Xaw/ListP.h:1.7 --- xc/lib/Xaw/ListP.h:1.6 Sun Jun 20 04:41:02 1999 +++ xc/lib/Xaw/ListP.h Wed Mar 8 16:33:29 2000 @@ -19,7 +19,7 @@ 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/lib/Xaw/ListP.h,v 1.6 1999/06/20 08:41:02 dawes Exp $ */ +/* $XFree86: xc/lib/Xaw/ListP.h,v 1.7 2000/02/25 18:27:58 dawes Exp $ */ /* @@ -95,7 +95,11 @@ int freedoms; /* flags for resizing height and width */ #ifndef OLDXAW - XtPointer pad[4]; /* for future use and keep binary compatability */ + int selected; + Boolean show_current; + char pad1[(sizeof(XtPointer) - sizeof(Boolean)) + + (sizeof(XtPointer) - sizeof(int))]; + XtPointer pad2[2]; /* for future use and keep binary compatability */ #endif } ListPart; Index: xc/lib/Xext/Imakefile diff -u xc/lib/Xext/Imakefile:1.9 xc/lib/Xext/Imakefile:1.10 --- xc/lib/Xext/Imakefile:1.9 Sun Dec 20 17:18:56 1998 +++ xc/lib/Xext/Imakefile Wed Mar 8 16:33:30 2000 @@ -1,5 +1,5 @@ XCOMM $TOG: Imakefile /main/62 1997/11/24 16:48:16 kaleb $ -XCOMM $XFree86: xc/lib/Xext/Imakefile,v 1.9 1998/12/20 22:18:56 dawes Exp $ +XCOMM $XFree86: xc/lib/Xext/Imakefile,v 1.10 2000/02/27 23:10:03 mvojkovi Exp $ #define DoNormalLib NormalLibXext #define DoSharedLib SharedLibXext #define DoExtraLib SharedLibXext @@ -28,10 +28,10 @@ INCLUDES = -I$(XLIBSRC) -I$(EXTINCSRC) SRCS = globals.c extutil.c XMultibuf.c XShape.c $(SHMSRCS) \ MITMisc.c XTestExt1.c XSync.c Xdbe.c XLbx.c \ - XSecurity.c XAppgroup.c Xcup.c XPanoramiX.c DPMS.c XEVI.c + XSecurity.c XAppgroup.c Xcup.c DPMS.c XEVI.c OBJS = globals.o extutil.o XMultibuf.o XShape.o $(SHMOBJS) \ MITMisc.o XTestExt1.o XSync.o Xdbe.o XLbx.o \ - XSecurity.o XAppgroup.o Xcup.o XPanoramiX.o DPMS.o XEVI.o + XSecurity.o XAppgroup.o Xcup.o DPMS.o XEVI.o LINTLIBS = $(LINTXLIB) #include <Library.tmpl> Index: xc/lib/Xext/XPanoramiX.c diff -u xc/lib/Xext/XPanoramiX.c:1.5 xc/lib/Xext/XPanoramiX.c:removed --- xc/lib/Xext/XPanoramiX.c:1.5 Mon Jul 12 01:57:22 1999 +++ xc/lib/Xext/XPanoramiX.c Wed Mar 8 16:33:30 2000 @@ -1,208 +0,0 @@ -/* $TOG: XPanoramiX.c /main/2 1997/11/16 08:45:41 kaleb $ */ -/**************************************************************** -* * -* Copyright (c) Digital Equipment Corporation, 1991, 1997 * -* * -* All Rights Reserved. Unpublished rights reserved under * -* the copyright laws of the United States. * -* * -* The software contained on this media is proprietary to * -* and embodies the confidential technology of Digital * -* Equipment Corporation. Possession, use, duplication or * -* dissemination of the software and media is authorized only * -* pursuant to a valid written license from Digital Equipment * -* Corporation. * -* * -* RESTRICTED RIGHTS LEGEND Use, duplication, or disclosure * -* by the U.S. Government is subject to restrictions as set * -* forth in Subparagraph (c)(1)(ii) of DFARS 252.227-7013, * -* or in FAR 52.227-19, as applicable. * -* * -*****************************************************************/ -/* $XFree86: xc/lib/Xext/XPanoramiX.c,v 1.5 1999/07/12 05:57:22 dawes Exp $ */ - -#define NEED_EVENTS -#define NEED_REPLIES -#include <X11/Xlibint.h> -#include <X11/Xutil.h> -#include "Xext.h" /* in ../include */ -#include "extutil.h" /* in ../include */ -#include "panoramiXext.h" -#include "panoramiXproto.h" /* in ../include */ - - -static XExtensionInfo _panoramiX_ext_info_data; -static XExtensionInfo *panoramiX_ext_info = &_panoramiX_ext_info_data; -static /* const */ char *panoramiX_extension_name = PANORAMIX_PROTOCOL_NAME; - -#define PanoramiXCheckExtension(dpy,i,val) \ - XextCheckExtension (dpy, i, panoramiX_extension_name, val) -#define PanoramiXSimpleCheckExtension(dpy,i) \ - XextSimpleCheckExtension (dpy, i, panoramiX_extension_name) - -static int close_display(); -static /* const */ XExtensionHooks panoramiX_extension_hooks = { - NULL, /* create_gc */ - NULL, /* copy_gc */ - NULL, /* flush_gc */ - NULL, /* free_gc */ - NULL, /* create_font */ - NULL, /* free_font */ - close_display, /* close_display */ - NULL, /* wire_to_event */ - NULL, /* event_to_wire */ - NULL, /* error */ - NULL, /* error_string */ -}; - -static XEXT_GENERATE_FIND_DISPLAY (find_display, panoramiX_ext_info, - panoramiX_extension_name, - &panoramiX_extension_hooks, - 0, NULL) - -static XEXT_GENERATE_CLOSE_DISPLAY (close_display, panoramiX_ext_info) - - - -/**************************************************************************** - * * - * PanoramiX public interfaces * - * * - ****************************************************************************/ - -Bool XPanoramiXQueryExtension (dpy, event_basep, error_basep) - Display *dpy; - int *event_basep, *error_basep; -{ - XExtDisplayInfo *info = find_display (dpy); - - if (XextHasExtension(info)) { - *event_basep = info->codes->first_event; - *error_basep = info->codes->first_error; - return True; - } else { - return False; - } -} - - -Status XPanoramiXQueryVersion(dpy, major_versionp, minor_versionp) - Display *dpy; - int *major_versionp, *minor_versionp; -{ - XExtDisplayInfo *info = find_display (dpy); - xPanoramiXQueryVersionReply rep; - register xPanoramiXQueryVersionReq *req; - - PanoramiXCheckExtension (dpy, info, 0); - - LockDisplay (dpy); - GetReq (PanoramiXQueryVersion, req); - req->reqType = info->codes->major_opcode; - req->panoramiXReqType = X_PanoramiXQueryVersion; - req->clientMajor = PANORAMIX_MAJOR_VERSION; - req->clientMinor = PANORAMIX_MINOR_VERSION; - if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) { - UnlockDisplay (dpy); - SyncHandle (); - return 0; - } - *major_versionp = rep.majorVersion; - *minor_versionp = rep.minorVersion; - UnlockDisplay (dpy); - SyncHandle (); - return 1; -} - -XPanoramiXInfo *XPanoramiXAllocInfo() -{ - return (XPanoramiXInfo *) Xmalloc (sizeof (XPanoramiXInfo)); -} - -Status XPanoramiXGetState (dpy, drawable, panoramiX_info) - Display *dpy; - Drawable drawable; - XPanoramiXInfo *panoramiX_info ; -{ - XExtDisplayInfo *info = find_display (dpy); - xPanoramiXGetStateReply rep; - register xPanoramiXGetStateReq *req; - - PanoramiXCheckExtension (dpy, info, 0); - - LockDisplay (dpy); - GetReq (PanoramiXGetState, req); - req->reqType = info->codes->major_opcode; - req->panoramiXReqType = X_PanoramiXGetState; - req->window = drawable; - if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) { - UnlockDisplay (dpy); - SyncHandle (); - return 0; - } - UnlockDisplay (dpy); - SyncHandle (); - panoramiX_info->window = rep.window; - panoramiX_info->State = rep.state; - return 1; -} - -Status XPanoramiXGetScreenCount (dpy, drawable, panoramiX_info) - Display *dpy; - Drawable drawable; - XPanoramiXInfo *panoramiX_info ; -{ - XExtDisplayInfo *info = find_display (dpy); - xPanoramiXGetScreenCountReply rep; - register xPanoramiXGetScreenCountReq *req; - - PanoramiXCheckExtension (dpy, info, 0); - - LockDisplay (dpy); - GetReq (PanoramiXGetScreenCount, req); - req->reqType = info->codes->major_opcode; - req->panoramiXReqType = X_PanoramiXGetScreenCount; - req->window = drawable; - if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) { - UnlockDisplay (dpy); - SyncHandle (); - return 0; - } - UnlockDisplay (dpy); - SyncHandle (); - panoramiX_info->window = rep.window; - panoramiX_info->ScreenCount = rep.ScreenCount; - return 1; -} - -Status XPanoramiXGetScreenSize (dpy, drawable, screen_num, panoramiX_info) - Display *dpy; - Drawable drawable; - int screen_num; - XPanoramiXInfo *panoramiX_info ; -{ - XExtDisplayInfo *info = find_display (dpy); - xPanoramiXGetScreenSizeReply rep; - register xPanoramiXGetScreenSizeReq *req; - - PanoramiXCheckExtension (dpy, info, 0); - - LockDisplay (dpy); - GetReq (PanoramiXGetScreenSize, req); - req->reqType = info->codes->major_opcode; - req->panoramiXReqType = X_PanoramiXGetScreenSize; - req->window = drawable; - req->screen = screen_num; /* need to define */ - if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) { - UnlockDisplay (dpy); - SyncHandle (); - return 0; - } - UnlockDisplay (dpy); - SyncHandle (); - panoramiX_info->window = rep.window; - panoramiX_info->screen = rep.screen; - panoramiX_info->width = rep.width; - panoramiX_info->height = rep.height; - return 1; -} Index: xc/lib/Xfontcache/FontCache.c diff -u xc/lib/Xfontcache/FontCache.c:1.1 xc/lib/Xfontcache/FontCache.c:1.2 --- xc/lib/Xfontcache/FontCache.c:1.1 Wed Mar 8 16:33:31 2000 +++ xc/lib/Xfontcache/FontCache.c Wed Mar 8 16:33:31 2000 @@ -25,7 +25,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: FontCache.c,v 1.8 1999/01/31 12:52:49 akiyama Exp $ + * Id: FontCache.c,v 1.8 1999/01/31 12:52:49 akiyama Exp $ */ /* THIS IS NOT AN X CONSORTIUM STANDARD */ Index: xc/lib/Xfontcache/Imakefile diff -u xc/lib/Xfontcache/Imakefile:1.1 xc/lib/Xfontcache/Imakefile:1.2 --- xc/lib/Xfontcache/Imakefile:1.1 Wed Mar 8 16:33:31 2000 +++ xc/lib/Xfontcache/Imakefile Wed Mar 8 16:33:31 2000 @@ -1,4 +1,4 @@ -XCOMM $Id: Imakefile,v 1.3 1999/01/31 12:54:33 akiyama Exp $ +XCOMM Id: Imakefile,v 1.3 1999/01/31 12:54:33 akiyama Exp $ #define DoNormalLib NormalLibXfontcache #define DoSharedLib SharedLibXfontcache Index: xc/lib/Xinerama/Imakefile diff -u /dev/null xc/lib/Xinerama/Imakefile:1.2 --- /dev/null Wed Mar 8 16:33:31 2000 +++ xc/lib/Xinerama/Imakefile Wed Mar 8 16:33:31 2000 @@ -0,0 +1,29 @@ +XCOMM $XFree86: xc/lib/Xinerama/Imakefile,v 1.2 2000/02/29 18:38:42 dawes Exp $ + +#define DoNormalLib NormalLibXinerama +#define DoSharedLib SharedLibXinerama +#define DoDebugLib DebugLibXinerama +#define DoProfileLib ProfileLibXinerama +#define LibName Xinerama +#define SoRev SOXINERAMAREV +#define LibHeaders NO + +#include <Threads.tmpl> + +#ifdef SharedXineramaReqs +REQUIREDLIBS = SharedXineramaReqs +#endif + +#if Malloc0ReturnsNull +ALLOC_DEFINES = -DMALLOC_0_RETURNS_NULL +#endif + + DEFINES = $(ALLOC_DEFINES) + INCLUDES = -I$(XLIBSRC) -I$(EXTINCSRC) + SRCS = Xinerama.c + OBJS = Xinerama.o + LINTLIBS = $(LINTXLIB) + +#include <Library.tmpl> + +DependTarget() Index: xc/lib/Xinerama/Xinerama.c diff -u /dev/null xc/lib/Xinerama/Xinerama.c:1.1 --- /dev/null Wed Mar 8 16:33:31 2000 +++ xc/lib/Xinerama/Xinerama.c Wed Mar 8 16:33:31 2000 @@ -0,0 +1,315 @@ +/* $TOG: XPanoramiX.c /main/2 1997/11/16 08:45:41 kaleb $ */ +/**************************************************************** +* * +* Copyright (c) Digital Equipment Corporation, 1991, 1997 * +* * +* All Rights Reserved. Unpublished rights reserved under * +* the copyright laws of the United States. * +* * +* The software contained on this media is proprietary to * +* and embodies the confidential technology of Digital * +* Equipment Corporation. Possession, use, duplication or * +* dissemination of the software and media is authorized only * +* pursuant to a valid written license from Digital Equipment * +* Corporation. * +* * +* RESTRICTED RIGHTS LEGEND Use, duplication, or disclosure * +* by the U.S. Government is subject to restrictions as set * +* forth in Subparagraph (c)(1)(ii) of DFARS 252.227-7013, * +* or in FAR 52.227-19, as applicable. * +* * +*****************************************************************/ +/* $XFree86: xc/lib/Xinerama/Xinerama.c,v 1.1 2000/02/27 23:10:04 mvojkovi Exp $ */ + +#define NEED_EVENTS +#define NEED_REPLIES +#include <X11/Xlibint.h> +#include <X11/Xutil.h> +#include "Xext.h" /* in ../include */ +#include "extutil.h" /* in ../include */ +#include "panoramiXext.h" +#include "panoramiXproto.h" /* in ../include */ +#include "Xinerama.h" + + +static XExtensionInfo _panoramiX_ext_info_data; +static XExtensionInfo *panoramiX_ext_info = &_panoramiX_ext_info_data; +static /* const */ char *panoramiX_extension_name = PANORAMIX_PROTOCOL_NAME; + +#define PanoramiXCheckExtension(dpy,i,val) \ + XextCheckExtension (dpy, i, panoramiX_extension_name, val) +#define PanoramiXSimpleCheckExtension(dpy,i) \ + XextSimpleCheckExtension (dpy, i, panoramiX_extension_name) + +static int close_display(); +static /* const */ XExtensionHooks panoramiX_extension_hooks = { + NULL, /* create_gc */ + NULL, /* copy_gc */ + NULL, /* flush_gc */ + NULL, /* free_gc */ + NULL, /* create_font */ + NULL, /* free_font */ + close_display, /* close_display */ + NULL, /* wire_to_event */ + NULL, /* event_to_wire */ + NULL, /* error */ + NULL, /* error_string */ +}; + +static XEXT_GENERATE_FIND_DISPLAY (find_display, panoramiX_ext_info, + panoramiX_extension_name, + &panoramiX_extension_hooks, + 0, NULL) + +static XEXT_GENERATE_CLOSE_DISPLAY (close_display, panoramiX_ext_info) + + + +/**************************************************************************** + * * + * PanoramiX public interfaces * + * * + ****************************************************************************/ + +Bool XPanoramiXQueryExtension ( + Display *dpy, + int *event_basep, + int *error_basep +) +{ + XExtDisplayInfo *info = find_display (dpy); + + if (XextHasExtension(info)) { + *event_basep = info->codes->first_event; + *error_basep = info->codes->first_error; + return True; + } else { + return False; + } +} + + +Status XPanoramiXQueryVersion( + Display *dpy, + int *major_versionp, + int *minor_versionp +) +{ + XExtDisplayInfo *info = find_display (dpy); + xPanoramiXQueryVersionReply rep; + register xPanoramiXQueryVersionReq *req; + + PanoramiXCheckExtension (dpy, info, 0); + + LockDisplay (dpy); + GetReq (PanoramiXQueryVersion, req); + req->reqType = info->codes->major_opcode; + req->panoramiXReqType = X_PanoramiXQueryVersion; + req->clientMajor = PANORAMIX_MAJOR_VERSION; + req->clientMinor = PANORAMIX_MINOR_VERSION; + if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) { + UnlockDisplay (dpy); + SyncHandle (); + return 0; + } + *major_versionp = rep.majorVersion; + *minor_versionp = rep.minorVersion; + UnlockDisplay (dpy); + SyncHandle (); + return 1; +} + +XPanoramiXInfo *XPanoramiXAllocInfo(void) +{ + return (XPanoramiXInfo *) Xmalloc (sizeof (XPanoramiXInfo)); +} + +Status XPanoramiXGetState ( + Display *dpy, + Drawable drawable, + XPanoramiXInfo *panoramiX_info +) +{ + XExtDisplayInfo *info = find_display (dpy); + xPanoramiXGetStateReply rep; + register xPanoramiXGetStateReq *req; + + PanoramiXCheckExtension (dpy, info, 0); + + LockDisplay (dpy); + GetReq (PanoramiXGetState, req); + req->reqType = info->codes->major_opcode; + req->panoramiXReqType = X_PanoramiXGetState; + req->window = drawable; + if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) { + UnlockDisplay (dpy); + SyncHandle (); + return 0; + } + UnlockDisplay (dpy); + SyncHandle (); + panoramiX_info->window = rep.window; + panoramiX_info->State = rep.state; + return 1; +} + +Status XPanoramiXGetScreenCount ( + Display *dpy, + Drawable drawable, + XPanoramiXInfo *panoramiX_info +) +{ + XExtDisplayInfo *info = find_display (dpy); + xPanoramiXGetScreenCountReply rep; + register xPanoramiXGetScreenCountReq *req; + + PanoramiXCheckExtension (dpy, info, 0); + + LockDisplay (dpy); + GetReq (PanoramiXGetScreenCount, req); + req->reqType = info->codes->major_opcode; + req->panoramiXReqType = X_PanoramiXGetScreenCount; + req->window = drawable; + if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) { + UnlockDisplay (dpy); + SyncHandle (); + return 0; + } + UnlockDisplay (dpy); + SyncHandle (); + panoramiX_info->window = rep.window; + panoramiX_info->ScreenCount = rep.ScreenCount; + return 1; +} + +Status XPanoramiXGetScreenSize ( + Display *dpy, + Drawable drawable, + int screen_num, + XPanoramiXInfo *panoramiX_info +) +{ + XExtDisplayInfo *info = find_display (dpy); + xPanoramiXGetScreenSizeReply rep; + register xPanoramiXGetScreenSizeReq *req; + + PanoramiXCheckExtension (dpy, info, 0); + + LockDisplay (dpy); + GetReq (PanoramiXGetScreenSize, req); + req->reqType = info->codes->major_opcode; + req->panoramiXReqType = X_PanoramiXGetScreenSize; + req->window = drawable; + req->screen = screen_num; /* need to define */ + if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) { + UnlockDisplay (dpy); + SyncHandle (); + return 0; + } + UnlockDisplay (dpy); + SyncHandle (); + panoramiX_info->window = rep.window; + panoramiX_info->screen = rep.screen; + panoramiX_info->width = rep.width; + panoramiX_info->height = rep.height; + return 1; +} + +/*******************************************************************\ + Alternate interface to make up for shortcomings in the original, + namely, the omission of the screen origin. The new interface is + in the "Xinerama" namespace instead of "PanoramiX". +\*******************************************************************/ + +Bool XineramaQueryExtension ( + Display *dpy, + int *event_base, + int *error_base +) +{ + return XPanoramiXQueryExtension(dpy, event_base, error_base); +} + +Status XineramaQueryVersion( + Display *dpy, + int *major, + int *minor +) +{ + return XPanoramiXQueryVersion(dpy, major, minor); +} + +Bool XineramaIsActive(Display *dpy) +{ + xXineramaIsActiveReply rep; + xXineramaIsActiveReq *req; + XExtDisplayInfo *info = find_display (dpy); + + if(!XextHasExtension(info)) + return False; /* server doesn't even have the extension */ + + LockDisplay (dpy); + GetReq (XineramaIsActive, req); + req->reqType = info->codes->major_opcode; + req->panoramiXReqType = X_XineramaIsActive; + if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) { + UnlockDisplay (dpy); + SyncHandle (); + return False; + } + UnlockDisplay (dpy); + SyncHandle (); + return rep.state; +} + +#include <stdio.h> + +XineramaScreenInfo * +XineramaQueryScreens( + Display *dpy, + int *number +) +{ + XExtDisplayInfo *info = find_display (dpy); + xXineramaQueryScreensReply rep; + xXineramaQueryScreensReq *req; + XineramaScreenInfo *scrnInfo = NULL; + + PanoramiXCheckExtension (dpy, info, 0); + + LockDisplay (dpy); + GetReq (XineramaQueryScreens, req); + req->reqType = info->codes->major_opcode; + req->panoramiXReqType = X_XineramaQueryScreens; + if (!_XReply (dpy, (xReply *) &rep, 0, xFalse)) { + UnlockDisplay (dpy); + SyncHandle (); + return NULL; + } + + if(rep.number) { + if((scrnInfo = Xmalloc(sizeof(XineramaScreenInfo) * rep.number))) { + xXineramaScreenInfo scratch; + int i; + + for(i = 0; i < rep.number; i++) { + _XRead(dpy, (char*)(&scratch), sz_XineramaScreenInfo); + scrnInfo[i].screen_number = i; + scrnInfo[i].x_org = scratch.x_org; + scrnInfo[i].y_org = scratch.y_org; + scrnInfo[i].width = scratch.width; + scrnInfo[i].height = scratch.height; + } + + *number = rep.number; + } else + _XEatData(dpy, rep.length << 2); + } + + UnlockDisplay (dpy); + SyncHandle (); + return scrnInfo; +} + + + Index: xc/lib/Xv/Xv.c diff -u xc/lib/Xv/Xv.c:1.11 xc/lib/Xv/Xv.c:1.12 --- xc/lib/Xv/Xv.c:1.11 Wed Mar 8 16:33:34 2000 +++ xc/lib/Xv/Xv.c Wed Mar 8 16:33:34 2000 @@ -21,7 +21,7 @@ SOFTWARE. ******************************************************************/ -/* $XFree86: xc/lib/Xv/Xv.c,v 1.11 2000/01/26 22:05:46 tsi Exp $ */ +/* $XFree86: xc/lib/Xv/Xv.c,v 1.12 2000/03/03 20:51:09 mvojkovi Exp $ */ /* ** File: ** @@ -91,10 +91,9 @@ /* READ THE REPLY */ - if (_XReply(dpy, (xReply *)&rep, 0, xFalse) == 0) + if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) { - UnlockDisplay(dpy); - SyncHandle(); + POSTAMBLE; return(XvBadExtension); } @@ -104,6 +103,8 @@ *p_eventBase = _XvCodes->first_event; *p_errorBase = _XvCodes->first_error; + POSTAMBLE; + return Success; } @@ -138,16 +139,14 @@ if (_XReply(dpy, (xReply *)&rep, 0, xFalse) == 0) { - UnlockDisplay(dpy); - SyncHandle(); + POSTAMBLE; return(XvBadReply); } size = rep.length << 2; if ( (buffer = (char *)Xmalloc ((unsigned) size)) == NULL) { - UnlockDisplay(dpy); - SyncHandle(); + POSTAMBLE; return(XvBadAlloc); } _XRead (dpy, buffer, size); @@ -160,8 +159,7 @@ if ((pas=(XvAdaptorInfo *)Xmalloc(size))==NULL) { Xfree(buffer); - UnlockDisplay(dpy); - SyncHandle(); + POSTAMBLE; return(XvBadAlloc); } @@ -193,8 +191,7 @@ { XvFreeAdaptorInfo(pas); Xfree(buffer); - UnlockDisplay(dpy); - SyncHandle(); + POSTAMBLE; return(XvBadAlloc); } (void)strncpy(name, u.string, size); @@ -210,8 +207,7 @@ { XvFreeAdaptorInfo(pas); Xfree(buffer); - UnlockDisplay(dpy); - SyncHandle(); + POSTAMBLE; return(XvBadAlloc); } @@ -295,16 +291,14 @@ if (_XReply(dpy, (xReply *)&rep, 0, xFalse) == 0) { - UnlockDisplay(dpy); - SyncHandle(); + POSTAMBLE; return(XvBadReply); } size = rep.length << 2; if ( (buffer = (char *)Xmalloc ((unsigned) size)) == NULL) { - UnlockDisplay(dpy); - SyncHandle(); + POSTAMBLE; return(XvBadAlloc); } _XRead (dpy, buffer, size); @@ -317,8 +311,7 @@ if ( (pes = (XvEncodingInfo *)Xmalloc(size)) == NULL) { Xfree(buffer); - UnlockDisplay(dpy); - SyncHandle(); + POSTAMBLE; return(XvBadAlloc); } @@ -348,8 +341,7 @@ if ( (name = (char *)Xmalloc(size+1)) == NULL) { Xfree(buffer); - UnlockDisplay(dpy); - SyncHandle(); + POSTAMBLE; return(XvBadAlloc); } strncpy(name, u.string, size); @@ -673,8 +665,7 @@ if (_XReply(dpy, (xReply *)&rep, 0, xFalse) == 0) { - UnlockDisplay(dpy); - SyncHandle(); + POSTAMBLE; return(XvBadReply); } @@ -712,8 +703,7 @@ if (_XReply(dpy, (xReply *)&rep, 0, xFalse) == 0) { - UnlockDisplay(dpy); - SyncHandle(); + POSTAMBLE; return(XvBadReply); } @@ -743,8 +733,7 @@ /* READ THE REPLY */ if (_XReply(dpy, (xReply *)&rep, 0, xFalse) == 0) { - UnlockDisplay(dpy); - SyncHandle(); + POSTAMBLE; return ret; } @@ -794,8 +783,7 @@ /* READ THE REPLY */ if (_XReply(dpy, (xReply *)&rep, 0, xFalse) == 0) { - UnlockDisplay(dpy); - SyncHandle(); + POSTAMBLE; return NULL; } @@ -863,9 +851,8 @@ /* READ THE REPLY */ - if (_XReply(dpy, (xReply *)&rep, 0, xFalse) == 0) { - UnlockDisplay(dpy); - SyncHandle(); + if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) { + POSTAMBLE; return NULL; } Index: xc/lib/Xxf86rush/XF86Rush.c diff -u xc/lib/Xxf86rush/XF86Rush.c:1.3 xc/lib/Xxf86rush/XF86Rush.c:1.4 --- xc/lib/Xxf86rush/XF86Rush.c:1.3 Wed Mar 8 16:33:34 2000 +++ xc/lib/Xxf86rush/XF86Rush.c Wed Mar 8 16:33:34 2000 @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/Xxf86rush/XF86Rush.c,v 1.3 2000/02/11 22:35:45 dawes Exp $ */ +/* $XFree86: xc/lib/Xxf86rush/XF86Rush.c,v 1.4 2000/02/29 03:09:06 dawes Exp $ */ /* Copyright (c) 1998 Daryll Strauss @@ -216,6 +216,74 @@ req->drw_y = dest_y; req->drw_w = dest_w; req->drw_h = dest_h; + + UnlockDisplay(dpy); + SyncHandle(); + return Success; +} + +int XF86RushStatusRegOffset (Display *dpy, int screen) +{ + XExtDisplayInfo *info = find_display(dpy); + xXF86RushStatusRegOffsetReq *req; + xXF86RushStatusRegOffsetReply rep; + + XF86RushCheckExtension (dpy, info, False); + + LockDisplay(dpy); + GetReq(XF86RushStatusRegOffset, req); + + req->reqType = info->codes->major_opcode; + req->rushReqType = X_XF86RushStatusRegOffset; + req->screen = screen; + + if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) { + UnlockDisplay(dpy); + SyncHandle(); + return False; + } + + UnlockDisplay(dpy); + SyncHandle(); + return rep.offset; +} + +Bool XF86RushAT3DEnableRegs (Display *dpy, int screen) +{ + XExtDisplayInfo *info = find_display(dpy); + xXF86RushAT3DEnableRegsReq *req; + + XF86RushCheckExtension (dpy, info, False); + + LockDisplay(dpy); + GetReq(XF86RushAT3DEnableRegs, req); + + req->reqType = info->codes->major_opcode; + req->rushReqType = X_XF86RushAT3DEnableRegs; + req->screen = screen; + + UnlockDisplay(dpy); + SyncHandle(); + /* + * The request has to be processed to stay in sync... + */ + XSync(dpy, False); + return Success; +} + +Bool XF86RushAT3DDisableRegs (Display *dpy, int screen) +{ + XExtDisplayInfo *info = find_display(dpy); + xXF86RushAT3DDisableRegsReq *req; + + XF86RushCheckExtension (dpy, info, False); + + LockDisplay(dpy); + GetReq(XF86RushAT3DDisableRegs, req); + + req->reqType = info->codes->major_opcode; + req->rushReqType = X_XF86RushAT3DDisableRegs; + req->screen = screen; UnlockDisplay(dpy); SyncHandle(); Index: xc/lib/dps/Imakefile diff -u xc/lib/dps/Imakefile:1.6 xc/lib/dps/Imakefile:1.7 --- xc/lib/dps/Imakefile:1.6 Wed Mar 8 16:33:34 2000 +++ xc/lib/dps/Imakefile Wed Mar 8 16:33:34 2000 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/lib/dps/Imakefile,v 1.6 2000/02/16 15:34:27 dawes Exp $ +XCOMM $XFree86: xc/lib/dps/Imakefile,v 1.7 2000/02/24 05:36:39 tsi Exp $ #define DoNormalLib NormalLibDps #define DoSharedLib SharedLibDps @@ -276,7 +276,8 @@ HEADERS = psops.h dpsops.h -all :: psops.h dpsops.h +all :: $(HEADERS) +depend :: $(HEADERS) psops.h : $(PSOPSHEADERFILES) $(PSOPSANSIHEADERFILES) $(RM) $@ Index: xc/lib/font/FreeType/ftfuncs.c diff -u xc/lib/font/FreeType/ftfuncs.c:1.12 xc/lib/font/FreeType/ftfuncs.c:1.13 --- xc/lib/font/FreeType/ftfuncs.c:1.12 Wed Oct 13 00:20:49 1999 +++ xc/lib/font/FreeType/ftfuncs.c Wed Mar 8 16:33:35 2000 @@ -21,7 +21,7 @@ THE SOFTWARE. */ -/* $XFree86: xc/lib/font/FreeType/ftfuncs.c,v 1.12 1999/10/13 04:20:49 dawes Exp $ */ +/* $XFree86: xc/lib/font/FreeType/ftfuncs.c,v 1.13 2000/02/25 18:27:59 dawes Exp $ */ #include <string.h> @@ -860,7 +860,7 @@ 3+ /* from `name' table */ (os2Props?6:0)+ /* from `os/2' table */ (postProps?3:0)+ /* from `post' table */ - 1; /* type */ + 2; /* type */ if ((info->props = (FontPropPtr)xalloc(maxprops * sizeof(FontPropRec))) == 0) @@ -1050,6 +1050,10 @@ info->props[i].name = MakeAtom("FONT_TYPE", 9, TRUE); info->props[i].value = MakeAtom("TrueType", 8, TRUE); + i++; + + info->props[i].name = MakeAtom("RASTERIZER_NAME", 15, TRUE); + info->props[i].value = MakeAtom("FreeType", 8, TRUE); i++; info->nprops=i; Index: xc/lib/font/Speedo/spinfo.c diff -u xc/lib/font/Speedo/spinfo.c:1.8 xc/lib/font/Speedo/spinfo.c:1.9 --- xc/lib/font/Speedo/spinfo.c:1.8 Sun Mar 14 06:17:43 1999 +++ xc/lib/font/Speedo/spinfo.c Wed Mar 8 16:33:36 2000 @@ -45,7 +45,7 @@ from The Open Group. */ -/* $XFree86: xc/lib/font/Speedo/spinfo.c,v 1.8 1999/03/14 11:17:43 dawes Exp $ */ +/* $XFree86: xc/lib/font/Speedo/spinfo.c,v 1.9 2000/02/25 18:28:00 dawes Exp $ */ #include "fntfilst.h" #include "fontutil.h" @@ -97,7 +97,9 @@ { "RAW_POINT_SIZE", 0, }, { "RAW_ASCENT", 0, }, { "RAW_DESCENT", 0, }, - { "RAW_AVERAGE_WIDTH", 0, } + { "RAW_AVERAGE_WIDTH", 0, }, + { "FONT_TYPE", 0, }, + { "RASTERIZER_NAME", 0, } }; /* this is a bit kludgy */ @@ -108,7 +110,8 @@ #define RAWASCENTPROP 4 #define RAWDESCENTPROP 5 #define RAWWIDTHPROP 6 - +#define FONT_TYPEPROP 7 +#define RASTERIZER_NAMEPROP 8 #define NNAMEPROPS (sizeof(fontNamePropTable) / sizeof(fontProp)) #define NEXTRAPROPS (sizeof(extraProps) / sizeof(fontProp)) @@ -417,6 +420,16 @@ *is_str = TRUE; pp->value = MakeAtom(spf->master->copyright, strlen(spf->master->copyright), TRUE); + break; + case FONT_TYPEPROP: + *is_str = TRUE; + pp->value = MakeAtom("Speedo", strlen("Speedo"), TRUE); + break; + case RASTERIZER_NAMEPROP: + *is_str = TRUE; + pp->value = MakeAtom("X Consortium Speedo Rasterizer", + strlen("X Consortium Speedo Rasterizer"), + TRUE); break; case RAWPIXELPROP: *is_str = FALSE; Index: xc/lib/font/Type1/t1info.c diff -u xc/lib/font/Type1/t1info.c:1.13 xc/lib/font/Type1/t1info.c:1.14 --- xc/lib/font/Type1/t1info.c:1.13 Sat Aug 21 09:47:48 1999 +++ xc/lib/font/Type1/t1info.c Wed Mar 8 16:33:37 2000 @@ -95,7 +95,7 @@ * The Original Software is CID font code that was developed by Silicon * Graphics, Inc. */ -/* $XFree86: xc/lib/font/Type1/t1info.c,v 1.13 1999/08/21 13:47:48 dawes Exp $ */ +/* $XFree86: xc/lib/font/Type1/t1info.c,v 1.14 2000/02/25 18:28:00 dawes Exp $ */ #include "fntfilst.h" #include "fontutil.h" @@ -195,7 +195,9 @@ { "RAW_ASCENT", 0, }, { "RAW_DESCENT", 0, }, { "RAW_AVERAGE_WIDTH", 0, }, - { "FACE_NAME", 0, } + { "FACE_NAME", 0, }, + { "FONT_TYPE", 0, }, + { "RASTERIZER_NAME", 0, } }; /* this is a bit kludgy */ @@ -207,6 +209,8 @@ #define RAWDESCENTPROP 5 #define RAWWIDTHPROP 6 #define FACE_NAMEPROP 7 +#define FONT_TYPEPROP 8 +#define RASTERIZER_NAMEPROP 9 #define NNAMEPROPS (sizeof(fontNamePropTable) / sizeof(fontProp)) #define NEXTRAPROPS (sizeof(extraProps) / sizeof(fontProp)) @@ -690,6 +694,16 @@ } pp->value = MakeAtom(infostrP, strlen(infostrP), TRUE); break; + case FONT_TYPEPROP: + *is_str = TRUE; + infostrP = "CIDFont"; + pp->value = MakeAtom(infostrP, strlen(infostrP), TRUE); + break; + case RASTERIZER_NAMEPROP: + *is_str = TRUE; + infostrP = "X Consortium Type 1 Rasterizer"; + pp->value = MakeAtom(infostrP, strlen(infostrP), TRUE); + break; case RAWPIXELPROP: *is_str = FALSE; pp->value = 1000; @@ -816,6 +830,16 @@ if (rc || !infostrP) { infostrP = "(unknown)"; } + pp->value = MakeAtom(infostrP, strlen(infostrP), TRUE); + break; + case FONT_TYPEPROP: + *is_str = TRUE; + infostrP = "Type 1"; + pp->value = MakeAtom(infostrP, strlen(infostrP), TRUE); + break; + case RASTERIZER_NAMEPROP: + *is_str = TRUE; + infostrP = "X Consortium Type 1 Rasterizer"; pp->value = MakeAtom(infostrP, strlen(infostrP), TRUE); break; case RAWPIXELPROP: Index: xc/lib/font/builtins/builtin.h diff -u xc/lib/font/builtins/builtin.h:1.3 xc/lib/font/builtins/builtin.h:1.4 --- xc/lib/font/builtins/builtin.h:1.3 Wed Dec 29 21:29:49 1999 +++ xc/lib/font/builtins/builtin.h Wed Mar 8 16:33:46 2000 @@ -1,5 +1,5 @@ /* - * $Id: builtin.h,v 1.2 1999/11/02 06:16:47 keithp Exp $ + * Id: builtin.h,v 1.2 1999/11/02 06:16:47 keithp Exp $ * * Copyright 1999 SuSE, Inc. * @@ -22,7 +22,7 @@ * * Author: Keith Packard, SuSE, Inc. */ -/* $XFree86: xc/lib/font/builtins/builtin.h,v 1.3 1999/12/30 02:29:49 robin Exp $ */ +/* $XFree86: xc/lib/font/builtins/builtin.h,v 1.4 2000/02/23 20:29:33 dawes Exp $ */ #include <X11/Xdefs.h> #include <font.h> Index: xc/lib/font/builtins/dir.c diff -u xc/lib/font/builtins/dir.c:1.3 xc/lib/font/builtins/dir.c:1.4 --- xc/lib/font/builtins/dir.c:1.3 Wed Dec 29 21:29:49 1999 +++ xc/lib/font/builtins/dir.c Wed Mar 8 16:33:46 2000 @@ -1,5 +1,5 @@ /* - * $Id: dir.c,v 1.2 1999/11/02 06:16:47 keithp Exp $ + * Id: dir.c,v 1.2 1999/11/02 06:16:47 keithp Exp $ * * Copyright 1999 SuSE, Inc. * @@ -22,7 +22,7 @@ * * Author: Keith Packard, SuSE, Inc. */ -/* $XFree86: xc/lib/font/builtins/dir.c,v 1.3 1999/12/30 02:29:49 robin Exp $ */ +/* $XFree86: xc/lib/font/builtins/dir.c,v 1.4 2000/02/23 20:29:33 dawes Exp $ */ #include "builtin.h" Index: xc/lib/font/builtins/file.c diff -u xc/lib/font/builtins/file.c:1.3 xc/lib/font/builtins/file.c:1.4 --- xc/lib/font/builtins/file.c:1.3 Wed Dec 29 21:29:49 1999 +++ xc/lib/font/builtins/file.c Wed Mar 8 16:33:46 2000 @@ -1,5 +1,5 @@ /* - * $Id: file.c,v 1.2 1999/11/02 06:16:47 keithp Exp $ + * Id: file.c,v 1.2 1999/11/02 06:16:47 keithp Exp $ * * Copyright 1999 SuSE, Inc. * @@ -22,7 +22,7 @@ * * Author: Keith Packard, SuSE, Inc. */ -/* $XFree86: xc/lib/font/builtins/file.c,v 1.3 1999/12/30 02:29:49 robin Exp $ */ +/* $XFree86: xc/lib/font/builtins/file.c,v 1.4 2000/02/23 20:29:33 dawes Exp $ */ #include "builtin.h" Index: xc/lib/font/builtins/fonts.c diff -u xc/lib/font/builtins/fonts.c:1.3 xc/lib/font/builtins/fonts.c:1.4 --- xc/lib/font/builtins/fonts.c:1.3 Wed Dec 29 21:29:49 1999 +++ xc/lib/font/builtins/fonts.c Wed Mar 8 16:33:46 2000 @@ -1,5 +1,5 @@ /* - * $Id: fonts.c,v 1.2 1999/11/02 06:16:47 keithp Exp $ + * Id: fonts.c,v 1.2 1999/11/02 06:16:47 keithp Exp $ * * Copyright 1999 SuSE, Inc. * @@ -22,7 +22,7 @@ * * Author: Keith Packard, SuSE, Inc. */ -/* $XFree86: xc/lib/font/builtins/fonts.c,v 1.3 1999/12/30 02:29:49 robin Exp $ */ +/* $XFree86: xc/lib/font/builtins/fonts.c,v 1.4 2000/02/23 20:29:34 dawes Exp $ */ #include "builtin.h" Index: xc/lib/font/builtins/fpe.c diff -u xc/lib/font/builtins/fpe.c:1.3 xc/lib/font/builtins/fpe.c:1.4 --- xc/lib/font/builtins/fpe.c:1.3 Wed Dec 29 21:29:51 1999 +++ xc/lib/font/builtins/fpe.c Wed Mar 8 16:33:46 2000 @@ -1,5 +1,5 @@ /* - * $Id: fpe.c,v 1.2 1999/11/02 06:16:48 keithp Exp $ + * Id: fpe.c,v 1.2 1999/11/02 06:16:48 keithp Exp $ * * Copyright 1999 SuSE, Inc. * @@ -22,7 +22,7 @@ * * Author: Keith Packard, SuSE, Inc. */ -/* $XFree86: xc/lib/font/builtins/fpe.c,v 1.3 1999/12/30 02:29:51 robin Exp $ */ +/* $XFree86: xc/lib/font/builtins/fpe.c,v 1.4 2000/02/23 20:29:36 dawes Exp $ */ #include "fntfilst.h" Index: xc/lib/font/builtins/render.c diff -u xc/lib/font/builtins/render.c:1.3 xc/lib/font/builtins/render.c:1.4 --- xc/lib/font/builtins/render.c:1.3 Wed Dec 29 21:29:51 1999 +++ xc/lib/font/builtins/render.c Wed Mar 8 16:33:46 2000 @@ -1,5 +1,5 @@ /* - * $Id: render.c,v 1.2 1999/11/02 06:16:48 keithp Exp $ + * Id: render.c,v 1.2 1999/11/02 06:16:48 keithp Exp $ * * Copyright 1999 SuSE, Inc. * @@ -22,7 +22,7 @@ * * Author: Keith Packard, SuSE, Inc. */ -/* $XFree86: xc/lib/font/builtins/render.c,v 1.3 1999/12/30 02:29:51 robin Exp $ */ +/* $XFree86: xc/lib/font/builtins/render.c,v 1.4 2000/02/23 20:29:36 dawes Exp $ */ #include "fntfilst.h" #include "builtin.h" Index: xc/lib/font/fontcache/Imakefile diff -u xc/lib/font/fontcache/Imakefile:1.1 xc/lib/font/fontcache/Imakefile:1.2 --- xc/lib/font/fontcache/Imakefile:1.1 Wed Mar 8 16:33:46 2000 +++ xc/lib/font/fontcache/Imakefile Wed Mar 8 16:33:46 2000 @@ -1,4 +1,4 @@ -XCOMM $Id: Imakefile,v 1.2 1999/01/31 13:02:46 akiyama Exp $ +XCOMM Id: Imakefile,v 1.2 1999/01/31 13:02:46 akiyama Exp $ #include <Server.tmpl> #if BuildFontCache Index: xc/lib/font/fontcache/fcqueue.h diff -u xc/lib/font/fontcache/fcqueue.h:1.1 xc/lib/font/fontcache/fcqueue.h:1.2 --- xc/lib/font/fontcache/fcqueue.h:1.1 Wed Mar 8 16:33:46 2000 +++ xc/lib/font/fontcache/fcqueue.h Wed Mar 8 16:33:46 2000 @@ -40,7 +40,7 @@ * /usr/include/sys/queue.h, modified for X-TrueType Server by * Shunsuke Akiyama <akiyama@jp.FreeBSD.org>. * - * $Id: fcqueue.h,v 1.1 1999/01/06 13:36:42 akiyama Exp $ + * Id: fcqueue.h,v 1.1 1999/01/06 13:36:42 akiyama Exp $ */ #ifndef _FCQUEUE_H_ Index: xc/lib/font/fontcache/fontcache.c diff -u xc/lib/font/fontcache/fontcache.c:1.1 xc/lib/font/fontcache/fontcache.c:1.2 --- xc/lib/font/fontcache/fontcache.c:1.1 Wed Mar 8 16:33:46 2000 +++ xc/lib/font/fontcache/fontcache.c Wed Mar 8 16:33:46 2000 @@ -24,7 +24,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: fontcache.c,v 1.19 1999/01/31 13:06:00 akiyama Exp $ + * Id: fontcache.c,v 1.19 1999/01/31 13:06:00 akiyama Exp $ */ #include <stdio.h> Index: xc/lib/font/fontcache/fontcache.h diff -u xc/lib/font/fontcache/fontcache.h:1.1 xc/lib/font/fontcache/fontcache.h:1.2 --- xc/lib/font/fontcache/fontcache.h:1.1 Wed Mar 8 16:33:46 2000 +++ xc/lib/font/fontcache/fontcache.h Wed Mar 8 16:33:46 2000 @@ -24,7 +24,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: fontcache.h,v 1.12 1999/01/09 06:24:30 akiyama Exp $ + * Id: fontcache.h,v 1.12 1999/01/09 06:24:30 akiyama Exp $ */ #ifndef _FONTCACHE_H_ Index: xc/nls/XLC_LOCALE/C diff -u xc/nls/XLC_LOCALE/C:1.1.1.1 xc/nls/XLC_LOCALE/C:1.3 --- xc/nls/XLC_LOCALE/C:1.1.1.1 Sat Dec 21 22:29:35 1996 +++ xc/nls/XLC_LOCALE/C Wed Mar 8 16:33:50 2000 @@ -1,5 +1,6 @@ XCOMM $XConsortium: C /main/8 1996/09/28 16:50:43 rws $ XCOMM XLocale Database Sample for C. +XCOMM $XFree86: xc/nls/XLC_LOCALE/C,v 1.3 2000/02/25 21:02:32 dawes Exp $ XCOMM XCOMM @@ -45,6 +46,18 @@ length 1 wc_encoding \x00000000 ct_encoding ISO8859-1:GL +} + +XCOMM cs1 class +cs1 { + side GR:Default + length 1 +#if WCHAR32 + wc_encoding \x30000000 +#else + wc_encoding \x00008080 +#endif + ct_encoding ISO8859-1:GR } END XLC_XLOCALE Index: xc/nls/XLC_LOCALE/en_US.UTF-8 diff -u xc/nls/XLC_LOCALE/en_US.UTF-8:1.1 xc/nls/XLC_LOCALE/en_US.UTF-8:1.2 --- xc/nls/XLC_LOCALE/en_US.UTF-8:1.1 Wed Mar 8 16:33:50 2000 +++ xc/nls/XLC_LOCALE/en_US.UTF-8 Wed Mar 8 16:33:50 2000 @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/nls/XLC_LOCALE/en_US.UTF-8,v 1.1 2000/02/12 02:54:29 dawes Exp $ +XCOMM $XFree86: xc/nls/XLC_LOCALE/en_US.UTF-8,v 1.2 2000/02/29 03:09:07 dawes Exp $ XCOMM XLocale Database Sample for en_US.UTF-8 XCOMM @@ -79,14 +79,6 @@ } } END XLC_FONTSET - -XLC_CHARSET_DEFINE -csd0 { - charset_name ISO10646-1 - side none - sequence \x1b%G -} -END XLC_CHARSET_DEFINE XCOMM XCOMM XLC_XLOCALE category Index: xc/fonts/scaled/Type1/COPYRIGHT.BH diff -u /dev/null xc/fonts/scaled/Type1/COPYRIGHT.BH:1.1 --- /dev/null Wed Mar 8 16:39:15 2000 +++ xc/fonts/scaled/Type1/COPYRIGHT.BH Wed Mar 8 16:39:15 2000 @@ -0,0 +1,40 @@ +Copyright (C) 2000 Bigelow & Holmes Inc. and Y&Y, Inc. Patents pending. +All Rights Reserved. Lucidux is a trademark of Bigelow & Holmes Inc. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of these Fonts and associated documentation files (the "Font +Software"), to deal in the Font Software, including without limitation the +rights to use, copy, merge, publish, distribute, sublicense, and/or sell +copies of the Font Software, and to permit persons to whom the Font +Software is furnished to do so, subject to the following conditions: + +The above copyright, trademark, patent notices and this permission notice +shall be included in all copies of one or more of the Font Software. + +The Font Software may not be modified, altered, or added to, and in +particular the designs of glyphs or characters in the Fonts may not be +modified nor may additional glyphs or characters be added to the Fonts, +except that composite characters composed of two or more characters in the +Fonts may be created using the seac (Standard Encoding Accented Character) +Type 1 operator. + +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF +COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BIGELOW & +HOLMES INC. OR Y&Y, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR +CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. + +Except as contained in this notice, the names of Bigelow & Holmes Inc. and +Y&Y, Inc. shall not be used in advertising or otherwise to promote the +sale, use or other dealings in this Font Software without prior written +authorization from the Bigelow & Holmes Inc. and Y&Y, Inc. + +For further information, contact: + +sales@yandy.com +or +design@bigelowandholmes.com Index: xc/fonts/scaled/Type1/Imakefile diff -u xc/fonts/scaled/Type1/Imakefile:1.8 xc/fonts/scaled/Type1/Imakefile:1.9 --- xc/fonts/scaled/Type1/Imakefile:1.8 Wed Mar 8 16:39:15 2000 +++ xc/fonts/scaled/Type1/Imakefile Wed Mar 8 16:39:15 2000 @@ -3,16 +3,25 @@ -XCOMM $XFree86: xc/fonts/scaled/Type1/Imakefile,v 1.8 2000/02/08 17:18:22 dawes Exp $ +XCOMM $XFree86: xc/fonts/scaled/Type1/Imakefile,v 1.9 2000/03/06 22:59:11 dawes Exp $ #define PassCDebugFlags /* as nothing */ -OBJS = UTRG____.pfa UTB_____.pfa UTBI____.pfa UTI_____.pfa \ - cour.pfa courb.pfa courbi.pfa couri.pfa \ - c0648bt_.pfb c0649bt_.pfb c0632bt_.pfb c0633bt_.pfb \ - c0419bt_.pfb c0582bt_.pfb c0583bt_.pfb c0611bt_.pfb cursor.pfa +FONTS = UTRG____.pfa UTB_____.pfa UTBI____.pfa UTI_____.pfa \ + cour.pfa courb.pfa courbi.pfa couri.pfa \ + c0648bt_.pfb c0649bt_.pfb c0632bt_.pfb c0633bt_.pfb \ + c0419bt_.pfb c0582bt_.pfb c0583bt_.pfb c0611bt_.pfb cursor.pfa +AFMS = UTRG____.afm UTB_____.afm UTBI____.afm UTI_____.afm \ + cour.afm courb.afm courbi.afm couri.afm \ + c0648bt_.afm c0649bt_.afm c0632bt_.afm c0633bt_.afm \ + c0419bt_.afm c0582bt_.afm c0583bt_.afm c0611bt_.afm + +BHFONTS = lcdxmo.pfa lcdxmr.pfa lcdxro.pfa lcdxrr.pfa lcdxso.pfa lcdxsr.pfa +BHAFMS = lcdxmo.afm lcdxmr.afm lcdxro.afm lcdxrr.afm lcdxso.afm lcdxsr.afm + +OBJS = $(FONTS) $(BHFONTS) $(AFMS) $(BHAFMS) FONTINSTDIR = $(FONTDIR)/Type1 Index: xc/fonts/scaled/Type1/fonts.scale diff -u xc/fonts/scaled/Type1/fonts.scale:1.3 xc/fonts/scaled/Type1/fonts.scale:1.4 --- xc/fonts/scaled/Type1/fonts.scale:1.3 Wed Mar 8 16:39:15 2000 +++ xc/fonts/scaled/Type1/fonts.scale Wed Mar 8 16:39:15 2000 @@ -1,4 +1,4 @@ -29 +65 UTRG____.pfa -adobe-utopia-medium-r-normal--0-0-0-0-p-0-iso8859-1 UTI_____.pfa -adobe-utopia-medium-i-normal--0-0-0-0-p-0-iso8859-1 UTB_____.pfa -adobe-utopia-bold-r-normal--0-0-0-0-p-0-iso8859-1 @@ -28,3 +28,39 @@ c0583bt_.pfb -bitstream-courier-bold-r-normal--0-0-0-0-m-0-iso8859-1 c0611bt_.pfb -bitstream-courier-bold-i-normal--0-0-0-0-m-0-iso8859-1 cursor.pfa -xfree86-cursor-medium-r-normal--0-0-0-0-p-0-adobe-fontspecific +lcdxrr.pfa -b&h-lucidux serif-medium-r-normal--0-0-0-0-p-0-iso8859-1 +lcdxrr.pfa -b&h-lucidux serif-medium-r-normal--0-0-0-0-p-0-iso8859-2 +lcdxrr.pfa -b&h-lucidux serif-medium-r-normal--0-0-0-0-p-0-iso8859-3 +lcdxrr.pfa -b&h-lucidux serif-medium-r-normal--0-0-0-0-p-0-iso8859-4 +lcdxrr.pfa -b&h-lucidux serif-medium-r-normal--0-0-0-0-p-0-iso8859-9 +lcdxrr.pfa -b&h-lucidux serif-medium-r-normal--0-0-0-0-p-0-iso8859-15 +lcdxro.pfa -b&h-lucidux serif-medium-o-normal--0-0-0-0-p-0-iso8859-1 +lcdxro.pfa -b&h-lucidux serif-medium-o-normal--0-0-0-0-p-0-iso8859-2 +lcdxro.pfa -b&h-lucidux serif-medium-o-normal--0-0-0-0-p-0-iso8859-3 +lcdxro.pfa -b&h-lucidux serif-medium-o-normal--0-0-0-0-p-0-iso8859-4 +lcdxro.pfa -b&h-lucidux serif-medium-o-normal--0-0-0-0-p-0-iso8859-9 +lcdxro.pfa -b&h-lucidux serif-medium-o-normal--0-0-0-0-p-0-iso8859-15 +lcdxsr.pfa -b&h-lucidux sans-medium-r-normal--0-0-0-0-p-0-iso8859-1 +lcdxsr.pfa -b&h-lucidux sans-medium-r-normal--0-0-0-0-p-0-iso8859-2 +lcdxsr.pfa -b&h-lucidux sans-medium-r-normal--0-0-0-0-p-0-iso8859-3 +lcdxsr.pfa -b&h-lucidux sans-medium-r-normal--0-0-0-0-p-0-iso8859-4 +lcdxsr.pfa -b&h-lucidux sans-medium-r-normal--0-0-0-0-p-0-iso8859-9 +lcdxsr.pfa -b&h-lucidux sans-medium-r-normal--0-0-0-0-p-0-iso8859-15 +lcdxso.pfa -b&h-lucidux sans-medium-o-normal--0-0-0-0-p-0-iso8859-1 +lcdxso.pfa -b&h-lucidux sans-medium-o-normal--0-0-0-0-p-0-iso8859-2 +lcdxso.pfa -b&h-lucidux sans-medium-o-normal--0-0-0-0-p-0-iso8859-3 +lcdxso.pfa -b&h-lucidux sans-medium-o-normal--0-0-0-0-p-0-iso8859-4 +lcdxso.pfa -b&h-lucidux sans-medium-o-normal--0-0-0-0-p-0-iso8859-9 +lcdxso.pfa -b&h-lucidux sans-medium-o-normal--0-0-0-0-p-0-iso8859-15 +lcdxmr.pfa -b&h-lucidux mono-medium-r-normal--0-0-0-0-m-0-iso8859-1 +lcdxmr.pfa -b&h-lucidux mono-medium-r-normal--0-0-0-0-m-0-iso8859-2 +lcdxmr.pfa -b&h-lucidux mono-medium-r-normal--0-0-0-0-m-0-iso8859-3 +lcdxmr.pfa -b&h-lucidux mono-medium-r-normal--0-0-0-0-m-0-iso8859-4 +lcdxmr.pfa -b&h-lucidux mono-medium-r-normal--0-0-0-0-m-0-iso8859-9 +lcdxmr.pfa -b&h-lucidux mono-medium-r-normal--0-0-0-0-m-0-iso8859-15 +lcdxmo.pfa -b&h-lucidux mono-medium-o-normal--0-0-0-0-m-0-iso8859-1 +lcdxmo.pfa -b&h-lucidux mono-medium-o-normal--0-0-0-0-m-0-iso8859-2 +lcdxmo.pfa -b&h-lucidux mono-medium-o-normal--0-0-0-0-m-0-iso8859-3 +lcdxmo.pfa -b&h-lucidux mono-medium-o-normal--0-0-0-0-m-0-iso8859-4 +lcdxmo.pfa -b&h-lucidux mono-medium-o-normal--0-0-0-0-m-0-iso8859-9 +lcdxmo.pfa -b&h-lucidux mono-medium-o-normal--0-0-0-0-m-0-iso8859-15 Index: xc/fonts/scaled/Type1/lcdxmo.afm diff -u /dev/null xc/fonts/scaled/Type1/lcdxmo.afm:1.1 --- /dev/null Wed Mar 8 16:39:15 2000 +++ xc/fonts/scaled/Type1/lcdxmo.afm Wed Mar 8 16:39:15 2000 @@ -0,0 +1,497 @@ +StartFontMetrics 2.0 +Comment Copyright (c) 2000 Bigelow & Holmes Inc. and Y&Y, Inc. +Comment Patents pending. All Rights Reserved. +Comment Lucidux is a trademark of Bigelow & Holmes Inc. +Comment CreationDate: 2000 Mar 04 11:30:20 +Comment For other Bigelow & Holmes fonts see http://www.YandY.com +Version 000.200 +Notice Copyright (C) 2000 Bigelow & Holmes Inc. and Y&Y, Inc. All rights reserved. +FullName Lucidux Mono Oblique +FamilyName LuciduxMono +Weight Normal +ItalicAngle -11.3 +IsFixedPitch true +UnderlinePosition -100 +UnderlineThickness 50 +FontName LuciduxMono-Oblique +FontBBox -14 -211 758 993 +Comment UniqueID 5096733 +CapHeight 723 +XHeight 530 +Ascender 771 +Descender -193 +EncodingScheme AdobeStandardEncoding +StartCharMetrics 337 +C 32 ; WX 600 ; N space ; B 0 0 0 0 ; +C 33 ; WX 600 ; N exclam ; B 240 0 493 723 ; +C 34 ; WX 600 ; N quotedbl ; B 244 506 635 771 ; +C 35 ; WX 600 ; N numbersign ; B 63 0 681 723 ; +C 36 ; WX 600 ; N dollar ; B 78 -60 626 783 ; +C 37 ; WX 600 ; N percent ; B 26 -18 717 741 ; +C 38 ; WX 600 ; N ampersand ; B 63 -18 662 741 ; +C 40 ; WX 600 ; N parenleft ; B 208 -145 634 771 ; +C 41 ; WX 600 ; N parenright ; B 91 -145 517 771 ; +C 42 ; WX 600 ; N asterisk ; B 184 300 626 723 ; +C 43 ; WX 600 ; N plus ; B 101 49 619 553 ; +C 44 ; WX 600 ; N comma ; B 197 -157 401 145 ; +C 45 ; WX 600 ; N hyphen ; B 125 265 595 337 ; +C 46 ; WX 600 ; N period ; B 228 0 401 145 ; +C 47 ; WX 600 ; N slash ; B 19 -145 706 771 ; +C 48 ; WX 600 ; N zero ; B 105 -18 640 741 ; +C 49 ; WX 600 ; N one ; B 55 0 597 741 ; +C 50 ; WX 600 ; N two ; B 65 0 634 741 ; +C 51 ; WX 600 ; N three ; B 91 -18 620 741 ; +C 52 ; WX 600 ; N four ; B 82 0 608 723 ; +C 53 ; WX 600 ; N five ; B 122 -18 655 723 ; +C 54 ; WX 600 ; N six ; B 115 -18 661 741 ; +C 55 ; WX 600 ; N seven ; B 129 0 662 723 ; +C 56 ; WX 600 ; N eight ; B 91 -18 633 741 ; +C 57 ; WX 600 ; N nine ; B 83 -18 629 741 ; +C 58 ; WX 600 ; N colon ; B 228 0 478 530 ; +C 59 ; WX 600 ; N semicolon ; B 197 -157 478 530 ; +C 60 ; WX 600 ; N less ; B 108 0 672 602 ; +C 61 ; WX 600 ; N equal ; B 82 169 639 434 ; +C 62 ; WX 600 ; N greater ; B 48 0 612 602 ; +C 63 ; WX 600 ; N question ; B 203 0 646 741 ; +C 64 ; WX 600 ; N at ; B 98 -18 634 741 ; +C 65 ; WX 600 ; N A ; B 12 0 600 723 ; +C 66 ; WX 600 ; N B ; B 36 0 637 723 ; +C 67 ; WX 600 ; N C ; B 119 -18 682 741 ; +C 68 ; WX 600 ; N D ; B 24 0 657 723 ; +C 69 ; WX 600 ; N E ; B 36 0 661 723 ; +C 70 ; WX 600 ; N F ; B 54 0 700 723 ; +C 71 ; WX 600 ; N G ; B 95 -18 658 741 ; +C 72 ; WX 600 ; N H ; B 30 0 715 723 ; +C 73 ; WX 600 ; N I ; B 78 0 667 723 ; +C 74 ; WX 600 ; N J ; B 57 -18 703 723 ; +C 75 ; WX 600 ; N K ; B 36 0 674 723 ; +C 76 ; WX 600 ; N L ; B 42 0 609 723 ; +C 77 ; WX 600 ; N M ; B 12 0 733 723 ; +C 78 ; WX 600 ; N N ; B 36 0 709 723 ; +C 79 ; WX 600 ; N O ; B 90 -18 655 741 ; +C 80 ; WX 600 ; N P ; B 42 0 664 723 ; +C 81 ; WX 600 ; N Q ; B 90 -157 655 741 ; +C 82 ; WX 600 ; N R ; B 42 0 627 723 ; +C 83 ; WX 600 ; N S ; B 80 -18 632 741 ; +C 84 ; WX 600 ; N T ; B 125 0 715 723 ; +C 85 ; WX 600 ; N U ; B 130 -18 715 723 ; +C 86 ; WX 600 ; N V ; B 146 0 733 723 ; +C 87 ; WX 600 ; N W ; B 118 0 734 723 ; +C 88 ; WX 600 ; N X ; B 24 0 721 723 ; +C 89 ; WX 600 ; N Y ; B 144 0 732 723 ; +C 90 ; WX 600 ; N Z ; B 72 0 667 723 ; +C 91 ; WX 600 ; N bracketleft ; B 164 -145 612 771 ; +C 92 ; WX 600 ; N backslash ; B 202 -145 523 771 ; +C 93 ; WX 600 ; N bracketright ; B 113 -145 561 771 ; +C 94 ; WX 600 ; N asciicircum ; B 124 265 582 723 ; +C 95 ; WX 600 ; N underscore ; B -14 -72 600 0 ; +C 97 ; WX 600 ; N a ; B 97 -12 590 542 ; +C 98 ; WX 600 ; N b ; B 90 -12 612 771 ; +C 99 ; WX 600 ; N c ; B 118 -12 600 542 ; +C 100 ; WX 600 ; N d ; B 94 -12 664 771 ; +C 101 ; WX 600 ; N e ; B 107 -12 607 542 ; +C 102 ; WX 600 ; N f ; B 72 0 719 783 ; +C 103 ; WX 600 ; N g ; B 21 -205 676 543 ; +C 104 ; WX 600 ; N h ; B 34 0 589 771 ; +C 105 ; WX 600 ; N i ; B 72 0 552 771 ; +C 106 ; WX 600 ; N j ; B 44 -205 601 771 ; +C 107 ; WX 600 ; N k ; B 36 0 640 771 ; +C 108 ; WX 600 ; N l ; B 72 0 552 771 ; +C 109 ; WX 600 ; N m ; B 13 0 639 542 ; +C 110 ; WX 600 ; N n ; B 34 0 589 542 ; +C 111 ; WX 600 ; N o ; B 99 -12 607 542 ; +C 112 ; WX 600 ; N p ; B -9 -193 612 542 ; +C 113 ; WX 600 ; N q ; B 94 -193 616 542 ; +C 114 ; WX 600 ; N r ; B 36 0 642 542 ; +C 115 ; WX 600 ; N s ; B 108 -12 578 542 ; +C 116 ; WX 600 ; N t ; B 148 -12 602 651 ; +C 117 ; WX 600 ; N u ; B 120 -12 615 530 ; +C 118 ; WX 600 ; N v ; B 121 0 679 530 ; +C 119 ; WX 600 ; N w ; B 105 0 695 530 ; +C 120 ; WX 600 ; N x ; B 29 0 687 530 ; +C 121 ; WX 600 ; N y ; B 96 -193 679 530 ; +C 122 ; WX 600 ; N z ; B 60 0 622 530 ; +C 123 ; WX 600 ; N braceleft ; B 147 -145 643 771 ; +C 124 ; WX 600 ; N bar ; B 235 -145 490 771 ; +C 125 ; WX 600 ; N braceright ; B 82 -145 579 771 ; +C 126 ; WX 600 ; N asciitilde ; B 102 201 613 377 ; +C 161 ; WX 600 ; N exclamdown ; B 213 -193 466 530 ; +C 162 ; WX 600 ; N cent ; B 148 0 635 723 ; +C 163 ; WX 600 ; N sterling ; B 73 0 645 741 ; +C 165 ; WX 600 ; N yen ; B 123 0 721 723 ; +C 167 ; WX 600 ; N section ; B 50 -163 641 741 ; +C 168 ; WX 600 ; N currency ; B 64 69 667 586 ; +C 169 ; WX 600 ; N quotesingle ; B 358 470 526 771 ; +C 171 ; WX 600 ; N guillemotleft ; B 93 48 628 482 ; +C 180 ; WX 600 ; N periodcentered ; B 281 205 425 325 ; +C 182 ; WX 600 ; N paragraph ; B 157 -145 619 729 ; +C 187 ; WX 600 ; N guillemotright ; B 78 48 613 482 ; +C 191 ; WX 600 ; N questiondown ; B 60 -211 503 530 ; +C 193 ; WX 600 ; N grave ; B 349 626 533 783 ; +C 194 ; WX 600 ; N acute ; B 317 626 566 783 ; +C 195 ; WX 600 ; N circumflex ; B 246 626 604 783 ; +C 196 ; WX 600 ; N tilde ; B 262 627 611 741 ; +C 197 ; WX 600 ; N macron ; B 256 627 606 687 ; +C 198 ; WX 600 ; N breve ; B 285 630 623 771 ; +C 199 ; WX 600 ; N dotaccent ; B 377 627 493 723 ; +C 200 ; WX 600 ; N dieresis ; B 262 626 608 723 ; +C 202 ; WX 600 ; N ring ; B 334 626 561 848 ; +C 203 ; WX 600 ; N cedilla ; B 175 -211 360 0 ; +C 205 ; WX 600 ; N hungarumlaut ; B 245 626 660 783 ; +C 206 ; WX 600 ; N ogonek ; B 201 -181 365 0 ; +C 207 ; WX 600 ; N caron ; B 278 626 636 783 ; +C 225 ; WX 600 ; N AE ; B 6 0 730 723 ; +C 227 ; WX 600 ; N ordfeminine ; B 155 349 629 741 ; +C 232 ; WX 600 ; N Lslash ; B 42 0 609 723 ; +C 233 ; WX 600 ; N Oslash ; B 26 -18 718 741 ; +C 234 ; WX 600 ; N OE ; B 72 -18 703 741 ; +C 235 ; WX 600 ; N ordmasculine ; B 177 349 641 741 ; +C 241 ; WX 600 ; N ae ; B 44 -12 648 542 ; +C 245 ; WX 600 ; N dotlessi ; B 72 0 552 530 ; +C 248 ; WX 600 ; N lslash ; B 72 0 609 771 ; +C 249 ; WX 600 ; N oslash ; B 52 -12 654 542 ; +C 250 ; WX 600 ; N oe ; B 67 -12 649 542 ; +C 251 ; WX 600 ; N germandbls ; B 30 -12 626 783 ; +C -1 ; WX 600 ; N Aacute ; B 12 0 645 940 ; +C -1 ; WX 600 ; N Abreve ; B 12 0 658 940 ; +C -1 ; WX 600 ; N Acircumflex ; B 12 0 637 940 ; +C -1 ; WX 600 ; N Adieresis ; B 12 0 640 880 ; +C -1 ; WX 600 ; N Agrave ; B 12 0 600 940 ; +C -1 ; WX 600 ; N Amacron ; B 12 0 634 844 ; +C -1 ; WX 600 ; N Aogonek ; B 12 -181 600 723 ; +C -1 ; WX 600 ; N Aring ; B 12 0 600 945 ; +C -1 ; WX 600 ; N Atilde ; B 12 0 644 898 ; +C -1 ; WX 600 ; N Cacute ; B 119 -18 694 940 ; +C -1 ; WX 600 ; N Ccaron ; B 119 -18 716 940 ; +C -1 ; WX 600 ; N Ccedilla ; B 119 -211 682 741 ; +C -1 ; WX 600 ; N Ccircumflex ; B 119 -18 685 940 ; +C -1 ; WX 600 ; N Cdotaccent ; B 119 -18 682 880 ; +C -1 ; WX 600 ; N Dcaron ; B 24 0 657 940 ; +C -1 ; WX 600 ; N Dcroat ; B 24 0 657 723 ; +C -1 ; WX 600 ; N Eacute ; B 36 0 661 940 ; +C -1 ; WX 600 ; N Ebreve ; B 36 0 661 940 ; +C -1 ; WX 600 ; N Ecaron ; B 36 0 661 940 ; +C -1 ; WX 600 ; N Ecircumflex ; B 36 0 661 940 ; +C -1 ; WX 600 ; N Edieresis ; B 36 0 661 880 ; +C -1 ; WX 600 ; N Edotaccent ; B 36 0 661 880 ; +C -1 ; WX 600 ; N Egrave ; B 36 0 661 940 ; +C -1 ; WX 600 ; N Emacron ; B 36 0 661 844 ; +C -1 ; WX 600 ; N Eng ; B 36 -145 709 723 ; +C -1 ; WX 600 ; N Eogonek ; B 36 -181 661 723 ; +C -1 ; WX 600 ; N Eth ; B 24 0 657 723 ; +C -1 ; WX 600 ; N Euro ; B 55 -18 682 741 ; +C -1 ; WX 600 ; N Gbreve ; B 95 -18 682 940 ; +C -1 ; WX 600 ; N Gcircumflex ; B 95 -18 661 940 ; +C -1 ; WX 600 ; N Gcommaaccent ; B 95 -191 658 741 ; +C -1 ; WX 600 ; N Gdotaccent ; B 95 -18 658 880 ; +C -1 ; WX 600 ; N Hbar ; B 30 0 715 723 ; +C -1 ; WX 600 ; N Hcircumflex ; B 30 0 715 940 ; +C -1 ; WX 600 ; N IJ ; B 22 -18 697 723 ; +C -1 ; WX 600 ; N Iacute ; B 78 0 667 940 ; +C -1 ; WX 600 ; N Ibreve ; B 78 0 667 940 ; +C -1 ; WX 600 ; N Icircumflex ; B 78 0 667 940 ; +C -1 ; WX 600 ; N Idieresis ; B 78 0 667 880 ; +C -1 ; WX 600 ; N Idotaccent ; B 78 0 667 880 ; +C -1 ; WX 600 ; N Igrave ; B 78 0 667 940 ; +C -1 ; WX 600 ; N Imacron ; B 78 0 667 844 ; +C -1 ; WX 600 ; N Iogonek ; B 78 -181 667 723 ; +C -1 ; WX 600 ; N Itilde ; B 78 0 667 898 ; +C -1 ; WX 600 ; N Jcircumflex ; B 57 -18 703 940 ; +C -1 ; WX 600 ; N Kcommaaccent ; B 36 -191 674 723 ; +C -1 ; WX 600 ; N Lacute ; B 42 0 609 940 ; +C -1 ; WX 600 ; N Lcaron ; B 42 0 699 723 ; +C -1 ; WX 600 ; N Lcommaaccent ; B 42 -191 609 723 ; +C -1 ; WX 600 ; N Ldot ; B 42 0 653 723 ; +C -1 ; WX 600 ; N Nacute ; B 36 0 709 940 ; +C -1 ; WX 600 ; N Ncaron ; B 36 0 709 940 ; +C -1 ; WX 600 ; N Ncommaaccent ; B 36 -191 709 723 ; +C -1 ; WX 600 ; N Ntilde ; B 36 0 709 898 ; +C -1 ; WX 600 ; N Oacute ; B 90 -18 655 940 ; +C -1 ; WX 600 ; N Obreve ; B 90 -18 657 940 ; +C -1 ; WX 600 ; N Ocircumflex ; B 90 -18 655 940 ; +C -1 ; WX 600 ; N Odieresis ; B 90 -18 655 880 ; +C -1 ; WX 600 ; N Ograve ; B 90 -18 655 940 ; +C -1 ; WX 600 ; N Ohungarumlaut ; B 90 -18 723 940 ; +C -1 ; WX 600 ; N Omacron ; B 90 -18 655 844 ; +C -1 ; WX 600 ; N Otilde ; B 90 -18 655 898 ; +C -1 ; WX 600 ; N Racute ; B 42 0 627 940 ; +C -1 ; WX 600 ; N Rcaron ; B 42 0 640 940 ; +C -1 ; WX 600 ; N Rcommaaccent ; B 42 -191 627 723 ; +C -1 ; WX 600 ; N Sacute ; B 80 -18 653 940 ; +C -1 ; WX 600 ; N Scaron ; B 80 -18 675 940 ; +C -1 ; WX 600 ; N Scedilla ; B 80 -211 632 741 ; +C -1 ; WX 600 ; N Scircumflex ; B 80 -18 645 940 ; +C -1 ; WX 600 ; N Scommaaccent ; B 80 -191 632 741 ; +C -1 ; WX 600 ; N Tbar ; B 125 0 715 723 ; +C -1 ; WX 600 ; N Tcaron ; B 125 0 715 940 ; +C -1 ; WX 600 ; N Tcedilla ; B 125 -211 715 723 ; +C -1 ; WX 600 ; N Tcommaaccent ; B 125 -191 715 723 ; +C -1 ; WX 600 ; N Thorn ; B 42 0 635 723 ; +C -1 ; WX 600 ; N Uacute ; B 130 -18 715 940 ; +C -1 ; WX 600 ; N Ubreve ; B 130 -18 715 940 ; +C -1 ; WX 600 ; N Ucircumflex ; B 130 -18 715 940 ; +C -1 ; WX 600 ; N Udieresis ; B 130 -18 715 880 ; +C -1 ; WX 600 ; N Ugrave ; B 130 -18 715 940 ; +C -1 ; WX 600 ; N Uhungarumlaut ; B 130 -18 758 940 ; +C -1 ; WX 600 ; N Umacron ; B 130 -18 715 844 ; +C -1 ; WX 600 ; N Uogonek ; B 130 -181 715 723 ; +C -1 ; WX 600 ; N Uring ; B 130 -18 715 993 ; +C -1 ; WX 600 ; N Utilde ; B 130 -18 715 898 ; +C -1 ; WX 600 ; N Wcircumflex ; B 118 0 734 940 ; +C -1 ; WX 600 ; N Yacute ; B 144 0 732 940 ; +C -1 ; WX 600 ; N Ycircumflex ; B 144 0 732 940 ; +C -1 ; WX 600 ; N Ydieresis ; B 144 0 732 880 ; +C -1 ; WX 600 ; N Zacute ; B 72 0 667 940 ; +C -1 ; WX 600 ; N Zcaron ; B 72 0 667 940 ; +C -1 ; WX 600 ; N Zdotaccent ; B 72 0 667 880 ; +C -1 ; WX 600 ; N aacute ; B 97 -12 644 783 ; +C -1 ; WX 600 ; N abreve ; B 97 -12 629 771 ; +C -1 ; WX 600 ; N acircumflex ; B 97 -12 617 783 ; +C -1 ; WX 600 ; N adieresis ; B 97 -12 625 723 ; +C -1 ; WX 600 ; N afii57929 ; B 362 549 502 771 ; +C -1 ; WX 600 ; N agrave ; B 97 -12 590 783 ; +C -1 ; WX 600 ; N amacron ; B 97 -12 617 687 ; +C -1 ; WX 600 ; N aogonek ; B 97 -181 590 542 ; +C -1 ; WX 600 ; N apostrophe ; B 362 549 502 771 ; +C -1 ; WX 600 ; N aring ; B 97 -12 591 848 ; +C -1 ; WX 600 ; N atilde ; B 97 -12 622 741 ; +C -1 ; WX 600 ; N brokenbar ; B 235 -145 490 771 ; +C -1 ; WX 600 ; N cacute ; B 118 -12 646 783 ; +C -1 ; WX 600 ; N ccaron ; B 118 -12 668 783 ; +C -1 ; WX 600 ; N ccedilla ; B 118 -211 600 542 ; +C -1 ; WX 600 ; N ccircumflex ; B 118 -12 636 783 ; +C -1 ; WX 600 ; N cdotaccent ; B 118 -12 600 723 ; +C -1 ; WX 600 ; N commaaccent ; B 188 -191 353 -49 ; +C -1 ; WX 600 ; N copyright ; B 89 -18 655 741 ; +C -1 ; WX 600 ; N dcaron ; B 93 -12 754 771 ; +C -1 ; WX 600 ; N dcroat ; B 94 -12 701 771 ; +C -1 ; WX 600 ; N degree ; B 271 452 567 741 ; +C -1 ; WX 600 ; N divide ; B 101 0 619 602 ; +C -1 ; WX 600 ; N dotlessj ; B 44 -205 547 530 ; +C -1 ; WX 600 ; N eacute ; B 107 -12 631 783 ; +C -1 ; WX 600 ; N ebreve ; B 107 -12 640 771 ; +C -1 ; WX 600 ; N ecaron ; B 107 -12 653 783 ; +C -1 ; WX 600 ; N ecircumflex ; B 107 -12 621 783 ; +C -1 ; WX 600 ; N edieresis ; B 107 -12 625 723 ; +C -1 ; WX 600 ; N edotaccent ; B 107 -12 607 723 ; +C -1 ; WX 600 ; N egrave ; B 107 -12 607 783 ; +C -1 ; WX 600 ; N emacron ; B 107 -12 623 687 ; +C -1 ; WX 600 ; N eng ; B 34 -205 589 542 ; +C -1 ; WX 600 ; N eogonek ; B 107 -181 607 542 ; +C -1 ; WX 600 ; N eth ; B 99 -12 611 788 ; +C -1 ; WX 600 ; N gbreve ; B 21 -205 676 771 ; +C -1 ; WX 600 ; N gcircumflex ; B 21 -205 676 783 ; +C -1 ; WX 600 ; N gcommaaccent ; B 21 -205 676 848 ; +C -1 ; WX 600 ; N gdotaccent ; B 21 -205 676 723 ; +C -1 ; WX 600 ; N hbar ; B 34 0 589 771 ; +C -1 ; WX 600 ; N hcircumflex ; B 34 0 646 976 ; +C -1 ; WX 600 ; N iacute ; B 72 0 637 783 ; +C -1 ; WX 600 ; N ibreve ; B 72 0 628 771 ; +C -1 ; WX 600 ; N icircumflex ; B 72 0 615 783 ; +C -1 ; WX 600 ; N idieresis ; B 72 0 619 723 ; +C -1 ; WX 600 ; N igrave ; B 72 0 552 783 ; +C -1 ; WX 600 ; N ij ; B 28 -205 670 771 ; +C -1 ; WX 600 ; N imacron ; B 72 0 596 687 ; +C -1 ; WX 600 ; N iogonek ; B 72 -181 552 771 ; +C -1 ; WX 600 ; N itilde ; B 72 0 595 741 ; +C -1 ; WX 600 ; N jcircumflex ; B 44 -205 658 783 ; +C -1 ; WX 600 ; N kcommaaccent ; B 36 -191 640 771 ; +C -1 ; WX 600 ; N kgreenlandic ; B 36 0 640 530 ; +C -1 ; WX 600 ; N lacute ; B 72 0 675 976 ; +C -1 ; WX 600 ; N lcaron ; B 60 0 694 771 ; +C -1 ; WX 600 ; N lcommaaccent ; B 72 -191 552 771 ; +C -1 ; WX 600 ; N ldot ; B 60 0 684 771 ; +C -1 ; WX 600 ; N logicalnot ; B 101 96 619 337 ; +C -1 ; WX 600 ; N longs ; B 72 0 719 783 ; +C -1 ; WX 600 ; N mu ; B 54 -193 615 530 ; +C -1 ; WX 600 ; N multiply ; B 58 0 643 504 ; +C -1 ; WX 600 ; N nacute ; B 34 0 613 783 ; +C -1 ; WX 600 ; N napostrophe ; B 34 0 589 771 ; +C -1 ; WX 723 ; N nbspace ; B 0 0 0 0 ; +C -1 ; WX 600 ; N ncaron ; B 34 0 628 783 ; +C -1 ; WX 600 ; N ncommaaccent ; B 34 -191 589 542 ; +C -1 ; WX 600 ; N ntilde ; B 34 0 610 741 ; +C -1 ; WX 600 ; N oacute ; B 99 -12 614 783 ; +C -1 ; WX 600 ; N obreve ; B 99 -12 623 771 ; +C -1 ; WX 600 ; N ocircumflex ; B 99 -12 607 783 ; +C -1 ; WX 600 ; N odieresis ; B 99 -12 608 723 ; +C -1 ; WX 600 ; N ograve ; B 99 -12 607 783 ; +C -1 ; WX 600 ; N ohungarumlaut ; B 99 -12 698 783 ; +C -1 ; WX 600 ; N omacron ; B 99 -12 607 687 ; +C -1 ; WX 600 ; N onehalf ; B 32 -18 633 741 ; +C -1 ; WX 600 ; N onequarter ; B 38 -18 639 741 ; +C -1 ; WX 600 ; N onesuperior ; B 202 358 554 741 ; +C -1 ; WX 600 ; N otilde ; B 99 -12 611 741 ; +C -1 ; WX 600 ; N plusminus ; B 48 0 634 602 ; +C -1 ; WX 600 ; N racute ; B 36 0 642 783 ; +C -1 ; WX 600 ; N rcaron ; B 36 0 642 783 ; +C -1 ; WX 600 ; N rcommaaccent ; B 36 -191 642 542 ; +C -1 ; WX 600 ; N registered ; B 89 -18 655 741 ; +C -1 ; WX 600 ; N sacute ; B 108 -12 621 783 ; +C -1 ; WX 600 ; N scaron ; B 108 -12 643 783 ; +C -1 ; WX 600 ; N scedilla ; B 108 -211 578 542 ; +C -1 ; WX 600 ; N scircumflex ; B 108 -12 611 783 ; +C -1 ; WX 600 ; N scommaaccent ; B 108 -191 578 542 ; +C -1 ; WX 600 ; N sfthyphen ; B 125 265 595 337 ; +C -1 ; WX 600 ; N tbar ; B 141 -12 602 651 ; +C -1 ; WX 600 ; N tcaron ; B 148 -12 636 824 ; +C -1 ; WX 600 ; N tcedilla ; B 148 -211 602 651 ; +C -1 ; WX 600 ; N tcommaaccent ; B 148 -191 602 651 ; +C -1 ; WX 600 ; N thorn ; B -9 -193 612 771 ; +C -1 ; WX 600 ; N threequarters ; B 74 -18 675 741 ; +C -1 ; WX 600 ; N threesuperior ; B 201 349 603 741 ; +C -1 ; WX 600 ; N twosuperior ; B 196 355 598 741 ; +C -1 ; WX 600 ; N uacute ; B 120 -12 615 783 ; +C -1 ; WX 600 ; N ubreve ; B 120 -12 622 771 ; +C -1 ; WX 600 ; N ucircumflex ; B 120 -12 615 783 ; +C -1 ; WX 600 ; N udieresis ; B 120 -12 615 723 ; +C -1 ; WX 600 ; N ugrave ; B 120 -12 615 783 ; +C -1 ; WX 600 ; N uhungarumlaut ; B 120 -12 694 783 ; +C -1 ; WX 600 ; N umacron ; B 120 -12 615 687 ; +C -1 ; WX 600 ; N uni20AC ; B 55 -18 682 741 ; +C -1 ; WX 600 ; N uogonek ; B 120 -181 615 530 ; +C -1 ; WX 600 ; N uring ; B 120 -12 615 848 ; +C -1 ; WX 600 ; N utilde ; B 120 -12 615 741 ; +C -1 ; WX 600 ; N wcircumflex ; B 105 0 695 783 ; +C -1 ; WX 600 ; N yacute ; B 96 -193 679 783 ; +C -1 ; WX 600 ; N ycircumflex ; B 96 -193 679 783 ; +C -1 ; WX 600 ; N ydieresis ; B 96 -193 679 723 ; +C -1 ; WX 600 ; N zacute ; B 60 0 622 783 ; +C -1 ; WX 600 ; N zcaron ; B 60 0 633 783 ; +C -1 ; WX 600 ; N zdotaccent ; B 60 0 622 723 ; +EndCharMetrics +StartComposites 132 +CC Aacute 2 ; PCC A 0 0 ; PCC acute 48 157 ; +CC Abreve 2 ; PCC A 0 0 ; PCC breve 1 169 ; +CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 1 157 ; +CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 1 157 ; +CC Agrave 2 ; PCC A 0 0 ; PCC grave -48 157 ; +CC Amacron 2 ; PCC A 0 0 ; PCC macron -4 157 ; +CC Atilde 2 ; PCC A 0 0 ; PCC tilde 1 157 ; +CC Cacute 2 ; PCC C 0 0 ; PCC acute 97 157 ; +CC Ccaron 2 ; PCC C 0 0 ; PCC caron 49 157 ; +CC Ccircumflex 2 ; PCC C 0 0 ; PCC circumflex 49 157 ; +CC Cdotaccent 2 ; PCC C 0 0 ; PCC dotaccent 49 157 ; +CC Dcaron 2 ; PCC D 0 0 ; PCC caron -30 157 ; +CC Eacute 2 ; PCC E 0 0 ; PCC acute 43 157 ; +CC Ebreve 2 ; PCC E 0 0 ; PCC breve -4 169 ; +CC Ecaron 2 ; PCC E 0 0 ; PCC caron -12 157 ; +CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 6 157 ; +CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis -10 157 ; +CC Edotaccent 2 ; PCC E 0 0 ; PCC dotaccent 13 157 ; +CC Egrave 2 ; PCC E 0 0 ; PCC grave -47 157 ; +CC Emacron 2 ; PCC E 0 0 ; PCC macron 8 157 ; +CC Gbreve 2 ; PCC G 0 0 ; PCC breve 25 169 ; +CC Gcircumflex 2 ; PCC G 0 0 ; PCC circumflex 25 157 ; +CC Gdotaccent 2 ; PCC G 0 0 ; PCC dotaccent 25 157 ; +CC Hcircumflex 2 ; PCC H 0 0 ; PCC circumflex 0 157 ; +CC Iacute 2 ; PCC I 0 0 ; PCC acute 60 157 ; +CC Ibreve 2 ; PCC I 0 0 ; PCC breve 0 169 ; +CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 0 157 ; +CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 0 157 ; +CC Idotaccent 2 ; PCC I 0 0 ; PCC dotaccent 0 157 ; +CC Igrave 2 ; PCC I 0 0 ; PCC grave -60 157 ; +CC Imacron 2 ; PCC I 0 0 ; PCC macron 0 157 ; +CC Itilde 2 ; PCC I 0 0 ; PCC tilde 0 157 ; +CC Jcircumflex 2 ; PCC J 0 0 ; PCC circumflex 50 157 ; +CC Lacute 2 ; PCC L 0 0 ; PCC acute 7 157 ; +CC Ldot 2 ; PCC L 0 0 ; PCC dotaccent 214 -266 ; +CC Nacute 2 ; PCC N 0 0 ; PCC acute 49 157 ; +CC Ncaron 2 ; PCC N 0 0 ; PCC caron 0 157 ; +CC Ntilde 2 ; PCC N 0 0 ; PCC tilde -4 157 ; +CC Oacute 2 ; PCC O 0 0 ; PCC acute 48 157 ; +CC Obreve 2 ; PCC O 0 0 ; PCC breve 0 169 ; +CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 0 157 ; +CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 0 157 ; +CC Ograve 2 ; PCC O 0 0 ; PCC grave -48 157 ; +CC Ohungarumlaut 2 ; PCC O 0 0 ; PCC hungarumlaut 32 157 ; +CC Omacron 2 ; PCC O 0 0 ; PCC macron 0 157 ; +CC Otilde 2 ; PCC O 0 0 ; PCC tilde 0 157 ; +CC Racute 2 ; PCC R 0 0 ; PCC acute 28 157 ; +CC Rcaron 2 ; PCC R 0 0 ; PCC caron -27 157 ; +CC Sacute 2 ; PCC S 0 0 ; PCC acute 56 157 ; +CC Scaron 2 ; PCC S 0 0 ; PCC caron 8 157 ; +CC Scircumflex 2 ; PCC S 0 0 ; PCC circumflex 9 157 ; +CC Tcaron 2 ; PCC T 0 0 ; PCC caron 0 157 ; +CC Uacute 2 ; PCC U 0 0 ; PCC acute 66 157 ; +CC Ubreve 2 ; PCC U 0 0 ; PCC breve 18 169 ; +CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 18 157 ; +CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 18 157 ; +CC Ugrave 2 ; PCC U 0 0 ; PCC grave -30 157 ; +CC Uhungarumlaut 2 ; PCC U 0 0 ; PCC hungarumlaut 67 157 ; +CC Umacron 2 ; PCC U 0 0 ; PCC macron 17 157 ; +CC Uring 2 ; PCC U 0 0 ; PCC ring -4 145 ; +CC Utilde 2 ; PCC U 0 0 ; PCC tilde 2 157 ; +CC Wcircumflex 2 ; PCC W 0 0 ; PCC circumflex 9 157 ; +CC Yacute 2 ; PCC Y 0 0 ; PCC acute 69 157 ; +CC Ycircumflex 2 ; PCC Y 0 0 ; PCC circumflex 21 157 ; +CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 21 157 ; +CC Zacute 2 ; PCC Z 0 0 ; PCC acute 48 157 ; +CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 0 157 ; +CC Zdotaccent 2 ; PCC Z 0 0 ; PCC dotaccent 0 157 ; +CC aacute 2 ; PCC a 0 0 ; PCC acute 78 0 ; +CC abreve 2 ; PCC a 0 0 ; PCC breve 6 0 ; +CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 13 0 ; +CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 17 0 ; +CC agrave 2 ; PCC a 0 0 ; PCC grave -18 0 ; +CC amacron 2 ; PCC a 0 0 ; PCC macron 11 0 ; +CC aring 2 ; PCC a 0 0 ; PCC ring 30 0 ; +CC atilde 2 ; PCC a 0 0 ; PCC tilde 11 0 ; +CC cacute 2 ; PCC c 0 0 ; PCC acute 80 0 ; +CC ccaron 2 ; PCC c 0 0 ; PCC caron 32 0 ; +CC ccircumflex 2 ; PCC c 0 0 ; PCC circumflex 32 0 ; +CC cdotaccent 2 ; PCC c 0 0 ; PCC dotaccent 32 0 ; +CC eacute 2 ; PCC e 0 0 ; PCC acute 65 0 ; +CC ebreve 2 ; PCC e 0 0 ; PCC breve 17 0 ; +CC ecaron 2 ; PCC e 0 0 ; PCC caron 17 0 ; +CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 17 0 ; +CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 17 0 ; +CC edotaccent 2 ; PCC e 0 0 ; PCC dotaccent 17 0 ; +CC egrave 2 ; PCC e 0 0 ; PCC grave -31 0 ; +CC emacron 2 ; PCC e 0 0 ; PCC macron 17 0 ; +CC gbreve 2 ; PCC g 0 0 ; PCC breve -26 0 ; +CC gcircumflex 2 ; PCC g 0 0 ; PCC circumflex -22 0 ; +CC gdotaccent 2 ; PCC g 0 0 ; PCC dotaccent -26 0 ; +CC hcircumflex 2 ; PCC h 0 0 ; PCC circumflex 3 193 ; +CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute 71 0 ; +CC ibreve 2 ; PCC dotlessi 0 0 ; PCC breve 5 0 ; +CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex 11 0 ; +CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis 11 0 ; +CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -49 0 ; +CC imacron 2 ; PCC dotlessi 0 0 ; PCC macron -10 0 ; +CC itilde 2 ; PCC dotlessi 0 0 ; PCC tilde -16 0 ; +CC lacute 2 ; PCC l 0 0 ; PCC acute 71 193 ; +CC nacute 2 ; PCC n 0 0 ; PCC acute 47 0 ; +CC ncaron 2 ; PCC n 0 0 ; PCC caron -8 0 ; +CC ntilde 2 ; PCC n 0 0 ; PCC tilde -1 0 ; +CC oacute 2 ; PCC o 0 0 ; PCC acute 48 0 ; +CC obreve 2 ; PCC o 0 0 ; PCC breve 0 0 ; +CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 0 0 ; +CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 0 0 ; +CC ograve 2 ; PCC o 0 0 ; PCC grave -48 0 ; +CC ohungarumlaut 2 ; PCC o 0 0 ; PCC hungarumlaut 38 0 ; +CC omacron 2 ; PCC o 0 0 ; PCC macron 0 0 ; +CC otilde 2 ; PCC o 0 0 ; PCC tilde 0 0 ; +CC racute 2 ; PCC r 0 0 ; PCC acute 19 0 ; +CC rcaron 2 ; PCC r 0 0 ; PCC caron -12 0 ; +CC sacute 2 ; PCC s 0 0 ; PCC acute 55 0 ; +CC scaron 2 ; PCC s 0 0 ; PCC caron 7 0 ; +CC scircumflex 2 ; PCC s 0 0 ; PCC circumflex 7 0 ; +CC uacute 2 ; PCC u 0 0 ; PCC acute 49 0 ; +CC ubreve 2 ; PCC u 0 0 ; PCC breve -1 0 ; +CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 2 0 ; +CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 2 0 ; +CC ugrave 2 ; PCC u 0 0 ; PCC grave -47 0 ; +CC uhungarumlaut 2 ; PCC u 0 0 ; PCC hungarumlaut 34 0 ; +CC umacron 2 ; PCC u 0 0 ; PCC macron -1 0 ; +CC uring 2 ; PCC u 0 0 ; PCC ring -1 0 ; +CC utilde 2 ; PCC u 0 0 ; PCC tilde -1 0 ; +CC wcircumflex 2 ; PCC w 0 0 ; PCC circumflex 10 0 ; +CC yacute 2 ; PCC y 0 0 ; PCC acute 67 0 ; +CC ycircumflex 2 ; PCC y 0 0 ; PCC circumflex 20 0 ; +CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 20 0 ; +CC zacute 2 ; PCC z 0 0 ; PCC acute 45 0 ; +CC zcaron 2 ; PCC z 0 0 ; PCC caron -3 0 ; +CC zdotaccent 2 ; PCC z 0 0 ; PCC dotaccent -3 0 ; +EndComposites +EndFontMetrics Index: xc/fonts/scaled/Type1/lcdxmo.pfa diff -u /dev/null xc/fonts/scaled/Type1/lcdxmo.pfa:1.1 --- /dev/null Wed Mar 8 16:39:15 2000 +++ xc/fonts/scaled/Type1/lcdxmo.pfa Wed Mar 8 16:39:16 2000 @@ -0,0 +1,1014 @@ +%!PS-AdobeFont-1.1: LuciduxMono-Oblique 000.200 +%%CreationDate: 2000 Mar 04 11:30:20 + +% Copyright (C) 2000 Bigelow & Holmes Inc. and Y&Y, Inc. +% Patents pending. All Rights Reserved. +% Lucidux is a trademark of Bigelow & Holmes Inc. + +% Permission is hereby granted, free of charge, to any person obtaining a +% copy of these Fonts and associated documentation files (the "Font Software"), +% to deal in the Font Software, including without limitation the rights to +% use, copy, merge, publish, distribute, sublicense, and/or sell copies of +% the Font Software, and to permit persons to whom the Font Software is +% furnished to do so, subject to the following conditions: + +% The above copyright, trademark, patent notices and this permission notice +% shall be included in all copies of one or more of the Software. + +% The Font Software may not be modified, alterered, or added to, and in +% particular the designs of glyphs or characters in the Fonts may not be +% modified nor may additional glyphs or characters be added to the Fonts, +% except that composite characters composed of two or more characters in the +% Fonts may be created using the seac (Standard Encoding Accented Character) +% Type 1 operator. + +% THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +% EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +% MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF +% COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BIGELOW & +% HOLMES INC. OR Y&Y, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR +% CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +% ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +% OTHER DEALINGS IN THE FONT SOFTWARE. + +% Except as contained in this notice, the names of Bigelow & Holmes Inc. +% and Y&Y, Inc. shall not be used in advertising or otherwise to promote +% the sale, use or other dealings in this Font Software without prior +% written authorization from the Bigelow & Holmes Inc. and Y&Y, Inc. + +% For further information, contact: +% mailto:support@yandy.com or mailto:design@bigelowandholmes.com +% For other Bigelow & Holmes fonts see http://www.YandY.com + +12 dict begin +/FontInfo 9 dict dup begin + /version (000.200) readonly def + /Notice (Copyright (C) 2000 Bigelow & Holmes Inc. and Y&Y, Inc. All rights reserved.) readonly def + /FullName (Lucidux Mono Oblique) readonly def + /FamilyName (LuciduxMono) readonly def + /Weight (Normal) readonly def + /ItalicAngle -11.3 def + /isFixedPitch true def + /UnderlinePosition -100 def + /UnderlineThickness 50 def +end readonly def +/FontName /LuciduxMono-Oblique def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0.0002 0.001 0 0] readonly def +/Encoding StandardEncoding def +/FontBBox{-14 -211 758 993}readonly def +/UniqueID 5096733 def +currentdict end +currentfile eexec +8053514D28EC28DA1630165FAB262882D3FD7667933E8516EE9710995B33AD6AFA66AE56E3B4F8 +1A010BA2D16746155E0B46B8233AF9FC6FB5A1DE6E6D7277AEC5CE81679028F3B440619FB93E88 +614EBEE63F9A83374DA4CF45FCBBACEBE22717D34438C9B2E3DC7580F497AC697EA20AC096930F +E90934EA8FFE999902BA55F2149DEADDCBC4CF03F530F526450856BF8F3CE1C247AA6810D725B6 +E4CB0C6B7DC3B7B5FBE22909A1ED01A6BCEFAE9A709DB1D61BF8A223420C27BC28535F3C5C58CE +BD7239771F455E727EB9C9025F7B0B98D9C49F8A33E8C9A67A30CBC40719B9902A42978F54386A +B019C6EED778074F809506075C7CF394AFF792A52C36CC8FCE79BAABF945F6AB3AE924FBF89F12 +D0D56822E09D7226051E5235D975B5A7E02610477A9B9148DA4E93861FF2B0E800C389D37B12B3 +373512C35EA560080E98E5D687A9803A25F0CAB8C0DAC1210B1B5AF4CD5A13917D67974DC4DD17 +AED06EA357D1697AAB3EAD49D74CC208720B98B4964096DAC9BAA75A7DEE85F75AB40E94CA6318 +F5C28B6ADC7E425A7AE7F83247FC642ACE11D90755CC520214275BB0C1216275652FCED2947335 +DB817F9EEF608DF98C0DD39A4E3BB669650027B60F42BD3F40AC7B8DAC231DDD22751A1CB79910 +42A1DB229FD863444D751494935C287A2D29F3BC2F8F3F2C8DEA7F2588C3F7FA4188CCDD3A5885 +B1EEF5903D322EA42D278EBC7D5B545567398B08C4E3F35D52B49E58993277B5D76A7EB6E2DC2E +7F1ABED2A4269304F58F01A7BCC8101C965EC6C9DF37B4E4C4F9A365E8E614F0E3FB98D08A9D4A +2E355825897E73855CF7072A400523DBFF380CEC2BFDD834C3773A5960969EF60F68DE36B4F266 +3674724FB4F9F865A2D90A4E8C20D82F7CA6D92ECB456BCF574393801CC7FD858F420CBCF02605 +14054C5A847C8B9B240BC680A6EDC5831EA5C0016C9E8DD96B4F77ED2405FB08230DAD941E679D +8DFFEA703E759DF5AB2AA1D1B1F5932AD02BA224C3103EC6D5CB5251C8300F08D5B59FCC8E1E3D +C21324CC0B469464F1A2555968DE12E525C9200E8901B4D8815B0C7E83BE881FD1D01F52628010 +1F865C381BC49E83AE9F9C076A782AE3B430F7A787247BE3C4C09979A691C0FD8284F8FDBB7E25 +361C8434A90B0B83FED4BDD14D03B544124AFEED60C03F36751EB3BAF77C5C9A5231CB8B84BDE5 +52F6A6EE2D9D2C6D5CAC71DBF511145963BC351046D5F93A89DD1ECBEB31F4118B8595D7B8EB04 +5AFACFDF95AAE6DF77E8F216411C9DB81489FB525D58E9EBBB170A72BDBDE4E89B2BEF2A01B9CC +4C8BDDDAD3CBBD532F10A2DFE2AD95C50952CC56863DC273981F6640DF48864378294BDB1180C8 +A81E61A5A24AD06610BD41A0CDF0D992766530C104E9C7DC9157A1634A321F8EB8A5C503681A2D +533D5FB5D2BEDA1D877556F0B8EBE9E1AC4BE4216DD2DCD50D065194C4875EF4BC32201B2D0BAE +A125674A4578BFB777BBE77ABF2DFA0646B0460B0301411825269AA7E5B9D8DBC53C1A198D11B5 +EDFCC9057C15E49271FCAE5E8ECA461FFC9338F1F7821AD7F917CF6F2602618D60488F16FB1337 +CD4B4FA68A44A83474154B6E3F1A8B21FFAA7ABCC791D44173922817D96E3A6794C771A11A3339 +3C3CD36B95CFB83AD3FE91F8D866500189D8793D0EB1E16C3C429D82AAF9852A2F2A4615420951 +FFBA75D4F697317243D1BA7FDE30B3C23848C19B662BEDD74395CFF5D547630AEBC2B66D8DA1E0 +4957C8287E7ED6C7F03EA044B6148407474279123A0C1D1034F71D11E3B7DC0F7854C92954F47A +032A4E12FA5CFDF7AB65CFE9B860BBDFD02C23473B5139F286EF994986AD8460A49518402D4F67 +AF1FF11086245C66F54FB4988C7FD5B1528D90AB32507B40097F2689D403C01F88B13888CB6220 +2C17BE3485AC02CFF0FBFF7C617AF28B8A8BD386D86025BE24B85DFA78419CA543E8AE02368A2B +A6C8489E746568C1A32D57F976D7F7D4834F0A4A5CAD081E575733DE45597DE08FFBC58E01E9DD +22FF15234F97533877DFB239F3A86D17A409A8A400164399081954B382E9392D86B5A736EFB0D3 +5F12AD42D92B429CC4626123FEC2EB90741BF594D1404FF61CA575114E6813FDC57131C55DC79C +1AC26DBBFBB31F989C3FE191348B6E870783D4A9C921E2AA679BF0F2864FE4F20695D530D5D7D2 +05A2C7AB4FA61F2771FB323BBA5E078AEE1D4D0F89C7BA398FF8B78D1CBB761D1BC34C6F3AB24D +225ADD53FEE35C28F478E1854DF86EED8569B59CBE101C99151B3432B98E064CF32F7C17FCD959 +A869AC0EDAF3163C485676F336CBA2038662E6BB059146B3D65313F5F2C97C603BC55C45C5F3D5 +43175DCB763DE3171CB3D3CC2CBE644522DFE4218EF514FC0CE4DA82DE81DD708DF27DD458A059 +39E2432966FAEE4E06AB951B4632A850AA371D072D4B322FD83F60F71CD755839286EE466B2D3B +7F283E4C63D60618CB05EC5E507F3CFDE4A5E1A40A96BCCD86FEEDF8F07873A0DB568C9657C114 +A9EB9CD8B77570927FE05B4660D9ED21923C491C5D2E96B20CF54002C28AE731E5A541CB36DF7D +5D3E3EB199080FA050221D8C10A4D622CFE3A06E5FC50C5CC514010E539E02350599CD4B57183A +F96904751EB6D5D22D136B0E0DA430D988DFE488473349DEB28B24E7CE336E328572E5E83E753F +EE02F5FE984EE7A844C13F5BDF853D572295ED0476ED2518FBAD35E21F0179719B55FEA04D945F +E9388E92B795934D1795F1820C355156B33F3B398769B7B18FC0313B07335C0F64596316FE5AEB +986CBBE2F260EA7E2FE0E47FA13A02F6A25115BBE457E35C71028AA15522BDE772B64829DC4A8A +B81FE24A43042FAA835D34534CF617D059BACAC270441E1A4146879C8B12D2ABBECCED72FAD0D3 +84AE88555B1DC3577335743DF2AEA7EDF09F2D6F66E05B424603875F1A493DEC028EECDCEE6B24 +7838C15548F13BC737B6563C944753931FE3A7680B32EE7A540DAEEC7B51BB1E07A180F283E3E4 +2D078B322C9B88820299024DF8333F05A6DEA7B2DADAEFAD66DB771ADF8BC4EF9466DDBB54400E +BBDFB5F47D9B466F70C009F3830A387AFE73B5CE29996676E9D1CD90BBAF18C1EE36F7D8416ECD +9AC939B6D3263327EDB16D650EC58B1C27C4A766D31476FB3A04B8045A3412D9317E200CCDA290 +B1E0DF633638F2E5A59599C4DA72EF191AE393E71FA18E84B2D2FE3035BF72AF081958185A86B2 +4B8A8D5042613967300E3F7A324627B253F791486502541B7E36698601F2FE5B40BD17CAF0B15A +A4D46F843AEEDF5B22EC2895117F963B41E8D7FB4799FFF331AB542403F4A7A3D3D36B2686466E +5D0CD391C3DF2878D2E12B01CA3A8385E3C4126AAED787E18F8DA1E16DAC3E6A10008800208298 +03DACF90801D8AC99C83901C3883663C4E6AB15C5559AD471048C7955B36A30C58F619696D3255 +202B89934FD3A4B4B9BEE51748EEE8C3904B023006149C987255C4DA85A5CC502789B1F63EF738 +15F57E404251A2C25F6811256825FACA0F1D660134E64741FC66E50DD09BAA559F2D2A15F40E3A +C4AC36D4D9A8F9957C3C0AB6FCF03F9273A98D13D0A9E861BE46AF304A8D2D835BA79A1F73DF49 +29B078BC4EBF5AD7BD689572649DCAC8B5FF31CEE869D32671B56FCA0663F1C6E444A06D71FE5B +CC21DFF5A4C1D1FC76F372C9D310C41CB728D3E2EF4C7B277238E0FBFED150EEBDC2CC0E269537 +89F92F15AE9C19B29AF6EC78934A22B287070C914CC5F87CB18FF65158FBB17790EAF7B40B45EF +C788D6796FCC0B65BF5726B4E8A9791D04D44CBF58ED15098848F82733B9931E0E693C5597A5A4 +3FEC01591C66DE15F6DD4AFF56924F4785B2FB9B01716B9C3A985BFA9FE93061A46EDD6495C79F +BCCBA26A8F5E03D99ADF7B9FDA61BFFFB002D629541D29FE2A9F66110B23BA0BDBFD85861DFC1E +B18E84899FC474A48C82A994BF7116948FEDAAC998A21567D200419B584CCFABCA8667E464C292 +806BCFF2D52A86EDF40BB92E2AB4B89BEE7ADE1FC87EB897C672756DF03F371163C6DED35D970C +C761C9152A95B649D1099C18F52673A84F4CA8A8E517719EDE5EB3FEDCDCB15B0FA72FA7A271EB +7A23B54DF5650E4E7A354E7177A28F4D241A73D31EAA8AEF1D062CFD338119D57D14E581F309B4 +F77A6D8F10A45FDA8176CE249F6312ADEA4D94ADD352A63CB9430A6E26704888F97401EAE8BEAA +0EB730CF66639EB5616B5182917E61CDB10B1FD6D72860F931500858E8E8CFC619A4A7F419F501 +9BF968EE3121032832DD7C1AECD409EA2F79AB184482267BB071859191E8E8D9855F12A1D11EE3 +12E98682B4D2DBB559654D54AE845F4B0FD2E3BDE9AAB830DB03AD3840E8D3E7146C9A0F526AF9 +DC451C50CD45471CFF9027C8EFDD16D6708F9E900CA5EE349F1472F58E253DC0F55E8CC1F82B6F +C9ED3FCF46122DCD17F6EF55ECFAA98642A5D0541AC711EC68B79E9A5ADF7654CB95E697B3D318 +FF47749EC71D717F8C5B37AF0CB20D02557AA087BA91274F7BED5C2C455CB1CBDB97BAECC86845 +6DCADC1A91899DD0F8C2F9573999FB41B0CC7F143011F9AB3EB5F11138E802F15680E57F587942 +7115CED16D5EE8DE6DCE4315AC0532CC6630F7A6BB8FBB6CBBBF5ACBBFD1E4B771B49E6841562B +C1E2390645266166FA3FCB49517719DA847F522595B483992BB72F42E4037974063EFBB29EA809 +51E4920AA68D1328D9202B61927CDED7AFF4B75075FB79FE116F5BF04A93FA6B7C57D07B94C2F3 +CBB8FBFB7A9A09E303446D3A1233B0606DB6BC9DD4FFDE26E5F3E51AAB741191E9A523F9B0C2A7 +69D94B8CB57D27074FACA9AA966791935916AE4624F9C566BE69FA75CD39AD747A1FE9434DD9D5 +3B930E62B03476B3B924F0F32CCAA09A0E35FE117FB85C4F0D7A33A9F31B1198C6DDDAF5FF4E1A +981EFEB3F8F540BDF6355BE6F02BF8DCCD6A1FE75CC55A9706AC95AE36C2D6BA7DA125515EDCED +772AAEB6023ABAAD6B888DCB40EBC248CA07B0A9AC78D4130473841C1218921FD978D5441401B7 +C480C41EEF4EE73D13CFA1BEC74045BD3DB5E3052E2A666A3AECC99FEC69C3B04437B77DC97070 +F27ACA2C50067C4D5708B4B46C7CC88679D05460358BF5DDE6974B987097F41770545F9326A058 +C0682D0D6B4028930282F102E66F4AEA9F48E9E688078A6C2D11030F87F8DD24EDFF022ED030DC +7D7E9211B019B338AC46D638819DC3D18B7E9208267A8D70C1295036D118981FB84DCA82854C55 +7194BC03CF89CA2C370086A318BEBC1AE59AB935E69009E5374D2B40809F04BE53C7CEEF812226 +616B19C51800E7C4EA29B84025277008B81EFA5F0457216530AA86C1A034689AC6E03483C3FE75 +BD95BE5EBDCBD4B90296DE10C6D49D0A425061F35412E6FCF4F9AC6ABA6036979656F1A7EC1728 +AAB38C9F03AE356007662C38547E8426A9EE18E8662ED8113EC198DCDF1B9345CA4627D95E8CE3 +2B8C297DE52B1B5F0771332BF01173F1B2C2C89F64B730E65A9C6898DF193DE99AB05F386042B1 +D281079C1EF2804220BDB22F3B5350232578A335D24E407F5975D6D6073CE887DDE805528C272C +D32B1001AFD1CF6774C7ED3CDBD608026F69E150B454613BA85A50BA08FBAD793E9D328A9D94CD +1C6E23D781372BDBAAB52E18998330557403B46684FE6D6E64E1B98FBB721C2095CA9964DBB26C +7B0F6A30A0392C57BB6FB7173EB90611800F250F73C98D881306BAA47FBAC64B9ACADE8F0C4D88 +85DC39910B4A7BAE47AE01A386A92E38143F26675EB99BE87FE05AFBA2F265186D73A09FAA905C +61824A536E2CED6805185113ACDC8BE5129A3B43A7A53775EEB62758D79C3B2D510D17407DC2F6 +8ED7D5DCB912EA2C1B0D9C8DE4CB0063D88FD8804393594DD2B4E77951C1D22AE431B2541679DC +1431AAA9B44190D1CB81305521E7CB2E9AD2222E5BEE9FD36315A4CEBCCB7E3B9B039A7FAA38F9 +FB436D3937129F394C843B330F1AC5B7F3236B37D865503485DEEC18D48FEB29E968BC6289DF99 +C8E610001F428405BD44CD8E7EFBA8F5516D890D942F8A6C4128F651732C36C567A6944A4CCD84 +E65888C4B13A181DCB5104577F62572F8F5AFBCFD94D68B6018F49A7BA12433CACE72E04427C56 +0BB2B41F03066CFE9C2CA576C117F8DA1FCD9013BBD6AF5C3D7F53DB87E4EB4B095DFB6A3CE701 +A4DBDD23B5CA0670F213D517B1A1691FCBC45E2B0030D597C2A70164397AD5FC3E6ABE0BFE1C20 +BBD8D6B0A94470D194CC7574D85A774A55723A2562809ACBC75C39B19AE88ACCFE987D4FD2ED46 +1A38185ECC06142161A71350721DFB97FC68A7D86767E53322F22B49808CA1EAF37DA71D6BC67A +3FFB59638E12C537F1E299AE0B3690A305B86295297F169DD21CEF8B90BF859752121E7A8E070C +3F2C949ED12FDFDEE7985B10FBFDA32CD221B9C60D83EBFF2A8465558393286AB0B78272FF1C25 +C12B5ECF74C2DF2EA45905BCE63874825B8818B820442E487E7059FC3044FAE071037330B0850D +A7383A1A2B36634FEF2BA638A5DF2A3ECDD5E02FA629A09B63D9FA4F4A1377D899A0A8DA4DCD61 +02991699BB010C8EFAC8675FCB1C611BD4AB58A6DF3E3572A312B4F397B1624BA9D3BE1B1A6174 +D85FC01A0BF68DC08D397B5BE15DC121DFEB05BEB1FD77879A6332AB67CAC2F9ADC34D540E0AFA +BCEDD99C932F6D6264754E3F9390B2CFC44A435DD7496F533856BF5FBB162F8FC1C4033BDA7CBE +01FFCC12167E6C23C83CB5C469BE420E4643AFBD6B80750DE217FD95359F0492001F1F4E300B39 +F6309A843A64733D009D58A30C28DF556A4E83B1A80CE51B000DE828E73E8C2CB1978EEC836F85 +D15CD668AFEDB63B7F976EB21C450878C2B0F5752A21395625DA45685C90661CF0591F78F81A41 +D93649B02AE2C35D8960EB5DD341E61C26BF0D4941F55EEDD62D960FF8E39E0D4B0A82226E05DC +7DA1F67E2E3BFC7BBB9AECFEA6C9EAFF66DC9BC51A90DD064D84E8600FFA652E145F4BDA443F46 +54E2E74DABFA11ABD9DF9159D34A75B753FC54A684405B024BB72F4BC289E96FA5CC084FE46308 +9602095AE83794F2C53AA7E2BA27ECF54F4D0A68BD61FDD73080F3D78DF2890B29FB02F8891C46 +10F480832E464C1A0596D33DCC7794BB9C45798613B74D7C6431ACD6748BDEE459567AB18C29AC +37AC51A54EF1892782CB1A5829F2AFB6DC2D7A5C51976101DC872498C500F8C0E14FB715078337 +2EF868484D30F382A781BFDB752BA52E50572B8D4D5090AA8AD5AD28E787903CFE69E3E5CD1BD3 +20AB26E62879A61F3ECCD613C3A74E9387E393E9A26F5086A4A776C7944B6A75B87165582008CB +A0705986C80AF0F9ED33E47953EA01911737AF9E990C9A0A01C806EA406D221FF3D1F34F752BFA +F70698AE89A3EB2A03D6FA052108C50D61CAF9F3302E7BF9D9851B741D607AD57B37384EBBD107 +8CC100479B5FC25B6B59E7CEB4AD24924F17C1AA137B2905C52CE8C845103505949A41729E12FE +D21C4DCC804031D66D110F12857A0B2E12DD469589D4E5D6529589C39BBC98510A119181D0BF12 +38523A30F82CAE8EF1DF8FA6B4DF516445D38F5D791F3B059D26F9D4E4415621355405115925B1 +A053EA71960A0CF67294F7B6B14158EF7E92C94F6F16525F3F72553E480DABDF50E1AF658D625D +FAA26B6B978D63352C07523E55E455910631BA24B90B5492BC85BF9AB58455C3B6588AFB2ED462 +BF37FF668EE3D5D510E50B91A0490E3F560D264E8829788CC60E931222F5EA69A31B06C940FDC7 +1B6D174F29E46E1DEB1CB2D552A85B257CCCB0459B6D0036B63F678F28A0A9ACC9139182A273DF +500732D9D99655B738111369FBAD3E8C335FDF219B57EA71CEC8FCA591B0F2AFCB93907959D6C0 +25D3CEDD27CEE68B3770A60958C23CEDD4FDAF4219984150080307075A4468EFB2D5F5BFBE06AB +A153EBE1479752D000FE8B4A881AF6883401722642B119C81E9090F529BAF06955DD962C1EC55F +5EF97E9E56F856D4E2AA23968B6FBFDB24446F620A12D6FD0C781B0E012C3B6A77A143A70B2992 +D76D9CC00C5A5BB497EF918CB05C4CCF74B1017EF7D427D433E29FED7CB9A3107C070BFADD00BD +0A6FFD726C6AA4A8367D5BDF291D63113E7E97EBDD033DC188C5E290CC471D1FFA45D5EA804F74 +17A64486058C2B4B2AB2A36401E863AB57B384B56255DE7733CFDC2047701143DF58ACB57315B1 +FD950DC304A2742AB77B316A8079627E8E546C2AA2B02FF08A34D7D41DFFD16954256B11BC212D +3340FA0C139A3A9B956A7D5B4777678498F82C68D614DB0D646D0379BD4D388EE964FAFDCBCA1F +7B67ED112702415071D74072C2A0478C8B3D0E638649A77DF51E829D50766D351B54AFCC1C7B0A +BC821A6A9C653707E947C3962CAE6447B304E5F48BB64A8FBA82980E8A139085A3E052FDAC85F9 +E357D891DCE24A088F4B37D412C51D0DFDEA2313F692EE1664BA98C3402D54D97692710495808C +AD39E1F313F9B969C11049F26198245139FB5450836E260D29D5560C482707F66E174CDE82912F +6E23D11602B139A9399F536CE8DE7E9C4C129CC3F12FA78A3BBA89F110B5B8CC9541D042F04E6D +9040F85FC50CD3825862B57E58F76C345BD61AB4FEA12D6DDC94CCDA84768CECA03D2D7A79427F +8A790013DDFE0D0B8609A4DFB1EFEDB52A11349205ECE5D9A57E5A827AD23F2E34ED51CF82DA1F +B572AC728F1D3D0FF9D77EE56E852410B0C136273C1DB7A6EFC634C6AB5B9F7A121FC07EED4687 +DD41C3920AD3C9ABE18B6518F2EABC3F500429F212D0CC35B668D0C5E8811FA0D6AF895545841F +AB98A7E61703542A03473EB82FF6C597C91F9A9C6CD5BC79371EEE6C1B8638B005980978025991 +0C7AB4A5A35441EEE1E3FC2EA7A1C910AD333C8E2DB1D608AA1E1F49EE2C31591428808FC9A596 +B273DD46CB30A72FE39AE281E39E07E198B445818C785A52197677FBD7CAACA90E212A2C2DB91E +D2E7CA564BFAE2B049093F4146EB2F16B924BFD96DF0625A680B5444EE4DC2684D1FB7A473803F +287255CC852157D1A9A2757CA41F03DD12DB7855B560E8B00E3349397557E23669FBA9A2690015 +E4800E2283B4862E0910982D965FC6E0863582A4306A6DEB6FAA1C06D66D0026D299FF3AC0BF71 +B01F770043AB69542BF3D59D0356C84CF75C478EB9E4CD3F6B2B4824A6A54A25FE418775394705 +D8B49FB7308C1C629AF9B6FC0D5E732F456CA8B49BD1D5A281E510B36FFCCAF76599F409FCD467 +710160B2AA3F58A385092F3B7B4D5BC2A0660474647FF610B2A7AFF403EC6EBF9EE3DE8412BFCC +42EDC7D7A777EE955B76185F1A91E51C6367005C2A475E131FE02814C3B18E4EBC1147CFD34918 +FE348ECCEE27407E1CBFC5CBF19B797B389DEAC6904B3D95391556F0BAF3078FEA0B2348539CDD +4631B70DED3D9CA416381673DAFBAA1125F45D3B0F4F4B83602E102BDB8E6C3B7A4CE95013FF6C +2B2CA9471C1E0B166C7F8AC39FA8D20EB1145F10D659CCC51B14227D05D67E54295E01416981FB +14353725D23919E32DA0B892162AD4B2612614C00DAA17641F5E85FAC7D8DA2B9000536B2A54D5 +3289BDB496E5310A5C4745D1E86356F2EEBA4064206B8C833D4CF9E65AAB7E96F5EDC88C6AF07A +089C26537873A95980D3229D47D2E6D4C20E154BCF8580CCAEEEDF339819BEAF8119DCC6726349 +B626D3E14878610E48A55D13421C1852CFB7EA89E618264172A6D7C15B98102890080417420623 +514CE51A089F53031FFF5C092C1580EC8AAA5B46B74DA3643850715C26925C71DD428E0189AEDC +18D490832AC378509C88F7E37032D48A91217A7782FFA7D47CDEBDB17030D6BB622256549DE396 +6E1BB67A267B84BC632C24E8EBA4F1EB231627C6114F866ABB0353352D65432BE8FD8D9D8F194D +11BCAFF610C19F195AB6DC9B92C607C1AA3D3F19267B26398901A710F4EA6AF5FB106B20564F84 +8A56EE37EB7FAD5976561F40DCE48C085378F2C65135E8A7ACD0437E7BB8182B5605EC380E53EA +0520A82374B03FB32F76CE22A2CDF26FC1882FCF4E62A7DACE06DC202849F9328E03E1365D8016 +5755F9F85A2E3970D5A95794D5402DB0406542C7D4231E7FCDDFEB1F644A28E575756360F78FD2 +CADD28D74E0BA2AA67EF19E2045DDF33E36A8B6186AF73BCFF785DDD53622B55D9A4531606EF81 +EC647068D0DA33C2EBEAD52B5DCD512432248950C7386FE13C465FA32133E48C880865BD12195B +68F3AE787BB3D45C4ED1203AA924934BE5F75ED5F376240F450BA33E1B5FB5EAA7E4EE2766FE4F +7894B009CBD4A6DEFC270F3A19E3CC4E40CA8E62C3E5837AA3B3FABA5C0762B4D90A8B22BCF369 +BD2C65EBBB3696034A3C4513680FAE205E536B3968D21A2F5E7EE7D7113E68A01B394CF8D4DC02 +B192BDE24FD0A05D8E3947A6E152694AF894CBBAD767DA2A5794221F66447F5DAB35E0183FA923 +EC841111FC79C6CBE0FA55B14A8608E1FDFD1D03730950858B95E94CCE1CB6282E4B93C4C8EFDE +173EBCC1244031107705048AE6AE5F2003DEA625E455166AF0745F793E5CBF5D52401A64DE6C21 +46024FBDECB5C22ECB55F015CB8804194CCE90BA4F0E4F680089B1636DCF3988B06A94108FB412 +9228F5408178E977B6218514EB9B10351A6747DD3B56E6BDCCBB01137CA496501559063B600221 +8ED7B5F30255C70A979D9BDDE5DBC7FA5C3D34D3F07623BF3D41D90BFBEA0175C408CE0BA9E38F +5B627FD059B2F9EE42824F8D80467C5DF5FAD47A40C672179ABA60D8F1F24CE2E470E9384213DC +CB871CED2DF52AD29846D9A1AAFAF7DB8ED00AA2C2AD16E8E14CDB1C90A903157566D37848D7CB +DB1D65346C2CE031A05A44F0A1A8E0DA3BFAE84F0C25E94A2BD295679672F30B8F3B4CA7EF5A1B +575A4D0E5B9F367CFCA1BF63CD466A4B341CD36D6F66499E99B9126318C252AF9CA5D07B51C1AC +F2D96DED300C33CF80C560A27677BF4D7A98A1C23A7CB492E6AEEC8E2EE461CF29F5C8F67DE121 +3476298FB0C423E531EA44C051C6AA497132A27C6A93B454A6A7CC58A34A7CC6D092CF6A36DA71 +607AA1A35574BEC68226F4F874FD21CC1CA1EEE48068BE21722CF2B305A180B47B1CBD85BF247A +0D05A9595A3DF220124C27BFAFFA475314C7CBF74BCADB83D51578D427AC0658858E8D1A585434 +FBFBDDDDD574CC849D6D253B3838E4319B55BC054BF7B655ED0D810B9B5D06443E5F066F5A6F65 +FA52FB3D6438963355AB152E5A90A53A72F9FE5F253E2BF62CF6255FE63917AC71E1DF20F7991C +D139E2CC0C22DCCE479770F1890DE136C0B53662DE25E21F941CBE75FC576DD2585FE7251BBA12 +CF7C669329735E72B1E19A63EB773259421FE3F074ED09DC01CEC14F59DBD0EF6265AA87922DE5 +814DC5E6FBD0F5336D079760335074F5E57E3E3539505B7C73940519A8DB5FD688B36F41E8F47D +EEC3B1B2D6C4556A6C07F12A6140FEAF0CC99973F0CBA84175FA6FB176FB1F86E6D19F0A7D0BEB +B2E261382CA03A7F1157D96D53F39BE1632EFEDAA2B19416EF901E1D8A2343EE33FF2FB80219BA +E8C8898CEC611232A740088B98787EB125CBBCF88F4B7166A197CAB8E9199DE994B8B154061C9F +81B9976C9A9AFCF095685EC2167E1DAA89DBF2319031445CB81B496E14BDF63BD7DDDA8298B8D5 +8BF281B3AA4D2FAEF80D59C7B5A159A78A0A5D1712F7D081322FC08B8295C2C490DE194F08196E +4B4A0A20B6ACB8B876D95DE6AC48DF0DD0BDC63049D1096E168811AC9891DA747BC5DAE662114D +E337FB59EFC9AB26F9E8F6F453FD61093E6A06CD41485448DC5E1EB682457ECDF9EEAA485E8666 +581FFCF2426F0C84BC1811AB9D50D7354EA3F549A3E4220E93C6BDE178FA7D1ACD20A5A2E2E665 +C16E2AED4C538A09BC6E1CD086A1B8C8B38119FB1C70D8D75D0078CBF5303529C85B1E15E13068 +621E477E89E6FD61F3B510D8209CBB011F6197A579C78CE0483376DA34569F00B8563E070CC264 +65675CC92AE8E2C7F4F457193DEB363E5C803A14BD933A0B5412C8B05B2AEB46F187AB3EEA762B +80D73691DD407BEC7D03EFDA53EBDC806854C1E2DDD79C799354B6B5E0C33CD8709A51568215D8 +BCD94BEBB4F967F5AE4B23C3F79DC6212DD2CEE275DDF832970F528C1569A674BD2988263543B6 +AA41176C3CCDCA3EFABE85EE1B4F902948C5F35A4E07BBE6CB70A6559E30046193EF97841BA385 +4967D36D480A2FA4D9C0DDC92BD19C3F53A607FF3212CDA0329BEE7D4132D9AF7144114FCF3E34 +AC28ACD34EF0A2FD9C20AE3FE7002A77C67DF058F2520040524347B656CD4B4E31743983D992E2 +CF88A86E1F9B967502BC0558F2624B205680EA61668F2894589B0300B31FECB7878DC1CD3A69E5 +4C85AA000B484C1BB91633483CC2275BD3DC0CDAEE9AB8BEA64AEB660691C36F14DBD322FE1B72 +11D407F3F2C739A76F4544E50AA015FA374D15B5C0AC96672BD68ADFD8AF638B576A00184E1253 +2D202B10F538DD705B0C143DCD8DBBA0387CBD52B724080C54D76C060506A1C13DE594C6F5908F +CE64330500C50FBDFCDC3A7AFD2DD8E4ABD09A6614FC3B69E024AF19229EA5BEA6218B40B32137 +A5E1619497EBE7E8A601028FD55EF23FDDAF588C49CEE8E73AD08E11F44F32CD4F3B5CB16F573D +BF7D973C2FBE510ACB55BEB4D7DD3F2C5AE5D6591EDB8AF87ED09053782BA3527B7582A098CCF6 +11DAFE8195C126692896E17AA849B6628777564578BE5CBD660D6E56328BD66D4A9BDA058733C5 +3B49603018E51CA7168EF405450B197A782C9CBB44FFBB589123A45FF8DB9473B0A8B17385A677 +98CD086B4932DB35B4C850BC2F447266EEF7190A6A08AB4481F85357A30834E5A1FB9EFF4BCD60 +A673B0A3181AFE37311899D3C18C582BA19225415CC20E682E5016CFFB9B06D09EB410A964702E +A26DDF0D99B689A97F736161064AFB46BFD15270E3A32F09E64C72F9A374CF5CEA39C9465849F7 +7EB92F77752318762F7C4690B16017C5A31CC8FF710E31DC122047F74428CC7CF4D78D02460AB3 +F42ACF17531F861B408113CF90733EB40BA7DA3DFCC5B85F4918084D05F095A9A7107DCC48D889 +C2CE360F5400F40934872F59EF4173EE1BA5AA91216C23D1FAB162C3CA623E88AFC2A7724BCFA5 +926EA567F2969BB5E84A5FF4626FB0C7D074DB3151FB98B8AFF79CB0B290D961BA495F15BC4B2A +2F72421E78B0FD3FDC64EAE00EDC2DEB68D90D1809ED556A846344A0248A2968A3E80659012D83 +1CC5C67AB29432D9A13C0465FF04A2EE97318FA6AA3AB87FEA5C835A82AAA55840083C714ADEB3 +26F234655CC9EE92404CBF02EFBE8191F936683B8AC6C390E20BD26A625D6C4346A58859BB59DA +A7BDA03B31DD75C6FA15D74E182D740D88D06174E3279BA541D167553546456C07F34788C9B43B +69F4E2B7AC344A29FBF19C89A5DE0B1925256B0D710B42364EFC59D5A70D67F355FE34913CA4D9 +139D3758F52CB8DDFAAA2ACC60B0A50E0EBB1BE40065F92B53ACF22EE3EA226CA81317399B2D0F +C603C832C9311F5662F5775619D21BFE933C3FCDFB7F85D1D1F0E2346B12E5B2CBA2A50E6CDFDA +D987C4FBD657FBB62DB90E1F3F533B98F179D2633043DFA10610B8AB529301F25C8FFA84F48AA6 +75A0577E6CC2D534BFF6C424E05FB13E66A9A2CE93BE6783A7CAF73DFD9D53BE022AD1F73C5A1A +940C8FB141CFFC2163C43750193EE46F4044B743483E2C37DB3440ED9E4C5B3F778DE9F8ED1BAD +208FE39ACA67771C35BA1F459364AAB5AC854AA68CC709459A9C100831D25EF7B3A08D07F42F30 +B7BE0952F81198016EEC050833DB264CB48085632AA6CA54C71DE4045543C0E707C36394E4BA1A +FD2436B3714FBD079462CDEB1642D05E8A293C8C80D34A6BD6C630E46901D94B69D1A6096D63FF +0A7E3D49C044B25DAE16D89DFCC07C80454022A8F436CFEF94CC5382BB1EA43CFB9FDDD0B4E6FE +E4E2BD011C00ACDB5BF235C349BF4472CADE59987F1F912B82F7D9AFEC7D3D57A1F6047DFC94D8 +446B52B5DCA83CD09640FE2FAB3CE95F406B9FA44BF12A1C53774FE9DB4116EF7F13E74C38FA6D +3B74DCE4C218172DE0B45E3977BF6C3A7D64F598B70ED8831A5BA8693439E21276F3134C07CFDD +B7D579B6B75E0F0805B0CA0E6DAE3B3710FDFD21FEC7E2DABC9A4F81127B9C20C41B0B0765C7FF +188FFA6DC9967FA6894381F437CEBB3FBCF8FF3DF0B0540F5E64AB0342B893444E0E42A4CB2EC8 +5CFC6FF44432AB7A5A95501C5C763DF94B11DCD77FAB88662EBB1EA67123C3EC640D2355C52D4B +20D056F08D8AED302928C669942786B1BBE8F38731108A24ACDA00A6A0190DDE86B60E954772DE +06522E7841E0C033D24500230646798B0EFEE09473FAB0CD69E3F6CB8F9FAF6C59A439AD147C7A +BA77E35F8C6161C9F4802A84EF512B9F330298038ED40AFFFC1D8524096F1E0FADA0B3BE026768 +DC2692453CCC44CDF51FE1F310A7B40EACACD61462476999C0FFF4548BED0582891735F8BB1FAF +F47835DE6264A02A40CC39017910BEBA4B3AE390C659BAAAB0AA0C4AFBAEF90C94D755A40BBF3A +FFEFC54209BD02662DFC399023AAAEE2E1320AD6DF5C51A96F867B7DCE84C122EFCA30A53769FC +CE8CBD07033EE96B76A43B143AAE939DF99A4293E967FFFDD15F6C68812CBFA08BDB0447E5A87C +93463CD039D61F0929D8EC597EB72160D0FE3C7EC4A016C5C0A21A60F4370D6E33C6D080BD7F16 +E5F49B0982FB6CB27AB79A1AFD85482D22A5F0B153A8E58B5AC1A6E879C5C05C2D5C699D0E6EE7 +636F93C14F661DDA83C067DB71402FD35A3830EB688DBB39D3868510C4649F84999D764D393EA1 +2686408B3F34AA22724F20CE1A93BE59039426FC72C67393C15DDC082066C8057C93C93BCF635A +BCD2DD12116BCE2F2EAC6356A361F7830FC48CCC23DB8845F15B6164185A87F64936D61F763C8B +007093D296352EDB53CF4E7DE28AE8A9E262D17F890565924E130F01798905D5F163CB67DBFCEE +F668607F26C61FF22B23C386B1817D1BDB7B6D7BA0A844F8B7F98DFB45284D524F9506D8C47C1E +48A12A39BEB549DF1DE692EEFAB35F1D79649829782F619C5758ABC316EACD8D557631369F772B +A2F2934CBD9C9CA1998BB6EBB044F46D1697920CCD12ED68B9D0E1E9A91E6093AFB31FBCE67162 +8C7C1EA11BCFFAF0EA6CE05BACA6D3928F9A546F5ED1D44052AD028EDCD97124D6950AB867214C +F2DF02CBCC44A50B0069E51657F1A583A5DD47F429EB0457441EB9E4C85665BFEA69A94BDD7146 +3B779B106AFEC07218B4044FA01E9D22EFDF6FBF80F97AF229454E52BA252BE73088CBF640B9A4 +58785CC692365EFA83854BA9391889B168D080A2F8E3987174B416989AA28E258CD2B69DE02709 +CDC452532F6B4EF9E96615ED82EF2633C5E06854DF4EAC23C16C70E6E5AD3B9F9CCA58012BFD01 +7388FAA3826C900FF865C4F9C023BCEE2EDBDFD622F26DDDF7587EE7B9C78F96E1EEE250B8220D +B15CE13D08B64D6CF68AEF8FBC0A0EB652D9319B59AF6609691D110764811295687F67C4715383 +551B46F098060236E42B64F18792BDED662F3DC9FC3A5B1AF5DB870C30D79CC2F3B59ED76316D9 +59DA24078A317B587061533EF6D5A923AA4FE1011DEA11C03DF691B070743D4A1E65F0109BE5A6 +BB472E5C7408FFF8F26873470FC0EC8951C0354E50079BACE3ABAFCA7537296411A6F8A5059EF7 +2801F4319D0FCD2EE2F98DA779FAB0B7A24553CBB6E179DB3FBFD7D951BDBA1C9D5366156EEE22 +41FE977988D9942F127AA3D10F42045FF51B06D34DA2D189E08BFC0F5017007916B35780A3C765 +2D69C756B2BB5B1B42F326CBC45ACDFAD94787D249995DAEA3F201079EACDB889EB7692A2689FB +0BAA26ED9F5ECC9957E61393CCAF621BFDD9ABFDB9A2C266C079CF2A311B634DCE30C329F19D2D +56AB3B954D5A56B24F1A0E79BB244B5C725463966B9B482C6922E8A143F6EDE3866EB38DFA9B57 +A42E429FDBCB5F0F7C0394AC6ABDC8587A9DBDF9BBFAD8BC5747AC2B247B751F221A2361303784 +8C6295BA7E5B703FC7165BBD2FD820602FF7D743841A27A369FA6E942E55D57FE84812483883F0 +9E37D2BF4D6318892D42CBCECCCA251334893C19582D9B712657D0CCDBDF9664485C037E57CE31 +4FBED609C1E2746F377D0FF1BD5EE030B60429FF3263E40E634D13745581B5135E97C3442491E4 +AE48C0DF5D741F8673F55A6142FCBDCE4882DA49D8D99C4AF3B4BF5B4CE37B822A82248BB535F5 +7DB87F999811223BB1C602B567A54B1F9D6452B32C502EC057C66532A5A51C7F3DF9B80AF13B04 +79C4F320F0A96D4A93A4C164A4877834230F6FD79434F614F18A1BC51D682403F167AE28B0F026 +FE3B62361C00380C1BDB9CF5DF7896F41E4EC9EF356C77D9816F2F47ED3A58A8234F5556DBF529 +3C01E5AF5C819ACCEB3F43242B685A44AB2BC2E02CC9B735EF5C942E1892C12EA86FA3217C9DA4 +9462FC02934FCF90BACF6C7122A88F7C67BB4A8B13E0B9616C749C71D06862F1C70E1DE05001B5 +76A413654BB3ED1FBB8953C01040E508592A768ECAD19E25251E54C3C0B852D1CC64FB450B20FD +4CB05805F2D45997E075A59EF0D6FCD4EC87B65D7AC1FBC03EB72820F3608D463AF215992E5164 +30E60D2C19C096A8456F3A98BEF9445F49DFD6E88E40316D0FCF672F6D9B4C1E4DDCEB841CC612 +3A8A443C2ABF9678C26872A452456113AED7A08FB8D6CBD943CB3CFF0117171B3BB40A4ADC70E0 +607794D4283BB89F6AD915B5A9981A35841035CD62FBCA76966EBAFD9224A431CB47178F176344 +7A0BC04CF8879A04EAD9213440C6E8A98A4C0C6818A841B6E3DD29C2F1C28CF4D4FF0E6AE84F5E +D2E8BBA59B33F4A617A558FDC100458112DA7860BFDA92DE8959E50F5D0447B00E1E69B5922E3F +395FF9DEB0D8101ADDAA8DCDEEBEDBE615482256E5B1EAB34B630040A8CE7824C7DA6686743F66 +4DAD98B8EF35865F4A24C52459461367BCB930DDA7DB975AD461D0A5BAE8D7766281E6406CF0A1 +9C29309046AC0698FC4C3A841BC45C4B12BD4507485EB5C9CC3A90F6701F4BC04684F3E0754D0E +C8BFB11BC602DF338AB3816273532BEB70988AC1E8454E6F21C0227314E64DF00E1507AAC56B4B +9644721CC65D410572C08C2BB304BE66A553D357A1A3B4C78DDE537F4F9B34881C3BE71C769E39 +BEA9EB23E90999B0B4E4502FFF0CAACD607B2CE92F5996F21297D30D9B2B5995D79C6B0E71B57F +D380F27D2B538E3952D30E3F15988A432FFF0074DDAA35896A7644C5650310985D49DFEF9F78A7 +6A3CCB31AADDB606225DD92ADAEA233D2749AD98B642AF23F0D644F79FBDC1CFC10989634FB2A4 +867B3DAA3BD0886DBC2E529AEEE3E80DEFC71875615E83070BC9732F35A4EC9F9CCE550333D9F5 +E53B757BC0C7975B9EC37335218F6E6494EFC192044CE5A95C3328E8051F6DF76F4957F94C7F35 +085239B7BEB071242AABC658FEB7A0FBF631C548760BE318467A16F088C1C130710904159D2853 +36FD126585DD20D2DBF85A23815AF422C3F33EF4FB4269ABA1FB46E11C580D87E1406EACBB64EF +2ECA20FBCA863F087D131BFE993B2E819B80D0463C013451400A72490B352A79F89B1C6309BEC1 +A4E68C76B066343C5A5280D526E9BEB721C871B30E8C0DF54347845E5E41152A58E61F52DC5318 +03F09487BA7BE0BC9C654E71A8F7EA50B8B848D6B26A17A6FCA1A6B6EE8F1E1B3CE081939EF4D1 +9881CCF8261291ABE21B7703B75F752F6EEDA214119B0E74C7C784D12104E075B379FF9A97CC0C +8EAFB3ACE163BBCE50E49312C44803CDEA8B9DB340376A6ACFE8398D491BD9AC05E8FAD65A62A3 +1D0038D7EFFF83685048685FE786B64E27A34D1A69ABF1E77570DB7B27279980A0055D604E6074 +C86D9645AEF4906E9D736B7FF4F4156DCB7F16526486EF46524BBEE3AC47BE809F59D45269C5FC +F90C74C0CB07DA3262BD64395AB0439F8E9388F3FDC4C2868FD2FD3E2E3844F154F165639936E6 +03CEB9AC55F572B1911E962D6BD8FC69CDFA8EA8DA14A823AB802B6A05FB93D8FBBDCA4E0AC4E5 +D692AE17DF8A6F6F4138662B6F6E3B9C9FA2122DB6A326D4E3845AB2770D5D1E77B928F8A8D1E5 +CAFBCFE4CC1FA281CDC6428974BABD56C0929AEB2B73303E224B88F0BA7773C736CBAFD927749F +A901E89B844420F3F5AE9B66BBF57E8713C4C1FCE81408A12A655CE94E698F81C49F5F4779703E +8A6A0FA4AFDCB7911EEFF58BFE1837C4C5053F0F81D3B731EDD9D5B6BABD8BCD226B3A82C6B2BC +F64420427C59C442EE7C14E431A0DC3DD038071C878FC0676A14353D5FCD8103FAF880DBCAB363 +86FACB6AA554B3C1501842A8160E44DE1919CDFE07FFA8E89C9F629D70B0AAA8B34D59B3088DC3 +5A747B0D4E3F711D8FAFA6D83D9331079691F6B54BE5EFED5CC84880117F427402A1C1B3408CC0 +1BF9590DB1A42AD63849749F2330F07D8D37AF38F10DEBF2C440AD735B7340842349EB04521A34 +6BAB1AF64DA71FA5312B0773D8C199730B73D7609D99BEA4EA5EFE2504E4F9200397F3C699944F +D4EAD6064D76DD8F17EEF82BEAD08D74F300EC0BF82515397B9BA9120A2545911C7AA962F58046 +D9488619B836FE71327D1BCCE89E0F54C3B997F99D4B3758605F6A58E37AB74EBD8D10470D26C3 +1FEF20AC5F31E70079D921444624FF5088E0B6DA6E96D4633D354BA88A4A77AE2EEEB2C98A06AE +09D79F737C89FDC6D9DBE50AF7202422C52CA80968CDA879CA39EFA9F2F77D9F9080CD8CA63844 +9DF56C504B2616548E7BC73CD4B28700A874927C44F92E105494C75DBD8788AA97D771A2C3D790 +D74B6BA634922B78E0544DC8277015A0016BD394B05586E83DCFB4A241E30696D7EA23AAB2E474 +298F79E4C0804766D636A39EC55B0857C601F99570098BBF120F28D3E633D99A3CAB7FEBA2FD09 +0D185A0144B381C38AD8E96865C14B5871A35C9AC06CD58BAE6F80093D2FC9E9C554EF75F3EF9F +5BC380528ADECF407C2B34B81FAEEF82495B04AF2F2C26B5FE229C741AEC5FB2E46203B75899A8 +78F5CFDC1479210778D4D847556B3C7EA8749B8A364F9CB7F6B595BBE8C77415C328E6F6A19F24 +4FE2B43085A05F00D4F4B5413798283BE318DFEE9198EE8DCAAA3A264C4E78ABF95309216F8B96 +A31A03331F161B2B280DE45E47A02D54706C56C0BE57FE1009958C1D0166AECF30456F168E4172 +5652F4270C0F1D693DF9930364299B8FC859B2FEA237D31CF49782B63151ECC8D4B63AE3FF2658 +9CB9A383B656F61CCEE58854C4996CB2C997A4530BF8CAFFC7D3300F75F78C459A5699E2FAE096 +96B89553F110F67FA96FDD5DFF086A04BD9F0D00DFE299AEA694753A173B943F774733F2AA6FED +2BC13DC2E4D1017B4BFC213FAA7D7B6AA6FF3E01D9D764CCA95504B194F9C250510072F93F8FE4 +09F346509611C87809C815DFE1079AE7BED3BC2DC019CF065D390079450580408C04B44AD1A4AE +DF8C88A26540804B0337909D98F35F3957E16F6D7946DAA545AA2D89503977832A8E66F78C338F +D8CE9F6FE7512E35733291FD8CBC1ECEA1923D98F5CF007608F41F87DC2FA1F8E532DFBBC0CCE2 +26F03E2A881ACBB82BB2B2574ABF2723A73F3912D5EA8FD2CF188946AE9DD98A2348C66FCC00E0 +EDA83BDA0956038120BF1C5997F699FFDE364D2E9970826A15967A34C193D4CB4925F7F16B3C1D +F9A4AE44911901E9DB9B826A89BCAA9A5B3051F5EEC233E681D1A2F6690719639151AB7DAA5C9A +B39CEFD4A547941034E6DA56844722FB0F9993537EA1E61A68645648F98DA99205CA77DF87F499 +D59BC2518804D37A61B05689760420E815F96782941A2C6121971A39B88874C513848B041C49DC +D652A69FF78CFCC9E02C9ED3CA0525D2A484C7858886826A717473A3B55CFF7A045A84B7EB4B3E +595E0B065D4AC86029CA09309640DFEEE1C8118F4342E2F589D54B272AD3FF163D8B5BFD2DBFD8 +374846BEDC85A342D44520E32BB8DFCF2450403C81E597D9EC0C66997F6E9EDBC243CFFF415741 +EC52222B4E721EEC9C53CA17630C52967D5261BDE76D0245A3D2BE25AC2DBE8AE780730EBB5B81 +1273931125D8C4C3A091D33D7B1AD5604454112AEEE083F70942FFCA8E5F310E3054E2891AAD7C +9CA11D0911568F629B6682A6EEB811D114AC8021045DAF40791FC1F6D0A3CCD6C6B783FACBB834 +460C2B34406452E06347D7801A39985007D35979D75E3B4215CD88F26F075B8412E1498C8FB928 +75B7153AE79C406C7929572BE6A961D2532428478B5FE2A0D9F0DE1EBCD697422990C1570EF128 +11A599F580B6DFE9B626E6677E7B9C50B71A7FF916145FC03552F4F0C043A1BC8427DBD459FA16 +8682AE7C5CFA6B34571EEE4495C754720D24E3BE4F2888FFCB3B645A2B5EE7D4BA9148842F7BA0 +B4207F368E63A1ECBC6DDE5B185FCC58280953736E769DFB17C946AE5054A3CB9DE3E75F942F4A +946F556381C766444662C80EC3B490920981C7EB9977A0B26B462C9B0AE2831C814D70AE2F465A +F0E672B12B3DB66F4754700A73D19832BD4BF523352360E07307D256077CD385AD209D4CAE2594 +D4F7245967EE0462134CF0F72509A0377052AEC52E2CBBD316F341DB578A161EF634BDD58DE124 +8DF8CB18C45B2C672F0027B416FCF80465D3DD1A26154A27F8759DCD48D86C16375E0478A695F9 +020E7A6B370E4CC4A71EED37F0780B75BF7F53DD1C951EFDBB8E0565F7823C2DE468863BF08620 +AA157D05D07D15916462220ABA350B8057E007C608C642246A7AEFEE8675E4AFFEBA515413D01E +F367B8AA400C1295DFB4C05E39BEAB944DF8A2D69179E8D526CD2B64433D51F2ACC2E060473D13 +4A6E82E14B32CAEB77F5FCD90F9439FC9E1700E789BEDF8B548F6645782DB324835BB0DEFE7F5A +A620AE9ADB57CA573F9C0D9D281A71E93ADCE3B3BA85A7A388BD4F94270038F4BAC4DE1451B44E +B82E393DA2D5275C6BB9FB93384809E705FB0E775A7B2B8CBDEE5BFE19E071D9F79CAB4B488A6E +649D6616878F4509280179519D34CE84F79C53D5B666AEC1CE8068E8DCC7DCC1043098BFAAD780 +49B2AD5EC0AA4EC48CBF48E0CFCD2C50B3BBC963FE9C6012C0F9E55530C488CBDFC7BCEC963DEB +598B0F44194D02F255BB7C46DE0A587FE216DAEE22E4AD070759A393636BE9E86894A27235DE5F +8DCF6448B131B7A62BFE9A2D0DEF969D137BDFE85643B8D8351E4FA4B41337D8E47694D669236B +F6CB1ADBC69D1A4DC2D96081686A00FBBAAB5C380830591FBE86E50A83E6B9CF45AAD13B0D10B0 +42821F528A394A49039A153F5DA80B074B298A0B8F16583C16C240B63729EFAA15B35F6FD32249 +CEE97127FD9CAB912DC4ED04471ECA1278E5E6412DA983B0FBAA631A225F4DC0D00381A68F6D9B +7003D3DEEE7D6F903EBF80AE593536BC0E2891749F46C0A6BC3AF041E90D3E6FBD80E81F7E5238 +541373BC3A7619BBB6B608150D88319BD75E93778C2A056A07141E8C5C7B7F565866F0454F3F60 +5EBFDA824322EBD365ACD5B1D23111FA5C01F1EF9AA834D007105D04484FE03A4C076BE1E41C81 +468167A0C901F1BC1051AB43D42C27686045E3FA47792B5CDE72A800640A5A729C125CC273F1A9 +D7628A090BFE93FBD4C101CAED7E31B5413AF196B9829DACE604BA29A27BEF892275F42EFFE326 +39830D7D980FF276EF45F0F1F643737399429384B31C13C42B4DE53BEE62D86CCC17EEFD13BD92 +4B70BA4ED47045BA69E984945B68F389104E2852B095A51B0C84FECC938AD9004CA06F73A1CFA7 +80840030D50F7EEF5403BFB26D618CDE196F5DDE9299C4D5617EF07B021F8831A2B2CD0825F6DC +0683FDED74CDD0BE6166D074741961473B02B7017DB5BAC326109BD68C5AF6722516793EA9CC75 +FE2D19FF688A9D3D33CF92CA7247CDE34D6DF10DE79165CDF4366693568F1479C1EEC895FBE683 +516678C747393B79729CC4DE2FB28B450CBDB73A2462573091D38BCEAC662C7FE86AEC81B881CD +389947B448221C7DF71481AA4C6B042F4A295013BFC61A2D508BBA7E5993FC237A7D548AFFA034 +C73343D063C5CC8C5A175769E4880CDBC994A96DD82CC37BDCE0763C8E1390CB10E28D8D4BAB9E +FE78EB8F8CCB60F4742610AFF31093EC793BE3B4362A3AD19760051C5388A5AD0B68D13E45BA06 +1A15BD021B4435605586E83DCFB8CE311CE769AD170725C03B22692484878004D1BB1E93649FE8 +3EDBE859E3F5F6BDFA8FCC141D6D6A651FD23981A33F5CEB95CAA96018C6BF225C7E51F7422F1B +CFBC7E16B67E29871895559AE2B47A6F5C66D87A0757DF30C9C7D5C1A96BB1D62922C3DB496FFE +04DDCF3BF0F79A93892391EFDED832A40D7ED0D273FD55FC74617685A662E60D3F902C9E1CABE3 +AD3FDFE32CFA8B4C28A9E394A5810851A3315F28BF3CB1A232066BF708296F1BFD115E0944DAB5 +7346B9C313E20D758454F6D462311BFD756F00320C53994E122B245546E9DA4AA09B8BE2BDAF1F +5A003465908E8FE6BB84F5F2D3DC4BABD5BAD5C3FA4F88F7B00A1968AA69E29B401F1AEF7CBD33 +2E9524931D717BBE8C020770B157EA15EBC2EDA25C113AC247B49A2039931D14DDB505618E3106 +B8A77509FCCB963ABB04D32A5D951942BBA6F4D1428CEEC594DD8D200B9A6DDFD97A215E282469 +BF938073AD97AA3E14104C059200052E6334AF59CBBCC049F16D52BE36BABDD6ADA50DF87E1885 +2383A51253B85F30EB410C95B7C6815C1E67917C7AE645DCE8564CFDBD45B8D92258E26CA5C630 +B1A4485DC3447B5A5C3CB074F44737E58AE738DA2E9AF434B8998328336A168128AC07C3CBD571 +F78A7A83736C86BECBF3CA1123DBE0C8F874013718D00B4F74FC8D6BF07B9D978AF8E0297D95C7 +1ADC047BCBACACB74E141476D268B3D6FD421D28E7FC390397A37EEB993623DAEB4F4E1C0FB87B +BE444F0152F7B4D2F5B6F4A93E50797C3FD79C5A2B9C13444E813A0DEABBDB62518693BF3FC4F0 +6F9FD5492019FF99AE702E03312C5B3E5DA24DA24D80F10FC8E46CC6579BEE25D0AED5528B9040 +72F0A7D667799D606A6E9F3DD36B6B481F6707C99F032D3D98730F034E6F56B42A3E636636CE8A +484D5216F1897E26F5439AA0496A48681FC5E2A0C240B1A9CB6117FEE0AFACED6B8BBFA3B648F0 +71EDB1464AEBE044F59571290AAAFAA04A46C049280F0D4185D440A9FC3C1AFE242FE2B41F8C11 +00B90CBAB8FD5220871E75CE3AB41BE88757F4B8012CDC0A20A89F344F6A1495A072F83F9A1290 +E341DBC2B8721DCF05818E1361FA4760EC1C0772D4BEE65239D4302655C49995D3A01502C9D824 +6E38153F7A17280D4EC4BF9919218F093802A83E2D009704719DEE8900CBC216C5AF88DAE6A8D5 +940A9D0EBB9AD11F51A63F3A2E899BD6D3AD68960875F7883BA871B1F9B2981A9233AD1E463778 +432FD1547150C9691F670AC24E7097D9EC0E71A8CFBCB12263C97AD4157FC4940BF72E2CAC2C77 +6B2B043DF7B2B8CB94D7DF8FA7005C29D9AEDA35A421E1856A130A4368C85B290046763A0BA46B +A0982BA4063101BB53760A1FC4D43E713E99A1121E5C44BE74F3C507200035685716F6CABBC896 +1A9724795D4F4662A069403ACE3C4FFB08B59FD15430ACC6B1C4C64E4424077E81E384CEC0ED04 +93A9816D0A7B94E20D2F7D0D95FD5FB94648D766B5545EB959ABF1A3A23006DA2A2E175E42D33C +735553E7E5C00DB42884ADAF840544D5EDB3DC90428EDBD7877A9EC792A4A18A23E53DBE6DF2C9 +EC12816616D6501C9C62999CFBAC9A5B8667D2A8250491C923913654E7BBC90A080982437D4293 +EDF4CA36D37068DB0A0096EE3285B68C11237E516B30B54B4BDACEE0A1AAF0F71933A140F535A7 +0EE28DBE15C923AE418039A486225FA943A3E372B1075E315900EA88858A49804368E175B620F2 +D566032676C32C94EF6BB3373C6D160A23EE429242C5A7581C138FDC8D8E2D9EC31B28D39F3697 +68D65C5D362BFF288A041F42281284C0BC394926E4546889C511432419E95C718AF1242C3AA461 +812E1765C43B85D3B9532A22755857C0E61BE7FEB05C371B4822464974EE2D650F23F70AE72845 +2A368AF1DBF70A0E22C95AB8CF043D217B81A5B419128205EE0B3CA1BD6614B906779B71314F3A +B6238C6633E8CD484CAAB5D97918030C32E9DA41A4F1A12C84245C13F6FD00890CF29785919B39 +2BF1FDC9FF1D172D51360753B79A5FE8747360DD7FEF49740A1F5DE6FC793F1DDA121E0B481693 +56127FE7CEC3FA69F604AB0947C5CD606D13C2A6605F5F0CC1E43FE00F712565B54A268AF7CC60 +12CF31402E9AC671EE9BAE7AE9B0DF388E657A12FAF6FB6C6EB50F91AB5B3026B73CDB5AF70AA1 +DC0CC7B6ED1653EACF08A054A4AC6AE990833A9EBE5156DDF8459F6EC9889BCAB3344841ACEE99 +EF0052AEB21C80708ADFB61A985A1187BB5F70A542ECE0F9E09ADC780177184FBD98E724ECF03B +DA3CED4FB4580D36C65CDD92D77DBB7BA9B5644B4BE8A19682AEF76C69A71500F1F62F51B5AF56 +D8D67DBF8C24F3D710CDF9B7CB4A49F72E29C3086CB24D78A8DAD418CB31CCDCA74E0568AC9B62 +DC33CCF32D1758E316D69093469B2894CBDA471E810A40CACE1FE8D5F4C0CBB102DA8D01E6D39F +7F4CE30373B7B7081A0F012C186B5BD8B9948677DC7016A16329DF52430431D9D34E18EB638552 +6931A12A673EFC28A7E9D5842434D6CB2959DADA29D09E9B8FAE4D4BA7B8D166BC96DDE1C7D8DE +4DDB2D8F10E409881F4DAA46166154F6079C969BA24CC6212B3DD6B37C9DF6F43285B68C110BB1 +B7049D1FFBE6DEF4CC7BC672E1015ED47648EF026DC17477B1D3DCCBD27CBD0B5ECE487AD67DBB +9E09AE2159B49C3D146CA71E561E065E724570A9867BE2D161B659EF928E1E46199F08E583DC22 +6D1918FAF7D0F0E01F70FAF891AAEEC0D5DF536E9BF12DB1E850AF60ED9A5AEC9227B9F5B7BF33 +EFC3A3B494D3DB0EC1002FF109DE91FDD6F664ACCFA819EF655B1C2A464FECEFD67B676EFE2EFC +B1C8FE958EC29558CF0E7204BA47A32550F4DFEDC2A1590B6088E4B54B16B3DA0C4C37101C9E64 +E544A5953BB3CE679ADD66CCA22B849FD5AE6FED31B56E321950D7118F1E371C36043824D585CC +3D7D216A89FA08C621AF1DAEA61B022B1E0FAC58792D6A416DD2792F94FACE9AA184462C4FA454 +5D03F15D1F2389B500B86DEC4977D6FCAAE71A8B54F096C7BE5C3DB6429A7D33D2A786E44233E4 +C5CF55A017AEFD584D72BD99D1257F865968C14A2E372748A8B0DC02ADE391E2C01D6A461C13FF +FDE313DD28AE1B83267DF274050C10DDC2D413FCF68804BAFCDC8281C1358BA38500C7DF357BF9 +B04B82F08A2CD5774CBDFE34C6E68B71A481BA60AB5EDC5F4E357EB5BB48EED10E56665CD1ED83 +608F510EFAA11766984BF10F5ED86B5FA0D146FBB8EC42FA6CF304756CF1DD6EAAD4C21E0E7668 +891C942B7777D6E1C302DAF28404688ADAC50399A868FCA56676F1B2E2DF6652FABE20A7B230C9 +3EF2A8A26EB0E4D1DB285E3251A91F0343AD7442D2D8C96E4F4435E38C1FCD53422D83C550ED09 +2043DD8BC7FE966EA44C7991FA424FB9F3423FFC606FE466E9DFD5DF5927C0B11F1CBA1DC82B40 +E285EBABEEB6BF3DFC7CFC68D8A55602D300C4EF7E4296419DE33CC669346BE158BA6DBF52A948 +0F80D4DFD0E928636BFF437E40DBCA6FC81F03BE1BF1DDB3F11DC1F26BC8E595E43093FAC499BE +9745A378A513D2A04A0C22A207C6030A571C58799C3140EDFEE585C00E82C52DB23975B851E1A3 +6D340A79F88E1E409CBAFEA39DB1B8DBDBFEB74D2B4CE1CD02F100B97391FCEC5B84F464678AEB +AE4E68C4E0EB2228155B5527EAF88B1BBA8B53CCDDABE71D9C2D92278B67FBFB22B093AE496449 +A014DA0598E69674897D2BDA3946C77A8B1B4E3A48BAE8B3FD66606CB76A25882CA1629CE6AC00 +9138182F54ABB3A352C57F17A08A29AF909C8688430B643B27DE5D75413267EA6699D71A44F451 +05141577571C2AB97BBF293A4C958C3D1B3C8D1E601E2FB1B2FA6791D42CF5101EB8BEA26F6B66 +5FC7CED07DAE92E76BFB4A80C25CB445C3B73762380A2A2EB70AEF5BD1F5DDE7AED0C6D7E5D4C5 +19039375660EB1AFF2C2F75CA4EB54A0D5A69FB21E8B0103324416863C778AF5237BE8445E3286 +73F450F141587129E56DE4D1F871C80CCC2B0499DEE1BDECF0CC34767FE5A5D040E56CF49AF780 +8BD5780D25D8064B54DA6EB3AE466AFBE3621D935703FD50E76E1605585E9322ACAE52932BB589 +4B42FE66A141F432168E729B89A80F068A84336590FDA0FA4C3DB864E1C33EBC45016871F61DD1 +A97294F16E89C03FA6078D6E1338D9CD9E11AB1B10E2014CE8363D7148FE35CBC3C85392BBB104 +0BF536137C2EBF6D2043FCA16AF8E9B63C78F51FDFEB766D890B33D7792B0CD8EECD860B0027E4 +9402ACA295A2E5980DAD3F8B51353F490E9AFBE7518126AEDEE5F93A889F5953141A47BF221CE2 +C8B51E52498BEBC1C5A78047ACD0D5A0CC051330D68187B71EB5E2B19A8793FD3C63B473E092AC +3BF38803AD37C7E84A848967C6FF5F6887066B709449091D489F3BE5FD0F3C6E172A8F871229FA +15CBC7F9F6665982812B189887B12988A2DD09A6783A51D0D5881D0A8C7963FB9F8629C80DEACE +72B9728B11CF2941E6F9080CC0FE7994CFEA9DF35C7D04DEF7A7AC5D4675C9DE4110754007BC7C +4408448E9923AD1C72583010735B47D1E150034D0777F37511D9360097659DC2BDB58CCDDCBCC5 +36C663DDD0DB5EF5D2CF8D95A5FF75E974D98FD25CD772EA578902DB462DD85A7B32B67E43E5ED +F17252145BAD6BE5CB718D035A45681C34580BE3D9A0F142949B2F23382DC1F831691D3E509148 +399D0EB639AF8DFCB44152E5F79050F47E7811F04C81F9571ACF5F73D894348C1F6F355709DE3A +BD4A17927FCF7AC299EA5C34962338ECB4057E055A2AB8E9BEC0B5604C2CAB22C5ADA1862BA745 +6A5539653885301073DEAAF112C216A100BD339B962A48D77B8D50215D14259D8A4CFCFEEB67E6 +0E95B328615AFAEA844878F702225D51403ED3E763E97EA358AE72968F3C04E77456B911D61764 +F23FB7951530C6FC9BDA433DDD824BC4D0ABC38DA55D7F4D2C76E4E0D4BCDA2442302B7C3EFBBB +2CF8FC6C87713FD391F9213351D79FF2E65AC0E229EA4423E8D8AE873E002ABC3F5E61CAB77E67 +BDD0D84A17008EF61A70C22F4196E3D795B006FB41557F7EE945EA083906742D57F0B61F38AF4F +0D3F337ED2EC44136F228695C9A765B288319EDA3BCE9E3CC5C692B19071E5AC09FD2C7F829C1F +2E2EB0D8F28E209E034C85F60ABFB29360541E25149D03EEF6ADD50C154A90DDE30B07362F0BA5 +5D8593D6110CB65B9042261C4429B802A7A46F0B5FA731EB844C3DD816E789F6774DC1CBDBF656 +DA56D0E24F89593D46CC2F4D368A4809ADC06F5F8E8C05979B7B53097F421B0D55D186635A942B +35928149161FCAFF95950E0ABAB910E3DE7715ABDC307DB21146D06DEBCEACE5AEEBD5C8A0CB2C +DF310B828C3E9EA9B41DF266F3D7765E9D63B599A79D64F8E38ECF3D5E121814170A87759B21B6 +574B25B3CC985D388E97C9BAD610C4C7CC883F33500298CDB24BBE348D498F64BC51BB17A73663 +22EDB927AAB7608CE185EE00222272FFA96F7D2B8087871AA4F1EB15D6D314CDC07AC57693C1DA +8BF40ADB3D47CF17CFBAC0C47EC31DC01F55670B5EFBEA7575CAFF535FBC3DC8C9DD09465BF094 +F430D6D5982E90F2126D3B6A51C1FEC60AAD8761B26018A18908E8B97123F71C1BDC8C03C2EF5E +EF694D2021A55C4C811CBA419E435C2F63F9343A464C04BFFFC322FC9428569B27B8D4EA69369C +C51406971953E65545E1A6F72E4CA5335A07FCE029A27DED2A8B591EDDDE126794D934FA40D6F4 +1537A66F7CD73340554DF387B4ADE96FB53C90B2B4860DDF007CC2F3D15940D852C16E14F74C9C +39797A1352F421EC48ACBC42DFB4B700D53F3FC850D4EEF211B5C9444DEF24D73CD9B8710165D2 +6074A23B00211AE1C91B2D0996EB426146AEF6F39EB8CCC5293586E0803D89DE7D36A384BFD7A5 +B2155FD357EB24028697F1258BC893D80775EC50D104E14D5FE7E0F43A13DC4B9BC08C0DF6CD74 +CBEE4C271D3D9155F5CF97E0E18926873909A4E1F047868A69404935AF5AF0A3920447681F25E5 +AD555F92FAE106C030DC2D491ACB9EFAC80BACABA60A1F82A1E234DE4C90C62DF34BE415B573F6 +6DCE5AC310A4E1CE9D937EC2B19BB45A359E271EDE28ECEE813BECB2738A8FBCE87A09CCBB6603 +35DF49E236CF1AC843612DB45D90D04330941738528ED4A71776B2960C37C673EDCF42AACE7FC6 +0FF7CAB116BEEA907B1A00E84A2607078439998746C242E8AB3A71F1E4AF2F9D6B7D09450958CB +A580A205948227286FAC750ECB9663D74808EB3C881090B77BC479496ACA8236F5C9D6DFD4D9BD +0C5CE0086B2F6DAE082318F2C9BA13F81DA830F39979947E5AC51076212D80C63942E71FC8E2E2 +34AD93410A15DF097F8C0B885042D6338FD6593F30B192608788D88AA1BEBBE2358C6500647F7D +4491E893C0132CCCC75F7C8E1138BAA241ACA5FC318E61496437808ACED42B7C2370B864012E0E +57627ABE1C1590798A68F897E46A0C226BAC209639A2D25033141264F9154450BCC4D3FCF123F3 +DEF262BC5B01F3D23C316DD327FB5221730D87B6AE0660034B411D45236625A338A9C2E81BB938 +33B22C74104EE09AF4033622D5DDE03FFBC53ECED9F2580CD56527B48DE1E9D8589EFB6724FA7F +210FEAD0790C6CCD6E70B67DC2FAE33A0349B19A8B5B7300C8C9AC3D172EDE3B44793FD7DD0BB1 +81AE4A12214B3B3CB95FAA4AEB385852857FE9CFDBA37FFFB0DFBF9D0D0F342819B3D635F3DEC0 +FD04B41CDAF83936A7C95E0CBEB66ED50AE97657958865E0E42807EBD7571C9092BC626F882CFF +8FFB82FB54C75F59990B5CBB5A5D7C119F72D6B8F51883B4938AB5623A3B15056EEF9D6F23CDF1 +24B344A7BE94487E33C0BC99F8BED875E62135CAC31E7F39E2F3E2008F74A678EF1BE544CE4217 +5CCAEF3C108D65D76213DA0C740C3C8B56A26C02E3C4ABC3AD67EF4F55F29014C94DAE4BB848C5 +11B1CF5D6BD174339DE2F1CE8A512662956ABA1B36CA9077BB03321A8E61E7719A341352F4ED07 +D3126E9F8A5E3FDAE0BAC2DFB4A7116EDEDF6A0C41CFC69B0CEFB8F81E797A4D9F193852223904 +A22B1438692A30F1FC41511206D996EA3F19A9BAF2BC238A2CA1C444A614336F9F2A5D1BE6FE27 +89A9CC7E09E770F521A3EC9449986BAA83F3B738191BF9CAF5702FC925223D3ABA46430185BC90 +A2158B6E81F64A33FDB1A54E120522E73CFF9EC2E2B0E4AA629FD0F87F5F0212F12C97B3E7FB07 +13AEDE60BA40BB55A440893DF871E16F72853E7AF8665E0EDF501BBDFBBF021FD082D05325B8E1 +B0A8EC6D84A6E85B00742464773E1CA38F2619C0B7DD689000FC3EA0218E65346617AC1118002E +7C9C68C68B47EAAE225F827B1EF9398C64F01B0C70048529D2430E6F232CD99883EDD763EEE914 +774678F29177003281FDFC7750460D8FDF96A6E5369F3B1F39C1019BAED02B1ED23473E2785471 +D58264B24AF4ADECBCF8FB3A0EB49831FA169105BD28EFF4B9270524AB641711C1D69FBEB81153 +BF42E6F310D24ABCB94591DADA48B40B3D3209A7514F35595BC23CEB9E515F64ADAA82932CC35B +A403BABBF6F42D5292CF7A803CACE36AC9DDC837596A1DF4CED2C9C750C7A9B06048AD50DE3508 +C43D3A512707F0353A6124E023070E57FE69E71671FF1ED5AAA65F040640F3C403B38EE8389241 +03EAB9EA3DE55B537F49BC896380E88206833BA999258A870751B516381A9694C230E7D5DBC8BF +1E633D2BD8C9E3FF74D906613A01EA65462587FD3C1DB184757BD45CEEC59133D8EC74762BF0E0 +0EC13F6B26AF3D2DB17C98EAEED466019FA353FBBACCB26CCEE3F2D3EF0757FAB44A01AB71EFC8 +E0A577771889E0CD62A4CB1AB4DC60F2EB5E44E97E401D36BBE1ACEE5E6BA323B344B8365DFF7F +6F618D98613D6079FBA93E2DCE16624149AE86989EB24DE0FABB1D9E8E5D92DF165E55020BDB35 +9023B1669C95BD379AA417B998983622219A2603C71B8CFFF1D1D228F120A3F417DF8B4E2AA29D +A15907C9E1E862C2C6CC9DD730269F6D90551C5C9A715F8B8DE15DAC77C9C1D0DF8C074883689A +8755897230533383157E56396F2CB9E38877C17558A31D4802783D8B935AC2CB8D4634494519C7 +4447ABCD4AC23E7316E8DD2CC23E2166F70162BF05E2111EB160516093D330FA5480C25B44EE03 +390C50CF7D44FEF6A3B2D4B1A8E4B99881CD62D48D44665E1D33CE1333D2C2F89D692D0BD992DB +60777063BD99C9F0611EB3C53AAE9CFE7C1BF1809480D8CD14ACF700D40680829342A71A761ACB +82B282E101F2793E5ED75848531FD50BA27C4EEA43FC1A58F96AE748CFAAA3D60188C84D12F514 +CC14ED5D30A346443AA9B91937668634B60FDB8953DBCF596BC4B0FA6A7BF3EFF336B2079B6F01 +78ADB6F4567904EBF0F11B70526C372E23BF7756A044CFC53169DC03C898CDCABA22475AE94F51 +D6C78C0962A143D102060B1840C6C6E43C67F84E8CD502176A4456328DD1559D68497C18D23863 +968B25FED9B9D9F581F8A8AF472C866B80236B97403566CD8D275997B5262170DAAC093EB02EDD +C84D6F6D96EB6AA17A3E1206B84458A1A335D1CE93012944A9641313C32B770660459C64DFEFA6 +E278ECC82ADFF1104A2A01F2217C131A73FF02B8427E9C342E903FE9F125D0ED70B9303C12E3CC +672C126E7B75CDA361F8ED9E983D74E78C2F8832C7A320A9A31BDE1604F761733AE69FB3CCE4B5 +28401FDDA2A84E0C718BA86572BB0B80D9A3321A580982B43236364867EA1243CB98EA8413C53E +388925E9459C7A4C6B1D7F390BBAA90F3B9F43E01DD4F47ED208026382E5115F61AB7BA52DCB34 +65A20CE11DC8FA5DE7A86367C4B092ECA5E54A7B8B5AB13EE4253EE562AE71F530C397FCD69E21 +60D203EE3AFFFFAB68743E315DFBDDB5BC2FF38C1B865A7D518B25AC422FD356142A816D2AFD70 +8BD6C27DE6125779379D92E48A8320376C3086F30ECBB052E93770E7F565AA0F49FC95555878CB +0EF7527F2393CEA885908064FD135C9137F83E7C0B6061401E6F34EE247582206541C69285D6A7 +91750799EC8D7C932A7FC0381CDF41EDB0FED940BB99E54918D2BB4BA9FEE2A75BA821060D6BFC +BA2F64432C31E5E41F874598502DE49A655566B71E8BBD02DCAB241FBA40467226E7B527836996 +C3D611E4E9D5F92334D4E9929D6A9E23D63915BC48458D33AEFD2BE85836CB8588C757CE9A8401 +1349AFC516B969D1EF422E63B7EDA642A8751E2EB028FF6B2CE56588F71957962B90DFE1972569 +21B85A168EA68865DAAD27E27DEFA46B2ACAB68FE7A4EA69899DB3C63AE11CBC91891CF996624B +253DB4C8E1748B21A59E4A7040CE442656548BF24E434A99A39618D115165CCB33DCF69D1659ED +68E15C1BEA74951623A762BFBCB20279E9E95BDD91D733BBBC8C125AE8703B71775AA4C7B50B44 +EA8B8DEA922ABA7204FE6AE7D7B1B27F46A2DD5689F79E9BEC4C75BA7D25CD446AB20B43769495 +A3882FC01C05A3C3AEA26B5FA5557BC3DC1AFAE8D37A7F8593013D28D0E6C84DFC592C3D0C225B +C3C3DA6E87A7FF81AF3DF182AF8345A27BF72026E2D3C74F94B8714625AD18DE324F6078C77FF0 +AE3C307EE849C596C5E49D7CF7A185E8CC794C6E02D818846CCC75309899939C527F6658E0437D +904111DBF9F73BD9F4C1CCF97E1682FA5B847397151489973C761D08B0A46ACE6FC8290C24E077 +E0BDEBBF765E3716527BC239906333585A5D4A919D80659891EFF45597EE2625CD214A71187B6E +608CFD1E173BB2F8E407EF2AD494509513D16D6BF2DB5FD71FA665CBBAF218BB0852775FA51652 +F0FD485026A69221210DBB7FC2ADD18521CBC237F2CF3655E5E077E53A427B8E325BA06833F669 +4D3C4E98E16310E2FDC138E92EC2D1E56CF92B24AFDEFD4A4A07B4AC33526FEAD08114857FDA7D +6C128D3DE9E3A136C76838BF82286A438D85BBB1C8C8832801E5F0C4055B2B115842B959AD212C +8F2881E0E188F479ACCA32D2AD614DF4352C9EEFAC30457722C616D00ABD0D056618A377857990 +F5844E8FEF8B6B3B97767B73EBD52CBFF670383FF4AF3573337F25009908E67A41ACBA5BAA6693 +65D2E464776A25E539D5E65099936E284C6F7CA8DBC0207498E06DEF1ED8216D4BD1100D4F1C52 +6ABE16BE44D386B13DF0403EB6B5CEF95E5A09CCC0CBB3411CD8DDA9B37999FA14BE75057A2BC5 +DF42A99F25F0E89964421475D3E0B742268BBD9ACADDFE2BA2083805D3E28DB0939D424C4A1DD2 +55A0B04E80A84E11E8025FEC3154E4A3C5A7A664A2B018C64216C19FBE8875824960FE69C1B344 +64732D9D6F1257E5D2A34FD523442320480D1A9B68FC4BE3C288517DA5BA88704A06D0525F5DF1 +04A4AA1D69BA5E824CD9B6BA59FE1C9AC970989D33515B447D3051131ABF4EC527096227E869F7 +F1E8F02BC91711C35C5A584C2C10AB07C9994B67CDC34252718CE5E6FBDBE6D5C4F7F662DB4B39 +008C69EF5A9719810D8566672E5FC0D1D95DD9B98D11536057FB9FA4BCF54814C710FBDB2925E7 +AB0201C4B99C13D2BBB6B009BBA3780EADD914AA1939F916ECD0F07B9ABAAF5EBA577E9C26AB8B +9B35F7A9EBDF77399C0B20800F914444AFE94ABBDEC36AF10B2DEF50BAC4BBFF9DA5FF11337C31 +F9184C1B3F9952B94A72EB2DD30A55E1385CB9E3AF4FDA1201DC2F13CD7CCACA0A41F203A7DB9A +0C236D137B325DC981ED3B054F2E067B3467DADDAC27FB82406B40CCA5B437F4AF653903FD2D89 +F7ABA51472CE771089C9838F3A063D9EFC80CAB3150CF1BE49A408A7033D589E84336C73C54EC9 +B5FC8A0301496FD389AFD2A101696FEA328279167A8E67A43F5C2C5E88053E9346DE8DD1DEEB28 +2DA773B706C20C633C01BAD584473008DF379B5734A97BD98B93346CD9AB7B863A5B30C0C97997 +76C76EC1B82CE9688BB7A0206F5414EB4D756870CAB4B402AB8A02D7764BF53506E1F04CB92C5A +5DA77801B2C25718C1AF0720FEA65038A503572D33A819AAA9BDB893388E66C1D8D51ECA843C10 +9860336607CC09CD1B2C1A442C07D671C334B42CE910242D9A2FC04C59BF6AD7597E9C905A71D2 +90D19CF6F1407D97A5007B4F7C8055EC5EDB4B501B0B253965E89800FCF4EA3C86AC48140572B0 +A4C4682234F00A4EE813019E5E6B270037CFE1A1E9C5D5E4304A20EF3833F1AF702033947B7720 +E5FC0C4783EE9EB1D9878774367FBB6F9F4BD9DF26AE1E5BB9F0785F363A6ECB29BB3F0CD8120A +2C6F146951193B053617212C1B9E918383A48D28C8C5183091E979DB701274A1A1240B155A0FBE +2194276A55F18725425A769DA3BB93AA10C83026020D6DB3B90AA91E3770382B84E1C8C1BC25F1 +32AD8440135B3D0A35138726C8334EABA1CD8746BCA3A54317B1EADD3C3ACCABAA53B29A3DCA13 +0D56C4D6CCDF2C3B9C2F3258D4D3914BD6BCDD9BF9D34F87642376FEDD65D75C7CEC33A61F5688 +32AE3FD1344DF80EEEAC6791A7313FA32CAF129BA540E01EF96139C1D9A10E7634CAAADC92D96D +E94276C543276C7378194CAB800DF6EB0CE8E0969CB982D99A94F56C2F1FAE3C2F9D0E4C5F28F2 +32F310890C6E7BB121155E98FB9A3C07ECB5BE84C0AF85EA74C733B1C5C2A1659194A9F70B770A +BBF90668568161EC68573C14D65EF8EDB89EBD70944C7AB437B30930619DA13684147590A15742 +20C33CE05776CA5D937E64BC53DB571858139B6BE9060DE1F7AD9AE70018401CCE005A021270AE +BD9B9BBCF5F2684C58B74AAB4A47BCB7874CEBD951B3F01AAA25BFB700C90F74DD13475F319CB4 +825754D755331C5ED795ADEFF31F616262D0445C7FF7D13BAAEB1489F79BED733FA08565549593 +3D7594CAA3EAF7D1ACF3A8680CDD8BA7F54C77CED5FC042B5CFF16B3797CBA117076AB8E168F81 +E1D5F777CE0FBEB394AE3F151B8E68BFC81C0EC19F7BF34C26AD2B7D9C3F35CD3B80061906D81C +D1B1B6A00CAD92E7724A73DB595999C6F3FB4476DBA3F23F9250848CE49CC5EE6C5D4D43E2055D +8C9C6ABDF44BBA9B53060644D1AA195DBFCBFB950DF5CD78F114A542A30167C130B7A8218EC0B7 +46B855287BB3E443B73FA65641DFE961D7F994FD0C8DC907698606824673D9305BFAF4FB3C8593 +2567075961947131FC4B7317518330513F120EDCD69F41BBA97C956771F0B9A9E021CFA6BA23EE +80589FCF56B11B585E39A8F361A098FE53436384B9887AA09D3B03286A20FAB0343B4E7746D049 +5CD9EA3219A84E00D22E94241CCBADD7C9820C94CE7BE8F8DCEEFC95CCE179AC9BB059C5EB241E +4EAB2E047B7ED239FAC5FB9A7E5749B998288D2B66C92733D3D3EF33AB944BB6D29F0FF230BB75 +A782E31077C7CCC48DAA774E9BC5D3D6C1F541E721CA970EA12ED3837CBA0F60BFD7B96A11156E +19F70B41C42079406D11D123713A45372B84DAA4E0FAFDBC3D9B57D280241E203F32C5EAD3A1DE +78EAF1F119119A8800B60F70E2112FC83679B786406C9228CD39303C774F21A364667FB614513B +62DACD1281343A4C0169F49935AE9F298023E9E29926665C7251CB81000267D4D734AD32760E10 +BA561C4482AD824419EB1119961AAE25716B225B558953D29D4B4120CAAACBC9445D8D97A91A54 +9D2AF5B564BA2AC5FE3379918269790528BDCF9F2AFFA793DD70FB4B518934D5F7CE70F46662A6 +C9EF4403113D870C6ABD164357F5CC15E92198B3C0223DF23F5D142BA0C2394520F031B855FC0D +05DE095F684F23059EEDFB2ED7B84E15AD359A496B8B09302888EF6E701CDC96FF3EFA26C7AE55 +3691C1F9CF5D61E3CFC2C7744BB6E93A41D666FD9FCA942B5CAEC195196A18324C74EB014E962D +3AFB2973EFA1CA67D8F902F045C62EBE1F7FA413FDF3DF4735C4E31198C58ACDE5045D650F1CC5 +BD75516562D6ACABC024F880D03DD3F2C05220FA1DFB5E5F0D95D0A9433E570EFA39F2469782A7 +B7A235C6F3AC1A9BB319C0E75D93E9572C61685A285A52B0EE46416203354B6974AD1D7181D619 +1CE3E59A9E87E9FB6103323D07A6B135DD7D2123F21417178F61445BAD20CF8097B5292C1B50E1 +FEB0B865E2069F18AE85228D0AE9648673DB2BBB296A6F2FAFA563577E83A3C5F1276D35222CBF +9239823DDDF384E2FBAD2DAB019A64E6FDC08B6AC65CC45911B8F89329C96EC95EC836A31AE8ED +13E2AE96A73248CA8C5684A1544531C5BFFA36135292EF49EF841440A6145017695F8D4D68540E +9BBE99DC012BC7E57727A60B29E0BCFA5ED706F3124524B91CE7C7B9836B7B8F3BC4130CD74E06 +65D720B9D8F8DA21AD89386F1D4D504C225FFB30CDFC5ADCB04BEBA03E5D98401C09B699E86985 +7E40095479AFCD504CA4073AF7AAD68DAB026EB88F0B8963A88189631C27320F1B411BE56D2191 +D9B6E9EA8954A1A357B35F1C090CA27030DF9C2FDD2205F289AEE8F6D9B01C95D9C194FCFFE1B2 +E880B3266995DA9BA3074E2B480F2C71C71BDCC4F18A3935B196AAD735BB89B90CCCF3BB8077A5 +74D437BF30B10581DC22EAA0A06188BD423EAFFCF728FCB27874EC8F46A56B11271BD953E45D92 +50D6DD1B5DBD0293BD16A3D5CC87E67088E33F53055A48840EC7B9224B0CF21BD1F22991DC776A +BCF537777AEDB01E15CFFDA3F482EC1557045432B1C828EA432D2787F4BE9A884954271D55D6AF +7A0B7D0B1F7A4276F78B9C0EF4B07BD651614D5B3BDF6A1753EB6F186D7F53283A94DD4F355B6D +D7432D84A9EC03255B0C0DE1B6286751781890DF3B0F92E4047DBCA0E09ED481D87E6E24DF9774 +5E2E776EDF0491CFBF9C6C9C922807935EFDD68867E2C2374FE68A91E8C6701B675637A0015475 +A03E0496D7207892DE34DEAC8493DC0A55221A3C7AECD3AE8EDA6B5B933E3C923140EE856F6973 +7AE2C09F93D9FC3D2059A7D1DC94ADB9384F2D318CD18F4A43554221F21754CC9975D85716D973 +543B402592E0EE0AF57B0793F1E072E3C1E249466A189A8117BFFC55B62743CB77712A88AB60CB +FDAA4919E224E983255EF944B6D9527E4D0F5CF9C97231E3CAF1848406A0FAFC0B7117FBF17FFE +E2995742A8A07E4A69E082455E42F2ADA6B9D7537187C2C9835F2AE989AB651A4985679252AC64 +86BC02E1A1E2515EFCF70FD2A3AE2B5603ADEA186B740A320BF138A937647D44D5A342B51012EF +0EBE566B149466C1D50BA889E52BDA76341D82B6D7A62C667A8079991DE0E66EEDEE59ABB0E9C7 +5746887BE3B4E7921F10A3ADA40662C58CF5C2564362FDE2C17E73737E70EAC2206D4431A748FC +F3AD6156D5AD504CB3461F2FC71FF8007053EDB3367D63A8E349BF793577E1C176EC52602430CC +126085DC9DA24B538ED73DE4F40478A5F5743890B9ACC165FD980D9B3678C9149B59A61A520555 +D553328EA5AF7C34D1892EE41F721B087F33268F0BD807F4243C6903A45CE4831AE2B0142D012E +DC076D02ACA1C7648ABEED3DA7A70F0D7A0FCC739CF1FCD77D6E765EBA4E9C759D422DA52826E4 +7B591B7D81B26DDCD2F4D06F42642696BDB5B061CE7DAE7823EA6D37CDBB8FE95DD1A1250D6A97 +56A4090549200C52F7F1B3A4CD6E49D94C9F36E06DD32505E3442B575B15738887E63025E1F0B3 +4DE366420B9C073D4D15EC5D9CC9B0DF0BE4BD62BA3FB4D741063E485257FE5CDBFB2371AEAEFA +EBB5959271D37A62F531EDC765A09EDADA5FA7AC709A7089243404854162F044FDF75BFF4A4193 +E084E6B0DB421D9FC46B90FD12BCA360CAF67F3534914948FFACDB368C3B62E4A14E59EFE1BF13 +172ADDC299839DD5F00DCC9A2B46C3E08DA3E043D75695C9CAF31ABFB5D2A0B9B11E2D291BDA08 +E5850CF9EFD2214231F8B56FD7334EA299A11B73CD2CA502B72D5CA3B40D9E0AFDB7BF1A2058E9 +B23B4755F5D52EFBF644B062D023D3ED11DE57212CFF84A4C84A7D9E3144F4E37B6E29DCCB70CE +065BAF6E1DB526ADA8491DDB8794F696344B9E1F9146AF255A19C4FCE9596339DC8A861A59E276 +2DF56A685CC88BDB70685772BE071A79810B80294A46A817A4A0846C3CC359B33A44DEB241D1AA +663F1EE17877B6695544F8F54455E0C01B3D9F9451C124E6C261472078806950EB2CDA77255048 +63EDB25E5E3D847109A9048D912E653920EEF3B45E7517BB85966BCD34BAF0F584DF9B5FCAD55C +BCE909A958201A46F212B0DA06C4D2F3D2EB3E4155B35BA904D5A0CFB794772CB135CF0903C8AA +306E2FE43EC6AA5ED9D67E230B2749990B792EB8B12200B06C23874130777156F476D9BC89C247 +96579AE2E918C7432ED73734C90689476D73AD46489C986220933E72EBE4C3599590ECADC82535 +DA6A13022EB7AB39C074740FCCD088BF3E552C161F13FA2742E670F904B509B59ECDF6D5751C1C +53D331A0F858A7F912A49320B9166F5761B3A19957CE14205667620C6750E2F21A01C5E7213A90 +683867B277A48961BD342A0FF4536C44B1F613F87F82722B997773CB50A1765C374E8BB31EEAC1 +BA630B114881958F817D4D6842B12214315DD8BBF06025C1E592C95045F4D0C051DB89682C482D +99A726F080B13BBFC4E3B4EF2226BF468CA1A4BD5D90043390B48B2BBD48C7A5B1C6F8E12E9817 +C5E1201533FDC770B20DA7ADE45D0AB2DF3C226221C49DEC77D90EDB9A6500740CC519CC3AAAD0 +CE20F970C33E20D569F6973E90591D5CDD7FDF6F8CCF50F6849B508035679840A2BC0E178160A3 +18E10032C46AD22E0182A10227BB19B0E11B25B90C5ACFD4E31B19E8B80617418CAD2D380A85AD +7ADF521E1C987845AA26D2F82FEE100F0B56EEE1E3E8E66E49AC579B7CAB195A1509185EB2C27A +9CE89868269B57DBBBCBC37E91B47EF0DDF1DD8631D06E30539A3AEE9D2FAF01F3DDABF7F0FCA1 +44E77B6FEC3ADD212D91AA90C49F0B2F30784393AD8048EF4A2D8D39C8DD874A6CCD020FA83C0A +8EB2E191518E7EACA92D1FF7AC6807F54BE57CA2F43EF026566CE01A586E35825CEB3BDD845677 +AEE23790E01ADD7BAC9AB2E0393AA6F09288C44D39349AD2EC5345767837B836BC967969762F81 +263E99F43CFE36803982D2884C16E4CBE88EFD78DF29E93C97759B6659AC8D60EAA826B0378244 +387FB58024E22342F06291AFDDAD1F62E94B1303EC71A83EF25B6B2521459B2EAC0A93B5EEE1D4 +38ABE6F922ED5AC3632A298752C09CF53B00C3E146B46AE7127C6ECE26197D154579AA0D58F3D0 +348FB98FB4526A1C4CFFBFDD9C9BD50E154EE1181C839CE617B07F754EB91F3F42EA8ABD4D5E97 +D89470BF53C270BA46A4EDEFABB033E53C659CA5354781068D96EE4CCA41C81098EB600C29C9CF +B6C699AABFB4810C1F16391E49E27676FA6A6C0F623E60D921672673EF3F5C04468E99C784A96E +5D75AAEA072398A180ADB33D180694E34BB02644C9B35A90CCDD36F816777BB1659F523BBD4646 +569667155D23AAE8FAC78AAD66F9E9458117C7E4C113486EB5582713422C235B2FE1AD53EFE924 +23B07717DBDDE45301A6A3A38E7D613761B41376C8A509421C09FC527525767484DE1D3E3B9A6F +9B3ED1B0BCD55BD67044D543AC440142A97920190C7A320FC9E79E031F1C631270387EF7936504 +2C39E62701DEC4C7F6DD5AE496CAFBE1A2343D398EB4B8C269811B92331C0F963C1CBD7B39219B +1D69449D26BF700F08868D6034756BC6D537B2E956F00D978EA32B4A070D365AA8FC43ACFDF5C0 +26F8EC4D37CCA52EC04931AD13E41565BE731A358D4F9DC3D7756FC8FD0CCFB4CC69D200A1B5FE +C375CF6B6CCA168BBD5422F86FB7AADAD34EBC6D99949B95EA151B4A6CC7F17F7BCEE3D93DA815 +FF6DB7E5616B871C09AB63C2172CDE9A681666BF295338042E393DEBC7BC9E568324D3C805EACD +BD2F17C2F2197D18C17CDCBDEC3FB00C279F1F276CBFE774825D3190588BB354BE1A1715B6FEEA +36639A014B92AC2828D715C967A08311F25A972B4F698958C27C92A6C17391305D675E4CB3B7EB +4919AD52BF00C6DBDF1C4B8389C0AE1C284EC9B87CF6D82F93FCEFBF099546ACDF11239EC8FA09 +A74E798F49CF57C8584FBF1120419C86F37FCEDC42D428651A2A06EEEFA77E0AE765DBE1F491E7 +E1B0B9704724C73B4288B7496579FE8218DCC8359E2E4D8DCACBAA153534517233DCDA020C60EB +65076E3B03FB14FC6A4BA5D27F4ED690FD53BA9C3AA1AC1742306C4A2DF714EC53963727F5BCB5 +34D55A4E5FC0107E6951AB54A18FB4AB76D3486C9908E43D9E907548940ED94D1BD1E202D6AC57 +3E36C3462D1012040CF504C9B6BB24D8A0BD8D9DB92D7DDA0AD1C5024736FE52D4EC9BC953F8BC +64C2960DA871E9F86051A2D1CD1A2C504738E7CC74E3A691416CD52E883E4E2A8CCA27568D55E7 +FB7E0B9026F512AC33B7D9ECA2A1FE5C8D841C7DB83C7FC81FC4D71789F8774EDA13982F0FA574 +2E904D49F3255578ED3183267E6EAC88621DBBE8B8A648A0B9DD760550D591505666587C2E5982 +11AAC620666ED3C49358212DCFF87C81087A644FDDE0E83877E7D70E7B4D188378ABD936D66CD9 +2A01C0E311361DF59C95BDB8469F403E6E7C9FB6F6FAFA9D3F6853E659DF53F9B38DCA1BAC1CC4 +75527B6C2612B08286B2A32A43085712A4A46D560A1C8635B41EE651A145078972C7CC9595A5AF +07DAE66748E40E662797863D2121C498788CBB72D45EFF713685B7F5CBA98B8843B6E0A2C0948E +2167A2BAC69EFA89C20B684A8BD009F06E185DC8FF83C2966386CAE054884AE575BFC3C4712AE7 +E7AFD9D063AE6F9C1FBE73634FAF559296A3BA881CF1A04068170E037713A1671BB74182C1418C +4666E51E1B846FB636E1C0B7E033CE953D9EC9C6A409A10B6880FB8F56A95E4BA9BB50A78D8815 +3CBEF53EF43A92ECA0C1732F78B91DF575AFFA445DB30F4F7BA3D994B63085C00F598974421A7F +24E852F309FD9523812EE91E56353FA1C8352E0D145CBB222D200258C8EF6FD3BCDAA358927C5B +033AB6A137CA4D102DCEA37F526C0E03136D843CC90916A00F9E7CE8DFF0ABEDBA89A13ACBC4E4 +9D37788CEE59A4ED2D50987868BAEBE336970095E4E1FD7B2635E6B3402A6DC0412D0D3177E22F +E4CCD28846BB948EED988C1E087523ABCF6CC799F10AC51EBC5669D8A2C9CA408E21F376F061E2 +B4BF6BFCB846D46DDAEF0C8787BF0E723CB380A8A8557C152994B45BDE0168DEEFDF7A898B0996 +DAF3242C8618631193A9B6F02BF56C952F881D1371CBB4D14AACDD8B32FFB164124FEB029FA55E +815A00204FA805D0402793744A35842B8AE2D048586DA895FBA370B0FC5988148A540B192DDCD2 +F9F014CB70691BAF06E4E7AC739B85DC5EACDEC31F0809C29A81BA21A306AB631D139A193E1AA4 +30DC88C198C3261708DF7485440E11E95D7AD3F84860C6DA7BDBBDD19A977821498B51B112B239 +7B2F6B4A3A05BB228D5307D245B04F5F0C2FBA211FB0E1CA45E7BAAEF998F9F8D92576651CAB26 +561EFA5A6AB494F042D174329F29C4BE64F53CD84176FDD8D897F59F5A1A96E41D3C851B6DAB13 +F3CF8BA3076939CA5717E51C5D55CD8EC52521206BE711940F5F072E725A00019463CA46D00824 +B1D4A13420A6CCFD2C90D4D33BE11593060B4DB10184884EA5DAB5EAC42D3F2D74CCEEC79A452F +4411C6684C718CF382C8EEF296F523BAF0A9E5843AC47725891777A588D495E3FB56216DD3D1AA +553AB2DAA1434AE382D17CFFDFAB1FBE6489F1073B03FC2F3B12CE671DBDD64B67F0CE8BF79F66 +DAFF441B248D97ECB83913947194E38C5BFBD3C8690AD6E6ABEE6FDBDCA078AE7E0DD39DB7737D +2B6E058BC5137671493FE69950BD3928B7A25F311DED20504386E1562D3ECB8CD3D89B5946881B +668FBEAA0D42415360C80863A02A1DF94360DBD4743285000A12EAAF1C7D38D5D87406E4022B72 +41358FCCF0CA5293937C431B11631A1B8A45071454FCAA61F4B7F2D37AFBA6A7C79955DA0EA498 +807BB4475A800344B41E8C85B16A2936B7266805D622000894CDADCA825313B785CA6F3B855D68 +B77A0E1EE8D69337E6713B5FE1523C5EE9AB9AF45A8BCBF3805C3D5CB7FEB5DF73F83845EC3F6B +847DA04FDCE97B0EA55DC3D9A4A6A88D47C83F3EEFC4817F8668E891E2200DB4EADD63C3429C0E +989E1EE73D7584BB51D7501A5447BDA48BD804B5357E88EBA97AFC3A64984F5537BA92218C1196 +FA30D31C7B9DC79AFAD00DF7DD569FDE10572B90DC50C9D714BE04A694D6792A1A8C7BFE94F0F9 +AAFB6433C537F0AC619449070D995C3D29690AA3C87F792FC6E809E493D458528434203947B15B +38E5C6C043C41FEB76C927E7A0A897CD2280FC74CC0201A2161FE3F34D8774E2C23002738B8435 +B2830B22D7B71BE6186C2997A068C1E0614F224A185A86054639B0F9F92968D6C08CF1BFA0F9A8 +71976E20E5623DCF3A7DA263253F1B048F11D8F51BC9746F77239D06A87CB4E8962E87445AB1D5 +0A87061BEED2B12389A7663DEF9135EC4BA38BE9049CD2622CE4D0744D96148F41E4BF57AB3CE6 +537BB100D95E72E4E027BEAD8EB560A6D45D4DD293D72091D33DF857ECEC11BDB66518A9D4BB2D +D5E2039520CA6AFAC5AF34CC30D0BB175D092F3A4514EB3DBAEC636A26276EE91A9C4378ECB388 +726988AB91B8CB5A7C921D98C812EFACE0280C064852752A606CEDDC8C1EFE073A03EC4D4E46AF +C11A467C0DD98425A2054135E1527DD0CA9BA776116C1C0D20D220530CD821EE54D1A2B5564F9F +9F8585380C0F3EA55ED2A4B79904A8BB62D06A7994BEEE5023D0DC6D4A8116466C832E9AC0FFC8 +526AD0F0AE3047B29747C70208AF5C4452FFC2B7B284E329B608EE8ADA34930887D0320FA207A0 +38A2FFB2E06AC19EED941F5EBEF5840C0AEB62EDA017E2C8AB3B05CCC6CED2F5CC5A4C3DBEED7F +A4C40674EBA1BDF19B7D6D345D25D059261FB2B52695C5B25BA95F2303DAF93F1FD9B4D6C8BE89 +460B51137E336D8054C8CEF248BC32D3337F6F4BD7F5408365BC558B12BB80EED08731205B8530 +4197CDC5BC321E749BCBEABA6249E3E112DD4D00ED7333753280056E357D53687822E96273B647 +E711B6DF782785B89D1A6A60BB3450EF233D489B3B1E6C6C494803057FC49F24EDFE85F983F1C9 +11D777656F0F9E5249E76DBEB9BDAF80B19C97832FED05E1D5621F1FCE67B997FF9E5E517247E8 +6D6164383577A67CB831408460555BAB7694158A03963DC08960644B33BF2D6DA4D07B51B1853E +1943E289CB2E0AA8638D484D04B8B445380030995DDCB89D9E284E5FFCE7B84E84D8A3659A7352 +1DCB6CD0933BC1D09CB40B5873533C75FF605CAAEA66292EF8AC165AA87BB40605B957DA4A1382 +02471B2B4996F49CCD63A90430F87DDBB834D2348739FEE7A7D418219A01C1DD78C7F1086DCCF2 +51CCAF920055E21164886A126BB3BD04AEB8E167119989587D9CEAD158B4F7DEA41B753AB7272E +F86629EF1384BF523DA3E3BE98AABFF6C0EC15DD0F3F0EC6428A442711D30544285A0E9361DC29 +21604A3D3F92274B8B3D83746FB74EE23F59267BE2B398C1ABE31E79D04C0D16BC3ADCFFAE1F32 +57874FD9E72E47648BC78D0A50A9068A156B356DE1CFAD5EF9561F937E8B89A61554691F867219 +23DE5338030525CFE69CB6FA7ED3FAB434457F5F14EFE13E285425DADCA1D875BE2991A5BC0B15 +0832AB6E54357570BF7322C2E599C63E997B9298810BA2B4C251A25895FCFBFEE32CA4E1587519 +A0D24A37A82A9F3C2DE6EB73C720CA2AC1EADDB254791F96AE462480532BA0718F79B9F28E05C6 +DB676FC34BAD2B4B8D0E27FFBE3BD1BA415A45696703D4D9AAB848E1324668146C74B6BF790ED5 +87381D8D1F9D1EB8FFC7A01456BCA2F3BCDBDB52A7F84E6ED43338B0D5A03015F38F231E40D58E +B5E89159135E10C51DE15186EFCCD0DE3FE9B364F1C1BE7F55AB6985967BE420F24411D2E47337 +11FC708CC98626188021E3BC77C64F19CC99D185486E1166D59FFEA2B28173907056C0475D7B08 +36FF54C174102BE6ABA080919D72DB843B78E1AF0462595FE8604326883FEF444C44DC6E90BC8C +839AC3C8FC7C03E0DF383B392DE072AFDAA382D163E0BED591C1CA2EE2A95F0FBF359F54243E34 +780A2B98667BF6AD2F5813CEFBE3DDB6EAD580358052BAC1560AF8D549001A834753A7C4AC6704 +10C5E764466A4175F0F96505A2652A219318F557BFBA8BD2283B429F17B2167275FA6E2BFAAA24 +E982555AB10DFB96FB02BD3FC392979315962D9213537D119F81F8FBC490FC5665938941DE0CA2 +F7E7E4C42903D36FB6E52AB2E8643152FBE3777FEEC16B9D99776C55D33778C9D8C41E1B95E359 +DD70C2989268C62C7455333273C18289F5A34FE016ABB45C90F81669EE0A49D7F2CF6405BE3093 +1B9B2EE4F3D5035F3DD68CD85CC8184FC78AC8CD2FAA27FB8D9FFEE4BE7BBDB5AB6F79C784A291 +EB3952C2F238036D38B4C05FBE9893F01F52FFD88BC5D23E0B60AEEB93CB818618BDD6E7909936 +4EC04F7AD1DD8DFD9B3C7FB99C95A2346130D4FDA2883CDF1764B0B0EE74F60135DC4BEACD303C +2846363A5601640BD79E14D0B735E4878F91D684BAE2C92F1399F23AAB4E87E137FEF91B306A91 +B2CDE53DFCD9B95050937603361D0E3AEF6A7314AAF469E6F18EA01ED7A9967C3B11AD8FC0741F +94B3AD6F25D31023621332677750F88E96F93D97B0693E55909F1D1B508A3E42E297A3DDDCE3A4 +1E0B6161D9206CC5A550D85F6554930EE05ED34BFBB4A3C222E8D2105D31B2D24FB9E787ADAA2C +44D0B81B468DDCEA309A79D9C3490DFDDEC8C8B352CBD2F5C3E31533FD642395E7DE7806D32C1F +F82E30A1E1A30FB15AA1C2B06A861C9E62E4BB3FADB68BCB9D692993A66BEE02384B583019A542 +B791F99B708CE57FF9B030FBC718C1C686BEECDD691234E8FF10E3289A44F960AFB67730417392 +96486365686B20B45758072904C62C1BDA1E5CDD6771484947A06E1A4C34D05B5D7DAE0BECAEFE +775ABD87AE64607C9FFABDADBC61D3947656F149594265DC807D25FFA24978A6B6EBBA9A0600C3 +98FCE2DDC218D31652BABAD4179059D6F270C4D568350F1D125F3B45612F815EE75F012DEF5D8A +7107380B12B5AF10A5704A591BF15ED59E05782A676DAA5724668755D1331BDCFB4F8B83D9DFA3 +C679D5AD7EABE5F19437732C0256EAC1370F0C7ED07DC2957D06D8D0BCAD66D1DF144CAE065550 +87E2EE66F7696A15BB7A576D0017980DDA8F73B3591A234AC3C1950D8230E85BC8AC977805F250 +ABF14AE8FA49E02ED406EA14D482D9832E8DF7B0397826EC5788F56A996C1A8818943596EE39BB +BA38B71FA7BD8822048E186370A067BF450A78063A10538CBFA763C11F4002AD092E486FBB8080 +2F5FA3C9714855410872B28BDEBCEB7A0368997AE680BB2E5B38BD152C4CA13DD6D4D413F83B6F +F14AB2B5CD4F5134A09EEA827908518107E4205C589F79B59B73871B4D98B861C5D1100EB030F1 +7E7C72F2264937A01BA25CCE51BF51E90C80E1888EFC6C69FDF175A4716A24EDAC958DA7C7C0D3 +04435BE35C5D781CD1E31989B4E8162FFE54C3E8DC90C9F51E647EE8684585280CFD3CED4E3F15 +AF2DEE3140F709FA0A710A3BD28537C800DA048E45ADB64407F795212B10ADDEC824EB6D0D256B +0308400DDCB3EE2CCC555A7CF8899065C6134D810FE328BA06860A700B16614AA432507F12BF20 +A1BC1030832D4E2DB7DD545C74823325DF1605E986796BD1FA3F615DD1122B9A178B37A7FE5588 +79F4468CCBAF7B0BCA517AA6413FAC57405048D4E0284532C874882A03C0848B39824305A545C7 +3816F11719670F045FDD60964E843AD52B13F99E7999D450F27F216B0019B50335B3F0B385CC42 +FCA7012DF90D21830F981054CEDCDDB5CEE895AD3307CBD739D755E8F53683055E68D7EADB6007 +20BEEA388F572F148D599712270A19075FA681CA8C7BCD4107D7E13A20EAD58668B6D98FF8FBEE +D620A64B152E32C713F21E192619EDD691CDC2B753268155E06FF1E140AD62D39DFC6FF9D6D457 +4509D16DC4DD8F465AC3CA5A3CCABF7E1683DFD87A5A1D26E222D4BF98082532517CF718BDE708 +7458862890D8A0FB4057622362DA84DF023EB5D0E8DD743C376B60B85E4E6A5DFCC1FE7752598D +2ECC3F0487A0270BCCEC73CC88DE5341E78CA386B2E5FCD787F8D6197EB947E8A796D3BEB88CB4 +9F7A15E35BBDC56A799C1E466F5B5269628D9DF460750D9690DE8424F2F085C8441CDF5E96FA40 +DE228D16F2F6835E08B4CB51148E96E07947B61D9BD863039E49734E20EC66F104AC67CE6F95BD +3C3147101C2856806108BB204443C5737B05CD657A6E9E6A34911E1ED9BF44EEDC33013B1E6E7B +5B78528CD77D89C5B2C43B397550448566D0AF842B4D36A40719F16CB7A0BF3ED81B292D705201 +4A32DC0073F032146BB25CD42F278AC96F70E50000773A5EEF76AB2D63D4FCBC0F7CD968468EA1 +7B037EA26F594D618219AA2F36D051D318852EB2B94C7148DF7B3820B9A3A598954D6806070E34 +B59290476933113F2EFCEA2B5BA9619613431C99095705E3953123E87C02EFEDD7A340DD3D9662 +76BB7A44FC7D71CED0867354F2C1F29223BC51EBE63A781F5D745BC062684C3F7B05A8518A0973 +9A11E0F75D22107525BD8A162FF0FAE92CDAF5E261A8ED56504562017A61982CB7F127A2882467 +BD322B21B4992DA5B47D19E9737DE98DE14B57BD39A3E93F06D5D11AFC95AA6F54F3BABE403EE0 +37E6715EDEF454EE03018509773DBD371506427FB2E5035906B5678B646D1074A00E8A04707F10 +DB0C4CE4FE2BBD5AF480E604792508B3F240FABDC6EF804F289D7F0D9032C66503FD5778D1DD00 +73E50BB01DDB460EE725F887C04C6452865E0707B0B684E9683ECD1E552CA1B06A86F057B62703 +2249DC43A6C23A8EA0A6928D8CA80E1944CEC310E236F123779D2ED0E926E3D49CA46A5CE71E37 +438BC7428F6585E53357E05A7CBF04736F8C964104D34D59F1CD1D80335BAB65BCDA2B37AD71C5 +1A0F68BD9E75A8FAB970659DFC4AACF8F2F1A621DFB4EF0E877646B7C5211D8B4BA685A220DDEA +EC72E78E36F15602EA0FD4D0E160C8F33DDA601702D1F924CF6AFB422EC6E7D891A71405FC39CA +899622E56EB2D566C35BEEE2332DE82DAABBB29B40CF9898AD03C0C501C94FB11BC4161725305E +088ED0151C8D5FED5E8761535C346A1DA9D8F53B43CB0368D73F32197CBB78075584272319C67A +9EF51097CD6C7B1B5D0E6B2769B7A1C0C296A442758181EF9FDFB709B491691785F2F58529C234 +39A83A8734758E8C6372D3A804F636146FE193938D291A1F7C284FB237CBEA15734E06FB504C7B +ED46ACAD1FE07D76A9D2677A31A00723D2B1A16A4C15DD9B13021E1FDEF54DC2F6834486276405 +23F4DC71179B2E7B4562163B364117551395E049E63B892B0D072DD33E609886AB89020C6B5F3E +22A60807A45FD784F68346214B000D082F4DC1E5BAEBAD81637C647D088D8713692CD9FFAF3637 +D82207EC84A072F58111A5FBF898A043DF19966EF3440F3AFC95FF631D5E6CD44184FE2AEA877C +274F33CAA21C765E57D0CF7A9DDDC8C3D0F9A83E57DF2DF07943793B9F54C6802CAD037705AEF1 +BEB47465BCDC9C4E708645BD5A0BA19AFB179A61740BB5993645239F8EA31D7945B9912D86BE1B +1A34E5DD300D1A4333F5E59410C24BDEC463CC483782AC473983646D26EBC541C729A66400B269 +E2A4E334F45A63BAF6129ADA08D92EA1B07472BE3366204B4C53BC819648AB889DA6DBEC489FAB +42CC653185A5BF35B9CE9BDDD64615C132F3CCD1C856883FB2C19783DF1E214C3C362F357AC598 +131EACBDA621202D3BDBEE78BEAB426B8DC20FB0987FFC085B2503F8EE49A55DCBB7F4291AA801 +30B830890F182F7E16B1D0B57EADE547E2D23AAFAB01A18ACC680A65B8D0EA5D4AA52CF377A880 +CFFF9714D1213E670F27A786649229EE073158C08CE2A2AFE81B7828E88D6C935FA080A50029B7 +B9826470D04C164CD76207FD0DF81715989C94E7896DBBC6836520B31297DBA9A7E52149FB0C26 +37253BA66EAF2A2878919C9E7C2F87292056C630B94AB8B2ACC214FBDBA504171BB3874C52E97E +3FBE03C8BA101B131ED4AD8B5FD780CF7178EDE785B51967221E60800ED82ACEA76D9C573159AE +55C60D0073AEB13A9C177ABA8E8BC1683328EEA9560AD367993DDD474BB5FDF98119D7FB1187E1 +9B7471125C1F290C7BC44F25C3EBCB2926456ADC264643CC176B49A2BCF1EAD44DC37E281BED97 +7DAAA42A8CECD69512B3CF3E37A429AECB9BFB241E851108DD6FDE35E17F167AC226E1C93CF377 +8CF20AB8F0E864DE4A85BC616480D90F363A242C2A7C0628D4007348737FB8F797C1A0D2D20E71 +2C4CA39400A6B2D7712B5E8C8D2BEB99E5F45B8D45DB0399550E15BA367320847B2DF78B73B09D +8835ECB441CE51D2FE4F62076E7477D0EBF1647B12EA5410955C103152C4BD18CE49E9DBDAF52C +A4850476EE84A64368C679C736DBFC21BC2164A95267B9BEEE63D25140FB6DE726A452ADBF33CC +BF30FFDE50465E6DE93ECD351E631CFDB6747F43D6B70E4FAAD65EC20FDC3AE70465838A342A23 +3859E8DE63E85D5F8444889B241205BDB3AC3090D4966B1CE1DFC7E91383DA0101A0945B6F08DC +6F86627F21AA8800800E5985DB98EF07F43E6089978282D5891A58AE58DCF932C89B43DE861F49 +11602AB16A34C3BC12A50F44F54C7D0649035A784BB39C6D8CB6E8EF39593121370D93D55DBAC2 +AAC3D5D8A7305A4239B877C58ABCFFA4D28860EF0CE38F86A994865CE01B0DFBB1282DD8AC4857 +13A42F0FC6B8C8DE452948C20FAC90F0F3F99C18A89A4F3604D1C42489AD8BCCA31DAC513208F4 +844D7FD58FF557D139E6682D824D1F9E5F8CDDDF77EAF5C7E9A7D57A0CB6464E06A9779C6B8968 +7EF24259D75C18F86A23675C0B893375E2978E860EB0F3FA10590D9483FA57BBEE813EC53480FA +7F5741665D0D729B4D5B5692B20B18F8891ADBE8BB5F142991B2CC70EFBAD8F29EF57D09975FE0 +5002327F323097AC200FDB2875E5C67E37D06F0F3E5BFF55B136BAFBF3A8B9FD8CF38963557C41 +DE3DE497C9335DF5F1EAB360720E8D500BDB5AEAB76677AEF3E778212810B2697155BEE6A6BEB3 +A3EA8CA904FE65232DF24A9039827037589C0931D320CED5AC14CB5560BD08DA56CE9AF7F2F99A +AE71CFE86E75D5A500163597BA87FB37E2BEE9FE149EA4FA8585DDAE567621B56CB44E611F0D84 +E3D130516443F0867B97AD0C22EB46C42055C7BBFEFBF755F08F4C0BA7578B7A48B2FE61E2307D +80AA71A772908336CBE7AD3E239B798B3008C4B7C98FC752A1FB2067A30FDF3B6EDB40BDF7D273 +AF1D2BAFD257E95D298D44FFA5A000485367E175BF45B38C92E57E94CD818A7AA1027B0D2CDED6 +A2DF4D6D9D86E266F0A0FCB4CBC762DD6C70D2D3FC94B10BFDD01968EB43B90EFA5B7E0524F614 +6B9E45CDF618FAE8B683574220C2B8478EDA9C579DBF6598809D15DA144E760674516D1E5B40E4 +6D9A188AA347E71DC5872718C5A2647E41CCC5AC032C2267A9B6A1A81447535E11E05D1A5604F5 +4857C4B22D87A769AFF5BD3500E5077711B03029CC03032DE197488EDF248EFF3CBE900EA4FBE7 +6BC0C67423BF6E2E3A2B4F43F859131657FA86D9CE26C4BB1EF143BD5CE7D0CF2494381F388D04 +CB2ACFB70D42D1BE215AEA9F01B3221438FC22D0F9F0BABB70A55229F86A728010F8F4DE07DF1B +D119039DE3AB9FC066F6EB045EBE4A585AADF95D4010035C9C847344135D79983E7E3846E947F7 +4C694597FCE7BD8B87CBE1CC540B9487B9E9FE05095F28CD40D6D5BB4D237EEB854777F4137795 +3B3B9DBA6C0E502348C363E91F944535236CCB70E716F74CE907288657E901D352029069A9A096 +F6C26440BC3E927783AE686FD3424CCD7C5F3392B8E38E2ED9B5D13E2F5954E6CDFD802627F7BD +B7BDFEF21F7DB0E99454F959A07F8AD3EC47098AE22227F1C3A8F0E7B7A0F9BCDA7BD0E1FF48CA +2DA343FEE8072DB75DCD0DF0F740E9B2762BB7A343146F08154F9853AB26367FB302C6D9FA8CEA +78144183DD40A5A81B9DEAA67EAF4F3E13F647C093EAE3EC513752A4592B59E5EBE2B0AF06A62C +639771583BAA5B4D5056CFDD84A88AF94EEC5F3BAB2589248538BF431DFBC92AB5316B15C104E7 +F067480AC9A3AFF9E4FC8B3930355457F9112BED049FD0EA88AAC5281D81C1318039E2441FE795 +7B94B8C1036C6B036F82216A39C7B387806DAA4CA282CCD31C1DC278F617EF89161BB18F305969 +3D4A3886D87A55993D433F6F990F4CC19933494723538ADD1F4A182C3D13C3353287C4CA65B8AB +87A03006781B3B9D29A76BEDBC20CB910D4C302F590FDCD7EC3D91C3E77C917DBBED1A009ACE2A +ED6F4D117AC5F0BD32F10BCA35F900205FA726D8C69783A3121C36FDB90D357DC199107CFCEA90 +94764F4ED8C8F07A0D75C0C9A87CD2647E271D277C42F48EB8093F19425A281531803254DA4B7B +F71F65A5E2083D477EB1F5774EB16718AAD0B5EBB26127362FB8990FF7D187A5DDB089AC75FFAD +4A8AB76F1941226ADD2B40765A41981F5F26B04834026744E339B7584869B97453A456E64BC9C6 +102258ABB51166B88BB4D5DA711C3AA5D1A539913F5D12710DCA032F1B47FAD20F3760367D5220 +3913471072B5E9E639E7EDDB5BA60FEDC300E33CC30A2CA1B164A8803D392347F512FC2E469747 +A9CD0BDA52634B7A277B0BDE91395008C87AEDC2F34F56B589B7804AE2FC1D08B6A2B0A32DBC8C +F9A99F7E1DC86C5E667781B7E612635948CDE38F8D62281919F98B92D6252098D2E4BA2242C3A7 +37C357A91E803BA08B83E4C833C0960976543E0268AFC811DA9F2EA01261A02FCA997F9128DF6E +B13BF4E28B62A9DFAAC6512893DB0248D929B123CA28FD16AACAE181EB80C9525195006D00E52E +1B501D2DB4F65F457BC9FB8A578EAFE14AA7799494855D903239546E8AC4EC35140921AD7DEB6F +E9DC3134020AE6846FBD31EDBDD0C6294BF0FEA3638C9C4AD7E1C117BDD0382F9E55CDD83D7B35 +87CBF490B82B0F5D9DA61ADBC52EFCD404820B63DD0BC2058AEBD36D40FD43C87E0807A5BF0E78 +7A040C2BA7ABD2276B72B38A12EAE776ED08B02C951FA24816DF46DB7186E653061DE8BDAF4BC8 +082E650DFFA1743B20265EDE424982870D4F988392EDE6133DE2A7EBF0BC798872FE69D7E381A9 +6B8EBA73E4F94C1DBC3F0638D45D19A9979F4157D6825F79048A6E0DA1334F1E3455F2401968BE +F2B7ACDFAC188B1EA16801732B624A17C1A6166BB6A3618E895D33EF4E6C579B86EF29EF4D41A3 +FCF4FFD07EAFEDE9D21B87AE6C793561DC3CA209926667C0EE13D19AFBE2789B45F48C2C2F2A82 +0E4A407B17C4116B8DDFBB719F2407DF3E533E5EAB1D83A8EFE84126D241BE3F6622D9A5235E69 +3E453F2DE724E6DCB49A1144F85D4AC705BFD2810808C41AC534387F1F4BCFAAD296606295FE6B +588D0568D4B5739633E8B67457257829E8136FE1933F8A93D47E2DF36300965D251FFFE3332710 +9AC92CA5DB0CE7F3C4396D1E8B0658905F0A1F01E039B7D56A17FC61CAA590ABEB807D1D81E065 +0810BD7C6F0E10EDDC6513F379C858E49FBCFFFA70044E21B640251C7A29BDEB12467C018591BD +442D0DBD1BFDC059C953F21B64435E0E179E3270B4E0FCC399BAA2C83030C26837B95CF9407787 +A5CB823B7CBD050523E4D722C3C1C306F2ECC67AD061C256087E2590B3D497DD131DF3B63BCBBD +E9D2D4823F80BC48BF1A33560619302F0C57F4E770846DD38856F2D086B5154D1D6517474E802E +A70A9F2724FAE36F09FD79D7E1038B6BE7C89178CC4B4014C2F032CBEBC04999E555D10630C374 +660F700E2A0EDA25C07F9CC6839439DB10432D5DEE0B870F02D2B3B0A005CE638DECB624E8AF99 +D22399590DCB9F3A23F512B566470DA948BD614A37DB83B6A3D761A604E274AF9E3DF13F70083D +09761F6E75B191B836B26836D499D78EE030D98B1A33CE6DB5859266CCA3C2AC3A7EA22BA0FB5B +49BD18DF1E0C20E7B12D1A5F98E9DEE8728712899418D25A3550012CBBD18036AD4A8058DD7EBE +ADEEBC2D65B7A2B212DBF96793EF415DFC936A41741227A462766D1A7B45F5991988317702DA60 +BDE75A40E45745652A90C15108D3CBD188FCEFE43D642A69B8EB655FB1B3157D11A5DE9967A4A4 +068C1B09C65166B3234A88EF93E09F5CAD05D59EDA97F48E6A1E6B40BFE57A99081D1594D46FF8 +00D52DA6 + +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark + Index: xc/fonts/scaled/Type1/lcdxmr.afm diff -u /dev/null xc/fonts/scaled/Type1/lcdxmr.afm:1.1 --- /dev/null Wed Mar 8 16:39:16 2000 +++ xc/fonts/scaled/Type1/lcdxmr.afm Wed Mar 8 16:39:16 2000 @@ -0,0 +1,497 @@ +StartFontMetrics 2.0 +Comment Copyright (c) 2000 Bigelow & Holmes Inc. and Y&Y, Inc. +Comment Patents pending. All Rights Reserved. +Comment Lucidux is a trademark of Bigelow & Holmes Inc. +Comment CreationDate: 2000 Mar 04 11:30:20 +Comment For other Bigelow & Holmes fonts see http://www.YandY.com +Version 000.200 +Notice Copyright (C) 2000 Bigelow & Holmes Inc. and Y&Y, Inc. All rights reserved. +FullName Lucidux Mono +FamilyName LuciduxMono +Weight Normal +ItalicAngle 0 +IsFixedPitch true +UnderlinePosition -100 +UnderlineThickness 50 +FontName LuciduxMono +FontBBox 0 -211 600 993 +Comment UniqueID 5096730 +CapHeight 723 +XHeight 530 +Ascender 771 +Descender -193 +EncodingScheme AdobeStandardEncoding +StartCharMetrics 337 +C 32 ; WX 600 ; N space ; B 0 0 0 0 ; +C 33 ; WX 600 ; N exclam ; B 240 0 360 723 ; +C 34 ; WX 600 ; N quotedbl ; B 119 506 481 771 ; +C 35 ; WX 600 ; N numbersign ; B 20 0 580 723 ; +C 36 ; WX 600 ; N dollar ; B 70 -60 504 783 ; +C 37 ; WX 600 ; N percent ; B 10 -18 590 741 ; +C 38 ; WX 600 ; N ampersand ; B 28 -18 582 741 ; +C 40 ; WX 600 ; N parenleft ; B 157 -145 480 771 ; +C 41 ; WX 600 ; N parenright ; B 120 -145 443 771 ; +C 42 ; WX 600 ; N asterisk ; B 79 300 521 723 ; +C 43 ; WX 600 ; N plus ; B 48 49 552 553 ; +C 44 ; WX 600 ; N comma ; B 228 -157 372 145 ; +C 45 ; WX 600 ; N hyphen ; B 72 265 528 337 ; +C 46 ; WX 600 ; N period ; B 228 0 372 145 ; +C 47 ; WX 600 ; N slash ; B 48 -145 552 771 ; +C 48 ; WX 600 ; N zero ; B 47 -18 553 741 ; +C 49 ; WX 600 ; N one ; B 55 0 585 741 ; +C 50 ; WX 600 ; N two ; B 65 0 541 741 ; +C 51 ; WX 600 ; N three ; B 90 -18 528 741 ; +C 52 ; WX 600 ; N four ; B 41 0 553 723 ; +C 53 ; WX 600 ; N five ; B 122 -18 526 723 ; +C 54 ; WX 600 ; N six ; B 60 -18 553 741 ; +C 55 ; WX 600 ; N seven ; B 71 0 517 723 ; +C 56 ; WX 600 ; N eight ; B 59 -18 544 741 ; +C 57 ; WX 600 ; N nine ; B 47 -18 540 741 ; +C 58 ; WX 600 ; N colon ; B 228 0 372 530 ; +C 59 ; WX 600 ; N semicolon ; B 228 -157 372 530 ; +C 60 ; WX 600 ; N less ; B 48 0 552 602 ; +C 61 ; WX 600 ; N equal ; B 48 169 552 434 ; +C 62 ; WX 600 ; N greater ; B 48 0 552 602 ; +C 63 ; WX 600 ; N question ; B 99 0 527 741 ; +C 64 ; WX 600 ; N at ; B 42 -18 579 741 ; +C 65 ; WX 600 ; N A ; B 12 0 588 723 ; +C 66 ; WX 600 ; N B ; B 36 0 543 723 ; +C 67 ; WX 600 ; N C ; B 60 -18 550 741 ; +C 68 ; WX 600 ; N D ; B 24 0 570 723 ; +C 69 ; WX 600 ; N E ; B 36 0 540 723 ; +C 70 ; WX 600 ; N F ; B 54 0 555 723 ; +C 71 ; WX 600 ; N G ; B 36 -18 528 741 ; +C 72 ; WX 600 ; N H ; B 30 0 570 723 ; +C 73 ; WX 600 ; N I ; B 78 0 522 723 ; +C 74 ; WX 600 ; N J ; B 54 -18 558 723 ; +C 75 ; WX 600 ; N K ; B 36 0 585 723 ; +C 76 ; WX 600 ; N L ; B 42 0 562 723 ; +C 77 ; WX 600 ; N M ; B 12 0 588 723 ; +C 78 ; WX 600 ; N N ; B 36 0 564 723 ; +C 79 ; WX 600 ; N O ; B 30 -18 570 741 ; +C 80 ; WX 600 ; N P ; B 42 0 549 723 ; +C 81 ; WX 600 ; N Q ; B 30 -157 597 741 ; +C 82 ; WX 600 ; N R ; B 42 0 588 723 ; +C 83 ; WX 600 ; N S ; B 74 -18 532 741 ; +C 84 ; WX 600 ; N T ; B 30 0 570 723 ; +C 85 ; WX 600 ; N U ; B 30 -18 570 723 ; +C 86 ; WX 600 ; N V ; B 13 0 588 723 ; +C 87 ; WX 600 ; N W ; B 11 0 589 723 ; +C 88 ; WX 600 ; N X ; B 24 0 576 723 ; +C 89 ; WX 600 ; N Y ; B 13 0 587 723 ; +C 90 ; WX 600 ; N Z ; B 72 0 528 723 ; +C 91 ; WX 600 ; N bracketleft ; B 193 -145 458 771 ; +C 92 ; WX 600 ; N backslash ; B 48 -145 552 771 ; +C 93 ; WX 600 ; N bracketright ; B 142 -145 407 771 ; +C 94 ; WX 600 ; N asciicircum ; B 71 265 529 723 ; +C 95 ; WX 600 ; N underscore ; B 0 -72 600 0 ; +C 97 ; WX 600 ; N a ; B 72 -12 570 542 ; +C 98 ; WX 600 ; N b ; B 30 -12 546 771 ; +C 99 ; WX 600 ; N c ; B 72 -12 504 542 ; +C 100 ; WX 600 ; N d ; B 54 -12 570 771 ; +C 101 ; WX 600 ; N e ; B 60 -12 540 542 ; +C 102 ; WX 600 ; N f ; B 72 0 570 783 ; +C 103 ; WX 600 ; N g ; B 42 -205 567 543 ; +C 104 ; WX 600 ; N h ; B 34 0 570 771 ; +C 105 ; WX 600 ; N i ; B 72 0 540 771 ; +C 106 ; WX 600 ; N j ; B 78 -205 447 771 ; +C 107 ; WX 600 ; N k ; B 36 0 574 771 ; +C 108 ; WX 600 ; N l ; B 72 0 540 771 ; +C 109 ; WX 600 ; N m ; B 13 0 588 542 ; +C 110 ; WX 600 ; N n ; B 34 0 570 542 ; +C 111 ; WX 600 ; N o ; B 54 -12 546 542 ; +C 112 ; WX 600 ; N p ; B 30 -193 546 542 ; +C 113 ; WX 600 ; N q ; B 54 -193 570 542 ; +C 114 ; WX 600 ; N r ; B 36 0 540 542 ; +C 115 ; WX 600 ; N s ; B 102 -12 513 542 ; +C 116 ; WX 600 ; N t ; B 58 -12 504 651 ; +C 117 ; WX 600 ; N u ; B 33 -12 569 530 ; +C 118 ; WX 600 ; N v ; B 27 0 573 530 ; +C 119 ; WX 600 ; N w ; B 11 0 589 530 ; +C 120 ; WX 600 ; N x ; B 29 0 581 530 ; +C 121 ; WX 600 ; N y ; B 27 -193 573 530 ; +C 122 ; WX 600 ; N z ; B 60 0 534 530 ; +C 123 ; WX 600 ; N braceleft ; B 90 -145 489 771 ; +C 124 ; WX 600 ; N bar ; B 264 -145 336 771 ; +C 125 ; WX 600 ; N braceright ; B 111 -145 510 771 ; +C 126 ; WX 600 ; N asciitilde ; B 59 201 541 377 ; +C 161 ; WX 600 ; N exclamdown ; B 240 -193 360 530 ; +C 162 ; WX 600 ; N cent ; B 84 0 518 723 ; +C 163 ; WX 600 ; N sterling ; B 73 0 510 741 ; +C 165 ; WX 600 ; N yen ; B 24 0 576 723 ; +C 167 ; WX 600 ; N section ; B 75 -163 524 741 ; +C 168 ; WX 600 ; N currency ; B 42 69 558 586 ; +C 169 ; WX 600 ; N quotesingle ; B 228 470 372 771 ; +C 171 ; WX 600 ; N guillemotleft ; B 40 48 540 482 ; +C 180 ; WX 600 ; N periodcentered ; B 240 205 360 325 ; +C 182 ; WX 600 ; N paragraph ; B 49 -145 474 729 ; +C 187 ; WX 600 ; N guillemotright ; B 60 48 560 482 ; +C 191 ; WX 600 ; N questiondown ; B 73 -211 501 530 ; +C 193 ; WX 600 ; N grave ; B 192 626 408 783 ; +C 194 ; WX 600 ; N acute ; B 192 626 409 783 ; +C 195 ; WX 600 ; N circumflex ; B 121 626 479 783 ; +C 196 ; WX 600 ; N tilde ; B 137 627 463 741 ; +C 197 ; WX 600 ; N macron ; B 131 627 469 687 ; +C 198 ; WX 600 ; N breve ; B 131 630 469 771 ; +C 199 ; WX 600 ; N dotaccent ; B 252 627 348 723 ; +C 200 ; WX 600 ; N dieresis ; B 137 626 463 723 ; +C 202 ; WX 600 ; N ring ; B 189 626 411 848 ; +C 203 ; WX 600 ; N cedilla ; B 215 -211 385 0 ; +C 205 ; WX 600 ; N hungarumlaut ; B 120 626 503 783 ; +C 206 ; WX 600 ; N ogonek ; B 223 -181 390 0 ; +C 207 ; WX 600 ; N caron ; B 121 626 479 783 ; +C 225 ; WX 600 ; N AE ; B 6 0 594 723 ; +C 227 ; WX 600 ; N ordfeminine ; B 66 349 545 741 ; +C 232 ; WX 600 ; N Lslash ; B 42 0 562 723 ; +C 233 ; WX 600 ; N Oslash ; B 30 -18 570 741 ; +C 234 ; WX 600 ; N OE ; B 18 -18 570 741 ; +C 235 ; WX 600 ; N ordmasculine ; B 72 349 528 741 ; +C 241 ; WX 600 ; N ae ; B 18 -12 582 542 ; +C 245 ; WX 600 ; N dotlessi ; B 72 0 540 530 ; +C 248 ; WX 600 ; N lslash ; B 72 0 540 771 ; +C 249 ; WX 600 ; N oslash ; B 54 -12 546 542 ; +C 250 ; WX 600 ; N oe ; B 24 -12 576 542 ; +C 251 ; WX 600 ; N germandbls ; B 30 -12 582 783 ; +C -1 ; WX 600 ; N Aacute ; B 12 0 588 940 ; +C -1 ; WX 600 ; N Abreve ; B 12 0 588 940 ; +C -1 ; WX 600 ; N Acircumflex ; B 12 0 588 940 ; +C -1 ; WX 600 ; N Adieresis ; B 12 0 588 880 ; +C -1 ; WX 600 ; N Agrave ; B 12 0 588 940 ; +C -1 ; WX 600 ; N Amacron ; B 12 0 588 844 ; +C -1 ; WX 600 ; N Aogonek ; B 12 -181 588 723 ; +C -1 ; WX 600 ; N Aring ; B 12 0 588 945 ; +C -1 ; WX 600 ; N Atilde ; B 12 0 588 898 ; +C -1 ; WX 600 ; N Cacute ; B 60 -18 550 940 ; +C -1 ; WX 600 ; N Ccaron ; B 60 -18 550 940 ; +C -1 ; WX 600 ; N Ccedilla ; B 60 -211 550 741 ; +C -1 ; WX 600 ; N Ccircumflex ; B 60 -18 550 940 ; +C -1 ; WX 600 ; N Cdotaccent ; B 60 -18 550 880 ; +C -1 ; WX 600 ; N Dcaron ; B 24 0 570 940 ; +C -1 ; WX 600 ; N Dcroat ; B 24 0 570 723 ; +C -1 ; WX 600 ; N Eacute ; B 36 0 540 940 ; +C -1 ; WX 600 ; N Ebreve ; B 36 0 540 940 ; +C -1 ; WX 600 ; N Ecaron ; B 36 0 540 940 ; +C -1 ; WX 600 ; N Ecircumflex ; B 36 0 540 940 ; +C -1 ; WX 600 ; N Edieresis ; B 36 0 540 880 ; +C -1 ; WX 600 ; N Edotaccent ; B 36 0 540 880 ; +C -1 ; WX 600 ; N Egrave ; B 36 0 540 940 ; +C -1 ; WX 600 ; N Emacron ; B 36 0 540 844 ; +C -1 ; WX 600 ; N Eng ; B 36 -145 564 723 ; +C -1 ; WX 600 ; N Eogonek ; B 36 -181 540 723 ; +C -1 ; WX 600 ; N Eth ; B 24 0 570 723 ; +C -1 ; WX 600 ; N Euro ; B 3 -18 550 741 ; +C -1 ; WX 600 ; N Gbreve ; B 36 -18 528 940 ; +C -1 ; WX 600 ; N Gcircumflex ; B 36 -18 528 940 ; +C -1 ; WX 600 ; N Gcommaaccent ; B 36 -191 528 741 ; +C -1 ; WX 600 ; N Gdotaccent ; B 36 -18 528 880 ; +C -1 ; WX 600 ; N Hbar ; B 18 0 582 723 ; +C -1 ; WX 600 ; N Hcircumflex ; B 30 0 570 940 ; +C -1 ; WX 600 ; N IJ ; B 22 -18 552 723 ; +C -1 ; WX 600 ; N Iacute ; B 78 0 522 940 ; +C -1 ; WX 600 ; N Ibreve ; B 78 0 522 940 ; +C -1 ; WX 600 ; N Icircumflex ; B 78 0 522 940 ; +C -1 ; WX 600 ; N Idieresis ; B 78 0 522 880 ; +C -1 ; WX 600 ; N Idotaccent ; B 78 0 522 880 ; +C -1 ; WX 600 ; N Igrave ; B 78 0 522 940 ; +C -1 ; WX 600 ; N Imacron ; B 78 0 522 844 ; +C -1 ; WX 600 ; N Iogonek ; B 78 -181 522 723 ; +C -1 ; WX 600 ; N Itilde ; B 78 0 522 898 ; +C -1 ; WX 600 ; N Jcircumflex ; B 54 -18 558 940 ; +C -1 ; WX 600 ; N Kcommaaccent ; B 36 -191 585 723 ; +C -1 ; WX 600 ; N Lacute ; B 42 0 562 940 ; +C -1 ; WX 600 ; N Lcaron ; B 42 0 562 723 ; +C -1 ; WX 600 ; N Lcommaaccent ; B 42 -191 562 723 ; +C -1 ; WX 600 ; N Ldot ; B 42 0 562 723 ; +C -1 ; WX 600 ; N Nacute ; B 36 0 564 940 ; +C -1 ; WX 600 ; N Ncaron ; B 36 0 564 940 ; +C -1 ; WX 600 ; N Ncommaaccent ; B 36 -191 564 723 ; +C -1 ; WX 600 ; N Ntilde ; B 36 0 564 898 ; +C -1 ; WX 600 ; N Oacute ; B 30 -18 570 940 ; +C -1 ; WX 600 ; N Obreve ; B 30 -18 570 940 ; +C -1 ; WX 600 ; N Ocircumflex ; B 30 -18 570 940 ; +C -1 ; WX 600 ; N Odieresis ; B 30 -18 570 880 ; +C -1 ; WX 600 ; N Ograve ; B 30 -18 570 940 ; +C -1 ; WX 600 ; N Ohungarumlaut ; B 30 -18 570 940 ; +C -1 ; WX 600 ; N Omacron ; B 30 -18 570 844 ; +C -1 ; WX 600 ; N Otilde ; B 30 -18 570 898 ; +C -1 ; WX 600 ; N Racute ; B 42 0 588 940 ; +C -1 ; WX 600 ; N Rcaron ; B 42 0 588 940 ; +C -1 ; WX 600 ; N Rcommaaccent ; B 42 -191 588 723 ; +C -1 ; WX 600 ; N Sacute ; B 74 -18 532 940 ; +C -1 ; WX 600 ; N Scaron ; B 74 -18 532 940 ; +C -1 ; WX 600 ; N Scedilla ; B 74 -211 532 741 ; +C -1 ; WX 600 ; N Scircumflex ; B 74 -18 532 940 ; +C -1 ; WX 600 ; N Scommaaccent ; B 74 -191 532 741 ; +C -1 ; WX 600 ; N Tbar ; B 30 0 570 723 ; +C -1 ; WX 600 ; N Tcaron ; B 30 0 570 940 ; +C -1 ; WX 600 ; N Tcedilla ; B 30 -211 570 723 ; +C -1 ; WX 600 ; N Tcommaaccent ; B 30 -191 570 723 ; +C -1 ; WX 600 ; N Thorn ; B 42 0 549 723 ; +C -1 ; WX 600 ; N Uacute ; B 30 -18 570 940 ; +C -1 ; WX 600 ; N Ubreve ; B 30 -18 570 940 ; +C -1 ; WX 600 ; N Ucircumflex ; B 30 -18 570 940 ; +C -1 ; WX 600 ; N Udieresis ; B 30 -18 570 880 ; +C -1 ; WX 600 ; N Ugrave ; B 30 -18 570 940 ; +C -1 ; WX 600 ; N Uhungarumlaut ; B 30 -18 570 940 ; +C -1 ; WX 600 ; N Umacron ; B 30 -18 570 844 ; +C -1 ; WX 600 ; N Uogonek ; B 30 -181 570 723 ; +C -1 ; WX 600 ; N Uring ; B 30 -18 570 993 ; +C -1 ; WX 600 ; N Utilde ; B 30 -18 570 898 ; +C -1 ; WX 600 ; N Wcircumflex ; B 11 0 589 940 ; +C -1 ; WX 600 ; N Yacute ; B 13 0 587 940 ; +C -1 ; WX 600 ; N Ycircumflex ; B 13 0 587 940 ; +C -1 ; WX 600 ; N Ydieresis ; B 13 0 587 880 ; +C -1 ; WX 600 ; N Zacute ; B 72 0 528 940 ; +C -1 ; WX 600 ; N Zcaron ; B 72 0 528 940 ; +C -1 ; WX 600 ; N Zdotaccent ; B 72 0 528 880 ; +C -1 ; WX 600 ; N aacute ; B 72 -12 570 783 ; +C -1 ; WX 600 ; N abreve ; B 72 -12 570 771 ; +C -1 ; WX 600 ; N acircumflex ; B 72 -12 570 783 ; +C -1 ; WX 600 ; N adieresis ; B 72 -12 570 723 ; +C -1 ; WX 600 ; N afii57929 ; B 252 549 348 771 ; +C -1 ; WX 600 ; N agrave ; B 72 -12 570 783 ; +C -1 ; WX 600 ; N amacron ; B 72 -12 570 687 ; +C -1 ; WX 600 ; N aogonek ; B 72 -181 570 542 ; +C -1 ; WX 600 ; N apostrophe ; B 252 549 348 771 ; +C -1 ; WX 600 ; N aring ; B 72 -12 570 848 ; +C -1 ; WX 600 ; N atilde ; B 72 -12 570 741 ; +C -1 ; WX 600 ; N brokenbar ; B 264 -145 336 771 ; +C -1 ; WX 600 ; N cacute ; B 72 -12 504 783 ; +C -1 ; WX 600 ; N ccaron ; B 72 -12 511 783 ; +C -1 ; WX 600 ; N ccedilla ; B 72 -211 504 542 ; +C -1 ; WX 600 ; N ccircumflex ; B 72 -12 511 783 ; +C -1 ; WX 600 ; N cdotaccent ; B 72 -12 504 723 ; +C -1 ; WX 600 ; N commaaccent ; B 225 -191 376 -49 ; +C -1 ; WX 600 ; N copyright ; B 30 -18 570 741 ; +C -1 ; WX 600 ; N dcaron ; B 54 -12 600 771 ; +C -1 ; WX 600 ; N dcroat ; B 54 -12 570 771 ; +C -1 ; WX 600 ; N degree ; B 155 452 445 741 ; +C -1 ; WX 600 ; N divide ; B 48 0 552 602 ; +C -1 ; WX 600 ; N dotlessj ; B 78 -205 441 530 ; +C -1 ; WX 600 ; N eacute ; B 60 -12 540 783 ; +C -1 ; WX 600 ; N ebreve ; B 60 -12 540 771 ; +C -1 ; WX 600 ; N ecaron ; B 60 -12 540 783 ; +C -1 ; WX 600 ; N ecircumflex ; B 60 -12 540 783 ; +C -1 ; WX 600 ; N edieresis ; B 60 -12 540 723 ; +C -1 ; WX 600 ; N edotaccent ; B 60 -12 540 723 ; +C -1 ; WX 600 ; N egrave ; B 60 -12 540 783 ; +C -1 ; WX 600 ; N emacron ; B 60 -12 540 687 ; +C -1 ; WX 600 ; N eng ; B 34 -205 510 542 ; +C -1 ; WX 600 ; N eogonek ; B 60 -181 540 542 ; +C -1 ; WX 600 ; N eth ; B 54 -12 546 788 ; +C -1 ; WX 600 ; N gbreve ; B 42 -205 567 771 ; +C -1 ; WX 600 ; N gcircumflex ; B 42 -205 567 783 ; +C -1 ; WX 600 ; N gcommaaccent ; B 42 -205 567 848 ; +C -1 ; WX 600 ; N gdotaccent ; B 42 -205 567 723 ; +C -1 ; WX 600 ; N hbar ; B 34 0 570 771 ; +C -1 ; WX 600 ; N hcircumflex ; B 34 0 570 976 ; +C -1 ; WX 600 ; N iacute ; B 72 0 540 783 ; +C -1 ; WX 600 ; N ibreve ; B 72 0 540 771 ; +C -1 ; WX 600 ; N icircumflex ; B 72 0 540 783 ; +C -1 ; WX 600 ; N idieresis ; B 72 0 540 723 ; +C -1 ; WX 600 ; N igrave ; B 72 0 540 783 ; +C -1 ; WX 600 ; N ij ; B 28 -205 516 771 ; +C -1 ; WX 600 ; N imacron ; B 72 0 540 687 ; +C -1 ; WX 600 ; N iogonek ; B 72 -181 540 771 ; +C -1 ; WX 600 ; N itilde ; B 72 0 540 741 ; +C -1 ; WX 600 ; N jcircumflex ; B 78 -205 533 783 ; +C -1 ; WX 600 ; N kcommaaccent ; B 36 -191 574 771 ; +C -1 ; WX 600 ; N kgreenlandic ; B 36 0 574 530 ; +C -1 ; WX 600 ; N lacute ; B 72 0 540 976 ; +C -1 ; WX 600 ; N lcaron ; B 60 0 540 771 ; +C -1 ; WX 600 ; N lcommaaccent ; B 72 -191 540 771 ; +C -1 ; WX 600 ; N ldot ; B 60 0 600 771 ; +C -1 ; WX 600 ; N logicalnot ; B 48 96 552 337 ; +C -1 ; WX 600 ; N longs ; B 72 0 570 783 ; +C -1 ; WX 600 ; N mu ; B 33 -193 569 530 ; +C -1 ; WX 600 ; N multiply ; B 48 0 552 504 ; +C -1 ; WX 600 ; N nacute ; B 34 0 570 783 ; +C -1 ; WX 600 ; N napostrophe ; B 4 0 570 771 ; +C -1 ; WX 723 ; N nbspace ; B 0 0 0 0 ; +C -1 ; WX 600 ; N ncaron ; B 34 0 570 783 ; +C -1 ; WX 600 ; N ncommaaccent ; B 34 -191 570 542 ; +C -1 ; WX 600 ; N ntilde ; B 34 0 570 741 ; +C -1 ; WX 600 ; N oacute ; B 54 -12 546 783 ; +C -1 ; WX 600 ; N obreve ; B 54 -12 546 771 ; +C -1 ; WX 600 ; N ocircumflex ; B 54 -12 546 783 ; +C -1 ; WX 600 ; N odieresis ; B 54 -12 546 723 ; +C -1 ; WX 600 ; N ograve ; B 54 -12 546 783 ; +C -1 ; WX 600 ; N ohungarumlaut ; B 54 -12 546 783 ; +C -1 ; WX 600 ; N omacron ; B 54 -12 546 687 ; +C -1 ; WX 600 ; N onehalf ; B 12 -18 570 741 ; +C -1 ; WX 600 ; N onequarter ; B 12 -18 570 741 ; +C -1 ; WX 600 ; N onesuperior ; B 130 358 470 741 ; +C -1 ; WX 600 ; N otilde ; B 54 -12 546 741 ; +C -1 ; WX 600 ; N plusminus ; B 48 0 552 602 ; +C -1 ; WX 600 ; N racute ; B 36 0 540 783 ; +C -1 ; WX 600 ; N rcaron ; B 36 0 540 783 ; +C -1 ; WX 600 ; N rcommaaccent ; B 36 -191 540 542 ; +C -1 ; WX 600 ; N registered ; B 30 -18 570 741 ; +C -1 ; WX 600 ; N sacute ; B 102 -12 513 783 ; +C -1 ; WX 600 ; N scaron ; B 102 -12 513 783 ; +C -1 ; WX 600 ; N scedilla ; B 102 -211 513 542 ; +C -1 ; WX 600 ; N scircumflex ; B 102 -12 513 783 ; +C -1 ; WX 600 ; N scommaaccent ; B 102 -191 513 542 ; +C -1 ; WX 600 ; N sfthyphen ; B 72 265 528 337 ; +C -1 ; WX 600 ; N tbar ; B 58 -12 504 651 ; +C -1 ; WX 600 ; N tcaron ; B 58 -12 504 824 ; +C -1 ; WX 600 ; N tcedilla ; B 58 -211 504 651 ; +C -1 ; WX 600 ; N tcommaaccent ; B 58 -191 504 651 ; +C -1 ; WX 600 ; N thorn ; B 30 -193 546 771 ; +C -1 ; WX 600 ; N threequarters ; B 12 -18 588 741 ; +C -1 ; WX 600 ; N threesuperior ; B 128 349 472 741 ; +C -1 ; WX 600 ; N twosuperior ; B 125 355 475 741 ; +C -1 ; WX 600 ; N uacute ; B 33 -12 569 783 ; +C -1 ; WX 600 ; N ubreve ; B 33 -12 569 771 ; +C -1 ; WX 600 ; N ucircumflex ; B 33 -12 569 783 ; +C -1 ; WX 600 ; N udieresis ; B 33 -12 569 723 ; +C -1 ; WX 600 ; N ugrave ; B 33 -12 569 783 ; +C -1 ; WX 600 ; N uhungarumlaut ; B 33 -12 569 783 ; +C -1 ; WX 600 ; N umacron ; B 33 -12 569 687 ; +C -1 ; WX 600 ; N uni20AC ; B 3 -18 550 741 ; +C -1 ; WX 600 ; N uogonek ; B 33 -181 569 530 ; +C -1 ; WX 600 ; N uring ; B 33 -12 569 848 ; +C -1 ; WX 600 ; N utilde ; B 33 -12 569 741 ; +C -1 ; WX 600 ; N wcircumflex ; B 11 0 589 783 ; +C -1 ; WX 600 ; N yacute ; B 27 -193 573 783 ; +C -1 ; WX 600 ; N ycircumflex ; B 27 -193 573 783 ; +C -1 ; WX 600 ; N ydieresis ; B 27 -193 573 723 ; +C -1 ; WX 600 ; N zacute ; B 60 0 534 783 ; +C -1 ; WX 600 ; N zcaron ; B 60 0 534 783 ; +C -1 ; WX 600 ; N zdotaccent ; B 60 0 534 723 ; +EndCharMetrics +StartComposites 132 +CC Aacute 2 ; PCC A 0 0 ; PCC acute 48 157 ; +CC Abreve 2 ; PCC A 0 0 ; PCC breve 1 169 ; +CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 1 157 ; +CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 1 157 ; +CC Agrave 2 ; PCC A 0 0 ; PCC grave -48 157 ; +CC Amacron 2 ; PCC A 0 0 ; PCC macron -4 157 ; +CC Atilde 2 ; PCC A 0 0 ; PCC tilde 1 157 ; +CC Cacute 2 ; PCC C 0 0 ; PCC acute 97 157 ; +CC Ccaron 2 ; PCC C 0 0 ; PCC caron 49 157 ; +CC Ccircumflex 2 ; PCC C 0 0 ; PCC circumflex 49 157 ; +CC Cdotaccent 2 ; PCC C 0 0 ; PCC dotaccent 49 157 ; +CC Dcaron 2 ; PCC D 0 0 ; PCC caron -30 157 ; +CC Eacute 2 ; PCC E 0 0 ; PCC acute 43 157 ; +CC Ebreve 2 ; PCC E 0 0 ; PCC breve -4 169 ; +CC Ecaron 2 ; PCC E 0 0 ; PCC caron -12 157 ; +CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 6 157 ; +CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis -10 157 ; +CC Edotaccent 2 ; PCC E 0 0 ; PCC dotaccent 13 157 ; +CC Egrave 2 ; PCC E 0 0 ; PCC grave -47 157 ; +CC Emacron 2 ; PCC E 0 0 ; PCC macron 8 157 ; +CC Gbreve 2 ; PCC G 0 0 ; PCC breve 25 169 ; +CC Gcircumflex 2 ; PCC G 0 0 ; PCC circumflex 25 157 ; +CC Gdotaccent 2 ; PCC G 0 0 ; PCC dotaccent 25 157 ; +CC Hcircumflex 2 ; PCC H 0 0 ; PCC circumflex 0 157 ; +CC Iacute 2 ; PCC I 0 0 ; PCC acute 60 157 ; +CC Ibreve 2 ; PCC I 0 0 ; PCC breve 0 169 ; +CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 0 157 ; +CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 0 157 ; +CC Idotaccent 2 ; PCC I 0 0 ; PCC dotaccent 0 157 ; +CC Igrave 2 ; PCC I 0 0 ; PCC grave -60 157 ; +CC Imacron 2 ; PCC I 0 0 ; PCC macron 0 157 ; +CC Itilde 2 ; PCC I 0 0 ; PCC tilde 0 157 ; +CC Jcircumflex 2 ; PCC J 0 0 ; PCC circumflex 50 157 ; +CC Lacute 2 ; PCC L 0 0 ; PCC acute 7 157 ; +CC Ldot 2 ; PCC L 0 0 ; PCC dotaccent 214 -266 ; +CC Nacute 2 ; PCC N 0 0 ; PCC acute 49 157 ; +CC Ncaron 2 ; PCC N 0 0 ; PCC caron 0 157 ; +CC Ntilde 2 ; PCC N 0 0 ; PCC tilde -4 157 ; +CC Oacute 2 ; PCC O 0 0 ; PCC acute 48 157 ; +CC Obreve 2 ; PCC O 0 0 ; PCC breve 0 169 ; +CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 0 157 ; +CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 0 157 ; +CC Ograve 2 ; PCC O 0 0 ; PCC grave -48 157 ; +CC Ohungarumlaut 2 ; PCC O 0 0 ; PCC hungarumlaut 32 157 ; +CC Omacron 2 ; PCC O 0 0 ; PCC macron 0 157 ; +CC Otilde 2 ; PCC O 0 0 ; PCC tilde 0 157 ; +CC Racute 2 ; PCC R 0 0 ; PCC acute 28 157 ; +CC Rcaron 2 ; PCC R 0 0 ; PCC caron -27 157 ; +CC Sacute 2 ; PCC S 0 0 ; PCC acute 56 157 ; +CC Scaron 2 ; PCC S 0 0 ; PCC caron 8 157 ; +CC Scircumflex 2 ; PCC S 0 0 ; PCC circumflex 9 157 ; +CC Tcaron 2 ; PCC T 0 0 ; PCC caron 0 157 ; +CC Uacute 2 ; PCC U 0 0 ; PCC acute 66 157 ; +CC Ubreve 2 ; PCC U 0 0 ; PCC breve 18 169 ; +CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 18 157 ; +CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 18 157 ; +CC Ugrave 2 ; PCC U 0 0 ; PCC grave -30 157 ; +CC Uhungarumlaut 2 ; PCC U 0 0 ; PCC hungarumlaut 67 157 ; +CC Umacron 2 ; PCC U 0 0 ; PCC macron 17 157 ; +CC Uring 2 ; PCC U 0 0 ; PCC ring -4 145 ; +CC Utilde 2 ; PCC U 0 0 ; PCC tilde 2 157 ; +CC Wcircumflex 2 ; PCC W 0 0 ; PCC circumflex 9 157 ; +CC Yacute 2 ; PCC Y 0 0 ; PCC acute 69 157 ; +CC Ycircumflex 2 ; PCC Y 0 0 ; PCC circumflex 21 157 ; +CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 21 157 ; +CC Zacute 2 ; PCC Z 0 0 ; PCC acute 48 157 ; +CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 0 157 ; +CC Zdotaccent 2 ; PCC Z 0 0 ; PCC dotaccent 0 157 ; +CC aacute 2 ; PCC a 0 0 ; PCC acute 78 0 ; +CC abreve 2 ; PCC a 0 0 ; PCC breve 6 0 ; +CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 13 0 ; +CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 17 0 ; +CC agrave 2 ; PCC a 0 0 ; PCC grave -18 0 ; +CC amacron 2 ; PCC a 0 0 ; PCC macron 11 0 ; +CC aring 2 ; PCC a 0 0 ; PCC ring 30 0 ; +CC atilde 2 ; PCC a 0 0 ; PCC tilde 11 0 ; +CC cacute 2 ; PCC c 0 0 ; PCC acute 80 0 ; +CC ccaron 2 ; PCC c 0 0 ; PCC caron 32 0 ; +CC ccircumflex 2 ; PCC c 0 0 ; PCC circumflex 32 0 ; +CC cdotaccent 2 ; PCC c 0 0 ; PCC dotaccent 32 0 ; +CC eacute 2 ; PCC e 0 0 ; PCC acute 65 0 ; +CC ebreve 2 ; PCC e 0 0 ; PCC breve 17 0 ; +CC ecaron 2 ; PCC e 0 0 ; PCC caron 17 0 ; +CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 17 0 ; +CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 17 0 ; +CC edotaccent 2 ; PCC e 0 0 ; PCC dotaccent 17 0 ; +CC egrave 2 ; PCC e 0 0 ; PCC grave -31 0 ; +CC emacron 2 ; PCC e 0 0 ; PCC macron 17 0 ; +CC gbreve 2 ; PCC g 0 0 ; PCC breve -26 0 ; +CC gcircumflex 2 ; PCC g 0 0 ; PCC circumflex -22 0 ; +CC gdotaccent 2 ; PCC g 0 0 ; PCC dotaccent -26 0 ; +CC hcircumflex 2 ; PCC h 0 0 ; PCC circumflex 3 193 ; +CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute 71 0 ; +CC ibreve 2 ; PCC dotlessi 0 0 ; PCC breve 5 0 ; +CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex 11 0 ; +CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis 11 0 ; +CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -49 0 ; +CC imacron 2 ; PCC dotlessi 0 0 ; PCC macron -10 0 ; +CC itilde 2 ; PCC dotlessi 0 0 ; PCC tilde -16 0 ; +CC lacute 2 ; PCC l 0 0 ; PCC acute 71 193 ; +CC nacute 2 ; PCC n 0 0 ; PCC acute 47 0 ; +CC ncaron 2 ; PCC n 0 0 ; PCC caron -8 0 ; +CC ntilde 2 ; PCC n 0 0 ; PCC tilde -1 0 ; +CC oacute 2 ; PCC o 0 0 ; PCC acute 48 0 ; +CC obreve 2 ; PCC o 0 0 ; PCC breve 0 0 ; +CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 0 0 ; +CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 0 0 ; +CC ograve 2 ; PCC o 0 0 ; PCC grave -48 0 ; +CC ohungarumlaut 2 ; PCC o 0 0 ; PCC hungarumlaut 38 0 ; +CC omacron 2 ; PCC o 0 0 ; PCC macron 0 0 ; +CC otilde 2 ; PCC o 0 0 ; PCC tilde 0 0 ; +CC racute 2 ; PCC r 0 0 ; PCC acute 19 0 ; +CC rcaron 2 ; PCC r 0 0 ; PCC caron -12 0 ; +CC sacute 2 ; PCC s 0 0 ; PCC acute 55 0 ; +CC scaron 2 ; PCC s 0 0 ; PCC caron 7 0 ; +CC scircumflex 2 ; PCC s 0 0 ; PCC circumflex 7 0 ; +CC uacute 2 ; PCC u 0 0 ; PCC acute 49 0 ; +CC ubreve 2 ; PCC u 0 0 ; PCC breve -1 0 ; +CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 2 0 ; +CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 2 0 ; +CC ugrave 2 ; PCC u 0 0 ; PCC grave -47 0 ; +CC uhungarumlaut 2 ; PCC u 0 0 ; PCC hungarumlaut 34 0 ; +CC umacron 2 ; PCC u 0 0 ; PCC macron -1 0 ; +CC uring 2 ; PCC u 0 0 ; PCC ring -1 0 ; +CC utilde 2 ; PCC u 0 0 ; PCC tilde -1 0 ; +CC wcircumflex 2 ; PCC w 0 0 ; PCC circumflex 10 0 ; +CC yacute 2 ; PCC y 0 0 ; PCC acute 67 0 ; +CC ycircumflex 2 ; PCC y 0 0 ; PCC circumflex 20 0 ; +CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 20 0 ; +CC zacute 2 ; PCC z 0 0 ; PCC acute 45 0 ; +CC zcaron 2 ; PCC z 0 0 ; PCC caron -3 0 ; +CC zdotaccent 2 ; PCC z 0 0 ; PCC dotaccent -3 0 ; +EndComposites +EndFontMetrics Index: xc/fonts/scaled/Type1/lcdxmr.pfa diff -u /dev/null xc/fonts/scaled/Type1/lcdxmr.pfa:1.1 --- /dev/null Wed Mar 8 16:39:16 2000 +++ xc/fonts/scaled/Type1/lcdxmr.pfa Wed Mar 8 16:39:16 2000 @@ -0,0 +1,1013 @@ +%!PS-AdobeFont-1.1: LuciduxMono 000.200 +%%CreationDate: 2000 Mar 04 11:30:20 + +% Copyright (C) 2000 Bigelow & Holmes Inc. and Y&Y, Inc. +% Patents pending. All Rights Reserved. +% Lucidux is a trademark of Bigelow & Holmes Inc. + +% Permission is hereby granted, free of charge, to any person obtaining a +% copy of these Fonts and associated documentation files (the "Font Software"), +% to deal in the Font Software, including without limitation the rights to +% use, copy, merge, publish, distribute, sublicense, and/or sell copies of +% the Font Software, and to permit persons to whom the Font Software is +% furnished to do so, subject to the following conditions: + +% The above copyright, trademark, patent notices and this permission notice +% shall be included in all copies of one or more of the Software. + +% The Font Software may not be modified, alterered, or added to, and in +% particular the designs of glyphs or characters in the Fonts may not be +% modified nor may additional glyphs or characters be added to the Fonts, +% except that composite characters composed of two or more characters in the +% Fonts may be created using the seac (Standard Encoding Accented Character) +% Type 1 operator. + +% THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +% EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +% MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF +% COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BIGELOW & +% HOLMES INC. OR Y&Y, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR +% CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +% ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +% OTHER DEALINGS IN THE FONT SOFTWARE. + +% Except as contained in this notice, the names of Bigelow & Holmes Inc. +% and Y&Y, Inc. shall not be used in advertising or otherwise to promote +% the sale, use or other dealings in this Font Software without prior +% written authorization from the Bigelow & Holmes Inc. and Y&Y, Inc. + +% For further information, contact: +% mailto:support@yandy.com or mailto:design@bigelowandholmes.com +% For other Bigelow & Holmes fonts see http://www.YandY.com + +12 dict begin +/FontInfo 9 dict dup begin + /version (000.200) readonly def + /Notice (Copyright (C) 2000 Bigelow & Holmes Inc. and Y&Y, Inc. All rights reserved.) readonly def + /FullName (Lucidux Mono) readonly def + /FamilyName (LuciduxMono) readonly def + /Weight (Normal) readonly def + /ItalicAngle 0 def + /isFixedPitch true def + /UnderlinePosition -100 def + /UnderlineThickness 50 def +end readonly def +/FontName /LuciduxMono def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding StandardEncoding def +/FontBBox{0 -211 600 993}readonly def +/UniqueID 5096730 def +currentdict end +currentfile eexec +8053514D28EC28DA1630165FAB262882D3FD7667933E8516EE9710995B33AD6AFA66AE56E3B4F8 +1A010BA2D16746155E0B46B8233AF9FC6FB5A1DE6E6D7277AEC5CE81679028F3B440619FB93E88 +614EBEE63F9A83374DA4CF45FCBBACEBE22717D34438C9B2E3DC7580F497AC697EA20AC096930F +E90934EA8FFE999902BA55F2149DEADDCBC4CF03F530F526450856BF8F3CE1C247AA6810D725B6 +E4CB0C6B7DC3B7B5FBE22909A1ED01A6BCEFAE9A709DB1D61BF8A223420C27BC28535F3C5C58CE +BD7239771F455E727EB9C9025F7B0B98D9C49F8A33E8C9A67A30CBC40719B9902A42978F54386A +B019C6EED778074F809506075C7CF394AFF792A52C36CC8FCE79BAABF945F6AB3AE924FBF89F12 +D0D56822E09D7226051E5235D975B5A7E02610477A9B9148DA4E93861FF2B0E800C389D37B12B3 +373512C35EA560080E98E5D687A9803A25F0CAB8C0DAC1210B1B5AF4CD5A13917D67974DC4DD17 +AED06EA357D1697AAB3EAD49D74CC208720B98B4964096DAC9BAA75A7DEE85F75AB40E94CA6318 +F5C28B6ADC7E425A7AE7F83247FC64293FEF273E378B6FAC0A2CDB3D29F81FAC78CDA07B096FB7 +3640FCEFE853632D63CDDC9D1954936C346B6D7D6C3549DD9755DFF6F0772100E37B91E2C871E9 +4F0323D55095AADD55C7B4DAB15589D427FE938233CC6D097A63CB87FA0533CF259866C95AC4F8 +3B6FC48923720004DCE858F8B54E300DC7ABCC2E84D2039DAA28F9C3DD2DE494897D1D2571B4DE +048D39494AA9EDEE1C4FAAA78DAC5153F697997A963EF86F9B24B8A1A3B64A1AF22FC963DC50D6 +7D967DA218FD6B2869FCA538511C8520F0E2750A8319059C959D51B574BB8DAA4BB694EAD0A947 +44D1389070D918D3C3860D9A805C6DBA763A41BCACD5F0FF95B5FADCFBCBC7D271D3D3F50D5AC5 +D011AA87CE7D0671382B0BA23C7F798AC8361F7680AF7EA72C54F1BA3CB4F600A458BA8A27F09C +DFE8FC3D5FDDF1DCD1A5AE27D57D4D3E4C7F03D621AF796C0709708419C8D4DC94C70199C2998E +7D70C6183EA470CCAE2BD1AFA211E0E187B26B1241FE56B17DDC54E8519DBBF3F99DCE3DFA3FED +0F2C151E55E13D68CAEDC49CA6ADB02D19498D6123F48DDA53658096C7AB2D5AB3A324E4FA87A0 +E6E2E73E28CB851C2A51854E55F0A98E5DAB1DD4EFB805312DBDEF3F08644BB91AE082816CDD23 +6EDE1621CC9C25B73F2E7074EB3B424CFB037E106EE81565B0FC2BE4D4F9D7FC926EB5B0D0EF57 +E6D892F5C31873C69925D92EB64B0B9504B446B57709EABE3254D5A96C47126A8864023D7141DD +8DA142A58DA9CE979B83A080DB876136D29B52838BE1EEDE4C42B71A77C2A088C3358E1E8F6F8B +B995DE66EEBC8AED3F19BBEA9BB30DB512A559E5B464BD9B9C3D402FBC091EBF6AD448B475876A +F309D9664EFE863C214C791CC190DCD86B1243579F2F0750B48E85D2A203CDC54802FD1A637646 +CBCAD3702F359948D682A07AF8F9D406B5D69476BA1C184C5DF3DC47253FCBF0DDF0FDA92C9D9D +407D1BEE3B8271835813410BB3523F08E648A157504A939EAD51C1897D6B6B204CAD30C4F6B08A +A10C7FE16E56D0534DFBCAC8FCDC3818F5E8144A2F741D6087C169CF1FF0E578B143727ACB9CAC +191D02D9F889C5028AA8D6E05C59DCFE24D2095C47954DB288B6890BF5294F09218CBDE52695E1 +7C117E33C149FE451D4E20E7A63869E480C02CFF0820EBE330EC4774A93468F48BB9922713EB52 +672EE6992B67B68FCB984ABE76455C61362C1E6CCD8C428651B56876757AE428799D01F3A84714 +D7C8707A54BB8DD2F95D1A0EFD10ABB5C52C862A0DD88E891566C09CAE859A15ADD33C338C5BAE +2C23C321EC1D3BFB4AED4E7507A6700247FEA04517C37679CEFC8A36D0EE6F931CFC2236007572 +448B68F6BA60AF2DA346618BAA9508DE3B424293E47B87F0D2A43FA5E01C2BC6EFB3B515DCCD83 +E697925A11F144BA3E89918345994EE9616DC79FA442B8DF618D44466A21AE0AAA18FAF4F2C651 +73A0302229DA55A427435368B08BF6E201DC82B638E8B96A02D942FD111746CA62D8831ABC0E08 +9513AFC55D988CBA82D7B2AC76101A8C9FDCC242E8B878823E43E27FB503836E8D3BA446A6BB08 +2F539B00AB746DC8DFCBB93D589DE96C5119A642CCB04FC9CFF47BF72EC98F5B35C556BF40265C +8D253BEB6712FC9B5E0E82DE4382E011620A2A3B9C517339F5A7CBB90559FD1EA5D04DE51A8C80 +34839B77AAD15596046C40F4D03A82461C3BA2ECD323DCCC59581C798A10599CAFA6BFEFF2140A +BF6E25EA718C5E577FDAAB89F9BB25B29E026926CF5AA497F8C127D77746C24F9DC46120F0C1F1 +793E889955E664AACD031F86FB46387D3F6B0AFAAAB4E2C66AB4F865D165D9433A050B171DBF7F +B8C96EDCED91751419B907F9448E050E38D984F6500E892D45FE2F0A7D1DEADEE276F4732AC532 +17B8461F6321502106867D3512F2F584D60DDBFA0A956A6CA30983FE85E9B381FE33FA9F8A9E3A +D8E7A7CD91426D6735700C8C54D1A54FCFD988D0983A09B53A3F6A8B3DC9435C1EBF99FDA30975 +D26E89E18F0035A7BA07505F722B998D77D691D07A82979E175AAEF2DB81C8C00FD0562D4B112A +86A8701B43306B54D4B015B9E19DF4F43DC54C85CD8EBFF44A8D756EA3B6FDFC067E37D2661A19 +175D2D9B9211CDA9309D9D8C978A930C7BB1AFCD5B7F1FBAF6691360FD7C7D62D529056586A33B +9473EFF98A7C9E2F27A62F21B4F4C91B163704ACFB2DEA2D99FDAFD9CD053E8F115100F4DF74E7 +6C039C7FE550297A1600683617CFB6196FD4A79C80449EB878D48E531BAD7D53F2D44EB616744A +5A877886791111B78A40D5A046114F2392F7B14C017C1F6D6EBBCD104CD64626CA96F99C844426 +768AFDB97C508DA28D1C6A6FC6208E36B40F7B60B169E47BC5EE90E91AB09AC3C429813B352558 +B521D20856DE27500E2B3851716275D75AE4015BB60B5138A42A838392F118E2DCFD2A935777C1 +281830A428DA23976FC923A954EB03F4581A0DF0076B0BE4D6B15608ACAC4328648B768FA8733D +C37AB58847BFF88742A9D14C282FF46BA81CF55D8B0B3B9B16D2E57B375049D1B764590E004440 +5783DE0C6D110A3D1110FAA165D13C5BF83DAA1706FD208970C8EDBD5D8CBD05A7A12746498964 +E619B55CC0A812C1260F803E7FD7245CD16CB05BA73634B9BEB62FE4C6E28A3084601C93EFC2DE +804BD3FB93B9955398AB498BCCBACFACD2818B8EEB1A4BCFF6ECCCD773151A17742ECBE4BCB910 +D07A866EE6140531923502185015624FAE02FBD254771D39F38FC9615242E5D542EAFF6A8DE134 +0C33B8BD24019D6A6128B03508D99E6D34B2DA5AD0F59004911C38633360ADBE7A69CDF380BF57 +39DF435E3D9CA4C48503E254C20A052320459EFA9B9BB50BB42BF1835991B94E640E2E336E2DF9 +3142680938C6B7FF93E520C23596CD1D69B73BED1667EE72BA4E71F96A10AB042E396CB581C514 +7BBF3B4505B165E8E8A8CC709FE00C8D5AAE7AB180FDFB35F81B2401477BF0948DDF511BBFD18E +C49E126AD8AEEE729CA9549E4EF4BF473100BE1A42B4F6F2CFECD5820D3C6E7EFEE0545ACB8604 +6EC32173EA1FC04413751DCDFB6B7E5D8F62F6B674E4163A3C7253BCD91E75EE458984924A4B45 +2E858271D07ADBD41A1BA0F8D49D08301582642C3220BA356C4C4866D177D556A7AF8783582563 +82496485CD2904B5D4A92F0DDFDE6276C1FE700D8ABFFB852085FF75D563EEB0526DB2EB622888 +A5A99A89F9350FC4F66DEE5A0FF0A5870B056454B203FCF623FC55ADD9CBC20644619D158B6FD6 +F505B77EBEF088554E94D908AB5C57529DB1AA5B02C8BA6BF68880A83FB5AA7695A94EC4608B61 +CE6A1C7461FAD9B2211B186D903712294694778C7C3D9714B3401DC2D0E8456DF606621FE6CA63 +7955462AE84C2E9558CC05D748510E284BD75689AB45F4BCC7D73EC1DA6EFBA61E2DA65B5609C5 +778C6D6FD3D0BBE79A233E53358DBE407EFF94DCB75C573375D0BFA0D322CFE3D5C94C7E64A5E9 +6D47C1039ED26272265D3F0DE044DF3EBC8E9E655173559801C3F5CB57ADA0FE5F3EFF49721731 +A30788942FCBABBA69B1D735540A561FC4AF42608C6E01E51DA8F671E3A62C0A4F9DFC05E85348 +2523C39EDAF5CD7F09305B94ECFFA4D2174FE7C49B0CA2EA52E4F9C7D0438E471646F45E8676A6 +1A26A198F37BB3E1F9C0479EA8C8C3375048D2601BB4FF453E2AC12BE2409CB81F330CF57AB41C +B2E64D1F9037F021CFEE4BD03CBAF44D83763DFCE9E98BF0A2AAB98E0AAED6BF63A361D3564D20 +44E9B8D12368CDC614B819AEEDE9597419CF39470852EE2D43DFBD9738ECB824713DE70AD81EF0 +289EFF0E1EE8A3B3102BA5A9707138898318E9E5EAC1D1A9F323D25D3F3E547AB89A3B3C801263 +DB772EA941D11D0FB8CF4B2CF3DA8256A187801F7A6CFE211D8D3DAD7AA5C381186F4048714A2B +7D111C8180339BEAFF0264F1EC9818FC830AD1FB2C1708E5E6A4C191E08CFCF5D0484392A0528E +41931625183099C9AE6A1D3DBB5EC3623A6483F450ABB27DF559714C0F81351E75261B6253BF9D +811569BBBB8DCF7D8EA7CAE8578F84CD6B0FF6272CD48799DCBB79B4D9483131DC75E66B9E9F07 +2EB2F38C4CACFF62D82DACEBF0B2560AD5C0FDF7C8585AB60AD3394873BD99DDB4B41AE398AC32 +B4A9BB38C2902540FCD543ED4B9C6DAA53E2771F12ABB9CE56F64A8BB991B0C8C93AACC663F3EE +4D1080AFF8DBFB5E4471E704C8D15B30FEE43DC45E64C9BA95DDE8409C8620A7FCC80E9BE6EB53 +C053EB516C013C9538C198DCDF254F1F9CB1C789A4311EDABB885DC5D845C884413A413BA7994C +C9EC8D98DDDB618A6F1D8251C3C3D23E263F37DF6AD8D666E5E74109B47B0F8F4DF037DF139045 +857AFC6E3855EDF0F61E458827F9C6C471652DB8375AD2C0C2AFFC262EE2FDEAD12F117A5AEEF0 +07F6E5FF6545C479FC9A53D0B4A6AFDD65D6AD3CF3433BB29974E4CA1907AB351DC8A00566A508 +60684EC5E70851E1EA4863212475A4567D4D560F4D42ED2434BFB2FCB5C9D08C65D7F452FB6479 +AFBB7E7CB54D62F8E69CA14545BDB3A70D1E4575718CF4B7CE72BBCF59D25289A664A783550756 +6052019F9FDA9EDADCA31A2CD474FB4429795B729CD3E55864B05929C6A0ABFF6686609C7310E5 +06594E903C9A8EBFE7DB9C9A14ED8D4E2615D35E1E0538D2BCA4A7E38B78B8ADAAB845FE667BDF +25DE943C067A52E1E24AB03B61F9DEF3AED95490C5E744ED11CB1204D12BB3CCF17F59F3BA6855 +89F3ADE54C2F366AEC5DB5655CCFA1AA73703B0477F150C7B1B776240EE4962E2AF6D94CF0086F +FEF9322C0B757F4E83917E60B5D053CCDBA01939BFC1390EBAD6D895B5718E2EB3B549BB7AF474 +CA68769534F32B6F780520314D689A954C944916979FFB80B65AB541042D375A3D192FA79E8DFE +9B52E1532795DCDA3E76BE9897BB7F035C744BFBA60FB0A5BE8299299AAF0CBDFBDE913D82E73D +BA9E508070C5EA5DFDF836D310AF847BA76F6BC38C98926683A21D71D59F2815F524DC97030DFC +5C424495EDC9D68C9F62EC65CB6CF805153006463498338B9D2A094F8D169BC18FDFB2EB5A9864 +149BD7DAFE7AD7E09A8C77DC2062DD928A86248DED0CBE205C136699F7D117EA4C4AED0635A609 +BE379AB6A88D72BA1E020ADDEBFE140DE78508133E7D2774D28AA4C907EA4D3CCFBC468BDCA273 +576A92F3FD01E89AACC589285BCA90BFCAD5AF6B8285E4B468D906F806DED7A545A42C2C6AE001 +5ED058CABB4DFA224BB780DE47D6F9DAD18BE663DDDB33C87072FC732C5F723B88F4ADB9E39450 +DBDF4A859EDEBC898BFE8CFA9E0B9F208E06573D68A9B7C1969C768B3FADEB7E40045F10F38BE4 +3793FB50EEC48F7C230B825240D7D14033F88EBEA6F5C4A74BFD1D96881C95E005BF118473083A +5C8E612E3341169E906EB75DCB3491B9B5E272BF9D05C462B289570449498552A59627B99FBF67 +DA3476CC9B6CF25D1FECB9EC2E7B402DCF1B641CE6C467F9CB65F032A86FACCB1994B8D5D75071 +0C7E6721B205CDD37755796CD5FBA1B80E81EF3B555740521ACD453676A1C0A979D48F768640F2 +E6C0C57CFBC28FDF427BC32D112F4BDB701BB94B492636CF7CC5A296889C1ED0296587CF882A4D +714E75710C6567A603CAEC2C6C6AE9263863690D569C7BA8F8177FBE7A60EE61D450DF87A08B6D +1BA96CC415579DE9A26786FACE14758ED46C294B30F1252B9B41A2A70D3C614F994E6BE4303C0C +30E99FFCB097D62648245BF880309B8015CCA20C1622B4854714DFA0317A6AE2DA87339585CF1A +3891F4AC69A8B1045B613B806528B80144A822389C0F3EF23DCCDAA570656D45145F090250ECFB +990D8363AC9604486DB83BD9C8DC8635A8E1D108A09D4429294715BEDCDA7ECFBDCE9E50DF696F +2E4E7E1F29A15DBBC505C81A90B62067D485025A2C4FAE8457A153315995FBF7959000C1658079 +AEB599CFEA856FF5154EFF4BD2CCDDD4CBF7A7E3A0751C2944C286A7D8DF7EE8069059F4150075 +36C968AEFA284A3EDC5F0C9F64B87417E1D6855DAAAA72BFDD00D683493C67FCAD1E1A2F74AFA7 +363CDAE9FC02F05BA552CDBFE73D2D942447EB5E46C0840A9F2AB1B49DD1FCB6E48A3F292CED8C +91F5EC35662F45171070E96F5D4325C5FE1873904D952FF2F5A8E0F49507C8EA08A79DC54B1DC7 +CE65D8548823A4D524C7374226DF4B4874D49CF36B33105C77FC131BF31F9DAE24264DC9CA8DD1 +1BE15275D64CF5EFDC082FF285DEC1C652293046B7BF2563A92B05D92B213EB6A1D7C42F9670C0 +E8E022095123F204C68401CD003C92E43BCBA715A621C24B1644A5823A94F226E56D77454E2523 +03C33CFB3055BA496C4F3F44738FBA5C2DDE36F4B06AC166B31C43FAB3C2ABAAB10F040D4DEF8E +91FBC332CEAF70FBD91217C6240DD89488F94A750EC6BA14BD82B4C8EC196A9ECB661D1D4C30B0 +1C5AB57E6DFB9D5C65A4028D763E30BF1E6B81B5CA6B858904BF340FF4134C1411FD1B7B1EB5B1 +892AB70D76D0F69459AFD673EDF2480B57D217E3C32ACC8AAFDF3D4A4ECE9603D03BE47DD8EF00 +58762F608F4E98497B68EABE5B24E12029D535C943FAB40A925ADA086D60FFFC8967997B90470C +5582EE99427ECE46F458101B54DA08146A0AF92B960855FB8E5139E0143E3656BA6332F066118F +74329967F4DA73CCBF72C4A71B20CF6B257764DC7C2E11C1610B4985DC6161F2FE9853DCB6453C +A564553A8C0D014301AC823E331A8E302493249AD73E578AAB5C94B0CA1850E1D649F98A593C41 +3DC4F0160B4C500D1FFC933819B2B69A7AC14985E068A4861D4C6407F277962731C72058636BCF +1DECB46F127263AD020ED2F4934613C66493805B76B0BBD5DC009DB1E49942A960063182FF9A61 +F2D550BC307E5E4347579DEFD1738128C4A61EE33B1D23362AAA47A1E4339A822ED5F1551748AF +F8DCBC499411FC89C1CF202A295F2A9A5413A721DC1556A6F971F0E530A8E84469B26ECC900D12 +62B8FCD2491501298605DD1B67CA2C3ED3C2A985F907A057D97FE7EB558A35993BC8F5F37C84DC +519EF571C228453D643BBBC327329ABA89A37C67E3BF6D6AB3651804EF6D4F2DB43D589C1A4D03 +1BC75371C806130515A2FF5DA3228206938DBF4F63DC645CD92F38F8BB4A7EF2C7C7E897DDED80 +C00D08A6451F62DB6CF262B192F928AD186431B7A33898F2C9B36006685A4E7B5900CA50E18609 +E6A8DC66917CCA08FF6EA1B335F41DF5EFEC73E5F0943FE627E5B943A97745B6D9FFD3199432FD +31D2A07F7869DA6E4365D102E86069A2C33BDA4A86BB55430DFB2A345547B8068F42102C4AD500 +FA42BB2943A3DFD00A1809F54DA8A31B5957680306707EDA213203A3F0C474EBEFF9D75914429E +EDF9DFC7E6ACD9EEBCFF0600076F81FD46FE71CDE8FD44F85A41F3B24393E52A46273F98044BB5 +23CA2497E5F491ECC313000176B95EF62046B8E870281C9D96DF58AD010D96A0F9F34AD334C635 +DDF620C9C0133BFE6D1380296F2AD2FC260637289E1B3A24903D3EDCE6464DE151E08883F4C3E0 +D181DD1E439F90939F1B0D1F15D61821F145405653531C2CAA6F808C77FBFB41C123BE71F9FFCF +7F449041308B02D330BAEFC07CA4A4904511AA5BEFE1352A11957316C2711FA6B01817E1D893D3 +BBE87DE9E0420070310BE755A2B166F4BDCC9ADFF6ADA347983D225195BE01F60328F98447CFB3 +4A7CD5BDB1BDEEE6AEF0F5E3AD630A91F0E7F6C5AD9AB4DA06BEA7CEC1AB73112A761DC9520736 +B3C100F26BB40A75EEA62416ACA819EEA38EB90F93E1949C9F732634A82E98F9DF7145055D205B +465D3194103ABE7275DF6DC768E773DF6A3340A43327BCABD3764694C04BD0AB92E1DAFE5F6C82 +B2E774DF800028972458157D8A9FA135D60CD6CB187FDC9A8FB8297F9BA53C1A36DF7582E2C191 +75C4D9E3A0D9A28239CC18761F79585FD473A38B991E1E4676FF0CF29DA1439491F352A57BC7DB +5039E7D024C5663D02C6A9D8CFD4AD187C4D33114434494CDC0D2C8895512BF2CB9B79FCA30D04 +9E07303F47904471FC005891E4C40ABEFB7B91D941DAC5D33150C6BBF2E3481A30B63E293FE688 +916EBF16D896BF318E4EB29C770BF4024F5FD7F43A61FA932CA83DCAE631B9B754F4EAFE27FB65 +DB2D4D3B11410FBA0555E43E19EFFEF17E620D72FCF1940A916B44C794565B4C35589D9D0D5B17 +12894D92629E685603142A6CBB950B82770FBB2925DDF2C390A0867322FCEA428DCD61567852A9 +0A30C74F72A0563F8B1EED2ED6E5E97FC87FAE25653D96D86A6F90424B0F2206DB35D84624F6C6 +F0214C8EF497B8E3C057BDF882C014DEC85C06B8AA194A5ACBB08FB8D727C7C1C0991184985EE6 +BBF07294DBAB2D6253CC2B7FAFB9B7CDFCC61155A94CD55F9E10EA328CF2C389B21D660D98794C +30E2766535B5736F9591570F109E7A364E94EA4DBAB472C722AE248F06F5B585D3801C19487DA6 +BBE5D8D1CCDC47678D98C8F4AADF097975ADEEF5D574A62A10B75C2DE5B9B1C52B479233346F09 +6B18D4A5F60048953635E6AAEB7432A11C014DD292904FDFB7DAFBEABFA342B250086995659F1A +A32ACC048851E862C750E82A679307059450EDD99078DA81EC2C0FA5A98AC88D6C4A906E45A178 +18980FC76CCC333F3157D0AD70E51819F10D20DE0768A9C788F32CD0128209F233F113A35E4C45 +4CFE471B024361B86883A8B77AE50C6478BC0420F7A58DC8F28A72A1E2FCC273DF9604C027C4F6 +14ECB49555B8A0EC487C6DEB631C878CDFC9C4BCF407D23ED6DB56433EEF41ADBADE17CCEDEA29 +FF702ACDB23A6BBA123686A2FA913F8F7E9D53A3198DE5248340064C0673CEA2773CAC9B5D0329 +100E25A76D3149119B544B12E2AB7944DE8DF6EF086E4719F6A8B6905308CF8B07C2D574A79EDD +D1F883E78A1BD15D9904C8E6D321B53C79D12687E10FE13C6164B4D56BAFB67A4CF82C9EC861FA +7794E3B84DD8CB02A4C83EAD88995AA72C6EF05DA4A4D8A6FDFCED0E491771FCB87A8A7A99579A +8E75BC00FAC9558F71767D48860B284F150F96BAFF3BC09778ACD385DB3431F9155DFF6BFF4307 +6B3056E864ED0353EAFEDE6578E57DAA5D8E84FF452A7F4B0A3932A42C6312F190B71AC945469B +CFCC877A6D5C95398E931203723965C5E2154A8D05D5428D066B1508804FF0C417061978D5FE01 +A3EE8F67945A1F0E4403D0DD36D15EE4459CE8A1E268A67FC4824882404F21FE84285ECE7D6452 +B8961AEDC4C6FC2C2B7FB8DE8AA863F35DC27118D9D231240A2E305BD6EEE9745710230A63A8E1 +DE81CE08FD9AEE75E061FE32534C8FE3677B10718165F99916A7AFB6984B07288091D8AFF1E259 +3F38C23EC75FEF5F9FF8039A8764010BF775E991FAA532F5F0263576338A55CC5F0CF656EC56A1 +1BDB2B798C32C05C6A32DD878D91C6A49F62760C40D6D94036A8ADEEA0C9634CCA91D3B1759386 +05323B2C64A4B9ACF6B0BA6CB608A103DB5F89187A08BC358899B423B206EA3B0BE169A9D46CDD +FDA4006DA9EF2187872D61E0FCB67617307F6715CD40F9008196A141277F68856D90C71CFA8D71 +FB5ADBF29DD161503AEB6760C9FDF68F5AE6CCB0002D31647798440DFD2DD179C48B50DDF921EB +7CFD4A0FEF92C28B6B779A3B8EB663EC4D1137EE9BA1879E6D7DE6F94A5CD489562ECDDB5E7583 +36D369BF9C77642B308C8FBBD1D9964BE256985A93F45AACB09B34491323B4D00DBC23F415CA6E +8C16AEE51992D475F609743725D2C5E080E36DB80E93EFD43CC13BE07C65CC34E074F25202C059 +12F0B5A2AB7B7BCE177D7A03FDC776241410EE55C5324D20CC8C17D3212DA0C54A859D9FCB5BF3 +22AB9BE4645DD5B38D3DD49241D7B7A2AE35B2364BFD4AD827216FD5247737E02B6D6890A9BB17 +683B0CFBD101927A923535CCA8D3588D4D399624BF3994AD63A29BFC459DD1BB141E9DA9D3A42E +C0A38BA47EE8B799E11391D758A4042353EE7FE947B4B177FD0FB8C4DA8BF6EF8D2C8451AEB0E5 +6E2660049A99663FBD48E02F73F8D0D1B732364E4889055A0BB6D9D549B380BA63C1AB2F26566B +7011BDA0C98B15CEE53512E0EA61520D93BC5719282B3CB290727FC6E211F39472F907AF08DBCC +D2884228C8D043A53DC1B77DAB9A5A16F6A75FF6E77EBE9B829BED9A1D433EB6287E93B3594929 +F7358A8DA18D04BB422D4726328BBF37A92151E167AB524C75591CC05D62B3DCD6AED76354C850 +FCCE498A42D363CF882ED3F11AB4A3DC767E1DA4ECED7EA149B399B0AA3F48E683EBE40D6E19BD +4FB5A07A259DAE7B3B434D8D268C04C1F9F05D13477C1C128FA5A83DA0C0F2D50B67479FDCD376 +73967AAD29E506C6DC062E9F114B7C735D04317EC1F930F3B3F5A7D77A6FA00FE2CCB918120F04 +26484D04FB96E462B8F460B06AE704131A62D45B275BC5ACF22DA8E793B878D67C57A318C763AA +50C3841309D3651CA0ED26CEF2B47AA628BB2FF0F96C1C1842BD1484739FF3B61A721A9004CA7D +5D77D054EFB5D312E5621CF3BD5D260A4A743A867D16D1FEB7CB108BE232CD8A46ED8A27ED0097 +BBF241D7F308B47F92E1722298A07B071017E96F42BD95D1E7607FFC158BA678F1B06E9674691E +67538B3C2F65F84D05B4B18E5E3F89AE3C7D058D263E26F95CB8235FD80D1AFA4CC95F94925F9D +0B0FB9DD705660DCD45B957584B05622A1AFD9A9CD0020BF95376A0BEE870170D4DF2A6B2A0EEE +EC3D5C815E0FD62A3DD23DB922AA788316FDE30B6D7E6E574FC68E2BC214799CC34AE2F131B901 +6C226F7B9DB131CE40C2B034CDBCDFBA0065BA14D8EAA55F26C51F26C366F995B4414B1F711947 +5F6337984B9EDD5CD1913FC079E0DE87BC54765EF9636D3B713454722B7B6559E8E1283E441B7D +286F1BD229533ECF1E939577A4C68594C94C494AE6DDFF1C76AC01D7FCA5090C14C9A3E417C830 +EE6C5D709388C23F5133644A83C58C2BC7C061DC883AEDB08E499919CA6E4AB506DE5CF9490969 +2C61948703C77D26B3AB79D81215DE1194F138ED0DE550826FABA5C375E35506138FC5418D9A69 +FED1EA2D14708A474DD407ACF231ADAAFDCAC9F2598E92F5BCE1FFE176D8A30B5AD3E82D1E88B9 +9A70C958EFA759276A793D9FDAC7A9C6763534A7DC877DDBDB7AF24982E0986C9FCE09054EC536 +70A5A26C99076A3D4CB6D1AFA6AEB40764FE9FB030713CB4D43BCB5EE146334916245E6F4CE9C5 +EDB64E0E96DFC38AEC81941D1201E393E0A3E36A555DD60892A0F013068F9D1C12CE12F501AB03 +192D11179A0CA4C6E33E37EDAD2EC01A669871543A4F7D865FBC90ED2A29A3B8CF9CAE8F62DFC0 +F9693F869EE27DE9E90062EB211D5CFF80E03DBC8D898B13ABCD83D31ABA53D4B0C1AF6839B480 +F4E7D3C6DF0BDC2ED19111EA718C7AC96C034487A4D8796F32E45D2AB116F3BC3A2AC18897D56B +15C4D55449C9622AFCB1A2F78FC8822EE5B4B09C991B1491EFD20B66E25BC7A1C8B80845D0DAFB +66D46AA414E9E4391CA11426A19EF72DB5C765562112C7444D84EABD5FAD647144B795B4CB54C3 +F996EAC6BA8BDFBFA27DFCED938CCDF138796094001EFC792382D3E42547782644346CF89DDD9B +2E7F11E626D70936486A8BB5ED4165AB65B9CCA143DA7056305B1F83D2BC011E5CD1168E49A675 +7C05F1804BF74FCE4B2E932BFDA807AB143A498C9455E30DDE165E89731FAB3A38D48DAF9E025D +8E8CE6C9A3121979B982B254BA6D671813468E745BD9BC5883A044C5F041CB342C30B01E1DBA1D +812A38F10BB8A40D6F58FA65C0C2EF5D661A1BA27F8BB2482A36026061AC204CD208F466FD1B75 +17E84F9E52935AFBBE1B58CD8246BDA594313AFC644E5D8F77F04E9B7F57C600E06CDF6B13D424 +33708E054A3DC72F3A367623E9327B23036F3DCD18877AD4C9DA86D8A53F4AB3AEB77ABD848601 +23F294277D086C926BB623A7D7219E03C5781205DAA46EE025443F191A62CB1A0F821642450B3F +331FD91F713761776E8883C66D18A6F4BCF3D5505B211EAAA40ABE2BD80E00562071EFFCC27998 +D11128EABFB6EFD423B7E04542F4DAB3226A0DCC4C127243630B04A8931BB1E48F684EBF29EE88 +071C74549D269850DE6E555E88031A42669880692DB1E5E28F6C2A821CCEE11B95F40D153AB123 +6D4D695599856184D03041CBC868BCD791881EECD19E7801D9B7670E4AE912386CB768C42C1F2E +C49DA1C8C2C2A3DC5758D6911EE72D93AFE9FE7679993965F51EFA6B0B8C18CC329530F21FCF5A +4D2E90C0C8B4C89F8101F559D0C85F7BD0CF7B9657C385B153E24EE9CF0A4E0F900EA4EDB1EBB9 +07163FCEB678EDAB29A0329B9CD778890E60624705B720F10DBD2A2BFF07CFE742DFD626883FDB +F160E39CFFA0697C3B936D9538780B40F7BB81A43AF2C74DEFEC44524EC1925FD790E4B64F811B +FB732E5EA77F57D9BEB1CA3ED0341D5084565409A395F878DE53540AC10F2D1B2DB6266AC088B1 +2B84056FF12721D4B37B9A2865918BACAD5BE17C6A15AACA6E7375196C00F7BE5133C5A3D6B528 +2DAFC2221CA86B38874331CF881FF80AE6EBB65403D8E0CFC7AFE76A0E5098265C0A227B120FE6 +B11AB2D7D4F69C5D8F46029AD2506658B30E11AF17E5272FF1A9B1F975644FB4071CAC64BDA8C6 +B338BE8A91E50176086591ADEED23C5A9CB0F9FCABF5F6F82C0CAE43863F0E9E2AE6E4DE971FBB +E65BDAE4F089EAE7E275E8BB1AA4BA28B4B39FFF559D1EABE4762BEF54446C7C4258893B86F7D2 +67E1FCCB289C894F866A2A11A9C95B0545B70E7DA278A94895279243D1ECB41C938E564AD80731 +E8E64D434FF5712D954A662E18BD31EF0DA885803DB4F0B5815CEEB80271A93BC34DC9702FBE02 +002A2DEDA40C06CDF3D5483D2C2D9EE3012C7C29AD65FCDC275D95F017F013DB4DF24A5B7B09D2 +F4D12AE7E7322FC9625F5DA432AAF1E41ABC3DBDBC311704AF4B47ECD93C3EC636501F34BDEE2D +E5CEAD0FAE15C0229163A2A01AB43D6C90ED4F4EBB377201DD80FFB9674FC0AD1CFFA7BB205245 +3C835BB879B4A7867B2DBDE3D5AF1297035BDE49FE826C31F26AC50D6002D6522D20C817EB3D6E +C7DD298C088E51ECB860B99C11915E94202F241E99D08C9513177092CF84BAAB7B97CD412B4C9E +C8E93266D88D698577C02711B969C68A38EE0BD47B24D0613C2847989A9FE4F3CAC8270EB2F918 +C5A422BFA8E9CB68E075B73800AC69FC5CFD2C8E46E133438681277E69A3381916542B4B0FACB7 +F914228EBF3399B524B8D62F96218CDEC1C1BBE125CE97E1FDFB670CED47AA7A9A9D5F8BCA64BB +3297CE306DD7D7CE1FF5F8FEF50C51BAD9388DC13928F1487551DEF0578924ACF4E766B964883E +EDEE5B49BE9399835B7F44806D2C82DC2281D01D9185D55A1FBED4D61361FDC0ED2DDFA85DDF1D +B50DABCA060D0C04CFF22807903920B8AAC7681803ACEB4739157EF1055D0E9AB220E35919FE05 +72F0F43561845AAA617F222E1BCE24EDBB5B0EDF6E9EA3016C140277744F6B8B432D5ABC00E6D4 +2CF1F7BE9697B8E8E6A867FFFB5D0C083980B8DACB565B6B248E3334BD90544FCD207392BAE481 +470360C708E12CC3CEF568AEAFE340B323633E46720AF2BA335FAA577BE69FF1CDF2C82C8152DB +7D29FF4232AF47B5177BF48FF046C893D4058586FBEBA8EDDED69A283A561A5B671737850C7968 +2BDA668C505C2F6E542516DB912BDDAE5FEC766FAAD1ABDD9A947C36DFA2765E5F1866B08AFF14 +35D35312868896A74801CF5235AA40B3E6E5793432D9A3CF4AFBC19DB7E98B8227CC2B9982AB00 +11930797580F8BB7FDF03FCCD8A2F85AA63D91BFBB234FF1CDBA69F8898231F83CF6E0CD3052F9 +76A2A9C560678FA85E3FDFB07DBB7F9483E2D9EA9458E68231EAA4C54A9C8135A18661DC35A115 +75E36CA421A49D94D93A1CB3F9C8A83DCD57CBF37D929DF48CD957E5960D8A9C0CEAD06181CDCE +112279EC87B32468DA377DC1BC2923B4A3CBB545539CA2F4E6801ADEA52E11593EE2DEF971C065 +E29CD5D6A35A6692C647BC4E448C412E87E95337DCCB48B8804E10C9C671001AC4AD682A8355FE +0976FCE3490ABD49700CE98B647BDA9AD7A8928632688199BD9801ECC62C0A39428549DA053299 +3C6FD19A119E2511EC2F1CEA63EC5A4D3D22A2ECE86118B1B84AA289125142DF0FC2301D3B1984 +0508EDADB027945A2C38C955BA0422501841D1A00A6A0E3170DCB8C436EF154B8DE50EC392DF66 +861C1ED6842F3C0BF69A85CF40B973ADC9F86843C2D4C5D34E4CDAC0D06A74019FCA3A0DB5AC0C +90E19CC0A85F3988468B2023D86C3B62F21F6B43CC99EC53B283293C77108D4E86AB7BEC17836D +C39E47CAB42179F5A8F150B3472E56FD60960C4D44F3C973D0CFB75C99C3F03DC95E811B5F69E2 +4B51FF6C650ACF946F9612C31BC57E040FDD84D485201E7379621186495F1E175E236768A997C0 +EFBA5BE19F855300AB11149B076ABAB6DC5A5E3CA672571C642B120AD44668F142573E51D9623D +83A8CD8EEAFFC8A237009BBDB2A47E7BAB7F4CFD31724F73331D4112157B48BC8FB867E271A843 +27F8BFE231EC22BDA53A8D0B8B48472E7F93139334BCE110BE26F631F9A5922D7D552368E4BC28 +C9F9E69CFA26E519C6E48DBF5D77ECF6C4358E99DCC613056D857D12ADAB3D0BE89D6D8D742A78 +D86C4B7CACFAC6D69EFA7590A4499DC749CF7BD7FA196671F746597AE9E22DFCF5A2FA26EED000 +B1905BB3DEC42C52850C3C9A4165C751CD8F307D11CE80A9CA2626213683608D653459B0AE8CF9 +79A68639F351A8B3270189C3DA5832CFB6D1339DC7E2B30D03254F4747C1B8B1809AB24D80D305 +894ED41262CC9334B3F74032DC47CF6D3193853E43AD2BE1676A8CBD324845B334FD3AB7D3FC56 +78D8A8DE997378763077D737A20FCE4F3C85FB2A74C799ABABCDD69C1FE4F586FC0C3FFBF45D97 +A0C769615C130C6FC75808887C9989662ECEB740566DEE736ACD61B017772D7209C770CF9EB8DC +C02BFB9D5423A81FF17FA4A2567C1AC8B0E14A78D325F77A58E889D16DD3990FEDD1F5FD5F44AC +69E1A1D97974B78FCD0717219724115190E5FCB49E0B28901E9E8E2F2F7ADD229F6454302E86DD +586B256E6132B9F4FB1F78B0B31B95B80E2AC7703AE4CD580D91A8E305B313794DFCD1284646CD +528989A483E6A499D4DF926C441356749B7CDB119E33E5250C8CA5DB84F801F0271AC10F0C05B4 +DA643702766B83A2B2317F11EF4CE3326542319371923F7730181FDB6180FC49C372FF32F47A22 +7F99CE17C050C1C7304306034ACA89220383C34195ED69DCFD4BFEF504516912FD09EEDE650453 +8D0F5D3584518592206B0AC1117BD9226EE98ECDFC6C5E8BE7559C7CB1A7CB224A81606D492A68 +E579844A709B0BA5C12F57E90128563D8EB5E81FCB3368858822CE15FAD288E719D9072B2B7E9C +0C2133C5303DE39EE8D3410CC98A35C2EFEEF5FC4706BC489CE7A80CB7C6856F6077A404FBF412 +709C4BFA9E4CBAFDF8C49B0C4C7CB5AA70DD4FB86E4D4150199C074DD1642B915BF56CBD2C6D92 +B0ADE5EAD059F1432B7C6CCB6A1B371F1B9AC5E5A09966530B011A660E68B4528253EE4180A7FF +63178BA85164A8F157E4774BCE7CE7568C8BEEB26F54D90B814408AC67F952C26D85CA474E1327 +D086518931425ABB66C4EFFA35EE0B1A8DFBCE7E70876595B4A08B1F4D08988CE44A19C31C2199 +1A8AD4C45BDB0AD770C5BFDB46EBCD665D093A9E684C3A4B4C7560698B4F72F01E2169DB0E81CA +44EDF255074CD96D24ED9B2C6CA31ECCEC5D5B29D0661E78A6443210751CF69367AD49B8BADD37 +2317068B2A3B9A8B17F4EF841085F46B6D3CD40A97840A0FD7CEADC3A216C44F1B46A1735DE37F +C779F54274F19713387EE91970343BCC3351B275DBBBA7E1A58EA0702E7B2AED4E9A8879EDEABB +B2FB3AB4FB7816C0FFC9CA9E769C25328F15EC0C5C7EFF076B549385EC789D49A8A15092F791AE +848E85A3712A74665F540C07DF026A2482D15BB73ABF28284E9D238778CA179FB5CCFFAB13F8E1 +39ED8A9A16217B8ED539FC45497A61192A5A1C2E8B55ABFE3E252D4147F892623D244C268FBE78 +E96BF76EC6C44664EB2ACB28E987023192BC5F4A4FD50567A8DB620AA2E8FDCD6A8801E43C43C0 +1C458ACDF647A532F55980E888AFC6A31E91A010E927139D127E9C894C491B15FA2910128C6B99 +41D12CE79C1770D89DEEA08D1CE8B549798662474327E77F9BFACEDFC0B85ACF99CE421CCFB290 +3D6C54FEB44D812DB80948C8236EA8A66BEBDDCE8FA61F00264D1921AC15E50CDDC7E7651A40C0 +AB5B061C54A681C2DAEE08642B779879183D7558E5EA0A71D1C2573656DCFF548352E3FA62BEAA +6CFE9B9C1BB33686B6B036D48E5BF954A64E87449D14DC846CF417155E97207FC540EA13017BCF +A6A9CC95E86B6CE52AF6DEE233A93FD1B5DC4EC4D320DF1641515123CB2A4A87F44D00A1359800 +88A8A8144DA2DCCA2083B7D8E5B984B87F447AE26EE1BA9E0996125F27D3B9960906E5E0CCF1FE +50EA2DE14D44BB3A547157C8380DE1038F40B2CC227766787E2DC707D8BF481FF22703B8EC0F17 +97161A36A486EC592B99F236E2977844C8E2C334C9B8211C672E24D1332A66ADBD876BB235DA88 +61D26D4DA0F262A0ACC0133FB4A84CA0B750B20C87008E9FD7713F255B5E138609B7F5F68A3AA8 +8E022D298B4B7FC5EBDB7E796E56D8611D2456B132E3F7167478098DA0B010D5A561704475EC12 +4586EE607D5798C90534B2F7242F0323946E0D47D103F71AB862CA6AADF81E993DDE5608F9A936 +2DE2D0E9DE8BF2233AF84114F60486F9B14F40B15087D1AC599BE8D4B92E55ECBC2D0868AEA425 +746442098F926CD17DFFF7ACE4F3F5552CC6D9973DEC7BB7A27EE0FE48C4FCEC30848BC5E0696A +F3984D073FBFD0E4E38264F38B6B3DDAFCA007A6F423FA923DB68A47D079E34E40BFA5AE486D0B +B3DD6986CA492B864AB50452A5B2D0A97215244231B43BC5E78E876E06E4B9F65DA41188E6B795 +C175CB62EE1AFBD63CCF466B3B8CB4DE50420AB8F6BACBE35BEBB64E23104E8EEFB189350012A3 +3A45C90FA938FF8761BBC6C13A30F173156606DC703130D1CF1B5C03B17586C6678CD7DE073728 +C5AACCE94FF5AA9A6DFD02399A0FEC4088631E5DC0864629C623AE0DAD24A9B7932567DEC2E400 +4460BCCC718C875CD3A3C0F97013F2447C4EFF0AB6D67FD4448724A818B712C23221D9BBC6912A +BB51AA3BD3E69BBACE3E93576507733E062489F94C73BAC84D57388F9087C38CD281DABD81DFA7 +38AB0B7F1CA3D4F1F5E302C604229433EBF019367D796B0377ECB091A5D7D0C6EB1961EDA2336C +C0AB351632D7B49A73173673472E396EC8919738C7353BE1AEB479EFEE8F4FC30A3436256F968C +18CEF780F9EEE256E4B392955D10CC9ACA99EC40684706485E56C211E5E07C6F81E8E0CB33D2B2 +0D3C555652267427E2BE5007CEDF662C2514A394DB8C0F449C3548A2CBD965CD6D479ED1EE6504 +23B71280213667DF2DFCD4B5B655E67EA62808D1EA972C57A0CF297BDBDF5712CFBB51E02B052B +E5B01754205B3B145FF213C6E9D446EB20EBF706C6426105E9BC799FE73270E36048D96B49985B +7726B0C02B6B02CEE93E7A67C9E86D63AD14E0192DA72495750C0678EE99BB9680B91F500E3C26 +545031626E7FD6F6982ECC33AABAD6270F3608BBCC88C20401D83FCED8FC013B4EED9D22CFBF19 +E6C0A7AEFBF78E707E4298A9CBD9C63912F418939334AD1E7CA2D7756B7F453AA540034899B220 +B66B5182E2F99FC3983454B89F57F08BF233B93B991C6C31D45A8F3AB24D0D4900551648F45854 +8FEDCB885E940AD835F744CF65C1E912400F358B8191C3AC5A15AA1E276F14EFCF0C154AA69D11 +B30C7F6C692D081696371770A5651BEFBA9D7D56B5A68FA294B4F45B4814AF64C7259CABEC131B +70B43C32EBDA12F1D8FCE2E0A3FE0ADF5D0F6D96FEB781F0475EDD8907E8B3839321EA8FAE83F3 +410932E9524A65D88EF8641CBFAD79DF09C789AF1F9E8A6442577E4ED60FF2C7ACDE6FC40975A8 +B7285F270C6B51DF62216D8BAF17B6C2E2D4680D2A917CC0DD608B50CB33A18B6E454EABC2E6E6 +55CE256C37A4034B829EBD30C89E7AE5C9D2EE27EEC34C75E596B4367F6AF189A85F20B7F17C74 +8F7C27723A5252A24D18AE5C72C1F24336313280527DC309E2B19114613341D82EBA6DCD9FB578 +BEFBD78142357F7A7CC1B485605B98BDE2280E9A96E9C358A83877F03C7F88885A3E150EE84102 +CE40C0BF3C175D64EE1EA3267CC0C81A988BB8B093715C9E8290AB4699D0139C49E305565384FA +4E59DED9531AAD79CC725DDAF046A22627E9F118E90335F9C72DB5229B6A9967432CFEFC45378A +F129E41C7A49995626EFDDEC816B97F2366EE4A8C48BE5ACFBA5500B663AE27A6342EFA0AC6C39 +C7E1AC0BF4284C56E346F4424311E9EA3FD5C78872D3C17681E0676AB34E181E347E6AEACC1786 +F69CC485CEC70F1D2B7A816F677356CD6AD9AFEB1C0D0087A1BEF53C6BC24A567BDF050321F978 +2D36A87F181330B1C143BDF8254804C6EDFB51CE6C5101D039886EC666ED1D0DF7B4787FEC6D7A +717475F5B63104C04864EE02FAC35B1128FFBF4B589E2F0C928146399A9B5BFB0024706A3D46D4 +5C1CB6AB6C8314C6EF4C45B77CB05238D2CB8E3F7A990C16F9E76FC049D3A9AC98202A14CB7C48 +A630D7257DE1D6B711D706245AB6456B86D385F12AE3BD2059D4755591DB191085AEFC973AE56E +B28C8E3823738D63898E48097329645ACC8DBBFDB0196AABE9AA789EE55E780C80D6F3AE76E803 +234AA33F7F6C60F87B60ADE651A5B171F03181D55C1F935BEB1AEB3533510DDE00980E2D5CFDEC +6EF1E9B83D19D30D6CD7655FF25DF2A9F02C4424DBBDE80361C4A462487DF7EF68F3A860A9567A +5D53AAF3A6BB101FE0C1B9FE4A8599E095E48316C2FC1EEFF775FA3D971F232EE10D8742DDF31F +8D7BDBFB4E49D54FBECEFB8301CCEE0EB6A548C719EB711F952673B539F2CF6C1D32A6F4DDF1FA +DBAE549AED0471FC652704012BC6FDE62B8C2ACB7C049273C0763D8073EAA799C642B270E6C2B0 +9F5C6F35F2935C38831EF27DC76D475000EE18A475CD97DCC41C7DA23EFBA0C98D0A606D69CB12 +4F06E638B4AF6D490AB59CFEBCAE9E90FB751BF6C08C5EF2A8DFC0FB8CE5BA1AC6A57A08E4C372 +0AF0D20775B7E742120DB766D15FD3FEE75D2526E4154F339D4005B7F01126C32AC449D604B469 +94061F54485D69EC7753DC05A0C371C61606E5418CEE0577D313D6CC5DF66770AA423E0CA658D2 +DB94534850F71092C32A75F2C60C8CF69232DE86D490077514748F03367BADC72DF886917D5330 +A4F5860FB819813513168E609085963F2D0A041BF3FC457A20E20D4A644E38E5FCDB02DBF438F5 +CF2A7A7474711932A97DC5B7BD640EB370F9273CB989D86ED3BFD54BFE2A93F3658A236638BA7D +902804C74D370B4FF9BFE8BF2ACF16B7363EA8C3B358E5D826C2FB1CA3C42BB76A52AECE7CF172 +430E03902E96089B91B3A76942D95CCFDB1F08F6026BCC404B2C5B38D73654DFCE9BC7F87BD134 +D612023FAE5D7F53CA6441715F68A43CBD0BDA0FFAAFC6BAFA64E4A621F965DD3D0D767439F824 +87364697848D247D424ADC595E2FC63CFAEF0890320232E7A200C0E45D242B6AF3D2BCB983CF0F +7D9D5294168490CE3998FD44DD167EC8B46C7F97E9202102A7A1C3F36389C5CF7A98808D7E46B8 +C02E4A0F0D0A31D6841A394CE703F064111DA44E328F2D168EF33657BC5C462C9209F5ED0305FF +65CFE53A6648322B266E6DFFAECB12FF9296EF1DE1CF78567705C425065960C689485B91D50F12 +E2B250A0AAB910817FCB444E3AED5FDB246CBBD55836D5714AA42E21FA101149C3F1517E0B967B +5F424C4211C22C6F88ABBE3FD535393F500033F3B7B3BC558FF4537633296B178C9F285C3EFC4F +A15E42A91839A18D7A5BC7F1FAA8C76A70224089D4B28B507A608B9FA81C55A5106849BE29E770 +6B4EF570BFAB2F21570FA476C25791CCE50A59E3422498B691C2F9FEB2E8BDD7C27A7278A45E95 +D4A587DAEDF4C87782A61DA8437C158291AB113765C8588EC39A521F1ACB3168D5AEC67AB75354 +257C43FEA4119C71E63CB65FE1FC1F3BD9B690E526D8871E3B1C4F51DD469B57FF2F54B379EF70 +E86F740C6FCFC9D8F8805E90F5F0061F2B7527F2C0237DA888F73874D642C33FE6939254575197 +248F9D11A90AD234C83DD007FE6C7844EBED647D37379776DE739A5E0AA18D0E3EB7F8766EB70E +D41FB24B4D2EF0F321B176CDEF769CBC99B2B3173BD7FB22BA6BC87B6B6CD3AEF8AACECC8C5D16 +67DC8495B2EB6F4AC07C4F54CD75F054C710E4A2A102530B67C3951FE573598E660178C3EDCD93 +42470C97D3F1E1322B8B0975E929F2CF0FCD8F576B07A1F72A217EF6830B567466415084496140 +7922C8164C34EFA421208ED77D293F444DB787DCC22AE7AD95C441112C4EB8ACD8730C45D60CB9 +604F6374EC10ADE2380C3FD9FD3688E5B5F7ACC60D9255EF6CC58F1771534DB9DE5E1A3F9CC5AC +C4A9CE0A98AC7B9CA91565DAB2EB77729E7D9F3B9F9BE780A69CCDCE202EF5A4A616BCB4601F7C +EE9A20DA2E55C1E0E530BF768AFF2C58BF11B052AFF4C13F6BB32BC76CC6F9BA5517FFE1384572 +BD79865C2BF1954384B53B80698FBFCF57F7A1B37F6B062CA78EA13A1C924BB96129057D420D95 +99CB33AC26D9465F9751164155A419DB2AD0CA773DD2BAA09ADDDAC9F046EBD582265FEF23D275 +0E436780DCC1E04601E065A48143460117CBD8717565AA5A63FDE2C4B9AB0B6DDE667EF032B1CC +4084699A4B85C817516F42D4987C13179A45834130F0B34E68D3AE9E9F86422E9EB25A40D06569 +B5D14D6DE5DE444E9F69959F2E106B7A21618B23C88E07AC7BD085485B5F11CD740A7AFA92AB7E +599E6BA2FF4D7707C5EAC69845B2B4C4D320E78678C6EB9037BA58E7B2422E8CD950012D34FD34 +C973E7064874782C4F9A1814026E86F601616E32DF0AD00CC90F094A122A0C9C54889CB096B745 +3F879FBF9B402BCABA81CCE2EAA9E3735E4FAB705F698C122D95CC7DD8F69BBA323DFB26CBB29B +778DC6116BBDEB39DC7808CFD87176DEB1EDA59D6A849D3D5CFA2F526D5172A7769E4DA1CA7B8F +F51A06C455F9D5D4B53FBE1771A895406B0964A5314FB09F1A55B822411FCF7E0F689D04B3D018 +C80081D315A798CC6431D561B1C1122D1D8A710D9C5A3E0B311BBC142EFABA97F1437646AFC708 +158637B6D7791E540F20FB0D8710CB7AE6CE5EA8AC1BD30578C9F42B669F2FF84F9E6F24EDFBF4 +9E24F0BC25283D56BB081EE9A7E4F8D5BD1F0A87A3D9140EDC1E57E1B75655C08DDE268ED50F14 +3538B4C83541A3A85ABC5C15708D816946E4C40EEE0F8FF9A235EAE3506BB4937DCF7DC4A62CB2 +A59DE3167E3393D4763A9E0E396FF1EED2F30C4A9EBBD757740B666846C2667284A0247D75EB60 +9AB9062EB8A23E33104B831C15A01BCE37A6E226E707FE488093BC35C6E98C032E4CE049C295E0 +9FF46293F0D3A243B635A390CC9D596DBA8409F5F6B1F8FF68F7E3A4349E2B67E842CC141E83E2 +C2CA3B1D3F2BD0DFFDFBA1B0C7200165587C8A7CDB396A0028D01FC073DB2AE1E38779134D3A5B +51C627BB01C3EFD24EEB0B0BCF91AEEA1065A14D17CF5EB1242D5A0C670BFECA0B4FC7D35B2B15 +B1F68F808C67D7F56E10E4C00766D21D65949016DCD3FD0321BF43771FF0062AA10939938C1AA7 +6424254D17C39DC87004B4D858A29457D88BEFB68E4204B7252C81E74C0895CCDA8763258CACE6 +63712662C3A89711F5E7B8C2D43AAC90416BF723B2D6A741DFA748986A36BEA9E205BDC374E0C4 +7BF434351A25C64D1BB3B0A94BC030537940CEFB472328063FDFBBDB8F7A0DD4B9FE15C9861CAE +4A36A036E4B63E7952441444B9BA959238E3DE4C14D352B2E9B54D79423641099D0A37AE79C606 +4941BE30CB4B5A159E34AF08829628DAE038E0A26144B7B4FBC13188E2FFE46664AF58B1EAC60C +E9BAB106E209B3BCCA32B14F73F9801DEF2EE6A7237615292738861DF9C2AA8806CC9F539C297B +6868F51B3F92C6372F8AD3738F70F1E4297E9DB820AE0FFCD9C1B54B750EA2ACB77363B19B0D53 +D05AAB4745A259D374CDFD05924E53FBF67CC2762BC6A92646B77274BEB4846D648D2AE89869EB +F18655E4A34EBF6F62131B10F5BD5426668C959EE083DA56DEE108EB1B6EB4725B295A5F08BBFE +2B5712CFFE9F8BB820CDEE90CDC0A339AC7CE1DA1C9D6DE0E2666FE9805B46525906A4E2321282 +EE75B325D3A14F8F69538F845AB7E011960C8AD392D4F640F75D58811D94389EB29BDF050656C5 +5177181A733ED09B956554A012F2987F952928851379F50B973084226B5D41D6D3409643A1352B +5354D055F2FAB3BD98C1385A63FC50C7A961089B86626133D062454FC1E342D1642B914D8294B7 +BD268959AD7F3871586FB2158CECC177ABDE4E77B0745E1C5BB7E3A9E6CC62BC3E01055A5D1D85 +93CDB07EAF7BFDB2AFBE02166E1FF4CFDA342C9B2D9CBE4DB6ACC327804609192D07E5841AEEDC +B85758BAE8B0E1769919CFC30FB8625DDA743BCCC50A36F7C0707A312BCBE49117D16277CFA82F +40FCEF4429D674BF4BEC6ECEE43E365098FB932C791FFD4D9BB72B636BF34093CB5CB8337BD48B +FA8ED07238DE2405946D773C1138F83ABD93F0D6EB0FAE695A8291729974E66BCE122F18ABB5D7 +4F8AA5A2D8E490B340A7511C3ED4F3B39CAFE1FF22260C96AF89BC0A3789E7157E55D9659D16DF +E9F86909CF578E76BA01A5D5CAE14458292A8E78A706326DB0586B6FF98C2CAA56260CBC0E8242 +A514860A3B6F82B492ABF6E4DBF281AC0772B9D13CDF6EF339EB4034E057EA96EBE1EC129A2677 +6FEF480AD5956E3F76276D7430EE9224DB8F40082ADF75AA1DD931724C293A464C04BFFFC36A1D +F37092064EF72D0A61C54F2F3C974075BF9473C692173B64EDF0079103C80FB2803D2045BBF0AB +7BE1D39B98DA436D604B8AD7C9E493567181A548CDDEABF26199AA8613FEFE460AE2E1240CD368 +2C8C7B1816010D0456ABFB9066337C77D9393CD29B33907F52B5AB2E16155472398C59DDF19EA9 +6AF37C9B01C2CBD42ACDCFA15740EEA7984665C4B03A3D2880B37C1E88046AD18142146D53EA80 +41F2F17AA29FC56C21AED1F19F3B1591D4D5F7EB70178FD6BD018AA2E596624955EB3753115EEE +610CF7C544B180374DA3B15C939E813AE934F69E486FCCFE591CF6CA4146E53D18817B58E790C9 +C9149B6CAF292D281BFB33A553C5B95711560A1FFAB95648AC9390830CBF18B3B6E2DD37C29ECE +729F7A1D1156D3DEC1BBB30038CF7A1991AD1D08C199132095E9C6B30F5DFBB4EE6159DB1B3E2B +1F7D02995B99B08453217E2668BD5FA546EEF020CC8AE97466C51841B3CF60C6C0E5735CFC580C +4093D435139D7C17C3831573AE1569E800E7D6621E3D21DAFB204398F94A7B4A8324E5A1D0AA9F +E989F55DBE3BE1708ABA923B0F5BF958AF5392A0E330F0BC76BB93A873A2F5FC89101EB8D0F78D +598BDD66188C632B8139C840ECB82D9F1D73C4088D819CC2946D5BF689FAEBA7C41E661B556055 +093E459949AC6E860320A468AB4AE304D8AC4049CBBBCF7FA55B4AE8C2C911F89672B7F0FE756F +509324B893DF5AC164D1B012B82ED6A7603971D4433E743632E82D16803CA4C4EE9E5A468314F1 +AEA0344CA6C139D44B84673AE6B69E3D7EEDAEF561B5B22ADF1BBC98AEC72E60B5294413296E60 +A1B461E92659C53AD13AC0F4765C5F65110EE192A8D5AE25DC05FD665B8ACA1B0C645C976213C8 +A9F5AE0D8230B3FA14FE1EB5E88DCD7240F1CEA3E2497BE695A3BD896DB743CBF160B88C3647AE +F11671AEB0E9E42160642E7CAEBFD5C38DED34D78B0387D893FD28ABBF08C69466FEE90C92ED06 +A135E8E7BBDDAFB2B62C246880CAAC26C573799DADD1D3608D3A0FD71955CCC5A852236DDDD285 +899A26BE11AB3C95989CC38EBB04246873CE1FE49F7C3C85A29FEEF107DF4D655D4C5FDCC5CB57 +EA15F493CC22A52BB377E4B75EF9C5D50E3B8BE09FB62D0110C307420B7458CC6D0D9AEAAC43F3 +0FA7DD20F14313D0ADACF4B6CBA088D3E64538AF475E07FA121AD510AF61206BF857CA6F4DD888 +1BD5E3D6265EA835135081D699485A1BB5D10ABDD65B66A7EA884E4FB6063B8F3B439078F4FFDC +A8053A163A8AD20D1F0B399C09C11A2E9F31A48BD4F2B3CCE947896ABD38F10E880B058BA066A8 +337109FB665E55C31672AE1839A72D10D64055DF25961E8F5922B774F0214EA21B76AB4FD99649 +A0E3E2BA4731565C2F9DC44F0408C26E9F4FC99CF376B4372E356F0B701FD121BB47427793DE60 +B117859A33AB60E5B463AB4031CE438D3ECE5F9CE0569615D40239D9944CA5AD9354A3938BC479 +3A279F32FE3D6F116C610A1D1B8005395F97099D4BF0CB4C1C75B9AE89BD132125321129E535A2 +301C97FBA4CF5B69CCDE9BBAE194BB0FB78719C7654296ACE75DC74664617B741CA20D18F7BBBC +C4F0A3FE9F14F564B4C9FECB72EE985F383FF10D22446A764E4D82B8907C29C026ABEB9C079DF7 +E297BB5266F14CE272D9C4F2B86647DC22B44BD7648D9616C6AE6456BBB5A14ADCD2855140B80A +853C9F125CACE4E0B39D1AFE35BA548D362A13D4078B481B31FD2E9C40E1BF680E649AA4C1F9FA +5EB1620666583641A12FC4C388269FE1A147046311E7CBEF7C77176A7939FD66363BFCCF7134B5 +18DFCA535813BCDBA944C2C770F292E854ED18009F5250E263F6DE184AF8A3D21D50C5BA7244E3 +E8DEFC905CFDCE58DBA3D215095A0451BC807042F2470FC8914B2F95587AA20ABCEE1EF88D984A +7B53719EC189D7D2A22CBEA283530EBF7EF214E0C2A4F2E245C4D9D5522C9B3A57C71E295E6628 +EFD6EA26FB0FE928B1DC808363DE3666F9793A2CDEF31FCF9592635EF4F091CA5231279EBEFC60 +BF668886D2488D6F4C8FACF0BC2EF980D0C9756EB0DD2622AF9E5D8BC32851E5792EDEB4026265 +CCE3B64F6E5CACCCBB3D6DB138C1773A256D83D028F2DC84338670BDFAB12F8C2ADEC27F8BF6C4 +033CEEE9034AB5A350C8D4F7B72ACDFB342245734F1362F40C7A38841B871FFCD4117490EF09D7 +62906AEA0AC89566DF98798A9AC2E4B7514C762422BE8E090FC9F06ECB6F8B0C973196F4B258DA +114A1BBDABCBC73F6AF252F7636B828B1ECD5E38ACA371A51F4461A9C6F9670421B4A7CDB0A58C +3CA6D2B9B96629FD835D849D4D8B687968A3461FB6B96E93483B1B43936BF50287992826AEA425 +5E21D7C52EA67FE1EE1457834F828D8F6E2DD75A913C7381D8682467CD96CC97ED8EC78397DE43 +B9F6C33452ADC8C4242A60CB162744756E8ECF4A3242CAD8C77E706DC671F7BB4EA415B68DDBB3 +3D0EBE13C1763B7B860FA06A5B66EF50D5CA984E1945FC459B69FD2D31DAC306B17658ACF5B4B2 +2FD5EE1856F777827281D4D862393E2593B4A128D6D0BB12B93573B9E18EC463EB1C18AC3E5190 +4638A2433B0ABC1ADE958E6BD54F59931BAB4D8B229D21DCC36CDC971189CC9F6F4703926E7380 +6E38F97A202D48A4B1DADFC6B1FFF7F6AEA473828397A8F6CF5BE57B678CA42B6D535E6335377F +C331C5C398EFEBAD11D611E15D132A83A1AC687EFB73C607FB101D8BD3F14AAB7F762FC5EE5BDF +8943EC11CAED9D883A319F1234EB87559E3814BC904800946DB0BFC793FA6E83CEC70ED9228747 +12DA794A834B1E9F5855C97A3032C7B1D3FA281E05DCECC51AA94B07D90F4B10DE397398717DC2 +3F1FAF466EDD8395A0C8D44458AC6BFD919D8392B7BD3D3AACBBB21319521416DC6E2751DEC623 +CA604E9AA9C14F4D1FB39ACF5A36853AD005CDEE58A8948F1D2E6AEACE15BEAD46B6E311B76FC8 +80F02A498DD37E0B1825EFBFB2A3AF0A6D8314431E34EFBF41B3593DFF09270E5BC87A597ADA5A +5393DE4A68F4FBE554BD1256495B01265E0291DB12DB1D374B91A685B05493657D44B1097FC904 +FD7B2ABED2AC24C074845A35BC658C7C2FE3A33616534C2CBFB8665D0E03E6878BCB91884AEC14 +B762593E7DD7DAAC6E180E1EBD9A955EBB5E2558381A680213EE5D90F6E93D522B6A6DEAE39930 +4F229B509A84329E2FBF0D0056427054495268331585E2FFCA536D2199E11951684D299EFE32AC +AC48E01956EBEDC863DD6E3F69A62875EF50C9339C6605FC59AC6623CA09CF7A55330031BCD648 +9C0DC3A43F0388A9597EB16B973A24606A8481264AD72C8B009090B14AC2AFD97DD6A07F39F922 +B981FB10B852802D99A5D254B05EEE999E7D0DE19F7A27977ADC921C8EA58E0C40CECA6AEC2F4F +D5A751923756968593CEEAEB5AF4EA0A4ED99745EB533AC488627314571DF600427C6531FA43EE +FFBAFB6A1C3F94E3B344362B6ACDACB7EF2AADB2AAB87BB025713DC371E192D11A2258DA11CE15 +27E60AE6FC16E5C0BFE349E39DF1035531BA25660D68B1E3F5F534810DFD05BD863F8A6FD8E36F +3C1C4B42D69F2D26234165AA0378BEB6A7AF2BE7E8998B90BAACA76C96194A8A07D07BBA0284BA +EB6232275CE78CC040006F6BA5E432BE8CA6D0FEA6D9B1E9F5E16CC9B2945062BFA25DA8628FF2 +7C72041C15ADCB295BEAA965A366686FC07ACC92A351EF6E0D7FE13EB718ABC73B8AE07E13DC19 +944B09E1D62C452DB25AD4D52E11DFDAFE537868340275F278A8CE4270BE784C6366EDC075D593 +3C2D288C3F18F5AA3A693141FA739509237763E5A9490B5F632DCA112D43BB1BA4935ED91F2428 +7987385FA8A685EAE387FBB73EF91E297F65D92275B26B626356296B1404F25E60953D6B19A98C +664BAA8A652A27408B864FD6FB3DA192DE47967BFC6C2C4A91FAC3E46B11BC4B412D5DE6403DC3 +50EC534EDF13D98D5DF32FF996F13BC0D7603E7E2EE69ED9ECEDD3E703F315BA716DBD25D53412 +79B87FB179DCEB8A0A5586789E161FBE665F327B86BFA013041DD6CACAEC5C1EFA93061C991935 +5614AE96CC9E60FF254C8A40ABA548883EE2E61D634596E38A8EFCC86F0A203216F2A2AA252F29 +827EFE096A47C2F48FE3BB289CDCFB80CAA22E5C0E60A20360A525496F89F5844E6C97E56D6EC5 +ABDBC71EDDAFAD40D88ED93170F3D691E5B16304D42C0DD07B492B7E1714D2B97CDD869827F506 +3DB788201124A48A5157AF71C7D5DDCDCDD86D0CFD6AF670F51258326AD7B611855BDDBE79F3B9 +10A8CD6835E5C3A5CFBA22CA07E387BD1CA58099590EB01F5FB9C04E97C26A5CFBFC7B17415FDE +4A25BDAC2BEB0316BC414136E9C996E1BFDB67700C519F68C4029D123CBF152AB322DF3510BD69 +0E87FDFBE06F21F21D3745FED9C80E82D506D6A06ED9ECD0A427B7DC2B215747A126AC275CB3AA +67D30534217EC909BFB20096AB80572973FD4E11BCEACA73CBC8431769C2A87CEFA1268DE84082 +9989038E969C46324105803536CA5F1315259AE6258D9D9560E3A221737B2BB013AC0337A2AC10 +398030BDE5823E61E6819561D451D1681D1242892DFF144FB5796DFF3B605D654F8C8F9A557865 +EF18D5A0938942900F3DEDB0CCB6F602BCA272B059DA538441235351F4CA6A11990BF72FB53617 +8DBC98A5F8B69CB9682EF3BA2296EBDAB4238681EC53F5C0E1393C6AA486119E2C9A4EDDE53366 +9E6D12BE803B0FC8F6CA85974C454A7257F886110543991222C87BAC796199C0BC2727A539107D +A7B456D9BF8C5E22ABDFF04B637CB33F5D54C0DF2663E5C90B56FFF2D9EE560770E00C99D7A8E5 +4B4E5FC23293FD2AC6B2F6E4CB5D323C9A9C7B7CAE4EFE4759566D89E18896AED1CFDF995F020A +6DED2244B9EB91388D651F7FD2584AF7A959DCE706CBF85161F43A89EEE5437C38E7B41306F9A6 +0BF98438D80A160B19D5AFC8547B05F580675B38BFC9A657EF98C4C93FFC6A0F948638F064D10C +EAF933B798E36ECD88A1B5DCC805F51CDE99D19869743B42960076BFD01D19E107533B03A8C5F0 +BA560255AEEBFDF4C97E9DB34CAE21FF8483CD73D97929BBF7D8B647B1273C974DFBF4EAFEAAD4 +F6C7C11A0E5CE62A017532E453310209AF12900E72D4F2EBB9843B1D48DAE62C504E77D5D23E43 +432CD52EDF4DDA9F8DD5333EC9762A040E1D900BAFD18824324100AFBEA4E626B9421D4D782CCC +2350EEAB5270B9161595B86EE769E69A2C6714ED3478E40ADA3B2B9A6536A6B9E3DBB1F53AA0F5 +26C4F9AB197C714C60FD3C8A76EA56ABC68F761F94312A7E94831900218DB99454CF7E36C75172 +5C299670A50106123B216D83DBD9808C4FA5FD314C90F8A57998990DD3AB95B26E72FEAA78321B +BDBBA67E75FC40C958717FE36A63060313ED36231CE7B6093424F7522C340F09F5AC3927989AD1 +B294F45DD2D95D2A17551DEB57A8575C6CC08D1545C26818F42E3F618E6BD750EB448D8077C976 +77BB145CA3AD95E2F3BCA9413BA7B6E7678981D45C52BF6996FFE5A497ECFC11D802B35F212675 +59355E089DE0D13EB7B5913E1C4619778035F55B889AC066FA34AC514A4ECBC56BCBA64B6E0309 +C54D8E75FFA30199B7C66DCA9CFFA486F543C700A35AA429F54B4250215618AFDF1B5408B901CF +A02B10AAF3A80F85B33DD72FD11CED19D6720F34F61F720C892E566271FF5CF22787DD57CF8CBA +36A0801FE5EF83E7695D182C5A0CBE5FB81D4F0DC10D50E79A19D8303C3E7530300EDCF3180C60 +D1A58EEA8CE83192346783F34DB4CDDAE0E1252074D7AEC7F633BF41AE95665E62AB9F380E5EFE +4342977768603D0955B6250F758ADE1767434A10E6CC98EAB29656EA5DE447E454BE83AA97D0BD +6F199474CC8E4E53B0B62F0BAA0F04531162B571DF6856D039029688C0490CA2CA96A466943BA2 +75E0FA3D01A8D98FE84CE1BFE7CC619468D40E75EC428A806468C04147393113585AB3EAF1C178 +9A247885A5F0DC4B7E81652E70E75ADB649BB5A9C0C9422C50E70EBC90D867236DA3587DBB0837 +6394429EFB8EA7297028D66DF5DB8E561B360E3A47A4B378A407A141C994832B3C972BA80B3B65 +AD62953494573B43983F2B79EA28B9EFEB67FEAD2F073965C30BCC357E844D8BAB4764D7F9E87C +57A318C751344A280046EAA55A9AEC524C12BC874446026CEDFFE2E4090688FD94DDF8D35DE494 +676CEF4143073576DF07406D23ED1F6477FDE55CF626F1D2828C05222E6952DC2FFF75DD3C6AFA +A8C59B7DE7314485AC9227641CD1F7A8C8DB30FBE27BF8154BCC54B5BF7A09D04F11F2B8D2CB12 +BC2C0BDC9B8BAC70532FC29F00DA0EEBF2F6D2F791028D1E3C8492180AE76C83156F88512B3D6F +6E3C75472812E99D2E0C3109FEDD1830218DC4577577F5F7B03E6F4FF39B1DE3E2429C60BA36D4 +B1C4A325166FC2160ED05A4B7E80720EE277DD507EA2F46D8380F7F02CB7770B210CC58F9DFDE9 +0659A224CB92E0702720C2A411F6BC0B5CEF33A0721D7AF7F15591B25307687C57CB2E8EEEF70F +AC36F2791B3136BD3F8F85355329647DDBDD68FD15301B5CF7E73C7C9EAE936578549E9D11D8C0 +578C5278DD64081A5BCB9017D3AF56B2415F790BD135BA3B0823BA4664972D947B3BC079337080 +5D00AC2EFF9F14C042935912E459FED712F49A9104E2B9B0ED7326481C02D53A4199BCE63FEC64 +E53B344A102875631534B4115DD4A07824D6B727071D690810BD7C666104E7E8A8EC2DC2936599 +F13ED571EC47D3C4A2CA6730564F022B3EA9B53F7BB747423FA72C4EDCD9C95AC40EA666DF51CF +DFEBC998D1BDEA33D1EB9CFB175A7C4D3121CC3CB8EB8B07E99E0430C1936B4AA11B6B2B6827E5 +677BDACF042D5B15101E163354FB5FBFC6066DD9EE175BFCB3080121700A181699344E3A1AEA3B +B1A0430E27B576CC81A9A1DA5D4232988FC2D2B6CEBDAD836FED481854317288665F1752DF36B4 +F42F153276E257FFBDBCD288DAF23815A1C82AE22DC762163A8A5FA7273F3B4425A552AAECF2D6 +14FDDD90CB904B7786608C3CE1C6F75B5AC9E2445420D5BEB7CAAFAC3CD26D05274B8590907EAA +422B1694EE699F782CD1D51BE5D1D8E2CF2BC00269677C68C73CFE08D0EEE6AD8714FF16BC4C4E +E3AB0AA4E1383F2E663DE1399FB4B4FF5621D612C96DDD49037CF7F72C106F33C9337BEEFEBB3C +0FFE57210FF4396A233ADC993C4E6440BF554EFDCE22D18D4DB13DACD9E6E28B0A412A4BF3AA62 +A5DD811D29CDD5237E863D8EE2DBBA238B47AAAB2EAD10335CF95E0577F7748A8C0F218966E4F1 +9253E234ACA85047E1E5E54E9DFBFEF067942CBBABBCBE1DA86B28FF431EA32D11433C8AAB301E +723E5D3F56225E129C0DA9C24580542A1EF0A31378B4F37021B7505679CD71374988F04CF6038B +4A49EA508F753BEEB781DD4C1292ECF80CB2F390325A36B318BC4583EB125CC37520FEE4DCB1BB +074E9E9B1535E7C3CB2D7353D6E3F09C8A1F5B73DE8DCE5F70DCC1720531F4F80E0B034C981AD0 +F819C8562F76694C3BD0EDF4FACE4D89D6C7A5B36398C96DC0E85EEDEE72A8D4AB231528F6CB6E +467FE4F3052A2F9D7FC7453C58273D1389D52580233E4B55E9675B16F1B2102E91269CBA3D577B +44871CE6A71D0D8810628098DB09FFF1796FBDA61D4D0FF63CBC73AF1CF3AE368ECB92EB076D87 +1351957BB032E5D54BAE4B78FF6A704F8E411E1C1FB9D693EEFAE2D7C7DE534EA397A71D9AA2EE +32D62192B6BF88D5633D95632BDFF4F26ED0F842AA77FAB616CBF0F84002CBD992696A5EDC9091 +94C8B551B7FAA2AB3EE771649A39B0BD14BB95EB487CDE018B60A4925395CB66CC0BE79CC9EE27 +246F9FA83F260662ED5CB6991471AED2FA505D84598C1C10A3F738EC2A6BED85190F7DE36D98D2 +2641AE8D27C6491BD557CD7248383C7161D62AD15DF12E0F8A4A378FF7B0B64B58B0EB7DC72E98 +765E39D6AD7C0DCAE3C35BDB07BAD165A81732C6F3A54628CC65E7B8B4D35F6AB162E8320930A8 +819C32B37D0EDCA801BC6B90B71FB8BAE53D4973EB24FF925695E84CA3B27DF54CDEBFB1901A77 +9EC6DA0C52411B02EF870C7D9AF2A8712F602BD3690DC3A6E06D2FB6A76F2EB1EC3480F52D5F20 +27BDE978F7152D0D2CCCD2FE37B778C63C20DD3A223D6108069132925E23AEA237FF80A430B85D +6826A194971C7FD6102383818754311C96F757F6FBADF2FC57F55F2201118333E7DF889428C414 +83ACE03A2098F81DBF0D2BDF8D83EEEE95F900AF7F477158538E802F75163B7EAC134F6124E9C6 +ADB77662BE5994712FCF8A99EF363B06A4E3CD961C216BAC9C3A67EA9328C3CAB1A0D65C07AB8C +888E4332237650B92C6E51D868993E1C1267C16B24C6E0C766F7570C528901B86EADD3E133803B +69487179A98F26B9DD00B1A4A7372AF3F2ABA0DB287EB4C3992EAC46770F34F45E9EF3A8A507E7 +1CD665E53FD066C9FFEF5F5FE92625B7AB62EF574441DA21F0EDDECE87EEF550E4479D55620BC8 +FB2F5B8615BB546B5B024582288F5F9C352444DC59FB7F92F9097E800A09DDFEF37AB2F8876C57 +E77234A1256F9829826F871861BEDCA06D60F15ADFCBE8227AA2952C5A4334122371B7A20CCAFC +6384D75B7DB64CEA83D08D10C42EB931BC94FAC34A9617D8299C6C22828D50525ABF96B9DED35C +01334453A69D2B8DA0E984E5E953D657CE718FEE33DFD8898DE5BB36D7F6986E500177CFE807A7 +DD210BD3B6836BF051A432322CE5B73AAFFBD9929C5CAB81E6B1B1CE1D158421C890F20E9E736F +C1A8D72978CEE8E56972F72B05066B8279705A2F131EA871D52C7C89D3AC1E645C2F42B29A002A +41C5322EBF486ED323D25EFFA0E8AEB783F3A6D0A9E957FD4D46F8435CF732C87C1792BA4D3BFE +4FF78302B05B581421E3AD94CE0DCA3BD198BBD2EC43BA686FDC22A8C547F0AD7CB11FA961F2EA +C768A752670CFCE12C535D19FD0320EA63A882A275A5E11A47AD6BE7F3E39CCB95EFFF2C5BD037 +2A07CA615059D675453096B699398DEE78A1A7A6DF236F5BA6F5F3DF1969A5B56028AC4A2F6581 +AFD02CF52C348EBD5AB66CBEC53BC1ACC08C411FB32508D41E53181F831D74851D8CF1CBB64ECF +DC595C818BFC92F2FAFA365B72CAB1F3B52FB2AA3FEC647A1FA78CD5CAAA347063385922AB8531 +8EE256D0839CB81268F3808798ADD3B28AE38045339C1D4640719744727CEDDFE60B74ADD2094E +EC5B6906E0F53926DFCCE34DCD1F825FAA38BFE57429E440237148FCB9C79C4B96AE1753326C6D +98F3C1595FABE83555E03A1052F719AB35563F2A40FBD795DBCF6966ED5EF1DE114FAE993705D1 +FF63B15BBBA4921DB5CA882C79373D5544A3E55F1BAB90EB47FBED6E185F8C7919FF6C40DF0411 +33804A3D858751D8C2C1623804CD4D527940B6D6715FD8F391F3B05EE24514BBF224D83FCA9D71 +3710E806AF946AFED7B992A2A7B2D167478AA8C7EE71285010BF69FD9FBE5746D07C06E942D73F +620603CB3C141C2DA9275F2FEC9DB70CCD6C3EABFB67AE69A91BAD7AB1FEAE6122C78C0E01C0E0 +CD1688BF0C90D6DEDF15EF9919E250885C14F6CB010B917FB51DC7BDA21208B5CDD3946A31AA3C +F7C606C5A9AA324DAB996C430155A7B0F8B934D77C6623B2376880FA4FBC447974666AF7CE5C4D +234EEFB0DF32673D423FD27A684A3EBE166D87E2C257806329750DC6B8FCE8953EC309D2937F34 +751B2699439A742AEA9053C5F9C9B5586DAFDBAF4AF8F2BBEBDEF4FBB58C66A03A50E47694D636 +AAFD6B4BA2C9606150AD9B67A79CDDC0CF1B91746D2F77DEBA11B8D6FCA87C4AA92F43C4568113 +DF4F0D16A186168F653127A3668E7D7F2C8E0131391CE34F6719B9DEFE68BA56EB676DC4252F07 +05AAB44BE5B3DB94B2BD450DB68054DCAE240E651E48BF78F0B8D5B33583D6D7582813DAEE22D3 +2BEF06898B36EA30827A5A02A531993FC61B54F47E49B64D5C6097460FDC567DAEDD44D93CAB53 +0BF170CF7794FF1E34860A4C1FF4A5139F3244024E54FFBE4429347869F61E6946F93C31A85B1A +85E25F3396ABB51889B51F2284D75F4211688B20C687AE41480319E8BBDE60BB10A99247DF9977 +EE5B3A76EBBFCB00B3E531D8CA7DC7AAF00A4DEC38836F4D8F81AFBEA26A1E072671E7C7E30CBE +FC61A1F62867BD879500BF4E51256ABF1F16BC0CC326296D8311C4FB6601094EFB70F2158470C5 +63FF9582838BDD6A7A9D8B1AE1C1621287CA0CA075EDDD1BBAEC9270B05A2DF57ED6296E08B9AA +38F08BA4D44E9A3C7458539B88F7B1068EDC56705F85849E5A8C02525C47A5AE24168B7D3858EB +D3D120B01FC6EAD5CA76EEA0FFE7D7D600FB8EE9EAC37BBEF2FC7C0C2C6219958096808B9CE027 +C435697D223A9CD0BF98598B604663079F28D397C349401945CC4FA7272BB52CBFBB940BD11825 +093DBEDF3B8AA63B3DF272F8C8FE93F15C4099B6C99FE4D03414126A3185C055D255C512E831C7 +733DDA6809846DB85AB846792DEB570F9DC9D1893DBBCFFA9D19534C2F56C17BF4DA4FEB5340BF +2C71F8DDBA49378CF4E854F2D118D0BEC0A4B4ED23B5FA0A2F020357DCD02DB14C3723566287DB +A312566F12D6323CED297B812E40A1DC477DAAD7446B0CEAFAB8DB92B225C0326590D01C74B411 +6EBE4A7E1A745F289B036362C892251D52865D1EE3C9006C5A93C1128718B51944C4EB11ACCEA2 +242DA51E52BDA4F5BEB7890FD01627DDD4BBEC357DBDBF31CBECE3290526718C23BCB28B26C871 +FA39CD23C72A1956C1B121B3D460699FCB9E6FEC030D8947713047F7292A16173C257D426318A7 +77ED08A9A0E4C3C206E0650EA8473E07B9C51EA8BB3B2EFADD71EC26B112F44E958DB5C16934BF +67F2FCA04F072248501F7A12E18399BC41E37F73AFD154711F5AD01E5D23945DA827898737A181 +460D4623854516B28659E2308378A123C471D74C8776A5EEF112945299FEB0D71BDD30180AA3E4 +14FCF2CEA3C8A448387B0D0A97B31E829BF400D426E9AC4CFE651116E51F7635EE575F2598DB07 +6D3DD397FA0C56B79003B190E2D52896725F4B24F23F38489681FEC7F2949AC255446CCFCAD54E +75DE537D877834CD2CDF810CDDA4A96A6E34C8C50BE073C9D120E81DA2F2492725F86B7A864343 +3A50D49FEF599DC700216F95949567F3ADF293CCDA10189233A3852B3D97CCA8AE86B0414FA041 +299FD8956F96D7722770AB0D797CBE1246DE586EBB85956922B7778BB4F15F4DE5932FB8B9FD68 +6EB2FED65DAAC91F2A4E04230851863604C77E2B5F5448F6891758AF110BEB6F8C987A3EBDB9F4 +5A41320A994E89118E4E80A7EBA63B8DE6307D0816CCBB07D30824B349393E530119F1C26C744C +73424D92195CC0516B155B6F3A5F3E981BDED8C2AD8DFC8FA2EDA80E8FEAA12A2A0FB6154EF99B +DEC59D6156AE561D56189CF1D61D007CF45B06FC7E3BCF99E4E019FBFEB343A51A688ED20FCB76 +5106E53AEA18DA9D5444CB597B0DA967754B28942D982A9FBEC46DB4D61A95A4E1A59174A34803 +1DADDEAB604181B2CE075FBBA7B3D558635A44C924D146E092488C255654ACC05919995F01E838 +20D9D2EB3FF1FE7811A8C390C75EFBEA5C4B1828483FEAC7370EAD468B7527FD6F9F62A2BC0CB7 +2B05B874FC7F35E3D8FAEAD6C2AB583297E9ED23C5088212CE0F1D8EEA270A09F27AEC38E0B46F +717401017519DCD832683DD08EE438C6A70328169A4F044A83D0140948D3B6513E5A1C1D370F70 +834911680A13A846117CF1B244E9FB2F0729D15D97C78CCA48DB0607250D72CE777D4BBFB1CE62 +BD23FA6F0041FF6BD57B0DA3A872A4D31C395352329B7E6407DF1E3D67AE8E2D95D46E760056DD +CC4A8B234814AA003434C56BF4F2D2A95C8D374D8A76656BA4CCBB9BBB4C93584FE4897AE8CA97 +7611827AB3E9856C005E9B71527EF48D21E7569752BCF5AC3A9C986E0D25DD8FEEAB317920DF2F +4A3D5CE6F7110E79F62C863F17F53E5CDD0E4B47503A454AB5839F83FA2A531909985B35E1D626 +D76305B196484BF8268CF53B0DB263504E614DE1E8E9D8A80E785544BD1BF3350734E9C214DB19 +FBFE8CF152442CE3F98A61DE7894C2D3410901FC4002F94D77B460901D697073CCE42731D196CF +9D4E511163685B23264A6756CBE27CA6E66501B5E6056B47591FAFF181212098213DEA243C00CB +1CFB9D804AA14CDB15B13990E2F9F185DC616B4CC862B3010B0E4E179BAB14C66B5B041D3CEB58 +7D8814427029848E499016314B38989F678843F6CCCC5F340AF6DF0B43D0943847570FA2C3B460 +82FEA4AFCE69DAA7E51A0B8C9F7C7B139F490E38BDA24FA6B1C33509FFD6D6BF1BCBA8D20911FB +DF40339B2AD7B4D9797C9D82956F4FD33C00B20C2F891A2236E1CFC09ABB285BEF9ADCBB2A7A50 +56FEB84D852A3214069547B6CDD9A4EF32DD933A2D1FFBFFA377738F80B656DEFD980D9E599622 +C8B276ACFA662364B7E92928E272F94EC34C906CC6CF94ECE1DC82ACC1085C1FE5E337B1B8A217 +844D49E8E44E0276C8BF35D9187DD2C9EC6CDDAB80DCCA5FE2B4EA68E6255984B7121B1722B962 +42961D078A72AB758D7955DF42C1B5398874F2D20F153E900C6B78477C8675DE9902FA2C18BAF8 +F1273329013B86EEE1162F111F472D7356506D9D8482C6D806BCD31C46C4780F9745F28319AF01 +9F324F5C88C30B15BF4A36A87E034116D3BA7CECCEBC719B177079EEEB77100FB3AF3E1D20BF95 +478694B3EBD12642CC7C346625609C2372D703E1471C6980FD83AAA33E952AB259F9710F150F55 +8367B0B62D0035F72576D272A241DE2455B024E96C89F3BFFB95A2DC5FDF5EAA98741D687621A9 +CA042F27B2E3CB5D05BD86BD1E795D8EB7EB8E819F46EDF93159B0DBACFC13844B0AC6E178EEB5 +DE976C3D7653F32A8FE126E72A16DAD5FA4244EEDEC8F965230C5EA067367B2B3871E8D3D569ED +15E3EC007768267C0AABB308F470C77E4AEF2905AF8E4672DC1B7E2BAF22D45FC8C556CADC6A4A +FF01F0085B31D0E79940A702EEF674140333B74AC2E6A5A14FB2248ADAC18CBF1186C6ADD06B1F +BB1E00561C8B676F519118B0E412F2F9C155A41203700C4E5EBBF7BF0447FFE0A74976854E502D +8B440F217160B10E51AC37C43F50A6BA18FCF8CD097E13C0B08222D27382D76B6A1584A29CA7AB +CA7F320A5983DD89A28CAC6010E662BD5FC974345168DBBD668AFF7EE6C605D4900FB0BC09286A +1B9B77E45AB565233880DC3C5ECCE1F5E603C4F049D77906EE1C36833A57AF2D65E0667E73AE86 +5EE6347A1F76E7C2AA5E2B77690D162D9DB338BA3AA43F09AC1441FBCD4E8564E11E79D34EF691 +D5330E19416A65812BAAAC36D1C8EE01932351E8A9A30E087C7B4B1878A6E19E071CDAD5DD25A1 +BD013BFDFB13D8A2C6122C148639FF37551ACD6BB6657BC7E220378C7A3E264C96092532996B13 +494D174B22B1560B30F68F570889FDAB00DA475F505F8B5EBCB9CBCDB9F6138E1FBBFC93A418F1 +75FC3E73FD8BC63F6F622E513C3D76ACCA34F14493DF4AA6F4F08251570B1E916E908E85EAC1EA +5E9B7E9DC44A9E46077DD62969A33EA1EB1B1CA110D0E7AA17E34A3D3F75230F1E414989404944 +E8399810015617AFAC3E215F1AD609599E8F299195C01BCACB01635922B51EACE0E2B32279E17B +5F578122680C4C25416896764112EA1062C142C07F9BCD8BD51BE64ABF627E59D9ACCF4DEE245D +9FA8B87D90AA8BEEA013CF66754CFF5BE195E4DE9530E1637408B6FD0DEA56C31809225406C763 +A448F6D31BDAC71D61E27F9CFD31808A67F220320B23BB77F7FBDB4CB5302987E823100D0177AC +9EF977A6686E9628EB0E6F7438A285849372DD1D30D7C768081AEE763975F9567BD4C53AC8DCDF +9EEBCBB608F264C2C95E7F592325B21FBB7A86A5080D403337959E2C47381B42F5FDB50153CBA7 +9266B156B40C130AE6E6595FC1197FA2D8E49532212E5085CC7E8D200151FF8BD093A030B84E1F +871C5D2C91C40E8FFB8D483366F2214C0609F0EB92C1B4BE598AEF26B5CDFE3984C60809BAA254 +79B5ADD60CA41624D2F04413191340C4D5A7DF3A8B3D175DAD02966D027BAAB28B9F3BB92D5D29 +7D5CBA0D409F6D16433A049EC0C946BE06EA805EF00D3BF26E8F61412DC6A621D3963A85A6241C +D60CBD96AFF5BF9D38EC98B5C41E8AF05CDE944F183C7FC72F0DA6AF0B3D5C5B459785D95C07AB +716B02C355C3CC72B5E9FEE72DD435F5017B0122780B4DDC764230BE2C20BD7D6FFED0DB7FBD5F +5BFD928FF9140916644B7F9FB7E7AEFEE38E46C6DFDCFFE603AC5A9139C0B43E3F965C419D5529 +D0E780AE92FE71A37EE167E25D66B2A2FBDCCCC7A9A2B9452D2D6C715C492886F0E15E94AC6C71 +A091B2015B58A10D4E95EB6B5DD66AEC40CADDA5DB28195D08C590D501753FAF122F90FFD51F01 +3A55EC920560468485CB2C33B06F3D73F8E1B0D3112DF9CCFE3545FFC711A276CA8639D3074D7E +D3CF9C0AF27AE602C158DAF0B2C6BD576820CC8EA3CF7943019884E9DF0C8B7B54F6F84DAEE177 +4D665533FB3FBDC9C1628BC888C506A1B86F28B901D2A508B9390023FF3C859325571A7B559F77 +C6553BE9703DB71A088133E7C04CA2B25BD87023EF7E71DB0478537D4D8F7513F135C13D6E60E8 +635B0FA9F2108192209B22290522D1CDC74A8FFA594CCFD9E2591BA28C195571B6F66B242E050B +F4792C679D12DAB55559A1E8F4D1B0D185397F12BF0B66A2F02A5C890653A7D6AB49CD25C6E988 +EE23790BA525100EB325731F7D9B09410B3D35E8B7EC4554EB9294FE06E14E4903D074EF0EB08F +9F153F1893C16F5C1287792D819350983E32C15B02657C53938C98C7AC5AA68412831D5433EEA3 +DBFAD24AF230051DE4CF6F8DA7B43A90F650CB3F4B140C300A4F2A56DAEC0857A8D5A2C26A98C3 +1425680A6893646762B2E568E5E964457FCA177A9D660671FC507C7DFC659C7963C97EB6BB0726 +F0E6BA1D90CBF775C6678C23C7D4CAE3280B6EE3B7D899C014F289FD453AD5985E217D5FEB9787 +95B8EB44ED62CF38F398D7F57FDC506C4BA6CAD3AF5926067B15B923544641D108FED0877086E6 +691AC07DBA63E7258C8A3CCD82AAAF41EF7B0387B682C200F4C42DB9F5F13BC67057680C024A2B +6A3FB316EA7C5264A22A9FC772A3D2D9C58747BAC145D7DBCC8D8FC31E67C1DDF88658815476DE +92E544FDD28BD210E81AC60A9895C3DDFF0C588FE57BCABEB3DD0DD6EB1F427147D0962AD486D8 +23F4FAB17D6713AC89088CC23FB7E395FFA14489EF1275694CF85E252D4F4EFFB70E137984BE6B +940F5B5C8AF1828F485E80E6FF89A7FFFE8E4B5B31068A38F0C7C998CB0752A7E8C54F98ABF19D +8682A8830313EAFF9BA1399E11E1C7B64243C686FFED6F79B626BE94FC2C352818465B662FC284 +B9F7A539CE9807B328FF3DA14AD7A467039B007C1BCCC694567C2B62EB98FF9C23605C8A9277BD +BC57692D9F0923BCCDA5AD9CE572C5153152EDF3849F241BC2FA0A5A0E2995D4366D2ED37A7423 +B3DC8EFBD242D3359ECF109588D275A42A4B5FC4B8F215266A0E33C2E6862E17421CE200EFE92B +0517A06D181FE206E08AB27EEB323CD6ED4823ADF17E2716E7EC13A14F6C4F2CEE2F5D3BF956B6 +07C595FD4618780C049A4A5175EB6BE0B10637814BE0F2399A2F2CA4AD3E5445DE26BD020226BB +8EBBAD1067DC667A2FA49EF77DADEBEAEDBBB86661EA7527C414EF287D09C623911AFED614ACA2 +794967D716F14B9C195193E02C04A4EF1055FA43D483470DC59C9AD0052036C5392EDAD906C56E +D2BD5C9FD82707A978F930207F05BD757D401D2DF1B7B0D7F01F977EF111C197A7C8F0478F1104 +D4E5E81CA7103C880DF2A87AC55FE078C940A0CD063BA197A38E8A2678DE3C5E97C1D6A68D2D06 +53569AD1E91B1A46D51D7677B61B4A071AFCDCA5503F658A1757D3EE938A34DB07AC2FEC91C235 +A645EC2C00DDAF1A4DCFD9E55C21AEC3D6FABE125CDFDA38175D292A06E5D998E68DCD7C25A067 +2984C5CF5004F6D1CB47C0D87BAEFA34FE6249C7F68845A445A02F002B2691FA97640D9A933DB0 +67405D0CF95113D3AF2CC29185C5F4D9DE54A88C77E6DD7815901E52829B3E47A29AD05D0227F0 +DBDD26BBFE5C7776E86E8AFEABD96EB5EAAD4B08BCF7798142A8CA17EE01DAE7020D8CDE0E983D +AC708B1C77AA479AEEB90254F33248BC0D04F9BE6B6F88A7FCE139467EDA03951B1F17062A4552 +96FAAB8111D7814C1A7D62A3EB5A404EE9AC149E6E784FE1D2377FA631D79946C60106C6F97750 +399F1FA11C3D3D33C2271DD926BD64C23E95AC3F1AD3534FD9A564611B693735619A02B1556F45 +EF7BA9D26453DD25F693062E3CAB88E2DD7CCF701900B7CC842CE24C22A17E9F840D47E62E36C1 +AB7493CDB9E2B8A4EF234549B463E0D7BF311FC66F7E16723080BA46C3140E2F26B9CE4B8361EA +345A90962935BD2D7745427367DB346A87B98D72A438DFE67820E67A2CF1DE7535101712BA7F08 +97E4789B89D89C8E20B323D868F05FB29A80365CDA8274D9B31D15684B773C8519624A2588C02D +DD9AF55528770C15219E89B67E014DDFB93AFE7FD979BBC16DF2C59E6698A90BB778ABFCC0AA43 +DD95320F2CE32C607559F2C475901999527D6C4320A1CEE9C0B5DAC054B6CECA4015B8926A893E +2BE0CE90875F8B7FFE46B97CEA1E0A2C378B0EDA623F499851CB1DFC0BC6463FD337FCE015375B +7AFE6EF417893D8FE22B75D86B2426B77148D4CB214C30438B0A578F7EBFCC3B1876867BCFF011 +68CC9FA96AEB3F990CBC6DB8418C6A52F355679EBE1F2006FE835CB19C51BA4F0AF40F9CA9E03A +E00E908D73B733B367141581E03FA1D4D7BA3918FC789A9C477AE0FEF4F35577E7E16E24D2D651 +39D56F97946A3E7044C50BA78731362C907C4E3CB9B655AFAEC6F0FBA0816D8D707C507AC5B84E +79A69A4C5D855879C9D616FC441269A143B12F15D789C78316A4649A73327FFCBB1EA341314BFF +C4D350D65CE079D087CAEBFA3FD7E94754DDB9F56967CCAE1AFC7A26A0D6EC6EB3156EE5512584 +48B8F209B5C0435458D8A3CCED4B54027A4387D8DBE8B40A3795088C37BC4AD2DC70631BD97D7B +22E7DA48C5F041CB342F1899B32D3A8DBFC589D49E3A65F03B45FB77522413B161A77BC3FF28EB +273A4BA3A209BBE65E82BDEE69CDF5629D49D3107EECF8079BA9207A1020F59D6FE10FFBDB1597 +BA8F3D9CDB828032065A3C2B94C90FED337E8C7CF93305F4BA05F122E0EE563D43CB0D367F9689 +DC1C1ED94BF3A3913CA9AFE26C5C5B1D36C097A642F876E03E5A7DFA84D6E095496907CC23E3C3 +1B58D99F4B06657E9CB81CA1551C1748F64C064384EA9C4A969D7F214160935F06309F43859443 +9F35E580944A027AC91C6EA64E91D5FC3051B48E2D2B6960A27B86B6DF43D3BAC51D10766063A4 +7032C5DF9CAC6C6F7B0804E94220F36933D5EC36612EFA9D787DB817EC46AB3EF148C3A8926515 +5F7259C5BEF8D4105A274C24002389973384B7EC20C990D2483FD423B37A4C8A85652890A15C42 +2002A7C6B074485A58728FAC0C7654EC9109B20A453EF2BB2326A2D96E831101CB1FC9B60759DC +AD548F1F4D0AEB48832C50318C62701FDE87CA0EA40617C3D348657E35F04030D73960608B1BF3 +9C4312CBCD707F8614D62345E148887B72353E6B2B10995618D6AEEF039EF9915C872EA55A4809 +EF54A2283E3613F7C5A3F2DF8122056992E79A672178F94A4748949F9F53F9A595B6587D459D99 +3701CB09F8425947D95A1F046E948DA69EB5870C97558A3BF90D123FCBAA299AC12D8425BCA76E +C13DE857BEC29F1ACB13EE842BAB0B041E014711F48460AC887E7FEA239A92E1089E3C8F6085F4 +BBC4A15E2F73FEBEA1973608B0A631D88A69B88F44AA13410400DC5AF845AB756A3E4B18767050 +B18FEEE342500AA874873F9F44841C9ED961D2918D3D24DB50331DCE5ADC89AE2680F8D6D0BEEC +3683E359182EB6828B7EA59C98036043D6E2D0AC4B6DD7386C99DA53EE9C57588DE6120430FD0C +26943A11513E60A3253626DB5807AD16C7DADD5F7FCA6A1AF02A516128AFF6497C6BF909554221 +3696DCD3D64DA444CED9CD98106A46044D31B4E004A9C9E8FD7BC6DA38480A6A90D5BDB9597559 +90350131B320D0FE67B18CC6296A19C1BBABEFFCD66D8659EE992711BB28A1CAE7D1E0773195AB +A4D7FE142A466960328544C8E7CFB83B1B374FF782A89BBC47290218AE9256AB3BDE2A23A59D75 +B9071D56CBD06F762F21C4082C9E9C9D153A3894CF0C76496EBEC54BD8F1A479BE3AC26507B292 +241449DEF45D4105CB8991793304F335922DBFC94CE93558245BF5AE99D2DE15C24A3928F94DDF +D212D0BF0BB60439A631E0E6D100BEE5598E9443771DBF7B64C361E28DC8E298C352AE179BAD05 +DA31803C1FF711CAE35344C4B6CD345201E9D75973FE405E523A5943AFCD57EADF109FACAACE2F +AAADD51C7F738F4F59C7C9CD2F8FB87E419E1F8016C51E0BF8C56F027304298A20A16795440E3E +0ACFF3792F53403513DA3581AA56CCEDAE600B72CF94D8C903947196BF896BA3916362A9FB1323 +7431538EE68C6DFBC27CF5495850DA2546DD31192D7C485F6E624EB0F85C250D664F61F635FE90 +9AE9523AD5C6B35DA245C7B2637304ECA0AA32BA6B220CBBD16FB6960E3B5A0AF2FA87A4B2535E +B1BA513A3DB807BCE19E52A7916003E274EA69AA365E86CABC6C82E798E05DD4AA4BF62D847B74 +57099C7A9F358A22FB716F0A217BF312AB890BB7414923E822E2BAB4DD58873760710EA5855F13 +3AC99525354DE9B94B716A509604F39867DE70AB16F86C2251C13E17C305CF93AC30C3A6FC64A2 +63B6D07EC11354CF06A08BDC3204D043E65B608823E9440E92BDFB971E8E0A94FB02E26C8118B6 +7D6316216C6B47D0F8270C0B960CD394F0ACC8D477E3CB535F21A538AA34B96A74450E4F4221F8 +D50DE147FCAE2D462899A578F6844E26D9AF13B60435F5CD2F186B555D4DB95B175C7F2CD8D98E +A1924D6D0CAFC20ECE71E0F563FC60BA7826D43497D14D574CF7DCBEA03FA967B35CF1DFCCB803 +C3E0A204DC296C832034AA8735BBA37698E3031F3851A7ED7AA809330382639CF4B9B333599373 +FF2FBCABEA5D16F4C1FBD9BBF9D6176C5B7741FA6F1C5AF1C0BE55E528D784A306EFF895277B77 +3BDD22B9DE4FD884E3A0C629082224A94CF7B8785BB94848A4ABFB4489C2C2038B1E4582B35DE8 +C9A5A00A27A88B1F99244A3DD34CA0A47A7796D2BABE44D4050970217A61AFA7CC7CF06DEF0B85 +74725AB5A9EF33741A915E62E4EC0709CC5F72D83A4F667510C0DFD4C114A48875E448E75F63B7 +EC7C1B3A679AFB893CD8A298AE1E786067C3571DAA0EDA8545ADE2773A5BA705126660C36506F5 +DFD021769A02CE8EA728EBCA1653C1B80C29A6CC659E1EE09713755DED6C80DD9235635C40F3E4 +3F7A3EDC1F8B1E55BBD820BFDDD47B130A8EEA1687C3B926535CC926DD435BC192369EEE259BBF +5B63A287D2E96C61AED799D0A14970F03F6E3442623A128AC01DBC40107F93E0DA51D971F09C8F +A7AEA9754EBCB1A94BC9A66E2D538875B97E5DF6E05227F2F35B02A58086F5659CDAADED336597 +61EF7E9ECA9C74E13E641975022D4D2B6C00FF0A659889DC959C39B173CDBCFFD86C249830165A +CD54C1F40CE548F4795FAE846610DA4FB063277B134B47EA8D5201206C348BEDD3B5065ED80828 +A602AE13754039C61C7AAAA546132783E44FAD7BE99175A05E06774DCB343CF88AB42A42BF1186 +A6B355498AD5DFDD4172509B1909065A00FCAD2E9E0EAD73E9FCFA98274D8BCF1DEDB68668DD1C +528F379738D805B6F94965347435788DAE4DB69626DCDCE33F08276718DEC563CBC7F2AF0E3F4C +52C2AF4BA9A28C8BD34E7B2F9048C6FAE91245C35BDDAC12555D12D1E6FD48F9E6A2577C85F15E +8313ADF12E3A1940A47A27EC73086D78B6FED346FDE42EF2D4CEF73E3D97CBFFAF9ACFCF3FD992 +8FF0611DAA2B98BEC3579596FD2F3D9F0B0E1DA7168BF02AFE137EA98747E1ACA310E929A89E7C +1C2106B79E6C317AEF211E5ADE8B0680789A43B5F17504045127D1AC28BD2E635FD11F5BA88DAA +08BF3A781AB536B386428AC25E5418B6AE54AC7E6320EA8C651116BB3E3842225E8BF37C89B651 +A10E800ED0F998B5CD7A1BE6DBC08791A0B2A8897A4CA3A1B20FE8E4501EFCE5A7291C0D5240E7 +0125147672C6D8D126C7DDB9A3EAB39F2A94EFD80C53EC998BE38581A91CED1A6F0D403120869C +6B77B8C4CF892E330459593F7E08F9AEEB62A582710A41112633B0F5418D6CB62E5950E16BCBB2 +24FBA0B3426A98CD2C4C1176B69A66E06837DAE775ADA7F4589FFE37A85DD877FD6A880B38DFE9 +9FEAA5947F11C1606731E9DE452F5B8B6B448FD891B62901643B1C4BFA3B439AEE662DAB8C9BCF +76FA7D127179C7C9EABB06DAD4E451968B9E7556FD2F3E061414C4DF506BCBF219711220C82EDD +444EB22E0A26866A21389CEFF42DA48DF67F60ACAA888213B3A47BDE49B2C7E47EC0C1897DA439 +614A78DB19DAF55CF1F423315B65F9C1DC6BDE6411105424EE76845130A51F4C743AF3B03A3F9A +C83D4E8599E9446FB31CB0245A3EFA99685AC7603E909626E1EE472C24CDA98F63A0C0F726C15C +DB52B3C0B4F38A44EF92D6E324DA98BDD1706FC2725969064636424606FB621631708C6E583CD2 +1805106BDD26CBAE95D8A52C12746282CC2AFBF63A0E70BA9E679EF1CFF73DD023AB00DF7B8795 +E9EA8B7766CC4004B9596A97A9B10233E83948F32AB0AC89EA3F08F5FB302638697C73A09EC741 +BC201724FB4528C5159E1B1029B11D23C6E2B0E405AFAE5251EBEC33C0FCAA9D260211490E7507 +DADAC9AD4316129710BC0FD4A425429EEA06437740F137E2F9784AB3AC23FC2AC71359A4AF604F +F000452CB7EC99ED289B4371E28BC0CCDA1E23D66A9D5B7B083874131FACDD47E7C13457A1FE06 +82ACCBD0C1DC847840F7E99E9A6BF8371A3FEA3FA438BFCD8A62EA7553EAFE4602A4B8A48B51E6 +E1EEF6E9D74661329150A2CD302DD378439C5D4FCE7D429AC3943765E24FEA571F0B3EC765216E +720E9C8134D1EA96479B4AD267A1E60B21B4D788402F01F52B97BC573202196A966801A9DC2AF8 +78EAF90136E28966A497A445B32F95E08E8B8CCFFE40499ECD44564888D162239703D9495CA5CB +0A55C3B29E7F737A95162813D0E5E4FDCBC4BA39D9B9A73EF659C6A9C60D235DB79EEA29815C23 +A52E5CDD900FB5782A35F4AD39E25D37268474CFBA407D49925C9CBB0E18AD8DE1967DF58324F9 +32651BB19968D78B061AF07A2C0C7128816E9604B50B1262F4B6EC5504A8F0D4E4983D059B4579 +2AB71AC786023162B99789120E7359B13A335CE86961CC741364848A6A3C5393A99B9843B15608 +0F12AD07226866F9BD4104C8CE895A0A2655841FA20060BA8FB88C03807CF58F081F2B0FB581AB +F27589307B75C5D9DC1DC971E65D1A737AA85A9F44575411520DC72F9568F6D3FA896CDFF14C00 +739A821ADDAA749852613D07F13C9F8FBEAE64F18F10DBD04382C9B5C968792390F6DFF469C407 +43B5681DFA464D4F26999DCEA076FD3AE9C15CF3C19DD78617A8D882B98D2639AC1F8121820F29 +4E2F9A0428EB87F42572BEB4EF90E537750F8909A66D272233A05A85FE0B638E7A2C6E5C54930C +3CF08173D0294E0AEA1407CEE44B80DDCD3EA84B3B94A7D1C977F0AABDFA67EFCE87E4A86CFE0B +9CB38949F7AB2C6B5458884D4EB5AB8638A78C6BFFC8A9B955E437E76041E80DB9EE6AE7B35144 +5D26AE50A18BBA082FB74CC3E82C18B912FA908220E1EDC0D2E48A25F6E2717E81EFA2AEFA01C9 +F463EBDAE5B91AF283CA727C0DB109D6A48917910E1EC88D6C02C3413B247FE6996301F389CADC +025093F072AFB9254F242140475AF9828A3428A4499B8C8DAC3FF9E849B09EA1891F5C9CBD5857 +C31D2D9BDA23431F90C681BA69E68B1920D22D52EAAB846655CA3863CD58A16C5EE1E248654FF7 +A3FA4AA2AD002021B1BF957EE2B130B671ABAA02375F126553B4433B1431355D27F819528507C2 +CCCD59F7EF8DCD3537A6E3DEA66F8CF5FA11B3112C36D07543FF68940BBE717CED884C1A4D8E29 +77191D52188BE3400E68491A6BE0D2D5E66AF80C621C9C6316508FC4E04A481238097E12D6D1AE +562173E6E988968224C50A9D4ADACD24329DD3E47C9E76AFA975D6CE40487749FA598E2709A06B +5CE740481B4B5F83E00BD628CED8CAD302F574A5D302C7AA32315AFE0F620D89204D2EA7B65232 +4B89FECC01803634978A4380009418C68963E6125FEB091DA5A4FD6DB902D9E2B5A06DCFC1D697 +6D0AC9FA6DEED74DBDFB7B192FA937079A9BD4CDE3709EC7B1AE40206D0CB146B8F5CB6D5E793C +66A999E9472FDDADB58CFA4472A692FC09DAD52D7ABA865B465D835E243441B8A547748294EACD +B5F2364820E03B0F474273FB72AE1F0DB753361493DFFD666D83D0F8F79D6902484DBA5BAB599C +34170095C25DD8AEB8EE0BCEDDE3E09E6E78604F583DD2177E50CFE2D512A8E3E4C4A4CB382B05 +7370730D6C01FC1AC2233680B7202CB82B1C3037FFDB62D84085B1DCC2FFB82270B26E13C7242A +F79354005DB3200184C8D003AD14109B4E34EA4DD45ED6871301DBBD4D9AF9C793359876E83435 +1F071496CC834444F52D636066A5B3B17018E93C6B55112C6BC5D5B31D7C77DCB53030F4D95C79 +83AA81294A219D6AF879FCA1CCDEE45EA0390BBA3E5C187D2C8B312B5CA684A47CC23AC75E802B +B17500ECDA7C0D327DDAEABF4777D14F29E8EC2C1449BF4236F357BB5FD5DD82817978F2E19B99 +9D6856B077154FE957C9A27D51318437BA13B939BD219BA03A360B903420E543F8C8CB3AA1FA2F +8E4965C0124DA322C5878640904E2E24D5AFAEDD143FE4855D4E2E68B34969A00FB987966BFE3C +EEE730E71150C40AF191CA0B936E9D8D274A868176C0F8E3664457B6E71FA2EFC85DD01A7C46B3 +DFB15BD925CFF9FAECD3A71151FE38F1CE7D15E0C1F3C7701516915EB69D6F59E03435CCF32225 +EA66B0B14EFA2A5478A0E7DBAEC7057360F9AB71C1356CDA8F10E21C43C548AF4FFEE21C765C0C +74134BFBCDCD25D3791C200FE6FB47D1B1E6C4C7C090C1C32DB0D3C41BFB8E4B36194711679B2D +AE0B28BD66C80A20D54E6D23DE1FF2F30977E0857DCF538E482304C7FD6FD0770AA9DEBBD06D4F +CCFEC2521B087C39A6722028BAC939D3940AA86D44F2BD1FED71A8BF5BE3690F0A4DD4E4835F6B +3C95453956632655F79BE22846EC285F33B94B931955CB49DC0C31B0430037BC3859995A0850C9 +62C1A67EF19F4FB2EBDD118AF4FC97AE1F14322345F012426E1EF7C0E70C47DE36241D101B601E +9084538232AF607D9F719A3FD5E26F0CBB7175D10940859059D678BCFB86555247BC0300D0DF64 +D3C1A878F92E9E638D0393C071B81B25F7DDE2668A14C7A9D81FC5CC3DEB0172B1EADABE0FCE8D +CDCAFD92CC089598D6494B4C156767B6A1255B992710AB91D9577B6400FBC0A81D6C613FD178D5 +D62253F21AE8B9B2F4A7B54ECE2A639F86524AB86401FCF142A6BE610200E9CC1D3B2F36C09687 +054C0280D23A97073615251C3DB982E4739973F6F4760F165CB90C6DA11FC1378D58B7A9D57909 +397A2E6D1CDF9BEBEAC99704C4AADA8F2F5CAE356DA27FF6D76A1782E47388FE418468971FC9C0 +15EBEE6EFD0C498A3EB9E768750DAFB6F4864715CE32D3C4B6CF0456BADD199AEB3754207D71BC +0B39943D65D1EF3506DE6E8D5793E3CC3EB7F2A57BF94BC557DD84E67FCDBCC88EC58148E3B1DC +4D702EBFDCDE7F621F3440593049CDCE8E26DDC597A0B5BB0F4E57498365FB065DCA88113D5E33 +6E02C30ED91CBFAEAF646F17C4FB1272C7E286C3826B1E82BAB62FE06D4733F66033C1CB09FAC3 +D0082A9078C8F4A2B690D371E38FC2DCE240C67C35CE75E3A7AADD4288DB022B99B32498B92ACD +27F09CD8C062459EBEA6ED189B21CB82B47375133532F25E6DE613519ED35891436D4BF7B41AE4 +52196BB34E7AE5376E38321C2A136255A356A154B8A907F52DE12B7B79F673E23C13DD31559E4A +C78E536AEFC880457FF9DE0D03B1C18D41F3561895E7E9894821E8C56AF6867843358253B7A65A +51DFB1923A4BAEA6279E8337D6C03E743C9027ABC07D57572808CB0DECF1D18514708830572752 +1352574E991C98E0658C23DAC9CB44EA8799D1963C3C996088ADE435928FA9F7B5EF9D8D9E7868 +401A93A15EF5E1F7ED5D99B62D269D2BEEA44E23C2F6DF4606C9B6A6DC0756687D2A372668E77F +FCC91EA86358316D97077F221581767CBA08EEC0D923448F57D2B34A33120C878C449BFF958529 +A705ADE3E171AFD3418BCD507D14CE63E74E747E37D096B6FD61556115AF0807A15952A6DD7AB4 +15D26D501FB3569528B8C2D27BB0334300110837098AD06D0A09D337BD44B848AB371E8E35D638 +EAFA9303803F8E21173BE6E847AF8B0213C5CF00D8544E73BFADA8226C57B2CF205B94E0A3446D +4DB69A04DA4463A8C6FD0EDFC281FE75C9FD0499CE3ADB700DFD9BC7766883E6109C6CE032FB70 +AFFEC59878BC961A2280093C55CBCFEC85C48955D2AF8313C9745F11BC042C0849134520E89708 +F9CAC65EB531C4DCECAB031EB57E22B106635412F1A0DE228E7D49D85566BF17639FDF17A884FC +6FBD26365BFDCBD63E3274EEFF7BF968B8D13E3CD120BC222089577AE02ADEBF666E221A75750D +3A2821B9FB9CE76DE974D08D01A57E2065A5E95F77B6544A9D6DEC5D15753715CD3C3E9DBED93C +4E9BAD87EF16CB39513B69D8979CC619E39FCA6755387AED8DBD84E278B37B42E7262C80E8554C +4E757990BE92B6D702A0F07B2A552610337CF2AF279D935F4712958A139AB0A85B3507EB623255 +235D61C02E1DE488CA364A3071D958DB35BC1888420590FFA87583EECAE9CAE76CC21AF2337517 +0FD08BC4DABA644CFA04CF47C31B69ABC692FFDC69393B1B76E56C13F0141C0A9C441D1FEEC7B0 +A4757D5BC4833E2ECCA00E5F7DAC6DA37E48EF3D814570CED6B45614C859A18A3D4B93B9912355 +90A0768C26F1FF0CD86A4DAD10444E0836C726AB04F71DB4730DCB0B3BCB3E78CC2AE443438538 +93DCBEB3CBA128A3B8003A281357ED64B3E959453CC1AE1C6E1CD1D2BDDFB3543AFF60D2964957 +770F01208F7173CBE73BD33BF4387DA269D3918A514FF48607E310B138214FFF48C13852E4413F +436F2EB1C17520627501991AC5A6E8FE62485EB28EEB1AD2A63E92900D231437C5E49A5EE85B98 +01A6AFEE7FB3297B65020D3C003467772DA6DC91B72B8F0602F496AA8F69247F78DD93A4478CC3 +9ED6DBE48CB372FCD81484B5D0615F47A618011843E0789F216D95C743FBC45441E43C0D94287B +5CAAD4D896458301A024A86F18F8B2082390196D72D9161A667783CD7973123A00B01CD5727BC1 +D51C9DB47481E1E277169580922EE59BB988E29CC6720464E0B29037081FD49CE8B82A6FFB068C +B03ACF608CB2A39B2D1B1E6E7C82B3267FA289675ED50D6D6584D4063348D94BE551DBC77B961E +3BC0030261C8DB67821D191E89D3F86D37708C6AA38F84C466CD0F5B9BBB9C5D971A2B90396417 +A38EAEB2CEC992906DB411F2592DAB7D7515E9C0606FB6D967299743349DD705F8E1A5772B364B +09DF5BF031303C256FE440C59F3DF63B7285E0163B323E47477086033644770D5973CB6A755054 +9784D79A6D1D4A9A4C7AC14A6FD8AE29414312932A5A4CC1D80E13E1D0FEE41BE655F9853F844F +856CA8CD2BB58CA164D22BA95E0DBACB15C8CD522749E12F5E8EDD88834D36E4FEDA225D39B2EB +1AADD62915C6849F593E3365EF036C965E79ED2BCC8FB3AA141B263CEED6B1672E5758A1ADDAC6 +D0E039ECA3E04C434BEE125B2CC9778D8806C5A61E93A046CA71957627485FA0A7B80F5F26F7A2 +9792A174B474633C1DB41CC122B99B4D2EF15B378A0E5266C84F4DD82580B038BC5FF2762BF9E6 +4E054E14AAA6DAD5573774F00033D0D921D3A5409958253425AF22B9B0DE532B41C5F61400C3DE +AE52D77F01D47E34669D01EB8658C30CEB9B06FB09CB805FF804760E02E1487BB411C66731BF98 +23ACC99F253BD426BBABC81CA2ADF3EB411C62EDE80EAE0637BF6BDF89B30A693DD64674CB24FC +9599876F940BD56162FCC5F182CE0009CEC6B4A95EF1E427B741D188AAE3E550214B79C00A248B +CBBD30916B6BC956F111DA28AB9366B3E6AE8F09C36C225D2CE3F75E49D7D5A84C51EB261F3ED0 +C145528287E451145592B1F5AF9EB4D88181692B89955924A5D74513729F10A042814C78C36E27 +260071C342E15B36E7C84F6DA626180D8AD85822F957D1529742B01D6AC34203177DFF38F7CCDA +D004E30FA7DA4993AD52F0C4C338680B12E95FA0EE930CA90440C36422F628C10B5DDB91BF0607 +7E7A4F196D7BAB8541AF24AE98C0D4A64C694BFBCBE85B65330498A99FF620A1C17CAFD806D007 +CCAC5848C235BA59C8FDD9EF8F099A50664D4DAC993E7173CA069368576A75C2F25E051DF68698 +8CD1975A5DD708C713C1E5633F1FC53E2B097AC4A7CF03FEC19A24E5B95648E56B931DF9006BAE +6558B840E45C6756DD32C08CE35D67BD9DE81EA58CDE7E9842B1C11A5FAB10A0AE5A53CA04C8F9 +4B201DBF9867F2AC5115D1F5FB12E0965FF6EBCF9DEAB64F7C9E751C412CD57B2C6B6A5B07CD68 +97ED0D18A1AA7F064A9ACFBB52EB04DAE69624F0F420C0E4BE0F3697A713D77FD62CEA8A1F129A +15F7979401EFCDAF1CE89D288727BFD4CCC02481A5CB8E102F5DBA25198FB1CA680C6DBD34C80A +4993ECD7ABB3E6CA1B1D4D26149FBEBEC856A98DCAC436157F9EE498973D32624EF4F1F056518F +C51C8258C406BBE35C472381540E69FCAB6C913449A46FCCCD67C05247CCD60D4EE01A18C40900 +481D680E498AED92F4CDA08D2422312FD476DB1F79C843F02D18ED220147809638115249B571F8 +AADD6B66AA1D8280DB0CDE36D9E8D0AE49D28BFB046E22D0DDC3A552B79E01D9C6F8A189F8ABC8 +B441A134FDF28BF916E2FC7859484BDC94A153E6B6EADCF3E1FF4DAECE1955AE152A082A8ACEBB +590B89C64575262EDF0723EFCF6256C535FBD2D1DC8A9F03F5D079A5B40BA3A92308A6D497E72D +C174B667D8FCF3BBF386DE394486E5189C17344249763CA62CA10DF72B6C7F971DF0DE99B3E746 +C6E0C87D603A6BE06780DE9EBDDD7EDEBB8AAAFA6D9FD0B9F8081C66AB4C93C3657AE8C9F7981D +27B335546EBB73D02CFA73D1BDE16587273BF5C2C1F94CE1A475EC532A80BCD192BF78E7AB22FB +B6DF03356282870200A974A852EFA2DD516A4843B4DCE5DD8852B6DAAA43AEDFF402E51CEAF8C5 +80ACEAA9DA2F13AACCB40BD2C43D67CEC548C9E0F9A908653C20443FAF33E4D8FD7A2904011468 +309703BA503B9214999BD769D63D7D390C923DB8E7DD8378B73387F6B4AA49D1B12A1D3F23B37C +4F06D03636D16EAD43B4B4A769A34F6CB5B5D957B3E4EAB288CA2B6A973CCFA5BCBF902071CC36 +55C2FAA6C6982AF23BA0F4C1FA6063AB108EBC6D9CB751251B182E19C203A527A453A098D78986 +870B09369F931AC350470D7F1C87B67DA2E4668742D6D24F29CDA2D4D19FEC7965494E3E91D3B8 +6D8E9658721D53DCC5652E9CD92E0630E85FB68103D1C9FF4D54253CFA54A6A261FA469FB8F9AF +FF6F41DB7B28805CD7D05EDF02248A69449014E6BC5F2DE5C14A8DA25773B1D4A516E203DB2AEB +473C63C10A341852E64DA2BAA98202B72B44B67CD32E20440771793B789CE666CD2CCF2A7173B4 +561E7D42 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark + Index: xc/fonts/scaled/Type1/lcdxro.afm diff -u /dev/null xc/fonts/scaled/Type1/lcdxro.afm:1.1 --- /dev/null Wed Mar 8 16:39:16 2000 +++ xc/fonts/scaled/Type1/lcdxro.afm Wed Mar 8 16:39:16 2000 @@ -0,0 +1,497 @@ +StartFontMetrics 2.0 +Comment Copyright (c) 2000 Bigelow & Holmes Inc. and Y&Y, Inc. +Comment Patents pending. All Rights Reserved. +Comment Lucidux is a trademark of Bigelow & Holmes Inc. +Comment CreationDate: 2000 Mar 04 11:21:47 +Comment For other Bigelow & Holmes fonts see http://www.YandY.com +Version 000.200 +Notice Copyright (C) 2000 Bigelow & Holmes Inc. and Y&Y, Inc. All rights reserved. +FullName Lucidux Serif Oblique +FamilyName LuciduxSerif +Weight Normal +ItalicAngle -11.3 +IsFixedPitch false +UnderlinePosition -100 +UnderlineThickness 50 +FontName LuciduxSerif-Oblique +FontBBox -75 -211 1089 993 +Comment UniqueID 5096731 +CapHeight 723 +XHeight 530 +Ascender 771 +Descender -193 +EncodingScheme AdobeStandardEncoding +StartCharMetrics 337 +C 32 ; WX 250 ; N space ; B 0 0 0 0 ; +C 33 ; WX 333 ; N exclam ; B 118 0 360 723 ; +C 34 ; WX 408 ; N quotedbl ; B 211 530 491 771 ; +C 35 ; WX 500 ; N numbersign ; B 45 0 600 723 ; +C 36 ; WX 500 ; N dollar ; B 47 -60 584 783 ; +C 37 ; WX 833 ; N percent ; B 92 -18 885 741 ; +C 38 ; WX 778 ; N ampersand ; B 86 -18 829 741 ; +C 40 ; WX 333 ; N parenleft ; B 108 -145 436 771 ; +C 41 ; WX 333 ; N parenright ; B 22 -145 351 771 ; +C 42 ; WX 500 ; N asterisk ; B 169 358 553 723 ; +C 43 ; WX 564 ; N plus ; B 94 48 586 530 ; +C 44 ; WX 250 ; N comma ; B 34 -157 209 120 ; +C 45 ; WX 333 ; N hyphen ; B 93 265 358 325 ; +C 46 ; WX 250 ; N period ; B 65 0 209 120 ; +C 47 ; WX 278 ; N slash ; B -44 -145 438 723 ; +C 48 ; WX 500 ; N zero ; B 85 -18 560 741 ; +C 49 ; WX 500 ; N one ; B 63 0 444 729 ; +C 50 ; WX 500 ; N two ; B 33 0 559 741 ; +C 51 ; WX 500 ; N three ; B 46 -18 542 741 ; +C 52 ; WX 500 ; N four ; B 53 0 539 735 ; +C 53 ; WX 500 ; N five ; B 63 -18 573 723 ; +C 54 ; WX 500 ; N six ; B 78 -18 583 741 ; +C 55 ; WX 500 ; N seven ; B 89 0 631 723 ; +C 56 ; WX 500 ; N eight ; B 51 -18 567 741 ; +C 57 ; WX 500 ; N nine ; B 62 -18 567 741 ; +C 58 ; WX 278 ; N colon ; B 79 0 305 530 ; +C 59 ; WX 278 ; N semicolon ; B 48 -157 305 530 ; +C 60 ; WX 564 ; N less ; B 99 48 629 530 ; +C 61 ; WX 564 ; N equal ; B 76 175 604 404 ; +C 62 ; WX 564 ; N greater ; B 51 48 581 530 ; +C 63 ; WX 444 ; N question ; B 132 0 534 741 ; +C 64 ; WX 921 ; N at ; B 119 -18 946 741 ; +C 65 ; WX 722 ; N A ; B 0 0 728 732 ; +C 66 ; WX 667 ; N B ; B 23 0 694 723 ; +C 67 ; WX 667 ; N C ; B 101 -18 748 741 ; +C 68 ; WX 722 ; N D ; B 20 0 768 725 ; +C 69 ; WX 611 ; N E ; B 21 0 705 723 ; +C 70 ; WX 556 ; N F ; B 21 0 662 723 ; +C 71 ; WX 722 ; N G ; B 103 -18 774 741 ; +C 72 ; WX 722 ; N H ; B 20 0 847 723 ; +C 73 ; WX 333 ; N I ; B 25 0 453 723 ; +C 74 ; WX 389 ; N J ; B -27 -145 519 723 ; +C 75 ; WX 722 ; N K ; B 27 0 799 723 ; +C 76 ; WX 611 ; N L ; B 27 0 616 723 ; +C 77 ; WX 889 ; N M ; B 23 0 1010 723 ; +C 78 ; WX 722 ; N N ; B 21 -10 846 723 ; +C 79 ; WX 722 ; N O ; B 99 -18 767 741 ; +C 80 ; WX 556 ; N P ; B 15 0 653 726 ; +C 81 ; WX 722 ; N Q ; B 99 -146 819 741 ; +C 82 ; WX 667 ; N R ; B 15 0 667 726 ; +C 83 ; WX 556 ; N S ; B 61 -18 612 741 ; +C 84 ; WX 611 ; N T ; B 133 0 741 723 ; +C 85 ; WX 722 ; N U ; B 142 -18 856 723 ; +C 86 ; WX 722 ; N V ; B 139 -9 867 723 ; +C 87 ; WX 944 ; N W ; B 139 -9 1089 723 ; +C 88 ; WX 722 ; N X ; B 6 0 848 723 ; +C 89 ; WX 722 ; N Y ; B 139 0 867 723 ; +C 90 ; WX 611 ; N Z ; B 45 0 693 723 ; +C 91 ; WX 333 ; N bracketleft ; B 61 -145 442 771 ; +C 92 ; WX 278 ; N backslash ; B 130 -145 264 723 ; +C 93 ; WX 333 ; N bracketright ; B 16 -145 397 771 ; +C 94 ; WX 469 ; N asciicircum ; B 76 289 509 723 ; +C 95 ; WX 500 ; N underscore ; B 36 -60 452 0 ; +C 97 ; WX 444 ; N a ; B 59 -12 466 542 ; +C 98 ; WX 500 ; N b ; B 58 -12 534 771 ; +C 99 ; WX 444 ; N c ; B 79 -12 518 542 ; +C 100 ; WX 500 ; N d ; B 72 -12 595 771 ; +C 101 ; WX 444 ; N e ; B 77 -12 487 542 ; +C 102 ; WX 333 ; N f ; B 27 0 500 783 ; +C 103 ; WX 500 ; N g ; B 6 -205 591 542 ; +C 104 ; WX 500 ; N h ; B 18 0 524 771 ; +C 105 ; WX 278 ; N i ; B 23 0 335 723 ; +C 106 ; WX 278 ; N j ; B -75 -205 369 723 ; +C 107 ; WX 500 ; N k ; B 15 0 568 771 ; +C 108 ; WX 278 ; N l ; B 23 0 344 771 ; +C 109 ; WX 778 ; N m ; B 18 0 800 542 ; +C 110 ; WX 500 ; N n ; B 18 0 524 542 ; +C 111 ; WX 500 ; N o ; B 74 -12 532 542 ; +C 112 ; WX 500 ; N p ; B -39 -193 534 542 ; +C 113 ; WX 500 ; N q ; B 72 -193 547 542 ; +C 114 ; WX 333 ; N r ; B 15 0 434 542 ; +C 115 ; WX 389 ; N s ; B 51 -12 422 542 ; +C 116 ; WX 278 ; N t ; B 87 -12 378 651 ; +C 117 ; WX 500 ; N u ; B 85 -12 532 530 ; +C 118 ; WX 500 ; N v ; B 100 -6 606 530 ; +C 119 ; WX 722 ; N w ; B 100 -6 828 530 ; +C 120 ; WX 500 ; N x ; B 3 0 588 530 ; +C 121 ; WX 500 ; N y ; B 40 -193 606 530 ; +C 122 ; WX 444 ; N z ; B 30 0 506 530 ; +C 123 ; WX 480 ; N braceleft ; B 132 -145 526 771 ; +C 124 ; WX 200 ; N bar ; B 47 -145 278 771 ; +C 125 ; WX 480 ; N braceright ; B 79 -145 474 771 ; +C 126 ; WX 541 ; N asciitilde ; B 73 206 583 373 ; +C 161 ; WX 333 ; N exclamdown ; B 79 -193 321 530 ; +C 162 ; WX 500 ; N cent ; B 126 0 592 723 ; +C 163 ; WX 500 ; N sterling ; B 36 0 592 735 ; +C 165 ; WX 500 ; N yen ; B 90 0 645 723 ; +C 167 ; WX 500 ; N section ; B 12 -157 589 741 ; +C 168 ; WX 500 ; N currency ; B 110 202 545 575 ; +C 169 ; WX 180 ; N quotesingle ; B 176 506 304 771 ; +C 171 ; WX 500 ; N guillemotleft ; B 89 54 549 476 ; +C 180 ; WX 250 ; N periodcentered ; B 113 240 257 360 ; +C 182 ; WX 453 ; N paragraph ; B 115 -145 538 726 ; +C 187 ; WX 500 ; N guillemotright ; B 57 54 517 476 ; +C 191 ; WX 444 ; N questiondown ; B 50 -18 453 723 ; +C 193 ; WX 333 ; N grave ; B 202 626 414 783 ; +C 194 ; WX 333 ; N acute ; B 170 626 446 783 ; +C 195 ; WX 333 ; N circumflex ; B 120 627 463 783 ; +C 196 ; WX 333 ; N tilde ; B 129 626 477 741 ; +C 197 ; WX 333 ; N macron ; B 135 627 460 687 ; +C 198 ; WX 333 ; N breve ; B 160 626 486 783 ; +C 199 ; WX 333 ; N dotaccent ; B 243 626 360 723 ; +C 200 ; WX 333 ; N dieresis ; B 153 626 447 711 ; +C 202 ; WX 333 ; N ring ; B 201 626 427 848 ; +C 203 ; WX 333 ; N cedilla ; B 42 -211 227 0 ; +C 205 ; WX 333 ; N hungarumlaut ; B 125 627 494 783 ; +C 206 ; WX 333 ; N ogonek ; B 54 -181 230 0 ; +C 207 ; WX 333 ; N caron ; B 152 627 495 783 ; +C 225 ; WX 889 ; N AE ; B 0 0 983 723 ; +C 227 ; WX 276 ; N ordfeminine ; B 108 405 374 741 ; +C 232 ; WX 611 ; N Lslash ; B 27 0 616 723 ; +C 233 ; WX 722 ; N Oslash ; B 35 -18 831 741 ; +C 234 ; WX 889 ; N OE ; B 99 -18 983 741 ; +C 235 ; WX 310 ; N ordmasculine ; B 122 405 418 741 ; +C 241 ; WX 667 ; N ae ; B 59 -12 710 543 ; +C 245 ; WX 278 ; N dotlessi ; B 23 0 296 530 ; +C 248 ; WX 278 ; N lslash ; B 23 0 365 771 ; +C 249 ; WX 500 ; N oslash ; B 28 -12 578 542 ; +C 250 ; WX 722 ; N oe ; B 75 -12 761 542 ; +C 251 ; WX 500 ; N germandbls ; B 13 -12 539 783 ; +C -1 ; WX 722 ; N Aacute ; B 0 0 731 940 ; +C -1 ; WX 722 ; N Abreve ; B 0 0 728 940 ; +C -1 ; WX 722 ; N Acircumflex ; B 0 0 728 940 ; +C -1 ; WX 722 ; N Adieresis ; B 0 0 728 868 ; +C -1 ; WX 722 ; N Agrave ; B 0 0 728 940 ; +C -1 ; WX 722 ; N Amacron ; B 0 0 728 844 ; +C -1 ; WX 722 ; N Aogonek ; B 0 -181 728 732 ; +C -1 ; WX 722 ; N Aring ; B 0 0 728 945 ; +C -1 ; WX 722 ; N Atilde ; B 0 0 728 898 ; +C -1 ; WX 667 ; N Cacute ; B 101 -18 775 940 ; +C -1 ; WX 667 ; N Ccaron ; B 101 -18 748 940 ; +C -1 ; WX 667 ; N Ccedilla ; B 101 -211 748 741 ; +C -1 ; WX 667 ; N Ccircumflex ; B 101 -18 748 940 ; +C -1 ; WX 667 ; N Cdotaccent ; B 101 -18 748 880 ; +C -1 ; WX 722 ; N Dcaron ; B 20 0 768 940 ; +C -1 ; WX 722 ; N Dcroat ; B 20 0 768 725 ; +C -1 ; WX 611 ; N Eacute ; B 21 0 705 940 ; +C -1 ; WX 611 ; N Ebreve ; B 21 0 705 940 ; +C -1 ; WX 611 ; N Ecaron ; B 21 0 705 940 ; +C -1 ; WX 611 ; N Ecircumflex ; B 21 0 705 940 ; +C -1 ; WX 611 ; N Edieresis ; B 21 0 705 868 ; +C -1 ; WX 611 ; N Edotaccent ; B 21 0 705 880 ; +C -1 ; WX 611 ; N Egrave ; B 21 0 705 940 ; +C -1 ; WX 611 ; N Emacron ; B 21 0 705 844 ; +C -1 ; WX 722 ; N Eng ; B 21 -145 846 723 ; +C -1 ; WX 611 ; N Eogonek ; B 21 -181 705 723 ; +C -1 ; WX 722 ; N Eth ; B 20 0 768 725 ; +C -1 ; WX 500 ; N Euro ; B 57 -18 613 741 ; +C -1 ; WX 722 ; N Gbreve ; B 103 -18 774 940 ; +C -1 ; WX 722 ; N Gcircumflex ; B 103 -18 774 940 ; +C -1 ; WX 722 ; N Gcommaaccent ; B 103 -211 774 741 ; +C -1 ; WX 722 ; N Gdotaccent ; B 103 -18 774 880 ; +C -1 ; WX 722 ; N Hbar ; B 20 0 847 723 ; +C -1 ; WX 722 ; N Hcircumflex ; B 20 0 847 940 ; +C -1 ; WX 708 ; N IJ ; B 25 -145 838 723 ; +C -1 ; WX 333 ; N Iacute ; B 25 0 499 940 ; +C -1 ; WX 333 ; N Ibreve ; B 25 0 517 940 ; +C -1 ; WX 333 ; N Icircumflex ; B 25 0 495 940 ; +C -1 ; WX 333 ; N Idieresis ; B 25 0 479 868 ; +C -1 ; WX 333 ; N Idotaccent ; B 25 0 453 880 ; +C -1 ; WX 333 ; N Igrave ; B 25 0 453 940 ; +C -1 ; WX 333 ; N Imacron ; B 25 0 492 844 ; +C -1 ; WX 333 ; N Iogonek ; B 25 -181 453 723 ; +C -1 ; WX 333 ; N Itilde ; B 25 0 509 898 ; +C -1 ; WX 389 ; N Jcircumflex ; B -27 -145 561 940 ; +C -1 ; WX 722 ; N Kcommaaccent ; B 27 -211 799 723 ; +C -1 ; WX 611 ; N Lacute ; B 27 0 616 940 ; +C -1 ; WX 611 ; N Lcaron ; B 27 0 636 723 ; +C -1 ; WX 611 ; N Lcommaaccent ; B 27 -211 616 723 ; +C -1 ; WX 611 ; N Ldot ; B 27 0 616 723 ; +C -1 ; WX 722 ; N Nacute ; B 21 -10 846 940 ; +C -1 ; WX 722 ; N Ncaron ; B 21 -10 846 940 ; +C -1 ; WX 722 ; N Ncommaaccent ; B 21 -211 846 723 ; +C -1 ; WX 722 ; N Ntilde ; B 21 -10 846 898 ; +C -1 ; WX 722 ; N Oacute ; B 99 -18 767 940 ; +C -1 ; WX 722 ; N Obreve ; B 99 -18 767 940 ; +C -1 ; WX 722 ; N Ocircumflex ; B 99 -18 767 940 ; +C -1 ; WX 722 ; N Odieresis ; B 99 -18 767 868 ; +C -1 ; WX 722 ; N Ograve ; B 99 -18 767 940 ; +C -1 ; WX 722 ; N Ohungarumlaut ; B 99 -18 767 940 ; +C -1 ; WX 722 ; N Omacron ; B 99 -18 767 844 ; +C -1 ; WX 722 ; N Otilde ; B 99 -18 767 898 ; +C -1 ; WX 667 ; N Racute ; B 15 0 667 940 ; +C -1 ; WX 667 ; N Rcaron ; B 15 0 667 940 ; +C -1 ; WX 667 ; N Rcommaaccent ; B 15 -211 667 726 ; +C -1 ; WX 556 ; N Sacute ; B 61 -18 667 940 ; +C -1 ; WX 556 ; N Scaron ; B 61 -18 640 940 ; +C -1 ; WX 556 ; N Scedilla ; B 61 -191 612 741 ; +C -1 ; WX 556 ; N Scircumflex ; B 61 -18 612 940 ; +C -1 ; WX 556 ; N Scommaaccent ; B 61 -211 612 741 ; +C -1 ; WX 611 ; N Tbar ; B 133 0 741 723 ; +C -1 ; WX 611 ; N Tcaron ; B 133 0 741 940 ; +C -1 ; WX 611 ; N Tcedilla ; B 133 -191 741 723 ; +C -1 ; WX 611 ; N Tcommaaccent ; B 133 -211 741 723 ; +C -1 ; WX 556 ; N Thorn ; B 21 0 609 723 ; +C -1 ; WX 722 ; N Uacute ; B 142 -18 856 940 ; +C -1 ; WX 722 ; N Ubreve ; B 142 -18 856 940 ; +C -1 ; WX 722 ; N Ucircumflex ; B 142 -18 856 940 ; +C -1 ; WX 722 ; N Udieresis ; B 142 -18 856 868 ; +C -1 ; WX 722 ; N Ugrave ; B 142 -18 856 940 ; +C -1 ; WX 722 ; N Uhungarumlaut ; B 142 -18 856 940 ; +C -1 ; WX 722 ; N Umacron ; B 142 -18 856 844 ; +C -1 ; WX 722 ; N Uogonek ; B 142 -181 856 723 ; +C -1 ; WX 722 ; N Uring ; B 142 -18 856 993 ; +C -1 ; WX 722 ; N Utilde ; B 142 -18 856 898 ; +C -1 ; WX 944 ; N Wcircumflex ; B 139 -9 1089 940 ; +C -1 ; WX 722 ; N Yacute ; B 139 0 867 940 ; +C -1 ; WX 722 ; N Ycircumflex ; B 139 0 867 940 ; +C -1 ; WX 722 ; N Ydieresis ; B 139 0 867 868 ; +C -1 ; WX 611 ; N Zacute ; B 45 0 693 940 ; +C -1 ; WX 611 ; N Zcaron ; B 45 0 693 940 ; +C -1 ; WX 611 ; N Zdotaccent ; B 45 0 693 880 ; +C -1 ; WX 444 ; N aacute ; B 59 -12 539 783 ; +C -1 ; WX 444 ; N abreve ; B 59 -12 551 783 ; +C -1 ; WX 444 ; N acircumflex ; B 59 -12 528 783 ; +C -1 ; WX 444 ; N adieresis ; B 59 -12 512 711 ; +C -1 ; WX 333 ; N afii57929 ; B 228 549 369 771 ; +C -1 ; WX 444 ; N agrave ; B 59 -12 466 783 ; +C -1 ; WX 444 ; N amacron ; B 59 -12 518 687 ; +C -1 ; WX 444 ; N aogonek ; B 59 -181 466 542 ; +C -1 ; WX 333 ; N apostrophe ; B 228 549 369 771 ; +C -1 ; WX 444 ; N aring ; B 59 -12 492 848 ; +C -1 ; WX 444 ; N atilde ; B 59 -12 535 741 ; +C -1 ; WX 200 ; N brokenbar ; B 47 -145 278 771 ; +C -1 ; WX 444 ; N cacute ; B 79 -12 600 783 ; +C -1 ; WX 444 ; N ccaron ; B 79 -12 601 783 ; +C -1 ; WX 444 ; N ccedilla ; B 79 -211 518 542 ; +C -1 ; WX 444 ; N ccircumflex ; B 79 -12 569 783 ; +C -1 ; WX 444 ; N cdotaccent ; B 79 -12 518 723 ; +C -1 ; WX 333 ; N commaaccent ; B 42 -211 224 -54 ; +C -1 ; WX 760 ; N copyright ; B 109 24 796 699 ; +C -1 ; WX 647 ; N dcaron ; B 72 -12 788 771 ; +C -1 ; WX 500 ; N dcroat ; B 72 -12 628 771 ; +C -1 ; WX 400 ; N degree ; B 171 452 467 741 ; +C -1 ; WX 564 ; N divide ; B 94 48 586 530 ; +C -1 ; WX 278 ; N dotlessj ; B -75 -205 330 530 ; +C -1 ; WX 444 ; N eacute ; B 77 -12 548 783 ; +C -1 ; WX 444 ; N ebreve ; B 77 -12 560 783 ; +C -1 ; WX 444 ; N ecaron ; B 77 -12 570 783 ; +C -1 ; WX 444 ; N ecircumflex ; B 77 -12 537 783 ; +C -1 ; WX 444 ; N edieresis ; B 77 -12 521 711 ; +C -1 ; WX 444 ; N edotaccent ; B 77 -12 487 723 ; +C -1 ; WX 444 ; N egrave ; B 77 -12 487 783 ; +C -1 ; WX 444 ; N emacron ; B 77 -12 534 687 ; +C -1 ; WX 500 ; N eng ; B 18 -205 524 542 ; +C -1 ; WX 444 ; N eogonek ; B 77 -181 487 542 ; +C -1 ; WX 500 ; N eth ; B 73 -12 539 774 ; +C -1 ; WX 500 ; N gbreve ; B 6 -205 591 783 ; +C -1 ; WX 500 ; N gcircumflex ; B 6 -205 591 783 ; +C -1 ; WX 500 ; N gcommaaccent ; B 6 -205 591 848 ; +C -1 ; WX 500 ; N gdotaccent ; B 6 -205 591 723 ; +C -1 ; WX 500 ; N hbar ; B 18 0 524 771 ; +C -1 ; WX 500 ; N hcircumflex ; B 18 0 590 975 ; +C -1 ; WX 278 ; N iacute ; B 23 0 438 783 ; +C -1 ; WX 278 ; N ibreve ; B 23 0 461 783 ; +C -1 ; WX 278 ; N icircumflex ; B 23 0 438 783 ; +C -1 ; WX 278 ; N idieresis ; B 23 0 422 711 ; +C -1 ; WX 278 ; N igrave ; B 23 0 372 783 ; +C -1 ; WX 552 ; N ij ; B 23 -205 643 723 ; +C -1 ; WX 278 ; N imacron ; B 23 0 431 687 ; +C -1 ; WX 278 ; N iogonek ; B 23 -181 335 723 ; +C -1 ; WX 278 ; N itilde ; B 23 0 446 741 ; +C -1 ; WX 278 ; N jcircumflex ; B -75 -205 445 783 ; +C -1 ; WX 500 ; N kcommaaccent ; B 15 -211 568 771 ; +C -1 ; WX 500 ; N kgreenlandic ; B 18 0 571 530 ; +C -1 ; WX 278 ; N lacute ; B 23 0 476 976 ; +C -1 ; WX 406 ; N lcaron ; B 23 0 537 771 ; +C -1 ; WX 278 ; N lcommaaccent ; B 23 -211 344 771 ; +C -1 ; WX 344 ; N ldot ; B 23 0 449 771 ; +C -1 ; WX 564 ; N logicalnot ; B 108 145 576 386 ; +C -1 ; WX 278 ; N longs ; B 27 0 500 783 ; +C -1 ; WX 500 ; N mu ; B 36 -145 532 530 ; +C -1 ; WX 564 ; N multiply ; B 57 48 622 530 ; +C -1 ; WX 500 ; N nacute ; B 18 0 578 783 ; +C -1 ; WX 604 ; N napostrophe ; B 122 0 627 771 ; +C -1 ; WX 250 ; N nbspace ; B 0 0 0 0 ; +C -1 ; WX 500 ; N ncaron ; B 18 0 574 783 ; +C -1 ; WX 500 ; N ncommaaccent ; B 18 -211 524 542 ; +C -1 ; WX 500 ; N ntilde ; B 18 0 562 741 ; +C -1 ; WX 500 ; N oacute ; B 74 -12 570 783 ; +C -1 ; WX 500 ; N obreve ; B 74 -12 569 783 ; +C -1 ; WX 500 ; N ocircumflex ; B 74 -12 546 783 ; +C -1 ; WX 500 ; N odieresis ; B 74 -12 532 711 ; +C -1 ; WX 500 ; N ograve ; B 74 -12 532 783 ; +C -1 ; WX 500 ; N ohungarumlaut ; B 74 -12 617 783 ; +C -1 ; WX 500 ; N omacron ; B 74 -12 543 687 ; +C -1 ; WX 750 ; N onehalf ; B 80 -18 806 741 ; +C -1 ; WX 750 ; N onequarter ; B 80 -18 806 741 ; +C -1 ; WX 300 ; N onesuperior ; B 141 377 341 741 ; +C -1 ; WX 500 ; N otilde ; B 74 -12 560 741 ; +C -1 ; WX 564 ; N plusminus ; B 41 0 600 578 ; +C -1 ; WX 333 ; N racute ; B 15 0 484 783 ; +C -1 ; WX 333 ; N rcaron ; B 15 0 495 783 ; +C -1 ; WX 333 ; N rcommaaccent ; B 15 -211 434 542 ; +C -1 ; WX 760 ; N registered ; B 109 24 796 699 ; +C -1 ; WX 389 ; N sacute ; B 51 -12 536 783 ; +C -1 ; WX 389 ; N scaron ; B 51 -12 533 783 ; +C -1 ; WX 389 ; N scedilla ; B 51 -191 422 542 ; +C -1 ; WX 389 ; N scircumflex ; B 51 -12 498 783 ; +C -1 ; WX 389 ; N scommaaccent ; B 51 -211 422 542 ; +C -1 ; WX 333 ; N sfthyphen ; B 93 265 358 325 ; +C -1 ; WX 278 ; N tbar ; B 72 -12 378 651 ; +C -1 ; WX 325 ; N tcaron ; B 87 -12 496 824 ; +C -1 ; WX 278 ; N tcedilla ; B 63 -191 378 651 ; +C -1 ; WX 278 ; N tcommaaccent ; B 37 -211 378 651 ; +C -1 ; WX 500 ; N thorn ; B -39 -193 534 771 ; +C -1 ; WX 750 ; N threequarters ; B 80 -18 806 741 ; +C -1 ; WX 300 ; N threesuperior ; B 117 362 387 741 ; +C -1 ; WX 300 ; N twosuperior ; B 116 371 403 741 ; +C -1 ; WX 500 ; N uacute ; B 85 -12 541 783 ; +C -1 ; WX 500 ; N ubreve ; B 85 -12 553 783 ; +C -1 ; WX 500 ; N ucircumflex ; B 85 -12 533 783 ; +C -1 ; WX 500 ; N udieresis ; B 85 -12 532 711 ; +C -1 ; WX 500 ; N ugrave ; B 85 -12 532 783 ; +C -1 ; WX 500 ; N uhungarumlaut ; B 85 -12 613 783 ; +C -1 ; WX 500 ; N umacron ; B 85 -12 539 687 ; +C -1 ; WX 500 ; N uni20AC ; B 57 -18 613 741 ; +C -1 ; WX 500 ; N uogonek ; B 85 -181 532 530 ; +C -1 ; WX 500 ; N uring ; B 85 -12 532 848 ; +C -1 ; WX 500 ; N utilde ; B 85 -12 550 741 ; +C -1 ; WX 722 ; N wcircumflex ; B 100 -6 828 783 ; +C -1 ; WX 500 ; N yacute ; B 40 -193 606 783 ; +C -1 ; WX 500 ; N ycircumflex ; B 40 -193 606 783 ; +C -1 ; WX 500 ; N ydieresis ; B 40 -193 606 711 ; +C -1 ; WX 444 ; N zacute ; B 30 0 559 783 ; +C -1 ; WX 444 ; N zcaron ; B 30 0 552 783 ; +C -1 ; WX 444 ; N zdotaccent ; B 30 0 506 723 ; +EndCharMetrics +StartComposites 132 +CC Aacute 2 ; PCC A 0 0 ; PCC acute 254 157 ; +CC Abreve 2 ; PCC A 0 0 ; PCC breve 195 157 ; +CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 195 157 ; +CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 195 157 ; +CC Agrave 2 ; PCC A 0 0 ; PCC grave 138 157 ; +CC Amacron 2 ; PCC A 0 0 ; PCC macron 195 157 ; +CC Atilde 2 ; PCC A 0 0 ; PCC tilde 195 157 ; +CC Cacute 2 ; PCC C 0 0 ; PCC acute 298 157 ; +CC Ccaron 2 ; PCC C 0 0 ; PCC caron 222 157 ; +CC Ccircumflex 2 ; PCC C 0 0 ; PCC circumflex 222 157 ; +CC Cdotaccent 2 ; PCC C 0 0 ; PCC dotaccent 222 157 ; +CC Dcaron 2 ; PCC D 0 0 ; PCC caron 173 157 ; +CC Eacute 2 ; PCC E 0 0 ; PCC acute 157 157 ; +CC Ebreve 2 ; PCC E 0 0 ; PCC breve 150 157 ; +CC Ecaron 2 ; PCC E 0 0 ; PCC caron 162 157 ; +CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 134 157 ; +CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 131 157 ; +CC Edotaccent 2 ; PCC E 0 0 ; PCC dotaccent 144 157 ; +CC Egrave 2 ; PCC E 0 0 ; PCC grave 98 157 ; +CC Emacron 2 ; PCC E 0 0 ; PCC macron 156 157 ; +CC Gbreve 2 ; PCC G 0 0 ; PCC breve 234 157 ; +CC Gcircumflex 2 ; PCC G 0 0 ; PCC circumflex 234 157 ; +CC Gdotaccent 2 ; PCC G 0 0 ; PCC dotaccent 234 157 ; +CC Hcircumflex 2 ; PCC H 0 0 ; PCC circumflex 194 157 ; +CC Iacute 2 ; PCC I 0 0 ; PCC acute 22 157 ; +CC Ibreve 2 ; PCC I 0 0 ; PCC breve 0 157 ; +CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 0 157 ; +CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 0 157 ; +CC Idotaccent 2 ; PCC I 0 0 ; PCC dotaccent 0 157 ; +CC Igrave 2 ; PCC I 0 0 ; PCC grave -26 157 ; +CC Imacron 2 ; PCC I 0 0 ; PCC macron 0 157 ; +CC Itilde 2 ; PCC I 0 0 ; PCC tilde 0 157 ; +CC Jcircumflex 2 ; PCC J 0 0 ; PCC circumflex 66 157 ; +CC Lacute 2 ; PCC L 0 0 ; PCC acute 106 157 ; +CC Ldot 2 ; PCC L 0 0 ; PCC dotaccent 307 -313 ; +CC Nacute 2 ; PCC N 0 0 ; PCC acute 271 157 ; +CC Ncaron 2 ; PCC N 0 0 ; PCC caron 186 157 ; +CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 204 157 ; +CC Oacute 2 ; PCC O 0 0 ; PCC acute 241 157 ; +CC Obreve 2 ; PCC O 0 0 ; PCC breve 194 157 ; +CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 194 157 ; +CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 194 157 ; +CC Ograve 2 ; PCC O 0 0 ; PCC grave 147 157 ; +CC Ohungarumlaut 2 ; PCC O 0 0 ; PCC hungarumlaut 240 157 ; +CC Omacron 2 ; PCC O 0 0 ; PCC macron 194 157 ; +CC Otilde 2 ; PCC O 0 0 ; PCC tilde 194 157 ; +CC Racute 2 ; PCC R 0 0 ; PCC acute 181 157 ; +CC Rcaron 2 ; PCC R 0 0 ; PCC caron 120 157 ; +CC Sacute 2 ; PCC S 0 0 ; PCC acute 190 157 ; +CC Scaron 2 ; PCC S 0 0 ; PCC caron 114 157 ; +CC Scircumflex 2 ; PCC S 0 0 ; PCC circumflex 114 157 ; +CC Tcaron 2 ; PCC T 0 0 ; PCC caron 139 157 ; +CC Uacute 2 ; PCC U 0 0 ; PCC acute 273 157 ; +CC Ubreve 2 ; PCC U 0 0 ; PCC breve 212 157 ; +CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 220 157 ; +CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 220 157 ; +CC Ugrave 2 ; PCC U 0 0 ; PCC grave 167 157 ; +CC Uhungarumlaut 2 ; PCC U 0 0 ; PCC hungarumlaut 276 157 ; +CC Umacron 2 ; PCC U 0 0 ; PCC macron 219 157 ; +CC Uring 2 ; PCC U 0 0 ; PCC ring 215 145 ; +CC Utilde 2 ; PCC U 0 0 ; PCC tilde 212 157 ; +CC Wcircumflex 2 ; PCC W 0 0 ; PCC circumflex 337 157 ; +CC Yacute 2 ; PCC Y 0 0 ; PCC acute 272 157 ; +CC Ycircumflex 2 ; PCC Y 0 0 ; PCC circumflex 234 157 ; +CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 235 157 ; +CC Zacute 2 ; PCC Z 0 0 ; PCC acute 204 157 ; +CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 140 157 ; +CC Zdotaccent 2 ; PCC Z 0 0 ; PCC dotaccent 132 157 ; +CC aacute 2 ; PCC a 0 0 ; PCC acute 93 0 ; +CC abreve 2 ; PCC a 0 0 ; PCC breve 65 0 ; +CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 65 0 ; +CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 65 0 ; +CC agrave 2 ; PCC a 0 0 ; PCC grave 36 0 ; +CC amacron 2 ; PCC a 0 0 ; PCC macron 58 0 ; +CC aring 2 ; PCC a 0 0 ; PCC ring 65 0 ; +CC atilde 2 ; PCC a 0 0 ; PCC tilde 58 0 ; +CC cacute 2 ; PCC c 0 0 ; PCC acute 154 0 ; +CC ccaron 2 ; PCC c 0 0 ; PCC caron 106 0 ; +CC ccircumflex 2 ; PCC c 0 0 ; PCC circumflex 106 0 ; +CC cdotaccent 2 ; PCC c 0 0 ; PCC dotaccent 108 0 ; +CC eacute 2 ; PCC e 0 0 ; PCC acute 102 0 ; +CC ebreve 2 ; PCC e 0 0 ; PCC breve 74 0 ; +CC ecaron 2 ; PCC e 0 0 ; PCC caron 75 0 ; +CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 74 0 ; +CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 74 0 ; +CC edotaccent 2 ; PCC e 0 0 ; PCC dotaccent 75 0 ; +CC egrave 2 ; PCC e 0 0 ; PCC grave 45 0 ; +CC emacron 2 ; PCC e 0 0 ; PCC macron 74 0 ; +CC gbreve 2 ; PCC g 0 0 ; PCC breve 62 0 ; +CC gcircumflex 2 ; PCC g 0 0 ; PCC circumflex 74 0 ; +CC gdotaccent 2 ; PCC g 0 0 ; PCC dotaccent 62 0 ; +CC hcircumflex 2 ; PCC h 0 0 ; PCC circumflex 88 192 ; +CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -8 0 ; +CC ibreve 2 ; PCC dotlessi 0 0 ; PCC breve -25 0 ; +CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -25 0 ; +CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -25 0 ; +CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -42 0 ; +CC imacron 2 ; PCC dotlessi 0 0 ; PCC macron -29 0 ; +CC itilde 2 ; PCC dotlessi 0 0 ; PCC tilde -31 0 ; +CC lacute 2 ; PCC l 0 0 ; PCC acute -8 193 ; +CC nacute 2 ; PCC n 0 0 ; PCC acute 132 0 ; +CC ncaron 2 ; PCC n 0 0 ; PCC caron 79 0 ; +CC ntilde 2 ; PCC n 0 0 ; PCC tilde 85 0 ; +CC oacute 2 ; PCC o 0 0 ; PCC acute 124 0 ; +CC obreve 2 ; PCC o 0 0 ; PCC breve 83 0 ; +CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 83 0 ; +CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 83 0 ; +CC ograve 2 ; PCC o 0 0 ; PCC grave 42 0 ; +CC ohungarumlaut 2 ; PCC o 0 0 ; PCC hungarumlaut 123 0 ; +CC omacron 2 ; PCC o 0 0 ; PCC macron 83 0 ; +CC otilde 2 ; PCC o 0 0 ; PCC tilde 83 0 ; +CC racute 2 ; PCC r 0 0 ; PCC acute 38 0 ; +CC rcaron 2 ; PCC r 0 0 ; PCC caron 0 0 ; +CC sacute 2 ; PCC s 0 0 ; PCC acute 90 0 ; +CC scaron 2 ; PCC s 0 0 ; PCC caron 38 0 ; +CC scircumflex 2 ; PCC s 0 0 ; PCC circumflex 35 0 ; +CC uacute 2 ; PCC u 0 0 ; PCC acute 95 0 ; +CC ubreve 2 ; PCC u 0 0 ; PCC breve 67 0 ; +CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 70 0 ; +CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 79 0 ; +CC ugrave 2 ; PCC u 0 0 ; PCC grave 37 0 ; +CC uhungarumlaut 2 ; PCC u 0 0 ; PCC hungarumlaut 119 0 ; +CC umacron 2 ; PCC u 0 0 ; PCC macron 79 0 ; +CC uring 2 ; PCC u 0 0 ; PCC ring 73 0 ; +CC utilde 2 ; PCC u 0 0 ; PCC tilde 73 0 ; +CC wcircumflex 2 ; PCC w 0 0 ; PCC circumflex 228 0 ; +CC yacute 2 ; PCC y 0 0 ; PCC acute 150 0 ; +CC ycircumflex 2 ; PCC y 0 0 ; PCC circumflex 120 0 ; +CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 122 0 ; +CC zacute 2 ; PCC z 0 0 ; PCC acute 113 0 ; +CC zcaron 2 ; PCC z 0 0 ; PCC caron 57 0 ; +CC zdotaccent 2 ; PCC z 0 0 ; PCC dotaccent 55 0 ; +EndComposites +EndFontMetrics Index: xc/fonts/scaled/Type1/lcdxro.pfa diff -u /dev/null xc/fonts/scaled/Type1/lcdxro.pfa:1.1 --- /dev/null Wed Mar 8 16:39:16 2000 +++ xc/fonts/scaled/Type1/lcdxro.pfa Wed Mar 8 16:39:16 2000 @@ -0,0 +1,1188 @@ +%!PS-AdobeFont-1.1: LuciduxSerif-Oblique 000.200 +%%CreationDate: 2000 Mar 04 11:21:47 + +% Copyright (C) 2000 Bigelow & Holmes Inc. and Y&Y, Inc. +% Patents pending. All Rights Reserved. +% Lucidux is a trademark of Bigelow & Holmes Inc. + +% Permission is hereby granted, free of charge, to any person obtaining a +% copy of these Fonts and associated documentation files (the "Font Software"), +% to deal in the Font Software, including without limitation the rights to +% use, copy, merge, publish, distribute, sublicense, and/or sell copies of +% the Font Software, and to permit persons to whom the Font Software is +% furnished to do so, subject to the following conditions: + +% The above copyright, trademark, patent notices and this permission notice +% shall be included in all copies of one or more of the Software. + +% The Font Software may not be modified, alterered, or added to, and in +% particular the designs of glyphs or characters in the Fonts may not be +% modified nor may additional glyphs or characters be added to the Fonts, +% except that composite characters composed of two or more characters in the +% Fonts may be created using the seac (Standard Encoding Accented Character) +% Type 1 operator. + +% THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +% EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +% MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF +% COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BIGELOW & +% HOLMES INC. OR Y&Y, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR +% CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +% ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +% OTHER DEALINGS IN THE FONT SOFTWARE. + +% Except as contained in this notice, the names of Bigelow & Holmes Inc. +% and Y&Y, Inc. shall not be used in advertising or otherwise to promote +% the sale, use or other dealings in this Font Software without prior +% written authorization from the Bigelow & Holmes Inc. and Y&Y, Inc. + +% For further information, contact: +% mailto:support@yandy.com or mailto:design@bigelowandholmes.com +% For other Bigelow & Holmes fonts see http://www.YandY.com + +12 dict begin +/FontInfo 9 dict dup begin + /version (000.200) readonly def + /Notice (Copyright (C) 2000 Bigelow & Holmes Inc. and Y&Y, Inc. All rights reserved.) readonly def + /FullName (Lucidux Serif Oblique) readonly def + /FamilyName (LuciduxSerif) readonly def + /Weight (Normal) readonly def + /ItalicAngle -11.3 def + /isFixedPitch false def + /UnderlinePosition -100 def + /UnderlineThickness 50 def +end readonly def +/FontName /LuciduxSerif-Oblique def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0.0002 0.001 0 0] readonly def +/Encoding StandardEncoding def +/FontBBox{-75 -211 1089 993}readonly def +/UniqueID 5096731 def +currentdict end +currentfile eexec +8053514D28EC28DA1630165FAB262882D3FD7667933E8516EE9710995B33AD6AFA66AE56E3B4F8 +1A010BA2D16746155E0B46B8233AF9FC6FB5A1DE6E6D7277AEC5CE81679028F3B440619FB93E88 +614EBEE63F9A83374DA4CF45FCBBACEBE22717D34438C9B2E3DC7580F497AC697EA20AC096930F +E90934EA8FFE999902BA55F2149DEADDCBC4CF03F530F526450856BF8F3CE1C247AA6810D725B6 +E4CB0C6B7DC3B7B5FBE22909A1ED01A6BCEFAE9A709DB1D61BF8A223420C27BC28535F3C5C58CE +BD7239771F455E727EB9C9025F7B0B98D9C49F8A33E8C9A67A30CBC40719B9902A42978F54386A +B019C6EED778074F809506075C7CF394AFF792A52C36CC8FCE79BAABF945F6AB3AE924FBF89F12 +D0D56822E09D7226051E5235D975B5A7E02610477A9B9148DA4E93861FF7BAFCEB6B60E1F0C628 +C19BDCC8FB0D21980C1442911BDF2907526E3E286EBAF9B5F9AC052A9334099A9BE2264AF09BB1 +ED7F2A7FEE947016F8C9EC9341D3DF6BE18050C75051B5FC0A97A8BAFE84552C88411C2861F306 +2864344C399AA24FA84162D20E3564EB28B7FE9BE257B8770A0853CE7489A75E7DF8F7D9459363 +571E0615B387C213B2DC67E1402F25367F1713799CEA0A213A69C4D1D85A2B28E73BF02ADD0A20 +014AD8FB58059D5EB7B5D8DBC9D83CF85738BF5CB03E945776EB3D26A189464900BE61C2CA863E +620507BF85F8C4CAD668ED65510E4E67CAD9523D5F6084C359E4636AC1442E215271C693F4B1A6 +887A2CEB80A72BE4770AB40A38A7CE154E4CBA2177F61E6D5437A3F698B8093283CB2EFA4662D6 +686BC848FF30299F67F5C2D4EDA4BDBB10C0FB1301F317850FE17433AC9BF9EB70C864E0036C31 +A388029F37AAEACD039B853DEDB4782D673E53B03A463A112F9B2037917C86E3D58216FE82F03C +D5B9BECEF783A204D03BAFFDFCCCC0AD535B8B502AB4004C57E13462E7FF7B81E385D06D9E25B7 +30CC54841B1B63F0274EFADA1D4F2392C248434ECCF15F2FCDE681F7E1553CB378A427492D76FD +ECF2DDDAA59B7E06E394111BFD1C4A38391059D5A254869EF95B182B3382FD0ACBBF69630A45C6 +6E5A0D8C06026BE239BA2A51926AB1B161135CD682CF1D2E33229DEC06BC1816857289FC147434 +DD0DCD34BEEF44B44CCDBEBC7DA29973A3B5965651F100C1D09780F42E72C738375650AFEC0ABA +B8A93505767A123B7EF1CF293E799194D5EFEAD1AA8AFC3E704C9190E8575650670099437B4CC1 +4462DA29C8BD02CD5EE0E4FF60ED1C7DA0DCBD89DDB2DB8B03799795F31F812DB7825687A8A9FF +0C71413959F55C5384762EE69847C2F124DA2B0EBC4AEDB1DE6B8FF1B712308BB9939DBDD52415 +ABCDD2D5DEF2BCF17165F438651BAA139E0EA89ECC0AD92D323B4FE4638E68FD26A3F68DE0D43B +BAB5AB245A53D504F014EA180899F25792C09E82723730115A3BF7BD0FFAA8D66C31FEB096B59B +4F2A95232AF5C127F345CD46FD88ADECEAD392F5CC13338F76E87F9A37092EFBD0EE36D9593843 +90FD996DE9FD44009B629AED020DC6F9AF8AB3262458752943B2D7F50DCC46E8AFC8BD729BC6AE +C15C48BEB2D9DBA60C5A7C51FEB6BFBB8FF49786E04DA09EF621CB72C12372D28ECB837377D914 +F900A6DC826AE830AF78B0B79CF7ECBE7F30788C9043E490197DD46920A074727F88E3010AA7F8 +9E4F950D80B53B8C3DFA2E302A1E617B00A1433DEBDEF51A0B2635525903D69CA685B34C510B20 +D365D438D03371FF06F82D2FB27CD10011F35D9A015ED95DEFDBFBCE2C55FD0DB5DAE3DE5C3832 +A312921E7439465434A2D2043C95F32B1DEF80A5EFAA4E36F736E7C5E06C8084E488AD7D4F3A90 +8D4850C609F928574EFBC153FFF460D0B3095EF51B8409FA084E4AA27301E9C60EB5C8590048E4 +76B503541CFB426EB0164AAE0101139B33F07208E62B1F6E3CDF5B0D6E754EEF370EBC305C7455 +1D3D33A46BF0E1DD1AD57031CFC8439E3068F798F1FCB1E37602591B040C7311F1AE7A0A907D22 +B0D66C82E8DDB9CF2CEC39260F674F3F9C0EB48103EAFCB8E32E4F9F18D4158E209D9EE47F6895 +3BD79A3314F8E3E7D8F7EA3B9F3A409D3CED2BA5FABFB28303F7D6573ADE184F7DC32421820350 +FA5ACFCB44956D216ED5BE91F7588A3F84A062EB55108A21264AAFCF398F0ECA7DEB668849E62A +3ABDAB669414723C8F060A21165721032764663AD301627B96B52557F7B8F4B8BEAC04291F60AD +E0F036FDC8D777D78327E4BA529B2463058AAC27EC9499AE960D1F2D69422BA931C3E65B23BDED +475B3C71D1E398DF08F7D29C8BA0869963217FDA02A9F2622F527A16543B4801C2023907B6D65B +5F6C092A29429BC32250737503396868579EF59B95BF08038CEBCFBFB32723EFAD0B5573D52045 +B5AB304413915CF6A65FA32CA359D18DD9D15EECF631E8414017B3510FAA8E87D15EC38F736E17 +7C71B419B329EA3BD46652DAA36FF04D0030EC6E6014804775035789C29C24709B03F2A872727F +B8FA1548E2EDC8493111AC1286825F980A81785FC53EACF3DC9DE9E5789ED93F8D01E2A113CFCA +5C32D8663879D46CF1BBBC5E02FDCBF3A4B298973A04E7C4D7E62ABA2BD78B144B1AEB767CAF94 +F487B43EEBF2636EC44860C68FF44BDCF10271F3B3130DB75B13F020C8E95D6AEB5F127F294494 +AF846A777A1BFC34B6CAEB877FE80F5B4D71774BC3018062E5A659CC9D7207E345C694A61A1E77 +57A4DB9A57D81AD4AA2664A69674E1A33B33C783430915BC1D85A0CDAA97F81388CB419EC2A7F2 +78C410A9268D2930D486731CD49D07BE03672735F4CE1EB5FB5F26C8985F1325C4ACA02CA507B8 +ADDA2369C1202D5BCF406557BBFFF7F3A5528A8453981AAF37F04057CC43047065BE42D0AC7E66 +426D6BFE2DC1B73C594D69611E8FFA6D57AD98BD75C86CBFB9B480636FEB8E71829A9CFBEA4FCA +E170E56BA164AA2C539A0A60D04A7432B3768F9E58018843142293534DFC8BDE04EFF884140E70 +C4D148018A38F9419FF360BD9D8F84D1D902CE1277B89375CD0C1D18106707985811B391526F5F +9322A1633149CAB477C7685140396967C8162BE670EC9474C072A0FF3FB5B2D0A1D8200FCE5D40 +85B0AA590BD607B81E4A0B5046C5B03EE02863F76A315C628A051B6F9D6AB53C5CE0CC3D87F60D +F0702BF64391249F435DB5628602849DB710552B86488F4A1E6562290F4BE284011D9C28AB8039 +E82FF62ECFAB1660344AD2FA37912E7B9A94504E4F3225E7EFAB003FAA17015BF5FFF97E13A74C +750AFAAF22B0B2F6339F664E3DDFC230438A711CDA36ECCEAA3A555D15FD31225D5FBA72EBDD20 +0D74B7A248E60AE6B3D5AF6D17FB16928554E34C91C551DE9B0C0F8BB9C15A69727B447FDB0128 +6B4DD2BF2663F1BC8287DDF88956B774EAB2D0D79B3307440A4398389AFFC7EDC6E039109E8C91 +8559DD29E51BCD7E192B3F51FC65EF67C66ED0581060A9250BF563987B4DC27594FF07CA720C03 +33D6960C8C655556C5FB5C29C04B1981BFDB979703C536AF6702AFF564C4458D242070EFFEE0BE +95F0C637757673A94A3162FE0F282505DC19F45620B5D1C811E7A62543FFE12C9848BE8D101B85 +88D64250A34D341AACD2B413CE8FA86A9155E5AFDF2E025D190D969BAD1558C47CC4DBBBADF37F +5D2591A99491A76917C0A2CD7AA4BDAA0392D100C755BF4D8A08ADB4281B113A62FB68569445B2 +57D91A9B4473BA9AA69AB5656E3CD62EBE59B761309BDA1F21CF524A7FC0EC8A0E24D968D43385 +8E2E5D31FB1006A905AFE71A249803801F2917AE521111A254015B96C2C17E2250E53487E7DBFF +0EC36186581B59105B07739F162C97D110AFB90102608781EE4751338D98AF985A8C22C0FC2790 +FECC66139DD2B00A38C2B53819C5826595A92138EC542C09ABB61703EB9F17869AA0365CD67DA1 +128E6194470EB7BFF7D01024DE79A7DE125C8E20DDFA51B3571C7105A5470B01548A81B5C23A1E +FC2C034BD248FF96F551B944D6FB81D56810FF0430970F2EF2C255A861DA4C7E3C746E786D53EE +1B5AA2D308CFC6B93163ADCD6196E6A4776BFA3A73C2DBD9353FDA8EAC799353F5CABF827F4950 +564E7B31F18A471935D57E7C7D0357DB829A20CB5E8460B7460293B2E5BB0482C66DF524A8CD5A +A1A51E07E62033C05E52537DDF27955904994E414B47F1A62991C6046D99BBD50D18649F3CAE8B +707D44A29A0557FAF837886D0C1D801AE1CDEFD4D8837D5C6164DC9399429698C0E2A3BDC74ADB +AEDF4236DEAB47078057D55EA0879575B1E299B90BF19CD098549DC45F307106B2627072EBF656 +43D67EFC22C9DDBF499022B5F79D4494A9025F46C556C730F0BB2FC50457D3AE6A02E6DDD5BEE6 +EA0251C1DC306EC92FA91A5118FA4CB59DD6EC08ECD4188EC9FD5F9991ADC2218B4941DD8BE4F5 +584E474525B5D3F221B107AF383D3F4C690B08DBBBFDBB4C5DA44CD5E1A96F5297FB547D7A9EB2 +C090CBD57372571082A92AAAE274AA38A4763FA349D540AD417D2EB1AC9D9F1096586FA88B76EE +C799818BC323DAC69030290452E639E2241B00B591106B00D3440C10681BA9970D09F1EA4FA596 +1E1A3AB1A22D8387E57D5001943593A14221B73642FE89BA408D5DAB41EA92D92B830CF45056DE +D3527868948EC0BFE5794E12F1F6A631C064F207523A0634F67D863035BA46D977F34A0E25AD4B +BC2440683B7C9559B0EBE8E0D90639E5D95487991B2B4E835F0C53BD9FA73FE41BC9C53D212D59 +78F994896914AB0BCB9C7743C1E7186CFC7CB9080680D9465D3A001AA91F9FE8DA5255DFA3A036 +D92475931BC241E43BFD06A184A94E7EC68B7365B021E3F9CB1EF22CB33A1AD9328012A75E5EF1 +D4E6DF251C7A0D270B420A6EF4FEBDE0C3B8088785CD5D9D943B8FED94E4AECAF1BB9BD9596313 +E11854A23AF95CFCA483200D22E64B311625BC511F5851E768ABF5CF9CE1134D358D96D05A94AC +2DFDA9B22773F34FFD99DC509CBBB0D22FB1134EAC0CAFAF0DE323C2ACFAAD18EA320CD49838B5 +DAD1C1F3C19BA24248C4559F83A79395186028F41D685FF620CC28D7A97823B5717F3B2C6617D0 +6B177CC07FDE856E811052D8D996A9AF779B23ED3A16DC358481AB6C1676568CF39BEDACB20F61 +F865EFA251BBF7CE19ED8D45B91CEEDB04C09D9D287F471552D182906722A05C6F8565436A91B8 +D7347DA871E4063A5E2C662A989838F7E0A154C4C21491B1932299839DB53E924A60ED01FD49C6 +60B4CD68F8192614C740CEB0F487FCBB56E95F810D0B9BD17B30479A24550573B5C1C46974529C +D7E5D2352FADFB6F27089C93864946C14941B8E5598E11FD12E4CDC14643BE485CC2A7678BA4D7 +6B39D8429B81CBBA9A1438371E86ED6942A6888B1B3C0B0FA8F813D6FFE6A6058DE5F6E88F0F66 +C73FEAEFC76A8DFFE6D9C4F1232B253BA1D99F3323786E448D3A123FCA04C28C76BD4DED2CD3B8 +0F5282C1CC60FC8988D28BDC148E37E05F6347E9F6A1C3A7AFF40708FEB26E5167D2CCC1A723FC +6138CFF4CD74010D4EBE76CE28DC31751BFC2E8A2F9844FBFE7B0F1DDB7DA41026EF0FEEA4D008 +B69F7843EC366BAA58EA4A0924C5E5B2153012E729801FF1300576455C0AE984D5A4FE49765296 +D30F33F09E150CF2A6A27B082F3AF86BF1B4A8E9A4CCE8CF95A9B905F3246AEC0CFA5E144F43B0 +E9F02400664E9577C4128BC1DAE45CAFED90127E562DBDCF13F0603B70B37BFF62FB3B3C684D3E +09F798C60DDFD00F1BFF7E8F22E4B82895CAB6EFD425AD6328D6E678280A3958664D8F2EB12C61 +D6810D20878E20A52D15677479DB92989DFB5C12C954C5AE42B7EDFEE7597BE6C4DF7675A583F4 +0C9B3512B325253FEEE5F1A7DEDDD9786F929B91B9D62EF5D8B4EAE6119BFD84FFD54C657E2A90 +FBB1D645CBDE839650F00D4F220347EF545D88CBAF732F5E9D49F3E48691ED23DB0D3ABCC18DBE +536E30A584904EDD0030DC9250E8AEEFDE25FD7C6ABD5AFBAC4F78A039BA960E00361476466682 +A6CE823431E43B9849C285CC72DC5564292837E75340294535D4C10F40F1F8890261F8EA96CCBD +C0376A4866226B64698B96E78A9D5B7FC4BFCFD8C5FF108988BE87805F498BFBA3F035214B1B6F +B246DDB791E28CB54B37655B3AD2BD069F980F679C5E541D7DDEB2CB55E40001A7DF2E63C0C1C4 +28A3CB3F59E1B6F31593E8863E11382F43530354AEBAB25B66C48DD5BA09FCAA33D697AE067420 +B208068E4D0B6B3B0C19A610ACF4DC508BA6717299A8C6B6FF8594A7ECA2149D5F0892FE11FDAE +E2CE687CBD1FA6C4B7DE0F4490CACA277A3AAE0B2119D1BFCE77151AFEB0C3BB40C4FD14CE3671 +41A03ADF0223B9D6DD21082648443A619D26BF75C892A0239EBB7CDAEC993163434EB66FD4153A +281574C91927362F25ED6545FF1BDBEB87F3B23E2DB482FB1046C82A76E33E0F278FD5D9825783 +173ABDA10E5A8D71D736B4162F8FC1C416D3D3EFBE12AE038149B5195D2F2502E1F10FBB5926E9 +1095250B80CAF44A50BE263665E42E10AF50E9C289A223C34518E77CC39728E9B7E1510C2E0D2D +F79AC3BCEEC6AD8247CCE14D2E7EEB587A953FACA891238BEA11CCDA03EC37C7402775981C29DF +D554213BD8A50B5C9B6297EE161E7E051DF5426F38FB82BCCB2F3057D373C7156833D2B765A9FA +EFE37F2A31F981A251466D3CDA9047CF58AFC3DE161A65888B2E61704683869A67CB022666F8F1 +36ABB62CEE1F47113D3E6FE7759908C699A03C6A4B84619B27B13512859FB629A0D1BA848AD983 +D8B160B5C0FBEE2CE5243B52A4B2501040DC03930F50886665EE387518083705C4B9E16EDD6D31 +A47D3B5212D729580F991405BF471F662B63B7453D950CECB2604144B4D2D6758F3B1B3F9F7CB7 +5B4697F922E0125812ECEF723FDA9CF6441B8BAFEBF03C4CD1DDBEE81CBC3DB7DC9664CD9BB765 +1B4F62796A4A20F814D2D63098345108D8A154D503D67B511F6F511D442A0CF40169717CBB30DE +D5414E267DC7635A498B4C697D151879E96C5CB37561E967A6D895F122033CE5594E7D660E7430 +41439AB582CD49F1393C1AC4D0C56D093CE6FD2E591095798A8A685B949231486AC382652A013E +C7248F275F6C5B76D79376E1BDA689320FFA2138C46D145853FB46AF4F79AB9D4A2A694ACF36E3 +FEE628A50B96DC91EB493E4F2B41E291AC616078146E912383DC74C2DEB927664A69E606F7B92E +BED34B2D59A64E7D46C6716D7A408F3FEEE4AE45193C70DCF4C187495521C933148CC7555FD9E4 +3C46C1E565452D91479D55EEAEF6E6051F97336371C4475178804FC38BFFCF2CA16C18331D9A32 +AC622E61C1F18FFF01B22244A5C5160E604AAC0621B6A3C5DF9C556A6D4B81C44281D028DD41B6 +7A3EBCFFA011EFCD5200BC4E795FFA9421195BB0E8D6784327E1CD0561A8AE4B48A70DF55E80DB +9DAD85A486C77D7BE38319A2CD4D283B835ABC1ADD8D3A455C9A7EB9AFB2B398D0AF9407F09192 +6F049113FA8D8997F8DEAE4326DF96C93E6BB7EE0C740438FFE33DCB63B2A7E46F8F46B62B9B5F +6DE3F2E9FF29DD4996BEC6484ED01E7BF3C3C59A4B4C52FA672ECACC905527B9F715A3270303AF +31427E6606298AE963F8EDA7FC9147C9ECD103AB8FB341186A3A0FAA774E1FDFBDF116ED54A5F8 +9E67B4FE51F0BB701DB33AECBF591BB52E1B57B46B4EC1BCFED6FE77337637B9B97E9E232CA3AB +62A6EB54D6DF428FE7C83D643769EBC9426A41F2336ED09909ACA7A7C2EA5655023AFA6DF75C12 +E88569642A2F72C51198E9B4953DD28357819E6F663294ABC307B9C7E11F1871F0C19AF99C3DF9 +59DD92EC1F9BFE00E142625FBB586462F20C7025C1EA7CC670B2B4B1BF8F134C15F0AF8A6ABB36 +2A4E9CEAA2675543BC331C3C258C12FCDC9BC6A52365F310E4F4ECE48E694ACD15FCCB3AEE82F7 +346F8963833E1AD301460E544C6B7F7D15D0F49A22D85E007998C8D383DDC91E8D106822FC73F5 +75EDBF3BA32368FC0FC0B48E18907FF440916D1A56BE59D78DD404F20216378687ABCE1E30A6E7 +54CCDFE6370C58C2C7965E971DD8AEFAD7C0112FA6472DDB3594E526E4184223E53BDBB0B9BA3D +54A64A46D01851CD9769C7A7A02074D8417C6FD3FD3E55D30D365B13899EC0018E871C4A59FFFA +688BE3148C9FFFB0137E6A1CDB8178503CE9E5E2019A88781DBC177AF67653B6B4A1C8F933813D +1680C7C083D4F4EA129D3D35202493F4C82E0559B28EE679B21D524BD459CFCF4627995AFA318D +C25DD61CF85DEDEB387AEB01FCD7D52DAA2128B130A96F37435F0FDB6A0061846438F5517890C9 +3D64F9692A2061800D8D6DDC1AF369B7598E3F5A4AC2302AD7FB918011AB97259158D8042FC267 +F7F2C19DDBFB2024BAAE45B3EC15AE5FA67675BB9FDFE68FEDEB2B5A6A4B319C755742029782AF +A637AF445AE1F4460138F695132242107EB0AB49A97FAEDEE0C25519564C5E1E970DBC21635E63 +CE925453DA6ADC99D975BF5E33ABF4852A98397B4FDCFBBFB833ABF811196E24E679B794B8D851 +C4EB6D27A8BF98AC8E8E2C82B009675E79C9AD6DA49FF2F839FE33E403B60035ECE17F68AA0C1B +21E8FD894351335673552F01912D3FE07506BDDD955B3B61013ECCFC7EBCFE176D3C1F59E6F122 +6A7F3FC3DA7FFC28E20D455DBE1D5D22028120E2CD95D8FEFAAFD677BCF45939DF45D6C1AF2BA7 +9150FDD391D54321FA6E245C0CB7D89498ABF937CE896FF13F341A1D6440E09DB1E61CAE8C6B87 +962AE01AC1A9B2CA84EEF0AD44DDD76338719F20562D750F0D0458E3A4EE678B85082B09A4DBCD +BE78FACA0FE571C39EB09FBF1B2137FDAD8EF6D6B8AD5605CA490A017EAB93E80D8788404D171B +3B7D967DB0BB56CC3E8EDAE65F522E287E53F2586E507FA2EC3E608F40894055C954A3CF8B8C03 +524060D2AB061D6748A998EE8959C3ACC6E38AC5DB7549EA8E000235D2CCF68D83DF54AFCF2A8A +5EFA284893E52E97887585423690A940A5141A69B4BFD062FACF90B519BEF1A4A00F825E81F009 +7019103EB20A44520FFC8E9A44418CF75B400C7EB14878CE3A959CA351589C0B46FA6C9E0BFDE2 +7CA69E1B56915D2E016897E4166BE56873519F0449DFE89566BAD429C40F5D2759DB82D7D16CBC +431EEBBC5B31E621D8CFE7AD91ACF062E66A122E615D4119E18341AF4956C2AB26E8A61A54317B +DF61FA2136F6CAE8A65D77631ED4F53D2A61E325D139B9A2507BF863226926873685F5011E65CB +51E315A9E9F4F251EC98BFA02E9421C6CBAFFA630FBD4926379D53D609954C0FF51912EE44BDCB +1FF78CCE202CFCF1FF7B98143FFD3D4C2E7AA813268CA42C837BCFCAAE5084E2D478C6A12EDDB2 +B0FE57E58917147B39B08853739C3D45818D344D422248D1C3CC566C556B7BFB6D92345E0FAB19 +86744260E6CD743AB2DE4B8F956B66157F32A77538A465B0D559BC213BA125678D9A8459597165 +BBE684DA5B2065A1A7259D28E8CC9C964A0375C5CC603F4175D26FDB24185450DB0DABDBD5C067 +BBD6778FB4D94B390A216BCECD24D149B7D7E63B729ABFAEFE5B83379B500BA601005BFE40215E +0DAFFFAEFF960D16366947ADBD9528185E58079E70AB8A55EE37A074F989696B66A84DB6C60E63 +037756D31E1121F0CB4F0EB39E5825654AEDF7117354FFBBE0EBF1D6B93F08FA211E079473255A +B029385B2B71F48A26CC87DF85B71CB55140FFDB15791B6B232C3F4580A01342C92758B3E85719 +D313B70AF7FA76D74668C85965640747BFC6C2EB625F8574B0A6300367449FD0690B173A34E572 +650F94319EAEE54EF657EA9148C8263E4B2E34FB469777EDB86C64697B72934E2A3D1D1ABEB0B0 +48C08EE23EF3AF50DF4D37E778695529CE07F65F3B7202B976436CC76DE4250FB6B55B77F53695 +18A68FAD018128CD92ACC8982FAB23A2A66EECD57BB492FDD4599F0E2D25A24ED1BF51831CBCFF +C47B0AA31E5BD8C20CE2E2D65DBCEC027DD19C9E2D446320CF27730C3E76307D7B28A5BD6D8903 +6B4867D4E638A0CBC762F4EFE6A95B0522A60566B01C6121188CC52A379ED8BCC46577A7FC3128 +485B5D65631522F7EA37DD7298B6CFF309043A193D64EE569EFA6E94A9DC607F887EEBC1D32DAD +9C51441BD947E54B2EA710DDB3B6137865592791FE1C5D70CB561ACF90B0BEAB81F7756CBF6589 +68E6B50921DD35859EDE00B3DF022846165E0883076A6B3E05F5198AB55882BB877FD3BF130FC6 +A2DE3C19234B8E0EAE39783BD4AC71376F1036463A95762F73206BDF5AF465174DDF5DEE27C226 +14C610E369822D2ADA12C80F5E97CA4A3972411E688B2D445A3A1E265017A3DECBA70A92D33E7D +34DBE260377FDF394D571C3D3F313740BF82C33C48A61E8D82F772EA4B4A9BB1E66B13E881D16E +8C8307DCC0CA391128D9584B8DBBC90017EAD69B9446C853770F68355C204606A15E6A2A597DCF +D5E03D2121B8FE4224BC46F99F594EF5E970F5905A57C84E7A6D1008618BB1D16C2B176E5748CF +991E1D907DAAA854B3AD6FB2DA98D75E13739EF7301316D2F65C07958FC3C47A18840573A28D80 +CA628A39871F61F47A1493893D1BE7B80168BA7F53B97D4AEEC2AAD4AF8E1209DB136A9115E674 +C468E4AB1E63535FEA3E1E521BCD5D51652DDC062959DF6800600F8EB0403AF68428D734A92091 +BF0E706B2E63054F0598681F15F92E3B79705A8017B1608040C56E2DB7B869531CBF241A92A4FA +7274DE093057ADB3AF1B06EE67E1F4C7BA621D20C8320EE0EEA8FBBA9D98E9CF974D462655707D +0DBB6110F54C8A58B747736C282EDC63C164334D839CC500069B717B19BCEFE788E3B73CF98E9C +5095A1045BB864A0AF8DCEABE8DF63902ACAB64BF9AB286A068D285BD2AFC481C38D50E3F3E56F +8850DA6B11B283230C2CC65A2BEFC7B27826C805E90E20183AC8144F47765AAD3AC0222468C0EF +73D47BCB37F081614ED0B5613B21C0CB9F935A63D8D3C8995E34B65DA95DED941A69638B8FAFC6 +DB403A19907B6697FED7F13832E596B5D4C6B999EBC85F9C8A751CD1E4E5C1F9FD7448FD817768 +C96782ADFF8EA2953CF4F56D12F829A8F5064F3B954723172CB56D54A79E807BC767BE6309DBE0 +31E94FD65F9CA1B60ED68C014BA8D850DA34DC4DC082E1C7E1DAA28E493380E76035DDA4681F40 +C4E7A4647F0883E83015FFDC2F635EB40DE772E47FC90CD7799A4382D2C29FA5F71D7A52B303A0 +0CD757559DD043321D52E7713306EF7E05F3DD0C428754A791ADAD86469FF4A724338EF0E16B1E +D08C24E5C67BDC05BC0E4ABFF4D4E230930BCDF622B2D7F854674EECC3BE2CA7D7EBB14B5B07F7 +05D26BBFC6356410ECE61E90D0C8260722432C3F2FCC6A3573FE39445ADF23B70381536DA693E4 +9E923E8FB95C22367C5E929AFFE61BE271083D16B4D113A96DBCB33776CC38708B3E8F683F183D +DC0B1D95202F79149A05C1204C45CDD3DAE8AABA26155C1859751A525F73FB7023C579D4CFA666 +54FB35E546C7042479A77C83A459D023F95E0512A33B8DA7A03F31B1B26F45E138F34CB8648302 +BC0F9C0251FDE776D33C619048311C35F3B76A47AED46E74EAB700D314C44E882313B6581C38B2 +8D1EE9DE19797B2A5B358F759E5E9959138B6753627DD75AC13074547AA2390839339AC7C7B50D +6F236229EA105744BF18B12E594A39D97FAD1EC6BB56E4FA3FC0E8698A1A83DD1B2D6AE1592350 +178CCA34D79F4F8B1E1627E78C292F30B83F0CB7AA8EA2434BA34B03952EAF71F8C62C9216A89D +4310A545B0CA98ED0853D7DCD271B42315C39EA099B31823AADCD3C1636A185693687747C5A19C +B289707DC484B84D94C4734C6A9CD2C0BC59FEB950E8174A656E08FA470FF02C4BE6DBB204AF2E +0E61EDAC5D79B871EAB835530DE15D9A8A2D96F7A4B3AD297BF29738BCD77C4198F86532D00081 +42AB3207082CB251D34479899BE639095317A04CBB3336A648FD748AE3F05E0C89D30C844009AA +71AF97C2D058473A3E80A6B3E32B6E7BE7BCE1A15D08A08638AB24B7F657B7BC278988D8846B63 +4EE8E8F76A3BAF6BAA1BA441CDCD37FD391A8FCEFA3C42E443291D68F9C32225F2F6750E712525 +30FAE4DF3E79A83997847197B64E9BC2F2F22F7C33F7E16D43B254017CCA1CC818AD5AF5AEEC0E +091E2046F1537CDA0275F8A1C9F57359C295F238751E48748736500A18F16E5C851A762FD659A1 +57F745343254517505FBD38F319D8F50EC88840A1D0242032D83EA3B7F46BA6FA69CE4E9502D5A +8611D3A742CA1498D7E662A866CBADCFB6420B2008246609078A72BCD79C36482F6B4DA3F0888F +152C0334523595810E4AFA73F1A2EDA7545B179B2D809E068DE841B6B65728BF33450B814C035D +61FB1B178CBF476F29A21661DDB77002C6CCD0A6FC7C15CB4DF0AFA49B146F9B22DF7797B78691 +7AF9C58B37BB0AC85FC85A486AAECC5DF16E1510649CCB25C226734F26F414295237A7B8629B0B +4F4083DC4391AD28CD05A3ED2C43A5169AE240891F8C300C0A98492444DF3FF11DD62982D7F065 +85542E3C25CF7AAC6EF6B946139F113D76E2EE17CEB747928D91E26AC26B533DA29A09098BBBD7 +3CE27E7464BD4A78C31F668ECDA04F41BAE62874588938B526758D22F0D45A59C07DD462D8F0C4 +0FD0F6188B0ED98D138ABC89E8EEA56BC1F45E8736DE0FD4344060F5D41EE803C489CC77DE7E62 +D87C9B360E15E453B5FB89FC034A4E6A0899CC558C25514FC512A2A44CF102E06FCA9B2E85792C +6C89D3EAC9077E2ACC4D8394A535D66ECEC5882F3967021F6215AE2248F851675BE32784A5ACEC +692CA8DD35CD69C09DF484713772074E1CBDB59BB9B63BC2CA8E2AED92D5CCA4BB983C420EC3FB +CD5F7A43B2F49F92570611B36FC7FE78D06498846DE3C678309C69D4F2A83706248F527B9E43EF +9143F18A7BF76B2A78FE632C93F7FA1DF15F92806717883D31811C4E8E56081699FA1F6231B938 +516028F4A4D0535073E9A05071BA0D6310FC9A144E4218E60038072F2B1E01BBA30EAE7B54BB83 +4F037AA3159FD6966178DB61D1ED7581F74917EA90315F05638BA77860F8B5F5A79445D78B918D +75652955C59397467EF9A0A3BC3A2CCBFEF5F80CC1A4195C78A870674FBD10EBB50FBC9FA31337 +A81FF6A4E4459EBDB590F42BD1BEA8781357B51A655BFD65550673B1E02F5A6021CAE1AD864D99 +214B94886D10BF29013B051A44FA0DF5487A2A68A08293E12E1D040DDCECC47A5BD5949CAE5043 +581D422EC9349B19FB7093C46A90DF388BAB5FC81C3431EA519A7C3583A886ABA68270ACA9D0FD +F0AB98A2BD250EA7BE05B04319931C54549A6BFD9932A4E3FB8016B024A7AD2EC594456E7DE108 +E0B41409279897DD9A1FA30729927452DE314CA5EA088A6B5DEFA0C7A7CD49629208B8E7949FCA +280C5795355F1013802AE214EBA5F2F7ACD4B674A409784A9E1908A8F7782D22475DCAD518D742 +CED5B77A49F6FBDA22775F9999AAF674EC300B922258787621C95FB47D70BC3326EC3CB5C00CA3 +B306B243F11015D9DF724B3AC8BE2193B3262DB0171A62493942FAE7FB7DE9414C557B284BE410 +40E37E390D0135891D9EF7779D167CFA61FD64919CC9DD30AD8DCF594B9C95AE44AF9738C5AF25 +6FDC54B17F1F930118A0AA7AF9F980514835B25EDCB9C571F9306CE0556DC8435BCEE848C2DA4D +8F40146B91526BC02743A2B8DFFC068599E6BA8794023196D53E57A6D6AE869D85F74260B07DC7 +8DE9484E0A0CBF05055DA42900B9EFA6DC5D327D8BED7BB82956F3BD78239F157BB442D1DB00DF +A3FFBBD310485AA3DD72C13D81202C76FAB6AB55709AE4DF8A1984F0F9A9E3DFC6402C2890F24C +2E486FB39767D1197DC36824B2C29EF1831A05EA374C4347D9B18FE00B4B222FBEAFE09221979B +C8536770FD03F1EB5DDC24E54BD9A3D7AA4593570C266E01078AD142DD106BA9FD75984E3D7B81 +2622645AB22C869716B2B91A6ED924F723203C1620ED91597D5288678DAAB13B57E14F36C83F05 +C6F989CB00936A10A9C9D57F8A4C851EB93D4014C6ACEEE27BCE816841F1F9C7B0CF26EB517C6B +19CC7E18E2CF7D671B2533B8ED98C6C7D4E49AE3686F2B1CB3234EA9C69DB4B99F230BA434FADC +65854020EB18C62CBA5026F4042590D71BCC9AC3FAFED09BCC313B4B2823AE0798821853B9EA09 +7FEA70583422E19E222E37D85CE99949CF73EEEF6BC15756958899399A74D5FCE58DDE34B46295 +BD8903B23D2AED122820EAE9C90BC2BB5818E2E8808ED3C2ED22539291789040086F3765C352E3 +339E19A56F51369A70407AA2F9C79B23E9C8698D9ECFCE770CF91A2ABA5E88B8A2FBBBE3B54A0C +A5269600C250F18DCB934D3989A3CC99F2D8DFD05305B25FA237243F79BD89E6501C3D0C5BD066 +D113C0D88061BB468D40F58FF90D3CD467EFAB8F014A11C625D01CE89286323905C2A602DF6763 +E36E1A8F583981C150FB36A1CA03F6528E6CB75A0226F796E9DEE97C5651444C315F568C35D478 +4ECD3BC6BF495F3709B4AE181B09C448168C5C4F5D3E62A9BADE37BAC18DC7D5999C15F32127F1 +581D8B6F13C410B7A168DDC426F122DBC643ADA8F33A114B9B9825AED4EB5EDACF10B0A1AB97BC +769B0C1E5286ED07CBFF7AA9FD2B8A18BAD1F91D513449EC82DC1F54597601066C9F935DCFCE07 +73817B342949C1A6C7BAB6CBB281D62E533918D12FEBD25C8B23124097D039ABE481CB766F9518 +40AE768CE217D838BD013CAB7BEF2E08DD423E8ACABDF806AB86987B78BBF810C6FCEC993CFAD7 +F6FC6A6C2D81FB051CA3EC3795A26B72F7641F241D35AC68791A52E0809A2A945D91E38F391EDC +81AE05D910FEFA902310F56372149D42C0C12A544E65F0CE103D309F6C9A0C2B908D666238164E +69C9A9AAA922B3F0B4B0D7091FD5BD2A541281D3D6E7A060C4E7B7639314547849C7534482B119 +B7722EA158361426413355F73703C407457BDF81A8D3D98FC9F400057979046BCF8659D7FB3425 +9CADA071B484AF130768A90121AA43FFD366832A591019C7609AC44D75236E292514E1EADCC65B +1886756D4C2BB93A569D0C8FD42AD595C10E15E263847AF101985FE92DB3EAD96A661575E342A3 +FD870B8A0806FEF390D858401F0D284305E97C7384467D00335998C2B92100E56B41F099260236 +00ED957C629E02A9AF45B457F79F3E34CAE1E35869ABEFD9ED89A148A2619AD10FB840433026A1 +E4E6C93E60C428BE7EAD2E46358FBB7FF6C404CB209A152CAFEF82222C433234D876CC6ED6A876 +2B44807A9A461C7337258CB18A942ED3BFC195BACEFC3097C218380C20CA73D4195B466183F113 +98FC876221EF14D5C163662D6117A81A2C40A4EAC2B4F2F6191EBA113963117E5316847F18841C +23389726FF328E0F3708EB6664DE1379FF60B2E21655EDA12F4C98CAABF72EC5F2510AFBC44E03 +F7E1745921074D420E6099A567BCAD58BE6173F8DE1E2A4BD3BF6138B20035BA957E2FCD4A2B3D +F53EE46D5550D3F8F8B4B35B24ABD7C4DE32B29EC4429D38D5265F33FD948B26136B6B00E32D40 +AE9B32789F635F7B04055F5909BEC62194402C6837903A2C2C9AF6769CC42DB77DB8CF993015AD +ED047D837CADF9B43BC9A8715924AE388399FA44279E387BC51D9266C8430ADF6E56B18776F757 +F1DDC9F0C72559B80E3615BE5A38FB996B0A3EE091A9056787ECB8943CD5442CA65BB4D3CA3AD6 +014DD4CAE10DCCC0BF5F1BD624B7FB354A87A239321F52DEB2F0339A81E1877461E61C6207077E +14C5551462222FB41C7AC6CEE7DA8233BE57FF56F306C7DF4143B3FDAC88382193F2922280B509 +26937D8E5A3CF2CF344A153179688FE1666997D2083578B2E1F25B0A8F0C32F31E58AF1AF86348 +2E9B3DDEB0F9F3A99904139A37BA30AD658A225A9AEC4EFC21E30F011405CEF9BB079DFEC4DAC5 +0286FA5374CD9B3AEE1C87BC0958A56E72D3E5219AC26541820FCC5230DB9D6127DD794B138F9C +0FCEEB7B1B2C18EAAC2B8E7D1342A82757E6B1E4AC8A07E3D8F2FBE76FFAFEBA0E32548E13E090 +9E9970B10BF7C6FE66D74E58E8E317F669F665C06262C07E1EAD9D3DF582544B0B6EC0CA5680F6 +47C10DBBC7A3DF8A9A663B9747EC82AE9D3F9274F24AD8AB4FEC0255C8BA29DC1D3776AF244FAE +13FB84754F2438B58EC8A195B07D1B36F5FD3A85979462A1D27F54EBCE5F1D45A9BE0EDFAF03C3 +432065CA01600D46558CC186D878FB20D4F007DD7557FB3D7DF9968949827854A2652F91A16DA3 +6AC731AA2ABDE845E9000CD6382DC11FCF85B33B0EC299D9AF1A5B34792CC00349C5230746C019 +4A5E55F50226A172452A75ABE312EEFCD62CDAAF1AD2E9183332F08E95B7B25DDF952EF3710750 +4634D75C86CB8A637F9D254CF7EB2F809C32842825B4E2B556530FDFA04BEF6B6CFF98FCF835AF +8603FF07E78747CE5B646C1D7DD0A661E1BE8CB85B644CF4342BE9FCB4D967E5E8B670F763663D +D4F396CE511E416C40D82EE3FCA0CE6D4C3847B1AEE3112E5DF5772B83C318CA60F67BDB5B5DA0 +D91C8C40E2C93764BE53E5E122520FB5BEC8880AC1ADE13E2C4821A42DAEFC5710DCC0CFC4EC49 +164C1336CC89360FE6AA466049BE2C75D3017F19FB020A6DA498B2D5E19C2FF2C03D9C9B46F751 +9AD5DB5024B0D5997D07574EB109021650CFC5C0BF705A4507309859DBF2DDE9FFB4067D22C0D2 +4CC813569413EC537AAA71BDCFA0D1A2218235F473ECC7CB0B008E33958D524095BE88610F8AED +D05F58D212212B848D851A42EE4F51852712BA3E5D6AA1A711818BBC7149AB7048B284E61B159A +99926194C3059DBD0FDE2E3A218BB7203368D9AB1D03C9AF21C3EF972EDCEACE9F6F0A5DF886DE +F29ED685DFF445960931550D750462D3F8944D354CF42C07A93B348CC76E4B237F750FC56D2742 +E542B4F8C0C69B6E4841A34210EF980572FA1E72984E9F3CEF1F578ECDC0261F866189A573E6A3 +37A637E6A97384D35C3DAA5A1FF6B70B04599785BCA99B68B884263E76985C3D605D01584AED9C +A591FFC5024EBBF3BBE7A66BA08437AA4ACA951946BC50FBA8B6F8F00CD658F4EFD84ECE6DF988 +735048A9F16149BC43809D1FB762A912A86B76012301E1B9F006E6510C70EB9C69EAC80811988D +1CBA035B61F93521B97DB82D287FEDF165A5AFD1C1E9BE9798F9661D79CCEF01A003A6BAFF1C9C +18646D1F0ADB4457ED68B8892764E496E16827DCDA0601E9A7B666C3BC22BE132B49D1BB554A13 +C7443AEC86B7E5CA2E8B60835B94754AF5D4A21522B093766DD1BCE6A30D37EDB1810EBE4DA5F1 +D5DBE7B9157A23E73A68E6D5562AD634CCD7F08CE7019185648094A23D4540C2E1F603281938B1 +8966CF964B61A707869B11A583C629236288C1250AEF565199F6EFB9F9AE436B551C8F6BA8612A +CF230239B8DE86620B870906E13770D925BF7D754C7B54D380AB29D0DE3BD6F1BE36AF5E8A43CD +23BC43EB17AD79BDF6B2C59D3592308EBBC72E7465ECE38E7CE7685C007DCEE868972BB8EB7092 +FB28769907187CE12C43A90D763280BD08138D65E4721686962822D9DC4FDC8AF79F1A9C19B056 +09F686E47B5B141F0A1E11F5A2EA782A69C93541A3BEA5A3CB1190254E566338323D3A1DD7BDD2 +07F65B974403938BE92883A01F6BB8C53E78CC19395A9690A1BA7265E89825045B3C72D2D9ABC5 +41EC880E33E6AA52F1BA10D6EE500CFBDA3863B63E7CD9D648B44B412D5DE4C16668ED7F80683E +BA0F662F77A325718DE98A75032CF9000F3848D08A617B861397DAAA68DDB0DCE5A72E95659262 +2FEAA068666ACC517F934BD71BFC38E0DF21EE1AA4A7A2B7622B4E460BB08036C6D27FB6E316F6 +FCA081BA329A6EF5E7DC458221729A002B88D9F7E5576D221867F56AE21DDF3FC4CE901DC703B2 +C9BF8159D1DE3E9307EEE08B700CFF706965B0D1C3DE8276CA36C29B98968DD61034E7596EF8F1 +9FE6FD3447DCD2DCEF40FA56716FB8834DDAB9A299C7C2C77C46F0145461AFF74FD9F5EB15447C +16C01DA7166457A84ECCDA20CE5F64B03B655E33370DF2A1C47B4B2F9D3FC3A5E67675D53C181B +6938615500A9F4ECC879F4D5916A9E69853B7DA3E3C1BE27EA87AAC3DA58172427A7E7DAF31D6F +B6B43E02DE1798E13249A65E3747928C952E7A85D6484B46B7FDCB6AF8170CC9C9E0A358186315 +E5216FD6302F87CC59803CF752AB59D710BFCDE5A515D9D41CA690E41AEDFA8E67AC86D219BEEF +A85587FA15FFE2AA17B93006EE3ACEBC92FD7C5AA87B600BE3A120244E599FC6F492EDAE39E211 +F8E8816E52B2DBE5EFF2D316CA935740CA74DE4160E9645967971490907B22113AA9CBF23F283C +D4D83825F07030AC0DE2BB89BFAEECD95154943B79B62051B19202F2EEDC27C270ADF31583789C +499EDCC20C04990EC4101B93644A988783C6B7C6EFE7C06091C00D5EF0BE6B369B8ACCA8C291B8 +EBDB12AE2CFF2D280B085FBCEC37A07C045F3A8CE0B39B1380520E766B3C0C2D9844EA84360129 +18C7230855ACAF223187E3557E7EEEED81363A08AC7AB27AC2D316FBD77BDBBADE1BDB3DE1DD54 +146B6813A23D98559F38AD5AD55130F9CE7A38DFACCB00FC4F22C81AFF38791E0042462134A88E +B68A80D29703FCE3510625BEC9B6B5CC31DE91ECECD9646125A4E84E50215A23BF1F3F1F9E0156 +BA49C009A6F97C3EF5CDCC6811AB3D3484B46587CB2D37ABDBBDC0C3881D13B752F7421152B4D3 +156B0547E824E625E5A97DB333CF5A3AEAA292F7FFF79805499235E8D645267942D2591CD64DD7 +FAD978C123E9751FE134F5611E02A11663A44D1254250EAC4C3B96E70D4F5648F03B42EBAF5C7D +45E7D2B209C637D09D6FACB4C6A29F95079F31D686EF95EF58948A57EA6BC30ED63666C38899B6 +979D41C9B5919CBC8651881A04A2F41A0989F5333AD23966B6EC0F394BA91D91ACC070EF18E9EA +A3C1C4D1ED12281BD45270AD3D82E4712685959A5C63CB4E75BD6A5227BB84212D7D9ABB398C66 +77792D8BA935DA8E0731EB2790CD4060E913C426852CAB7D39E77CE7DB145B7F60B3624703C3B2 +A139C9E58C7949D5A269066739CEE6B281FC2DB0D09CBDF47E4B3139459D7F44E28C3326782A4A +A63CB13DD977106B79C12EC8320776DDB37FB1C8BDBE640F23B03735C301891262F00764675D40 +DBAA114C7C7E9655F9D1D40720DF81EEA66554481DD9A2B3D55F6F09110F3F34D7709801DCDFA2 +8A57B94BA0A71BF5772839B9BB1429FCB68038BEA5C89808942B2C61EF4CA1FD3B9929C5E4BA5A +80A8FA3B04545D30E3102ADC582738C0A24056899EF3CB0C5FDD2134641C4E9831D77D56F45C82 +9C95673264A18B7E3FC57CE59A2FA7CA85DD4D4F62AEC3143DC7CD4C428B360557046ED64888E3 +BC967EE9D886F0DC598561940F1A0839525FA2AEDE9AB568A4650639EBF4335D8A745AD8C53EC2 +7A793DDE34998B3FCD63066EDC26CB0389D3EDD69A5E230D898BD67658EE63F74AD81FB31C6E3C +D2E075E20A711D5855C5C0B5129ECCC1F42920856A97FF6AC63AE6BBAD1440AAE9E98D00FA14EE +D7832A36C42E12E56CE5AA2B0F2B9E3EB65403988E6049C977AC0B5711C6F70C0AFF6F4A75FA25 +51B026E95954DE09154FC31BE0B655C59F1430B0391A53DB7FBF655C6AC2771B4F9AED6B279313 +99C72CF1FD01EB39044D70B557EC34C0D85762EC4F9D575C95685704DB09634FA955A4E725B2FA +68AB3E582022764666B19FAC8054079B9052DB6FB8E0830E0F58DB1DA7F42557BEEDC5D62A2540 +03AF597538D1866C549C0511983D70895D022F005F6BB8DF2BC67F7A9552D167A94D4CE1F7F12D +6485ED303341070BB6A8926667A3E83434EF3DE8D65D99C71DB0BD7F3BB19C1F8E801A74085D2C +A23B09CD15001A7DC7A13357F4C38E23D9B9F710C6F5A3E16B923F193355FA797685783B7878B6 +54995662D468EE7E331EDF82DCEA990AE02C32BD1EE66562E5CCA926BC3AC441732783DF18D246 +949E562CC49E81354177057B0206A91EABC956B971985D8830A3C8EFDCD7482477B188F25B0BEF +705DE98E73207A0624BB2B122FB2E3D74EBAF2FDED54966B89C5DB372307EEDA47D8E1EE675DA0 +A0D2556656338EDF1F55ED392F18CDF1162122FD47187699AD8A13333C40D37A9040788D1F65FC +26BEBE07D6BE3CE25C042D26C7C8BE1466938BC0FD5B27E9607F969B3587B30C8CB29CC9E11575 +E8ACCE30C2BA4A3A165F14965B8CE1761B2CCCBBB183DB1E1D39E823002CC190F6302BDB9EA8AA +5FD2338EBE95A9BFBF9FA24B332BAD0D9EC4AAB6742AE4BC00F324E210E40C992F8A0ED6C2AB27 +60410A566B7B09B919640C9753DFDB5C73DC193BD8D8AC04760FF2F410B002E62DACB453122966 +5A0E1C63D7F581EB9A3DAA2DEF4572F62E6DD42BB61D0B7A2BA04702AE44A97F2FB68F86428B41 +94361CECC1BDFEEC5074D16415E8B402251B67362D93F2E5413FFEA93E1CF0743A5DB3B0442BDB +F6F8F41E67BD8FAB7FBE4FA08D000005373CFFDD711F60D5D3FC112A2F05ECC7FD6B4AFC1A3A3B +A6717CDCE03CE3B22E217F008FC3A84FD9D45F4EB6515BB15B3F644DA396C271FECCC96582136A +EB3F2D1704562BCD923C83D2885C6CE81AE81D56D51217B97ADEEFC3B27CE5AC4CE84DFBA00F6D +6577D1F8B5E9A0E2C3BC2834BC18CD9CBD8FD14677A0BC1FE1878AACAF85BB1A31B0DF388DEA9D +32265698632DF7C140FFEA77821E3BF91F7551F9CB0E6532CAD9BC02059E3D34B80CE28AE4FCA1 +483C59F2B78A77C0B4BA5CDE68B11210CAF1F8FB4D22484FE048280036EB18594CCF8DCB20B69F +CE30740E02EF41EC87D472EE2BCEA7112A09206C139218DCC10D864F1B28D9F5F66E89955AE161 +6A7ACBFB6DA274C718BA7F73EF8573701672F642AA2ED18897E53F5D24423AD7A54AE5F279CB59 +06568FD5CDD542AB07C4C1913E9369992AB8E0F25CF62721BE0F7334248652CEBF114F5F6312EC +28D56925E62A998829EFC144A38124F4C8EEDD9B79610EC1521F80B78E84F1C3B9B7774A880DFB +618124A50F2709E38E3FF2B6EBB418F0E49EF1E44B1B496A7E7A8537D859B0E7E8F73A22594D7B +827BE8A7BCC98C9D4A2F7A60F4C2AC19BCC9B1EE8C43C435F5B6891C597C6BED0AE5FF9B51DC56 +22EAE66417E36628F183F99C8767188BB534E104582EFA9C2D89FB268866FF503E8D76DEC14E60 +6B0B93AD273A5F2754EDD2DF294699C7D9AABB405280642CD8EDBC70410A748054E10FE99D06E2 +EF9F8D5F6AE6F44A4299D60452FB2DEED2AC6F41F9D1B05B849142A7D474B90AE35C93AE82DE23 +2052EF430B7ABD9F0756429CB8B7E4AE44132259DA22098778F9D848BC5F1B7053B1A92BD0A20D +24ACE8261449BB9EA9967FF571979DC7955FF88B5ECF03787437FEE797B7003FF8A0AFDE7BC761 +29EBDFAAC5210157DEE842192C6BECD134321AEAA7CD9C8C7C085FC59CA2C3F0AAE6E670CAA68A +E06C46F2C0FC0284C8A80F53DF2356DD2EEBDD9F5F29E01B6B7902C6BE1C92D4F9A75BA4F608D6 +08FAB63023E7B5D35602DDD0AB9BAB11F7241E19C5B36D9590492E12EE2EEDE0E0ABAE9B4662C6 +5E51D4DC677AFF2482D54D3293A03EFECF0339CA3900DE1AE2D8841A203AFC47FDC33294DF2E64 +1D27696DF5F40DE2F60C27CFBD6D8F8103B8DF44266A4B5B026B0AC3970E29F9E0D16D4076297F +DA18EE4ABB9A7DA22B725E17662360FF253CC72CD621220C615191A4CB6A5F83AF3FEF796944F4 +C9896BC49BDEBA3A51BAD25F87A44CCDE1586AF54A4143A9BCF538B965EC4815C317981C21C092 +5705BD5BD6B88F144FE897B9F7424D8E631EA077CA8F7679098D6EE509C613D745EDB86DB33DCD +0E768A7FE995509841DD4D0D874C1FDAD8CB0DFFA909EFF8F885DEA2E360464AD7A0C7224B7555 +0700E07AAFBDF5CD838CB6A4B222B332AA6DEDA6709509B236E770CD34936ECA41C26974BCCF96 +B48A20BD463BA4618175BA4DBAC921DA44FD78882C82B45EFAFD6AA0350E792A733052B8DCD559 +83C4905D9578091F73C9FC04F67CCD920C1767BE1009AAD01AF488849968448DCB486E555B489F +C9AF579826AB0907DDDBE138E1E08D4AB163BCFDE6E4993F5332925800B22F9802AFC076AB9A10 +7CD1A0684C99FC0F621E19CDA4AE2F10DFCB49A7B3ED006C52D2E2503BF3EED0D492D6C32EDB6E +62002F50F8D06314091D6A143DD60BE90FE9A4A40A2448EF293B021EEDD48D1A8BA6560E592C60 +112B205AE4E27DBA33343747551ADEFFFD57382B6E50A49797D843024146A3BDAE6FD8828F53AF +B5DC4A5B6616F1D55F93A3F8F091B2FF414A9E93E1B502854D8DBB4A589E5C9D122659081D0705 +8E9CFC5EA2F976F33C7A01A1C3D300035AFDA57370B110A515D303221B3F6ABFC9BDD8E28CA569 +3DF50EC837AB2323E35F479FD02B7C0D1416885044C455F3F782464A493E308C8CBCA96F3AA0E4 +F73AF702E3ED92C1D614A07A6F3783ECE75C413A1AA4E542B73FA0837F60D55A9ABE5A1C911522 +19EA74D746EA712B0E92D17F84112553D3B4D666B5CDAE2211BC219C2742A631ED2DFBC4D6A636 +4F5792D730A0B9A143493F5734E778F9E2F4245BDD0E7EC8B32DCAE05B0EF603A124C4B02102B8 +242B7D2FA43389FCAA8E2BF67208D126352B10E3EC8225489CFF94DA4C1E36EA28E56C56ED9EC7 +F7FC037C3532A07FE4CE4C5B463214E9DFAE1E11C50CAE5CE7C38F86FDA73F001665700592A54F +D65D1F35F2B7D65457BD46DF0BBC67355459E25407C90E07829545F2F402EA89176F184826194A +1E42415A0BB8869E40EBCA0118D89D255E0E394C95DC7A12B5A6571387DD5128DEB12AFE64C1A8 +F7BF09B621196F0815E4FFED891BE971D153A6B501A99651C5583FFC17A0C544E2B140043C1144 +ACF736D7D8DD6D92C4F889FAB41D2CCC5354D1874477FFC699FDBEBF25D8F16B06E41D8F19F01E +740486F73AEB9FC63B3F5CE6C5B38A596B9046CD9E3F491412878CC0F903CB6EDE48C69EF270BA +FC54B8EF8220023D3BB8C9B930AC3FE36475BA5647275334D7C8DA387B69B8A7CB221E2B452365 +3907E00AFE7D25E4C08F34E904C9A31074FAF741A80582FCDAC6DEF6A5820F443786DE1A161F8C +A382BEEC4BF398A646A4D6BC2E6B5879B7A33DFC5EBDA527DC5495A504432775FBB741EB3550C7 +2D97E92F987EEB019FEEE43260AD0B89A1E9CA933E0ECDC226F499E57ED275F904BD131967271E +1A916AED926F36F79547BC7E1D9FDED98730EA527D18CD65DC3B6A604D5ED0FAF1CD970C0D9FA2 +D0BF63364DA1FBCC54AB50440C97C0517E0395C16BE21FF7BCACA45CF172ACCF0A5A4088C92807 +62DCEE465FC0AF5A01B71DECF220300FACC3F5546710D36D4F30449C7D8DFB887909DFDB1465D2 +67264B2B18584A359EB1140B6D750FC2239C1509972CB5747F2E79DEB39DA7F8F77356C3C8CE90 +EBDC4911B1650BD1BAF557792A0DA02C1F382A638B3678ABB69B43CD7012A4FDB18E1FD332ACEB +85287DE661BF7256CB9D928069C5DDC37361F934F69A95F5950FA3936EC54D521928F193696831 +02598BF646EF9955FEFA0ED24039982EA162128A99CEBB513EB7D38EA3C0A6AEDF3BB7FB88ABBB +7D1408BCB272F249D48D6C3E0DDE457F46CF6891179C34E9EB0ACE6FE98AAA6A87DEFB4D49C84E +E5948D84908D802CEF2FD43C49AAA34C0A68C0335D3738C2DD711B5CC0395F43F486E383FE66FB +171C7247F81F7020BB603C37EE15EAFFADDBE44F8A5DA6F540F9FC07E54456612E8FF4CC311009 +C6F930590374DF1714A2F4692B959E28179A805C279C0DDEFA9ED7243AF40C089D40876A6CA785 +B043C6751FAA72DA95F3A30C27DA691959683F43F2D1F6154D3C80A97248E3FEAB1A94EB289A7A +08C46724EC50FCF0B83062E6CFBAB6203310F045739FD65C5668E5403879508772CEB46EA8D469 +717D984736B8AECF27A41A6AE0085995B8F1F2607A39BE49404FFA5655E11537338C74E10B4F6C +035793CBBCD3FC79A875B8591C9AD688FD34D7A20714E4FA30D8283601438BF768CCF974AA2A23 +0D6C83DE7B14848B3456631FA2792ECC0936E12AE960387346D88D061C9379D636600FC1839190 +E471C951EDD60B9AEE956DBBDFE0AC5A7D8B1A5C520C5ACC23B3E5079ED6850AB94437D95C85E6 +80EA6E633C2FEE65FAAB58060D49B9A7B14D87394DAFBF91D9CA15F6DEB1FCF2074AAF9AE11987 +9B5DDEBB02AC0C91FCF56D86670F65A86374037631F70E3B6F3B291AC7E9CDC5B65DC47C7676B9 +C05E5C87DB9564AE535744B82F3FF6E22384281E952A4EB01B43A258D11DD41629C4A54A229E79 +C97ED3D4DC26C8011D78F5D4C57954FA9C8CD73C815D518F68FA12210B8A0C7CF9D7568E5BD763 +1F890E8033F8BA29850CA2E9E66E272EFFA26122D3963C81076921A1FDD6805B90F4936B1DF865 +0C77A0E397C4FE4B5E8765323F8C21D9CC22B5A4F07D50F945B89BC93187B18AFE2C40A30672D4 +E2B9D28FECD2EFC28A47333C4FF32E17CB8CA117CBA026ED238087B55FDD8F8DC7E6D20993D435 +1816FC3E06AE892D847575E92BED20A7C6D4987C07F61B7AA350DED48914F53E72494C50EE7156 +038E8025CC7897052E78858EC469B1A8F77E8662C7438F0E59DEE9B262C88A6A1CB02B4A7A73B4 +134148137DB73FC78C72D1B538A51814A48CA0103501EC37D10690F309740A7CF90DBFCF1D41E6 +CACB6623A518D53EB9657E70AC5726FE3B8F298570002734B9816F7BB3227806A9160606A1294F +E474F7986253F98AB649E907C35BA08C6857AE4F4E1CB3F9C7D89AF7DFFD3DF416BB827CDF69DB +7D4BC336D3F21038E8393C46FB26D5EC9D0C3248E75F9C45F30E4E68BC82697429E471DE8A406E +C2179B6E63A1E61CF95DAD5AB8BCF81CC329E4217C14500EF8BE1F480E05A2BCC0F25F739A8356 +2B5BAB53C24E135AEE351214A9491354D720568F458D1BBEBFDD574CBC85411DB44D548C386279 +351D055394DEF91DF52A928C81338FBA874127BABD76989EDBFEC1F323840DE502403234F3B62D +EE587591888ABFFDB1FCE98DB4915A6B3A25A564F5CFA93818F0617D8D5719568429194E953D51 +CB30F3E216A0E71601115C7FC24A60E65776C0E653234D3DCB8F10EBD1073F51A1D3AAE68EC83D +FC834424300D9BC6B538F4619DC86B1AF220FD288F0D40B58E13EC1E507256AE29519D88C8BD5A +143A8C587766B8D76EB63C60AD92B4CDEBBAEFFD1751E77D44D2AD2996BA5B4677FB9384DC51FF +AB2F61DC31140EEA17E55E144B6846A2158948A5ACCAD652C1F64E0DE252BF706D064A85F6A633 +DA111FACBD89D725FCDB095B562C80E3E78712D1AC9C115ED24974185B0B10DE0A312A9CB3111B +800D3BC85C3AAD3FAA20734C8845ECC6E021E5ACC436F3D7E5964C2D4A44F12793A4586317E49F +55932ACEF59FC02B1622DEE2DB415F21BD7F8B62CE217FB5FA7426B8F0744665F22F2D625B41F4 +1AB440BAF409313286AA884A84D45912CB3BCB5A241B1DF5BAACCEC58D02ECD82DA2F9CBD87F69 +993B8640E64C3D9F424E3E98022BA9A25BD5FE49DAB9B5FE6FD3411EECEABD3C762CBCFED0001E +5CC22F2737D84A33F6F0B7471E089739EC9D443C69223D5C63671BF7A76B79548F571F657ED121 +145A8453928E0EF1902D0AA5F90F6E0939EA8C5C54D9C0E4E4D5FB89B6362D6EB76C63DD45B169 +E550D79571567FB0759E0F19D112312B4B5407022E06DFF7101C5AFFBDE1AE69DA600819F31212 +C49E152B3DC035FF7819F885395A69A1270BE1DDF9742D849334E5AE6F0795BDC8D63DD2AC80F1 +9EEB83926825288E6F2DDB3B9B7C30C723D04715D3858E6CC87B344E898A9FF9C3DB093430855A +37AD1B17936C51BD84587EC11D8E4249A22FA61F3D7C127087DD222C028E75D8DAE6757BE295BD +F0000E1472E7AA70AB2CC03EBD23552EF12E6861174F839D39DCEE6F4C4540C72DD9DD8B7FD8EE +35599393296235DB5D53AE04C2FBC73C2B717215BFC0BD3D9E4F5BE8B6E250446FED12B0D8F26F +14C4A25D01BA49E87E369C8738D057798421B1808BF793930667993F41D2AB2EAC3610918D1DD2 +D43607089A0615FB186BFA7F64B4EC3E82027FA40255C4F0164A8D8212FCBC2771435DE0D6A43C +8CDBA172CAB32EBC0EC4DEE5C571006E60D487869660C8A666AC4CDB4EEEA709D08F2B7E803BF1 +B529FA336BFBE61CF860BEF37241B426BE82B2D5D32B78B89671686958FCE937F5998B77CB3184 +522185CDA33407C14BA43D39132DC8F22A8A65787860AB9A5D07DD2B8E0E4B8DE9B85E356CDC26 +C5AABDA520EF6E9C39CE3B6F2643C82543AF8FCE35F21CA6EAC218724518BDF8E0F2FFBFBDC693 +AA23FF9A37E264628D1949821BDDEFAE42A568F40AA283C8A96F97D94D4CA0006FDD01EA2F7137 +DE224DD3DCE2F898CE6DFA2F0CD7D42A1D03D80A60CAF92AA5FC4D98555C23731082ADD7D44953 +0F3746FFB08517B856616E3761E04532879EDCF83E62D4DE8C2AE57CC3591C9E109E848C123F82 +C5DDB7D589D63B8DA18ECF5D9D6E0936AB040F9A5BEA7E72E212E066E261865C156FC0F385585C +791556FC8297780FE554EE14A55D337DF9AE6D01C5F7084E568700A73230541776F349997E1117 +52AF0ED370E4F0F9B8F870826F249E817576E3AEEAD7B542AE61EA1D51CAE582C5E995D1880817 +C5F8ED72D17B2D243E00B1E4EFA3171269D9FE68C34582535C6D1DF6A4A8B4206CBFE21FD671A9 +3B356C4CC978B66A617F02C7019BE8027E39D74061086112F6DAC72C70BBDD7630F9C251F6E656 +818EC9EE28EA85D72E6AE86099ECCBCDAD734D2560201D9EE41B398F70679EBC7CD16FE575F5DD +548180730B8197E2F7FA52E6B20C4CC207CD26648D5F6AF31D02F689FD6D1FA860B7A59113982A +38D8523D472A0BF8D2B908A58B9440A1256FCC2364D75936825CB95E5C7EBB72957161F2E566B7 +0503E2E63A2623C2B5DBBCBC9AC9BD4B7ADB398679651FC88223B237AFCF11C926548C248D3410 +13DB94FD15F9C29CD81D2DF9BA6403F6B0101EFD2C3FA77D8891990E3DE29C3BA72A51E7883B58 +6077F005D8B7EBD02D5305A29F2CAC0197C38A7D4CE63C39D87B2546E4F9FADF90E4611F7BB0F6 +7838E34C2F6AD9437ADDC58408C2FDA69D05851605A2962957E7F8F8C6CB37C121D6A0525DDEFE +1313FA431B492F91CF958C08F8262D330BFA2A877C65C0C552BAFD01513AACB7C73981728A6465 +1C1289DCE451A222B24FAF372D767ECA5AB3271B0F6CE3DA58CFB91B72818C792E581F6E05F1FA +765A955E269BFACA07A522CE946C5FCDA90AD2FA8FBB301482BC7BBA1155644617967AD32A3656 +99DA19B87063FDC8E1399E48EE880282321545116E01C1A481C991E1DFE557B646CADC9F732D4F +CF8673075371481AAD6B4C7BA70B882BB6BA902B5D46B34C0FA42511ECDF952C5D71D4AF985D1F +7954B06A7796F1A9FD6E7B0BB14F3756073465F2DFD500F2C521FA19E4949AAB95513CF9235055 +FA35BD62DD14A0F41FA62AF5E4E55526B4938DB4A83BFBA184F5BC33F19F43289F620A7BA34D4E +BB1558F595E65540C7476DBE68076184CCCB53A28FCA70DC37AD0A19ACB56A9627C04420DBF786 +53D08B3C355F6A63413B25E47F872DF2F767ED474C106097C73F6BF37EC99095CD96F83390A3D5 +99FDF4BAEBA93236D8C443BB53104D6240EA3F54DA99CDD568F7F0EC48D567E860D76235E86366 +F6909600149691B7263522B657B4B8A1DA10289A829CBD1D64400ECAD0F66F0394F8BA0ED3BFCF +1AEE379D5BED3EF5E4FE50351D2A2FD96F43244430045A113FAA4EDD8BC4451710DD101FA64791 +9E728333C88CE5E0B8FA8D727AEBD85ED89D93852C3D3FFCDED02BDB08A1CB6C58D21E90C0BB32 +134A2540E7383E216A58788E69A1A7F7458C48C739BE85E5B21A185DECFB93759F828C9475E9E4 +DC2F4ED736FFFAA34FEB62A8B82F88D1C49E61682CB1070299E0E8740F4E2E77F3CE59C9EA86DA +4ABA2BCB4C44050BA817EB8D00F28DB4208A2017E8611A1566E196BE9F202324C309009C533D2A +859EC3887FB81CEECC36EC319ECF6F7DB42AD345F53168EBE5069B5F11AAE307ABF479E2F0DDB6 +7E09A50EC3F4D12DB7D3C310467A8495E68007B8AA3022728FA3B2F6F8514062D2699F58DCAF86 +CA1BB34F113C1AE3BEAFC39B699CC3BFEEF428BC4FF4DE503F2C3E60B70C88E249473458A4D2C3 +CF1D3A0BC47B3FE3F0C98A4FDE602980F3C8664D08300E1DECF8322D326DFC2A635C35781AD8F9 +AE4B64051BE0D1E188DA8EE7A965B08B9CB6A1B1B8BF275BB2E0B120013C6696DD991053DFD1CA +EC7D455753837D8E238BB4B60027DE224CAA8F389133DDD269C30128634EC97081A37274AA12FA +8F347B73D551F1FEDF53B440EE122514D9C9A68BC73092E7EB5DA535D9D29D33BFE51D52CD52D0 +689475A2086C5CEE8B7215E2E8775E00EDC062AC724294478B28930E140EADAB53B61E5BE241C0 +49C2382F436EB9F241CAB24E9CCE88775544027B5086FF4ED21D7D48C31ECAFFEA64EA8F1FB00F +31A6C79D9878B3A4993A23E2721E24353610F9DBD47A3A05ED551173C928C706AF14D996F826F6 +122A9299AC08BCA94E81B64A9868B3CCBB923B28236254A0B0BFC3391554B13EE22D08E8D9056D +365661B3B348111EAF06A2E6D10A7E9A916854FA87CDB029F511B82E7A6AFB9ABF93483AB37E2E +9BC2BDF9FD8D1AA0E04909EC2449863C48F45451E5BDFC2772F410F7B2F0E98BE7856E9D487E77 +0C796B2DE888AB6D8625282A20F7E172616474FB8680C6D2798E68A2DF9EFB776047C3838ACAC3 +762D0D5003A8FD2DA591D7E200E2AF832A0A285D34ED8D8150337ADEBF0A72754A798F624F6439 +8676DADC4D9416E44F564B9FE58435705765D3F2587C2D71E6D0825AE72FD538605388BC934418 +416630599554584735FD2C77739141B72B54AE03A418930CE9EEE66D0D058D40E03791C424E4F6 +F7B730C20F10E0BA1D014C1EADE73ED7DE3F44C45F2688C34E6C3912E27488126E7ED617629B40 +45E2ECDF6B1C5AB9FCBF68F98368A14B4DA1882EF909041944DFA5B73D02D3F47645CB1F8364C1 +C36C7284CD9CE72408E89C9E195ED732EA9F837982DC46FD6C8E2B8FDA504E90C3C72579592181 +AAE633072FF98ADAACDA390FF9FB5A70ACFF9110437F3198AFDF7D355BD98EFCD8C354F1BEC82D +F1E7DE0066C9A00375C9D740D8595EFA00F5D2A1633CAA7CD20E2D4EB660C4FB5D9284AF032F16 +552FE16140954611B8CEA3490B6D3DBF06D68634AEF6D8CF5D854671E8CDDA3C1009669B62920E +51798A9EEF449011D3C2A32A76243C10A2720715DC4E01CB48974955487108C862155A751C01ED +8B08C66FDFCD660C0739D945559C45AAF48802EDFFC58C47D2203BFF0162AA07C45CD550C6C62C +A1FEAB3604C5065DAA7351D94ED19128E6781C4164061C516033A7C8445789C1CFC39DB4F7A06B +BD306D73180DB5186BA0ADB8FB0C88974D149999CC0D8BA6AAE8F1DEB1A9D0B1A82A6AE856C77B +258672379C02A7C6EDC78AA675DFE3BDBD2DF61EDF63EDD0CF2865248E43D92882638A6A535583 +595DC979DD69FC57C7D5DFAEAE3F04ED9FFD4BD0724774414AC0EBC9124E8AB704486BB2AC92CB +4682C41CB73DC3889627DB62B5B29D83731F4618F8E7F34A49AB18C51EB88F987189BDAEC607A0 +49ADCC44A5C1159643D5FE168BD8BEEC257801FA5120CDB209B6F7A279759597EAC9558C3AF638 +3D4FF7600E9181E08DDF624684F2535484AAC1932F13153AA3D81C1DE1D2E979A2F49D2D4B1691 +6E08A74642313D67C3CE97F275BF9B89E2BA83F610DA9820EF359DF54732AC03AB2ABD3C51BEEA +1E16848726DC100A2A4F5EC689EC6DA1C33991EE04DB54D10C424BF4FE05CF148517553969B925 +9F4B60C098387DC900A869AA7D005304F1195E1E2D8BE81B6D2BEB3F596160A1E8B84C45DA3850 +DE2C1C8D62E260B20FA8F4C0C6108A4C475858937916AA63D6CEC83E61ECE4DDE16EC86D39B4F0 +84C509DB84F63D385890F6A67BD68753E6ED551C283CD3373B9C46C1421A5CACCCE28C561CA7AC +662A2089995A8A924B3072D0E4144638EF66CD33953C2044B397C878E5974FF6B79A047A8DE60A +B46F03A4E2B21D475047A53CCFC772D502615B1B8FFD4A12E43B5F79B955163A56D65C38FCC2D2 +F88CC3D9F07CEF51EAAB431DD3BBF5B548BCE1A389F5AE9134D471655C8EB787B728D0845BDF16 +8B625C3ADB1A063B24A02A96A41BAF68C2C1B859969040C32E7CA10F4B2D92CD9474CB01F2CEDA +F936F81B8B3AB3BB4669A390F4D0C31FD087682B8AFB6C7DF90B9D409B45865A40F6D848B7AF80 +4B21EED70F454DC2DA154EA331A8A18C0B6166C567019E017200D076E4FA36E9B372209C8512E6 +AE98E39922BF2FF8A881CAC43615790C679202899D1BB3DFD6A5976FD051252DC5FC3D43B8C5B4 +147E963085ECD91828BD444DF789A58138227A9E11460172738DA53E2284144163E00FA5DF006E +9B479F006ADDE4231FA5B0B16417184E9E74B23FBD447B76E165ADEB6A20ACD796E0543EBF1246 +F3E4E81E150FEB1F93B77A6A7119A7548FF3F3EADE514AC9202AA978B67528DD647B846579AB2C +BBB8FF93BD7C0F51A36B042BA83F621084B06D02F7D7A014BDE8471FB74FA953FF02F24D2EFE67 +C14CDB9C76E0A94F5FCE73D5953DBA7B906386BD44A23980C62CE988972408D5056B544447CEB1 +E4BAA94CDD2E93BF16B074F4BB34DE5699FCF80B208146D0F101C15812D08290F0928BBC1DA8D6 +4308428BEA5983CF6C122C376C8BB1DF55DB16A331E951A37FFD86D9F7E9E427795F928A9F8C28 +7A6AFF5C7A139AB6E2792CE68A382AB7DB9F7897F04D65C6B13051FBFAD13C4EDFFA804AF99BB0 +6E2113E7FF358F68293466A511904FF09E3A6CCBE18D64B211E9FBF4FFB6DDB4A8833A6A4EADAC +CE85E5E03EEB96219791EB8028DE809053450866485EDAE4A87B29B811A3944CDEDBBDD1E16389 +A01F152D1AE68F49AF674DB7BDCCD9BE31E48CA3E3A08396F84939F00AC0448ABEC810924945F4 +4B39A1C9EF830664EC7AD5B568E4FCB3361CABBC8705A1249F31401272981BEFCE881FD5B17E15 +1876C0ED5D1FD343856D8D2FE988E894C755448986EC1A5B01E5537617BCF159AF4121A1727023 +A03E32D07EB9406066102B59FACA8D766B1A883FF01BC1846699B5E76122F27C6A68023FE28F6B +8A457FE627466B2D6A70011B26030E42280AC60E0143A7E4F0A5F5720590E762B466B8108D22A8 +A10C69D5E5BAA29686F5EAAD2163C5424BE601CC920146E6719B4ACE48BDA7ABF30CDFFD747263 +5E2C09E57FA389F23B92EB5AB39B385933DB5C4CE6E82319820E7D4278909E8D8146022467892D +398F567D97515D74ACE0DE1DBEEC7540A8FE98051337C3D8F1AE490B5A320F656335990D3AC542 +BBC527F1E1743E4AA165FB65E72CCB6B4AC9F03ADE50137A8F28E3D0FCB0F3DC0596A743987B6B +F3BB804EF72DF06C8C4FCBAEA0B1C0637665B685086BCFB653F37BECB6C57886A1826318D5CD10 +5F165305FD6E8E01DE09434107532DDFF7AB646220ECF009E314C4F2C1D12754FD0F3FF4580072 +B766DA30335B0644122F3622EC3D3252ADDFD6D8939AB70104F6A371FF5D3F4C51E8241DCB7090 +BC0619A610ACE3A298CBD444CA0F8D27D2A3A26823BAFBC25430A7E3FB62D654A1512B652C85B1 +C00698199907ED852B2920CA6ACDC7CED0CBF5997252F96FDACF3058C201AED4FBB4E3C398FEA7 +BFE99BB8A6E5378595201C70174AAB5682ACD5F3BC8972FFA67BDD996DB5CDA0F0C45BBE6FC4E4 +FC7C29EDE5A8159FB1D563AD2D0170105EC706DFC0BCE0C3B4EB8FBD9D2F6AF72D23F06303C38D +F7D71DB50DABF15BDD7264CB51C05F54217D4B666650373415D4B08C130465F5177220AB57AE02 +5A70B76B04608760E92752B202C164BE2C73D9133B090DDA5BBC7FE569D7F50ACFE09A6EC09FCA +FAFE0A129240B9E55CB5A613AC35C9EAAED879F1A61009950977103488F95138ABEAA1FE184EFE +B06B4FB4A7A32E65F795E68335ED99633878F4C203AA62A6F7B88237BF1B9A03C86EAB1DCEA206 +E052D2D43D9A85594406C901780A03BD7F08245BDE3E12A66CB3705BA9F8562E1D211E7EF23B07 +86B72A3288BD7BB87FEEFC9247F84FF09AB62A2AA3187DA7ED32D003E1791A3F6094393C6FEC85 +8C1CCE17D99E9A910F204C63E33944147BA5F76194917E4A01583BAA27D752FDF0EF4A6B6D96FB +3C35C7381D66AECDBB80E350EDC289463DEF2CE5C5A40E6CB17D48EFCD058302B2BD8087C05BB1 +A7C60B3D6D522E9E22FB17BEE24D05C0A85333BE153D8F36DBC927BBAB9D0EF09DDFD9DBE38914 +884DC3B8E8EB5D64B84D3D1F1F4A3A0287F0F4D80B15A056C669AB1420BEB8EDF1158D0D695449 +0105E6883248C4FF7FD532C1584F565EB1294A172B1ED8CC114BEE6BA4FDEAD8219027E2DBDCC3 +5935AF3BD16C8372D18DCDBE1E185A536A764038967E4046DE607405C18A8EAEAC766ABA8B4F16 +79A790F50A8CADD206DDFC44214F6475367EB8DBFAA015E2692B121F68EC8511F0592D93B7FE1F +D2E73C94826EA723A9E77011C7F89FA11ECFE6EB503129B79662ECCA6DE6AAE5163CF9E7A9125B +453BAADD21208368A2350F84C586E7D776EF4F39475062714D00B2B93153AD9D57237A2EC933C6 +0DFB3072AFA054539535473041B1431103E112257FE3A617336C9FA4FF37FA95EDCE757F232E6A +E74A4B11E303469C4CE7ACFBF841EBC8239DB6380FC76ECC6B697CAAF9E1C3D01ABCA07174DC7F +090D7AF1F32E20C51DF70531135663ACA0D448BCEAC96F6F9E32FB65D463F5AB4E3619EADE6127 +B51C4D25B2F2DCB5841FD5E00214652B5969CE4D65536947B52B40CC3089FBC07C299308DE0C15 +8D39E0F01D75362B0F0BECE29B583DBE31078DFEFB9436E3E708DA4F03A80A66A7F095E443F303 +72F20D463E0436F99EDD7D755BEF2DB310FB787CF11215F3D9B6F21BFFAEF9A268E3575CF97D32 +661C91F2ED6964D92E39583A1A6F786E6D700231CCF382A428A3A4B59B1166818F674D24DAFE66 +D26C08F0FD84C82AC5B558F077061D881CC572B7B62235F1C53ADD8F5DA10E1EDF2C99573B67D5 +D759CD7A87F94F375D08032E5D7C24AA611984C6DED79C79BF38C74C74E44F237118DCD9C01F14 +AA9CD8B696FFEC9F2F29A1BC7AE36E1A2A080702C87F6091F0AACEAFA41937C52432D6F9122B7A +8EB294DAD353004C86188937E4BEF5243F6CBE2F30B8F2CFF23E77EB24FABB2C9CDF2883C32BEE +B67B9EE47CCDA4985024BA4942D689B0413F864FEDC949AEEAE8D1AB13B8F2FFF9B12E66445E91 +129C22EDEB1AB7ECE21ED9677C539FE1F8FB93F20FDB560673BAA89076082BA9ED01B508CC332B +93D463E8D1C082C052EC8B28EA89B81E24898D8D09CACB8B1A9A4FC553D5952EA2EC23BB5B4899 +BB739316D9D2A7DD02A579B74077488AAF5CB94DB243D0C9377D3C9B91935D0CC58574E1572C02 +00216FF970C8772914392679792AD1476F8DFCA623352EA8B67FBF3B521EAF922BED9C7E7AB8DB +6838B0DC109B775450A94A1E962F8ED8E141DC56F046794A259DE2A86732D847F370CE9D3C86D0 +D40991D001527ECC8D990622383D917C25FA85F10BA2083856A5CD4850223A1811066AFB6A91CF +0DB58265421AFF0D3BFF9198C1EB7C7E5AFE39CDB81E26112B5874CB501C762C34253C04954F09 +39F65C4B94191B9BD01E1249F836E4B273892DDBC30C0A95388E76027561AD365F82668B1D34CE +A37619F206E2AEC54C5D49AAA3712B5457B47E65B812BE971AF5C4FCBCE06FBC209948D897D7E8 +AC55A0BB24A4BAB7594A8408B9BDF97938F1338D23689A006F532EB2872F17891C36B2B75A7D7F +428254FD15EAAEFA6F93136BD906FB7E59FBF838A8DE7BA68B2F2CFA804C3AF3C3B680C60E11EE +8651E2D9A1D5A6FB86113DE569F8FC2764F559E726B9DAB14BDBACAF3C7A0144CE32D67A6708FB +AB0E7FA83D2E21581C3F92168F6DFE31AF02F8B65491863BE796FF5B73A8E9B8D98FBB53DAF3F0 +C0EA006236AD0499164E6D1BD05DF96FBA2F99F780BD27A1E5D5371746256AEF27033E1380D0AC +3086E69EF2D92288145469626818E1079A2BF60D9287D4452101C09471DFD5DEB80C1C209F1AEA +15E167512FB04D6484A2276DD1DA62B8AAB3BEB2729126C8DDAC5DC7802A76F2CF3C0C52DD4452 +3EB30CF7FE5B59160E0D5D069B7824801134282910D99A730CEB62C30731E204347A8474CFF017 +5B107E6A0C9D49574D98F156FAEF3CEAD406DE836DE90BD743CA741B5937F9CCD406587F2A6928 +48C965F699A3DC33C4DA023DEF3B13BF904EB3F107AB829906E1492E0690AC5C5158A006BC6041 +FF81D7AB16F55E5081EB71B83454D0B3DC64A8029CE7F6A1BA4E2B97B96B8E47950CA4F9486A3C +2D126E2230DE26A33D89D296807F22D67C65F3D0087D0A420673FBCDD5BFFF11B8A17C6EAC198B +0DF3594D9D631B066F7C7FF9DD468B09C0C6D2F10D18AC6278BD1AE4BEB78A44FFC4ACC7FE5DF2 +9244A8ABBE34210B1714E9409158645C988652D531B68B75FF05AA8E635E570D7D61E60A7C44B6 +764CED6A072B4AA2713D567007C12E094C70EB62E81CB5D317AB4D160BF1C89DC8AB7BA85953F5 +74DA6409C18448CCDD217FC6DF97DD07F3266E33F3B371CDCDE735106FDA28D29F847F01FA61BB +E983544378489CC83E9C96A064E71F9A9348743EC1F2D0D04EEB74E2CDB3673A0592AFF79A380A +381046FA2BFD059DF6482ED534234E8D9667606BC3FE3D0D1BC16A057D838BC83173D65949D43D +C9A32D1A02148709F5D08F1E68D52EB718949B9E93A2ADFC91DE01A0424854E209545B7AAE98F5 +D5F0EAD90437FAED68718842BC5030804C83F53BF908B6805321BE0439D40D1E2F7783EAC885F7 +7C69CB868AA31BD5CE4A388BEDE6C93C6E2864FBC3089E82468967003029776845AF4601737237 +1297DAABD554AEF66B3CF79FA4280D5C353ACADA51B6EDFE6B7414CE08130A37C0A3629EEAB9AB +6B8F11467F52BC0B24DDABC880EAFE30F471D933E473C4308BF779A37850A30418C9DC617B3F48 +5D269DB5B31B9BD863C2F56CF6C5BE82DBFAF023642CB383A11575627CDC53899C0EFD156E2AE5 +4C9303C92D55CB689F3F6948E0FB79E6937700401ED6C4E9A24948F4D07EF09649D0DB4114895C +3FC2A50A7230A870A5DE61ACD2A90C5F7578837AB0BFB1B7DF04265278E1FF5C3E6A510308C507 +2701A7F80DC2CAB87C3DE94DDB0612FA55A35758FF80E6CB7DD6DAE43C24C1DC79F552E9ADEA29 +0F204E05B9E3AD4444E02940097E66A1D08B7D083621FFA3909FE3635650EC34B78BA61B66F6AA +0AC1EE785187FDDA45444AA9224449160D0A5196B5C65DB8223EC9F5FE98C6368A0DF4B6275A01 +103A7FFD76A6FC2EF7ECAAE480EFED289E7A24B52413133BABE57E9440288418A14E7B8EC737C1 +FB0C673C7623CD1CBAF3CA51726B32834EB13A582F61C0E93027B9B184402AD578F02E1F0C795F +9E134967385E94BAA3DAA19C7D52CDC75E06A2598785381268166039834B5E2F19C8EAD7EAA835 +AC0B30AB127DD7D950912F6E626D3496AFA8323F3E749D59AD75806E9C1489F6FAD73D30CE7FD1 +7D508D3524FDEE236CDAC2E9DEDF2E7F3AAA255F7A33B1618A288E613BE65CD3649A53E43178C0 +9B54470DF6957F61D836A34583F9C21C441E503019E1600932E667EDDB07D5C51EC9339E48020F +CB083A4132DC2459F221A8F72F9036E580D878EEFF3DEB714930AD751BE83236A3D6E53073AA71 +363056CCBD5E1012ECDA67B53E8A2CA023058DF0C8771EC8D5D06580B56CB5357633CB835603AE +14E007C83C88F8C68EA3903D61ADC7CAED2E6319D4AB42A14F79ED460474C0BA8C81104A3E481D +5A0DEAD53926D756B73E2E29278E6C93B176199F59A7125FD97351CC79AB9D6DEC25C5025B409B +0487BE29B7E50A84F0F166F689CA98D6EB8C35666AC7B8ED98C6C7FED0B27A2740494C46336A3D +22F039CAEC330F58C990E14331107A23C0637AEC7F0CC8345349005800A70598F2E03E204796E2 +AFC789699574FB1BDF156EED06900180FB86D59E5189169552A41E07C31EA5E4579967C4945E93 +D2EAE5D509CD586BC91CF43E3D0CF7367CEC561EA4C4EC5F2BC4AD4526A337C7036DE5C05898B5 +4426A4476301055CC289DD62575C0369149B0B99E1164474495695DF1D767D1AB442BDE25B7B8C +A570EA7F8871D54DF0C7FE9FDF290B0902958008225218C92B33050ABB733D90A91C1D807CD32A +951D9D3ADCB30C38A86C686B2CDAAFCAA0B9CF4EAB53D322273D5411DB464BD506F6EB22116F04 +61DAFDFD69B59BA8FCAE44DC69FBC26277CF66C2CD92C9DF7F01BE30B093E3BF3A22473694C48A +8A9BAB7712055B3EE73A7EB8F8173AF6BB4484D05BA03976BEB288933DA7BC1607DEA17C4C8AEA +BAA9175FBD6F5B975EFB8465C677CA70BF2F35B864903C126E8E7C8CC135F3385E1F135995F6FD +A2022AE6E7459EAE0849C040FD5A3A79CC5F5E42DC2B1B84EA4ED527E8F10F17302710F6506306 +915D03869E5E336EE9C0C3533A6E27EE9AAB1D7617BC57F78146F0D07DF6F7DAE114D042D9A9AE +C4C5B7284EE414CBD4EBDA5AA2BC6FFBE141EACE5DC3BF14BE662C30DCF4BA757E0D7124AD3A1E +6DC9146DDE80726EAB3E0FB979AD0EDF0623E09F5D05E0267ADD3FC7E44E668BE08898168BA31D +45CC363F55BD180516389789DCC45ED8FD58DF96A5D2C7837543F387896E3DE98E41EC2D44CA7E +6A4A138255D669FA09E1A0545C4D895150487AAB138E3C0679EA708F18D8342CBD852EF2E0EEC9 +B0E81EA7A8AF7EBB17B153D5B6EB55B62BB0D6C21A48E567DBD12BC8D5B056BF32E34E5B118156 +F3BFC3A689A037640FB5E41B5A7E223EB95A3639B21B0AC513C9E22B5C15B7FC6513AB82C45E15 +14F6F752D837FD9F9CD00D5BE0ADFF2533FB1ADBCB17B95F8BB2D84EA777498FD26588684AB2D7 +3EC225A2D056519756D5F42A190355857F1EC1FDD64796A0301E057FD7D5207FB5CC2A47B5A64C +D62AC00AB2D673657D74A309714F30E19C60DFAB22E3829B696BCABFE9679197CF3198E6EF6B77 +31DFC9B93CFC617E05D3A3BF32A5B04F5AAA82C645C26C4DD5982D8CE1E89ECCB1EF87C91D459F +8E6B8BE8F26DF88D70A4C5F69512731A5F8411CC5EDEF34C38E24D4DFC947FFF19363D4CD8D813 +08BF6614B337C1C60ED135527598B35E39126308C5975DE4C47F4D81861BA456748E2E92548A7B +834D46435D964BF0E35DDDAC394F5CC30A5AA9D7C477D6C020BD7B89A43BA916CC812B0867E1A7 +DB6D6E3060D3D1794932F3FD268F72ED3CBE3896CDA0264C85B952D688400B1A602929F78C7FDB +52AC0923116D8483F5B537858D6019E9E987C87AB8BEA2698748F560416CC98B29A8767FBA3B1C +DE27687A99C5E02E804969718EFBB1445F229A1E0F7ED732E773B29A6CA5E1A958C14D1CC85392 +E8E2C6028AC92BB01426953E712E0C34689F1B93A6F6B52D7894CC19AA998953F1912E959DB685 +660EFC9CEA98B39AAFEAB34118D13CF0C7F18374F38AF7962036F28FF616A4A1B21B13FE4C6C76 +E2CCCDB52E36A1A61C41AE5AA0E284649DF1278A50A293E42C44523BC1EDB74E8F0B42E5F66E67 +B5C94F66DC865CD306948AE9148D0C0D794E9F6495FE39E39C9B75371FCC34992CD6A4F195A84E +34EAEAAC8525A98679847F83ED2628C19982EE486A9948EBA14D844EA304AD2E872583B36E40ED +F5B2F0D608B796C6EFDDBADBD23EEAB95F9C6649D803DA9BC8B1562C4B266F245C1998AD9A2AE1 +9E0D4F4401D71E082EA899BE810C5A9774B7589E27ABD1F7FD388804C81A07495630B15C2EF07F +94B745BACD849EED179D8B91D90C22B65519FC98BFA9D0823E6D1F8EE8E83D486D2F9B70EA0555 +71BA03D2F93DD026E0B1280A6175887655A4EE4FA2AC13637463639CBA91D087544D120389F1F7 +650A9A88FE662D0583810D6CCB92CA867705084A43D9C7B9AFD97DE9094A1A706CB71EFDFDC2F8 +B06202FF87178D5E3D6A426E2B3B279467202D25EBF58F12A3F998C5B94BEF33F3FC173515E132 +6C5ECC1F432C28CB574BC4C15C9DD9A02B84973463995BE3432025A9DCF9389C7DC68F8B1E5104 +A5C9982A6F8943892A9B195761ED512AF054E0909764BC830777F58ACBE22B117C34418207AE76 +27D282844FD8C73F1E370FCF70C148621D3CA3A85CD32B97FF5FEF8B8FD567AFF56A0423BD3957 +13357B8D7FEABDB84C633136B0F23E54AFFE1863A5D597D514668D48F58FF6410D8CF3602C63D4 +CADE4D5E2E57129F7E86A353E02C4CBF4E2BE5A0FA05F2936D5C8D0301885BF138EBC2ACB8E108 +1C0EA3C337065C9098AE6F239A9DC5ACE2B67DB4F06A2064CFAF84760DF2041F220BA99E295518 +E27D385852857FD75C3B1AD8A5CF5B0F58DC51E237D3FA65AB19FC491DA92211CB7F4B3A883D5D +B66B8A5B3D711EE243ECEDAF7CDC335A4B6F159FA40207FF246449DFED4307CC2C441277D9B7CD +DB397E4D22DB21F0FB59DF61F908BDC7ECDD085706F15A4323518B87847F93CCCA2C47B0E5FC31 +A80D11B698836725218E3D72579B5739060680C216B2D8E04C0E24646C11063C5F60E8A28B98FC +2B3E25B9B6A93F04CBED5FF239281FBBCEBE19D2ABA44E86E4E40F943616533BDE1AA235EA60A7 +1295C7347E16F68A1F7B90FC113FC64FEF6B0967E13F41479BF4C60486359F29E5DCF47F2E4A28 +D478ADC0094D4AC5A6425BA5CCA2D6D0177181DDCDFE9D27D42235D1DF6FAD82A9293B895635F5 +FADFF3367E4508536570ACDA8CD3AC12481764C225495CD0645E4C43E0D957FC1B9FC1F62896FD +6C38A6658E322DF19B4ECB2DE3B6E3741D70F4A307EA3C27F8F439B44068D16DAFEC0EF677138E +0507733A6F49D5CC7DA0E9C8E70B3D60F43FB75F86648E537406D4CCA5C2A11DF559DEAFB3CD38 +9180A1B15BBBA482E2129530347A3AABF2F8BF2AD9E42B3EE295B6B20DAFA5E7DF746D08AC6193 +76952954154A7118F98BFD7D8EAC71D5FA3ABF935393BDE56AD4CD28C43C41D185048FA12FFFF2 +A007AA7BC60D2B5602F591569490860F08CB84915C60D93118482C30B2CB466053293E359971E7 +5DA84EFB4981D21C9400BD22544511D618DCC72EB362CA0D0599192D51BE3FC515A9E2AC6803F3 +6F21C63A3BBE4FCFA8C50F7698DB4DB76247867EF5BB2C1F497246B6837D98F57CB4C9FEFBC867 +06413EE892AE1F3D33B860040E9D055DA2197B262AB77F0AC8D287E16BF795B719E591D7E8C8F4 +3806AA3B4C6C9E24BB4DBD3566FCB00B537A559920B46B6693BB43F6456DCED4157428F6CEDC54 +C05DCA86C48FEC6B7F9E35AB02BF22F8757E718A347EFB16A1EFBBF65824FFA61A0DBB24E3058A +5C68265A7980BC14252D253D2EC4E90DD7F3CF6DD7B354872512D022D88C692B9D01F4F67DD225 +00604976B5E2453F2B97D653C68EAAA18061E818C769ACB98822AE6BFED2DB4EB7FF12E9EA9572 +19B8E608E7DB08AD23BE1D2DBA61037A51A2709F9209F52D8966C627A122A4E99FE635DDAD3169 +203DD0C7618CA464916DD79BF87D3C18E2A2A269F478A2B46AAD552FFD240C9E87493AB68CECCD +673AA774596575C01EEE5F1EE7B6AC2C482289F99F4EF36C01A953EAAD4106F9CF46EDC75FB006 +638E9D8657B3DCEFD2DB7F803DC6856A808E75A25CE96CCA74F72734DBB721ED7198A2F19A793A +F7665B4766ECF555A216D5101285ECD73DFFC68169023E50CECB607FAACF0299E7E4A1FB683E54 +A26652E8AEEE4C023BB1D97DF939D79F696DC49EF2A7ADC7E4AE68465608C05189D77A01318483 +DA6F5DCF0DBB11D162677DE16F6B3B9A99516F1089F7C50E1BAF04396B7346FE7768F915E76923 +7EF3638F930D1B9961EE1F2C172926D64F9D6B1814667762A0E204541F96EB04F0A729B11D4390 +11D25336E82EFBDE85200AA35EA0138FC7FE5AD34E368B19827EB50F2D6CB0BE48B027C819EE09 +73BF5B6E3FD99CF3C86C6A0BFBE5108103F5FB2DFB8549E112AD7771CC7F6C60A91AB61F8DD94A +770A514132B10B777D432899375BC6FCA40DC8AF039CE20088C6CDC332404BB25FF76BDFD94C0A +26DC611B2918E4504E991B3BD6D5A9410EC9C5530E691A3511DBFF1230688C66B9AF231FD039EB +37D00117F9C41BD81EE04A37C8358A19E3116AED9F4427319895FB0848EA5D4B4C974BAE3CF6F8 +89EDC96E533FF58414B00B8EEC1C17EA61540967C99ED0F3A25CC7E249F8457F75E5743B1D1725 +719E2C914EAF9ACEFE8CC947ECD13ED4448738D7640634FA210D3225DB293D611AD0217076FD95 +F3A87D2645A49FE635999E3107FFDDA4D10EA04A9086C7E655166BE92933511988F958E326E0A3 +149471E6047B8CCAA665DB149B470DF8F9C0BF8CA326ADF3CF305B61DACD243CED59A43ADC8E29 +0CE9215F9803F63E30272A926A409CCB2C4195CA778564CB2A0CC5FAB6015E9A26E5A406C70E6C +C2E8FDF88D1BF4056FFC55406D9D387E7651A8F4697375144CCA6D5ABEA66FBC147E43CDE2F0E4 +6B1DE277C67A3000471DDD0A1C536A92D037632B18252AFECE14EF574943BE40692248F84864D4 +9AA9870EE10F8D49CF62C7253FF27408D32DA3EE7BAA06CD185C4566F659C830979C02F32D047D +15B6DCC581000267E173DB322C93AE9755276E99CD01CB609159A9DFB70C9C33562D0440D68945 +1A4DBC194C4E647EC2A487BBF31C9CF51873CAAB4C5F65F615E1474F2D8B9FE7C1747BC0468618 +8B1BE29629C7DED98D696AE2DB206CCC60515B9C871EF97FEA2E11BF52CB858491FC95EE4A3721 +D53F5E7FA2F8C617B95098C57680DD1B0F0FFF95CA41D8DD1316CC30B4EFB8AD661A54D1522ED2 +147C162DD6EC6DC5FC8F01C02B55DFA829EB4C5F1369316ACC3E3A24FD67CBE8D8A4D20CE74E14 +482BFED46765AD699EAD114C90E49E084BAB349FAEEB6904816C9C8534EEF53AF0C294B9FDE808 +496CBE5A131FEF18E38728DCE9C6CD3EFE05B52AD1B3DD26E1E0155F98B93EFEC94579D848377F +9D01A80F1899949CF4C76C662AC1AAE3642403B72517A4D5B1BEA359003492A2D9C36C5814B992 +0A2CF2B078646E87C2D1BD4590475599245FA2D898A48BB650EB48A89FFF71D995BEE157C4F6AD +85D645DD66E81E7C6B3D89AFF6E05ED1C7B3AF0DCEF6F470E763B14E88E212DBDFF70443E8D613 +FD432AAF703EC4AC408F7942190C0434DEA7E23864DDA0C175376FAFBCC51E9752D91075FA5606 +5DC29CF441655F3B4C3D779C77587A20EFFC44C264138DD789E023DB98BF1C97903A93C35111D8 +1465631A08A7683C35266274BCCAD5063B40A527B76C719E13734DF02156DCF8A31244F0533808 +737F41ADDDF2E3E2DA0C99D0CA768B5AD319A67D10F07B0ABD1ACA437CB6EE4E96BC5470364183 +AA921A76DFF95ED50AB57822D3F6776FED49E5FBE549216AA84184774199DAC2E8B9D5BD8CD5EB +6E4DE168EBF48C8A4607937E86D96C75CCF4E128985645089DA0933607FB2CC86AAEB5F0BCBB50 +255427089F40B774306F95E682BEDD41460EE58E2F0CC1B0D0D8A03600562F550CDA3E83826E81 +92126BA5292EBA24EB1316A6EDADFFAEE0E557E06E78339A11843D9B163D498456D88370C47471 +A69211231A1D5EB1BE262CE640D459E8C6AF9B298E4EBF890B3BD6CB5840CED15CEBD12B08F321 +73CC829741FF8DFFCD42A64A58D14211DC02AF0AA9E7B2E92A30604394478B4487F7C567910EA8 +D692CD17D1BA456762914AE923A88408EBC24907726B906B4731008BFFF2B7EEDEA81E5FE22DE6 +32EAC2406117E00A7A321F63DD50111488E5CC348E5A32A0CE08E8A27F47BD7E38CBC05A66EC72 +10F1B2AD4AF9DF93A03F66A013124732E6F7F8517200B0590B15D1C3AACADE0957CFE07CA944BF +D763B9D640040905E062213F767123D1C790DFC268E07CC6056B1617D1F36883A9E66B2BC28A99 +BD7B7E74E1EE888BEE272EB9373A67491417A608874C60D78241D0111FCFB8DFE8C0F1463163E0 +CA75CE03E0BE7BACAC4024E559E33D87B002F21BD44724C97F691EBF949428D86A7FE3AD2F880D +D6C799C5BFC8210819A8A018EA8813DE725272BDC63C6ADDC2D30C661F0976CEF318548748C8BD +D5C1A09A12E5336126BB22E9EE7E9D9E369673E842956217A91757C06BE82725365AA19368A973 +F9356D15F85A48A9E91F35D96B54FBAE750571BFF93A36061FD23A31602B86EACA74E79F79958C +0EE84F45D6EA2C265826C9948A0441DABDE4392941B29F7F2EF6CED15A7D31D739DB09A74D4717 +E576BF8984A7F87673D8F84790B24F7C0466BB723B1726CFDFC37A8C7A4C0E83318BE09A3E9E81 +F91593D7878F1004325A037BD738AD2D1787619C505F189F1E47963AC9FA014E3DAD1695F3CB6A +C3883D6BA698ACE32D029C71D55A40AA958291800A07DDFB04191694C30058F09D3A64F7652FD6 +F5497697DFDB677B5CAD6D34DBA31534BC8058D71F5A8B297A47052384461CF28EF326F659914F +4E04CEB308D90FA13F409CA3A4FCFF727F9D92A1223D8860501B5362F0474F953C47B6F2DD7CE5 +C10108838A213CEFCF6CD63165FFA46F92D4831801D556B8F4FE113720A918FED5C8E50E84438D +76E7FCFFDDFA8E9AA6AEC34A5F3FB8D17636DEDFC48CB06AA46A876AC503138C4FA0B4052196DD +189F47E09514A5D16C12C6EEA9BA45CE6CD72832A19B8E5EB4088EF056CF25D797EAAD1392B6EA +13235DEA891EC9FB3AB47DE7AF6D0270D0737BB7D76683EEF6CF3BA58686560316C56F9A4694ED +DF3E901D31F241DE82BCE51A9405B0E8580AF11238809A6B87DD812C94D969615B31FB16937467 +944A9E0EABE58ED9B810B42820FCB1AFFC5E2F21D0088C3EB841B611D9E5AEA30082A6B3C99485 +681C2DE0036A4BE0A57F37A04CF5835F3376ADF1DBD07FE11B51BFF276C0D676A5C7F605E25569 +28EFCA6E171C425B46DD57285A0968C87EF5D399F1676EEA60527718DEF9BBF4DEEBB3BDE10D65 +D10F578BBB89960B7102F623A8B0F86B264BB705978BA60CB925AE448DF0C62536F701E2520A90 +EB393C19CC7171DFE82621027C2D7E0226E79C85B097D837D9757B39EFC67A5AD5B97CC6BAD5D6 +64EC7A2BDE1FCF77D63A987E197AE7A08EB83FBCF789613BB1DEE85F64C25314DD675CB177A9F2 +2DE775D46CFE173604E5DE45C1CD9E707B80219E6F2ED25D7B72F15B62BEE6653D64954D7FA4FB +EA9C22C42D3C7094DFAE7DCD16493A9AAB7BE2971A90459D4DAD156BDD341B87E3A61B9E180D35 +9C352D151CBE52E66BC07D5167962549254F8E290AFEF09EC0295FE1F0846FCDEC71CD3E463B3B +088C17847B4FB888EB905E2EC412E869C3BDA0410050A54E606484F54158C2C1D994A7D42FF041 +FED4947240F84CE187D62BFE83DC38371F675BFDAC38AA1F98D0AFD4EE19D0F1926B6AFFB07FF0 +58B04D3D2080A42542F45D859687FF0F75F369B98B07654861AC44AE17B0264B0DBC8462EA0245 +A63911F97256B25AB0489E57C007AF37A6D12D8AB368052132AEEF3CB26421DDF31DB4F64EC34F +172370D0250E01CA62276289031AA4015C43B5588831F49380525F787B1D1A78EDDD60E2216714 +8FA77CB28F8FD3E13AA6F5F7D01A2A23F7FCBF11DDA8BE00D9F847FBC6C4CB56193CD6AFFA8C26 +DF6A1B63407538F17F0827B13388CADF58729C0517CC7EE877E8379BDEFEE821BE71634D3888E3 +B9CA08E42BD1F5271CE2423B2B152E09418460ED47779A4569D7D81B70B8CC364240DD8A19C963 +87ABAC01CAFFC325A4B1AF292DBA2381A11BF39FA0775E78E1E8AF25DC80A04B42632E9F3D6A98 +A161455BF543992222F7AFCADDACF5B964C6F8B6006FA30AE7F2CB7CB820ED0A0E2207E08BC3AC +6F12E30446D5A75277076462C73BBA3DD3A0541334F8B7E87C3A7595D468E8F2E3F6C41321E39A +9D91986EE489EA0230CA755BA8F34ED4ED4482BE3EEDB5C59C22942DAF22C49427A7EC594FA8F2 +0DB1633530598F8119E07BB219703CAB72CF0A210A1DAAC8D374A5180E405E01804D4458EC7A32 +61955438FD500D008E9208F0B7DC8AD627AB76A4C3FEC1AE5949F0CC75B6770BBD76E1EE1C2017 +565AAC20FEB084F5F8BD8517DE1B0220CEBDDDF57E25B380FF1264A0A9EF8A9C01842FA6D589A4 +1E1F2DCF75180F2988B6335690E8FBC1A308400316D172341BF50B410BF155B31BDBAB18D8A450 +C8B56EC06572752B06933C2EB92B02D787F3200AD24DB8B1E6D4CF1C1B672BE98BEB777E921AEC +8795D9E13EC40A7E15D5EB3DC5DC0DFF53295E6DD1D80F7F037784F6E411E971CB40C68E77F0A7 +285EC54ACFB7062E7F39E9890ED10C3AA1DA3C87927B61EBC413ABA593237C591A8AFED9256060 +2AF39E294D4643E71AC7FC6DD9C7F4DB2E4D04361FFC3FC3F0E8276AFAA1115C56AF28D1D11B43 +5416315B85DB9DFAD53B450DA44C1DDDD179FBE3A6E13B98C65E0F4A14D9927F83EAF0A6D0A672 +EC919A37422CFFF8555CB3477E5D475B34A7C09D53A9CBE05F40B49190E2E840BD58F0EC4BFEED +EA08CBCAAD6E82CCE7A7B793DC5A1E6BADE6C38891B994A1468405512681AECD35676561547688 +1B8A063DFC7820E20030F6086C0DF68BE09F58D8983BB780AFCFBA6A2B4FE543458AB263BB6D7C +73A9447AC2EC9561D8CF8830355B9363A95A43555F1BAB041107BEA40D044265589F1E920C670D +4E10AB9FC6EE0838F005B198BB51A34147EC725DFFF5EEB4A6E5EBE6B035D4425DEC6AAB22B351 +EB0A72BC1FDBAF8F33EABD93140138EBE4CBC88412B2AB0CB807B04BE07F8C9A166428180A5C93 +AA3E7E331143632E7DB83B9E7DFBC1B3D2023BFDFD4F1DAFC37112C71932496F0C8C39F7B3CB43 +8C404B0DC4A476D4EF77F5D528120B0D03D9BCFF9CB0C5BA8FA3DB349ADE9753C7E5DF834BB9BC +62B51410BF489E1D5901CFD10405A303874C7A5B03969C1FBC037B542338BFFAEDA890625884AF +DAC464DC2A5D8CC2E2AEB9B74D5F74DB660D0A800777F0E0E8D336C44EE2EC6F3068B0AFE7F42E +3C1F33E09CA8BA45486A40E52EF427E9F53C6AC225FBB8069370723D5C3D8B5C2930A45BA54EC1 +08DFB95776173970A8C9EBC3B97EBA64710CC35ADBE3A9FDB934FD6F2EB581AE531A0279777929 +41FAECCD7EC1F6469479B44901243997578DF734741855F0BD5F99AD167479D2B6DB2FABFC1ACB +59EBFB72C38A7DD4F77750365B5C6CBADC012464CD197FE86B8D8F5E8E82360F20624CCFCBE502 +4EB6676A96D3AAC042E306C7B2F21C961D51F865184D364722DBECCDB71FE2713AD148B5482FF8 +34436FD12EAAA96293296967A3D7E5A66D23DC02AC8CC09D635BA68C6EFFA8DFBD8E49F0A6601F +387E4CDF1C6FEEB306E5ABF9C0CC9D55D46BD005A773AB0988B9A73E65D6FF6970073DF787625E +9F6CEDA3D2F57D6D6D44AFAB2B884FF744A55047FB07B4B31B779D3173EE1F7B332327890419D2 +3CED1345F0EC27EA837EB1112EE50F06767D4BBCCB635436BA6BCD326DF144AA51DEEB883F1092 +EDFC0E2220E28CE1D92E509E02662D1FC18856A4F624E98B76C0F744EBA1F6E47B9046CCD5C5B9 +9EA7AB1919F32DCB25ECAD8C394F12E9E8EA70D930C5C4E2DEF5EE34369775C443B3574D85B4A7 +0FDD65989247541222BC1CCF0B9736A0D933AEF48E6610DED659FA4091DF8A08972C028D2D96ED +7880958E36BB41F290CCA6CDD855DDFC26D2B3A04D1B72CBA88B30A60777100838C915A4E15689 +1F99D56E4A4EE507A72806AF7D3178997F057F553B33A782B1A262C7A2A5F8E4DE7FA5B9E262CD +A77FE8DF952E0AAF2EF8D5F1FFAA2E57479507C90B52B98FC812803A43829EEBB40F41D8A7A4D7 +4C93D4A518B53C0C5FF436E43DFB22249ECF3C61DF10B24EBC0A88980F5A2BF78B11E25D1D08FD +1D74BDE7B0DF5D8C66089A9ECAAAE72972E5AD2175100C8B4F39B1F3A767EE8DB2E902B9DE3D74 +5B79DA70BDED79EF3A1B88FD2C9810EC112147351DA7609DE1A27C1E79F99E122840A5F336B3DF +104983BE8B2CA30D32EEC4CA63FA897E7E9BFAA8D926C9D577635AF9BA31CC867DED101FA477D0 +E953EC51CA0D60FB897A3002419E4B8DB3B0186D24698E13C4E6D82DB8CFCCB984F233D873299E +DD079A4758CD29430DF20C47194AD9BE7B3419EA095B34E095450B016B82A58BA971B98C8B7484 +21CA4A43AFE9F360FBB66A9AF81E4641CC29A4C0BE0D20344B0F94E96F526AEA7FE3839005476C +868F84910D35C938AEB7A893BE35537136DE7B344943D00FA82DA3E0C863F4C956D8235E35C623 +408E7E560F62E8C8DC13DB73257B690034DDF53FBC75D085EE5608D7CDFA6B22A442D4979F786B +837D665AAC89EDC5C7DC03AA20A30031C246BBDDA0A2101929E26087FDC1BAC2B6E9C6974595B0 +F1F92003493620F29A700D195EA8305FE3BF13A7F20D3ADFB357B414FDDC2F2542F0DFEE3E151B +D0C8FAD40BF56CD0BF62D2A0D7691C5C1C70B1B86D09B6945DB0F59BC7D556BB7B9B964AC71445 +C7459AAFACB08A7A8651E634994DC9E4BB912060481D3C872D2374A94C2FC24476B5372493DBFC +94C4BB51AEBE2E3661BF8C2FFB605B6CC253BD10484BC389517ED25D306C0507732E76FB854C06 +8975AB80D98C6857BFE8D79A3ED1D9EE1F293F71420418B832C0496868E3E52657BFD7D6BA0BB0 +04C19F0B83A223E575FAEBCB48376DA541820BC7E65E8C13EC7458C70986F91748A18326C9C2AC +1B0CD38A6D2FA1CDFEE18351A3A789410AE84D714E925058A2D15CB1EFE5B73065B3AD67C5F7B3 +6D1DEC8FBB488489DF4A4BD087D6AA5B1FC8C45DFE773E129BFE92F1BB8A6F0D7E4735DE1C2CE8 +EABAFEBC8BEF543CB27CA4023E750A95BAD1E296096715786A014075F51E65AB7A0C58A55C8425 +0DE405E7C3AFAF264D544309B47960F2CE9C90CCC0F8ADBE5722D564FEFD1B8A06942ABB77A855 +D7E4C8787AC0E8A0169EF14B5145F52ED0A197F773109EA5273BD84EC23AFB87ECD514868490DD +B2052576783DCD1C31B1C99D4BF1B1A6E6C1A7F4CEA6F24D57F0E07148831F66E757562F4D49FF +D000C05853CB6AD92AD01639D54F31D4A8482BBEDE41F317770A88F11BCB518889A231908EB5EB +D21FA5CFB07C7694ED05623DC571F6F9F819FEF4502B64E21D884089A9693A281378240FDB360F +5FE9F505DF6C27EE5FBD21D172180DA643850D58CA50E40E3DEA1F31A06537A51460AF653DAFF5 +5600FCFA3339DE01E34BABED3FF2927A279F1273E8FF5031663C0CE3D2149DD6DBFC64EC8E7F68 +95F3945688AFBFBC3570A4D7807581605BA2E3A448E05A3F4F2F1B538136B7F71E982F88CFECBF +9EDAE3618776B803752389C78833BC0BE5074A929D12EFE508DB34D34DAA9C070D11B7F9BF11CB +59E5E48C0AE36F86659E01088923D756587814740162940B1AEFCC6B9ACA82041012AD198C78E4 +B9C339BCED9F35685B9001E00B87F9DC4008907F261E4FDC3357AEDABB844A28EF8CB6C26DC6D1 +91CC6FA88A37C89739BF42C0F8FE0D14F839C2E1C313B949E730D8333608620E23ECD274F6D764 +4C3EBC959947F69599719F3817C776208AE6388B5265CE8EA089B37BC474073DBABAC0793E1467 +F12BAF256F7A12B7B68FC65BC517028D5B751945C440ED42AADBC30C57B3C88D19BFBCEBD1BA2B +17F2A7CA38C0E53A293818FAB0F09B6595883956C84B184976467483B450270CB80B1DE5916510 +5E3795FD44A29501AFBE5729581A55BCB57E3CE18773DEAC97C14EE0F2D6751B26B0B0A3175848 +B292C6FB8E980FD8E09AD68ACE92B6FFBB12EAF3027A0A9D13B81C6D6C24B2F9E0EDCEEC64927A +A27529C0F0A9F89D8F5815BDCE9D2D0F90D5545A3BDBB57051DFCD280BE854F8177BC593BB3853 +D89BF800963FEB2688E635F2E18926A39138B63B888CAC4F0BA678369DF7505CF03A023825DA3A +B872DD5853865661DECAD279E564F73AFED77717C47E80F870D7B7777D0D8D83EA8CB778B4CED3 +C822D84E14E7B7B17006435770A04D42FA8E13A2DD626B801285C3D0B206BBE874ECCE664CC45B +C14EC261BD59E1596B170DF80CC75ADD13DC704D47006F947BF1D7E6E15775E36700C4F049D5E0 +38E48DF24A12945C3E336877571E2380404DB61ADD387849049C65CD2AD033AD52543045AEA451 +49617158C3255CD1616B6315E920EEE26100167C48A6316D1291C8F2229F1605332F01C38696DF +5BE5E141BD4A9246B794B6E9981B8EC73FFBB2573AAE80D910C1114B7CE41098D8BA6B9873F902 +1C41B08B019189A2467BF1223ACB793B206E17135F34FC23C1A8824A4B4B9B987E653380E057F6 +1FA55225FA688F237D469682E0F85B0FBDB4C6C282F217859D4BB48C2CAFBCD4C56D6F371695D3 +1AAF603634B5B68BC6B1F77607435583EDFE6193D1790FC2A6E53F205351A51AF15A085904A963 +463168A85E08D7B33D7D24DB3113CB0337036D8E456019ADF5FD5FE11325D4DA86DC702A9072B6 +4E26AD9F9B89A12A10D12EC572F7D6980A9D66A7FC364A4D7E1FFD846133A6FFC45FB8A6C15042 +EF49B5BC240E72DCD1F7E973E26D50E9A7F8610E12CCC611DED392D47A99332619E906E2D39E1A +460AC65564648CBCCC303C9F0AC5D7B9B9D5C0B23A0A055B14959CF31EA620A9B050AEB93F8500 +1EBC0BFCB054A44A40AC2307D2BCA227B2C0D2FAC3C7C500437076AEFCEA5CA72F77BBFAF93E43 +F6E1E5A733632F2F245DF41E597565FCDA81FD8AD51D0A72577AE9B81369F18B8934C436103B64 +364C4E293FFC8405039AFAE6F417AC0FF7AA04F82082C96973CADE8A59282F0247C17F8269E720 +7135FD475998CC674B789B0D8F2DA5AEBEF90862B7D0DA06DD33DCC74CFE2770D8FE544CAA6BB9 +56F8670010B5393113BE9A4035C60BDC8238157A29802A88F104C1B26255623AF99650D241B1D7 +C3050A349C47B8BFE5C5B298819A825EB32A1B252C6E589A15BE8F4EA1D1BF719424E7ECC2BE8A +353B032C7F5BF63D569BD47C9AC5B1FC0B7F24C5F0DD80BD244A76D1438B4C501175CEED850292 +7DD33E7D219E5592D3BD2A150B0EE5AD17BA62596355BAB1AB88A78A4A15B08767DF87737B52C0 +4E88FC077020AD87EE901E61E4EFBFBE4BA89E1AF145C5C6258354874B4F67021642059B6548BB +CEC3E7148C145F5681224A3802FC375293BCC343F9FD61154980BFD07D402F0D46F8397F05BCDE +4AC436CEB310A252D01A212D4680D1D97BD6E64474AF30A39C9B5FAEB7D6F0993C6F9AB1F28A7C +6CCC2209DD4B1E5D45E22F94A7FD7AC6D23C5FC0325C617EF8486B8C63D7E49D395BE084D8D9F5 +E663387A540BA36B7839290D3586CD735E49F0ADD33C589C022132D94848F6EF650097C686CFE7 +22A0146C4A486D893249D28A005027C3D6EA2D7F4A013B14BB82402E8E09A240FAC889FB6D9FE7 +AFA82C8ABF855E1753A9F65F613A0C13919796E56ADF179A2E998169D3B75564F28C9B875084C1 +983BDB9719B2162C7310E766214FA5BDA0005C45566AE21E49F76873E864E0FD796D9920F78B54 +B1E555CB5FA0F8675BEDB813714884E732D4807AA80D5B6DBDAFB58B003DD6CAEC99B17FEC5040 +B79839F361DDEC1055615537258BAB223F6A9ACDB6323B740D14BBB5E5EFF8C59B54EF573AC6F5 +8E8836B136CF8A28246E92FF3EAB628245E75F2C595EB7DAC9AB86E678D3448EC2C0CD25F3BFF6 +6F7AB2CF8E634AB246CF25209B28CDCC282A15681805439156EBCD1144CE570410C580FB6E4B2A +D9C606D9199CA6A8773EB56C33CDD2EA66862BAC7EFA1D0882269831ADC8B3E27A0E681AE14012 +A7FEF8F190E1F146591DB092BE98A366F186EF6E5452E9B0A1C961FD302821F044C823B8757C8C +979675C913AF9801CA03A15E15EC6BFCE55A73C25E2AA990CA0143C720BC96F4C1BD070D4149EF +241F7ACA6AAE320FED7A3D4F77CA863D47200C2D055AB7F97F97CB4C4DC0F032E557EF5C20F409 +D410F46B8CB93F0DB41DD5A57D43725319AB13EE30CFA43B69A38B0390438689CCAC15162584C7 +88D4C61B4CA583A626A68DAD856703E86BA14C0349004096A23244194F6FD873D7FE5BC0EC4A51 +44EB1DCDC6DB117673794C5E89CEE46E50AF162F51AD2AFC04A724C479CEF106DC59E210DA142B +20A9EEC0F1A181DB86BBBAAF2B9D4CF694D3FE9A345120AFD2BCC65C642ECF6AD6CADC1F795CEE +F0AED6013DFEDDABB85358DBB65C675CDA6B280EBC370695F3D8F6277EEB67186923F06E48DBD9 +3D185E2EB9FD1357AB0BAC061C2AA718F4A21C31B95AE4A4EFC26D5FD7D276EB5CF045533337D3 +966C76DAF57314DC439B9BC6B386F69D31C6C2394AF71682F2C2EB07F3588D626CD508507ADE65 +BD9CD50915E7753E37AD60DE011ED0E61C130E1B36A94EDDB3A402F2BFB952B384E3BC3113461D +520075D46D4F4119D19BEDB3EFDDC52173D8F45F5F9A5624664976566D72A84DEE2A71A60FE256 +24AE0FF46739E76AD0FA035336E714E2D0CE788A7D8192C0BF374B62960A56ACC96A4F06FA2491 +BD852F755AEDE9BB2EE693C82AB9A7DB4E8F9E5209837DC95B0F47D78B7C61E3EFB83F78ADEBA2 +DC7039C4FF8B5ADB3271616F16967C445DCAE11022329646E4962AFE75C477958589BDEAF71783 +31EC3869D21C1EF901DC1013BBFDC8DD4AB44135A3A7D13684C00846AE00B65984DCD7724E2785 +960D02A09B6AA23E10E4D1E76E508DB0E74C1003C13CCBB03F7C1EA452F1D5B8499275B74E3912 +2F00A02B5414D28DAFF0C19BC09FA74BBAA4262F2B0BCFCF34E1EAF031E3E6A6381E1EED2FC923 +DD5BACD3B9F9142483DDEA8F04AB7889F46D9DFCDA291048E87E930749A4A24E61B80682B09390 +5E8D8F6E12AA7F6FD70A990B0A82E35F54D48C507F2B1052600C378152C76BBDC81E6212F82FC8 +10EFFF27F232BE6A140EC6D842C3D7CB200054430111582CD8FE4F5EAEA12205D73E7DE6594C86 +8DA213DC72CC208A673911CFC3435D83077C450CFF17B584361528518421184358C4DC2E86DFFC +4C0491FB2DE4CA9B769EA5F9A39CCD4DA546CCEA73B5F14A3E946F7C68044945620F5EC1DE9D37 +26F8FD070931FABC905C758E6041D8942194A56F8E6AFF18853F2B3BAD2AA21E70405A27F5D1DC +8500F63650BE2F7645F5AB8804359E8DA93AA9A9EEB62AA9C38EC50142E2B9B25E3455E3547040 +5D6C5E25905D4F1DD4B43D956D64A4104095D3A9BAC3C37F3798DE495AF2B5DD6BE541AB86C0B4 +9C238941ED2C2F2B18C840D7F6282B49EDAA9FC81126837655F591AA5AD0C776E2CEA9692DB705 +7FF4781482EF31074CADAE7285DB86C50808AC24E09D3374B6B99673F721BBCC7FA480CD1380DC +FAAA75F527967AC2167C5DE9827593DCE4BF6197EA39C5FA75BBF3B60F52F7B2D62CBA41214D18 +E9ABFCE2A510767B699A700F092EE033EDCC58C98495490984E0F5783C8D6CDB26BD66E2F1C0B1 +E3C3B21924BBE8E6364B45D05DC521AD3345F896CAA1502D2D65A513B4F66565014BE661AA132C +11939F76A908FC311B36F517F7C80A7ABCDD0F884675526839C2BA246605EFE2DAFB0A450D1455 +FA91F22E6B16F7D6D1799AAC3D7195ECA9244C1BB6E3879149E4FA58B728376680146434B76914 +59DCEC8F760F83774DCB7B7E6C97205A654B0D16284E6B68480DCBBE93700C0D7BC830263BF700 +BA318AC7F5DD9E04F929137C69CEA9BC276ECDC3296E7B239E254D84B08F17AFCEAD10F7030109 +75D4A692C1A3D5D70B25A206D8E96701D6A472CD64014EF6B22D407FBEBBE008E82A7B014E6E67 +88F5B427E1BEF50429D4760F106406156BC89596B140DB0958F6C1713497609E43FFC8568EC39C +181182F83618BC797025986E263E3235FDE30D9EA4FE6B9F6F9ABF6B28F8E732FC49CAD330E222 +9E833CC12A155A35D739E910919A6440E579F75476B629203A09978C6F4BFF62676D9DE69E87D4 +CD90E2595A70CAB128732256692D715A1E690D27413D3AB13A04EBEDF0E6EAF795E12ECCA8799D +F13CCD10DFD469EA15A4BF3BD0DAA9E28A36D694EC267D802F3ACF0148A34A0131630926D7EF9A +003E206A602A146EA34E8ACB124F2155F27E34955F2877B08EAFEBF385678C883B2B6FFBDDAAD6 +6DCB4071600A06FDFFF5BE8E112843E985DEE3BF5D808838A9DFCEDCBAC1109DDCC901E2777DF0 +0256BAA389EB3BC360FF9AE8FF2DE17E5ECE7A9566F3CD2F3C124080E75DBC7BE4EBBE1E492B12 +86CCFF05F82D1E39ECB021A6A724B661BD48E0F86B6D434C24B2BF05227F5915788CB77B02DB45 +B95A377472F968B4FEF390D3F91C5A520C643E9E2BE6A60DB18C8F5F58D8DA1CB4AB9AE012C65C +E1C81E0C1CAB75EB17F7EDAFEB2C0305CABD6FAB27CEA2656E2325A0DD614BEE7FE373EDAB6B81 +1520626022A586E7FAF63D9B7F1F2F3CB255DCAEF9E583C2870132E46A239718405CEA6D6B84B4 +137AEAAB977113A816798237EE875421F1EC5FAC81D133AC814C0B6F70D20908EBEAE5553D1A47 +38421946F0CE5FCEDD5A95549B8F44849D8E93D818A1F9359DD051E8A73B0570F631D47D859423 +37130ACC226ABE905766AD923A3B40F7925B62DE39625E3C91EEA577F4843E2C961D19A55621A8 +02BD972A237A115A3EF16E7B0AF2C8D40789A7B29468DEE66F6053E2A5D2DE94CB5870310D0058 +19B30C304CF615A8A6C55B52069F5B62651BE4DF451F99429E9D3E30F4B5F61AFD34DA37F266BA +6521A1BE6321DD5BCB85FBDB7A78659B521142E719F4A516AB8F4F257BE9CF572CCA5D8A6482F6 +D069907F48AAB806F22B5D733498E32094A657D238E714E945C9C7AE724A9ACCF94AD97C6645E2 +39708F02E567BB555210AC8D1316A7700DDDDC01DE626CF6A30C821B4FBB6599C3378BE06B49F5 +AA6627BF909ED5DB427B414A39E7D37C6548172272C67D4CC10175A4FF1B66BDE95F8159250AD6 +BF6427DF95CE3436562B5A418736B3B6EE977F0C48B50BD8C0144F9A391714D11859B0189A8BDE +A5A448949AD358F435AA122BF2D6D83F8DA37B2396B7945E6D02E87D299225587C27B40BD92E3C +7B9F0F511542D9E061C355BF1F51EB9180EFFD1D273811C83C11B60B96D77AAE3E2E2E7AC791EE +67EC62ED04EF6563D0CD146D0A2DDF96578B17ACF6EE5A6A14E71B72BB2729F1248BBD196FAB1D +1E09FC2A6E0002C64280697B85988B17467A1AC77D5EB533BDC1FD771291969AC7DC8D38A2CCAB +F61C3DD11F38CFC8FDECE2523A572D6157AA50F513EA69C5F40257D73D902896B2B351D8F0A04B +E10A99698786FD5F53378DDBD19FF672451D7D1BCCA22B54DCE17E7CCABD0681C5192FC3461EAD +B34031A3BC4CE406CD63AEFB51FDBF6C19A8E4E7BA8747A615321348711A6A29DBAE606B114B75 +3C032808438DD2EB1ECF4A5C8C499CD20C70518884F79E7E1AE1FFF0EDBF7FE58FCC7694D6A931 +92015816925D95063214323B96E79AEA836679AEBABF4141561192B396F9ADFE31A4E2E8527094 +3874A28459B7FC4B3888EDB2423E0A5E9E97878D8EA81BDD5BA832BEA8BE63799BD5D5DD6A875D +F06905B488E3E6751611D8F963FE1E69B14A9BCBE6C8B4B5EC7966BDD925D13C4E73E4FC426F47 +4A2DEDA3919428141D68F9AB63DC888007159657FA0D7037DE0F24C1E03A71EBBB7F6C0FC7828A +4695DCEAC851181BCAF8641FCEDD34FA4254A08E2C22A6D425BE403A05DB3DDECBBA1F9105E0EE +276D009188F544920C0F8CB5C458C0CE7BD08CA09B99BE958E49ECFD249726F8E951525C5C164A +C4F37FDA79F710D92264A76DAFE61F5446665100EEF92F71B7EFC5BA6AF5A744BD0EEDCAD8F7F0 +8DD26C1F8C1DFAAC2D821E500A7596ACEF66388B72C5EF94762DABC9F5F811B8EB3D28023655C4 +987AADC6637665BC840F41F3A2EB3A3947E06B674BA9A8BF01AC978877040DBCFADA7169EF2558 +A4A4A59B4138B5895690EAA78F00CB7DBDDAB5FDEB3C5DD17A754CDC7015B6B990D02278053851 +1D30CE44CA7FACD91F4D6470B6AB3D8126AFE8ACD9991F2C06DA173FA3381AEBF29F6F0D1156C4 +7C372B8F4E63A3028A9C811F2D9A2E4CE07E1449FEBEB2A9B5ED6FB8D2D5E9823E03AF8367C902 +603CF2FB68E369F6FC90A016AED74C3EFB465F1F82CCE4BD0C21F31DCAA866F4B547B0CD963E8F +F466BA8B6CD71F164734C303938959EE075286C944A18E388DFFBE9B1CC6018DCBE1A462A2CB9D +20C51D7ECA06C99C8895B743DCF3CDF7CF717EAC17EDFDA058D2A24E0C880D1FBEB5BD402FD20B +A2E3407D3B35B720CB93649D0EE58D0D2FFCB92BD7FFD091B338946FDBA214BF6C0F3131175975 +F2430EC0A9D0DC46A47CCA539761FA4DDC7CDC02926E981153CD336B60FDB97B2157C9A40C6270 +601542901ABBCF9C3F42D55BD7F3BFC7F0FF067EA900AA180123B7439DBACA7008BCBCB113EC83 +9FB7483D056C703044DD06806A2E9E74759D519BF721D9E61BCE26F004299EC8B1C2D454DFAD0B +D1417AD3F4131135F0CD44CC98FA838BBC934292FB2D60A34D60056C1480183BD47782E5533FAD +E0415D7EB4E2A15984884416A693D65C9875DAA00F908A75CDAB5DC4EA43F49AAA43F3E952B05E +8311E068219B6AEBB83A79B111BCFE6BBA3CCDD08CBB9354C51B72FB14AA0AA89F8B2F4EE8D1A5 +23E0AFD2F3FCD0080EB55EE94C04F3D54FE572C85B57C5ACFF33CA9FEEEAB04A6895F76F037261 +DE231BF1A7EBBE732389B561698A8F9A0258FF5E1FD05BBC00C80D1F17C414B5A3C7806E3A11EF +B812BD5417ABBB8C091325A442955CB313949E7CB83C75A08E697F775E8BCA80BB9A586276F4E3 +7D10CF69D5CDE8FC2D6E029124D6EB3AF303D6A3A9B84456C169F0278A66A0B1EB3BB941183F1F +3C84AC0D392B157BD0E2BB7B0DDCEC62425DA1003AC88CBE161D55FD833036DC9DD1465D33557E +806C24208002506B9D3CDB6322CF4758C44B6A09847BFF64615E4994B5F7EAD33380578261DCE7 +EF36F50AEB90550B07901077C86FF189796FB95942882A3E7CF3856F96D189EBEB01ABC06483A7 +B3E806D8A98AFB83C5A250CC16E26BFF144BFC735CC4E6599541F8FD2A345819C52EAE68E96443 +C0FEC79B70698FDA627965B18D2B4A1955E3C813D74AE7614C4648C232C3C895748F8C344E54D2 +1222078EBE9FC21D5428A377C9DC232FDD74F9D08C9251AD12F38F13C02120405163D4138148F6 +DB618FB6745EFFB77BCABE30041FA7263F99B6423BC20D5B19A7C22F163AB2EAD0C7B54C8708C1 +28060A5A1D8BA6C61F740AEA205F36EA6C43ED3EE5064CF0DF842C3C4CB931351D05C7208A845C +D6AB0794BAC6E54C72765141FB6445C62D9DC9A002D20ED72A844FDE549DF9E41B88D0B36F65CD +C417942177F1F8BF3A035866F17E518DF9604EB199EA957C7478FC9A973544A33D563B0A59C865 +156A545599B515FE3FD19F9843F05C255A670B5EFBEFD1F17287792FE88C1C8A7C90F706D1DDB8 +F3A27935A32BE2F3743BD546929C4171F6CA5CF01D711C5003CA3204B6FD6E622EF01D8E758C7E +59E29E9B7167347CC6CE36E294611EEDEBF1DB6DA563DADF34E861E20E2642D2FF5F6B5CDF5022 +3E0710A1894EC3A8707D7FB4BF3F3FC1A9A481FBA7B2EB2819588D715E7B9F6CD524E560212BC8 +E768BD1ACD03F1E6832BE38F76D6B08714929875B8B0D6483C9974151C5A830620D02CCB6F5C9D +7C4ACE64753A5BFEA7159EC618473E58357DABCB50B0D1714AF78BD14B857EBC39F40097E303CD +11DA024D037B018FB8E3817D547A1C7A77D5818A5B2B130240C43B28A38DFE5EA60B7ED771F87F +44C7B4FE8F0C2F54E01C0C79433ADCD020B0D25715F0DFEE6F32C01A908ABD5C64D57405ADFFB4 +8DC4018510A643684BD590DFB28EF6F2458688041311DBF7E4A4DCFCF5B757E72C2DD41D4F3DF0 +39E2A6EED7E3F9F9427965DE6BFC5E498ED8B6E840D2F62DB81FF85FF71933C411F870CAC0593C +E1311E654305A59F90AAC1CE89AB9820A8E30874C9185F1F92C0646FD4759A0D00B30C601BD316 +2346D82696A58208CD0C861C841F74F7166BBD572B99091F2CCE87476C0C9AD832A6A075023778 +A9E5A19E31C993DF55A961B17064A7B8933C4805F1F78BDF9838A390DC4A10DFF5BBBBA790D941 +A81A6C62DA56B327F5D0AD5F5A66E77FDDD8F464BAD16C7DB385EF3DBB9D415410E94E3BA2566D +E8BCA7AA6279EE5ABA43977A373C1066DD2832052FF3505B5F8492E0C65C7BB022558355F66BB6 +147DD3FF8EA06E83F74F7FD4C44B9C5D4DCEA2B6C056C02BDBD0B2722F87307583D34BA21997A5 +4E9485F62F8389A94AC90BC7921B86553C02AE298E19743CFF5760CFA2FE0FF8A31356BB44AE18 +ADF209F29524D224F79BAD0EB84E852E14EB8B3402B4D8E864F4CCE1EE790C90242A1B5C0AD4B1 +9E263124EEF6A697C36978B1BE795101FB08F5977362B31EAEC1E1716DD00149DA6816B46C9DB0 +64300B5673EEC256D8F846F41CD2BA984D95033213F65BD6D1EE0EB1931A5A208E3C1BD854BF1A +AD5946939F031B6F881B90216CF17929B8DE04F699ADC5518010272E7E1D840C73B5A070A8BC16 +1F09B5C9B6C057ADC86C042CF3D99DF1C5E9167EF751B8AD63682275324D800948749836714B74 +22067E9CF2AD5D7576BD72F57FBDBEE31F9A38E34DC90B58AE81EC99A51AF2B15B61EA469BD7ED +780CB0A58D7713F87B48160BB82A58553B611CAC413EA7FB9D6F54521296A1326D8047BB19F5E7 +96D87D440721375C998CEB76522DEEBFFC640A9F01C42062754F458B0C975835323EF17060BDD6 +656113ADC86484B8F3336FDC4F0D343D4AB2A013872CA910BD7D5A1A61A352DD82E6646248A10E +C93A03FC221B9992F609EDA4F0050490D255A57719FFBB27BEFA47A6C9F68AB35A2F8DC41C8E6A +1CA24C6E3C3BB179C04D94A08A1B1436A12E1BAD558780D3C6888D525706F9C968388F600EF9EC +A40734FC5CDCC756964DC4BA0273F17D856593C5DF348D696E9AFBC53CD60F9555954B1B769BD4 +E3054AC8C456843F8F7A7C4C9C8F89B9BEDFA8B7DF801B791B8829A9F9ED18FDE7BB82B1C445C6 +FD597CFC5CAC30BC2E139F47E18C515B4DFAF272BA15A252EA8146170FAB588915C13948426BC4 +54E837ECDD57581C3C80E579F33A2E6C73178FBF34EBC2489A3C5997BE6279221C9C6E5D2E93AA +A01EB849D311C7B39604763241668B0B68BF8A27CAC33A4AF3B8715434EAE5E206727E07C55F32 +DBD84FD085571471DD59B6D32AB84B23707B9F51FD097A3B134BD637240B74FC4A94958DFF5073 +DCC2DF7B4B45523BE7697337DF743A5A0F92B119330CF7F132D047CF994866575084CBCE197102 +E1E3A849B3EB6B4F8BE064A9143B011EFC9BDFFEC2921591D67A50BA1A9687AC94D1DA8DA57135 +F5B82476B7CF7C8F09DEABF7CB95FA37651F654C3657159851A537D00377F24F5675996B629779 +C513B09B6A725105A05877F50446DF4C82A5AB2325D3F4662C056D5D3A8FED69C635B28EE1A163 +332A95903E4C88BFB03136E69490B96596AB6748208F96F5777971CA85068D37E39448C6DD5C67 +1356B50C85F264995CCAECED355FB7C8FB8C7A4A7F64F59F66A6C753A8288DB89B2FE6D9B31DB5 +3F66272FA9BC74FDD5F0237F1750E87E96CBCB8A205FA742FC9865B65515982D892DE27C05806F +6BAE0D4858BB8FDD8DC4840A36D409DADF26BF0351FAE829EF177F4573F0CDCA685CF1762F69D8 +652351FB74D205C2E72FB46E4BEE094CD4E4524E0A36A9333EC80372497916621A0A801F15A1E0 +7CD5CFC3D408C44F8A21BF8417A0A883DAC3083AB958FB4F65904001985B11326E0D01C53A55FE +E0F9FD7E40846722436C46E2A035C84DFA6DFD2F415493D2B2C0A3FF41F07346F90586A6775264 +106AB070742171877C21DF96B3C4C1B8CC8E4176134020F3AEF301586AB8404642145DFDF6B8C9 +196B5996CE59AF790D23BC2BE571DD33B45726485F82F0244065D255D3A8AEA02AE10F38C57F9E +85A0F86D085BCF118E4ADE3F922CB48D7D67068CBE9B3496C1BA6BD6B6F73B5F2C938E15110088 +49EA0E0C72455A48B20EB59AC32AE7CD23D66979FD2D6E061EE4225278C7952FBF1B09B0E4DE7A +283E7BD4D189D30967CE0A1220CD9D480BEBEB741B9A6E6CC4BC8D434EE4624D3BBBDB07972F21 +866C0A237184201E677A5BE6D49AC5E9F799077DA99CD44F22990D3ED9584FFF484B80682B6FE3 +D44D3458862A801E65090EB47BEF296B55CC995E426E9269FDF53CF11983A6FBF947520451B4C7 +AFD10FD68B5C640E863C3735F167EB30C2168B2CAC30C9A5D79972BA9E9F728D9DD2D0ABD35A87 +2EB0F6F24B90B6F92F9EEF82AF076C67C7CE16AB76FE95CB57CB4CEC805D84569B6E99079CCCA3 +5E18872F2E24186567C458DB1EA2234AC8ADEB24523D3174164ECF64AAF5664AF3E4FADB76A6F0 +CA5A0B9A5A06BE0DAA50548085883BE744755AFA5B45290E3A5F1F6985C45166A7AFACF933C991 +0A00FBBF5BD6BA03BCC6892EA29451D8203ED7C566564BC96FF17677F1F7B9C4633C3898B014FC +6A990C4865FB35EA77308AE4F87DED5A321793ED45DEC8F77C37015119CA5865B0C9E902DEAD8A +CD331F4482F89D1BA363D9AA98FD93ACFF8022A83BAEFF1C2F9069B0642CBB03A52EC42935DB72 +CA05632AE273638EF548E55F3B6CB765D602263B5C25DE02F40D49D0D7DB29A68102938BF5CF57 +35D1FAEB67E94796059B22BCEE3DEB3B85C64DD01B50CE80714158C53E316AAFC1D24605061A4B +7EE2A06FD4126F5417DABC0DE8091A4B90D9ACD11752F579B3F25CF6E574755F6E4F32CFA44E85 +8DB0F42F5494CDEA88C953A0FD8B95AA34A0ACFF0105D1EFDB08A23AF23F89E6084FD16C215D5C +7DCEA3BE1C08A851AD16712A3B81B3EE75425C21BA2421BBD9E762CE47053A0B6BC971CA003A4F +33C404F0AD65469607059912E3A2020A96BD14E3649975AEF5FFD509DAAD8C3E7AC5BE57E86A1C +16296E065929AE42B41C5489F0B069EF20962D514ABBD2CA90AC22D7FA0070F78ED965C8ABBCB6 +282322B79E959F02ED621A1CC9FC8204FEAB09269B005F01FBB0AC890F21555F25A57D3D3B4CEC +B8C27533C2FA78EED20EA06020E8095EF196D739E57B79E1373DE37BC6D565A2D79370F5736EF7 +062046C2EFF2CE83F85BB270294D546B6249905F5DC09ADC3A160F137CFD8A508029295C34B5EA +67477122A0684A80F5BE57148B4AE00358BBE9EB10D74A0747E06D47407D1ACAE2D4D8032E7126 +5DFD24AF38FB15AB13F4E6A51F5562139CD786FA4D9B64821DD7E2B51B3613609C507B92810840 +49D842179052439C3EF021C1232E3890DE8E68863751AC10AC82522DA39A5D3C30F2ADC8B91F19 +79F0CF39629FBE995CE39C9A1423FD85DE8A7D29473D96F5C33B82747FBF41F61202A715175019 +6C04F31CBD1265BD42AAF5D6FF06307AABA22A6C4EE71ACA0C2BE158A9B50A3619269C5CE40A2B +C8CDF403AB3B65B4420045080E9A21468739855F7B35C0D555F95482C1F9B0DAC5B13BCFF1FAF0 +0861A52A7BEB050F426B0F43565EFC6D18283DDADB14A463E142DFA62CCC3DECDEB1FDA827D7D8 +33786EF20BDB3CBE85537384987317F6978067FFA50FD76646FBEA62F7843163BE009473E7F850 +8B4A3F215AFF7DC21495EE2A227F535C7AABA9CC0EDDE4A1587BA5979DBD0BE993C91BA9DB834D +25B53D0204D76A1BABF07955BADAA17C30E2A047BC87B8BEB2DC26B3DFD0381A3856CCA6309D6D +056FB0CF302108475A230AB4914D88709224CF20B7EC49C871C0C761EF63F994E9BA0D85FB48AA +6C673B900F2099262C766D231D3D5FD8955327102C3378F49E2886D678929D6D806956AABD2619 +F7376E91EDA7BE7B20CB37FF2E732D26B83B686B4349ED67E93A0E917C63765640FF560A836593 +6F3B05B548BF7035D472C3974DA3CF98D8C956FC83EF673F303A859D8EF5548F10EFDBE892C733 +C569FCE24528C18D31E1D74461B9154603AE178BCCE61E9144EAA4F94BAFC222FE16AE5E699C5C +E9436F0B1617075E4FE8F7036A024A2A54153779DEC42B3A8D3C59802C02EE06430F1498D4B8FD +391576786FD9389D79D0BE8F5412337D7F1877D0511BB3519DC66895099CC67D726398C8E61000 +459C8C51AA24E11BAE94033F7C6B7008CFC6C626A2CF7C615DAA9A99D7910B76C7E0B929115D70 +CDDC5C776DC1E6330DA3E52F0DC2B70E48730B98D60D3CEA9FB217DD6DB6207B8A225BD3307AEB +6280050F676C91D6E91ACC1DBA4F3523B48634FB8EFF2540F1F495F56B285E8C42EF25C565D995 +693A789A9882B924D6620BA1009D139BF29DA188DCC1CCE0AA054205FE89880F84FF187691F6B4 +9AF0C303E8138DE8DFF854C66B74A9EBFFF8EBC0CBB0EA2D4C5091F6E3461CDC2A87DF32CE4FA5 +A745D0E3285E501F8613150B82E273CA683FBF3D16D32A392C75F89C6EFE56ECBCF16D0D20B410 +4A5BC26113E77CD255E7F3B65DC1B7E3BF1E82BFA621ADD277FFE6B814F4FF77EA517FEF5AF9C3 +22A1938B692E3761D60E1A7D8D93A94CEEEEF7301CD7E60B2F0D10FA21374090D50A7C15A1E32A +D27D9E496497CE9E468CFCC762FD816EDCB027499F3C9667F0527338E47149FAE4B6F53D2BD899 +9D09E80F12B5445448BD86ED5B173DE6602B004DB1B548826C999E9B2D256D1E2FCE33DF2447C3 +35C3EDCABC3983E9D7A4335AF5469B2ADD4C94116299DED96B40D6D78A7FB21A237859BBFA408F +4D615A1A1B40E449FA63D31856EDD1FA00F36D2FB93E51BA136C1F0106AEB8C9D45F7C10E8E62E +5BF319C61309ADAF8FC7EEAD6D87380BDF85A07BFA1E15A307886A5F50134C2E939FE3E263B5C6 +0C24643497C1658489AE494B2DB1A12685AB8BC21DD79F2056BDBA938645836C11CA4ADC0A9118 +690A17FA871254299C73925BEF78B3F17C + +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark + Index: xc/fonts/scaled/Type1/lcdxrr.afm diff -u /dev/null xc/fonts/scaled/Type1/lcdxrr.afm:1.1 --- /dev/null Wed Mar 8 16:39:16 2000 +++ xc/fonts/scaled/Type1/lcdxrr.afm Wed Mar 8 16:39:16 2000 @@ -0,0 +1,497 @@ +StartFontMetrics 2.0 +Comment Copyright (c) 2000 Bigelow & Holmes Inc. and Y&Y, Inc. +Comment Patents pending. All Rights Reserved. +Comment Lucidux is a trademark of Bigelow & Holmes Inc. +Comment CreationDate: 2000 Mar 04 11:21:47 +Comment For other Bigelow & Holmes fonts see http://www.YandY.com +Version 000.200 +Notice Copyright (C) 2000 Bigelow & Holmes Inc. and Y&Y, Inc. All rights reserved. +FullName Lucidux Serif +FamilyName LuciduxSerif +Weight Normal +ItalicAngle 0 +IsFixedPitch false +UnderlinePosition -100 +UnderlineThickness 50 +FontName LuciduxSerif +FontBBox -38 -211 944 993 +Comment UniqueID 5096728 +CapHeight 723 +XHeight 530 +Ascender 771 +Descender -193 +EncodingScheme AdobeStandardEncoding +StartCharMetrics 337 +C 32 ; WX 250 ; N space ; B 0 0 0 0 ; +C 33 ; WX 333 ; N exclam ; B 118 0 215 723 ; +C 34 ; WX 408 ; N quotedbl ; B 71 530 337 771 ; +C 35 ; WX 500 ; N numbersign ; B 0 0 500 723 ; +C 36 ; WX 500 ; N dollar ; B 39 -60 455 783 ; +C 37 ; WX 833 ; N percent ; B 59 -18 774 741 ; +C 38 ; WX 778 ; N ampersand ; B 48 -18 752 741 ; +C 40 ; WX 333 ; N parenleft ; B 57 -145 282 771 ; +C 41 ; WX 333 ; N parenright ; B 51 -145 277 771 ; +C 42 ; WX 500 ; N asterisk ; B 58 358 442 723 ; +C 43 ; WX 564 ; N plus ; B 41 48 523 530 ; +C 44 ; WX 250 ; N comma ; B 65 -157 185 120 ; +C 45 ; WX 333 ; N hyphen ; B 40 265 293 325 ; +C 46 ; WX 250 ; N period ; B 65 0 185 120 ; +C 47 ; WX 278 ; N slash ; B -15 -145 293 723 ; +C 48 ; WX 500 ; N zero ; B 27 -18 473 741 ; +C 49 ; WX 500 ; N one ; B 63 0 437 729 ; +C 50 ; WX 500 ; N two ; B 33 0 443 741 ; +C 51 ; WX 500 ; N three ; B 45 -18 444 741 ; +C 52 ; WX 500 ; N four ; B 12 0 476 735 ; +C 53 ; WX 500 ; N five ; B 63 -18 443 723 ; +C 54 ; WX 500 ; N six ; B 24 -18 482 741 ; +C 55 ; WX 500 ; N seven ; B 53 0 486 723 ; +C 56 ; WX 500 ; N eight ; B 20 -18 477 741 ; +C 57 ; WX 500 ; N nine ; B 18 -18 476 741 ; +C 58 ; WX 278 ; N colon ; B 79 0 199 530 ; +C 59 ; WX 278 ; N semicolon ; B 79 -157 199 530 ; +C 60 ; WX 564 ; N less ; B 41 48 523 530 ; +C 61 ; WX 564 ; N equal ; B 41 175 523 404 ; +C 62 ; WX 564 ; N greater ; B 41 48 523 530 ; +C 63 ; WX 444 ; N question ; B 25 0 415 741 ; +C 64 ; WX 921 ; N at ; B 68 -18 853 741 ; +C 65 ; WX 722 ; N A ; B 0 0 722 732 ; +C 66 ; WX 667 ; N B ; B 23 0 608 723 ; +C 67 ; WX 667 ; N C ; B 39 -18 620 741 ; +C 68 ; WX 722 ; N D ; B 20 0 683 725 ; +C 69 ; WX 611 ; N E ; B 21 0 587 723 ; +C 70 ; WX 556 ; N F ; B 21 0 517 723 ; +C 71 ; WX 722 ; N G ; B 41 -18 712 741 ; +C 72 ; WX 722 ; N H ; B 20 0 702 723 ; +C 73 ; WX 333 ; N I ; B 25 0 308 723 ; +C 74 ; WX 389 ; N J ; B 0 -145 374 723 ; +C 75 ; WX 722 ; N K ; B 27 0 714 723 ; +C 76 ; WX 611 ; N L ; B 27 0 587 723 ; +C 77 ; WX 889 ; N M ; B 23 0 865 723 ; +C 78 ; WX 722 ; N N ; B 21 -10 701 723 ; +C 79 ; WX 722 ; N O ; B 39 -18 683 741 ; +C 80 ; WX 556 ; N P ; B 15 0 541 726 ; +C 81 ; WX 722 ; N Q ; B 39 -146 836 741 ; +C 82 ; WX 667 ; N R ; B 15 0 661 726 ; +C 83 ; WX 556 ; N S ; B 58 -18 510 741 ; +C 84 ; WX 611 ; N T ; B 15 0 596 723 ; +C 85 ; WX 722 ; N U ; B 9 -18 711 723 ; +C 86 ; WX 722 ; N V ; B 0 -9 722 723 ; +C 87 ; WX 944 ; N W ; B 0 -9 944 723 ; +C 88 ; WX 722 ; N X ; B 6 0 716 723 ; +C 89 ; WX 722 ; N Y ; B 0 0 722 723 ; +C 90 ; WX 611 ; N Z ; B 45 0 551 723 ; +C 91 ; WX 333 ; N bracketleft ; B 90 -145 288 771 ; +C 92 ; WX 278 ; N backslash ; B -15 -145 293 723 ; +C 93 ; WX 333 ; N bracketright ; B 45 -145 243 771 ; +C 94 ; WX 469 ; N asciicircum ; B 18 289 451 723 ; +C 95 ; WX 500 ; N underscore ; B 48 -60 452 0 ; +C 97 ; WX 444 ; N a ; B 37 -12 442 542 ; +C 98 ; WX 500 ; N b ; B 0 -12 467 771 ; +C 99 ; WX 444 ; N c ; B 33 -12 414 542 ; +C 100 ; WX 500 ; N d ; B 33 -12 500 771 ; +C 101 ; WX 444 ; N e ; B 33 -12 414 542 ; +C 102 ; WX 333 ; N f ; B 18 0 351 783 ; +C 103 ; WX 500 ; N g ; B 26 -205 484 542 ; +C 104 ; WX 500 ; N h ; B 18 0 497 771 ; +C 105 ; WX 278 ; N i ; B 23 0 261 723 ; +C 106 ; WX 278 ; N j ; B -38 -205 224 723 ; +C 107 ; WX 500 ; N k ; B 15 0 500 771 ; +C 108 ; WX 278 ; N l ; B 23 0 261 771 ; +C 109 ; WX 778 ; N m ; B 18 0 773 542 ; +C 110 ; WX 500 ; N n ; B 18 0 497 542 ; +C 111 ; WX 500 ; N o ; B 30 -12 470 542 ; +C 112 ; WX 500 ; N p ; B 0 -193 467 542 ; +C 113 ; WX 500 ; N q ; B 33 -193 500 542 ; +C 114 ; WX 333 ; N r ; B 15 0 327 542 ; +C 115 ; WX 389 ; N s ; B 46 -12 358 542 ; +C 116 ; WX 278 ; N t ; B 12 -12 272 651 ; +C 117 ; WX 500 ; N u ; B 6 -12 485 530 ; +C 118 ; WX 500 ; N v ; B 0 -6 500 530 ; +C 119 ; WX 722 ; N w ; B 0 -6 722 530 ; +C 120 ; WX 500 ; N x ; B 0 0 500 530 ; +C 121 ; WX 500 ; N y ; B 0 -193 500 530 ; +C 122 ; WX 444 ; N z ; B 30 0 413 530 ; +C 123 ; WX 480 ; N braceleft ; B 72 -145 372 771 ; +C 124 ; WX 200 ; N bar ; B 76 -145 124 771 ; +C 125 ; WX 480 ; N braceright ; B 108 -145 408 771 ; +C 126 ; WX 541 ; N asciitilde ; B 30 206 511 373 ; +C 161 ; WX 333 ; N exclamdown ; B 118 -193 215 530 ; +C 162 ; WX 500 ; N cent ; B 60 0 470 723 ; +C 163 ; WX 500 ; N sterling ; B 36 0 452 735 ; +C 165 ; WX 500 ; N yen ; B 0 0 500 723 ; +C 167 ; WX 500 ; N section ; B 37 -157 470 741 ; +C 168 ; WX 500 ; N currency ; B 64 202 436 575 ; +C 169 ; WX 180 ; N quotesingle ; B 30 506 150 771 ; +C 171 ; WX 500 ; N guillemotleft ; B 36 54 458 476 ; +C 180 ; WX 250 ; N periodcentered ; B 65 240 185 360 ; +C 182 ; WX 453 ; N paragraph ; B 7 -145 393 726 ; +C 187 ; WX 500 ; N guillemotright ; B 42 54 464 476 ; +C 191 ; WX 444 ; N questiondown ; B 25 -18 415 723 ; +C 193 ; WX 333 ; N grave ; B 45 626 289 783 ; +C 194 ; WX 333 ; N acute ; B 45 626 289 783 ; +C 195 ; WX 333 ; N circumflex ; B -5 627 338 783 ; +C 196 ; WX 333 ; N tilde ; B 4 626 329 741 ; +C 197 ; WX 333 ; N macron ; B 10 627 323 687 ; +C 198 ; WX 333 ; N breve ; B 4 626 329 783 ; +C 199 ; WX 333 ; N dotaccent ; B 118 626 215 723 ; +C 200 ; WX 333 ; N dieresis ; B 28 626 305 711 ; +C 202 ; WX 333 ; N ring ; B 56 626 277 848 ; +C 203 ; WX 333 ; N cedilla ; B 82 -211 251 0 ; +C 205 ; WX 333 ; N hungarumlaut ; B 0 627 337 783 ; +C 206 ; WX 333 ; N ogonek ; B 76 -181 257 0 ; +C 207 ; WX 333 ; N caron ; B -5 627 338 783 ; +C 225 ; WX 889 ; N AE ; B 0 0 865 723 ; +C 227 ; WX 276 ; N ordfeminine ; B 12 405 274 741 ; +C 232 ; WX 611 ; N Lslash ; B 27 0 587 723 ; +C 233 ; WX 722 ; N Oslash ; B 39 -18 683 741 ; +C 234 ; WX 889 ; N OE ; B 39 -18 865 741 ; +C 235 ; WX 310 ; N ordmasculine ; B 12 405 298 741 ; +C 241 ; WX 667 ; N ae ; B 37 -12 637 543 ; +C 245 ; WX 278 ; N dotlessi ; B 23 0 261 530 ; +C 248 ; WX 278 ; N lslash ; B 23 0 261 771 ; +C 249 ; WX 500 ; N oslash ; B 30 -12 470 542 ; +C 250 ; WX 722 ; N oe ; B 30 -12 692 542 ; +C 251 ; WX 500 ; N germandbls ; B 13 -12 485 783 ; +C -1 ; WX 722 ; N Aacute ; B 0 0 722 940 ; +C -1 ; WX 722 ; N Abreve ; B 0 0 722 940 ; +C -1 ; WX 722 ; N Acircumflex ; B 0 0 722 940 ; +C -1 ; WX 722 ; N Adieresis ; B 0 0 722 868 ; +C -1 ; WX 722 ; N Agrave ; B 0 0 722 940 ; +C -1 ; WX 722 ; N Amacron ; B 0 0 722 844 ; +C -1 ; WX 722 ; N Aogonek ; B 0 -181 722 732 ; +C -1 ; WX 722 ; N Aring ; B 0 0 722 945 ; +C -1 ; WX 722 ; N Atilde ; B 0 0 722 898 ; +C -1 ; WX 667 ; N Cacute ; B 39 -18 620 940 ; +C -1 ; WX 667 ; N Ccaron ; B 39 -18 620 940 ; +C -1 ; WX 667 ; N Ccedilla ; B 39 -211 620 741 ; +C -1 ; WX 667 ; N Ccircumflex ; B 39 -18 620 940 ; +C -1 ; WX 667 ; N Cdotaccent ; B 39 -18 620 880 ; +C -1 ; WX 722 ; N Dcaron ; B 20 0 683 940 ; +C -1 ; WX 722 ; N Dcroat ; B 20 0 683 725 ; +C -1 ; WX 611 ; N Eacute ; B 21 0 587 940 ; +C -1 ; WX 611 ; N Ebreve ; B 21 0 587 940 ; +C -1 ; WX 611 ; N Ecaron ; B 21 0 587 940 ; +C -1 ; WX 611 ; N Ecircumflex ; B 21 0 587 940 ; +C -1 ; WX 611 ; N Edieresis ; B 21 0 587 868 ; +C -1 ; WX 611 ; N Edotaccent ; B 21 0 587 880 ; +C -1 ; WX 611 ; N Egrave ; B 21 0 587 940 ; +C -1 ; WX 611 ; N Emacron ; B 21 0 587 844 ; +C -1 ; WX 722 ; N Eng ; B 21 -145 701 723 ; +C -1 ; WX 611 ; N Eogonek ; B 21 -181 587 723 ; +C -1 ; WX 722 ; N Eth ; B 20 0 683 725 ; +C -1 ; WX 500 ; N Euro ; B 0 -18 472 741 ; +C -1 ; WX 722 ; N Gbreve ; B 41 -18 712 940 ; +C -1 ; WX 722 ; N Gcircumflex ; B 41 -18 712 940 ; +C -1 ; WX 722 ; N Gcommaaccent ; B 41 -211 712 741 ; +C -1 ; WX 722 ; N Gdotaccent ; B 41 -18 712 880 ; +C -1 ; WX 722 ; N Hbar ; B 20 0 702 723 ; +C -1 ; WX 722 ; N Hcircumflex ; B 20 0 702 940 ; +C -1 ; WX 708 ; N IJ ; B 25 -145 693 723 ; +C -1 ; WX 333 ; N Iacute ; B 25 0 311 940 ; +C -1 ; WX 333 ; N Ibreve ; B 4 0 329 940 ; +C -1 ; WX 333 ; N Icircumflex ; B -5 0 338 940 ; +C -1 ; WX 333 ; N Idieresis ; B 25 0 308 868 ; +C -1 ; WX 333 ; N Idotaccent ; B 25 0 308 880 ; +C -1 ; WX 333 ; N Igrave ; B 19 0 308 940 ; +C -1 ; WX 333 ; N Imacron ; B 10 0 323 844 ; +C -1 ; WX 333 ; N Iogonek ; B 25 -181 308 723 ; +C -1 ; WX 333 ; N Itilde ; B 4 0 329 898 ; +C -1 ; WX 389 ; N Jcircumflex ; B 0 -145 404 940 ; +C -1 ; WX 722 ; N Kcommaaccent ; B 27 -211 714 723 ; +C -1 ; WX 611 ; N Lacute ; B 27 0 587 940 ; +C -1 ; WX 611 ; N Lcaron ; B 27 0 587 723 ; +C -1 ; WX 611 ; N Lcommaaccent ; B 27 -211 587 723 ; +C -1 ; WX 611 ; N Ldot ; B 27 0 587 723 ; +C -1 ; WX 722 ; N Nacute ; B 21 -10 701 940 ; +C -1 ; WX 722 ; N Ncaron ; B 21 -10 701 940 ; +C -1 ; WX 722 ; N Ncommaaccent ; B 21 -211 701 723 ; +C -1 ; WX 722 ; N Ntilde ; B 21 -10 701 898 ; +C -1 ; WX 722 ; N Oacute ; B 39 -18 683 940 ; +C -1 ; WX 722 ; N Obreve ; B 39 -18 683 940 ; +C -1 ; WX 722 ; N Ocircumflex ; B 39 -18 683 940 ; +C -1 ; WX 722 ; N Odieresis ; B 39 -18 683 868 ; +C -1 ; WX 722 ; N Ograve ; B 39 -18 683 940 ; +C -1 ; WX 722 ; N Ohungarumlaut ; B 39 -18 683 940 ; +C -1 ; WX 722 ; N Omacron ; B 39 -18 683 844 ; +C -1 ; WX 722 ; N Otilde ; B 39 -18 683 898 ; +C -1 ; WX 667 ; N Racute ; B 15 0 661 940 ; +C -1 ; WX 667 ; N Rcaron ; B 15 0 661 940 ; +C -1 ; WX 667 ; N Rcommaaccent ; B 15 -211 661 726 ; +C -1 ; WX 556 ; N Sacute ; B 58 -18 510 940 ; +C -1 ; WX 556 ; N Scaron ; B 58 -18 510 940 ; +C -1 ; WX 556 ; N Scedilla ; B 58 -191 510 741 ; +C -1 ; WX 556 ; N Scircumflex ; B 58 -18 510 940 ; +C -1 ; WX 556 ; N Scommaaccent ; B 58 -211 510 741 ; +C -1 ; WX 611 ; N Tbar ; B 15 0 596 723 ; +C -1 ; WX 611 ; N Tcaron ; B 15 0 596 940 ; +C -1 ; WX 611 ; N Tcedilla ; B 15 -191 596 723 ; +C -1 ; WX 611 ; N Tcommaaccent ; B 15 -211 596 723 ; +C -1 ; WX 556 ; N Thorn ; B 21 0 526 723 ; +C -1 ; WX 722 ; N Uacute ; B 9 -18 711 940 ; +C -1 ; WX 722 ; N Ubreve ; B 9 -18 711 940 ; +C -1 ; WX 722 ; N Ucircumflex ; B 9 -18 711 940 ; +C -1 ; WX 722 ; N Udieresis ; B 9 -18 711 868 ; +C -1 ; WX 722 ; N Ugrave ; B 9 -18 711 940 ; +C -1 ; WX 722 ; N Uhungarumlaut ; B 9 -18 711 940 ; +C -1 ; WX 722 ; N Umacron ; B 9 -18 711 844 ; +C -1 ; WX 722 ; N Uogonek ; B 9 -181 711 723 ; +C -1 ; WX 722 ; N Uring ; B 9 -18 711 993 ; +C -1 ; WX 722 ; N Utilde ; B 9 -18 711 898 ; +C -1 ; WX 944 ; N Wcircumflex ; B 0 -9 944 940 ; +C -1 ; WX 722 ; N Yacute ; B 0 0 722 940 ; +C -1 ; WX 722 ; N Ycircumflex ; B 0 0 722 940 ; +C -1 ; WX 722 ; N Ydieresis ; B 0 0 722 868 ; +C -1 ; WX 611 ; N Zacute ; B 45 0 551 940 ; +C -1 ; WX 611 ; N Zcaron ; B 45 0 551 940 ; +C -1 ; WX 611 ; N Zdotaccent ; B 45 0 551 880 ; +C -1 ; WX 444 ; N aacute ; B 37 -12 442 783 ; +C -1 ; WX 444 ; N abreve ; B 37 -12 442 783 ; +C -1 ; WX 444 ; N acircumflex ; B 37 -12 442 783 ; +C -1 ; WX 444 ; N adieresis ; B 37 -12 442 711 ; +C -1 ; WX 333 ; N afii57929 ; B 118 549 215 771 ; +C -1 ; WX 444 ; N agrave ; B 37 -12 442 783 ; +C -1 ; WX 444 ; N amacron ; B 37 -12 442 687 ; +C -1 ; WX 444 ; N aogonek ; B 37 -181 448 542 ; +C -1 ; WX 333 ; N apostrophe ; B 118 549 215 771 ; +C -1 ; WX 444 ; N aring ; B 37 -12 442 848 ; +C -1 ; WX 444 ; N atilde ; B 37 -12 442 741 ; +C -1 ; WX 200 ; N brokenbar ; B 76 -145 124 771 ; +C -1 ; WX 444 ; N cacute ; B 33 -12 443 783 ; +C -1 ; WX 444 ; N ccaron ; B 33 -12 444 783 ; +C -1 ; WX 444 ; N ccedilla ; B 33 -211 414 542 ; +C -1 ; WX 444 ; N ccircumflex ; B 33 -12 444 783 ; +C -1 ; WX 444 ; N cdotaccent ; B 33 -12 414 723 ; +C -1 ; WX 333 ; N commaaccent ; B 83 -211 250 -54 ; +C -1 ; WX 760 ; N copyright ; B 43 24 717 699 ; +C -1 ; WX 647 ; N dcaron ; B 33 -12 634 771 ; +C -1 ; WX 500 ; N dcroat ; B 33 -12 500 771 ; +C -1 ; WX 400 ; N degree ; B 55 452 345 741 ; +C -1 ; WX 564 ; N divide ; B 41 48 523 530 ; +C -1 ; WX 278 ; N dotlessj ; B -38 -205 224 530 ; +C -1 ; WX 444 ; N eacute ; B 33 -12 414 783 ; +C -1 ; WX 444 ; N ebreve ; B 33 -12 414 783 ; +C -1 ; WX 444 ; N ecaron ; B 33 -12 414 783 ; +C -1 ; WX 444 ; N ecircumflex ; B 33 -12 414 783 ; +C -1 ; WX 444 ; N edieresis ; B 33 -12 414 711 ; +C -1 ; WX 444 ; N edotaccent ; B 33 -12 414 723 ; +C -1 ; WX 444 ; N egrave ; B 33 -12 414 783 ; +C -1 ; WX 444 ; N emacron ; B 33 -12 414 687 ; +C -1 ; WX 500 ; N eng ; B 18 -205 438 542 ; +C -1 ; WX 444 ; N eogonek ; B 33 -181 414 542 ; +C -1 ; WX 500 ; N eth ; B 8 -12 470 774 ; +C -1 ; WX 500 ; N gbreve ; B 26 -205 484 783 ; +C -1 ; WX 500 ; N gcircumflex ; B 26 -205 484 783 ; +C -1 ; WX 500 ; N gcommaaccent ; B 26 -205 484 848 ; +C -1 ; WX 500 ; N gdotaccent ; B 26 -205 484 723 ; +C -1 ; WX 500 ; N hbar ; B 18 0 497 771 ; +C -1 ; WX 500 ; N hcircumflex ; B 18 0 497 975 ; +C -1 ; WX 278 ; N iacute ; B 23 0 281 783 ; +C -1 ; WX 278 ; N ibreve ; B -21 0 304 783 ; +C -1 ; WX 278 ; N icircumflex ; B -30 0 313 783 ; +C -1 ; WX 278 ; N idieresis ; B 3 0 280 711 ; +C -1 ; WX 278 ; N igrave ; B 3 0 261 783 ; +C -1 ; WX 552 ; N ij ; B 23 -205 498 723 ; +C -1 ; WX 278 ; N imacron ; B -19 0 294 687 ; +C -1 ; WX 278 ; N iogonek ; B 23 -181 261 723 ; +C -1 ; WX 278 ; N itilde ; B -27 0 298 741 ; +C -1 ; WX 278 ; N jcircumflex ; B -38 -205 320 783 ; +C -1 ; WX 500 ; N kcommaaccent ; B 15 -211 500 771 ; +C -1 ; WX 500 ; N kgreenlandic ; B 18 0 500 530 ; +C -1 ; WX 278 ; N lacute ; B 23 0 281 976 ; +C -1 ; WX 406 ; N lcaron ; B 23 0 383 771 ; +C -1 ; WX 278 ; N lcommaaccent ; B 23 -211 261 771 ; +C -1 ; WX 344 ; N ldot ; B 23 0 362 771 ; +C -1 ; WX 564 ; N logicalnot ; B 41 145 499 386 ; +C -1 ; WX 278 ; N longs ; B 18 0 351 783 ; +C -1 ; WX 500 ; N mu ; B 6 -145 485 530 ; +C -1 ; WX 564 ; N multiply ; B 41 48 523 530 ; +C -1 ; WX 500 ; N nacute ; B 18 0 497 783 ; +C -1 ; WX 604 ; N napostrophe ; B 12 0 601 771 ; +C -1 ; WX 250 ; N nbspace ; B 0 0 0 0 ; +C -1 ; WX 500 ; N ncaron ; B 18 0 497 783 ; +C -1 ; WX 500 ; N ncommaaccent ; B 18 -211 497 542 ; +C -1 ; WX 500 ; N ntilde ; B 18 0 497 741 ; +C -1 ; WX 500 ; N oacute ; B 30 -12 470 783 ; +C -1 ; WX 500 ; N obreve ; B 30 -12 470 783 ; +C -1 ; WX 500 ; N ocircumflex ; B 30 -12 470 783 ; +C -1 ; WX 500 ; N odieresis ; B 30 -12 470 711 ; +C -1 ; WX 500 ; N ograve ; B 30 -12 470 783 ; +C -1 ; WX 500 ; N ohungarumlaut ; B 30 -12 470 783 ; +C -1 ; WX 500 ; N omacron ; B 30 -12 470 687 ; +C -1 ; WX 750 ; N onehalf ; B 84 -18 678 741 ; +C -1 ; WX 750 ; N onequarter ; B 84 -18 666 741 ; +C -1 ; WX 300 ; N onesuperior ; B 66 377 259 741 ; +C -1 ; WX 500 ; N otilde ; B 30 -12 470 741 ; +C -1 ; WX 564 ; N plusminus ; B 41 0 523 578 ; +C -1 ; WX 333 ; N racute ; B 15 0 327 783 ; +C -1 ; WX 333 ; N rcaron ; B -5 0 338 783 ; +C -1 ; WX 333 ; N rcommaaccent ; B 15 -211 327 542 ; +C -1 ; WX 760 ; N registered ; B 43 24 717 699 ; +C -1 ; WX 389 ; N sacute ; B 46 -12 379 783 ; +C -1 ; WX 389 ; N scaron ; B 33 -12 376 783 ; +C -1 ; WX 389 ; N scedilla ; B 46 -191 358 542 ; +C -1 ; WX 389 ; N scircumflex ; B 30 -12 373 783 ; +C -1 ; WX 389 ; N scommaaccent ; B 46 -211 358 542 ; +C -1 ; WX 333 ; N sfthyphen ; B 40 265 293 325 ; +C -1 ; WX 278 ; N tbar ; B 12 -12 272 651 ; +C -1 ; WX 325 ; N tcaron ; B 12 -12 331 824 ; +C -1 ; WX 278 ; N tcedilla ; B 12 -191 272 651 ; +C -1 ; WX 278 ; N tcommaaccent ; B 12 -211 272 651 ; +C -1 ; WX 500 ; N thorn ; B 0 -193 467 771 ; +C -1 ; WX 750 ; N threequarters ; B 84 -18 666 741 ; +C -1 ; WX 300 ; N threesuperior ; B 42 362 265 741 ; +C -1 ; WX 300 ; N twosuperior ; B 42 371 272 741 ; +C -1 ; WX 500 ; N uacute ; B 6 -12 485 783 ; +C -1 ; WX 500 ; N ubreve ; B 6 -12 485 783 ; +C -1 ; WX 500 ; N ucircumflex ; B 6 -12 485 783 ; +C -1 ; WX 500 ; N udieresis ; B 6 -12 485 711 ; +C -1 ; WX 500 ; N ugrave ; B 6 -12 485 783 ; +C -1 ; WX 500 ; N uhungarumlaut ; B 6 -12 485 783 ; +C -1 ; WX 500 ; N umacron ; B 6 -12 485 687 ; +C -1 ; WX 500 ; N uni20AC ; B 0 -18 472 741 ; +C -1 ; WX 500 ; N uogonek ; B 6 -181 485 530 ; +C -1 ; WX 500 ; N uring ; B 6 -12 485 848 ; +C -1 ; WX 500 ; N utilde ; B 6 -12 485 741 ; +C -1 ; WX 722 ; N wcircumflex ; B 0 -6 722 783 ; +C -1 ; WX 500 ; N yacute ; B 0 -193 500 783 ; +C -1 ; WX 500 ; N ycircumflex ; B 0 -193 500 783 ; +C -1 ; WX 500 ; N ydieresis ; B 0 -193 500 711 ; +C -1 ; WX 444 ; N zacute ; B 30 0 413 783 ; +C -1 ; WX 444 ; N zcaron ; B 30 0 413 783 ; +C -1 ; WX 444 ; N zdotaccent ; B 30 0 413 723 ; +EndCharMetrics +StartComposites 132 +CC Aacute 2 ; PCC A 0 0 ; PCC acute 254 157 ; +CC Abreve 2 ; PCC A 0 0 ; PCC breve 195 157 ; +CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 195 157 ; +CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 195 157 ; +CC Agrave 2 ; PCC A 0 0 ; PCC grave 138 157 ; +CC Amacron 2 ; PCC A 0 0 ; PCC macron 195 157 ; +CC Atilde 2 ; PCC A 0 0 ; PCC tilde 195 157 ; +CC Cacute 2 ; PCC C 0 0 ; PCC acute 298 157 ; +CC Ccaron 2 ; PCC C 0 0 ; PCC caron 222 157 ; +CC Ccircumflex 2 ; PCC C 0 0 ; PCC circumflex 222 157 ; +CC Cdotaccent 2 ; PCC C 0 0 ; PCC dotaccent 222 157 ; +CC Dcaron 2 ; PCC D 0 0 ; PCC caron 173 157 ; +CC Eacute 2 ; PCC E 0 0 ; PCC acute 157 157 ; +CC Ebreve 2 ; PCC E 0 0 ; PCC breve 150 157 ; +CC Ecaron 2 ; PCC E 0 0 ; PCC caron 162 157 ; +CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 134 157 ; +CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 131 157 ; +CC Edotaccent 2 ; PCC E 0 0 ; PCC dotaccent 144 157 ; +CC Egrave 2 ; PCC E 0 0 ; PCC grave 98 157 ; +CC Emacron 2 ; PCC E 0 0 ; PCC macron 156 157 ; +CC Gbreve 2 ; PCC G 0 0 ; PCC breve 234 157 ; +CC Gcircumflex 2 ; PCC G 0 0 ; PCC circumflex 234 157 ; +CC Gdotaccent 2 ; PCC G 0 0 ; PCC dotaccent 234 157 ; +CC Hcircumflex 2 ; PCC H 0 0 ; PCC circumflex 194 157 ; +CC Iacute 2 ; PCC I 0 0 ; PCC acute 22 157 ; +CC Ibreve 2 ; PCC I 0 0 ; PCC breve 0 157 ; +CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 0 157 ; +CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 0 157 ; +CC Idotaccent 2 ; PCC I 0 0 ; PCC dotaccent 0 157 ; +CC Igrave 2 ; PCC I 0 0 ; PCC grave -26 157 ; +CC Imacron 2 ; PCC I 0 0 ; PCC macron 0 157 ; +CC Itilde 2 ; PCC I 0 0 ; PCC tilde 0 157 ; +CC Jcircumflex 2 ; PCC J 0 0 ; PCC circumflex 66 157 ; +CC Lacute 2 ; PCC L 0 0 ; PCC acute 106 157 ; +CC Ldot 2 ; PCC L 0 0 ; PCC dotaccent 307 -313 ; +CC Nacute 2 ; PCC N 0 0 ; PCC acute 271 157 ; +CC Ncaron 2 ; PCC N 0 0 ; PCC caron 186 157 ; +CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 204 157 ; +CC Oacute 2 ; PCC O 0 0 ; PCC acute 241 157 ; +CC Obreve 2 ; PCC O 0 0 ; PCC breve 194 157 ; +CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 194 157 ; +CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 194 157 ; +CC Ograve 2 ; PCC O 0 0 ; PCC grave 147 157 ; +CC Ohungarumlaut 2 ; PCC O 0 0 ; PCC hungarumlaut 240 157 ; +CC Omacron 2 ; PCC O 0 0 ; PCC macron 194 157 ; +CC Otilde 2 ; PCC O 0 0 ; PCC tilde 194 157 ; +CC Racute 2 ; PCC R 0 0 ; PCC acute 181 157 ; +CC Rcaron 2 ; PCC R 0 0 ; PCC caron 120 157 ; +CC Sacute 2 ; PCC S 0 0 ; PCC acute 190 157 ; +CC Scaron 2 ; PCC S 0 0 ; PCC caron 114 157 ; +CC Scircumflex 2 ; PCC S 0 0 ; PCC circumflex 114 157 ; +CC Tcaron 2 ; PCC T 0 0 ; PCC caron 139 157 ; +CC Uacute 2 ; PCC U 0 0 ; PCC acute 273 157 ; +CC Ubreve 2 ; PCC U 0 0 ; PCC breve 212 157 ; +CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 220 157 ; +CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 220 157 ; +CC Ugrave 2 ; PCC U 0 0 ; PCC grave 167 157 ; +CC Uhungarumlaut 2 ; PCC U 0 0 ; PCC hungarumlaut 276 157 ; +CC Umacron 2 ; PCC U 0 0 ; PCC macron 219 157 ; +CC Uring 2 ; PCC U 0 0 ; PCC ring 215 145 ; +CC Utilde 2 ; PCC U 0 0 ; PCC tilde 212 157 ; +CC Wcircumflex 2 ; PCC W 0 0 ; PCC circumflex 337 157 ; +CC Yacute 2 ; PCC Y 0 0 ; PCC acute 272 157 ; +CC Ycircumflex 2 ; PCC Y 0 0 ; PCC circumflex 234 157 ; +CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 235 157 ; +CC Zacute 2 ; PCC Z 0 0 ; PCC acute 204 157 ; +CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 140 157 ; +CC Zdotaccent 2 ; PCC Z 0 0 ; PCC dotaccent 132 157 ; +CC aacute 2 ; PCC a 0 0 ; PCC acute 93 0 ; +CC abreve 2 ; PCC a 0 0 ; PCC breve 65 0 ; +CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 65 0 ; +CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 65 0 ; +CC agrave 2 ; PCC a 0 0 ; PCC grave 36 0 ; +CC amacron 2 ; PCC a 0 0 ; PCC macron 58 0 ; +CC aring 2 ; PCC a 0 0 ; PCC ring 65 0 ; +CC atilde 2 ; PCC a 0 0 ; PCC tilde 58 0 ; +CC cacute 2 ; PCC c 0 0 ; PCC acute 154 0 ; +CC ccaron 2 ; PCC c 0 0 ; PCC caron 106 0 ; +CC ccircumflex 2 ; PCC c 0 0 ; PCC circumflex 106 0 ; +CC cdotaccent 2 ; PCC c 0 0 ; PCC dotaccent 108 0 ; +CC eacute 2 ; PCC e 0 0 ; PCC acute 102 0 ; +CC ebreve 2 ; PCC e 0 0 ; PCC breve 74 0 ; +CC ecaron 2 ; PCC e 0 0 ; PCC caron 75 0 ; +CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 74 0 ; +CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 74 0 ; +CC edotaccent 2 ; PCC e 0 0 ; PCC dotaccent 75 0 ; +CC egrave 2 ; PCC e 0 0 ; PCC grave 45 0 ; +CC emacron 2 ; PCC e 0 0 ; PCC macron 74 0 ; +CC gbreve 2 ; PCC g 0 0 ; PCC breve 62 0 ; +CC gcircumflex 2 ; PCC g 0 0 ; PCC circumflex 74 0 ; +CC gdotaccent 2 ; PCC g 0 0 ; PCC dotaccent 62 0 ; +CC hcircumflex 2 ; PCC h 0 0 ; PCC circumflex 88 192 ; +CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -8 0 ; +CC ibreve 2 ; PCC dotlessi 0 0 ; PCC breve -25 0 ; +CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -25 0 ; +CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -25 0 ; +CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -42 0 ; +CC imacron 2 ; PCC dotlessi 0 0 ; PCC macron -29 0 ; +CC itilde 2 ; PCC dotlessi 0 0 ; PCC tilde -31 0 ; +CC lacute 2 ; PCC l 0 0 ; PCC acute -8 193 ; +CC nacute 2 ; PCC n 0 0 ; PCC acute 132 0 ; +CC ncaron 2 ; PCC n 0 0 ; PCC caron 79 0 ; +CC ntilde 2 ; PCC n 0 0 ; PCC tilde 85 0 ; +CC oacute 2 ; PCC o 0 0 ; PCC acute 124 0 ; +CC obreve 2 ; PCC o 0 0 ; PCC breve 83 0 ; +CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 83 0 ; +CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 83 0 ; +CC ograve 2 ; PCC o 0 0 ; PCC grave 42 0 ; +CC ohungarumlaut 2 ; PCC o 0 0 ; PCC hungarumlaut 123 0 ; +CC omacron 2 ; PCC o 0 0 ; PCC macron 83 0 ; +CC otilde 2 ; PCC o 0 0 ; PCC tilde 83 0 ; +CC racute 2 ; PCC r 0 0 ; PCC acute 38 0 ; +CC rcaron 2 ; PCC r 0 0 ; PCC caron 0 0 ; +CC sacute 2 ; PCC s 0 0 ; PCC acute 90 0 ; +CC scaron 2 ; PCC s 0 0 ; PCC caron 38 0 ; +CC scircumflex 2 ; PCC s 0 0 ; PCC circumflex 35 0 ; +CC uacute 2 ; PCC u 0 0 ; PCC acute 95 0 ; +CC ubreve 2 ; PCC u 0 0 ; PCC breve 67 0 ; +CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 70 0 ; +CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 79 0 ; +CC ugrave 2 ; PCC u 0 0 ; PCC grave 37 0 ; +CC uhungarumlaut 2 ; PCC u 0 0 ; PCC hungarumlaut 119 0 ; +CC umacron 2 ; PCC u 0 0 ; PCC macron 79 0 ; +CC uring 2 ; PCC u 0 0 ; PCC ring 73 0 ; +CC utilde 2 ; PCC u 0 0 ; PCC tilde 73 0 ; +CC wcircumflex 2 ; PCC w 0 0 ; PCC circumflex 228 0 ; +CC yacute 2 ; PCC y 0 0 ; PCC acute 150 0 ; +CC ycircumflex 2 ; PCC y 0 0 ; PCC circumflex 120 0 ; +CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 122 0 ; +CC zacute 2 ; PCC z 0 0 ; PCC acute 113 0 ; +CC zcaron 2 ; PCC z 0 0 ; PCC caron 57 0 ; +CC zdotaccent 2 ; PCC z 0 0 ; PCC dotaccent 55 0 ; +EndComposites +EndFontMetrics Index: xc/fonts/scaled/Type1/lcdxrr.pfa diff -u /dev/null xc/fonts/scaled/Type1/lcdxrr.pfa:1.1 --- /dev/null Wed Mar 8 16:39:16 2000 +++ xc/fonts/scaled/Type1/lcdxrr.pfa Wed Mar 8 16:39:16 2000 @@ -0,0 +1,1186 @@ +%!PS-AdobeFont-1.1: LuciduxSerif 000.200 +%%CreationDate: 2000 Mar 04 11:21:47 + +% Copyright (C) 2000 Bigelow & Holmes Inc. and Y&Y, Inc. +% Patents pending. All Rights Reserved. +% Lucidux is a trademark of Bigelow & Holmes Inc. + +% Permission is hereby granted, free of charge, to any person obtaining a +% copy of these Fonts and associated documentation files (the "Font Software"), +% to deal in the Font Software, including without limitation the rights to +% use, copy, merge, publish, distribute, sublicense, and/or sell copies of +% the Font Software, and to permit persons to whom the Font Software is +% furnished to do so, subject to the following conditions: + +% The above copyright, trademark, patent notices and this permission notice +% shall be included in all copies of one or more of the Software. + +% The Font Software may not be modified, alterered, or added to, and in +% particular the designs of glyphs or characters in the Fonts may not be +% modified nor may additional glyphs or characters be added to the Fonts, +% except that composite characters composed of two or more characters in the +% Fonts may be created using the seac (Standard Encoding Accented Character) +% Type 1 operator. + +% THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +% EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +% MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF +% COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BIGELOW & +% HOLMES INC. OR Y&Y, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR +% CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +% ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +% OTHER DEALINGS IN THE FONT SOFTWARE. + +% Except as contained in this notice, the names of Bigelow & Holmes Inc. +% and Y&Y, Inc. shall not be used in advertising or otherwise to promote +% the sale, use or other dealings in this Font Software without prior +% written authorization from the Bigelow & Holmes Inc. and Y&Y, Inc. + +% For further information, contact: +% mailto:support@yandy.com or mailto:design@bigelowandholmes.com +% For other Bigelow & Holmes fonts see http://www.YandY.com + +12 dict begin +/FontInfo 9 dict dup begin + /version (000.200) readonly def + /Notice (Copyright (C) 2000 Bigelow & Holmes Inc. and Y&Y, Inc. All rights reserved.) readonly def + /FullName (Lucidux Serif) readonly def + /FamilyName (LuciduxSerif) readonly def + /Weight (Normal) readonly def + /ItalicAngle 0 def + /isFixedPitch false def + /UnderlinePosition -100 def + /UnderlineThickness 50 def +end readonly def +/FontName /LuciduxSerif def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding StandardEncoding def +/FontBBox{-38 -211 944 993}readonly def +/UniqueID 5096728 def +currentdict end +currentfile eexec +8053514D28EC28DA1630165FAB262882D3FD7667933E8516EE9710995B33AD6AFA66AE56E3B4F8 +1A010BA2D16746155E0B46B8233AF9FC6FB5A1DE6E6D7277AEC5CE81679028F3B440619FB93E88 +614EBEE63F9A83374DA4CF45FCBBACEBE22717D34438C9B2E3DC7580F497AC697EA20AC096930F +E90934EA8FFE999902BA55F2149DEADDCBC4CF03F530F526450856BF8F3CE1C247AA6810D725B6 +E4CB0C6B7DC3B7B5FBE22909A1ED01A6BCEFAE9A709DB1D61BF8A223420C27BC28535F3C5C58CE +BD7239771F455E727EB9C9025F7B0B98D9C49F8A33E8C9A67A30CBC40719B9902A42978F54386A +B019C6EED778074F809506075C7CF394AFF792A52C36CC8FCE79BAABF945F6AB3AE924FBF89F12 +D0D56822E09D7226051E5235D975B5A7E02610477A9B9148DA4E93861FF7BAFCEB6B60E1F0C628 +C19BDCC8FB0D21980C1442911BDF2907526E3E286EBAF9B5F9AC052A9334099A9BE2264AF09BB1 +ED7F2A7FEE947016F8C9EC9341D3DF6BE18050C75051B5FC0A97A8BAFE84552C88411C2861F306 +2864344C399AA24FA84162D20E3565906295729076B7D654ADE1DB62F91F7F32ABF9737E0ED740 +4457C4CDF58C4963F81563D4100197759ABD952E38DF625014E8630A4590DA239527FC7873EEB8 +D44162AFCF4E05591992FADCCC3F0A2C2CB76FA46ABC4FB530AB235D18A03F352AA31CB80926FA +8D8B12F2BF656C765C83CED19DD9B821B2454269D02B11F6E0679AB38F3C9837F1E0551F27E0F3 +5CADC63C0017A0FE4CCDECCCC6B2A4DABD6A78FE9452017DEEB00ECC51AB66DEF208B54990E285 +1D57EA0829CE7AFA88E73F34CB74775F09AE7D9B70868DA73F16D3AF631D4F56879275AE60F8E2 +BAE4FD664E22979A1867521595E6C5ED072B3C198E7E66019CF271EEFE3F72664360567C74B427 +D86DB7E27D820C13735FD3EF5D8F41A580D6B98C59A11F61CB17300D95CB70865B04C29F2B93AC +9A1FB7A518EC4B688D0EDC2326B87F2C1CA2929304D0E2C1C856D778E792FEFFF0153EAE7150D7 +09A857E87150D3045484A4D2CECB5FE5CD5EA12EAE23BDD63579DCC83015E9D6330648DF5E0654 +B428897A10F6796827FF275B0E6E89739B7911E5006AA6E948B2592168344A46F5BC4F111204C4 +4599826C6D894E45FF5D9056BFBC8043E70203CDFF7751923EC7D93538DF137CA725F34B74CE16 +7DACD3111385B4749965BE610DA391B81C8CD04D9B0AA8A2F176EBC47793958FE9BCB91B83F8BE +770977D0036CE069D464FC7A63FB562C0C2384F0538A8AB4B1DD9847FD9B3A57CBEB0CB1DD1369 +678053C71E83543A3D1CC8E57551396E982D20E4F5AE1C18B5A565A880E963F87FBCE2F16DB645 +45EEF05503E7F484CCACEA69C280F9A0A6BB6AEBD84EF17AF584482D9538EC04B3838FE5B3656F +01D49C3CC1B7C6DE2CE3B32191055E516CFA11E88362F0360B3FBF423D8F53F8238F0AD4E49D88 +298785E868F7F3F6C4F9D4497BA05706DB10BA0D14EF6041655BED89EF5C3224216E6D1EA337D2 +B9D611DF9A20783E925BF88548B29DFD8E4EB02853118A47F8B4504D4497674E0D087384D3AD9F +7071BDB8E07945F72DC4FF6A6F9FCCF88FBF169C62E1611FC79985D9758249DD0B469B66A2E43E +FED525BDE3A8CB8036A5FAB364A83FB036A0BFC526E271B6CA4D3D0DF528A4743713F3C79F9C04 +D563D3FC5E75BFAB4383A98F8425F01714AE5C05AC1E344E99F9748092FE0D5E9139BC4B7E632E +38F5AA01D8E8224D9A6F3F4F1C9D9600ACA9B7D003D759A2F6875929DA24FD1A167E2883C51E8D +C5B26307B8421571FF8CD9407E309D50C8C995F3710DC7666694B93C3FD6CD8661903F3C7AF989 +ED3CE6C3C5E5C9911033DCCA8BE8097ACF5ED77FA6EC14EDF2A25070A6BC511D8B0E30319E23C8 +7738A6E67026BD131D286A03450ACB7BDAB77E328D3564AA91A3F56D7385B357F5B3BDCA8C7345 +DE7E57AD8A549ACA6A40D170ADFF352F3F168266D90CA37E6F2465A38B276272F532B03BBF28AD +49734A4C087D7EE4649899BC12DD386F1CF66E443BD26F2E53DF37899E90AA6C96F921C20C512E +59D216E7DC2361B36043C809E5254784DB7BFA39E5225D71425EDC6328F351456247A2115A9848 +B09069F0C0A2C274F84BF6F104C00E338941520FE29A45F8D315735FDF8F36C2B3FCC91CE90794 +66D17BCFD43AC2E6D522525600B7F3789D026FFC67C96C15295B9602928074DF97A9A00564F6F7 +08F752719E7F2564A941FB51F1BE72C43BF338FF3AF72020322FF9FC366A9A17B78A543463A59E +B97BB4159478BA1C0DC1622DCBA0CC7BDBEDCC92B5D6DCCDA009E17173AA9BDF1C12D302E0AAC2 +0C15C5B18ABC097B09B6CC50A1BB1A3A2B5858849F6F32C5BAFC82C4EC56DE764C25F33047EC42 +6F31D882D53160AE294EEA8BC9E4B1EC9115C0B9046CE3A9950CEA7A8D1B44F94DFE6D885533BF +2317BEABCE7A593BC0DC99AF676694038B1313144D5E67EBC5185C4DF90994A87E89690F9DF13D +2CA2CDF533A0A00ACF8193FC89E69C59BB61C2EDD050B1EC5CB5A9A5764D0F31FB4BCF4546FD51 +EA527954F7345053BF2D5A4304D0BC8A358F310BC7067B1856C6F211075955A9BEC424E94CBE41 +6F2A1C4C62CD5E1B77524A8ED74B5C7C5A6C78FC39A4B6258C8B6E234DAEDD52D377C2F290CA0F +70F92C0A93A88E91331F455BF08FB4A2704CB62255D93E21D72E8C06E2CE1AF234B353388430FB +163935024722F21237086FBE7A7BC1837A3A364E2D8A26F746EC4174787AA0CC664AA603DDCD94 +75D9324103E90A73F57574D0EE17B71F5DDF15346299384E779827D54B4347BBE1D8EE98686953 +75EB705BDBCC1F22737CEB8B95C66C97C114E895387E9034207B5CB0A3ED5CC3D2896941A3ECB8 +4EAFBA67C6989E7699572B044F6CDE6D2C830A9130B780B3D3F3B953315058A230B56BE4659303 +197A406F56D83A2ACF47212D7AFD947C7327E1DCC48B983FD689ACBD8A8E4CB8FCF7A0466D6961 +F1C27744C675755D055EAE81D9EA16DAF58F4A3682182E9B4336617355FC20DFD124CB15DCC72C +0A06C03E023CEF6D63DF7E48013403FE0D5C5732FEBC730FD07D1726F931090E362F266103B83A +21C8FE57BAFB4F0FEB871F0D71149D6D899E2B93F99F781ACBFCA84D56582FD032924D56A70502 +2B229DF962FAE58D063581DE817CFEFAD8DFDD4FE00137E798A67531ADD80A4E20570F76F269D8 +6F9A4018EEAA44A920CD5AB8014BF5803B1FF7690F6818CFBD4BE5230918BEA341502EE3C159AF +19BBF68361B52F1162907460F0DF1D253405D922EDF36017A6524694A983FE1C9D6CA4E1161261 +A9EBAD2BD16B58E2EB3ACBDEFB44852A577D15A54C4AC6CFE358F2D3551640B74030B31058DEB3 +10CF5E3DD6ADBF3C5144DFDEFBD843785F98330A06F87650C1D3801F59A9FF402DD4042DDA8BA3 +C85AE90AFB6A0959CB4A9F87232E2B83F64BBE3233A23C960A1D0234BC07EFE1C49B9B3A1923CE +07B59C00C7085ECC88949C676B723D12F4B6A062A99589342CC7A545AD83D73C5A9F500EA54DD2 +C3C72A753140F2E3A13F38BE5C9C65AA884BA2FB152D6774B8F64FDB8D1099AA91CF83625ABCA3 +8EAAA3EAC8B3A9FEA9C60618C12F2B2513E2A5CE68F8CE29C607184C27A7DEAEF3F376D75FD1FA +F9784272DAF60B8974728C9F2F4F2ADE9586DFC16A627488E01E51BB6CE52CB58A5AE8FB25D06A +5EEFC01CE330F67DF6287D8E856F561D5E7FA01D69F04D82AF22D5B0F9ACF07BF1F08CB0E06D63 +F257E7BA4F44A17AD5F09DF0A7E76CD34D7F040C8334DA8D6565C4412D8D9D06E5938D59AB68C0 +D4A80CC0BF99825D29A9FA9B87B2E5D50E67E433ED71705329063FDE9FF43BA77F53129FF4F535 +978CB3D2D67E77172B28375A5D3FC61C8E75E7B58D6DBCBFE922F6845E7427E90C061041CBE641 +AD094CA159D9314FC4DA960847C5B5A2C20A23B3E63B305DF0770F8E886F24A74B88039255EF12 +B8716ED6BBE2AD2FA5DEAA0539176719BAC30486D2E845A53A66585FFB1F954664CD7808862ADB +DADDA0E9FEA9B222A125199E1D6FA7465CECE0B121719D3E2A020A0EE54D9A6E1EC4D432C913EC +78D84CF32E3C8329A7D772E32BB3810E2818FD68DD302560EF605852C8389C6E2A36664421367C +3DA698A69BA804B9AF06E322B194E72866AC6AC0A00A621DBCBB84ED85C164BB5928AE6860937D +56BF091DDC6F279A0E87D9C2843A426FD7316BC922D1417AB84313C10AFAB229A93B87ABEC8E88 +AEC052B058B169C966551150795E3C85E662E36D032645A1A5677DC641C41F0ADB212E022E29CF +E0A6D13C45C28B8A3FB0D328D50FD6FAD3FED97027DB970DC790494063E3B585E735B1E76B603B +08F3435168F8B2572E1DDE8E268005223C647B4C30B5151CE3945E79F4831C4878708061DFD58D +CE66B5A7D6779F02BCD8FC103CB43D1AECDFC98A452A8852BB63688FF737E0013C90C20D26C498 +4B7282BDC153E1A18AECE675F721BBCC5F9B6AAEEC9C4D8403E68A49FC0324616A7084723F04FD +96826D3EB234EA423AFB26B3A82619B1CCD99DDE7B94CE1C33DC14BDC6B6BAACB3668573253516 +0C1B7BE2C209064DBA6423616EB1C0031E93B31D234387B13605D865EB30792FF7F247E2382685 +555E6FCAC197F63A5EF4D4D28B369BDC4B573BD469B230842A3D61C789ED5A6FA281DD5C91F513 +FE129AD8E9B8BAF96C593DF13E1D408092B1ACAD8C8D7C485EBA9CDEA9D87F1908F9252B29D05C +1793AD828DDC5BC7F5D42CDD395B29044005DCE665C7D894679589223160B0E2642FB3DA503D30 +F042851A6ED6B449CE227028F10E36B8102DB919292A980DF3142343705752DF8C62234AAEAB28 +85D6FC6A0654591AC4B1484259F97335CFF70F4ECA6E8E9E7AAFB7110A948A626E1DBA68184E49 +9AA5B89BAC5BCC7BB150DA48F1A6724ADCF6B2EED2148C0AB0F6A433813CF5CD32591525668831 +8FA8AD8EFA4530AD68FD97B08C531EBE04B7D8D3B8073AF113F4F7A84951BF60612F26C8A3AD9D +1823709F470105CEEE311D97531CE23AC0098F2FB9244183471CC644C0202D4644F4308977044C +DA0AB26FC896697E7AD7E2D85BBC15B1B21B01FBE3782DCF1C0870969B67935984351327D4C89C +C27499F821BC245CE4A5200AE8A7B6C85DD130DB070AA43F4A83C741333D6020B5D8D6B229B35F +40CE459B572A3EC78C218F20C4021FDF40022D927DC8649A5E62C9AFEAC171C388750C9BB16311 +22C8F8AC2679BFAFF12368F486EC1B573060A2476222DB4BB62F8FBBF658F5D8AF99C6053A2364 +040F7CBA88EFFA811D964B33C853E4D501500448E74475596430F5B311B59BDAECE0CB0B36690B +67186F2CC15CDB169FA7AB970488992B1EBC6837AFBF9E45BA8923AB5A20F639C5474102B28ACE +C4E001BF4C9B8B826DC360E74082CB8914A1E25B2A8B2D026B34F0D5E9907E50414B9A93898EDA +8D2D0851284D7FE889E790DA9FAC1A26DBF07A9551937DB7575D67D10C1FBF28F0CFE75A78469D +984799D130B1721E509DF33A73FBB6726007E98B9E8FAEDB1E2FFD4C631F9879B06A63719C4443 +2BDB45C3FDE556F125A72379DFB2B9A26C646D52906A2CC631DA38B0F5BF439B1640EDBA915E2D +2007D53DC665B3FA6EFF812B0CD786507F3536719258EF8F49DA3A7968D5E08B4B7365DA56DC73 +35876F2280D294BBF1564E26C38B13DA05BCFA5D35E02407B10D04DBB517EAE8027A59D68916B7 +D4CCA8944864D32501D993F2D338B1CAF25AAD9DC341467C20123666FA15398CF6541FEE3070A9 +DA9B4D08ACFB10ACCDE75E596E08D144D0801FD064D05D0E3F9E6210FC1BD3B2DFA401A51CFE42 +1F955C835C93BE5FA7CB5A5BCFC6DA27909791F1E2828B254394667F879F71CF9271233A873C42 +13DB20CF903B350C9B5E98CA7A753C07FBC67C065662DCA6E8301696F2A5A3DB8176F9C59EA952 +48399316F7312370E05AC434172EDD38E22689D398BCFE12200B8421B2D5599AFE2F152AE569DA +F1286142524FB2068269CE7950969538A1AADC667A0194059EEF3A2AE249D7463F2DE885B0B0F1 +32D4BA4E56231B410868F51FE955C8390E34A00053478DB64A98688003D5BADECBDD15A22C3B36 +45E0C3750D6CCF87F65670B0FA68AFD5AB85DEE565A64D3BB8122B7C6F774B2AF8FEF3D8C7DFD5 +8614A7841240D4D9F87B28600386D4229FD5F78A6F1815C881C8C0565CFFEFDD16C4ACBE01B147 +47369E037E8BE85CFF4047386A36CE05A27F9E2E8FD63F15A5338EAA75E6BAD4BBDF2273C7A4FE +393722F063E3AAA69D4D2CF79F01F47E4DAFFB9E84298AD18DF926E5CD51DF0FDC34013FAAE005 +49102C0A05FF9DD58D622E506E7ECC12D3EEC9DD2E15D13803CF71FD0D46716D8177AB9F992D23 +526CF14E73C8BB26B34E1B4BAE2AB2AD5711E2DFDAE53D06B971D826D52D614FC7EFEA8FA70A15 +65B938B22FDB800D120160F63015399E5B989853C84C5FFD4093432C2387DB28E468C71EE61169 +6FFF8212329D411403763D2D5EC4CD45130A47357AE2E946057A5B592CCEB31ABC54E2CFCA0590 +6E559998183ADC3173A0C21643E75D3417C0AF352BAD7B51C40339DCE988E8EDD3744D77BE28D9 +9AFB50164951E1BAB41DDC3AB5E2D6E90D4E2C6BB61F3549514F04C2CE23BC9ABC2B89A63C60BE +C1AF30587A137FFE395E1C37AFC8D39ECC2E56F0E889825DCAC7C634291A226A51ECAD94320557 +3A433959A3364A3E1182ADC6E3A0D38C5E9AEBD86587628623E2F4A0E8846990E5A5C8FE27DE53 +80CAD7E5D4C51924E078AFAB416F21A2298A15EC365BC88B4364B7583C44352F0EC57E2F122EE8 +7EA3F31B7ADE16FF8F9CAE1903894CB721EF2F8AA87B0289333C04D3B1FFA7D8041D9A13A5C3A5 +FF36FAE4F2F90C542AEFE0A1ED9135CF98D149F112243D310DB5373F6960C53C3A474B42C98ED5 +DB32608F31DC1F4DD496BB1B6459DC63199C25CB27B9EAEEB905B06CC36437E072FAC1812E656C +F66803F1ED5AE4D43188A97667DFFD1F85EE9A8EE3A2B60BA2B3A1FBF126260606FF10034C00B9 +852BD166AB4DE15FA5F8F64354B6BD1890600DAEBFF15E77487CEADFE55811507413E5538129CA +8EA04F142743F2D8076A050D9D0D40F2141158D765458B582D87CA82C60B9F3BA0B0038890FE05 +38C3A956AA4E33E18B48D9B88663D228342357DF353CC48DF84C36BCCB39301E667B949278BE86 +B7EEAB1893F4DC9AB40C8C560B90BC80CD2F47B5943895A04BBEE4006F95FEE99DC30CD9AA75D8 +20EC96614E3C4DD6BC95843B38768BA43D8A4D19FEC4919421CE5C2677858269EC12133C1A6492 +5768FF23CCE6899801B8BD0D565268520AA013D69B7B77793E642F67B5CCE0D605FE3B69343FF7 +6272888CB82213BED66996CA8B6072971D187127AF7DBF084FDBDFAEEB735AE6E072D7D08D31F9 +D1527FC0CA454C58C131F86631493D019816464EF0CCDEDCC4F15B6F02571B907DFF1068A6632F +2A9633994CBC041CBC06C9DE0FA2801A46A4771B98964B9724FB65D47EE287D268738F4317202C +C933C2A144AFFA48B116894AE771482BFEEA8C1AD4D9BEA44939B091387899818896C8655853A8 +B525BF703EABAFB42FBA6F16EB9CDC251B3446A1E1E184001B930C7FDFB3D6308B3A95F60C15A7 +2F4B61D084F852D65650EFAFB48780AD5F1C89C5A1190F9277A320B4C73F5EDAEE577088B14F36 +E07695421FFC07312AA12791E325B5AE7F101045CC2BA88ABA601A43B5AEF5BE0DA28BE7C44F64 +672F58F0866E513B39119CF98D22BA5EB80DD1192CF553EB64DCCCC28725402AD72D67BE94076C +5468A017B01EDEB935528BBB21F431D5F4FFD253F173DCC5A920A9A1D4FD7B9AD29A6EEE480BC1 +B54A25FA3A8DDAC5AABA6E22DB4076A28ECEE0090068583848784B9748C2AF92002ABE64D9E272 +32B608B2FA8D8B61DE5855F46B41BE6D84C1077A71BCF414ED6C16B00776CD8BCFAF32FE226D19 +2073EE1EDABC4488C0B3515C6E635FEBBF981B7111CBCC5A4EC83EF3B6D1DDCE23C0F91A671DB1 +2D5CE0341FC77C7DEE45C83B0780701C496337FB95582D6266CF2F6C03F1100AB3DFEB42B7D315 +050FAB232DD2CCEA39BA34B6A3CDB39128713ADF8720DF535ADA77597F49A567ADB32D2D08DF2D +3FBCE5514C56154EADCA5E278502B500751B81358F90582DD7E38A4A59453E6A4C55C7233E5B12 +6027B207A7F6FADD3A075D77FA0C682B037627361F28EB25CB6C1BE14BD43DEB49EA388A33949D +010BCEF510A7BA0BA413FAB1E19263E186821FBF209065FEFD6BFCF5B7309D31C1F1DCB5A730F3 +A801A3A29A3C368874087C0F5A440253AB2752BE41C95DE636482260548A75B895BD586B0A4A84 +96009A2E65908D287BFCE70A1282937A937D1E15785E170DE3599841D7A9F9FD3417E496C9FB92 +6B5951DA0F57C69150204433DC219B3ED77F475C32E4B976601487B09E986FAC380E033333A8AA +D466629B369EB8BDE56CF92C71AB027CA348E7C4DE2A0FCE7F3DCD5110BB0F28AAD2835B0F13FD +47511E1530F38FC01C2EA8777BB0751DBA0B7153ACDA3D1DCFDD5BB25D4D650EE98F1690D81808 +4A43F003090E5E01166046362DD05104009E8345886BFE152B3F160CE46AD6429BDF453381158C +7509607767E3ECE6A7DA2E20FADA2687A0092C386AF9389F6E0080332E555A323B16D4DAFC809B +4A004936FBFF560CE6AC3493D19233B26EC7DE62004CC2B8180AE61628E6BDD3581BD406FD07AE +DC8E6DBB4FA5A7C55BA8AEF76DCCB728A2696CAA5405C8472CDA48B32B2CFBA89B68D7A0722E97 +BB37402C4B4085231C4FD7F04E456C417405422CD692FDBE5201C2F5A2EEBDA68F595470E6C124 +45EBDBF0CD59D1ADB485333549DFAE3BD64AEDDCC858061041C3E2CA89BB2C2E7BA8D4D68819DA +080DDC6D0A6F659C5E69BC23C26274BF8156E5EC368DB1A50AA0C82DBE8F47E3B28F2C0F34BEA4 +05B287170D7C0B98945C41ED4F8E82DB6E1FA5E09A793C9D59849521353D3BBF9C804989F8AD3B +B8633F39B71EFE42C8F60DA2D0394B9F489166FD9A0FF0B128044206DEB306CCFF4C9BAE902D4B +8EDD518BB2DCC3109409BD114591AAED9BFFBD79520CD263A4E1EF1B8E078EC788FCEEE3314661 +A247DD6C5BE977FC551715799D9558CEEBDE967EF36F3C7253061712C0AAC06F354E1CABA56BA6 +E0722FE04AF345B5A6CAE644DA0751FFDC92C2A290180B27B7494F75459EB36CF346BBC814CA6B +5C81E2E53FB14D6CF92D500708C2CDEC1D8A9499390D302AFCBC27ED5EB377CE2E2AC3BE6D18C4 +8791444B3D8DB1814CF77DD2FA242ED2A430C75B2D849822AD2C056D0CCDC887870B18EDAAE495 +F11556A244FC636B572457D41420D53708E141D8A2A6B3C6E662976DF470870B6D67C269B4E5C4 +DCAAF1CA8DD851943199DDB9EEE2EE60C5BD1E618DB751A36E563CCB19CB761A75FE30085B8A24 +6556E1F07DF48E3FDC1A74C294862ABD07A3E9DEC6476A59E812F1371CB55C07ABF81B2EB2177C +23729437BFC6B34A54B6B78847EE51EBBFB91CA8C5B0E8BAA2EE61E9920F193DA7FA3B3D7BC05F +1D6CE134B93F1C61C9257FC085DF7BB60A7C850C9C76085248DF76812C2ACCD7D1BF1C29F593A8 +303983EF0298D74D9AD95B313308EAE41B073F56E247D21D23EB2EF62430314B3418D07D2FBD54 +148FE3BC18D848CCA6B039EE831942FF8C9137459C1E8882894EA328A81768BF96576A6C17995D +70D84610F07E819A36C1169B383C31499B57CCB48951969E83BD1605B0AA522D75DAF2DA9892D4 +C6B8ED3C2BCC58C99AB66F1C2CA01908A5A26A4EA1917E40A3D30357413EC16BCB0DEE39ABC8B8 +9CBF931234D4CA89C9F366DF125187FC943B0A8A4A0623C6603EBFAC6FCCCBE33533F44455B08B +B6AC8492527994829B0918D972DFBC56934355394F4C316EF06A27B4A2A961776EF46D9451F5B5 +F6C4524C1C1699DEE99279FC4263BC849ABC38FD94547BFBC0AA55005A517EA84D31648062C025 +6916C4B8FBD477646BA75BC9037688EF4B84CCC7EFD49D5B8378880226159C4152C96675A19A4B +F37C577DB64E2F6BFFEA6F5B069BB50593F09EFEC32BCC84E32169701DECFA5B4B1799B4440B0D +CEE8B56C5E612CB128711DABC3B560F9CD7FADFE09D6B63FF0AE2F8AAEEC0A8A1037E94FA948E1 +6135B72D76D85E050D4D77FE0F289533D40ADDD402D81AEA2631520409792EA5898A990AD79872 +DF9648FD8902B1BC7FAB4E379C0734EF8DEEDCC03AB01CCDE2FED871062A7B5DD62B51276B8254 +7521315753F9E1ACF17E3001894CAB86250BB37C38F2E99C88AB69C05BC3CA5C0E39F3493AAAC4 +2B7C3CD048C2F530E7A2C14ABEF04D3A2FE61B054E091C89C5CED0798A67FFEAB30D492B3CD753 +EEFF2CCF1A7B3E8A34C211079E0BEB493A0177AE21717CCC759968B3AA8EA0E1A0FA4CC31AEA4D +7E7A1DAF9EBDE5ADF81DE6173A51E673B55FE8024F8C24F362D6C6A02EE0F5C07E7FDF9B86EFB2 +BDA712C8E8E40C5281500FBD8F625480A8F8E41F4B420122A6821CFF67EDCF86E7F52DC73BBCC2 +AF3A4BD90DA82647C7D4C7D1A191F57E6D2B77355519D1FB46E9FF22727534C72CE5827953B94E +23CFC04E8471E8ED5D9435369593429613ACE89D34C9338870B6FBADA39494C68E84BB9F99817D +F1DE4887870144B276C0860C5483B439FCA054FEF9E1EB4B3C988B4AC730CBE778EDA4992F5648 +FDFC5F9159EA7FB30F8DAF00781853189214FA144A7F4E12FA26398FC1A7E99C924DF6378D4164 +337C659A5BC769A6C553F451331B357793D88BEB829B9363DF7CA35F5CB8E88E3EF405D7C7D1EA +777FF63FED9028FCC82E64593DE423CED9EC80DFD7F776CA9018891A8CF248FE3CD5B9C0996B80 +921E5AD149C1A0F400A4B5176DA12EFB173213D142C8B53AA91E370DC7727FACBE950B098FF401 +D811E992453CAA72B80A470EDE7216BD515CABFAA0EACCDA3559C99979E30D92F66D41C8FCF91E +552C45CB0CE9561874FB3199E310B9A40268CD8A18C1F0DC14BD12F262EB01FD2825EF5D1CDD34 +774E7A4DD738D7CBD6627D9874560ECF20DBD677B0CDB02FEADD3CDB78AEA2A825A8A9847F31D0 +5BF58E1CFF8325EE94E450240E2E997BE528518620059A5E72AF4FD5422526461FD91E3566D62D +2989FC873E6B978F8A3A0C82E6406655281300E7EFB8507B87230FC4C95A56C01E77E451BA5D05 +BA1175F378D2D4102DB9B62478E069E7C93B9EE66EDD78AC7EF95899044B34589594D55D829BB9 +A33C43BE663154FCD181D3E6B9FC7B391E4E297EF889DFE318A757124D688EFB0522D1F6DDA836 +DAECCBD1FAFDABEB34CC193316AC614131AF7B470DA8C2DC89BF59779B8D5D2E862537782066A8 +6112E65C2C6AEE6C66D206AB3DCB647E53E343696517F9945BB946BA0B2AFB0A3870B648EE5602 +9C2C4DC9E292BFA45882B2DA32971FBE796674A74C6FA9182296CAA3F2EED5AB7FFC97FC29F920 +E89EB387B3F95C7023A9C2E5FBB4B56E6D89EEB967BB77A66EA984228DE15D6BE24FBF9F67713A +BB560D5E4284E2E85DDA2D94E99EADAD6A030E6844AA82F6D06B395C5FD1C07B105F6467211C1B +D05D86EADB5A9E0995A6A154CF4CCB565E4D4B100A4DFBAFC5D5DB574F9B9130DE7F9C8548998F +520D3AEA938CC42D21AB0C07C398CE4EBBC6BD7B0FCEAC71192EB72FB322589CFAD0EBB9B741D8 +45F86C8090608D1588A582F24E6E11005F87A86EB4AF8BA00FF10FFC7CB3698F9FCCAAEADC2682 +0E06E5FE036459C16F5F700D5EC7D3E0CF4989823C11DBFF3396F4178D232E74BC41B3AB026236 +CB0AF1B320C5A23E43EC11F2098D0DE434EF67513CE40B9362C25CD08D06E6C3F6F9205F4107D8 +61ABDEBBE183A3EB6A6DA5073425629A4E3907F523C9AE01FED675FE705EE90BA1C0CE0FA72099 +933BC4A5282FA9472ED39B70ED8B92194C99B4FCDDA69E616A24743CCE73C5C78350504F63F19D +07279FC166898FF6292050F2D5BE75B051A70D4B23D6113BAA648C65D63CF4CF13916CEFDE7D69 +5D436E2527EE3C343ACB06BC9D6F721494560B9EFEC009E365278A44D191066486A8F056775B2C +C66F7ABD2AEF9F0FA70CF6F9DDACBAD1526038E208556D2AAE46CABB9B0EE878C8C6E9A4CDAFBB +E1EDC456E90A529485A2297A08D8184234F48062AB3B3A160CA8FF1B31D27C4DEAC896E60FF5A8 +E15453D800C803CCD8F21716AB1F714418D510985F2F56D460CF9EAACB5E35E08883B163F9DC8C +2B93F6784690402C8E4F6E935B7DD45410878D7B845F6B667AA045CC5B1D2D17152C3362B208E1 +B00BD166E7F868CF7F790AD228F1DE6931F6564F84E5A100035C66956E09B8A18492B66ED9A9A9 +4FEFECD730CBEAEEBF57F6138A5AC37B9D10534B2229789290778F42F2730C5E1D71EBBA59D4CD +0288D4545499000EBC2AF5D82C3805D9E800A03D73DEBFAD00F22FA419A03EEFB326DC643630D7 +E9F90DFE51F7D4B79DF8CEFDAFBDCB4331CBA7432AD9A9B04C3C1FC24BAED34FD3375323C47437 +2452B8F61E24DBC43D04B6B944ED671314B98512AEDDC43252A11D7AF8F25D917D6EEF28109FF3 +3536C196A05861F9695630ADBC6F519C9A71BFE22196D128E23B304482908059DE52D5064C65F3 +370318F57FC336BD2621ACB6F2B4993C863F0C8304B8F38BB74960AA074FCFF536BCF52BD4BFF0 +746EE08AFBD3C379FB654EA36B6CDDDF60281C15C23C385465937E57AEFDB3921418164F17FF9D +00E1AFFC37365F8E369C1CE3E128F0C437A875C84A8878950B614BC8862C29E56ED313AFE47669 +6F8941C787D6B404FE4BE00352A900ABB5322D015550E63175C76EC8617714E0A4AA9A64C63946 +1010AF832001321F9CA172375E0944C5FADE83A6F37C172441C3D22FB8AA3F7778EA723D549852 +3542B0D8457C4D56D9F306DE45E992CC68E8282242A44876DE6F044A21C85FD3D3D57EB3B98080 +58BB0A6F0778262E98BE126152F2BECD814D37A82D216ECCF92409DC42C2A00863ABBAD58800B7 +E4273CCBA98A2052CD8DAFE535F1EB4EC8DFE40CA7A5C95E78921081CA4BFDFB7875BB2AE32206 +B31C9681FA5EDFCC2D672061605806D1033D2D2F1682936DF6C71E8E0DC143D286CC0A34DBF023 +911E0C5949C74D50C72C33412A3E3C842B3C1742AB186F4987CC43B42506430B6019579A2332A5 +A8081C972962808B0E21FDAF1989A15E973FB5F393E640B990F8E4015AAC84A14D45BB3B7115CC +FF4C5BE88F5B7845887A9EF6BC32DEAB1A5D6608471A789F3DCDCC74AD489CC5EC3E7F6F1D17B5 +F83C9C254540E468C1BBDCB63F1D375BC022DF89EF4D06CE3571F2D6372DC5D6E63B852ED67861 +E6B77303AB381D1EBE64F9A832FE61AE153537113518ECE036A9706FEFDF2CA8B615535E9170A9 +24A6D5BF5C7C7B0BEE098892DED04BC1B08CCD97E97AAEA48FB2EC55D8CA831207DDA50E2D360D +68EF8CE9CFF53A9A16B6352813E277C4D77D7CB0F07D8125B2E6348FCB2958A472FB97C7E44B3C +CFDDDE15199C9FD8C857961A53616117EE1B8D644370B28CE97CA4ACAB448832C2CBEA4F0DE984 +882E2E49F99C14B6F6F7A3B8C2E7E103CB86FE07114384E5699629E8937BA6C761C26F1C24CC81 +727D57F5FDF9D9153578E714CB664D83F3014CF41E21981ED2A05B5BFA6BAB442A894BCB553840 +AFF8A4D9CABFD962C0695C0204CF23EC16B7A07B9D2D29BCBB33E54F6CDF564DA3D53A2EA731C8 +FB14BA92826629B2B41757238967767ADC4528EB67DC5D1F4D5ED546E5B6C6E02F5A96276AB137 +EFA8C15686402AA1757081AD7CFED605FCB73ED0553929EDAC6CFD5111CB80B728B70C7D1201B4 +EBA746EDFEB5FB7F1E4A4926C77CF5CDE416B622329B3A43DEC46FAD0469433BCCC7D0573451D0 +404463DD329940EA0E8336C87AA1A37375180DFCAEB24299AD94C0402E792077ADA4881C7900E5 +C0B8ECB6A4530AA5AFA9BCCA9549B4B5BD885875394354584A7548744B047276BC0171ED832A6F +129DC8186AA2D336081675BF852404EED127B2C02A7E9C7A86BBCDA31EFB773A2D64756707E663 +1C12BA58858A1A027E6F6DA2E78FEF864AE36D54B6B8DF640A1CCBDA4AB4963C0734CE998AB0BD +C50DDB5891478275ECFD6D9B3F4E32FBB3F1E3B037650EB19B80CCE9A9A318C7C53C858EE74D88 +FC5A212D282053A349B9C635AC4FE5E53861F2CD20381A7E711C4C59AEF4BE98A76E312BFCCDA3 +C1BD1E817BF18844178E2F98D43222F175FC8654CB4C92EB3A6E07F49FF3CE9CA53DC9CA265433 +45453538EF531AB7932282AE2D554955DBED279BADDA7A74030799B26CB5B9BB30B5BC4B8364CA +651752AF6A0A0EEBD30258C10575628B45659A9BB6A2EE990107C4B1429AA12EC3520DCA2C1A11 +75B42BC0040B88388B11DD26FB54D3C4B4E79A67729A53D48BBC6DFDF624089636B713AF5FAA4A +6CFFAFEF7569C51DE0C0AA9879CABCCE1D2AD9EC5FAB09CD496CECE9F33622BAA4BDD68D5379A2 +E17D5514815C83E08E30E52C0FE59D018D7C5BF3F9D7C924405DB4956A015D84796329C9685275 +8B4E0CB76B4F49AEA41B477948C117F6B87D4020E159885A31E9A4040E07F6FABD90E5BC4135C3 +2AF53118755CDF6D9B07DCD3FEA9528A557A73ADBD1745D372D76472FD6581826D8219AA7092E1 +3FD6AD3639B8B5777793AA67064A5C36491CB456501A45D36E0BBE6EEA6BD0BD1D47539F62F77F +95B5EA3155A4F043AB929DA6AB2FD7ED1EB82A7DCCEFD021F780FACE99F82584EF670C32B24436 +9F036CCE48BCFE5A9A56D3BCA0A0FD72A561505FC3FBE42DC91BCCC3FAD742F127CFA51E3E3E3E +D80AD9C0B7BEA75B2FA00104C7AA97FB2AC8EB63D77769B424B6DEC025958FE534DDBFC454AF5F +7286C569A5C8020445AC45CC15E5651C3FC70968F44C64E8A2CAA9D17618E43AE9E140FC6ED74E +A1F582704FD295A2F7D7F5AC522154CC579F216EFF559962BED93065F6C92422949BAFDF999A9A +F6BEF1DF64D0083ED2FDFFF9FD0B0FC08D3DB3ACC4D365C29C61B7E5D743720DC8FDE1D27E38FB +D805C8F842C51C5A1477A5AB3690ACF536E4694F74E607B55597D100A02F7A951BBD82ACEA21A0 +35B888FAABD973EFC8C0A082F8EB9A1E47921403501D0F6A70B5E4BABFC41EEF232DF2099BB7A4 +DED23A34B94A130F0EFCE087D96C650152EC8D437C71C6D1B7207AC1BC1FABD1F090D018036F76 +E4A5DECD40C34BBA11C3F9A752FE0A17560BC1403D8EBF82BAF034E800FED730740CDC9FEA419B +15F70765B7796431D84763C5295E6AF8D10DD4A2D9F0B33A5C11B15D4E2A661E163E360BBDEF13 +21ACBA21D10E955A142DAC85BD57A71C8C8EA196C00B233EDABBA8CEE242122CE326E7923D172F +EE44198FBC2449837957F3AF98CADCBB3461CCC9FAF97A9B5992E146105075AFC2738855024CAC +B216462E4DAA58DA5B1C0F57A6853945155FC0CA645DB4D8A0B6B228432F9B6943798E03F87326 +050E515CDA28A668BFE64F21CD1FBC7BFB1F8054EDC3081739D0BA67A3D2DE81447B6BAB158D04 +BD5E0D8D839738FD12C7D9EFCFD4417768F6911DC31C100362EA7CD1EB9B29917CC2E429BD4B3A +5E0BB36A4084282EE4C86E95AA80602EAA6EEADB7998EB398F16E09C9D2CC2D4C61DB00B582B12 +F91312324D43634B46052BC08BDCBE64C1D6D32DB717E0892D93AECE4433A280A47614357BB04E +D68C77D4ED9CDE1EA7A33E06BC7C636FCB7EF8927CA9E3C978C7976D25A38DF965C2B7D25656C0 +E024A212956C498AE8F12030C9125ACA9633AD2039D277E68F4D0FCFEB61D665BAAC9362FF4F19 +8F27EE910894231B99B7683717E7A6A711F7BA17862C86988A0202B8FEB9BF524C6B504484DF4C +0A65BED4DBFCBFC983BE5CABA71A4BD75FB3AFAAD66541A6591B3AEC1CB223B90C6DC641A4CED6 +57DBBAB5B2779B15D7016CCC8B751BF05198DC076FD0AF09740722E527DF3C16A6011FBD2F10E9 +064065AA6B36966960E5F16E13244DBB21A2DA04AD37CA8CDF3D9EB139E06E21AA9BF67123D05A +F5031F001DD27994C9F6D8AE7EAF012E02AA128158DEAF47ED52FF8AB599253EA716934CB71AC0 +52943CC2141FB87BEB18131B5BF19270C5CE7FEEDB266655A80A5B97DFB0340FA65307664204A4 +BF017AB4650D3BBE7D17457BB00007703AA28342C11E02F48B27A185714623C0AE04886F092E1F +6615131AD5AD3BE8D2BE0A4B8F10C9820F80957587A6691C107A68D3A0B8441D13453C75A48492 +59A3144B2CAB49924D191CBAD2B95809615389BAD3DB778031041815564F92BD784775E832E1F8 +48B3472021179A8ED1335CAB488B87440A385A55BB7B201D70FDD310FFAFE84ADC2FB921DA75EC +C273B98CA8BAD343A5A6EBE78FD8890727BCFA71EEEB86EE14F6D7F3B4020F17F8A145B01F6470 +DD7F0802BAEB8C30EE1E71D23D0D9B21444E2A57FD9754B44C83C6157CACCF439B3E8E239EF3F4 +1C651280BB71CD6EC2A47E08D39400BD769EB6808F88D0809F1CB790B9BB9959A26E6683348AA6 +66974F227E02569F6189A15FD027055B7DB7862C7B639AC103856C27B0C5E99FCD0749C8C5BD3C +8046CF38DBBAD1A2767C8CAB711FBB09346631825CD6C0AB7F21D0E3406008DA2EB60F51521A93 +0FE303115CBA2075DDE51FE12EF925C9D5452E4A8EFB0E9CEE8DC1F2309D5BB6709FB8BFC1CC6A +DA8349DDE38E02B735AFB797DE1B94396D458E9A4539583AD3CD8D3F4933A4BB3A5B4BF2856EE5 +5B47A476CC79DA534F696AC087E5C31B68F80DDAFE74B6D5BFE82DABC03707A8B8B1F4A95EB5D5 +687F5416D5D566CBC971FF5A95112C449EC1B1F46DA994F3F4CF24CF18CDD7850A42EFD8BC9B85 +4028B9357699C58D1965753EEAAA7FCE66A13B627876D89328170DA431CBCE35B9940DD14166A2 +4A8537D29FC84CD08D66F61140FC79A315113BE47D1CC323F727EA3432EBBBA9E7088778D6374E +8D979253746C5E77DD618AFA3B4084834022987F3D2D9C1FF8EE6572A425D9F60221D5D9B8FE7F +49B53D1E43C2747FD478D350BD3A5B23E42D2887C17196433AD585B92348ECA9494B24BA271FC7 +CAAE609CFCA56E8B38D1564B091923B828D2767109133E49220BEBE3553DFC3EC0F5289F5B115B +3CB13F02E20557DC14FBCC993F975D88A44118F2B6682DF1D5B54F4B3791156631A836DDDFA336 +6399F691E46866B048F822A55D0C3EB58E307EC3F9031AB9523B9BCB3368858814523448B85404 +E536434788CEBC84539BF1E51BE9959161F14A228D9DAD451D930FA6FBB95EB4EE8E0694BB65B5 +76945E110E5099240FB0E415F0188077017E243A3EA5DC8443E429A51B8B86F28BEBDDDF914BE2 +7768B11841B5B090D8522861B86C5FC73C319FE746E9738077A224F506565AA73E4BB3D4F8A44D +C3B51316DF558AEDDFC5D2BA0CD59605C554D80455312613A75E812EFB415CF6C2462DB6581153 +83387BB6917051D5651C552BA76557C531A4FCC18C3727B0E020A15EA7654CA9E2207227C662E8 +1E550AF215BE4D16A5F0D71C8CA07E70B411B361937CC1A45CDBFB6BA952C737FBF71448B2202F +8668A5A518B9704B358E89F9375DD92F214100EDBE5D679E79BFF30C1B9A76B9095326E935D2DE +B243D920BDAC1ABD2D164306DEC1537388B6D222212BE9A9BCF6DB233B68196B3A08F8F4E59916 +647E8D61C60F3FC5CC5967564089A1B11257C0FC70B636DC461CBA02098403633172CDE8B85C84 +8B15F2276675ECB380A6A092551476C83A8C01AC425F6551662A839A9559F975A8B4076791E333 +DFC94C025033F3C484DB209C370ED744365C91D39E7CCBCFA2D9B5DEEBF5D21FE463CC6E99368A +7B12625016FA65F651E55C128022D4E1F48A5263EDE160BFE3A61F9CCB3FD03CA5B156C864313B +7B86A8B0A026D50C238B6176D6D58D3CEFE6F8C387E9E16AB2E389EBD86523C0635301D2D88BA4 +3962E89B4546EDE4ECA56DF241CEEA14A35A26043073792DD687AD65E680A9655656F2FB997D30 +88EB9083623211E9BFF286349CF0F81C94456FF2DF17B2F6140187AE8F8D008EDC9B182D26A43E +B3C0A8ADAEAA650E9A38D3DA23C7797F531992EA4340454A878FB288B0C93A5DEDB97D1C8DD3E4 +804665444A241E617FA23F354FA04401D68EB7D0594BA319DEE6D6681B7853EA231F01441082F8 +A22D31D96EC65B01967C278155C830009C822D0BA4D23F9E87676EC849FA6E9469B7B621E565C0 +F7F4D3A6FF264B40962685A31BD7B02B141E0E08A44951AE9A5EB1967BFE39F8F2B823C6F4D556 +F14689C5EB41D5CE76E4D9A9857F00B80E81BE8DA5161F009E82A14DD43FBF608880D643EBE8F9 +EE3D481728F74D5C566B8BC843D61BAF0683E74A3DD730A055D5525814D50BE57EAFD9BAB984FE +4FB80E1B886697C5539FEDAC677B7C62F02CF8F86673FFE3B400C62D935537DC8C370F4A7917B7 +90D4F4E18883BCD12AD9AB83C78F088CE308EC171ADC6C6CC193ACF3EC115D36620A1B04926CE5 +40EDB849F37335B5C6388A453A018D69802498578BCD36699ADFD797432EB047E88D4DC13BC7F7 +53847CB0682ADD838F20904089E6681F290ABDB952F120B5622922575A6804C82869A92E214739 +3FE070B910FC813C8806E5BF303D5B5F857DAA1DEC9146A4CEF235B834AA2BF82056580E1C5BF8 +8C73910712C9E5FFA400D05AF06AB983E41901829DFF3188259B29625849E0A2C4A50CB21C0E09 +9C0BF6A48CC8014FFE4875B19CCE7A8802256A139E5E3ABAB755DD1BB0EF3BE7A7F503EC6A00F7 +FE4B023B2420BC0AD29E77DC28D282A64F541A79AB47C7963524F8804DFCD2587800AD20570EE0 +1BC55244321D6ABA32D35D0C2055A5E12910EF68281B91C72BB44343043E104AEB49C2A8A516C3 +81C92D2073EF241478BC1638FF53CF2BD86DB9ABA0A47C4E7D5D691F2C4679246702EA661EA961 +4F537F6C56395B48A4134FF6984699CE00AF54E07D94B1A7CE3BE3AC25FACE41A11B96EA9382C0 +1E234ABF28962241DC7AEB5E2A415C6BF29DF723DF22D5891048323D6FFC5F3890A8CB52FFE274 +D620B581E97A8E231559DBF1D2465B97568BEE4E59F793EE4B676E740592D7109EE508840ABD10 +3D1D2143C82C8891444F5111DAE89FDE1FC0F49EC5F7B3B682533CE3DD8FDD53EC37ABD0492834 +4C663EDF21C461DE96123E4271B63ECC87BE18D60036A6B4D55DEA02D5416A08242949EFC07D8D +D1092793B2BF0BDCDB43BCB751E4E765C977A043F4EC19B598F8375D2D240235792D08DE3D307F +28168053B009FDC15E41041FE45776A8A26E1699C208C410B06E5AA39491483E175D0575766061 +1374CBFBF9E55EDF7732731156EA0246FDA47356A4D743A634E0BEE8A15E6C77AA55A6EDE42990 +BECF920079057929706128501F95493E112DAF319AFB88EB0E85DFDD60C338FA9565974D43D88C +C1E0BB0CD0878913395A4AFBA4C27E39977B969F57E1144B315D2D88C37411BE59B3EE67D1FE66 +8674E4DCBC0E5C1C9E5981E72CCB1B8ABD2EFDFF34AF1EEF1CD416ED1B65A35F46EE24F12BF012 +9423678BA2E30D7CBCC697D0AA52CB556B8AAC47CD7BD3DBF019F1E7CF0933D4F37FF65712F840 +A7E86CEE534AF210C19DB35A025B2A347C2E4DFFC2E570DBE4835E5107D6F18491EF6CFF77AC9D +3E113B7A4B779566492F5FD8534BD997CD099EC7ABDBE8FE9E7C5296CB7C894901521A7FE79F61 +51C6AAD084C0AB29D97B039C90125D400ED8E2A8E29A0862863139779BDACE7150E135D3065AD2 +25D38FE841F6A9E7150ADBF6CF9EFD2A933BDDE49C0EB2DD5834073DAD553EE4C9518F5C7D6DEB +4956E1C8A4C41EC7CC93AE2FBA09304519A30F29263E81F26CA7B23D391216C1ADE896820E9702 +1671BE760A711CD6EC47ED04FA2F1C0C73A4EE15421D64ED0487C73FFCE1D0BF8B64AF19D794C8 +E8AE7DEA3106190958E8E4610C5616CF5CD5D2CF0EA240EE4F88BE715834994285223A7D8C45D2 +EA9AF507038B96AB728106F1979851F2FEA208A999F70048254D8722F398DEEAA417B532472376 +11DA1EDC674DE316E508E31F53BE2EFC1FD3A2A52A354D2C77AE1BDA8DE16D117D696F4CCDA663 +A49E27B9BC8F8C72600D5B5CCB2DDCB2E1014E9E160E4AF4EB246F7BD4B445437D05214616F84F +254E733A7797BC915925DC02012492720DD99590B5F49A1F4D27256E6735D3847240269099BB43 +DC087FE055D7F2869B97CE5A7DE66B3B58DF7AF59C6154263AA66043B31534F1CDBDABD562D2CB +454800DD311D6C7E190EB0EC18E5C7FE5CA72A98829A51669821B3AFDBFC5F42293E546A789175 +77F112E46C214DDCE70F79CE9CE40660EF9B28E6D303BC49D64D8C5CA60893DEA62BA16FEEDEF2 +14AEECACBF607F27ADADF6B24FB00A1570FFCE9BB0D8BCA106EDA4CF43033AC4331009960BECCC +10F5199D9EA4E77460BB13184B719DE34A17F0E6B46FF33891FF8EAFC66BE7B6699A58F95DBE48 +90393BF0FE679D0DBC1DD7F758B31AFCE805E129E8481BB09BB05DA0FABDE12B50529C191F425B +C220684EC2692CF5F6B600C1317C931E1783DDA78369021D130137A2E119B6EED0806B0579E5BD +350CA54378D684E38D705E4A31A845D219CC6CA97493997CCEC35111F1048DE1FA9592D22997AA +4F932154FD43E0A32B1F5E7DA7C2AB7AE812E47F41D9BAE912C0BB0A22F9BB5B66295CF66D8F7F +C04CEA12069F8C597C770A50FBB9ABD40E328BA8FA9D277DE1F05C7F6EC99FF44D2155FAEE1F26 +0382E065CEC6A1D93CDEC66EE1F3613FF85CD50E5F7353426E715B358BDD8BF65B75996530CB70 +2C01B88384A954E344D8E68524A6A51EE802B7E1BC93DA7AE3F3722C76A5DBC59D084E8E8D1FED +01B8173E6DEEC49F43F577F4DE97F880E7ABAF76715074936AB9B08A143B22AC05583F38039557 +5DC7857892DAC3AB3F76811F75090F87A7DFAE317A2DBA24A540A664E9568E20D1628C7A457E88 +7A873C572459294857D77C18AD89E901F84AEB3535DA49F7F42C7287B5C63C749AE27CE5C90802 +AB660F5A3B032C56A7E8D6305291D1F7399A5B4822184D53A3E20BE183C911409F8A284DF8C975 +AB2F857474F5FB88ABABED37EC4C8806350ABBB53C6C45DC8DF1F0B237A33F9C3280FCD6812A7E +1FF09FDFB0BAC68BA5A3980459A60C4512887EC80906017B793769848F543DD5E53A048F5E93F9 +B9EB1E918FFD6F7F003703F88DF55E9DA339BAEB1DF96C988B15816AC00D6FA9525B55841E173C +CA57068C68DE8639C9ABA8EDA3C6E64F6449E38A3B607870CF5029C9180ED566DFB79C72CAAEE4 +A82DBAFEA9BDF6FC83C8F820572FEA3A9E823177048904BBBA992E1D1CD8E41E23F85B0F2C4962 +A78D9096E4AE361CB3B6BB2CA141ABEFBB30D12E79A0E2D7032F9621F02552C73F388876C99BF7 +D2FA294B60325D02EB1F8206F5DC7BB8B9E360C9903D1B78568E695D7512A0030543B7534DB7BC +1CA252A75189B6AB5788EBF73B2BEB68205226F57E707CBFDEADF368E732E8D1B7239E9002B942 +D799343F522127ABC11E825554024F7A3C3E7F65CBD0AD4F0582AEA78BA2FABB91F4F47BD80131 +7C5EFE14FA90CB95BF1DAD7B2337D581C761EAFFC0F54D1C6B12C3CD898452BEFD27DF5BE41C90 +B237D4DC0457717EA3B6AE34DDF09BC1DC1AEF4A89D91F20093945EEF2BACFEFA52D4996EECAAC +62801A7A5D35281EA5C655B2DFE74D8CD52CE23AB8A9589ECCEBA7CB1C34B76391433C69D344B6 +0107470C7DEBBA58048B92104EA0949F0978B745A39F581C0A393E0A6F9EADCAA65695D9EA92F6 +51404B12369C38C17A4B6B2D7951C14030C249943F0BAB66C09A790456AF58750EB7F087F5270E +D25D463BA9C4C6E689B3587EF5E10ABC157853992B2E0D81D7267B0A8E6CF33110125BBFE5044A +BD0DB01CE82B87EC8036090B3D8717C16D78C8580FDFC4BB27B7FDC59C7FA820F17710DFCE0C87 +A40294A8830C1C4F8030D2BD2A27F3446BA7693E85F9FEF270EC9FFB88CD2C8190A382DA7633A6 +CD72BE933F93BEBF275B14E638740D6597C42B9FF9913526F4338637983947CF67BC5471640FAA +868524D33E1B670D54FE584E48B10116838CB395555B8F036ACDA281D7735BC0D77E00BFB6AC00 +13B1C929ABCDAEC33CF79A3BF4DE476EFA3159BA61831D5AEE738D0B24A052FB958FD143DB98A5 +8A5D95B0C71338A262F699471187542EC8A6F3A7B5AF9406C2F9926EB6884D78DE1F4A33859493 +0E83BBDBA4D36AF1AB3DB7050F35C81A6140B4E1E83D4B30E903F29473C31B54D913A870B60969 +FD20F940DE37EE0F1391F6248B1747B6DFB93CA316E5B1F63539D971FB85193DE35ABA0D509D9D +B272F57A9EC97889397D54C932F51D81E04785680A17DF66B05CC9926C00A6134EEF723FD05476 +91DAAF91D9005DF0100D64D691BEA61BFEE6FB7905B60D4FB0E89E66C2C38C77EF32D5A437FAE8 +4D3ADE525D466253EEF89C54EBA0362F1460C4C59C3DEBA230304D7F01E870B08EC24D68B7E867 +FB35EE541AE29EBA6FA43E81DB66CAFCDD7AD3DAE9C3541759D862EC62CC62D4FCE4D02DCAE242 +1CCE700E5E570EE943F6F328CA397516A3991E3FDD34BA1F0044F70969F37BBA5B5832D1283F10 +D595602590DF6D9D4DC4A39E842E2A1D747222C9CBD3F69B9C0F5FE4D428BCD3FD7D22153798D3 +01897D6C4A5260B6EBBB0321E2F16D1A3CF88534FC2D813DEEAFFF74EE90E09896273AEF8D925F +D482DB9F4A9DD3D2F31A42E586FFC24F2B4A35946C3B82AD2AD204D94C26A05A92C3B83613C48A +8193B06D74F0EB7B5C456A0217F88DED43FFDA557AF2257E206ED1997FCDC5359845498E3264A4 +68C0A3DB667F9EBF3C404D018CDCC181D966E1E37A7A354C1B4EFC89C1A3894EA45C5AA6E59DA6 +75077B28E16B617E80327867E803371990C4465D05467A83DBB2249B6E2132D06E3D31BCADDE4E +92EF6314B5757AE62A9BCA328804F0E34766A389AAE625616DF86C389DE8805EAB209AA2D88F63 +BCD2FBA8D88CF17917C0689DF55A3D476323388FB40B78C3BBC52810CF6750D88B839FFE4541D8 +3432C73ECA667F764BFD35A251F9B183B10916D217E8B45A89F173B881860E7EC3BED1A31AEA4C +E0160F55F106D8CB8EF05F30F1DFEBFBA278D35B5FAD7267A974514F97D67BF56913C905AE0877 +B11F06121AA4366B041A171B0873F7409C39D762C3BC99A71D71D01B179A7EC01F2850CF31C04D +AB21F475E2D77E3EB2001016CE96B0AF1728E33968A137975D1DEA4E323EA790B7F2CA509F871A +8B37AF6DA751B5A91AD039866663EDE6C1B7D6AD779443434745853A6714BEA35933C87E7B0685 +9F092100BAA89432165A0704DFC2BC7B7F42131369DBEE1300DAFF11F640258E684602269FDCC0 +5FCC0E1CA6D1EEFFBF02D33F35CF07620E3AFED6B144CD4651DC016E49D67D32AF2212BA10FF89 +3A8FF108FB82678A476FC341B2B8CE4981358DA0E94CA3B7C4FE0EF43268AE13E3CA8B1BD21FE9 +4C1605A14CEAEE8E414226BA75B58FA8C81508FF4FD2137C1050513ED4099F617FB493E3749CA1 +6DC12B10C644CEC2EFFAEA030B897874F3CCFCE83CCBFE2936ACFFEE2E8638829D62B8F3B5E536 +E1D44FA1237355AD397F793287A7E3C6AD6CCAF4CF9F6A1F2D6890A44B5F2D0C63D07482DE4E20 +73C7C31285DCEF0FB672065C6F40534612288F48605EE2E353329A7DC0E3667E424BF586A7AD46 +C97255B1C9EF8F134C5C6B8714814DDAE73F6126A8F46574A66F673DCF4865F629AFE8AF24B70B +389BF0BA46C7706EE2EE6FA5CEE1BEC619DD12CD362D35435327738CC5ECA990327C517D8BC44F +3396F091E61C7608353155358341ABA86DFD71CBB9F78D15A94E67CFB1135B9A81A4CAA90CF2E0 +32933F4F6E6CC0119DA994C3B9D520E977BBABDC07929A58C8ED6D8308E171B4F5443CFCA42F6E +272A5DB1EFF723696197B100B004024ABD48BFD40DB398BD663C68AA6B22823FD3CCD1657FF01A +29D626BA7486A84BE844173DECF9EFF9754B3D38F269B149E93BFD80B7F2EA7F926145E44C17C7 +A5296B16490EE406DD53397B6DC03040002D41387C1564F172D61A6638BD3D7233A22F3D31E0A4 +358653F18074DB95425AFD0460DB7CB62509941B89D2E372B032631011279D9EF4F3AE5B4A7B95 +257D0D94990A583F4E97077D79CE88681C2E6D0CF123705A2007459E888C9DCA641158D4BA9173 +07760F133FDA92E8E138E9C4A063D069AF3C1E9FAF00770D427F0D17D7345D1F7AB7EE1FE826F9 +951F1FAC890D066CE6C278AD3344819C62B90BC840AFB330EAAA19EA7F4649A93556F4E3540BA1 +13E87372E53B023250EBBDB07302DA7D23C6EDC2E8D02B7D9E4DF07D19E289EB1958EF8C5DCC37 +318F2B30DE869AEC5ADD37972338BCEDCC7A4DDE74430D8A06087CA5AB96271CFD441CDD7F4690 +FAB9CD221EBB323A39A3363F77211A860F2A48B1ACE58A61D2F4FD83F69A128D8493597D9A9826 +11112AB948E12446B7B8181B43C5C88FBDFB4B261944186A0159056F5A4008F73E28F56D52631C +AE03932C732978E5886ADE47E51D207EC9D68A170E77E3B191ACF487C60D0D49B77F7C67E11BD8 +349F168DD3BA91D4C7BEF21325E62836187B5A07EA9797B497005E3A2A935C949084553CE425C1 +5A2B9E1B607B544FA9200BB588B9213499B032FA3863367916E4F26D87FF0FC9FA4EB9CC7F2E74 +F44FAD36F8B12596F1EB717640AF0B1BC9B6F49261D93FFF867F679B72A50D68AC2E78B2AE7A78 +18D189A1C4C8C577905D0FE5285092C93314AEB4B5F06BCAF7DE22854B4EDC9021192D2F089D31 +E3E2857AEFE3B4B9C0095F1027C6D1092674DC6B8EE58DED6912D93338D507E11F2B6CE52DDCA1 +680E6A44565A0F89D52EE405BABCFAD53680633C40890BE694B2F8BE7465B4AE618F4647FB839E +01CC00D2642CBFBDADA88A10FEB0F4ED3A526116E0CC936BD7459EE9198B23282041E152B7AF4D +78D48DE27FC7708BC94D71EC09A843388C5D78B4055E00D1C6057AD07C704B2987F47010C86646 +5377F617C68467F4EF5538BD25534C0D10833ABB3EFE2ADE953B1B2B79C0FBDC9A4109708C8A9D +7D3FC2B6F309B1B5A007E3C4A3213F0DEDE72D536230781FE13F63A6E529D6C4A42B25AC99D38E +CE0BCD83C0C1D510181EEB6C411A9CEA7EF4968C09757AF46FA7AD4D0D9D1576559D4A2C907324 +939C5CEA1833D5CF877E79AB7602F617D37E43A0358FDD3DBC5BE03BC33F1B184087071EF8215A +FB0956C5D99FF64E39235CDDC5922C0984148D241EAAC2A6A6E41EC7FAFDBF908F909DBAA9454D +D4EF58E72AB0EAD1A2130742D814F4FDE9776493BDEF4B930AD43687646F3A1B312729ADF6AEE5 +AD6735201072599574050FAE4E15B2C61071498ABE1A98EB4DD5BC99E1F44EB379BA5661FFCFBD +F78ED002E08450704878E0801801548A13C74CD4F6D3D5236ECCBDE00093D7296C45880739DEF5 +5431BE7440DD03EBEEF6022FCF30BFC7A9340A1B5CC004A017704F73CB563C601BD448686449DB +7CF4550E49520809B5BE7F5AD699B9EF0EA339B3813F729431838D32ECFF278827B825F4A53077 +ABBCB4B9439D7F1C35B4324B764173B1213661A645A6F515C5F96D96FFA360DE210794D7FC938A +E5459DC18C7773AB2D5C56B1DDEB38341C45573377DE43F9EB9BEFD2C9DF55BD6A09E0B139EC18 +044AFAA58747DF6FD1D2930FC2484902C6B3E9834650361362B3D290BE86513C789085E2AB43DA +6387FC8CE1286979C94F30330E9FC943A0AF619ED4C0E0B8DF335004F6F23616AF6AA6C6599F32 +6A3959EA38AD3E5578BBB5BEF7066B1AB5D68F9E07450831F17461957193FB99A31CC3C26B9CF0 +7015E6E3834C367E5724F18088ABA5ED015010FA689D3B739DE275563DAB6D148FE09F25E84FF7 +42979AD9024C3D584C9CFEA57CE639C94B5A9DF5DF0B1636959FD7DF671444191C68B98AF9ED16 +258B2FD366399192C10ECB42F396B2642D1C9E2E389EA75DF65DA8E4A096C6C90CBB755C04585A +3904971D5C4426CB72FF3AC2C0C61C1CF92B0323165DB653647F5D80241EFC2F5E5F458EFEE1E0 +5D518C18F4378C5F541D4E6AF587C4DF0038C2CBBEFAA5C5E0AA49A3BA50FC32B9C0A20E07EEEF +1EBB3C42021FFF45AE63B625DFC14411A94306758FFA84BEBFBC9F7D98A97A2B08AF85D890E8E9 +737A6B4B29D2C259EBDE8824F20B8565E21909F7FBDCF26D9D3905B81B3AA8A8A89FECBCAA19F3 +D5E320F6DA9D0382A2F4C66D896FAF4495A735F0466D52A5C735EDAC788A33C22792537827D473 +91EA4226562DFB90716C03FCB43F1FD2B7AD9E5BDD1DCC95E6A8AACA925BF0CFD025B6952FDEB9 +8815B5731209494D478527B8428A25328218AB789073DC2383F437C5F21FE04E37C2F7644A4828 +223492DD991AD02D47A6F75CD9075EFBDDB7DE915CE623D99B41EADC1EBE7FAB3A61E5A677A734 +2D64DEF572966E8A079396E85A1B4EA95E464168AB522B7B93D2848D6F4834571954DFADE73476 +4EEDD4DD901A2D4BDD1BD97293B19DB2D567C0389F314ACBB0C8E73787C7A0D336E9EC8A6593D2 +24602340274D7E795EE08F99D3BFD4DAD3AECAE91C72FE5A6617C28C601496F2402E2EF8C7A008 +6F23987A2848113248C4541F7B332327B9727D7FCFCDBA37AB40F2DF21A2AB3432C969B063DAC0 +78B7FA653CA7EE25413119F5F047E5880344B42422949BD429FA312179754341E4F83B7CBF69AF +5B61836C493E99415CB2836A739E1D7836A18B44834DD1A3EB6B47DDFB0F82C311B9F22801C1F4 +1AB0EFF9DFC8C96A5B5D74AB53727D48FDE5EF7DD6FE5DC43CA0C10E85EA353E531773B10C6CE5 +69DDFA48D9DA30B84E8C43EF0025C991A206BB1BF98BAE61F1CAD5E2546FDBAFAE2A102152146E +86EF7F552FFAEA7504C1220FE77764FF586D3DD471A5C87D1556930FB3ACDF0461EFB0E3C3208E +3289FBD1297D5CABED40EADFDB4982F71E4A9836466D2E9032DF322379AACAC08999B19347AE53 +CC7336E79F0F7844EE3EBFABFCD3413849D5FEC56AE9954CE825FCE3A0D880036E063EDD22C9CA +476005BEEFD3A0026BD552B0371D1AD785071E40CB281748C637A3ED406540C6167C0770CEC331 +1B5C38D08114A0C81F5653C34C534CDB2C9C08C66E48D3CE9FA4FD36E7EAF03610A8C213EA7DC7 +8492021217E451B89D0461876ECDBD2AC545EEBD0A07FC122FA19EFB9A64AA134C0496AE35040B +1B829DBD8F70EFA7A6541DE0405AFA31DAAC07B92E3440AD4123421FE89CB2DD77B8418C5D6218 +EF50C81EC8DF2A3062D2186665D2338753F1FE614DB1F5467CD0065A7AB195E38F7AA4AEBD37FE +6F0807CA169759CA5AFDCE8CD6B4083D6054C572565F5AF5CE94608235FF2427678D73CBD31DC8 +E1B38A7761A499388281406C4B5C76E316012189FD14A9FFBB4DAEE59015356D03A3CD4DB5D931 +7FA85A65CFD8EE276066D2F7942C2DBA16A354E9C74419907D0E5C1AFFB20AF96159933A9F4383 +C6F68CD0B52A6D8EE580F68BC0603C4BE09BAB3D06E6F6B6CFBA46345365816BA102D91737AAEF +BA7A128D4757D9A8C657638F9AD4486BC91EC608CC14F4E1E77D738B2A120070F189D2DB65D8A1 +288DBE1A3BAB86C152304D70695ABEBED21430A6D1C81D157E70C6E2A71280906DC75445367F3E +C32C5C571A134C332E0AC985CC30E622D7519818F5EDD48FBFB4136292E929835680308967B6E8 +E97BA2BC4A927968CF7B985BE6DAB8B72C4546E0F171618984797041D7AAA59AEFC8EA6329D853 +3AD146C5EC41C425955B583704175342BC996D154FB0A1AD3284099ABBD975110B8DAB69716CDD +98428EC084EE15ADD547049CDC83EED57F5EBF00093262218F58217CD9BDED9B0DB281D1B8F3D9 +FAF31F6699702EC865AA506E132DA76AAA7240C747FF21B7E3261BB742678B6A9585359921BF84 +C90F5915E2F6B0F4F0F37A76F0B66B5FDABFA79C26BC133F580B68B74FEAD0223E1E9F7CC27345 +72710C5F5D35B3527C021CB84B85585DABE4FD7B111E5C0E9DF4A6F1FF475308815C5B54F4854D +F69128F18014A16D4BC56B2FE2F20DE44557BC5C9C36EC4D5A4241C289EE337093C55521BCD9BA +C7F9038FE903A0CAC24220633F710BC44D3D89BA19A0187E832BE60B05B14712ADBD64DE0F9958 +15857EE1F9DF89D124EF63082B3A008D044F779440DD8A4F37D1E71543748F2D33452BCDF8479D +DA042E2175221952F4037A8AE7387647B22CF1703B66F2612751C4A9AAD3D5A953591619CD8AF7 +0C68E26768EAC56A69642FA99C2590AE534CFD0A23C35B86641F6D8F43CB196D48061DDEB1835F +6C6D1D040D16CA39AFE7D8E51A8CCE35C9DC91B276320671526AA16865FD5AA2EED39FBE2F9AD3 +F7CBE6C83BA8567A38A8F529C9F6050B36A315FBA2F333C1C7585D1EAC6CDCE79E90A56CB0FF79 +48172ABFFCC8D18A3DA5796E0631C5D132949280175A2B4C4B9F60D2D499F6D21F22D2262FEEC8 +201CE595AE22AD9CEBCB503A436DCB4B976AE9DC82B3250ADAFB958453F1782C1667302630243C +F375F25EB394E0B8B8CEDEA6D0F0F46C7CC82BE2AAA97439DBAE9FA3B55EB04D855DF3A7BA79CC +58CE4E1EDDCA97090BD4477A7DACD080793E50EAA5DCDA0D28D12C1CF040B456AE2BCC3790E3E1 +B48AACAAF498A766DFB5C18420F678B5AAF61998E113C1775EC94E60ED9E8DC00971AD5E0F795E +6871249FA595DD3E03E196755D28DE4EDD1D4CFEF40D8F08C4925DB26A0AA806E2B456AA0569FA +B3D5628AC8A52E8F47F4C0E96538A2C870ED1787B702105385C86C51F3686AA50D443E103FB8B9 +FF72E1B4E375B1921F6DC29468FC530835378723AD3BB76554713FE3099A78AD2C7B308016B0CB +9F73885B442011D2ECF98C76A82C8C24348C3627775183A395E344BC3EBE66D76E34E3B4D4888C +DF6660D6DBD4F5B3A3E94707E798D2386C612E872A1C1DF3F16257AE1E71C82117F3006EC25775 +1189E992B4F2E527376F17CCD50DC6D5893AA7486D26A574AA37A7925801642BBB7F7C78CCEFF5 +3AB7630090AFA10254E7639628FCDBDF13A94690195D2596BECACB85E633E92CF680AD66527ECB +67D5518F89F0179D6A19FD4BF93580BD23E0C3EE7044B1C4AC7E2097E0B71B2AFF7A6AC7D10AEE +EB02E28F1D832E916F9A25007DAFC91EB771833904580B423450AAD7CA3021209E524450C3EFA2 +749B76282EDEB984FCD2E1B8D4E1357576DDC605A009367BBD9EDF0FA15312D1FE1E03B285DC49 +ED2425042477118F1144658C4F0B8A84FC85034B194C31B692CF19E39392546AE32F05D05C48FA +EA9084C46F4007A81594777E0823D0649BB7CA8E09087F3208C3CF683885221E864B6B29BCDFBB +D99D2A7986B7FB6F8DA1D66CF95B3EE7B896AA7C31A3D09A3F3AC8C9C7497AB8760074FEE95844 +A411C90D63E3D14BE40E76804E24C753BBD7D1070A7B04D01A36D83347D47124E40C31A0D4AD9A +CFA7007F12A7B2485678E6318ECAC484E11ADDCE9192BBCA9226AD3979C5AB63F8C1D4382A248F +AE6AF158ACA03D539776BC18BD5558D6FF851DB7745BB4F782377EDD55F2EB52A1AA018EB291AF +D858D425FE9E974E44EFECE9A16B9377FB04C6861ED70DFEFB69B5D0E8DEC8A2932E20F714040C +C4C89D2FB8E5017A62D69212EAE990DE5447CEDBB0BA269370D66285DC443248CD755B97C64530 +5D5E555B647306406357D3E8081D06BE3B96584EB7C4A6D14887EA0BC7CC7042DFD610E75354B7 +F54CCFA54945C495350866AF0C838D6CA715532C8984D64567AFD28749DA5C3AE57A97CA59A4FA +509857AE943EED0575F2EEF1DA10CCB660102461E21F79E6FF91C147007B38D71B5492DB3D09A7 +2019F3EB3E590F38C3E90F90F17656D9C4DFC0619063194D90C4232EAA05505603FCAE398A86E4 +8196BC95117B828B22A7EDF50CBD569D6354B49255899A79F71519EB76A20DD6FB2FA8D430EA88 +E7F4B12CB41A0546903996FC24E9E24B35AC6A77DFAB254BC0FE5A7767D86376FE4DA8165091DB +A4073A45CA591A1ACEF5BF6FD5200C04B778BA456ACA933F20FD55C474D6D516A20E7FA0FCE26E +576EB02B831867F043FF90DB5C03ADF0C1C9A348FE9A23B8BB2D7AFA8808F5E00E2AF81514097E +60B7A2BFC7B66218D54A14BE7C83BC880724B86F46B125A3727A128C0C767C4C10654C10897FD9 +9F1A980E76828870E087B4B457A225F46D33254A29EE2FB2E207A6CB06E6545272B0BA9E40740D +C7DB6D64075FFF32ABCA4D19DD40AF0FE7DE0144E7C1C942A31E27C227EFB0327928D96AAED4EC +5D744BEC6DFEA668685EE404A964A88EF103771A10F74AA1533BD37D28FCB887D47AB57559AA65 +73F6B640568DC6AC6E4CA0488BD83A331A4A3E79277CB57689B45DD1B6C745AB711FA6B0181E56 +B881D7B455F1132BCD539284AF03727DD7E9ADE15E626A36FEA484FE3F66E1C16742891D2AB60D +C4CBEC230A14B3A29A4052B18537FBAE3201E7F8007145FFC35B3774AC27B5BCD8A0035082B1E4 +B93507D44C66CA2BC270ADF08C8ED743C0FD42F87E2C85AA4E3CEBBCEE828299A7F09803ABCC14 +A34493204C4936517A31EA868D9FA23CBCA4FC2D07D4FA3CE8D779A4218A9A3C0F15DA2F650D99 +5DA97E04DD6DFA577B30B398C0700FA87132C5318D41736A92E84E15B5AB66C57C0609829737BB +AB5F642AB15F5364893A459BA996E2286C26C1347718F50D36003236B8428CD87251FA51DE3504 +D37BA69A7A050CAC8FD3AFA3F5F282770D4632CDF7E3962E5FCDC698BF9B310B1E33A14D9F8DE4 +34A8FF107A062EA49A0055A439DCFCC6191EF53D39984B5E4D56A2247374087F1FC1DCD143C1A1 +AFD76CF57BFC89973132957DACAA9F3A6F2D0788A44AAB3EF0E7967C662C8B3AC7B46192E53A42 +A7960617DA0BB3BD693DC3F76C44872DD6D6F183EB334373185A780CE1E7706075997F935B9555 +EFA03326E5C4BDBA8AD1CC51D1B8227B2A39A850CB945328196A362DE2CE7D932CBB54096070D5 +3AE6FBA92066CDB449DA32551E643C02F77C61BB94DFCC2467955B6B9A2EEE7B74FB0ECBC765A3 +D449FE8FE3F6F598E5EB7EDA80B42AFA4C3ABF1ECF8A68C3033D3FE363B2E5561DE2430EF4211F +4395FBD88B846DEE939748D6EBF9FCA18D27263D69ED10EBCD4504DEBB5918DEEF510CDAF3653A +D5B49F2FBDA76E29E8424C5178DC31884D8F0E01A1B89A664F3F9CE4339846133999C3388EE9D4 +F97DCB05AA014006D3DA08F366537462AB244B573BE45F01EAAF18B8FB1FC257BA0DBB412F69AE +A17FE7C7E4DE59B3ADEC602FFCE6FFF21BDB61F22A75A82B77BF297AC4FADC808363DE1C6F4CAB +1ADC00360D759A00C97D40E710FE6A764C02F1E40FA4BFD377CE73D7C58B93C4A72008874E25DB +4AB13DAB19FF6416FBD943E8FCB5922DDE6654BB465FE2B480A829E05DB3063E1E4AB5A350C8E4 +18D5A0938942900F3DEDB0CCF79AB4DBBF72493B89F78F713247ACFD5A4067032A952D67F969F1 +EB1CB7288818E01A3D14AD954DA5957123DD76E7C21048D989AA546DF9B64DB4D98E49F7AE1D1D +DCE2355992F4F461B697DA3037AC626A4C8A998D814E411EDA1F511F175ED1DF31709E11A4431D +6490EB43A146A530B01A0EB02DE23A11E705CF8F36D44E5AEBC3F13427E2D9CCC4B72D41628F57 +29B18DE4D1B28263B993B65568E2AC33C1093DD6CD4BADACD5D6CE3C3FEE52C3646DAE8E0C4E17 +283ACFCFD87F4B00EBF0ACA71C1E1CBCADAFF9B3124F59096F8B786FDEBF26B6E6C7B7E3C497B2 +DAF55CE048BC019EF3FFFA82481C3EFBC6A46ED493C7CF8D4370C1EFA66AB442449D54CC865DA1 +B478D3B2CDD5EC8A60515E2BB048F5FD6E91D7C670A1D785AE5679B86DF4E0D90B188573097111 +8ACE272383D763D1913FBFE5FAEC1510B9BBDCA46BF1EEF0B8BF2F4786BB00C25474D49E050537 +EBEFF4DC3192C650C46F93BEAAA1D7ECEE0973DE109B64FA5F7BEA46D051D78F38F881532F64AA +215BE1677ECCD6749E422923C1C9FC585CC475AB65506C7688C17F071CD31618AA443E9EC85EB4 +7699BC722D62B7CEDC31649FF39E7BF48B1DA68F9508F70EFC1E0740E606FA62B6AA71DE43AD77 +74E326BD34738976A4CED8A8236AAA7D005304F73DBC3809EF1255247A723FB40B42AB95DA3313 +40290DA589A4E81334B486B130ACCA68E93BE236B56BCD9CD82470A8B615E03FF9BE84C83C2679 +A1604A35BEEBA0C823C945743362C901C88E5E4210F033A1D5E62D6B198F8FA9D997CB470996FC +6B91C1EBB071F044A1B2AB56E984BD919F64623E2009F2A0661BD91A14B75C987FE090DD961098 +32FAB971934D6CC5368DF23DC63664DD92339A800754F05DF620935921A86E71D1F101D2F071AC +BB5C3D26A08BE851ADB14B633EEA46CD9FA287C1E0ACEFBAC1E33D105CA03F62F7535077E3E83D +40B28E0BEA9DF1A13FCF4A2BC183F0F76B64A7EFF814FDEA8C4C63511259D8E87A44D0F0BFB36F +8D59DDE3021142FE49BA685E1468A25246B75C828405DAFA2FC67675F88C2163EE3222EACA233E +E41C567A69B0C8267637876ED3C2E94F6E77988A664E640C5EB07B3E5753369E9A283796097B8B +71FF47434B21330B4F75DDDE84416C7E8BC5C75D1030D8715D2A7936D942471E70AB30D0432522 +F1D3E4F0A87954B0202D404B4B4FB91D120CB2DAA0412F16A1F89C32E6880BA018BD02870BF425 +8F26B5D56144054714AA5D37C6B656634485245B4EA95CDD3E416CA3D37018B3BA1F26FC0C2897 +6AAFD4DEF645E90BF15EFE38B04DAF68B304992D6142A29ECBAA1963335B60AC1F9F8A9FF6BA6C +5143FBEF810AB4927485E93F3E0027C17410DFDBC3AEA2788DE54D71AF9E2CD209220B6D8EE6DE +C79EA4B527AC00A2448E053827D2A38D1259A6A47AFCA21C43C1CDE9F163EF8ECE6525FF3B9228 +DC4BAAF3625768433C9C03DF7CF79D9FB01486D40263D5587D7ABC3858E125616CC005C9829369 +552405C156E1A252E619CAB1D77A88ECFA233864E74292B704A75EC0A5430631780130EC693634 +96818F956D02878B023E60FA0DD1A594F00EBBD77543A56A3AD280E20CE933A346847E9BF5D0FB +AFB4ABC8FDC7AE353CBD66AF7D6ED9597FE087B3D99E13EDAA108A150D82EEC0751B56102A8268 +6FD9C20C85AB00047748FA0A273CF4F0FD7D3669EA5BFFC0A7BF5C3CA14CD222AECA3EC0233820 +7E3D5D46D208AA6FB22977D795BAAE273D287177C40411072D72F5A19FFA41E6479535F37745FF +1A7F71FFA0CC73D8FA57D2B7FE3739131776C9D5CD93B57302CC86279C8BC8E024EC1723C401DB +FB636C914056E9BF59DA6C8B06DFE022A3EBBCC5F9712F73E7B6F9969A605D2CD861F676B84118 +B965F75C0B21A237C00AE92CBD775292DF5C699B6B5B26AFEA8B972B7921545CFD5A0E4F103D44 +243FF15343B57A3EB70252C054699AF13A25DBC7C1873FD4C0699B29792A4BF748BFABF84123DC +E681645BCB4A78AF1F91E5227B06D377D83366E1C84F3F45C2069DAC547F6511B0115ECDAEF1BC +B57985929E5EC080D4149DC63D2960BEB83707C6F62CABB1862C6DE2E62DA4F65BC9D9ED7F2F75 +531B0039346FE4ECEAA0EE13A7E5FA9F0E27E563CCCB976100977B4969AC23AA41E18E536D8E55 +808695FAAB12305538E92929C56FCCB8F6EBD84A200321D29935FC5388E1B3DC999CD7E8D2744E +90699D47B4E0AA945910FF3971275FED0FB8961434CC073B24012EE07486BF72F5CDBF2590436C +5972A48E2E21824E6DE7395C6106415A15653F71BBA48D38A530E05E33E192053C4E706E71065C +E0A54E63719EBF42797CC7D2CCF3957768D7984D84DEC9A1C555A9ADE8D70AE3257669322911E8 +C7E94496E1D267AE5D0DB769D997BF97CE3EEA9B14811B1A51723320C23DC2940292D8EFBB5BA7 +0D0E65F49355CBD18B019E5359561DBF0FEDEE47BE4449A95BC4C8A9221C28852E286EDC0C41F9 +E9885F2AE9E9C6456B8DAE276C5E12AE94EFE56E76663A4A3192CC6AFB6C99738431D4F08B9349 +E5DFFA6E8ECF8203A48721531E9EDF2FE1CA8385EFCA455C099F387A94D84C418688E5BDF6CF9A +F2144A744C120AA47992B0AC3304BFFDF0DCE13BC8B0FB1FA225BE5E912FA8AC4AEA67E78B3D86 +12D2812BAE8D941CBF813DBC22152BE38E70C33A42268E68D2A30F9CAA36773CA0BBA9CDB5D873 +4590B7C0F2BFBEA7375541EB4F6465EBACCE364F1007383108E6EB709BB516F2EA728B345A1E36 +CCB0F6F678631889B68647558A13293D82137D22C5D7F7C6625BD7ED2B2539F6B5B2EF5C94F6A8 +37C503A873BE364D73CBB2B0E84A41E9FAC49F646D256C0A73252B3DF48D092C9ABE30A65357C6 +42EF0E76B277D19D8A2E1CD446F27058EF91334E3EFF24B69048D49CC24A5ADF2D88ED3DD74D3F +D5CEE2C29D475CD1BA21E6762BCF4A8251624E4C482A0898599880FC95D11A9FD4AB34AD1CCD79 +47EEEE6FF948F6B33EEE2FF893455BF137A9BC3DEDF3E485354FCA75495D50CB48DE65C73EADB3 +E3FF6D273A9D16F6277C857C6F46719BFEE6DFF793B35CB9CDAEF9D750762DA54494C185DCB155 +0F5B991B1C452F7ACE982972EC88CCE8A26D43CE62A8D9721065EDAB55FEA2CF85256FFA372109 +C3AEDD6D8E7FD598BBC2E1C8243092A061D2A41636A29C96A9674FDA64AE649B655377DAC15BED +9453BCAF5AEB23C217E39EE61DF57E46052E8E892C67C101B736348326148CB3E93314E12F3104 +8166727B2F3A938B0D9A3F85E8B28D4BDC14F5F5EB6AC1963DB8C1536C4881594189D8CB1F8373 +E953E573A1D16EDF3BD260E0293A1C3F27CC6692953E025352E169F2316E6A9F743BB7F8582F33 +B293BCBEE7E6C543DA1900A057B709014109BF7CA711B5C49FF2D6AE35D6FB94CD5751F6274D10 +DF458817285DD2D2BB24CB4011D1E749EF897AC428B80B4DBB799004636BE90EB3878E016B9738 +FAF83316071D199B1250DBA55201665B591BB0DB74E586851C9085881394824D19171EA95113CF +AB7F42110ECC2A17C15D1A0508DC0E943381C3A3560611BD98FD5C1E9454011C50D916E097F380 +6C35C7951265C53C5B481F33BFBF930533EDA2E7511BDE1D7EAC662B437679A503850A3D5D620D +DC071FD6EE5B622A5193C29E6AA70650DD4902A5F459EA83AA038549DE5F9B11848CCDCE2C3C17 +6990EF27B3971CDBC72B54AF8302B6541B42AC4EF73EF101C78DDA942B359A6E1D2602F675D49B +71BBFFD030AA1B757970C596430783105617124A0DC16EDC594FB20120381AE002455CD0ED0CE0 +E2EC2D18BFE68910872F518D775E1C25EE9B8A3DDB078E9C8D9B81A3233CA9C2329D59B74FD854 +AF4AF795EED5FCADBB05AC6F79C3E97229A1087028659971FEC5AF140281DCE765FB402EF35195 +46DC9A533719DAF5481951DEEF36FFBF352488BC9DC6E6EA0DB4A27BBFF23AFFC93D76A2687282 +F4A29C9B2A5975A32CBF2CCB1D31233BB8FF494028B55EEE4368FC8BE6670E35AAAED7CA9B795C +BBA4F69557A511865EDE165F13D8D85A1B9BBA73D93B8BD5E08D3EA8823E9A34DBDF7C391B2DCE +895B7CDA82218451D13404BB97E847286BBEEEDF47C80D09468F575499267578F13538F73BADA1 +F4B26FBAD6EDC2100B753D0DCCCC4DFA6BEF2D7E3142A43119AF0C26A0819F6BB6359B3D92E9BB +8131C91711838EBEE67951C0FF9D9C8D7ECA576EE4A39D06281D1219C83E5B402F10CD6A7E2152 +DD91574274676701A930247C47C5F5413965E9F926FB66265A33E2041B8B311D071507C47C8DA1 +AE855E39BAB11EE9E050FABEEAD8EEBCAB0C55EBE987E3226BEDFEA88AC1B1E7997FF381BBB162 +2687CBE6833B516A6716BAE4DAB7B6D0CD1E6CE64A737F86F5EA0A21633FF1EBEED8A588573F87 +913EE94BF511C74B7CFBBEBBA9B4AF8BFAC9111177309013CF84E0E19E26ACB38DD146F9A241D9 +0832C7C9F69CE20F1C26D865F4C5A125C4D078505E87BC48E3F0A03B4E132EEC1E9BE7F2412ECC +2F233BC521FAC1AF527E8C8142F7FA7113C6C6204C2D035BA4CC7D149111C42929C76A4080919A +3C7381D8682465AE0FC93FD135AC6F3F71318090117F193B5C59341EC2CE935C4079B074A92ED5 +57271F58DA4AC012D3608FD327EB15373E393BB96D08737634F4B914B7A00B22C580BA49BBFCBC +4B28044F31D30EE5719982DAA50A77A29B354CABEDCB42BB3CA21C9E9E3380038DD3C031E399F4 +913EDCC8615D21ED3BB672DF194CC772BF9098D90F717E62E2FDD7F6D7FF0F3DC2C6009BA3ABBD +35CA897CF864753EB28A24E6515966F3DC62B8BB0A0F9BEE51D406A70C34283C6561163B144C5D +7C46476F0970B2C67F5F73A2BDB04A6FE1C95656ADE2916B2D014CE2A586AAA121FE2C893DCC6F +3FD701D4D641C355FEF88C993DB7D7A08667CD5B981E11DD9B08D4D5CFD91DC2219634FFA56958 +B32ECF897211828A57F9572323E8442044A5A603C7A00F8B631D61363537B8066B191D280CD05E +32E2FA75AC7F5CD585A0FE1CF577760303953E0C55E46BCBC7FF1E1AFC7245E3AC9EEB237E1396 +BC62A9BF59C536C96AF914D5BB709D6973CE1C18F912DC2658E2E1FC6C595D2DBB12726403C1E7 +A131F5D8088C0F2E41B5A29587C83F5056A8591B0B79F6467967E10A249B6155F35E3010CF1D93 +F364A8FC18E5E5CFE3FD7D1A514A68FC6023EC3FCD18411A5C3CE07A2D91289A957D1A119941F3 +913520072AA0F455CEB894A468BD88E658345F1778DF7D4E1C018A22BD2C4138E96BA7B11B3948 +0912BB3048F6B77D9736CB448496FEC1E5E24610D2948C768EB2037D63D8B5C00D71DEEA418222 +0118B93E6D0D6109C87716281011EAA28F034172E5040568986AE5B69B99828872D20AA8B5891D +D865677142731A30B6FDD9E244F4B4BEAFAFB4551899B0B9BB2D78123C63B88E7E35BC73F3F1D0 +992CCFF4D87DDF969F39CB3FE532567CF6DB502278540A8665204E9DAD9A24E53773192DDE0489 +37E3B1E544FDB95356BD590AB5D88DBA1F9E0F212748FAE4A2E2EEC334B37732CC22995B586EC1 +71B1B2CAA9CF874053042ED3BDF7BD4B01ACAE3604BA783514C2DB604985ECBF2E3B09BD33D145 +01E1CCDC3A3939CE1069D4522EF2BFB06C9A139AFD2A8741F9F37B61FEA37F3E70A68908374E1E +B44EE01416147CB5EB153D81409310BDD4D225CA635DD9486BFE0FCA70A1C42946070B34947FE2 +868123FA0D803B291239B92A127015FBA1D37264E026CE037A890683348B7343630B04B9BE7261 +DA4356AFB160607BAD0B9521D967D74BA9E85AE7EE714390D538A956256947DD3CB294DE810F3D +23D8DF87A8707663862F4BB3F397434F5F932FCE0C243BEB7E153570BA0DBD46BD205E92211DE6 +6B76309A72BFD9954A663E28F59E1B866420093FF6FEBB9768F85FF44757E99021A7EC5373D0C8 +BF271D64B085D6FEE67D7F4B42A54C81AA32AB0E062EA38366CA276B52839E29B2641ABDBB67DF +0BCB97220F93E680F0C0899FF7E14134C6012DA212352D34B24ABF8F6BD900B784E7E728444B7A +7F0CF11C80B4D126EECF5352A642F10463790087AEE07A040A89DCAFA5C73AC36A9D7CEC29E695 +08EF05ECAB655E76FAF0C8CEA41FD8EE73A806D13760CF1C74E48B82A63B13F554416628C3A363 +B3C846BE03E3A06E2027EA96448EC839ABB4DFB7387CD67AD21C44FAC9E9E0EA21136202FF2193 +A1ABA89CBF341C6E898F88AB3399620AEBD67C535926DB3F14ED554D19880C91F549F93B009890 +9DBE16D1C11ACECAEC979833799D44BE378F989C4E5D690834921F6528DA57885460ED22DB5741 +A91FED234C2BA02040F8A87DA6A89B66DD3C6CDE8480749DB6DB0D4BD76FB848F2491811A5E616 +D4DD8CFDA1222CB9B3396D7BE71F382A97FCAEC3C78CD34CE8A3AEF2645055DCE65E6DB8126DEB +6332031318DF134582467892658573B353CD9501FCF086A6EB19CC502D4CA9274D158ACA172C18 +F21F87B17D5E0078082F058ECE79473573B31CB1B09E33E7C29F5DDC67B006D38105DC187136A7 +06E8BA9307E6DC17D77BCF3ACF27DF39D72517A5E0B7E3001C43098447492F254E792901A2D05C +73DD46A2CE6760B87A8AC8079D5E28199AF1B63A3BD02447B6F24CECB2FDC04583CAEE048B75EE +BFD4110F8373FD2C3BFEB4656854005EB847669319D71F5BC505C4C49723212D69237AD69BB029 +0D4CB4A681692E4A62FAA150BC2EDE074CD3CECC099BC660040D0A843F94F5898502B11EEA1354 +4B2D47CC96D6F2CC5B481EDF8C547E064DD8F648BACB5B70C799F4379EE2984BB18A520DB94960 +DC6BCC3EC4794F7F9EDBAC7C30E4BAD59A90C3DDAA6B573244A099BCE5354404F5B5C42AF1D4A8 +ED6B7EA6BE908A2B075DC2590BCD3FA3024F8710DF5C99FD8DC3D33EA0D4A4F23228C0A5F70410 +C392EADDC96B6465100A54806753BC34FB1750C488335427A31DA560A99BBC5864EF0A6216B4B2 +E4D38D44AA18B92BB55CEB8E5B27B9001E0266D76867B3ADAD043E6DEFC7C31923815516789012 +791734792F85B7608D7C2E6FE07646B354A8E2AD1CB7123F3836B71A3452BB3C92876D8FDDDD70 +F6BEE56FBD64F9D27C1BCB8666E3989F8132028DC3E870EE11DCD216C1B73C8395D03479192CE3 +DAA2AF943B27A14742D7FCD74CBB3CFFC458FE8BC149C9196C3BF2DE21BBEFAC01CBC5D723CD04 +CC197A1C4D0D0ED54A08C596F9AD3E569FF21FD6E7B2501795C3F37FE919EF9C35120557D3C1C2 +637113A69C3B033B61F37635CD2DE5B8D691A07E3303123471C4B29816189B7F92C98D4A65A1A6 +3264B214DB60A91C7726EEF109D99DF6BC05C1FB016F4828ED200B2DD02435CF020F351BA3BED0 +5D040BF912C9AAF1BE95A9AAD5B3921E04ED23F1F45DEB54920064EC8683E7E476C3ABF705D58A +9AA7AC0CC6D591396256BC151F96DFFEFC53C90C2A08261CEFB357AB18A25A118D97AE98909182 +088037B5B0353B5092E2691C7CDDB7658702884D1F59EC299BBA29A25025DB3AB9AE1C5A5F6925 +974EB9839BF63C3A44F2598F17409B32AE301DA8C122FB61CEB18060B6AC5698AD0AF89FE13F81 +8E79E504CDE67B1A8F0B956CE57FB5BF2C896A7051ED08EBC5F47786C7B81AE49C8AE76FC46C5E +9167238C4760E803C4BA9A64E06C13E5BB407DC43AAA89B7D46578E888E25D9062210989201CCB +58955FB2AF629066526AA3D89923CACCE657358B2986C45F1034CDD29ED5824D18E39A1BD4AF70 +B0AA554DBEAEC7924809BA7AC650F833E48C7D60F8CFE3D02D3283A8D1094E35A3D1CB7D6FA414 +6B255D302B74D70E3AF7B65FE5567E128C170DDEEF0EBDFD2CE55B45E306538C8C596DD4DD1CAB +2B06036E11A761F7F357446F5443F91E53D1B9B0EB2AA0F91EACA03ED21D55AFD7D399F1F4C624 +9B8408C491F9D2B918630C40E01DCE5F8F5825B981DA04CF6C89CE0369695F54F208DEE683181A +4566711E0114D3594D73039139BAC23BEFFB97A2AEC635A3538734DCB4B186DEB932DD1798C727 +3512153B8FE17698AA30BEDA9E81C501C338646327EF74F0013DB6E5CD0E402BFE27CCF4E5860B +9C064A069EFA55535A302D7510DA73C5D3071B40636DC5149ACF78477ADA13C004BF4950ED2BDA +20B8702FC2036A15CCEE254919CF6D1F4435549522D2A289740ED624AE86F9A44ACC53EB524020 +C9DFE96A27C742AF3E00BEB14B5FE2B25EF5E13B87621036724E90FADBC81A83865D4490AFAD7A +CDEDAD9DE97DEE0C8B0CA7C920DB0838572CB5645F7867135FFE657551702791E6E92DB704821F +CF34795905B68022810588A8E6827333121EA56A4A8CF3D8EC4BA8D1F9497D539C52341A88A682 +BF9E29F99C981EB490832270A531D8CA67FF319C4B4C9231C277F269B0778365D7C7BD3184CBE2 +94BDE0A5A895FC327B4BD0947AE30BD6280A3EDFD8F1B055D914619AFBBB956BF83BD22067EDAD +DA3A316A658D95DA1782988868BAD384826F08DF33E25E0D2891BC9A8ECD9417BAC53F0288DA83 +29C809B38F0563EB4564B17791B5CEDCA187C6F0D6A48E47EC3F3AE374A63A8777447728E94222 +38D64FA16DB6FF9BC88EFAB21DC062ED36FEE2032F034B4717379EA275B60C7C6B9F6D26278AD9 +4527EF9C1BF5B418875CDA0CBC7C6DAF41494895B7C9DD4AF956774817CF1E332544CD4FBAAEC9 +D34DDF22E5266D3F196FEEBAD1C8F8184BA311573BD97A7E930FEF5D41915C5C416C98E60A07B0 +C65CFFF01C545C3FBE06FB90C0093174DF819411C0869EFFFA7EFEA55C88456C3B249BBB9856B1 +256B0A4596E97BD21E9462A6878FA08D0732789434B25AD06FBAEDA34C7865A7955E51D1733CA2 +AFD465A0E79AFEB206385F5FA6CA780974C2FB58D6E46EAA8BB7F6058AF213426E751B844C575F +70D7B20634AABFB2662DFB872BD536DDF7BB8990531D005FEF1FCE05FAFF94FC8F7BBC8C31471B +31C4D25142B5EA3A32FD8BD44243054ADF1B93D9E33B4339F4B74936EC877A17E77C27647983E4 +C7D376527C827A3E6A0136EAB5289BE2E3792AD21D3D82676658190152C6B58030EFEE97CF4DEF +7F716526BCBFFE608B8851C4DF263C53BB53BBA7F48EC3EAE87462CCA3C87DEA4F5C3E8F6056CC +84B9C9489FE4AA7440BD1664401427D41CA1BFBB6C9E9B5AA0B82524F0709DDDC71396FEF65A88 +D6D953A9E47575118E0D0A16F6FB676D268BCB6CCB83EBFDD2781CB2D96ECDA2CF30ECF37B84FE +4CB5F564BC6BC08CD43B79D6B18AACAD3F382343C3159FB4B14E07009657F2F74B34B8BC746F46 +433DDA3615A28EB9DA6886D18259E3BC032130657A7CE19204A0EDF8EF23A2A603A2C32491F4F4 +5A711D7C126E4EE7F9D2DFF897662E1DDABA774F899960C65DE18D2283E42EE0333E602681FAED +C5C6A7D8BEEA017AD2E04F71C597D192AA5EE1D6A6F4A13EA6067215682479D957F1F0217BCB3A +69822DCA7E0920CF6A484FA23897268A5C45C5DE08E3518C44D42607EFBFFF8AD42B27DAC84BFB +5D07AD717CEC745178557653B98CE7740653946ACC07204B817D0CA2DDCE80CEF7B9E598316D71 +03D31C9BE362616DA4C20383DDDD6BB33CA084FCC3D74583727E9097196554B6E3EE0F23DC7EC7 +EDB5F376DC02511A6A49A18069298E2E76071F9358A52F7E08F6F5A48A47130CF7C61366F3295E +AAA63FCD4375FADD6245A7D8E7ADAF19BD2E5867817363AD15AE301B586760353988064869EB0A +D16AA97530DE982C4A26283A5B28BAD621BF33F32CC8FABCEB734D0D0301F53A4228C141FE77E3 +DDA569C1EF2EC60FBF3BA3BD6001CCA0574F3F8F75ADD6D5174103D7A5A0D9CCEDC1B35926B591 +5EDCCBD483E6D22848301023F42D8F66B43019E7F1CC57268A775E437B2B6F16EDE7C21D10C5B2 +040FE329EB77080FBE3FBB755DF3C4B4983D198F0EC1250E4954279FF1B8BEFD1F94A269367710 +A2DB1E51B1AE0FEF5CF531E0C7BB69F21F6DD3D29209995745FF4CEB8C6287E5BC0CD1A82D60FC +8EF6D5B47E7B1545EF746846BB0EE901D984C6644FB95F602F49100328C656CF0F4E523444B4DE +39213462B235D384B18925905C089712D29A52E02EA9743FD5CA836B624C73177BE444444B549C +8C2CDB3EE125ACCEF2E7E8C0011852079C4F13C8991DF012D73C07A95857E5FECD7E3F95A65030 +8AEEE6E5B93F2E72095BB9CE707C8D555DE385CD68DCA4352B493B6C097F83C6C00119531C2CE8 +364E51D38E4AB0353B91B8D46976B87D8CAC8FB76D984F1A2602B0CC94EED3EFDFE3AB57D1F4E9 +C8C43979BABBE0B5FB238579D57BE581CCE345BA2A03879CA4B23E3D992C9AEE329B3DC6341A83 +79C7AF8CF9E793A5D41ED3D6A0FD4F9720234D2321F5DB1F679199E170ED7326360154EBE8FE69 +23F1A64BC89C925DD33CC1B705771F2B236CF5DCCACC42FBE82C9570BE0AE01DD8E89A3BEDDCA9 +601EAC9E212920DC978D567A1795C3303DFB6D48C727543F078576EE31654DECA6D43CBB7360F7 +898C1CA41B1550953FAC9CE4515AF4EFD021B8FF82AD66BA5DFA7BE051AEBBF0DCE914D1060CD9 +5B64683571546D8172EBC38585D6A8A5E82F0817D0F5D933B7211711591C608B79557725ADFB17 +96E7BA18A9F3BB3428720BE953293B11937FB3EE2448E22A31FDBCAC6803B7754C42483DEF5124 +56AEE17B3F6240DDFD4E41FCB7412BBE3A1B8A666FDBBE1C51587801055E50B519CF56E085C451 +E4936A23DFB9916F61DA281D1DFC5BF9B3CF70D5EBEFC2FBC7487F7DD3EC11BB20611AD8597C88 +B261F0FB652054AE02CC4A51FB5CEB1F3C600F508B8F6C6810295467DB042852154F3AC5E8DDD0 +01DDE0238A1CF8C47904B56BD5B434E7D721C85E288E8083D89149EED27BBBD694D80D6D48586F +C2DA9009C6B5685BEB849983EC24062AE6C86A9D4E738A2CEDB756B696A7B15F7E57720AF9D4FB +5A08B7DBE16A7164E2B6204A3C65A97573E8D63CB4B7EB9A20CCE290383B5E569CFCCE7477F6A0 +405EAB6CDCE25143CABF03921CD0323FADEBD912DEA94F13895FB5109A60EBD41BE4AC307832F6 +630E16F9A85D7FBFB268CC343F182C2C0D4C5ED52316E8B744F67459F2043F56FFAC9528430132 +1AA81EB5C3EAF3F04C1E30BE61665DDC0834089528D2B08151226B5D1A38A9DFF6CDDB94C49C85 +112D5D66772EC017D3A8A4EE76466C106E2E148EE09C0DDE6A115E3B18ABE619D09DB567F3895C +C31D08B336EF3F8842EA3B1EA1887D3650DB541AC2ECB128A431188F57178FD526B1A0C66C9E27 +14B65005D76738F86FC42A477C8F55BDBE5788DDD5028255FA6AC3A29A86A19CFC217464707E7A +6B8BEB961F1DD303D5C384D563A1276E03C0C23D18926B1E226010F552B5223EDFA33C2BB527AC +ADF5D3FA254165A2543344B871A0BB366FD95F21190E9750D40D4C244022523BE25CBA459CD03E +33E8A8758DE7D4F094721DD22BB7550296C90B8941A0DBA9835A27DB0B312A0558DB91401535A0 +7555689A26133D344377BBAE6BAD8D8575705A816932AD551A1C1A53655B2A25C7F5F3AD048132 +A1FBFAD628C1EB0AFAB1E01BA6312B3EB2C4D0FEA0B14940AFA9ABED629306A52F840584B37325 +7D4938CF7DFCBB97934E5D569CAD3F964A3210FB4972531C7D88514A3EF91B13D89C5DCB26B339 +9165ADB412D66DB8150F9B6017F638171429D1E01F453F1DB67633A757CB86A21C2638645C4F93 +481EFD56EF1C3647E125DB3D25B5F8B485C12AAC4AF7599667312DED07314E812E6C3A9B52A988 +77BB56FFA5D37A41F810C6D8172E8372CE3798A339265B6B9F176114514ADBABC6002DA6B3503B +91CD4BA0280BA50581781436D7D1D7B3BB855E83F98642589B9CEFD62C300F7099D72274628F09 +39D3799526800DBF15E0EB6C207B306571721D9BAC5A1C3F9920706B9618AEB06D6CB58AE03B45 +20C7E9F263A589C4F589C0771705BE8CC83A2E13B82D805A71CB0F8844E1447193A49B79DE88F7 +4A8A27A9ACB2FA3BD7628CFDA33CC773ED7B551DBDC93F2AD10FA4B301C742F212996659C48C64 +20A0C493777E899CFC64E1AB274EE03A135B16784E3DDF9C29D8F2DDF12D06B5401E3B6E534EC7 +385F0AFC846CEE428852BCF76D538F18F96975169F379DA8D665E0364A3B6D44A7910C07D5183E +29A585765CC22443CBC86EFA3C70E9DF939F6B92E22711A36750C28D3122A9447EFAA351617912 +B6DE1CFC172AD297C5A6A9001286B4D7B7A88A4898E5EC24A6A45767DE406936B002790581CE36 +EA67086CC1974671B4DFD0BB28F4470C515CDBB9C4326009423553284CC3FB340AC145A7DA7A97 +411289B0A84CA43A4808C95EC6F82B6A2F859D63DF4B30E7EAF2432BA95AD6CA8199360E9EC739 +AC3ECCE8C0F96220E95A49F46AA42C1C9A3F5C6B31657908092F14FEC5AD4A7FA960C0C38C4169 +B049AA76AB12E708D9BBC2A4E435A517305BD3355A9B677E1245699BE670804C4191B2383155C3 +5206B174FDB66FA835A176346990D595182956F955B348508840659C008BFA4944084586B857E7 +39CBECC7E7AD2A16EE8186B98B8CFD1521ED6F49CB155D8ED63A03E5F3A5FF56E4BE8D3763A82E +FF63C213277D3A7D89F5DB6A0D32CA39ADAB580437B5AEFE4F242861E68F4749A72145F618CF99 +5C157A52D9CB7606847F7916D44BFFEE3B7CF59E3A3BC104F0A0C65D0CEB8EE8A8533B9C583AD3 +B553BE75CE9A03810EEE052130F4714C3799F48CD7ED703EE248658CCE93402E24BB16190C6DBF +CF2C20878D23D8D1DE133F58EDBB23F388878A44838A53FFF93251A7F49FC8BB7F4469BECD09ED +88A1B58F0EF2889B83C84287E7CE07B99A801C10CD13EC5DA29AD589A0F8CD89CAC74F6C9AF535 +58AF4BB85A01227B104DE7AC55002524B942C6CF6C1953C6C28E9B22E40A8EF359D4D2BD09AB4A +154F70454574107259088CD9CE41FD42231B905D4CE7D33B97B5E2BF75A605013559C114E23647 +9BB6EB29A75A37EACC0F89A32AA28A1EF2D4B4E716DC91EA7AB0A74863931A31E9626A9A3BF512 +2F57DC5662804F50C988BBA071580C00C092F6FF96CDBB4455281DE297A9E35C3AC10639AB9D02 +4FC59F6C178CE66C18F6F8A63F0C7DB03526CE78EDDECB0A95A4FE3B624DA3EDE28D9E5845B0A1 +A6FFA16BB064D66F986A5CA8948BEEB10D5C55B31D543E9F563826BB44BBB5D98F37896169F1C0 +C0694794F24EFD35CBE50ED2476C3A46887447C5B1E27A1C6B9E26C29066D0C582362CD3F6BE27 +79570F2D814870BD8171B8FBFC2A85DE7E42D867C52BE7AD09EA473CD48DE6E790203E98D344EE +72BE877EC39E9350287947A1027F558DB67B00DF8F98E20B7C6B8569A90590AF3C31A731CEA566 +BDC155452F2B51E923F93DBA21C39900697A3209AD89B2B73A4439A24FAFE1DFD14AC2B89D61A3 +FEAE78706339BFE58FD8018DFEAD35BC5A960903BBE9F754192AACEFE408D827DB9329A521BBAD +D573F96572A034F51EBDF635B89DB085C2E82F123CC011ABA7AEE92644BB6620162A16D7DBD5B9 +24737E758F9E2727A080D2765B03172B840D2FEA90D36BDB1B0E81638CBCE0D83B71353BCC6577 +DF2200AD4103C07A539190FB885ED1B39AAD680D3A291EA25F08CAA4314541C3D1DF6C994BBB02 +7B9A7F0FFD9E20FB391258B74EDC0063357A4F3296D3D7D4B168C6D50D9ED6EFB0D4DFCF514A63 +80DAF7C26DF6662C1F8A0663874B5D12F4DB730F81AF0873D51DD575344403740D190B0AD3659C +62E5446BF94BD166044C53940E3519444568BC5EC9F2014341F4123F2BE80D3B3AE5CC088173E6 +4600FCA3B86F38B57F1857E16A1C5E501E9887F6EC8B4D6451D0155378328908B12B4D22EFBC0E +87FC4171EA74E0ECEA2D4E674831FE22868489AB0C878ED573384F7C149377FCA8B67DBB39178D +6246330EBD049443871B6939054C86BE428FA81309DCED97E76718E80BE6FF24BA167FBF502E47 +0967B3879F383F55B77A24723EE361E4E694791F279ADF1585B06EB1D2016B3A3032E54802B583 +B3196BBCB36532718D7E52ACEF4B5C332D37DF85095D020D90FB8B763A7FE4F8FB15C3EF964502 +66C327321F8DA06584BE4547E05D284D56E90B2FC70A498CAEA8404C3F1DA8F484C06AE806C1EB +3E02C4B3C519B72DFCD083E7D2487D125E3B2699B2A217A555416E3B6A77D1C0B1C1226B574A57 +ABFE6B23F127D335765CEF6EA8BD0A3DE29225B984F8A5A86DDD9ED5366AB678DF5255101FD8C0 +E586252FCC84310D291912C85541D62F5E950C683BF9E03D32394537A096836AF536DE1177791E +C326957235F40B9EE4AF90634AE5529DD697851848B3E436B4D659FF408A7FB9434298ACAE8447 +7C87AC5310FA428A10A55EAC9AEE3147C9FD2B5A6D36E7490AF546015F120A7492AA8555EA80B5 +36A91D2718DEC819925A07801088D32DD99289BF9C30B789993E1D08B05669B441E9FCD2143C11 +D98245E02CF7A267D975889C218679224BF03DD9E73BE01D7AB5EF33CC671CC81537792037BDC2 +8029D97643571EA707AD80C43D2962639DE08FA221A6F66945A54C49421CAE43E1396697C09FCB +3773AD264AA75A3E11E179AF668D5D3943FF21D477C391F7D0A5C7729C6678C1B78D514A6D6262 +7F8C2A84EEEDC50F3982C5FD96187C25872B811A301CF8E14F5278849A5B7FD644594634579D19 +40876469509A2E7495ADAEA5D82B2EA2C31110CB0672634075D12C1EF26170DD75F8ABFD1C50A6 +033A0792A67BF085A2635CF8604F1AA362C698EDCF9BC87092121F92B125CAEEF8F700512E3511 +40BA600A2D5F99EDDDC575CC5A3CC52217E4A70D6EE121FF148361A77DB81B04A8FF3DFB4D050B +BF5511AE66FA7E62EB0E09581BAD3F07EEF1839A3A275EB1AD5AE1C02B4C88AFB517C9EF1D25FF +1786E2AA04166C356034D70567127DA3CBFA636B6ECE1B6924F48B0F50A5DD1C906F180AC63F27 +F8A4397FB653080740B318ABF1AE0D33A21CDD74195643CF930776D119A3AE6B9E1ADF87E875F3 +FD56487B443BAC339490851EF72909876081793BC6DAA88E9EC4715517B06F8B3FCF7B61B4650D +67E1AEE187B16B5DFEB4289A58028C62132A7ED2F08F8377247DA731B0082FF8DE089727C07989 +90169ECC4089318DAC5C42BF3E3FDA75D205840BBF0600E590EF6C2F5FA91E3798808CF7AE071C +272BEE26074A12B12CE20737ADD66CA64CC0739F62B43ECCF6D51CAE9B91C269641E462A001E48 +AA1BCD39BD6BCCC5F2B2807EF3DD5C5050D4CC36C18EBF6FE38AC3F4518A2D6D4D09347835DF8A +635BFDFE02BE2FD959B8A873A1779B7A444FF2906C78EA19ED2C7FF89B097A3886F3DD1CC4FC1D +BCBC68BBDF35AF289E28D4BF8F1C0EB556FF589373FB290AD1368959197DC631DB4BC37206231F +75C008384B023F1A7AA21E8052468EC213C9479E2C2A721A4D081CD1414797747607A9D3600B4E +44E83073F2C0D22E52ADB93873B12AB9CFDD85EBBF816898CB4D629DFA5F906BD3D35C1D398341 +B1D015B77DC4CF15A8958D64EE6195A184A3483AAD88291F4722E6BE7160CBB1269618F33E461A +C9802D3ABB05971137BC67BC686AC3B349A56C89E6A86C0C150BA455D05563ED08C6C781A9928E +93F13A8774572C23ECE2EC48E5CAEE978D5CB558333483D1EE2F1E517A7AC54F88048E8D4A73D8 +8387000F18A322E75409711C45568EE609B27984BC66C8446F7A836D1F250D9B14E63CFFBBF5A8 +D88574A01B744A5522C1316B145396CE7E141D88C881D061A02CD9B170F281A515DF8FF00BC327 +F22F6F773DCB5F4E989337077DECFDC89D29135795C7825D60D54189B664640209064707975637 +53834D46EBE0612994D060A619EF73AA87DECE1C31A6736FEC2FC546BA43454F4D2DBCE743C34C +6A2F118BF2EB71A1C52DED4B2B6CB2EFF8D1F2A53AA4EE4FD0BF8C4949F2FCC092394903A7EDC8 +41C9D7471C26C37F1686B740D160C944D219244524DEA22D9D0540434BA88261F308FC8AE93CD9 +F99E766F1375F912F264D4842C15E8E05C4DC436043086B34309336851DA5A50FEFC38A2CEBCCB +7E78DCA90B8636E246D62B7CAF8388AC3E5199ECB08FD75633DFFA8972BD518A3A9BC02DB377C5 +F0BC5CD7055A65CB77260A0C561D0D38650B8B7CF3A6CD2D1180ABCC7536EEE7A03BFEF9A97646 +2A79F3F33C108BC3AE43730F19755EF52C0E3CF90473BA3B9F6EF88BB4AD444718EF32A924AAA4 +43D8769502BD3D7C783D7E86B450E83688EC6B2D92EBE1AFDDD29ED3CA9AE3B7E9DAA0CE7E61B6 +5C439E33B40355382B77C2F5D948C2894909477D299DAD133CCDA6FFE335EA6E9740142E766100 +6AD3B3AF9E87A4DB2634E999585248BBF772455F93B6A9026EB2A0BA962945CF6CB97F9232E430 +7184859682F23F858506E199C7E82D773F47A1B5360061A162AE5CAB3DC879E54026F8FD5044A7 +554F14E0C3BCDE6CE5011EB1225A437C07E5544BA9B8B3D8C133E835AA98A6503C3C964907DDCA +C727D32B5ED1D25FEDC0E5EEAF4BF767DB1E43912F707E4CF9AD3E8679F6D500A3A2B870A5E7E4 +D1A8C39DB35AF3996BBB12BEC3B22663F7F81B1677B904615316FBBCA25C850E0AD42EB8CFBB1E +08628D1ACD6E30F1DA359D9F506CF164A186E4A6E91419D45381752AF43F515737A999FE88F4F7 +8DAEBB84197975368C6614A304C408184172ACCF3F84842ED0BF2EA5840CE856AADB8B03069804 +1B281D349169D54599F5F1AABFF808647B8FA5E5CEBCA421A05F28BBE4D5C76573B34969BD5B50 +FB60D74B22B2D6E7CE6443784D8DAD604A7526EE479874BE6E5D2597AD85000995F894D9243B85 +CFA4255D3A4CF7655C6D62BB609CEA37347D3C191A33825583B46A6F1DE6EED6A8DF2614356BD0 +BD604AEB28A304C85DE2416F50514C4671FEC415F5B01C00DCF55CAFFCFB788A90287F52116BB2 +E585234B37268E2CCC5F9E1365EBC3DD862D2C9C6BD2E2CCE1658D1167B1FDB17290EDD69C2C18 +5CA541A690D39FAA936401021831DDDF2B3EFBF682BC58D8E5750E41C37035E5ADB773E9C809AB +83EA7B92C48B0A3FA25B370C002396A93ED8C52BA7F923F18F326CB0E1DC56E7631E97F8B99989 +7CC1F8C2E5DA6B7E9D811CBEB907FB4E5986B00239D77F3E7B815C3B4CC9A6C0EEB760BEF41921 +9AF10D628A023EF05AF6F025319761EB38A8BBDBA00154851070E4D67924C6C47DD41A8E49FFDB +591AF78E16D7BB3A8207C4AAD261A4CE303735660B18C0EA2A3A1EBA05157EA0F46286AE547BED +F51B62A0388013072D180EB1918A67054E11002149DF8C835508B87D63F4D342D4C5F00F5477FC +C3FF48C5A837361954649AA35D9C182C00118D62D26A584A54F14954C449AC500078906E0B3DF2 +8CB1509FBF52512AA16A3C749776379089D9F0CC6AE50ABC11EB1F6302149828972B2DDBEC099E +947913E5697B8B538ED830F9849F141AC371632DDEC17F50E7A80849E8240992F49165BB2EE4AA +3F36BA9DF571F4E5B1E0FA0D04E257C73A0EC5AB2D00A5ACC0A8F867217A4C09A4F31294E6B145 +4022943987033C08917873572862F90EADFEB768DE4D4F1F8AE9E91D425CF632AE335F37205850 +FF5D843D5F30C0E343BB757480D4B521B468AF880D60269C75C9394AD9730B8E5D4C93A4E71380 +FD1953923A96997ED92FA28A97AEA170BBF16AD1EC2739C0D50B11AD5FDC7141714AA4C341685C +C9AE224079B0A2471C7C8369ED509358297773EC317CFEEFF2CC71661103FDA12FCB8C48A46D5C +624682869DE7FE7661E4C19D98C779C92886319E69A19BB403C0D285B97C4ACD1B382272EE12CA +77A100A5AF1310EC29F5F1FE21DB012F5D79C90901DC74230B2333147F0E2F304CF8E274780ABB +51056FBD479D6EDC34342123359A19D8B123D6AB70FD29A830F4190F94576E5EF37693736FF9CD +181503814762ADC357F80AC45205C1289A7D06EFFCA0A95580FCE48DB305FDB07F9884F026EBEB +96CB3CA37A3C3215A510B3A6E126AB0F0F2AFC8936EE02D480670B6343C25E4DE82107DF301FCA +C0CFF82889545064AFA2D7CF1926C70490FCA10C7A05CAC2B9A7A24E4DF85D4FF2B5C5C04CF118 +C81F1D2B70D2EA2519E1795AE5EA7BD66023390C1CBE2B85A1284A3374233DC164A19EE29B2BE8 +B83C81E3761A0E68CAA67FBBFD0222573C0381B0817F4B53CF7C1F73BE80003D1E271E9CFC490D +E3EA5DC1E3E108895A731056AB7540FC25DC61F276C485389FEA2F2084CCB5D95E7EDA910005AC +1C1AA463355EB4BD03D515D12983CB2557EC37A2CD8E7E091240AC5EBB4C7263BED99EB96D408C +2A2905F0B40603BC691B67BD764A7546689C69D581EEA15D5E8D1717FF0907ECBF10BA42AC54B7 +DD4C2F50AE9D33D7F9C2899DEAF3BF81957C33BD8C7BFF4234CB774FCB30AF20962ED3C61E39DD +C6BA500508C3A4F7FF2C72E05BF4BE8FA79CD0629D4126186C86D38608A039C38BD47FA9F29192 +581C460C40F947621F80AE455CDEAA5CE577287CCB5BC999C97C67665AD5064FDD546B5DC128AE +573D08221D1A066EF6FF8B5F5DFF89EB2A1147CD1D76C354283CA48AA0E567CE14E50B277139A9 +BBA0D4D78E297820E5BDF5A5B71E0E0EE5411561BA491FF664DB8D52F5EE9178779E422AFF4081 +35EA6A99AD395C6B6C48C3EEC8F7170951A3640334ABD4DDC59C15DBF47F66F4C1785D2EDFCA6F +389D35FE1D267861B51549848F2EF10390900E00B2741C6444437CCAEBEEE1A134F328109A2D8F +DB768DEEB08F983E421D831C2B12E69465C0ADCDDF89C87C91A753A3ACA7036AF2CFC31BA292C0 +7F526E7A1C2FF2E15A9B0F8AA54E3398FE493AAF4273FD0A70F2E05651349B772DF5F34FE9EFBF +6598F62A505AFD5FD2EB5DD26EA57DEC875801BD8F2BB79F7D061E98252BC5C989AD2A0BD619A0 +3FF3F012501E12E074556B50CC46E2ED32BF24D758A8F314E4182D733B7CE5BDA952FD9158F609 +588180913F3F16A4FF1068630327CEA913C24B558328CDB3D558AFAC681CE7BFE0C8E0ECF335F5 +B0EA11202B731350F324ED7666677C3553D9C722655173847BFBB1173211AC9435D7F5B40F4558 +E3EB1409BFA697210C4368E2D8956AAB785370DB381D6459C0777E29454413223090C9853D5879 +31AB7FFAA31EA54BD2DF7F537033BD616AC0FC255C12BD2AD310A7507AFD1FA497D7E5FB158607 +17C1659CD817A091FF7CF6917E54937315839C9AD0D9F08C471CF77B99A9D97BF13AE47AFB3BFD +659779C9618DEE7DD5834BFDAA933257A1CF96AE1784D73FE7848C0C0ECFD164EDA00A4BEEF241 +707BBEDB418DB353C98853A60C408D550142C8E85E3A915EBC241875E59776E4DA71E7601CF05D +9D0CC65FB36F2EBE0C3FFC16818FEB17511FFE125F91B268A2C06AAE32FB7D53B13B5E5EB7247F +5DF4C2C7CD62F42E67ADAD2392EAA440B21FAC85979CADC5C96EB0A8FE0F4398CF90882F4A5BC6 +E7E0FDA84F2EC635B481F8BBC5D88449CF4EA21506E0BB17DF354E41C61157BA6C807F1AA80131 +9BD03493CFFB0C061F9C619E57BF663BC297EB8D4AA2AE626B2D50A65167C08B8115558EF70377 +A59FF04CCBFAC8209D73F13F19745B3F097064DB8879C89B60DF237A10BDA12049094E17B426FE +795E8543B5D78EBA10E548EA23E82114EE906F3FDAE81FF9A20025256653D6E4EB10BCF1563B83 +E814500B8B6DB7985C8E2A3319C5B7A55B8DD6775F2D1B80A25089E0F9385CA9E8E48AD83B8273 +4F10DC7A63C408D37E3ED3F97312FFC96C1ED889FFFAACF8D2434DD09BA26AEEBA7C782A6F7570 +B20EBE12011830788CFD3DB2B6408A155759714BD9F3A23984412A4CA3BE235B7357CC841FB3F7 +F77E5459A74AA2CA076470911AA54693625919223BD8597B13A43AB30D898FE33F47C8F749F952 +96FD6081247DBDC6FFACC006A4F87EB0BDF8F30269B715C1C3BF8016AEEF37959F3C568AA52036 +4487DF332CB1198DC6851DA9001FF952AB0BDFEA43AC6B9F50B8F3B9C655D6CB54B426A2386B6D +F18D79D21C277014ADE28804A3A8667C64BB0B62DDF4485B359A8202CB4FF3FEAE93C000BC4CE1 +8FED3BF8F555BC22221E9B45B6AA5F957F5BF505C736692C9B2AAFBD545AAE738A21D99734D095 +84133423A17632CCC4710F93B760DB0491097DAD9AAE141E86339D088394F8320406E755E3AC3A +987697FCA27F88C3C9A542374FF7146DE2B8A8CE7F26F2912A2A4EAC2273CF1210E25DA91D5812 +329A9C803CA3E60C0F7C7CC9EA32C05FAC0597AF45AAE3AE3759DD1562BEAE9D14E5E812C2A856 +A97AEDD2876904E37D6128B239F258C3F1064FB383D37908B134C3C050532739399D129BE42EE4 +D6B5A088A4F75D8143739BA55059B2A71CDC9BDBECAE76C8516B1991FF6924EEDF76A9E363CCB5 +AED556CA5F09532B49A0EE2097552AE4FB93BF636B62DB7E41F41747D3D1FFF7C9BFAA1879FD77 +5BCC67B016296C1D69A760F436E93899DCC3CBDDF6977F72852BE03036F29CA61323AA78BD535E +72D5B6E67A44CE8C3595F27D3E574D1B083C1BC2D2DEE8EEB6E609092DCE00E1E7A7712BF51C68 +08FE579EFA72B5D41FAAB5B1A89EFED16EA7650E424FC184367F7BC731C0C70F5A8D5D5471CC41 +2622FE5512F0C18E718A3AD016F5F19F34595B7A307AD54E87C4E8D4763A2AFDE6C846B190B28E +F2675A9E8525CFB2ED32BD3D91A758348D5BB96A0AAA5EA3C93B99FB578008F3B9894D5AE232F3 +CA49DF05BC7A303437EB8D589510153EE5C07E07250E51FA6B8AC67B9AC1172D3EAFC086A23609 +7EC67FCE49FBF02A905CC62B0225086B26C620BB2A039D21ED71CEC600B9536199637362030990 +15E9C64BAAC4A79AF451868ACA31F26BD20C247A2AC5928C92358BF557245F32D1F3983440B228 +1861074D21485D0CB69E7FDB42C41CBE219AEC219C152BF32B7BBB4099BDE18E486D517D56C1E8 +E63F8F466C09A2DBD5E54DE355D2FCB06A1E6902DC6E8B6D07D1DDDF497E0776D8F6ABDBCD337E +EE114349BE8EDB1FA8386A5A75EF424E7DBB355C9FF493B571D0E23DDE1B0778A8A9B547C31ED9 +1F080D8C656B3DF3063AB7289B9B01BF064530B8590FC26292AD9C3E0590550355855E2E75C35B +4AC685F979364BAC45C33E670673CCE9AF2FCB19691C12E9E48826F9DBC013F941029879875212 +11297D580A7DE64D4245ACE1DF10884E2F4C3CC9DFA944BA328FA73155C816EB8A67C717862D10 +6E9AF905B47BB5E1FE698B1639C9D15B363A9FB8ED517433521F6D699948412A946C244C7B5448 +32D3677770EA6B92EB888D1B947F6093483CB40ED6BDB2B7318639A12D627E4CC3DCE23E845D44 +9FCD86041B19C7289FEC9B4C4AF3EB670DA7672182F90D357C921FE4A17064DF91CACB4786897D +017A139EFBFE339C932190845A651A42D4B53E28E2F07C3C75F72129B10E1F856B2A8CF2CB5AE5 +B180933C4871AD84D3D16C0E9CA9E427F4219FE23EFED545126C450E22C95AB8EE05BA7F842D5E +3DEE1E1158792175FCFC76BC1B4803C508358EAFE7A33CCC3498854BD3D18F1E89DADCDB93BF1D +6CD3C5F5CF6367A8DECDC3F97A637D5E189E90382930E563A9C0B7EDE5A75652CBE8ACEA13B888 +77E07D50BE9629A6536AB61C12D3AB79C1FE8BFBD7DB19FF5501590B873575E1FB83AF7E426DF0 +5C1334877B0DFDEEB33B5F5C9CC920944E5CD59124A79A92CC5EAB69C8F3947353BEF3C3384CCF +82199BE164F38C2FA812D5E1D8F6DA604D6CE668CC45EEAD92F926DD056A4C4AC0A5B355DC491A +09EC1A9BD7463A6863393EBE72AF5B249BFFD34A8A0D81F7A6F9AC4F7F25880BB0A5470B003DD3 +E6CDA2490E785CFD4F60FADA619D1ED2199CC9415BF498499FCC28F92B8CD3CBB4994ED967FC9C +F3BF748525630F23F78395CEB673A5EB0C5B6675C1E6C6AE37310AA75407C6E1F1D3F049BFDA0F +6EFF1152E2C5BCC2B59075A51B1E6C1DD55FD8651F7F9D2883B3850EECCBBC7F2F82073487436B +FE9472513801AECD599E6089CA4D7C15F231E673DFD75889BE93976DF91BFA2087181681BF3D33 +8D0BEE963C5865E9C09151F16D70BAB3B0BAF051BB0A348832591AB9E8A0ACC2E2291BFA6C5711 +9DDAC7EED1E111625B85DB0259A08AFF94FC0B1023B7C0BD62C90CC596E20AADD8CEBF5132F37A +09BAFC824F32D708C0E18265E7E498BEA391428D3BF4BB7D3F032D8E9D30A7CE70906EF503F715 +DF3CA5C4FC1D5C6269AB173566A82127E76ADAFE367A33F481BAAFD3CAB104DA9916E017EA566B +9F42E7817C333D24B78ED4551703E8C8CEB47002F4AB2DD16EA4282804F73CC13211BAEF3892FA +B4E7DC76440BDABA8526EA18A520C84E59B8C9E1160D77E4E68F37347498F54CE5D61C3B984B23 +152BAB87295963559E3AE839D146A747C8E0B4E0A87888D7C72BB7726FDBDEAC1DB3A63A9BBFDC +0514017B1D9279DB71AE5962A7D243FA43005A2956C298C27C47F80A4372CFCAA23B6E882F119A +0A86EBB2E86059D67017E10819DCEBAC454D317BD2592EA3C5E4E3747852F09EE1DE30FDA941A8 +3ED445E0A4A6800585DE669AE55D064E375467F09DD056771BDD2A080CFDDE6AEB806F44D22EA3 +EC0463A992BB718391D46A66F78FA4610C08C1DE582297F2F19EE56C7D26A5E76A34EEF23DEE35 +262ED5529192A39CABB2C38B06193E627EA109A456D5340E48A982BFBEDE3DC727865F92458038 +BA7688AC5287C41C8D421E5715260171A17317BDDFB6547B2BBF23D49C5267BE3117C189426767 +5E5284343D99B5007BDF99ACCF2E1F146AACD828DBE064781BB6A290E2B8FAD5DFD877E60E24F9 +B586C28A05B571A3BACECA7D379F71AFCFEB65E1FD7F15EC85BDE0AD9A6B6181C164414A1F6119 +49313C165B78C92C9229C9A4E82F8E0E48F98A6597A786E1F018EA67077872589D78F805681F19 +72D59EB2EEB2EC9DB8DEFEBF0D7333462F6CABF7AD2708C156AA1ED033E93419C44CC9FBE8DB4A +7DADB982F460E119D3D775F727DD8FE661412C41D75EE387B2A2C0F45643664883F5DB15CA13AF +A13B84B0BA89A4237DC49DBCC44F11CCB24D73CC1A7E1A6638ED11CE598E92C2530CC5DD61551B +033652496646C3D462D212697BA35AD0454CE91938A995ED7B7C4765F06D4BFA26371656869CB9 +5C2AC55398310D17549A94BB0A4F9FFDBB2B989A38A6FF68933E4A9510C5AF4E499EBA28CA7CB1 +8AF21CDBE135BD6C0E7D8692DBDF78C04A8C733B64A04D13FC4D02C6D922B59B6B1A6E60306C2E +BC50571DD154F7CBEA589EEF4C55785D52D562781CEC602DFF689579305A3A6B70F7DD7ABF16E6 +4EB068B1FF501E2334ABF93E0B082CAD284E87EE507F6429842BD0A7A9D799FD7CBA1259D04240 +2A95BCAE5352BB0A9EAE646199DA72C10BCD07CC2DF88D6120582163823F273BE0EF76D3C2172B +3E8B003E53BA0553DE1F271542D380798F5AA5A46C39CC60F46019C42B079F86586D63E148F0CD +14C1E08956B2544DDEB8AC7276D6ACA2446C0D66DDC72DA426EE46F5A666F12ADF6EDAAB3C5281 +C48241E587466BBBC73A0C1DB3FD493AABA04FF6689C84BE6964A6565AAC47B16EEDBA5D83DEC6 +FCA6BB01608721959BA1AD8F348817078EAC45F744A0292AA72F73E365E559002509FCFE0ED9B6 +029EBD25916887B22446DDB00B41C00E13C5200A07543BDA3B0A5E1BE27A6F585F98961A2F9F8A +69948393ADEDEC28752DAF1C156491A1F86FA326AB325550CC5A0740626B7C87D8BE68CC1F78C7 +5DA30D1ACB30ADC4751DFC9A2934328D64A950CD0F330F76AD31F9F091CDBB2EDD6CDBE0512567 +ADB15DF096771CD4DD859AD49AB991A524E897255E7BA3AA03E2D4DF3ED44C5DA9406EBAF3596C +8B6DEEE5B46E54A74DC5ADF6B5EF71A5A86274CA9CDB398632FD08F25CEE759753C40FA3F41190 +B7EC7776C8899BADFC9FD5DAED7E5E1692061A6CD692B5C1F0CBD1A4370BD78AC59F626834C138 +EB19C8C0392FC230C70AD93303298F6FED3EF0A4047532C6796B894066F5374540AFE217EBF390 +D8DDFC1397AE95451DAACB00455C6A45F0F835DDD9448ED607E46570D5A678AC9ACAE56BF7614B +F728265434189489823F1A779C739933A25B8AF4D55045CA6FAECBDC6FDCE7314EA3A5DD82F1D5 +E5C3AF77E02CC6A1460F905A7F189C377D67DBE99D8FD4AD785030FCDC4FA5BADA23A97EF70503 +D924714F0821AE104FB4FC2DB4B004A55AFC9CC22B9FA6E75920B372E9C3D49F8CF7635DBCBCE1 +34AD22DEA4E2A17683B59A37851F81A97A8550292FD17EC3BE6A6F41F852FA5D5CC850BFFD0DF3 +17E804AD747A62822D369EC3C7BCCAB8CF7E27395C646C720738CCEFD152225D4108F19DACE9A4 +413E0A15EBC05CDCA19F720779A2702A62C0A4C0010DAFD7A405C270BC7282BB5DFDB4ABCF7015 +B0A01D010A9D07816CAD38E2EAEB01EDBFFF19DAE54D3D93EC90A2FE4865272173A13D8C0A76FD +17905B5A851DF76422ED9FA5B656C89969C0EA381EC90A796401F0BF2E03CF8982AC0990A6114C +EA74020AD3B87A73E29964818C6E36E854858D22B464F0B498F404B030DC163CA9DB97561B8AA7 +64BD8D3F2E183C3531143C41938ADFE13143A753D6B9C9BE691035DB36DFA2A7174D7F4F3E10B1 +587A95060A7F52110E8B3B3EC2C492EFD067B67C9F5EC824D2673668478B078364C8AD43398CC1 +1E9F80A3DD4FF7CC4EE2493BFF980D6B92E8775F93493540E3B949177F7330A8ECDDF1CA539192 +56A21508309BF6CEA0C6BA914C10C329D95967AB61FDE548DC14BB548DD93AFCEA6A190C144EED +C22231C3B580889079482966E30472EA31E60EF38A7949B040CD2D737D5331E721288822BAA68D +D29F7CE0592FA24E6D47264AF1684019BEB7B50901B2E9BDAE7A7D5EE9BD460A93FF2D197B6FD1 +CE101B0D813E31E7EC6786198C5AB36E8FB77BD378D4861D68889ED7DB51AA791DDB6E257BB47B +FC195CBA2ADFA36D15AD8A1978D1F95C7D41D80238996C70376195578D0796493FA72666C925B6 +BD28F8EBD8CAFBD88B519F9BA6A198A7A1DE1469920C927AB7824C4CDE81A573C80C492D375FD4 +56D5619C3D4CF1E6CC13FFBBD1CFE84D34A86B73D3E3CB30244DEE0FE5B967CA0F04DD070270FA +103AA7C080F866C3DF79BDC57CD8EDDE39492E7C2C4618503FFDFB86530820BFBFA1776AAD3001 +CE9388BBA7554DEA5A9511CBF1512F23DA246EF6BDED2619BA8B9D6F068029C4787B48DC44EE56 +9A9290259724B3FC9256BE8A688DDAD017B3FEA88A1A68B647EE9DE98F47ECBBE0AD4465E6C32D +28AC65683D5A5684063D22D6374D30D3D1E5E7F763CC0F1015EBA6A5FC201FD78A91F8E1ECE429 +D9187262B88B28A8B53F23DE1BC0BF616BD14E072C571CC67BF36D62E6AF8F1ABF62D3A5DB4907 +D888F63E646603D0684BE00BBAC06E809B485EC08A9AD37462C17E1EB08153810604EE6A14CC22 +D0DDFF8515EE7A956AC5C561B9DEDFC84FCBE7F227B3D8CE8937CC4F02503B09E602E86ACB734E +D919B456C0C487389F49A740E6193CC2A9A71474ECD3336803430AC0E18DB9D5260F0C4E03FC64 +521CB21927561111BD9CEEB041EE5AAF3523DF2188D3437F7D8CC2C2579C70A8F0C109000FE8D9 +EC9AF84D1EA5C3A51F1398E2C3585F179DCE6E4E6AA93C2D5F20D6F60AFBB644DAFC55C49BC925 +92B295C940704B3496293076EF0C45EDACA26A6F39C9AA4DCCAA39F00FFA7CA13BD6A2353F9EE1 +C086C96E4FB461E5B7DB30DFFFE0E7F57AC6D8C1698E6C916E7305D4EC652CD5A26FB24ACC7A35 +23B7ECBCE80D0AB66BECD6C095E36B03354FE8EC6C052C5190AE60F77BA5082BB933A079BE1892 +983F97B7463B7D4EE4D66449E8B0A7D3A467EFB954298B60EB5B93CAA92CFA980DC46345BF65D1 +A4B1CE69D64F82043C03F28D1182CCF98BCD4CFAAF5124A70401DADC5CC4F2BBF70FC89774EA29 +5D36B3791FCB1A14AC123EC94720478EE2FAD02E2FA4890C18C43BBA34E52C47E72C258A8D5139 +397A51CAF83CFCF0908840BD9579BBE335203282D42D6EA3BF59DD8552A4C20EDE33950A94CC64 +064EC61E69D8BB508B2CA4C2A1E2B075774998982EC3BB7ED475FBDD0D0F685C470279198AD64D +4F64482FB15A0B8E7255499929439E6905B1FD370F243603DAA758338BA8D86E2FF76BB15FEBD9 +5D05F4AEE39E8AFAFE10326C9FFE4538302BF8FDEEC1EBD93AE43E4BF17CA463D1429CE8238AE9 +5FF9722DF083ABB9CDD380F8554C2F3C87EC8F2407BBB050F4E805F35C93929D04C6CC445788EA +65C069FA100EF55A87DF5EEF05C21A4EFF927E6213891F6BE19D995158D88D26724B6C177CF470 +CE6DC1C1A50B06E7ECEBAE91DDB8C59A3430637B70B211C357076363D83E7DFADF460EFF6140A4 +2CF6A42500CAA41F159CCC78A92DD148F3167BA7EF6972DD1E6756C87FDFD5D71AAE993C2A2251 +F807974CC6A763E56E4329F7D0396E61BDA889498B9E1F8EA2F256C02B0ABDA584A1F3EE05D48D +669BE5EC58A48F83F8132E54073D8B2AC0684353D93EF332FFD61AEC12A0C8E06C96D17C5C8B5F +2564E48CA1442BC2FD352CA0CA21D9B2B8CCCE8B56AB983F2566CAC72E30B447F673974E3AE718 +F00F0FA3E6FA0A3C728AC3E3D85F939761535B9FEF2FE595AA2B4227C3288E51F67A79B99A32F7 +3496FD28E825363772BEA61F80000E5C14815E173D8C0A86D2113B9265A85AA4ECA5EB476EF6D3 +509597024D99A543047083BB27FCCEEEA0D42FB6084A3AB242981DA4D5E980A4AA9980EEDE7305 +1E874AB59089AAA4948E0DF1E7CBB7D9A523C76703758AACAE29B7C3F72925AF2E22F432A04670 +B332AEAD532836B3AF853EE1BBADDCE08567030BDBCB0B945C1B50BF5F5D58961E0494AA16B21A +8B0977816A851B2AC53A690DD0028F0F2CE312A40543A3D17B7920B1F77530BAAD585A102E4433 +1F1143D712BA158CEDCF9F0831787576CDE922810F2E7DE492BBE4368D31E1D000B9DCA8277086 +F5A26966B181174AB4B3932C48F979AAA0A1D28DD5D78F301E715899D809508DA118F76452A138 +45532943CBB749AD5820D9BE6ABE97DA47539EB203CAE3677D0A2F74009BF2B1F2DD4D19EA7773 +0BF961DF032A16CDA27F8EB36E5328AB91ECFFFB47B0B544E0D0BF0C89D86F22761A0E8B5797CD +CB9FC68E40863EFACAB5F9A26B74FD8BBC60B5BA1C840371DA01293A6B1E0C818A1A9A7EDE25D7 +894A9B85E2B8C46A1E8B919D6458CB317C8776BEA00F8AC53C62937488E16F1E61FB3722CB6DD2 +FEAD6AB351CA3397E4140D9E9827AF9E599A95E760BECDBB5A0B2034FFB4F530E4EE6A0E51CEA5 +F1CB322C82ADE8AFE08B4A501A11B05799DCD4B626B9BD95CE8E5B644DA0D6EFDC52ED3A88FE8C +7E72FF0477D773B981D413B0E3B8863F958EB2E2FC27788403C7D7985D89F7B2DAF6DF26E22D83 +3121B7605FC4B791F803EFB087AB77BF21432E8E008E4643E91EF453F9ACF775A4ECB7CB0F7276 +49186F350F16B4337B36D911EF61569564C6AB422755D8DEC4A015C4A87918229141AFF824EEC4 +0EE21AAE7C71B1468105B08985A4037A8D4EE185CB95D7C7053190E1BCCAEBEF8C7A450EBE598B +30413F67A680C0A9E82D36C5A49B35C571503B33507093D3508A790A0B661BC1254E7D2D3F5C84 +51778C87B5CDFD646EA839765488094A0B8577B4CEE058805B683A4A18915DAB3F3030AE49C959 +C220AD292E60EE5F4F43A31881117A337E37DBA85863FE2D9B7B1B83E70EF7416E7FEDB95F1590 +9A94AC18E6BDD8303DDD59B77324DE396AE4E06674A3D987FA612C56B2D682EE6611CF0DF73BD6 +4652CC244AD453B4416BA30861636424DF4EB99DB4EE468128AAF49C101015E934708FED83745D +5837B692020CCA097A45A86208F08693064C8EB3D803BF52D2D2387F9FC112A4E795C2E9A7B5ED +C6DDE3B5EA48FE8FEBE9D3C9D3180027E39E94B1F1D4C5BD7D5027E802FC6E129AC62B3C113770 +9D7E6482B8C1B002A131FF5896C44925B7C214DDC2B5DF7DC4CBF6ACD7F7CA400CD49D3F4FF8CF +70B8CD6FE6938E8D89EA14077CB4456D4B9D8CC3189CE7D0DD5CDDF2EDFAC46FBF182099A57C1D +3528313EB8635C0A8E8683E853E3CDFA81633FCACE7A70CF33881AE2E56DCF69078B73956B603F +4661DDCC031EAD49559AFE5F82620799DAA3F5D9B652E2B574F6EB037F1E71910AC8C1503D68C8 +1617BD04A75CA3385063B57D14E36D5E690A01159164E7DDDA5E8E8365E7FCE73DBA360B413CE2 +79814353CA88A9F6DA8214347018302C4F834B957806147AFE69525D9E026639C6AD5B9007583D +F2B0C9049B8559597F1DCDFFA4127F8FE516A374B13BB57EE95FB97AE89B7DA52CA66B39C6FD3B +30DBA6C2F69F0EA6F218D5AC9238506283FD820404258F55CD2BF87D47444B8845C69056EEF2E3 +6DCE97E4B47BA604F4A1C64156562DAC43A6F2671D682DF6560F974189C9702F23082644334914 +36062DC5BCB5D6813936FDF33F612DCCEFF201C9C81827DA906DA7CB6A0D758CC56F2E2E46720C +9832F9749A4024796730D0C195363609E20228DDDFB49879E1D40B4E1890B50114248D98196CB4 +0AE3A0769261D5A63A90B1370B3DEAC29F6D3FBE729EA0E00EBFF08DFF519DB66783758C627F09 +3EB8BE8C16FE2F3324ABAA3E6D9539ED9FF475CF9C332E37078E86E3131457E83F5CD0BBCB0450 +BBDC5F0C5F2A652F3B236D37EF4861B106ED2D3E632798C1046294F39E364E066511012E68A7EC +03E8CFE7C73AA91FADAEE7DACB367791929E1C953AC31891D6AB9125F16DCDB84B421A1775D094 +EEA472BD13566E0D73DCDFF86355211E877BC90DCABC7CEE915374809A397DF8F5B5DFE4BDF888 +1F5CC64ADF9EAD134E95CF13F56E238E6F524BD87FD13AF4C78AAE8CB3F8BCF43E6ACD32D3F197 +E7C892AD1C4E66CC4681A4E5638062C90440EA695BA8D45CFBD07760AEBD0104792CEE55D69918 +E4B38FE9DACBB61B72302690DF8A7A426DAF2E313A89CE10C03A0FE33FAB0B6C4887E35570B405 +25BB35185E04D59418EE098FB0B9DEBBA4C53492775B1A4127B48710F7C119F78247F8E054C2E1 +ECE5424392DDA7A1960B662F66EC772BBA97310BC7EF91E515D916AC645F2569F0E5D98A514C1A +2DF82B973AB356DA9CC9A2CD81FB3FCD97FC5A2620D7FC5562D8D3F44DDE89AABBD4CCD2D42840 +A2E0D109D5D7384BF8FD0A4B68B266A868677CF6BFA25238B1667307FEF50C426EED052A5BE687 +82E2A9169FFFB99C7AE02B95F834A6CF34EFA93D39D28434AE5EEB8A093BEEAE8680A0FA8C83E4 +DB6BB48D9B60966A670A961BB92EE3D8F335D2A3964D2EB5FA9167B8FC21BB37DA960A4C610804 +CCFF5F55ACE87C01612413E7674CBDDBC5270020F19E281AA23F014BCA565F492F5127E2F73196 +32D25FE84EC059937CCF3E3194ED72CD1C020B5C224B8E8DFE46A3706EEE3BA8093A8E021AAD24 +540AB716F1F3D3A31502E745C950946B66B44E51F34B5F2EB68545EA59C56046D929E833FA23B9 +CD5F034F98D4DAE90782D54B4C94AAC573 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark Index: xc/fonts/scaled/Type1/lcdxso.afm diff -u /dev/null xc/fonts/scaled/Type1/lcdxso.afm:1.1 --- /dev/null Wed Mar 8 16:39:16 2000 +++ xc/fonts/scaled/Type1/lcdxso.afm Wed Mar 8 16:39:16 2000 @@ -0,0 +1,497 @@ +StartFontMetrics 2.0 +Comment Copyright (c) 2000 Bigelow & Holmes Inc. and Y&Y, Inc. +Comment Patents pending. All Rights Reserved. +Comment Lucidux is a trademark of Bigelow & Holmes Inc. +Comment CreationDate: 2000 Mar 04 11:21:33 +Comment For other Bigelow & Holmes fonts see http://www.YandY.com +Version 000.200 +Notice Copyright (C) 2000 Bigelow & Holmes Inc. and Y&Y, Inc. All rights reserved. +FullName Lucidux Sans Oblique +FamilyName LuciduxSans +Weight Normal +ItalicAngle -11.3 +IsFixedPitch false +UnderlinePosition -100 +UnderlineThickness 50 +FontName LuciduxSans-Oblique +FontBBox -114 -211 1095 993 +Comment UniqueID 5096732 +CapHeight 723 +XHeight 530 +Ascender 771 +Descender -193 +EncodingScheme AdobeStandardEncoding +StartCharMetrics 337 +C 32 ; WX 278 ; N space ; B 0 0 0 0 ; +C 33 ; WX 278 ; N exclam ; B 91 0 332 723 ; +C 34 ; WX 355 ; N quotedbl ; B 163 530 464 771 ; +C 35 ; WX 556 ; N numbersign ; B 55 0 645 723 ; +C 36 ; WX 556 ; N dollar ; B 58 -60 586 783 ; +C 37 ; WX 889 ; N percent ; B 118 -18 915 741 ; +C 38 ; WX 667 ; N ampersand ; B 65 -18 706 741 ; +C 40 ; WX 333 ; N parenleft ; B 116 -145 447 771 ; +C 41 ; WX 333 ; N parenright ; B 11 -145 343 771 ; +C 42 ; WX 389 ; N asterisk ; B 131 367 482 723 ; +C 43 ; WX 584 ; N plus ; B 102 48 598 530 ; +C 44 ; WX 278 ; N comma ; B 48 -157 223 120 ; +C 45 ; WX 333 ; N hyphen ; B 94 253 355 325 ; +C 46 ; WX 278 ; N period ; B 79 0 223 120 ; +C 47 ; WX 278 ; N slash ; B -58 -145 452 723 ; +C 48 ; WX 556 ; N zero ; B 96 -18 605 741 ; +C 49 ; WX 556 ; N one ; B 112 0 512 741 ; +C 50 ; WX 556 ; N two ; B 50 0 573 741 ; +C 51 ; WX 556 ; N three ; B 76 -18 567 741 ; +C 52 ; WX 556 ; N four ; B 56 0 580 723 ; +C 53 ; WX 556 ; N five ; B 78 -18 602 723 ; +C 54 ; WX 556 ; N six ; B 95 -18 605 741 ; +C 55 ; WX 556 ; N seven ; B 108 0 675 723 ; +C 56 ; WX 556 ; N eight ; B 80 -18 623 741 ; +C 57 ; WX 556 ; N nine ; B 82 -18 592 741 ; +C 58 ; WX 278 ; N colon ; B 91 0 293 530 ; +C 59 ; WX 278 ; N semicolon ; B 60 -157 293 530 ; +C 60 ; WX 584 ; N less ; B 109 48 639 530 ; +C 61 ; WX 584 ; N equal ; B 84 163 616 416 ; +C 62 ; WX 584 ; N greater ; B 61 48 591 530 ; +C 63 ; WX 556 ; N question ; B 183 0 614 741 ; +C 64 ; WX 1015 ; N at ; B 173 -18 994 741 ; +C 65 ; WX 667 ; N A ; B 9 0 655 723 ; +C 66 ; WX 667 ; N B ; B 81 0 688 723 ; +C 67 ; WX 722 ; N C ; B 118 -18 801 741 ; +C 68 ; WX 722 ; N D ; B 81 0 762 723 ; +C 69 ; WX 667 ; N E ; B 93 0 762 723 ; +C 70 ; WX 611 ; N F ; B 93 0 729 723 ; +C 71 ; WX 778 ; N G ; B 106 -18 827 741 ; +C 72 ; WX 722 ; N H ; B 81 0 786 723 ; +C 73 ; WX 278 ; N I ; B 88 0 335 723 ; +C 74 ; WX 500 ; N J ; B 1 -145 555 723 ; +C 75 ; WX 667 ; N K ; B 93 0 738 723 ; +C 76 ; WX 556 ; N L ; B 81 0 552 723 ; +C 77 ; WX 833 ; N M ; B 81 0 897 723 ; +C 78 ; WX 722 ; N N ; B 81 0 786 723 ; +C 79 ; WX 778 ; N O ; B 107 -18 816 741 ; +C 80 ; WX 667 ; N P ; B 81 0 756 723 ; +C 81 ; WX 778 ; N Q ; B 107 -145 816 741 ; +C 82 ; WX 722 ; N R ; B 81 0 718 723 ; +C 83 ; WX 667 ; N S ; B 64 -18 704 741 ; +C 84 ; WX 611 ; N T ; B 139 0 746 723 ; +C 85 ; WX 722 ; N U ; B 122 -18 786 723 ; +C 86 ; WX 667 ; N V ; B 162 0 806 723 ; +C 87 ; WX 944 ; N W ; B 157 0 1077 723 ; +C 88 ; WX 667 ; N X ; B 13 0 793 723 ; +C 89 ; WX 667 ; N Y ; B 160 0 798 723 ; +C 90 ; WX 611 ; N Z ; B 50 0 706 723 ; +C 91 ; WX 278 ; N bracketleft ; B 44 -145 420 771 ; +C 92 ; WX 278 ; N backslash ; B 116 -145 278 723 ; +C 93 ; WX 278 ; N bracketright ; B -16 -145 359 771 ; +C 94 ; WX 469 ; N asciicircum ; B 76 289 509 723 ; +C 95 ; WX 556 ; N underscore ; B 34 -72 508 0 ; +C 97 ; WX 556 ; N a ; B 69 -12 543 542 ; +C 98 ; WX 556 ; N b ; B 74 -12 579 771 ; +C 99 ; WX 500 ; N c ; B 87 -12 552 542 ; +C 100 ; WX 556 ; N d ; B 83 -12 635 771 ; +C 101 ; WX 556 ; N e ; B 89 -12 564 542 ; +C 102 ; WX 278 ; N f ; B 85 0 461 783 ; +C 103 ; WX 556 ; N g ; B 14 -205 590 542 ; +C 104 ; WX 556 ; N h ; B 75 0 570 771 ; +C 105 ; WX 222 ; N i ; B 63 0 304 723 ; +C 106 ; WX 222 ; N j ; B -114 -205 307 723 ; +C 107 ; WX 500 ; N k ; B 75 0 547 771 ; +C 108 ; WX 222 ; N l ; B 63 0 313 771 ; +C 109 ; WX 833 ; N m ; B 75 0 846 542 ; +C 110 ; WX 556 ; N n ; B 75 0 570 542 ; +C 111 ; WX 556 ; N o ; B 86 -12 576 542 ; +C 112 ; WX 556 ; N p ; B 36 -193 579 542 ; +C 113 ; WX 556 ; N q ; B 83 -193 587 542 ; +C 114 ; WX 333 ; N r ; B 75 0 434 542 ; +C 115 ; WX 500 ; N s ; B 61 -12 508 542 ; +C 116 ; WX 278 ; N t ; B 97 -12 379 636 ; +C 117 ; WX 556 ; N u ; B 92 -12 587 530 ; +C 118 ; WX 500 ; N v ; B 115 0 600 530 ; +C 119 ; WX 722 ; N w ; B 112 0 821 530 ; +C 120 ; WX 500 ; N x ; B 14 0 578 530 ; +C 121 ; WX 500 ; N y ; B 75 -193 600 530 ; +C 122 ; WX 500 ; N z ; B 36 0 564 530 ; +C 123 ; WX 334 ; N braceleft ; B 67 -145 431 771 ; +C 124 ; WX 260 ; N bar ; B 65 -145 320 771 ; +C 125 ; WX 334 ; N braceright ; B 28 -145 392 771 ; +C 126 ; WX 584 ; N asciitilde ; B 94 201 605 377 ; +C 161 ; WX 333 ; N exclamdown ; B 79 -193 321 530 ; +C 162 ; WX 556 ; N cent ; B 149 0 617 723 ; +C 163 ; WX 556 ; N sterling ; B 59 0 609 741 ; +C 165 ; WX 556 ; N yen ; B 110 0 671 723 ; +C 167 ; WX 556 ; N section ; B 38 -163 610 741 ; +C 168 ; WX 556 ; N currency ; B 97 143 604 580 ; +C 169 ; WX 191 ; N quotesingle ; B 160 506 310 771 ; +C 171 ; WX 556 ; N guillemotleft ; B 109 48 579 482 ; +C 180 ; WX 278 ; N periodcentered ; B 127 240 271 360 ; +C 182 ; WX 537 ; N paragraph ; B 151 -145 586 723 ; +C 187 ; WX 556 ; N guillemotright ; B 83 48 553 482 ; +C 191 ; WX 611 ; N questiondown ; B 77 -211 508 530 ; +C 193 ; WX 333 ; N grave ; B 209 626 406 783 ; +C 194 ; WX 333 ; N acute ; B 188 626 449 783 ; +C 195 ; WX 333 ; N circumflex ; B 121 626 462 783 ; +C 196 ; WX 333 ; N tilde ; B 129 626 477 741 ; +C 197 ; WX 333 ; N macron ; B 135 627 463 699 ; +C 198 ; WX 333 ; N breve ; B 160 626 486 783 ; +C 199 ; WX 333 ; N dotaccent ; B 243 626 360 723 ; +C 200 ; WX 333 ; N dieresis ; B 153 626 447 711 ; +C 202 ; WX 333 ; N ring ; B 201 626 427 848 ; +C 203 ; WX 333 ; N cedilla ; B 44 -211 228 0 ; +C 205 ; WX 333 ; N hungarumlaut ; B 100 626 515 783 ; +C 206 ; WX 333 ; N ogonek ; B 61 -181 225 0 ; +C 207 ; WX 333 ; N caron ; B 153 626 494 783 ; +C 225 ; WX 1000 ; N AE ; B 9 0 1095 723 ; +C 227 ; WX 370 ; N ordfeminine ; B 139 402 436 741 ; +C 232 ; WX 556 ; N Lslash ; B 68 0 552 723 ; +C 233 ; WX 778 ; N Oslash ; B 47 -18 881 741 ; +C 234 ; WX 1000 ; N OE ; B 107 -18 1095 741 ; +C 235 ; WX 365 ; N ordmasculine ; B 145 402 448 741 ; +C 241 ; WX 889 ; N ae ; B 69 -12 897 542 ; +C 245 ; WX 222 ; N dotlessi ; B 63 0 265 530 ; +C 248 ; WX 222 ; N lslash ; B 60 0 329 771 ; +C 249 ; WX 611 ; N oslash ; B 68 -12 649 542 ; +C 250 ; WX 944 ; N oe ; B 87 -12 951 542 ; +C 251 ; WX 611 ; N germandbls ; B 63 -12 602 783 ; +C -1 ; WX 667 ; N Aacute ; B 9 0 690 940 ; +C -1 ; WX 667 ; N Abreve ; B 9 0 686 940 ; +C -1 ; WX 667 ; N Acircumflex ; B 9 0 662 940 ; +C -1 ; WX 667 ; N Adieresis ; B 9 0 655 868 ; +C -1 ; WX 667 ; N Agrave ; B 9 0 655 940 ; +C -1 ; WX 667 ; N Amacron ; B 9 0 663 856 ; +C -1 ; WX 667 ; N Aogonek ; B 9 -181 655 723 ; +C -1 ; WX 667 ; N Aring ; B 9 0 655 945 ; +C -1 ; WX 667 ; N Atilde ; B 9 0 677 898 ; +C -1 ; WX 722 ; N Cacute ; B 118 -18 801 940 ; +C -1 ; WX 722 ; N Ccaron ; B 118 -18 801 940 ; +C -1 ; WX 722 ; N Ccedilla ; B 118 -211 801 741 ; +C -1 ; WX 722 ; N Ccircumflex ; B 118 -18 801 940 ; +C -1 ; WX 722 ; N Cdotaccent ; B 118 -18 801 880 ; +C -1 ; WX 722 ; N Dcaron ; B 81 0 762 940 ; +C -1 ; WX 722 ; N Dcroat ; B 68 0 763 723 ; +C -1 ; WX 667 ; N Eacute ; B 93 0 762 940 ; +C -1 ; WX 667 ; N Ebreve ; B 93 0 762 940 ; +C -1 ; WX 667 ; N Ecaron ; B 93 0 762 940 ; +C -1 ; WX 667 ; N Ecircumflex ; B 93 0 762 940 ; +C -1 ; WX 667 ; N Edieresis ; B 93 0 762 868 ; +C -1 ; WX 667 ; N Edotaccent ; B 93 0 762 880 ; +C -1 ; WX 667 ; N Egrave ; B 93 0 762 940 ; +C -1 ; WX 667 ; N Emacron ; B 93 0 762 856 ; +C -1 ; WX 722 ; N Eng ; B 81 -205 786 723 ; +C -1 ; WX 667 ; N Eogonek ; B 93 -181 762 723 ; +C -1 ; WX 722 ; N Eth ; B 68 0 763 723 ; +C -1 ; WX 556 ; N Euro ; B 52 -18 671 740 ; +C -1 ; WX 778 ; N Gbreve ; B 106 -18 827 940 ; +C -1 ; WX 778 ; N Gcircumflex ; B 106 -18 827 940 ; +C -1 ; WX 778 ; N Gcommaaccent ; B 106 -211 827 741 ; +C -1 ; WX 778 ; N Gdotaccent ; B 106 -18 827 880 ; +C -1 ; WX 722 ; N Hbar ; B 81 0 834 723 ; +C -1 ; WX 722 ; N Hcircumflex ; B 81 0 786 940 ; +C -1 ; WX 735 ; N IJ ; B 88 -145 790 723 ; +C -1 ; WX 278 ; N Iacute ; B 88 0 495 940 ; +C -1 ; WX 278 ; N Ibreve ; B 88 0 489 940 ; +C -1 ; WX 278 ; N Icircumflex ; B 88 0 466 940 ; +C -1 ; WX 278 ; N Idieresis ; B 88 0 451 868 ; +C -1 ; WX 278 ; N Idotaccent ; B 88 0 364 880 ; +C -1 ; WX 278 ; N Igrave ; B 88 0 368 940 ; +C -1 ; WX 278 ; N Imacron ; B 88 0 466 856 ; +C -1 ; WX 278 ; N Iogonek ; B 37 -181 335 723 ; +C -1 ; WX 278 ; N Itilde ; B 88 0 481 898 ; +C -1 ; WX 500 ; N Jcircumflex ; B 1 -145 674 940 ; +C -1 ; WX 667 ; N Kcommaaccent ; B 93 -211 738 723 ; +C -1 ; WX 556 ; N Lacute ; B 81 0 552 940 ; +C -1 ; WX 556 ; N Lcaron ; B 81 0 569 723 ; +C -1 ; WX 556 ; N Lcommaaccent ; B 81 -211 552 723 ; +C -1 ; WX 556 ; N Ldot ; B 81 0 552 723 ; +C -1 ; WX 722 ; N Nacute ; B 81 0 786 940 ; +C -1 ; WX 722 ; N Ncaron ; B 81 0 786 940 ; +C -1 ; WX 722 ; N Ncommaaccent ; B 81 -211 786 723 ; +C -1 ; WX 722 ; N Ntilde ; B 81 0 786 898 ; +C -1 ; WX 778 ; N Oacute ; B 107 -18 816 940 ; +C -1 ; WX 778 ; N Obreve ; B 107 -18 816 940 ; +C -1 ; WX 778 ; N Ocircumflex ; B 107 -18 816 940 ; +C -1 ; WX 778 ; N Odieresis ; B 107 -18 816 868 ; +C -1 ; WX 778 ; N Ograve ; B 107 -18 816 940 ; +C -1 ; WX 778 ; N Ohungarumlaut ; B 107 -18 847 940 ; +C -1 ; WX 778 ; N Omacron ; B 107 -18 816 856 ; +C -1 ; WX 778 ; N Otilde ; B 107 -18 816 898 ; +C -1 ; WX 722 ; N Racute ; B 81 0 718 940 ; +C -1 ; WX 722 ; N Rcaron ; B 81 0 718 940 ; +C -1 ; WX 722 ; N Rcommaaccent ; B 81 -211 718 723 ; +C -1 ; WX 667 ; N Sacute ; B 64 -18 704 940 ; +C -1 ; WX 667 ; N Scaron ; B 64 -18 704 940 ; +C -1 ; WX 667 ; N Scedilla ; B 64 -191 704 741 ; +C -1 ; WX 667 ; N Scircumflex ; B 64 -18 704 940 ; +C -1 ; WX 667 ; N Scommaaccent ; B 64 -211 704 741 ; +C -1 ; WX 611 ; N Tbar ; B 139 0 746 723 ; +C -1 ; WX 611 ; N Tcaron ; B 139 0 746 940 ; +C -1 ; WX 611 ; N Tcedilla ; B 139 -191 746 723 ; +C -1 ; WX 611 ; N Tcommaaccent ; B 139 -211 746 723 ; +C -1 ; WX 667 ; N Thorn ; B 81 0 729 723 ; +C -1 ; WX 722 ; N Uacute ; B 122 -18 786 940 ; +C -1 ; WX 722 ; N Ubreve ; B 122 -18 786 940 ; +C -1 ; WX 722 ; N Ucircumflex ; B 122 -18 786 940 ; +C -1 ; WX 722 ; N Udieresis ; B 122 -18 786 868 ; +C -1 ; WX 722 ; N Ugrave ; B 122 -18 786 940 ; +C -1 ; WX 722 ; N Uhungarumlaut ; B 122 -18 815 940 ; +C -1 ; WX 722 ; N Umacron ; B 122 -18 786 856 ; +C -1 ; WX 722 ; N Uogonek ; B 122 -181 786 723 ; +C -1 ; WX 722 ; N Uring ; B 122 -18 786 993 ; +C -1 ; WX 722 ; N Utilde ; B 122 -18 786 898 ; +C -1 ; WX 944 ; N Wcircumflex ; B 157 0 1077 940 ; +C -1 ; WX 667 ; N Yacute ; B 160 0 798 940 ; +C -1 ; WX 667 ; N Ycircumflex ; B 160 0 798 940 ; +C -1 ; WX 667 ; N Ydieresis ; B 160 0 798 868 ; +C -1 ; WX 611 ; N Zacute ; B 50 0 706 940 ; +C -1 ; WX 611 ; N Zcaron ; B 50 0 706 940 ; +C -1 ; WX 611 ; N Zdotaccent ; B 50 0 706 880 ; +C -1 ; WX 556 ; N aacute ; B 69 -12 607 783 ; +C -1 ; WX 556 ; N abreve ; B 69 -12 607 783 ; +C -1 ; WX 556 ; N acircumflex ; B 69 -12 578 783 ; +C -1 ; WX 556 ; N adieresis ; B 69 -12 554 711 ; +C -1 ; WX 333 ; N afii57929 ; B 228 549 369 771 ; +C -1 ; WX 556 ; N agrave ; B 69 -12 543 783 ; +C -1 ; WX 556 ; N amacron ; B 69 -12 569 699 ; +C -1 ; WX 556 ; N aogonek ; B 69 -181 543 542 ; +C -1 ; WX 333 ; N apostrophe ; B 228 549 369 771 ; +C -1 ; WX 556 ; N aring ; B 69 -12 543 848 ; +C -1 ; WX 556 ; N atilde ; B 69 -12 578 741 ; +C -1 ; WX 260 ; N brokenbar ; B 65 -145 320 771 ; +C -1 ; WX 500 ; N cacute ; B 87 -12 610 783 ; +C -1 ; WX 500 ; N ccaron ; B 87 -12 624 783 ; +C -1 ; WX 500 ; N ccedilla ; B 87 -211 552 542 ; +C -1 ; WX 500 ; N ccircumflex ; B 87 -12 592 783 ; +C -1 ; WX 500 ; N cdotaccent ; B 87 -12 552 723 ; +C -1 ; WX 333 ; N commaaccent ; B 45 -211 227 -54 ; +C -1 ; WX 737 ; N copyright ; B 72 0 810 723 ; +C -1 ; WX 615 ; N dcaron ; B 83 -12 769 771 ; +C -1 ; WX 556 ; N dcroat ; B 83 -12 688 771 ; +C -1 ; WX 400 ; N degree ; B 171 452 467 741 ; +C -1 ; WX 584 ; N divide ; B 102 0 598 578 ; +C -1 ; WX 222 ; N dotlessj ; B -114 -205 268 530 ; +C -1 ; WX 556 ; N eacute ; B 89 -12 603 783 ; +C -1 ; WX 556 ; N ebreve ; B 89 -12 597 783 ; +C -1 ; WX 556 ; N ecaron ; B 89 -12 606 783 ; +C -1 ; WX 556 ; N ecircumflex ; B 89 -12 579 783 ; +C -1 ; WX 556 ; N edieresis ; B 89 -12 565 711 ; +C -1 ; WX 556 ; N edotaccent ; B 89 -12 564 723 ; +C -1 ; WX 556 ; N egrave ; B 89 -12 564 783 ; +C -1 ; WX 556 ; N emacron ; B 89 -12 574 699 ; +C -1 ; WX 556 ; N eng ; B 75 -205 570 542 ; +C -1 ; WX 556 ; N eogonek ; B 89 -181 564 542 ; +C -1 ; WX 602 ; N eth ; B 87 -12 624 818 ; +C -1 ; WX 556 ; N gbreve ; B 14 -205 612 783 ; +C -1 ; WX 556 ; N gcircumflex ; B 14 -205 590 783 ; +C -1 ; WX 556 ; N gcommaaccent ; B 14 -205 590 848 ; +C -1 ; WX 556 ; N gdotaccent ; B 14 -205 590 723 ; +C -1 ; WX 556 ; N hbar ; B 75 0 570 771 ; +C -1 ; WX 556 ; N hcircumflex ; B 75 0 616 976 ; +C -1 ; WX 222 ; N iacute ; B 63 0 436 783 ; +C -1 ; WX 222 ; N ibreve ; B 63 0 430 783 ; +C -1 ; WX 222 ; N icircumflex ; B 63 0 406 783 ; +C -1 ; WX 222 ; N idieresis ; B 63 0 391 711 ; +C -1 ; WX 222 ; N igrave ; B 63 0 308 783 ; +C -1 ; WX 444 ; N ij ; B 63 -205 529 723 ; +C -1 ; WX 222 ; N imacron ; B 63 0 407 699 ; +C -1 ; WX 222 ; N iogonek ; B 8 -181 304 723 ; +C -1 ; WX 222 ; N itilde ; B 63 0 421 741 ; +C -1 ; WX 222 ; N jcircumflex ; B -114 -205 401 783 ; +C -1 ; WX 500 ; N kcommaaccent ; B 75 -211 547 771 ; +C -1 ; WX 500 ; N kgreenlandic ; B 75 0 547 530 ; +C -1 ; WX 222 ; N lacute ; B 63 0 463 976 ; +C -1 ; WX 292 ; N lcaron ; B 63 0 452 771 ; +C -1 ; WX 222 ; N lcommaaccent ; B -2 -211 313 771 ; +C -1 ; WX 334 ; N ldot ; B 63 0 410 771 ; +C -1 ; WX 584 ; N logicalnot ; B 114 145 611 434 ; +C -1 ; WX 222 ; N longs ; B 70 0 406 783 ; +C -1 ; WX 556 ; N mu ; B 30 -193 587 530 ; +C -1 ; WX 584 ; N multiply ; B 79 55 620 523 ; +C -1 ; WX 556 ; N nacute ; B 75 0 588 783 ; +C -1 ; WX 604 ; N napostrophe ; B 110 0 618 771 ; +C -1 ; WX 278 ; N nbspace ; B 0 0 0 0 ; +C -1 ; WX 556 ; N ncaron ; B 75 0 613 783 ; +C -1 ; WX 556 ; N ncommaaccent ; B 75 -211 570 542 ; +C -1 ; WX 556 ; N ntilde ; B 75 0 584 741 ; +C -1 ; WX 556 ; N oacute ; B 86 -12 603 783 ; +C -1 ; WX 556 ; N obreve ; B 86 -12 597 783 ; +C -1 ; WX 556 ; N ocircumflex ; B 86 -12 576 783 ; +C -1 ; WX 556 ; N odieresis ; B 86 -12 576 711 ; +C -1 ; WX 556 ; N ograve ; B 86 -12 576 783 ; +C -1 ; WX 556 ; N ohungarumlaut ; B 86 -12 705 783 ; +C -1 ; WX 556 ; N omacron ; B 86 -12 576 699 ; +C -1 ; WX 834 ; N onehalf ; B 65 -18 841 741 ; +C -1 ; WX 834 ; N onequarter ; B 89 -18 839 741 ; +C -1 ; WX 333 ; N onesuperior ; B 187 289 376 734 ; +C -1 ; WX 556 ; N otilde ; B 86 -12 588 741 ; +C -1 ; WX 584 ; N plusminus ; B 51 0 613 578 ; +C -1 ; WX 333 ; N racute ; B 75 0 510 783 ; +C -1 ; WX 333 ; N rcaron ; B 75 0 500 783 ; +C -1 ; WX 333 ; N rcommaaccent ; B 34 -211 434 542 ; +C -1 ; WX 737 ; N registered ; B 72 0 810 723 ; +C -1 ; WX 500 ; N sacute ; B 61 -12 582 783 ; +C -1 ; WX 500 ; N scaron ; B 61 -12 596 783 ; +C -1 ; WX 500 ; N scedilla ; B 61 -191 508 542 ; +C -1 ; WX 500 ; N scircumflex ; B 61 -12 563 783 ; +C -1 ; WX 500 ; N scommaaccent ; B 61 -211 508 542 ; +C -1 ; WX 333 ; N sfthyphen ; B 94 253 355 325 ; +C -1 ; WX 278 ; N tbar ; B 69 -12 379 636 ; +C -1 ; WX 375 ; N tcaron ; B 97 -12 517 824 ; +C -1 ; WX 278 ; N tcedilla ; B 69 -191 379 636 ; +C -1 ; WX 278 ; N tcommaaccent ; B 46 -211 379 636 ; +C -1 ; WX 556 ; N thorn ; B 36 -193 579 771 ; +C -1 ; WX 834 ; N threequarters ; B 112 -18 884 741 ; +C -1 ; WX 333 ; N threesuperior ; B 94 278 419 734 ; +C -1 ; WX 333 ; N twosuperior ; B 94 289 437 734 ; +C -1 ; WX 556 ; N uacute ; B 92 -12 600 783 ; +C -1 ; WX 556 ; N ubreve ; B 92 -12 594 783 ; +C -1 ; WX 556 ; N ucircumflex ; B 92 -12 587 783 ; +C -1 ; WX 556 ; N udieresis ; B 92 -12 587 711 ; +C -1 ; WX 556 ; N ugrave ; B 92 -12 587 783 ; +C -1 ; WX 556 ; N uhungarumlaut ; B 92 -12 682 783 ; +C -1 ; WX 556 ; N umacron ; B 92 -12 587 699 ; +C -1 ; WX 556 ; N uni20AC ; B 52 -18 671 740 ; +C -1 ; WX 556 ; N uogonek ; B 92 -181 587 530 ; +C -1 ; WX 556 ; N uring ; B 92 -12 587 848 ; +C -1 ; WX 556 ; N utilde ; B 92 -12 587 741 ; +C -1 ; WX 722 ; N wcircumflex ; B 112 0 821 783 ; +C -1 ; WX 500 ; N yacute ; B 75 -193 600 783 ; +C -1 ; WX 500 ; N ycircumflex ; B 75 -193 600 783 ; +C -1 ; WX 500 ; N ydieresis ; B 75 -193 600 711 ; +C -1 ; WX 500 ; N zacute ; B 36 0 564 783 ; +C -1 ; WX 500 ; N zcaron ; B 36 0 579 783 ; +C -1 ; WX 500 ; N zdotaccent ; B 36 0 564 723 ; +EndCharMetrics +StartComposites 132 +CC Aacute 2 ; PCC A 0 0 ; PCC acute 210 157 ; +CC Abreve 2 ; PCC A 0 0 ; PCC breve 169 157 ; +CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 168 157 ; +CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 168 157 ; +CC Agrave 2 ; PCC A 0 0 ; PCC grave 126 157 ; +CC Amacron 2 ; PCC A 0 0 ; PCC macron 169 157 ; +CC Atilde 2 ; PCC A 0 0 ; PCC tilde 168 157 ; +CC Cacute 2 ; PCC C 0 0 ; PCC acute 281 157 ; +CC Ccaron 2 ; PCC C 0 0 ; PCC caron 250 157 ; +CC Ccircumflex 2 ; PCC C 0 0 ; PCC circumflex 250 157 ; +CC Cdotaccent 2 ; PCC C 0 0 ; PCC dotaccent 250 157 ; +CC Dcaron 2 ; PCC D 0 0 ; PCC caron 167 157 ; +CC Eacute 2 ; PCC E 0 0 ; PCC acute 240 157 ; +CC Ebreve 2 ; PCC E 0 0 ; PCC breve 193 157 ; +CC Ecaron 2 ; PCC E 0 0 ; PCC caron 191 157 ; +CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 199 157 ; +CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 192 157 ; +CC Edotaccent 2 ; PCC E 0 0 ; PCC dotaccent 192 157 ; +CC Egrave 2 ; PCC E 0 0 ; PCC grave 156 157 ; +CC Emacron 2 ; PCC E 0 0 ; PCC macron 186 157 ; +CC Gbreve 2 ; PCC G 0 0 ; PCC breve 256 157 ; +CC Gcircumflex 2 ; PCC G 0 0 ; PCC circumflex 256 157 ; +CC Gdotaccent 2 ; PCC G 0 0 ; PCC dotaccent 257 157 ; +CC Hcircumflex 2 ; PCC H 0 0 ; PCC circumflex 194 157 ; +CC Iacute 2 ; PCC I 0 0 ; PCC acute 15 157 ; +CC Ibreve 2 ; PCC I 0 0 ; PCC breve -28 157 ; +CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex -28 157 ; +CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis -28 157 ; +CC Idotaccent 2 ; PCC I 0 0 ; PCC dotaccent -27 157 ; +CC Igrave 2 ; PCC I 0 0 ; PCC grave -70 157 ; +CC Imacron 2 ; PCC I 0 0 ; PCC macron -28 157 ; +CC Itilde 2 ; PCC I 0 0 ; PCC tilde -28 157 ; +CC Jcircumflex 2 ; PCC J 0 0 ; PCC circumflex 180 157 ; +CC Lacute 2 ; PCC L 0 0 ; PCC acute 24 157 ; +CC Ldot 2 ; PCC L 0 0 ; PCC dotaccent 245 -313 ; +CC Nacute 2 ; PCC N 0 0 ; PCC acute 226 157 ; +CC Ncaron 2 ; PCC N 0 0 ; PCC caron 195 157 ; +CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 207 157 ; +CC Oacute 2 ; PCC O 0 0 ; PCC acute 265 157 ; +CC Obreve 2 ; PCC O 0 0 ; PCC breve 222 157 ; +CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 222 157 ; +CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 222 157 ; +CC Ograve 2 ; PCC O 0 0 ; PCC grave 180 157 ; +CC Ohungarumlaut 2 ; PCC O 0 0 ; PCC hungarumlaut 301 157 ; +CC Omacron 2 ; PCC O 0 0 ; PCC macron 222 157 ; +CC Otilde 2 ; PCC O 0 0 ; PCC tilde 222 157 ; +CC Racute 2 ; PCC R 0 0 ; PCC acute 192 157 ; +CC Rcaron 2 ; PCC R 0 0 ; PCC caron 143 157 ; +CC Sacute 2 ; PCC S 0 0 ; PCC acute 193 157 ; +CC Scaron 2 ; PCC S 0 0 ; PCC caron 162 157 ; +CC Scircumflex 2 ; PCC S 0 0 ; PCC circumflex 161 157 ; +CC Tcaron 2 ; PCC T 0 0 ; PCC caron 139 157 ; +CC Uacute 2 ; PCC U 0 0 ; PCC acute 243 157 ; +CC Ubreve 2 ; PCC U 0 0 ; PCC breve 201 157 ; +CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 201 157 ; +CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 201 157 ; +CC Ugrave 2 ; PCC U 0 0 ; PCC grave 159 157 ; +CC Uhungarumlaut 2 ; PCC U 0 0 ; PCC hungarumlaut 269 157 ; +CC Umacron 2 ; PCC U 0 0 ; PCC macron 201 157 ; +CC Uring 2 ; PCC U 0 0 ; PCC ring 201 145 ; +CC Utilde 2 ; PCC U 0 0 ; PCC tilde 201 157 ; +CC Wcircumflex 2 ; PCC W 0 0 ; PCC circumflex 311 157 ; +CC Yacute 2 ; PCC Y 0 0 ; PCC acute 213 157 ; +CC Ycircumflex 2 ; PCC Y 0 0 ; PCC circumflex 178 157 ; +CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 178 157 ; +CC Zacute 2 ; PCC Z 0 0 ; PCC acute 170 157 ; +CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 145 157 ; +CC Zdotaccent 2 ; PCC Z 0 0 ; PCC dotaccent 145 157 ; +CC aacute 2 ; PCC a 0 0 ; PCC acute 158 0 ; +CC abreve 2 ; PCC a 0 0 ; PCC breve 121 0 ; +CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 116 0 ; +CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 107 0 ; +CC agrave 2 ; PCC a 0 0 ; PCC grave 74 0 ; +CC amacron 2 ; PCC a 0 0 ; PCC macron 106 0 ; +CC aring 2 ; PCC a 0 0 ; PCC ring 116 0 ; +CC atilde 2 ; PCC a 0 0 ; PCC tilde 101 0 ; +CC cacute 2 ; PCC c 0 0 ; PCC acute 161 0 ; +CC ccaron 2 ; PCC c 0 0 ; PCC caron 130 0 ; +CC ccircumflex 2 ; PCC c 0 0 ; PCC circumflex 130 0 ; +CC cdotaccent 2 ; PCC c 0 0 ; PCC dotaccent 130 0 ; +CC eacute 2 ; PCC e 0 0 ; PCC acute 154 0 ; +CC ebreve 2 ; PCC e 0 0 ; PCC breve 111 0 ; +CC ecaron 2 ; PCC e 0 0 ; PCC caron 112 0 ; +CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 117 0 ; +CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 118 0 ; +CC edotaccent 2 ; PCC e 0 0 ; PCC dotaccent 112 0 ; +CC egrave 2 ; PCC e 0 0 ; PCC grave 69 0 ; +CC emacron 2 ; PCC e 0 0 ; PCC macron 111 0 ; +CC gbreve 2 ; PCC g 0 0 ; PCC breve 126 0 ; +CC gcircumflex 2 ; PCC g 0 0 ; PCC circumflex 125 0 ; +CC gdotaccent 2 ; PCC g 0 0 ; PCC dotaccent 120 0 ; +CC hcircumflex 2 ; PCC h 0 0 ; PCC circumflex 115 193 ; +CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -13 0 ; +CC ibreve 2 ; PCC dotlessi 0 0 ; PCC breve -56 0 ; +CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -56 0 ; +CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -56 0 ; +CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -98 0 ; +CC imacron 2 ; PCC dotlessi 0 0 ; PCC macron -56 0 ; +CC itilde 2 ; PCC dotlessi 0 0 ; PCC tilde -56 0 ; +CC lacute 2 ; PCC l 0 0 ; PCC acute -24 193 ; +CC nacute 2 ; PCC n 0 0 ; PCC acute 139 0 ; +CC ncaron 2 ; PCC n 0 0 ; PCC caron 119 0 ; +CC ntilde 2 ; PCC n 0 0 ; PCC tilde 107 0 ; +CC oacute 2 ; PCC o 0 0 ; PCC acute 154 0 ; +CC obreve 2 ; PCC o 0 0 ; PCC breve 111 0 ; +CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 111 0 ; +CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 111 0 ; +CC ograve 2 ; PCC o 0 0 ; PCC grave 69 0 ; +CC ohungarumlaut 2 ; PCC o 0 0 ; PCC hungarumlaut 190 0 ; +CC omacron 2 ; PCC o 0 0 ; PCC macron 111 0 ; +CC otilde 2 ; PCC o 0 0 ; PCC tilde 111 0 ; +CC racute 2 ; PCC r 0 0 ; PCC acute 61 0 ; +CC rcaron 2 ; PCC r 0 0 ; PCC caron 6 0 ; +CC sacute 2 ; PCC s 0 0 ; PCC acute 133 0 ; +CC scaron 2 ; PCC s 0 0 ; PCC caron 102 0 ; +CC scircumflex 2 ; PCC s 0 0 ; PCC circumflex 101 0 ; +CC uacute 2 ; PCC u 0 0 ; PCC acute 151 0 ; +CC ubreve 2 ; PCC u 0 0 ; PCC breve 108 0 ; +CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 108 0 ; +CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 108 0 ; +CC ugrave 2 ; PCC u 0 0 ; PCC grave 72 0 ; +CC uhungarumlaut 2 ; PCC u 0 0 ; PCC hungarumlaut 167 0 ; +CC umacron 2 ; PCC u 0 0 ; PCC macron 108 0 ; +CC uring 2 ; PCC u 0 0 ; PCC ring 108 0 ; +CC utilde 2 ; PCC u 0 0 ; PCC tilde 108 0 ; +CC wcircumflex 2 ; PCC w 0 0 ; PCC circumflex 198 0 ; +CC yacute 2 ; PCC y 0 0 ; PCC acute 127 0 ; +CC ycircumflex 2 ; PCC y 0 0 ; PCC circumflex 91 0 ; +CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 91 0 ; +CC zacute 2 ; PCC z 0 0 ; PCC acute 115 0 ; +CC zcaron 2 ; PCC z 0 0 ; PCC caron 85 0 ; +CC zdotaccent 2 ; PCC z 0 0 ; PCC dotaccent 82 0 ; +EndComposites +EndFontMetrics Index: xc/fonts/scaled/Type1/lcdxso.pfa diff -u /dev/null xc/fonts/scaled/Type1/lcdxso.pfa:1.1 --- /dev/null Wed Mar 8 16:39:16 2000 +++ xc/fonts/scaled/Type1/lcdxso.pfa Wed Mar 8 16:39:16 2000 @@ -0,0 +1,947 @@ +%!PS-AdobeFont-1.1: LuciduxSans-Oblique 000.200 +%%CreationDate: 2000 Mar 04 11:21:33 + +% Copyright (C) 2000 Bigelow & Holmes Inc. and Y&Y, Inc. +% Patents pending. All Rights Reserved. +% Lucidux is a trademark of Bigelow & Holmes Inc. + +% Permission is hereby granted, free of charge, to any person obtaining a +% copy of these Fonts and associated documentation files (the "Font Software"), +% to deal in the Font Software, including without limitation the rights to +% use, copy, merge, publish, distribute, sublicense, and/or sell copies of +% the Font Software, and to permit persons to whom the Font Software is +% furnished to do so, subject to the following conditions: + +% The above copyright, trademark, patent notices and this permission notice +% shall be included in all copies of one or more of the Software. + +% The Font Software may not be modified, alterered, or added to, and in +% particular the designs of glyphs or characters in the Fonts may not be +% modified nor may additional glyphs or characters be added to the Fonts, +% except that composite characters composed of two or more characters in the +% Fonts may be created using the seac (Standard Encoding Accented Character) +% Type 1 operator. + +% THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +% EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +% MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF +% COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BIGELOW & +% HOLMES INC. OR Y&Y, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR +% CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +% ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +% OTHER DEALINGS IN THE FONT SOFTWARE. + +% Except as contained in this notice, the names of Bigelow & Holmes Inc. +% and Y&Y, Inc. shall not be used in advertising or otherwise to promote +% the sale, use or other dealings in this Font Software without prior +% written authorization from the Bigelow & Holmes Inc. and Y&Y, Inc. + +% For further information, contact: +% mailto:support@yandy.com or mailto:design@bigelowandholmes.com +% For other Bigelow & Holmes fonts see http://www.YandY.com + +12 dict begin +/FontInfo 9 dict dup begin + /version (000.200) readonly def + /Notice (Copyright (C) 2000 Bigelow & Holmes Inc. and Y&Y, Inc. All rights reserved.) readonly def + /FullName (Lucidux Sans Oblique) readonly def + /FamilyName (LuciduxSans) readonly def + /Weight (Normal) readonly def + /ItalicAngle -11.3 def + /isFixedPitch false def + /UnderlinePosition -100 def + /UnderlineThickness 50 def +end readonly def +/FontName /LuciduxSans-Oblique def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0.0002 0.001 0 0] readonly def +/Encoding StandardEncoding def +/FontBBox{-114 -211 1095 993}readonly def +/UniqueID 5096732 def +currentdict end +currentfile eexec +8053514D28EC28DA1630165FAB262882D3FD7667933E8516EE9710995B33AD6AFA66AE56E3B4F8 +1A010BA2D16746155E0B46B8233AF9FC6FB5A1DE6E6D7277AEC5CE81679028F3B440619FB93E88 +614EBEE63F9A83374DA4CF45FCBBACEBE22717D34438C9B2E3DC7580F497AC697EA20AC096930F +E90934EA8FFE999902BA55F2149DEADDCBC4CF03F530F526450856BF8F3CE1C247AA6810D725B6 +E4CB0C6B7DC3B7B5FBE22909A1ED01A6BCEFAE9A709DB1D61BF8A223420C27BC28535F3C5C58CE +BD7239771F455E727EB9C9025F7B0B98D9C49F8A33E8C9A67A30CBC40719B9902A42978F54386A +B019C6EED778074F809506075C7CF394AFF792A52C36CC8FCE79BAABF945F6AB3AE924FBF89F12 +D0D56822E09D7226051E5235D975B5A7E02610477A9B9148DA4E93861FF37C54BBB2F3196A5A37 +94CC7C8B06CB9817A184DD7B41CF130CA812FD511CC539DA6AE1E3D8D57C26DC2630D87CA276CB +0B55BEC3BB4626608A4DE50E3CBF313230AFAA9E86F83366003B63876ED7072ADF068B03629105 +DE8544254F4129096C4FCB741029ED5BA6CB35A252101753C6C281596F941C8920384006DC05B0 +7524CE87D7417B91C09BBEB93B101B235AB55AA83002BBEB2985F027DFBBC44788AEDC34EF62DC +2A09A392092F1A50F78EA5581DFC60B398AC14788E3B34B0668E36052A5CEE9B99194450D5EF58 +09CE4A135E0748A0B303CE38670BF1259F07723DE12F4CD22AF12BD694E18ED00771D33F9526DA +174BDF8B8A436D9393EBE156CCA73F0BF8918F0B38391DFF01B58AAEB19CDC034A8AF404241B38 +76EF2BA5BCA0B558529249379A42CF8760EEA3940C75D8BB8E8B73F93AF59AD85BCA1CBAD644AE +A6250A5D31A85622C0679181F4C77750A5B677F9E8E15DE7BF691BEE2D69968CA11564E06C0329 +26537AC3FABA055613A724B3963FE5D55CE9ACA3CB3B60A441545B5A0FC5997997B5A3F0E1278B +22BD9261203FF2843678148A6F35DAFD8A84FB0A31C02D199BE33C6D5028BA15BCD58A16B4A2EA +B46183B6C91682BF4D8FD64F91D8EE0AB4BE4C2F3B6563ECDD4EEC06069E63D1DB4C0444C4FADB +70C16B6C29BB621E1F5F55405E90D965A6AB5870C30A02BF977C49062B104C6D9F9E4B1B1B1FE4 +E4A19F5B2B36DDD1B9015B2BDF27CC38376393DFA5610A2AA765ED36F113A7F8534AE0ABFCEA93 +DCD5BC0C00B77742E6B92C88CD296CE78F6DDDF463FADF15D59F986035CAD7998191B9002D536F +D1578FA40E4B18D23164AFFD6C91D7B636497C86F743D14AB370FA25BFE68047223B3890AE5348 +BBD1A35D5B80579A6C1754EF5FC435A2D3F2131FC63525294329133007E8A2FDF8C3CCBB235577 +F0B8A91BDEB2648A833F63382FDB32E2E646CFF228F1F326F51E086D3023FFFC9185C666BF727C +4AD617741FF3DF6B205D21D7C2AA1616421AC49E94FF2F1A04A33ED9A13218C10650FCF75865E0 +CB7F08D250D3511E22D34E28DEFD4A44FBC573C888C769600053C088DA2D643AD043C4339F7581 +A38D4CDA6DC5005E90251D38F1FBA1AC10C679894D096C7572DE0E6CE0B8B3C8281DEC22BF337C +9D8ACC39B5A5030FC54E46C779AEF20DCA8926C5FE6422DB9AA089113A3E001A97E8762B68D7BE +E7E9AABC8F098161B076C10A9D560F9094A41114F56746C6ABB9E9F3454CDCE50669B0AB11F795 +1E928CA3A37EFEFCFF97D42127A373A35CC54D054150ACC4851969E4C848EF44B9B2C2F314DA9A +C684A09C35569DB4D0CEF7511AE719DEB3181C47E7F95FECB8BC2A1F8301350D7384E67B7EEAB7 +6EDAD4C361E8910F3A4538B0528E8E2338267506B8BAB757C203D9F96B01AA67534BBC736D108C +376EB8500E121768BFA217A6D0EB02DF688E9F664B4F15FD5CEAF0EF820B15AEFF20C18103865F +2C0457C39EA7F37FC5B1F02B45B85B91AFD59E3ACCF6392845FD5F0D197AE0DA7D2B992542CF20 +72AF36CD6DAF3E96E5B56F28F072D844A0114B35FCA75ED7B2ACFA9C71093A78ED1F749120C4AF +661B8D6CF18F054C459A8B939B30A6D72E9349794436167F048723E1E18A04E6DF65584DB34B89 +8313151E9E59E504B5EC388EE6B744F5D7E037BD99275D7DFA5D2ECFE2538B49B315B3A6994326 +8FE326CEB209E407BD9801C65321F3180E00DFA768DD7733EBBB5BD1FE14A96A1B86F5D7DBEF3A +EDAE880D7CFA4890E330A131C9B32E5EF275776B6E458ACAD52467570309F73B4E6BF16A18FE88 +DD79CFA7CB98E02F92AD7431B0474178BFE342DD6022BB7FA6443C7D8054D5CBB1055F515686A3 +2CF31102B435C4ADBE6D72CE5F5103FBABEE30CDC37580CCDB54DE8FB3CA1E43562D73B29788B8 +E1F3350F82DF5039C8E06D3B2191A750DF0AB9D2922A0DB6B4673E5226422BD81B58C058E5581F +A8E17C9935BEEAD10D3EC338BF825502700FF94619611955A6D7DDF55AAAE6B1EF2F9EDA1E7EDC +7D5B11B2771D03382A2594D9A08DDF522FBB8ED5183BDAD992530639F351586FDF24C4B9D9037E +8B97E36502F7DACB52E4C4602F5224BF8C1FC37908EA64FC8A2A5F05902E4B8BEFBCFBDE971A8F +82A99BDCCC29CE2677B832D08493D5463B13B25829BBD265201808D7412CB41A6B3CE3461CF737 +463EB19D3FCC05507A71AD250537CC05458FDB7ACDA9343892F3B27E215C572FB42D8AA9F4300A +1C282AB7F83BB28FBD134716EE09BE26488306488CD8E869647493156D540B90C2288FF1F359D9 +9685CB6EFEDAA78FD29F1302C67E97B01B8DAF5E6D77E16885460294F195C390B3D6ACEF2383DA +E3E4FFE6BA911C50F27B3AC9508F44327AB89DA58965079F3719EFC76B159B68328BDB139C1104 +54D7601E22D7E5EA501F805C5BF4FBA3EA051152EDEEDF0CC05D7C6765F194C5AEACD110816D94 +C6B30E978E4B07202AD3F748411BAF9200376B2FF1926255BA38A461A127FA8AC8C9B8BC3B4F83 +8A48515191B4A8C228FCB7680EA09D1EB9A482C1FCF5FB9320C3FCD37388EDE07099D0254F33BB +AE55EED41766B96278B46DF7CBECFA52D0DF759EE64C1CF9ADD80521CDDD11B8F137C40F0EF319 +632D5FAC752ECC0A398DAE6130B3E01AEA8D6804A7F2BCF6844A5E74398E626003FB64BD0F1B2E +99E3657FE6DCFD80B2F469D92EF076BACFAF61E14DF817C5E24EBD1CF9F1C0B4583F287E9E2FBB +048A2A00023514E4920F46289E4185C539C27D80F459B32D5EB2D43275C91CD09989731F423E33 +5263CF83F2215DD6649A39824DB3B89350CEE31C6C07D04C9B679DA07A78793A4CA3B75F7E31B9 +901C4379B103187BD1FCB473A327E9FCC7D45C9AC6F6EFB2DAD1817CA2F8976550116F9C3B6471 +CF39F1843F07E168303EE34EA83A84E3EDCD145B453856AD21FEEB480649CE489A42A3116115BD +BDE85F9F801D59AA8DDAE8603A6F778785C47E41FD3535F867A0C6EA2601492A64EFAC053E529A +5D1A77FF58F784050BFF66694145C44603100D079BD633A0F90200A14D92B717D58D639C5E119E +479C0B92DD6058791715D07F21646CDA08D5EF31E7F9D5722A48DCF8451B9C969254651801358A +A13244B9BF93E4B1B4C952574A1548E8C0A49B57F471F4C5093FFCAAE3DDD38E80C33A101BF195 +241E673F671438EC54DECBD006B6C9E3DB67C4B5AB05B9162900CD66F19B0EB3BF559B48D50F8D +CA100F63FE834A93AC0F9A0BAD4245E947CD848FA3277E24CADC2C477B2EEA0B2A339F0E7CF450 +CA0EF79D3A6C28598825E03FE55B4180A2494E097391D4D910ABDBFB2237275CC30606EC425B20 +472A229E8C778235A0DF2A002DA99A5DF4E83AC2816AE5229BAADEE4723AABEDF48C57017EF06C +8F1C4113C3C0B584453C96CC454835159E34F00B6FBECB94A79D21425D14506D23D0A918770BEE +69D60EF872BD5799A51149D875A8D6FFBA73830C4A5E0BC8D8CE28E72E9BCF3B32CC864A12E44B +1E8B9934BA0D2EF9DECA37431E542E0861CC85C8A7974440965995E0F773506FB7936F6613F023 +251C315267899ED6879FE1FD27C90E2579B4517B379DE6B9219FE84842D7206C6614C18722D6AB +5665B9E4294E178D8A141A3CA7F3413D922B4EFC6AC99F84870CD1655154E04E3C78DAB918F951 +5565D481F38DF8795940603CA0CBDE93F5455BB10DC043CF37342C03778F47ACA9BD2BA8502591 +9DB8199EC26FD75901809188CA821F99194480A7C3670D8B0B89C65A9D9FA372C6FD56075C3072 +E27B9ADFFBAFE39E646FC526DDEA73EB9B18E8A9D92D087A21A86C48DED12B0E11B9D04E1C1016 +9F2D1BF2E6E6AF8CD15028D54087DF5322503C931538C0E56BCA5CEBEAE300CD44C285EEBB5508 +7500BCD00B7DEC624F1758DA5E1D9AC0B7C3DBE5E8F1A7F87CBAE422D63E267FB7245736EB76DF +F82B54B156921AA5D31044CB1A2E88C1D0B108C4512543C2D8F001A104E2BE729B0AF4864F32A9 +2FB8385A1005753F545DC69D66B1ED980B9AEB13B3A0921BB13EFC532152C2A258D88ED3DA9B15 +2901A965A8108FF88B834DFBA4D80CA96148BDB3E13C037515872718FB22FEB61999671C1DFDFA +0AD97032B8E4CE1B3ADEFB01C6327AD2C492EC3B7439ED80E6BC296888225511FEBE1F165411E1 +A18FF41C2363D1538BB9CEF5DD7667BE52A28BAB7D4D8AE6823CCE5FCFD6284D4AC21B42B5F42E +81ED445D914F558CADF62907E1C37EC0AED73FA6DCC88529E6379C30B9B61C2E72CFF7CD919C08 +B81C924A65EDB08776E3762A109DA8B55B5F89C30A2AA4335EF6D5B6FC91F5BB9031F529EF6250 +08AF9BD044416428349CE319F1E98BBDF46C95628DF86B62F0385DDB5288D3BA3AA48DBFB0A726 +3BD3CBD87A75B52E2FA4E6E74BE7E335888EEE6EC40005B39C758A4E06FF9BCCF75ED94D643948 +B04691E7C46286D7D611A238A07ACD1FFC9F742F9DE1F570C8EDD01C6C3C03A1EE45E0783AD514 +BC071640BDB313C33D1BB81D4C8B59B4437B58BDFFEA478464E828F4DED42C55C9DC3C27C8A867 +BD8E754069FC1DECD51E5B3FAA42B39B429DACE417AA2BDDC825D2AF88D08BA85A54B65B96F15F +8594B13E09526BF8AB8A674DACBDCF1984739CFC1DD40BC2F64B1A4F7AADF93891FC191896A6AA +CD01598F655BF7BF4B681832A5E08EF9FB17A505AFF213A3D2CD5C4CF2DFB6861BC85CED1BEA11 +9C3715324857B8604F941543B85D97E52801CC4ABB95649CA733E6C393F480E0A16963A2CB3801 +37215CE5802D673337E6308D46F8AE275E26F19746CB319D3E4340AE879DBB7FC553DAEC61C4AA +56DEAFFDEFD42FA1DC5C45C28FD9F66E5D6F00489D53A3367BCAE8A81286E3A89F6091B43C245D +F6C7B6F9C35C47D639FDD264DD716603D8B3BABEF8785AC4F0740C6FB7EABC7BAE61A4517C1BF6 +F69DBF9F009500E576409BB69A4853CFBC72438829B86D6276DA9A6A0EB1F1711F730638DA6B91 +8A381890FC8EAD040297C85BD0307A62CC45A5BE691D1D258CB9F9BB776A32DC6F3624E9C897B2 +3FB5215AE222438504ED14C1553662AF4EEC414B8DD564DD78F713B1470750E5D143A0CD8475C9 +C85DE3AA5B8D06A527BA8100FD346D7B091FF5B4242099BBD680C7F4378BA86D70CF9AF604A812 +E51B64E0A6F26A3E278B58C67B5A49AD185BCE7EBD99597DF1BB5C0522EA51701D654DB5E2C657 +62EC461A245CB956B0B18FD09BDB2CB0617EC2D89EC932CC5F989938DFDE6487C29CD8308FB3A6 +4149590DC7AAFA3C9A79AC31B80152B8D49CECEB7FCBD28FDB98001E95D3C5AA65D63A3F2CD4F9 +A7EA2D5BB4D820D4C0A0ED49AB0643574ADA5276A9E6DD59B019C49B17EBB7DE7F2B400C54C852 +374DAA0539F683C3D684775CDE0EC09485B60FF2122A0EA168B4528253FD3EED1C9FBAF78B0D7F +1F1C6B509E3D8ECDA6D2E92C963319808EA7B268A3C37FAE564C84C78B450E67B2B69441051380 +D5AC704BDEE2EBE93D29E32B574A622FF6610DA773CA34210CF5D835BCB2BF121877D69B1ECB56 +3D694DA5995CF3F9C8CB525CFABF344D638EA8475790A055AFF046A32A8EC2691606B0F00141B2 +ADF78382AE4B6A7A16378D1AEA1B35C92E4DBA9183157A8F7AE96E7267E220315B3A00F204C235 +4C3350AD42833115AA3B783FEDD36D660165E7758F11D99EA3E8F0306F8989EE3ADCC5FB561381 +AB45CA683B78A35AD3BACA299770505F33E815BCBD0F513F5E7EA12A8782749142F94BA886B521 +64EDCB12EBF6DFB715C485D7A25AC051F71BF026D71D428320AD284CFCCF833756988279C2249F +F4E2282520CDC423376238BB57A4C6A7E29CEDAFEDF2F224F69FFD6B291664C898BC5F049DEDCE +4BB359CAE6F055E2A8160D24A96AB6E1CA0AD93FB80D95F7AB5083DA60336AF05A6DB33EA47651 +28F7273D09B3F0501E89CA21BD8E0A87FEA3BB92BAC38134100071BD46AA4B164472DD6EFFC697 +4C3C52B0B5D1849E1196D0D4B159FC4F7177D2DCF985BC6629DDDD1876EF83F522EFB7A4A7BD98 +98E439122195523E1825120A209F1D4DE2FEE3B9110AECE61ED044A1B0981ADEB82AF59B6B8FE7 +88B4DD6600098A4780914AD5BBF6CF66B53B642B0D57C4929BA0912888E995411C20A7F52E05E4 +BF3A2D7847ECE17DE0D6ACD79379988B2115B2469E39C24CE54A9D31114184F9865C07D707A2CB +14A2F45B62A19C5E3ADFC090F2F53C97458EDF8EBE0D23A1680CBE18AA90B694153E8E9A805E77 +B878C9CDE4D6D4532B6C1BAD4A42F7BB1EE748BAE521686B11A18B9FB97D10229997B718EFAF6E +EB3C223059083F3143E57DF2990229FEFCC5E91600CB3DC2602703F8256C663FF753B636475B05 +ECA220FF5D9897A3080C38440DC9C0095D3ADFB49C24E3B4CAAC89F5E4FB2527B54ECD34B4F094 +4D3C39657DF53FBB696C352E5AD9EA245BB4D61018E34154916DA4C227B2BC55034C67F373E65A +A4F3A9838DEF143CBA0409DE99206E3D31DF19AE24189613B4B11B47359966B72624A83D88A897 +696E2CED831E895A4C9337DFE19483AA3F967E2A483149EFB53B53791078B06E43DC859F84F35A +9201DD09588E695C707169258B18C7E8A72AD464786E9188E017125642D9D56427F18C8622426E +4144451E56108E615EE15A26419F0AB0AF19EDE2988C982BEBBCC99506EB5D9D2D22940E3CB28F +EECBCF8AF67F81F196D53462FAC860FA0076A902A785AC346A2DCD064294CE87602F3791D3E178 +88A5167DBB5FFF6DA15F221C47C50851FA7D81B7AFB2F7B8AE72566EA5EC5CDBE149CA15E1E07D +43F42497A7CCE6E2FB21168960446F31071F5F101BAEA8A1687ABE5BB00F564CFDC8A41D04826A +BDB6DDBAF8F02413F1E5E40446A74F64D287A16A70A305B38C5D58C40C80B2646CB7B9A8440715 +EA1A1496E10B1EC58357B6296548635A5709724B0858D0E56F1778590FA592DA34B0F5085BF1AB +F06B5B31C7C1119CF65D17106A5A657C737D1A3289F74DD8258BEB910EA530E1406CE6D0E78589 +BFD383BC20EDA6FF09D8DF2B9232053C4DD8A43D659BD28FEE42E451C14C5BC39C3689B1225869 +724668393B0D1917A4F85F9171054D30F6E77B8210CEE239F6E72D55463AF4729DAE9DCF007371 +6BB69BB5C57EEADCEE8387E600A7F9DBB36A25FB3B31E78E03019A19B8470ABF9691F2158B6CD0 +1A834164ACD7E6BB471C88E31A3A3EE5FD793EC2B66B459DB7643AF4E99A683B7CF84644F3149C +1D9108C93CF41A60696DCE71C0B9D0DB1DEEEFD812ECFC40CAB9E970FA0262D2428C515377043B +C9111E2972EB943FDFBE04ACDF77259A2E16A11BF14223871B00DCAA88CA0E43E4CFB615395FA5 +130AE496BC9F039055520187A5A03A491760CA2F755C7E8A9237A9FF40A3E10837B4A6C5731542 +9BDB0A55A29059D73AB0A7C12FC31267185279AE9DBC0DBFB0E431CF2A094C4B5EFFE835D627DA +FBED6C6F1E4993912FEF954036AD8F1554376369DC38C61AA9DA8E02233552BD769B3036992B47 +F3387D09F9AA1980C5312999899E4A4EF3C7BF90C8579C883D7B0BA2242E40F9A95501614B241C +4ECA8CB31071EC6EB6CEBBB917A0FCD3B12ADD6046AF3790668D9AEE87DAB0160F37DDB2230DD6 +51BB701E72A9B05A998516EE6F506B3504AF675A9DECF7A3719B16253F94B1A0D873582A61471F +B0F9CA6B9A4143DA90C60FA53F2D6C741F4D15E26AD2BAC61DFC0817EAF480D67F16D4A88183C6 +EEE75732772FCB0B31D149E2082AB91E9F2FD4C4569EC5FC46F1754E0C1E0A4EA3EEAF7A871DCD +9B05FA45A170D3052D1734A38F56B7D3F835CB8D375E7772B389AC5B924CCE960EE53019BF1322 +4918E1672C65D14331F32FFC0189762EF3EE777D0BFE48D5AB94B498D097D79ABD0FCF53A1402C +A94FFCDAE7FF694A99718B8111EA52CBD0A5F228A393852B2F9A1BB5AE74C39AAF9B8260FA6255 +A2946815E5AC55075074CC2BF6E3BF30F6B9477E6F162114485F80F8F271FB3100B5A6851AA333 +8B9FD55C62632BF3ED4ECDE95D8C291AF0B4E0C04766C061295095C3F157047A0A6CBB8B83D220 +623E2F28C8D1068C751C8C0EBDB1B0C92EF2E410EBF3DF9CA11624D481BA44C5B46424EA8F5E1F +EE45A6157DB420DD1168C77218A55BE868AF011AD844592BAF82CACF37A614AA4173C2BEE42D07 +1D21C2C136171CE5E3AF793BBDFB8F4DD613DABEAA00127156A60BFA49616EB454018FD2226DBC +1C31398BE17A926E67C3A9B51E54CC1BA91579AC3F36FA1C90C0497AE6BCC1FB9AC399BA49F855 +DFA95D303DF17D7578227087FEA07E4833EAB50170E4B2E1964F3227D69921887A462AA939F118 +2AF3310257B9DCB70AA063AF79E8D70D3EB52099A4D5B17F90F4D8D465EEED09BD4EC53811491A +9AE9A2648679CD4551FB68F7A8A32AE41B5C1C4BD79E0E538BFC58F4468FFB81B5341BE9AB45EB +05148D080B74CFB0E4F290A2E9A8B165DE52999A107608596F6DB9198545B252EC068C0330E1E5 +C9A613380C9421107EFA5BC4A65688143FD0C13165E2FC77705F1890E423C00BFA8C01AEBB6CF8 +094762D8E14CB390E63673FF5CFA983DEB170021104CD0A01407C0C4E4C3CDE146D749202B3DE7 +2FA97DAE1F89C28000727A7A7735DEFACBD19BEB8B34E63F0AF0D64F7F7A3CF3D8B579A69FD70B +449E677ACB9C2059A4B800AF36B03224F0729CE60C4DAAA4312AF1144932BAA474164C09377913 +57E38ED1F81403D3D70E87AC620E404B67D176EA3FC388F0996D29E558518F321EF9E48C0B58C9 +D5EA596C020A2283AB53240B58CFB2F3A1CF9203DA24BC43D8D41AB27248A5FD3F1DF2D9C25AC2 +2BE2FDC79C3C9688AAC025E2ED0E2FDCAE9C01F5E93892E7DCEA21FC6A75C3B33B0150C3E5EA36 +A8BB9598297550155B6F7947218F41CACCD3BE58AFA2329EAFB9E21AD9A143B97218D0FC606897 +301D358A70705F155525572CDBC419518271ECC052EBA5A9BC514AAEDB63C164306A63731C21A8 +499F2290DC24D81A4E461B7452FDC0E2ABDC89A7D98EE00ADC4DF87A3767A07948308EC40C3418 +FAA51ED4BB717794472D2F0D9D4B20C8801FA37B8E595946A2331A30A2464275AE3AC8EFAD8A22 +7CAB2C93E118D5B06D8A71C290887CF7ED7AF4601B54B3F1F6E0CA5C540768B44B64E6E7E58F8E +3FC5DBFF8BDD0B4A34A35589F8A4E85A46B3C6598D93666996D984E076F97A532D5FAA6C676502 +86979E208B03E95BF39B57DCBD25F21D325A2A6830F88476F9B8245FAB4BB958C9DEA3ABADF877 +6F4E8B710E2A8A34E8EDCF51F7BDBEFDA7536EC603C6EC7787AB070E4A1E347CD2A8A71B2E51B9 +EC40844FFABBF21DDE78FFB26E77F71D67D00E54E1C2D4C93C400BCAF2F420F728870C613A3095 +66E2CD17671EB9D17328C888543D2B07BE7B3673C3CA3BE4575EFCE4C41CDAEA9DE3FC724147A7 +62B48566F9904C89F56F21416C7D06BB2C4388E8AC2EE8405FC8699CE296ECCA953AC57A563FAD +DC3CD09320AEA8141A5B8D40B7E36589E15C903FD3AA21A879216CDCDDF7A6A380C66977DB988E +571805923D17A42138474486AD92D40E1DD87155F86189675A26686CA3237B74BBFE82F501E03B +4C6926E604E58ED619EB2DF4C6489A26C4D45E56C2433BCBF66401994AB0EA8DAA93FC93ADEA8C +C03838F50C47A343DBBD8EBAC78E2FE61369D79657EFEA08521DC8F24105495E10C45C24293712 +32EF31B24C63EAACC85C59864325429BF906E90C027C0C2AA5093B92FF293BBB45F4FF8711F81E +361DA2198EEA0BC761CD8C0D9D3032D0ED03AE529072FDB7120F8C8704FDD41FE4E35FE20AB947 +F25C83AA2A2B1893A2A1C1904C94B524F03F0645526B886D116848B9032B76707F46C65678EC17 +D83965BC5564ECAB2674F38AB2A7BCD544E6BADFA39BC5DDD8E0776FA466D923FA75DE28F8187A +63CE60F1B96CB9681FEEF4C432FD75A1B7A753112D79C9521262D9199AA1151475BA5C95E8A272 +34DD27F6CB2CA3D7F36457A0E16FAACBF59807672C8A08E498182755754A6722853AC9C5EC246B +153F5879BC910AC2647B9517EC12307FFE30997DC2A96B6742F4C3E7A2978FE29A4DF5D19B8B97 +06ED7379EA6096D13B7C69BCFAC8D00101BF38FD6712F348A6D82E7E7DA0A6D551F4AAD036FFE4 +FE558161270ECA320FEE2CA914CB22470275484F10D9EB1CE7782E5336729729009804B7FA5227 +E301E841608090F109929B395894907E410F8088FE16E61D820206E5852A06E52F0487A1867719 +EE4182F57FEFAED44FF16C5D07F8050CF36232368BE568360E8E5E36B0A389812C4C38D6E06599 +B394023C5AC862F10418D45B897535242EA4B85C0B39889CCB51350244F360A7C15FE9BE8D4FEA +4DCBD99DCA136E4AC27A6232B0E4051CA30E28D7334FA443CEDEEA4D9D1E47106667C6129E40E6 +8E033D54E8B41FD0B8C7297B92C641D4F31C4E8D4884590678A90BBDA4A0550A7A6608313221C9 +E23D40886A154FC3B81882E2E2A239B4051D78FE495F336BC1B157EEDB434B31CAFBB9A14D008E +DE727F5949F4EB5FC2104DAED0D1A48113172099A72D05AE12771006FB8CFE05B2368B9B42CB21 +EF2C18F61A8C4379E8C37C5CA661E79C8DE56AB6DA4A6364150FA27A2F94E56713C674F30C0EBF +F9B725B754688D2E8EDABD5A4E0C8595BE5BFF2313BD5B53DF71282C6C2EBF49AFA6004AF2CA21 +577C3F1CC44FF3C2B4025D914D943759060B1106E062957CD43E01AFA864140B0002ABE6A325ED +10385B3AA72C49C77EA067401C7F155F282B96397B84E0E6DD4E28480F4D09C1396E51DF7ACA92 +C47732C752BB28DBF2FE284A689FA6EF092A0B8FDE8253023D0C3A2F9437B57C6082CC5C88E6DA +831A0DFC932A009FF4ED36DC187562EDCE833EB70F3E128F918DDA9089B521AB1215ED6AD8328B +3371C660AA42EA386345169CC9936C74EC5B9442F34E43E0A6648C61DBC00A6595F4F27F3E59D7 +2123B7F84D4496F80BA60C3FD3B6DB97821E11DE92918F74DCD48CABE3A5F4BB20606B7232D1B2 +3C86ABE6DF561F496F45BA03EC89A84585CBD62E0E3C1E33ECB2B2EC80BE4F65958EBCFE42BB29 +43B6E396560BADAD5DF6E3DC4CF1222AC2E339A9A861DC8B4A85449918A5BB7C3E0A449F392B42 +192DF15A0C9F0DE2843DD0BA26FD8162734FBA4DAB878F29639B95E58CA740C33B618293908388 +2530C11416F949D4D1E78D5A61549A21AA6C038FD4AA8EA1F65FD68AFBF9BCB4797512CCE43C69 +0650A8648F2E84922B34A064A44060E9010C6CB700AFDCF765F16A76677A4D60A4A4D3BF23DB87 +C411A480F2FEBDB08B45582B4F15B486225512D4A0123126B79996FB409D9A1C2CAD9C4DCC0E26 +2F20B16D218A03C053FC84A52548AA808B278355E897B0418CC7710762163A97F5291D6F4C2DA6 +220D6A4A18F7970326BEAA3B11CDC64203330B73DB774EEFDEC7C5894525328817AE98EC67D06C +E232D3213BFE16CEA3B41AA69A8F573A69EBDBE40BEC1E25A83B89378643F8CF5BAE906389A403 +B8BB2A2A073EB58E4676C55E9BCE21DA1055E61D89AFF8E5286F80C97BBEE472D1337A9FAF0900 +576407AC06AF4E2D2F78E262CD203EB3094280A5F406B261C8F481B59F8833A0D0EB6B125EB7E5 +206E2C89A35B35964E52D0B3DBDAE7008F0C299C0498DD84149AFFAA9A3377144FC90ED52C6AB6 +E2544ADC6CC58B73F3898F7D0DA5FDCC54D9E676AA747894991038A5CF2AA4F65BFBAAE4D32C82 +1A21C5B284FB37D3DE45C2C92B29C8A3C911B01915586D8C4D57C5C6A0F1BA3E9D436B523D4D00 +C0CCD3E7EEC13736EF20E744E1ABE9AEABD32931DAD3DD2BC88388105C65C211C7F853A1C90BE6 +51645E4C9793B0F95C1FFCD3BEE11994F3C05D444D8C2511A0D5468457D2F4E749A5927E59EC9F +85F69D5057956FD0B70D69DBAD0E8DBAC7EC1410262929F7C53D316333375F23E6B686DDDF2AF8 +7BBC56729714372E5D5B04E8BAD8011718211293A3402CA94AD423362745028B8BCEED09670183 +7A47BA659CB282CF51403ED3E74EBB6D51A79C6951EDF9C65828A0F360D402A8593CD484EC2AFA +E543288B28E89ACF7070679F4DD79E2C98E81D06A2EC6FA93F4DD34DDC143B56F5734AC27B3F3B +FC696BEDCEA113F035249AF11C9BB38A891384E7F4ABDFA8B7F9F9EFB9CD5C7CCE4FB2CBCD1624 +20D265BF6D62C8318043E37FCE4EB54EFDC6B0AC22C86BBC2E1C3F8A179BA736ABCA0686CCF489 +1EB7B9F6073791F7DFE3A4EBB89C17EFB81459573F62AEBCE3751D7C2FFF6F8BB1F846649F1706 +F06CB4078914BA7A03D9A2F3184960D6F7D0D15283267BAB1D3A85C6743F57B2372958BEEFDFC7 +088224A09298E43ABA58DD5F7E181B3055759734BFBCE114B8D10C104CC9AD471251A993709571 +27E120FD7CC83381C321E1B607FE7EDA1D7BCC0420E04921B3E14FD0774987A6277C5C9E94BF06 +3BF0AACF88D14438067509DC123972A3C63545D7D8A23EA7CA721A3BB7611B42439949C537369E +B5706C4DF7ABB673A5319FCD42C4EA0B876A158E476DBE914F129FF88C1FDC6FD9C81EE073DB7D +81AE7EB717CC78420C08693C0ADFF3D5A6B2580FB03FAEE2B28B68368F05DA7E6164C0356D81A1 +736118C656798D2A59B931D337B36983851B846848A1AB2F18717A1BA02B5F86559FD693CD965E +B4F334FEF23B3C7F64CB1BBE86ED595695CB11AF4F32C26046059E4DCDD149EF2E47D81147F375 +A8432FA727386BC5D5D509711A258920F163FA24A7C7B936BF6F78DFB85FF1731670885DA6E7CF +92C36B13416CB099DFA12775332013B5EC11A4B1884E458EC62BA2D313625380E875653529BD18 +046C1C6C4BFA4885484497174F0C73DBF92B1921130F4398B76B6F5495725E33E930B677D6A60E +E388F5699F5347ED8B520F6AB9B71A9F417BDA923EA6FAD6298D253BD55DD27806A53E926604F6 +5E51E217DE1A3F57DE33B9CC678CF0590590D174F6822236FBEC7234BE06F07F886B408684CC84 +AEAA429AC7240BBAFE45121F40D01938AF2C5D247CD696255FEABD9159256F51689B339A7843ED +1763FF2B357E5ED39FE9E3053A74C588181C15694F0CA77FD721CE0AF61D68B8CE913124888383 +E51F4795874CFEE6C13B30415D4AA6377BB37DB5E2654E745D483B6FAEDAC975DB56CFEDAC6264 +C935D83D0372DA2B98B84CAB5450AE2335E409EB7E210451DE1FE08FC78CAC720B6FEE56BB6DFB +5B3D83EF2092E890CEF54412FA3AF3F92AE24CF4E53F2CA48429A7EE2DDC34EACACB484CF02116 +3B303B38546D9799FFB37B0D5F9394108F518AC824FEAA68DAC5B5159DFBD469996F80F1DC41DE +5AB6ED10D3FED9A298F39483052311BC6E7CADCE546AD8E65820DE1F47AF5882E9F035ED64C3A5 +F1368E1AE38DCBD80F4AFE0DC427BDC881110A292A023D8922745EE3FEEB057048CDE275AC0E17 +1681A3FFA7264AED9BA03E3FE3DF81A463FE2AE5B362BC89920FB6A6A6FF1CEB9F24E61B3D0219 +6FF0F2837326DA8F943AAD0317F68B7B3F81457785FAC57F882CAD078CC502D2AFCF64260EF779 +461D622A117E5DA766F2FCC7033B87717628451992EA4158A16FA3C889226B2FC0540C220BB480 +FA2AE0170E69C8FE97AB89AF3A5C7A0A398F34F2FFCB20A56A1D691A303A84AE09FF399497E638 +4E8EB6FDF67D941B424C84C58B9B5FCA6484370467F6F0DDD5B407156F6A41422CEC15FF38BC87 +7264D0558AB3A84F3B92FAE804D9F15FCA39F4ADD22821E636F01C3F25C3DAAF48DBC646428CFB +A690373961CEFCBDF1E747A735716FCA30AA72F3776F279E8CD6D223FF9A3C133CE93AE7B4D901 +61F1B2589F51E33387558D96ED493599554BCD3124D9F9E4F85076636862E3FA9E9C33704C0716 +684E2315AAB19CA54CD8774EAF4542CA2AC861C186A9660BD1FF972B341B825A7CE829970EC32E +646DAE9103E1AD2F337E880D3149000B1A4C3703EBA589B9D6324AB5AEDEF54102057226F43BDC +BD4C2542596218F50F3D9B8BD86241060E55385CF40CD1BB32D3361573B645D09840CAAA9F692A +5802D4E6863B23EB526834FB9FEC4C8BECE83B1DDDAF0E78EF6CB5691A83C2F45D62CD2D7BFED1 +6B6B1844942E43E7473305BF88551F0AB7B4DAADEB544E5344D77D7FD76190FB008CDF09D762C3 +E67C3796B1906E2F16A2F6EA46E0E266520D823B36F5D30B834C75E2A58C97B26B07A912F30B48 +9C8DD9BED4A4C76A9C4CC099AE2524D1B760CA6A1047CA8CF682CE6E6D7532E132477DAFA145FA +B571DFA8D9690C87FC9F7BAD55ED0FBD266E3C3CF618D94D2F0796C1AC2E86CD06C8C671A2528C +B5331C751DF60166841FC61A2D498FCA1DB077C8AB3FEF45F3C918A062DCBB3FF10199B62FACDE +9F6D7633603B3A4DE267D013A8C6FAA0EFCDCDD7EC38A82E9EEB177CB1AFF3A22B590B9F2F00EF +B44B5AA6E1A912181DE1F5E0BB6253F63D47FE9F9E6CBC3B4E7E5AD767841B7FF40FE9433651A2 +9B70ECC43C193A34CC5271BFF7682F5431B32E10B60F8F776168EDF198734846E93308502962F1 +7895AC2A253D367C4FC280EF45CFB287DB362CA5DD712342F7BC1DBC91E3F014F6C9CBE60757A4 +BDA19A16792D98BEDEC85C5DEBF5FEF45C1ED6A9529F0C071ABBE824293650959BE5446B21A23D +76FD9575729A7248BFC08A07505D539DCDC7E946D96130EB592DC2C5B0BC669EEFE149BD07741A +C388859D10337E07E3FB75132BA943BA0495834E297FBA2AAA671E4507FAC24823234FC0CDD166 +49C5577465675958A863B64683DE16F205F3FD5C00258D590B1A4832B094632DB6EF8C2829F753 +918516633859AF29552DB3E6D1F74F5AB15BA7216F900D3A708317B971375D11D4F4F9BC831299 +2E751FD31D0DADA44B0CB303C6AF3B3A6090B55CCA087DD0F4A16B25CC2B1E249C4F08622AB6E9 +D16B938DAE0E57E441151DE90FE40A7DC4DEDB300C99E967FAD2A1808A4DE6B106F743DAD775D3 +0BEDAA3C9D18A93F5024BB89887D373771EBFE8CB04AF4BB0B17B3CE4208D401E1BAC23F36241B +4166BF66F2A7CE59A240396FE8D6F37EAF30E1482639ABAE1FA3B05A9F1A915BEBCAD0C39EA72E +7FDA4326F02649B5765ABAA6136A53E96224E5320D8FD9CDB0C354EB729FD37302078E4418AC5C +CF29DF19A686C7031AC6BB28AB99608F3D92FEEE1D795E444B819624FE3BA235C6116118A7BBE2 +D3FCA93D01096D8B39186FA74D112B2E9548D3F08909F19F34872AB08075A3586E9674627E2DE2 +80D2358F2D4A39919FD4359E3F3016293B5EC420AAD2EED0DA0621C1F4F67FEDBCB3F52D2475BC +697F9637655DE73D38D37DD7BEFA8FFB241D41009B0CF30E8F749BAB37DA0E8A21873647ADB342 +C2D34B19C195B6FCB0CE92005ACFF149DFBAB097E7FA7D456C774BA66C7F901E6B627EB3D8D2E8 +64ABED0B7B43E036491486909C67ACA1BE8E375F3CC269242FDF813720ED71114D65B5EE33E2A9 +BB4D0025D8703095458592CFAB5F1D89EB134B4C74AD59D12B04CAB6D60775D5F61E9EA9F549B8 +DFD662C1DC2E67912A7C83CD6996718274D196DE9F8DAF382C05B71EF24ED35D23B92A63A8BD06 +BEE8B178A39AE50669135E28FB18752C39007998AEE3FECA68091FF94531EE2341731C8010BEE1 +95CFBC398F2A6A8B9356BC9315C3C65AD4155F577275CB4697AB8322149F68B3F49E0D697B5E9B +14EEEA36572128D2CB97299EB9039A26971720AD09DC033C5F3E72A8CF5099F0C661F061AA73D8 +F7B7EF6A3231D71B8CA31D0F1EF511C7C43F67904F777CDC99B99EBC339064F7873A205F766DA5 +1979E93AD7987BC1046E08584D1E0BE1D6A2FEE34E8AADE64624DDC3113DE99505D10343A5D92E +D737201CA31EE3A14EC98EA89090BD0CA90694ECA4D225E29584621EE6621CA1D9E5CBC7A7510F +4EDA32274D13D9293A786E8723D3E49A5F647B98DC14C3C11141EF875CCDCBEB9812F0FF225598 +AADB836BAE5714060DCBF2CAC0C6C042F6B5389EFC01776CDF4992A78C371A657596BAAC97738F +2EB75200C47BF7653A561983C7ADF807D676E25BE355F3B76247EAB21F32A8A0F010B7454848C1 +17EFE1705F67B72E1CBEFFB821F839FC141699507607BB181C68A360366F0167F9CC39DD4D0DFF +8464C8FA4AE47894BA20D5DA5E40C604BEC10441352A3EA8890CAFFA5A64E0BC07D8645660F9D6 +F830A271719846CBB7A5850E17E3F3924C55951C31F7E6ED1CB887FB95CFDD7B99746E8F3E773A +EF8EFAF5071B8E41A7755334C2E2931AE15B7DE4E64938286BA03111CCB90AB09EC39CC12A8A45 +82B1D54BC5140FCBF51BA190A6A439C81ED22E0182A1083AFA1A03EA8A4D546D6B564E618D553E +D313DD35D5E1FFC8D7BDC15B1F4E8BE094DDA24F0E8109198ED8B0810F5D13AD2A9C97ECE518B8 +377E054CEBB3B85EF73B4C4F0FF59A1F727131B00C5E4A1E3A2215D7523E7A80F32CD80E21BF89 +F10E5E93697448D743518C0A5C5905365C3E80C2C3896D36424006CF72B613B20668792F0C3903 +AF69A59FC29BA87633BDAA063B27CC0DAF6882B0378499F627FB184A1F3DF2FAEA6DCC4333E1A8 +4D62DCC8BBA596500EBECF3C5353893BD07F7D282EC9F8050D892B00972F99DECA3923C5F77BC5 +E62BF3E9F78C268AFAC2C00F5639790F2C255A41A3C660916B2CD25D2F075D6FCCDB8ED7780206 +990039B0A2440E59065A07418EBC53D7F35F4C1FBD10ED357D3B25E1B2AB42EF8A0C1C1BC30F62 +4BA98E317A9FAF0943480765BCB5DF0192DA204EB1DECF7766F4F57D27209203525598C4EAD672 +DFA16C99E1F5E92EA7CB142A1B929E282D8D3257E898D89CE32B25E4A0649EFCBBAD87441B2612 +372C15922BD6E6E46CAC07871D3A903FC9A16F2608AD8E2BF2FDF62CEC4D133DA9F3C371425418 +0987F8CE7BF4E907A63A6624A8BC08511380234E3B9F8E9943AF99DE6E1943F7055ED5A6467D71 +97146BA48B6C6A9B6802D2EDF7F7B0C55C66E53E94338468C334C4BCFAB842E4E62CEF3A86D052 +FEBDBF6059692E5446309E6AAAD7C3AFF70864F2F6D70AD9AD75D2AAB8436A750580C3969317F9 +850D7BF6EFDD3EC9142712F8611FDE2948E3457352E299C81B20ADA11055AC1162FD3CB67F34B3 +DDDFD0FAA99B5912641FD82C2999A16AF3110D4CEDF7598A402446FF14AA065979F32B11511B7B +692325EAB481B179CA6BA09DC0B0F2C6278570C6E93592093CE5EFFAE490619D58BBA6906924D5 +F9107E2CB71FF8D826868928F08A3E43DD6CF61CAE912DACE89BED9970506489CF6966A31A360A +AAFB25EC26735DD44241FCBDECF0F8ABB89DB3410D9477D4615A13F67E082A8958F8E1D1FA730C +4E9AECC71075FFF0002D2013BC8F1ACFEA24BCDDAC5591D8740646157EBD7606F66929F89C0BDD +57ECF5AAF3E99CBADB9F5C9F70ACCAE2B7E99221F7B489DF9042B80F24C9B5675DDE6BE8098726 +98DEB1A014F0E8E917E17990162BB9B149401CD4EF82D47C53AC369CD89BB7FBC2A9283D9114E4 +1BAF3D17A717B214C60F20576A058BC603C8D2D0E1FE42F473DF6491ED0F3DA6D960DEDDF80D64 +A23908E8B03C204EDC0F9CB787B8758408188BB2F0899519B826FBCCFF69978EAA8499E38EEBC6 +CBF6475A1B8682E6562D5A1B538303C4E313BA8C63A2442D9F182743FFFEB953D40E7B71CFC867 +2954CFFB39B3DDF0AFA03687F3FE8E5BDE44F5F6E9D3DACFAB5178239DDA89FAB6ACF15D46676B +1E0F093DE8FA0F099B045AE0039C2A4AB450B6CD6D9FB9A0F0A16D31CDABCC2300A449DF463B4E +37988EF16AB0A56E64A30382741AFCCF386EB6F41D2B8E99F1A1F63C9EEA6646A48069C736EF4A +C5074FEABA3FCE00F33B1C4B2E0442175127E022EBAFEF645A40B8FE006C9FC16812FE62468B31 +BE648C96799F9E227A2E96F629EAA1FA0C26A7DC8EDFA916059CAD8DDA35BD1DFAE4AD4C6F4E92 +D4B89D862C0C4EE1C458F7E9BAFD67C731922220A20C57E7E84A92B14CA7CD0C4E6BC1467A7543 +D97A1933BE0C0263E0ADE5F9A4434C45C17576314946B4825A07417D94D061CF0B71AF2F1E1F8B +7030F0E7210A7DEE8882E64DD777A5BF247EA5708607E2200AD0EE450225CF17277A97C13F2642 +09A5F83A46501CAF0AC674596379FCA3B9B2C71DAC24106826FB99ADE52A978B10C4408C637101 +D500C9198642552A88184038042E3E7193D6AEE4B65D706287C60375C250B6547205D84938D4BF +FA8F71A2596F5EBF115D2386FB639E37286C4B0ACE6C45AC4E0A3BC02DE8DEF7E2628D6C4D4D2C +21495B16D6FACECF7783FD44E20AF622D2F3829BDA0D9326A46C13FFAFF179A740F22483D99E05 +82E81E9DDEA9741F916A13C1AC247E52705389A75805C01FD9B361EA097A7D47EAB1DFD13D9111 +86E60F0B69823C6E0402F51F66D3677F4DC68B83B8DBFCE9A9769C9EC6631AAD5484738C024D1B +DB71BBEDED98E518D3D8043B762FC1A3A17966B1A3EA1E59585D23B697D988CE36E337726FAD4F +1192EFDF2CE53D58991441CE981A640CF683D412CFF40243A0C5959A717542756E185A4689F265 +D080FB0D762EBB2DB9B37C47A87E9FCAD6A8C032D6C914636710D9CDB3B082FCA62907E93DC849 +8998BF5BEF3BEEC31EEC205F536C39B1ECD0BAE888AFB1E43CA0978A97C1A51E1E822A9BA9E7AA +27DE81A573C822C8C58D62186FAA9F326FD31AD9641DC196C3676F32171F118A8C500D564048B4 +315C4EFDE53CCCA5D19BF70E6C0B9613037E95DE267B05CEA87AA3C3C66A07B266CD5F7FD39B8F +A6B4D8E72D8F4DFD4FA52A00A1D66CDA36711090FF5E182416BD3E0BD7248426C4E7F9F02CE817 +88B7D33AB94AC6F41634DC7E622BC11C1D2249915F21CB9B80713B106943F87CC97772A9B84C63 +FB5F13771E485967D2292BEA3BD017C6C6061DD0E593863C5ED982775274C0582D715A3170CFF6 +B895EB61F999BEC8A5528BB33282F22B9675AC71A489041FDCAF51D51A19D81811025440EFB49A +50C1EC14FE04596C14A7DD8F4F9D9071EA40328D21D05E89267E710E704FCAC607D55E9E3EA88D +63C0EFAB004CE589474A3945414EA5CA9A77C6A7E1CB00BEF416931CBB42625BE1D4D892616676 +791D41E6986F98AF29DF13A42F086546DA429C9FD464AEB7FD8647276704ECEC2E3282016C931C +74DF9DFDE9218A703ED29989AEBD5F08480F63994FCB03BA872C737B33851F164B6EAA40687E76 +35C82BB6134CF945FA1D074441C150B32CC01417203FFEFAFA07D4E6581CE31CF48FF6B4AD7103 +896C5B120ECAA67CADED19B6C3E1C273954AA518B112478ACF06F57C6F631844A781CC82A18283 +ACD80EB5BAA7A08D6910EC9C212DC483C31FAE516E286F735E616E46239076D1860A52382B28F2 +893E22A5E81ABD92C1E71D7D73A6F75BBD8EC4E62975F6B13B83431B93C84CF8B04B5923D43209 +530261BF3D92221485111B8428D0D347BF494A3DFB92CDE7F4FC1EFFC6E7B0E58AC3000CE36C2B +E8194932A52702604FFF93BBE313B41DBDE474DFC3619F3A861FC8BE35B2F2F72E0E0D76D2CABE +A25CEFDBAFFC084CAD9B8C56F4817CA2291AA2E05F9D5A47CF83EC6889A9CD709095B531FC39EA +9EF7AFC813814806927D226078633A71E92455A4347B07DAE5CBF9448CD54361757ED686809868 +79B159F3D906A4469622BBA3BC63921BB45E0DBDF4E6B412C576FF8D1545C258FDE4AA76E3A588 +C506467395AA8EF1F5C4D42DA413D42E17032C4994690FF655839E65AF9352E70A0B522353D154 +D8B5F3278D8596FC07744708BBA8220190AD78AD44A4D97F42C57BE89E281EC8EAA3227DE396C2 +51D22BDC019D95AE8DD73D01463DF9A9654440314B2A8AA78EA16EE5441FF358C83934E5B22DED +527050FEBB7523148EA2CCCEDEBCE2B19608AD9A03321108EE9BB0AE167CE3E996783DD7FB22BA +6DF7620741F7ABD1B970A72A7535B3C43210D8A6F87389BB4A6BE7BA1A4481383D448303691368 +04F99FC313500F5E064F5DBFF1194894B9F120A669D67E5C321B5EBB041B9CC9B85B2FE2DCA0AA +0FA5B2B389BF1B0A60498E425D31CE00052F5D8E24F04E01880E92E29CD963C99948876D9DCDD9 +306DCA082EE3A8BFF3B1D4A8CE9302B9DA4C9BBEE9BA9941C7C19A761F5699F9F8874E86597A92 +46A156B1338435A1DF700BE1E6D365698B99EF460D558DF976E7CBF9305226FC0BD8EEF41CD8C4 +5659452C5AFD8CDC6A7681883B460E34E88A0346B5B41AF8CE56542395AE7D9EE630C1547BDE1E +EEF0464ED5D8A59F487422BF14B69CAEA9FE4B44B35E8C224A28ED01FA3F478A132F5EDC9D55F9 +D53B5891DBBD462F35C373921D6E062190C01840AF421AB8884F209D3572A3BCBBE0061E7D3CC8 +0A40259088D0A7F82A865776AE02979749394798E0A65CC74ED6B4E7EE07062060CAA5889E324C +284B40D11B22AD49144797F9E2852692199840586D98003C218D355F499A4B4F3CC4ECE85F043C +8B17448EAB12502219616E73FBC9E024E002746A4DC4A4746CCE089B5BDA14546CECC0AC036862 +1E5EE5F3333AEE176866F22F79E7C4B3C4C0F013F019A8423F0BDFB0BD069CEB21AC533304EE10 +DA6133A3909B0F2CCCB61084F14699C7BDC7FAAF7E08E5A978270D2FDBAE6B5E02B2801217605C +788C9899B9B82EFECB9CB02AB2AE5FB157D50681F1D43C159CDF46B1F05491C5E439F24A9D0BB5 +EE1C2F520AE58E4628981F03F36957130C2880C2738C84C87DCB79EB5C7C130EEF0490859BEEDD +FEA0C624BF8265229826292F3BC6FB29A27A850A6D69087568EF9506DDE2E900B1C37EDE3C8605 +7E6A0E97C178A67BECB622405A4F99D5E0F9F9B9762AD25503C2BF02E5C36AA819BC8C37141975 +F3AB1C7E4C4418E5E56D2E16BF99B856C47BA738ACAA7068D81E76A24F197C74C04D3E72CFDCEF +B6EF052EA7A436105D27D7566552311A03E29076296D4818EF7BBBDA18AC6626EA7BBF3CA28EBC +0359E0F66ED49C89AC23314D585524AD63B48DD63CEDC066416D142583A75383F0FA138D53EE8A +FB81CDEDEBC90B676373B712485726B8049EF6717599976972412A75BBDAD6A4570FD95F58A4DD +043424F7DA4AD1FAAB8B8F974B955704B634F9C3CF0F297EAB66218CC678D31DB4FCAA789DEF80 +F13BCAE4855EFD9F86251A4A6A746B157F61905C001EA4438A1F00AEEE8E161D879546EF2BAF6D +40AAEF9494E127B291E3DCD29941A52563BC402FE9EA357B853A21B4E50D5BE2BCC93912FDDBF6 +B46A2DD3AF397F0E09E39AEE129F12ACC6AC407426102766381593D73933F41C08A6D293C88374 +0A51B2102AC1A3F71BB46BEFACAC04D80532D6E36D89C716BBA853D447200FC27649E38580EC1D +A1728D07629D9676E2B7CDE31C46A31DF5F9A9CFD04EBEB1797BE6FBC58C29C8C135259BCA6B09 +BA7292B965358F6C79B75084923E0BDC1DDD214A6578DC4A4A968F3844CCE1216ED1C1966816FF +99B4B7CDACF2F3D363AFA381467328D72843D61AAABF4B752E36B334BA23FA1D834DCC959B4DFD +DE5C32DAC6D5D3DE385FE3791EDD62551101D9E219B77E2C51CCF63E219C51B330F197DBCA948B +3727CDEFE782BC7513A9A11045F0F184AF1DDF2FB654B5CFA2FD7CEE4E198137CBF8C16C902FF2 +B35FC7DDB8E769750E2920895758D853897EC2C2E79B5763B88530B4A5A4E10A20A71E7991CAD0 +26F8DFB9EA166D8B58CE596FB9E456AE276DB602716EBE339D81C15E62D2CFF2A356B97B7A6D70 +CAAE6276DBF3E41D995CC20B76450342314805FFB74639217E2316CD2FA6406DD5A88B6987EA6F +A23E620A461B075B81DE8F4F2F4AF703FB16C5166E9620A50DAEE9827F6E05C913B1B07C70B550 +A3855F63CB1F18B21B2C0B64C930FA01DF40503D486E3ADCD31FB244A2590AA19FDD395C1E52FA +833A69A0D8DB922897291EBE520006A949C6228520906590426DC9FC298D3B4909DF305C2B41CF +7BA0181A437C88BEBFCE09FB9DC21829ABF5CC5A72004F7DC1A04310E9AAFEE3844528B52C6034 +06DE4AA5FE8A70DE9347DD2D129B9D0C96B1E2B8B67006B4F6763162ADEB702739AC0A3F2F4B3D +C1181A0AF575A90DE3F4808D399D57E4BA2AD9C33AD87DEF44E1A72817B14893E7344BD33DC104 +6583526AAE6FB4B19B7A4890B3B38B06DECC81F7C8B8754924E32F09F1DF35AB1E63918D643BFF +E12EE8A4EECD816FCC648883E67B8D8C3D37869D75BC0E38CE6C213E17B624F5A82604922E4CEB +6047A7002CC260CAFE7E501E7DBCC71D08F0C0267B3391D58C00F17322E18A88648B59460101C9 +801950A6AE05F90367E1D0B2B68AA7C82997747998CF36E2BAB18F80B9225BB8303D9C68ADD86A +AFE9DDEB4E7AA39B3BC61FAF63477C355C7C04324ED3BC943EEEBA3BC2E2C0C156C2874A3663D0 +1C1F8EA826A1DDCA09566637D4B5AFCBD2FC112DF0F35E2C0D6F385AD575C1480DBEE713527655 +00ECDBADCDE426C3B33781B4FC5926576708998537EDEF5AF2AF65C0198B0957B7C0C822B033D4 +8D3B547A32FEEA3A45BDCF869287C981D3EA1BA6928944D62DD3F4C21BD2DB628C1C8707B343AA +97199ED1ACB52CCCD0822A4538E12FAB15D704812D19D04C7A0A4AA1B1B360FA6A6876A8C79CB6 +4E0EFF153C65C1F0226B5DF7100BD9D0F3CA6567BAD1ADB1E695AA440579A8B643AD4B4FC12982 +A46B1A97323B9CA57D3F9C4F4F257274EEE06669D83A6A64B1CB90DDE54EECCAAE923D234D7FBE +F89A04C755B1C92CE5E20086222413D8F4555EB4E452124F83AF92EEDFCD0FE63FABFF189DCEBD +5FD618F956E206F3970C558818136E95EFC257227553B790BDE15B2BA19A775D6F1A6909C7E877 +C50803ECBD75868D20700EA708416A947C8D4CAA9E20B1C26790063B68C4A517D805A1EDF22357 +3607C6E7EB571F13B61F294A3ADA65B6551A35163B2B09FF48204DA33C39228B90EBC2C42066D4 +3CF90E8152C9640F72314C415855B1A20C46F0CB69D91E690FC601A430F1605E710D1B6DE24B4C +BF183DAABCD4EB1F9A064B1C0EE66CF8583EDB4B929623BA1D0DAA518DDF244B33101930182E96 +620CF26D9FFD672FF7CE2E7A1E6C1FD5E263175D4383A9824006E3A24EF54BEA370BF09C4467D9 +9C7DA12786EAF43DBF0FEC582315890C8DF0BDFDFE60E50EB05D7D9CBB57E5AD8B680AACF1E600 +AC70ADAA467EB9FE4CE9FB15AB3B1733D1668D5DE1195E02810780D977F72CB8A249CB6060F756 +5B09D6D6205AD0F63566C56DAC006CD80A67FC4B522BFD5F0AB88EC6E46715B95074F7AD5EA332 +347F5F288DD1955B11674F46BB0FFBD3AEEB0B89926FFFF951D3A1F29633B3270863D3AE368974 +77BA28AD8245374F09B2F75D7930AA74118400C96AEC68A49F69F8402201BE29D5ED5009FBE347 +0D5B1F37C59383294CEC3BA4FFFCA5EEA6471E41F1CFD3B366719228263E4194CB7D91F729CEC4 +134414C18719D5F66A90707F0B8763C23C369EA27F3475F4E5BC18DF91713338EDC64E37398107 +E858D2FA86B34319F630175CC0EA0C0A69AFB950B6A44DC453725391EC4E2BE1D94EC660A728CA +3C9E9154DE885AE99B2255A8E503617C494ABED9974699A39F0AC8204C67D25B377F44A083CB75 +B36181284C75D1E43D457E1FABF44587267FEB0335D5951411A54EB0D3C95E0C8E5B99BE2023D9 +56D3AA605760175DB8BEB96AB13B5719B9DB208D676FAD5B7268AE7BBF16BD6D446B4C0049C363 +E40436A562786CB908194A7B8779B8E643C4EDD8F7B04B38D7CBDD011CB962A9E96297567A9F3A +82FAA696F6BDD100E5D74824BF84B16DD619CE7C9EC8C835EEE6DB5CD3CB8C41F39BC18E8DD7CF +94B139222930B39F9E1BA15981DE9F82D4C7797513FAC518C1D4F2EA30E803E0E3B665E21E073D +275A173CC2615DF9A69DA5CCFA720CD300486F03E34DA79856DF7716584940DD3F786BBA10B315 +3AA3D81C17CB2B5964A5259E9B739AD177532F8C1160E44666E4D0C3C3DCBB6A873B9797CF0239 +35459FFCFA6C463605A8A77C74AA9AE3E5A989FF03E7C55776696D21F11E801CB1AFD551234152 +EAC591D789E70FBD147C908ED8DA319A41F9714A7F1FC023F112CEDF88B4EEAE8794CADE8A1AAB +68D9EDF19082C4F7DA38865C3B905783BC9CAAB7E16CB1F5EFDA2F6AE513CC50544160687A6C82 +1B54E5F897DF81EA0004B763D02FDE7FC4ADA768CC7F2830C7D7BF5C446B15804E7777CAEA78FB +9F14D3B95A6EB62B4A310CE75725D1372DFE08BDFD7AA8FA58D36DB1D2C33DBD632BD5D0056135 +53E846815D995AEA6D8422ED35EE328231F57ED0A5BA065E1296FB513CC584A0205DC34C2D1ACC +580041F4806B3B7E163BF3CAF9C9102AED1DBF23017F6EE5F14A486977BF8E4801BF9BED1992D5 +4001E7D6015454F9A7D3A39424E1D16D1D0456CBE4EC4B28C019A0CF581089C068C796FEFF4768 +0C7306A4E0905D91BFE9C874786574164C09374FFF473212CD28F7549C85F742F6EDFD34A3EC96 +7311092F305CCDB9439101F9DE2341A0A341C19EB86718FC837473C31DE015530BE489A3DE1719 +6AD8D52BEC8207DC2C52AD1B6DA14E2E5E55E18E588182C49377F4F83FB1B878351B25B1B480D1 +369E69DD6F5FF1079170D185B3E9D104AD4EA0D325B03274C53AC0FF5C499CC106BDADFA07EC3A +5279475AC5F1807A2AEF64FA1C8ED95D8D865502337CE250177B18940C49310A81AFFEA7290A53 +8CE2806DB563CB130EC43166E6262F40BAC7A10C3176B0F5CF263491B90C3D9E16F1451063A0FC +28C4CF2F5B879583F4E7F28CF7BCCB3C24A12064037F04EA84F2A99D37EE787B023973EED0A62F +7791A1EC592A009512F93F5C798398AADE97B26CBA03C04C4324FCE97EB5789C3FAFB6BBB4AEEB +E241CF464AB0B78502DBCBFD29986A2BEDAC0F44AD4CDB15B1143DBC7FFEFF6C57914328176489 +5B315178BD0EAB310FE4D364D31B424ABE7F5192B89C1D1E92D27AC1E749A5D7FB1788552F5662 +08731B8A6766C0EC3B06740BF336BD314F8CD0A29E77F9368A088A99ABD60B880AFDA377E9C1D8 +CD4BE7E77010BF09396858526C49540AF6AD87112D07A83330703CCBE88869287262F1DB69F17A +E09BC16BCB22A5A7AE2F979956498E74A754B94971FF67645808FF9189E89019B8EEF8D48BE24C +98A031AA823115B638F5014FE507198CEA3CAC92D8A237BB0E49F2C02689E9E776E16F21A1139B +AB3311433B6373BF536E30A5959410D66823DE25B870E3C8568E0F95995DDA5D76D3817728D9CC +C39E53869EE7F5A0D4D662389CBCDE890600A581451DA0A37427237AAD1D77E0EA543A00B8379A +55F55AB79E5A1D44ED010C6847A3A657AF68A894E4E3AA45B88EF00A82B7ECF590BAABC2371B0D +5320001C3D1FA425F6F57B13C7EC69B64AB4B21F8C00E3D63DEC8C56713ACA560A0A349A1BF0FD +A614CDFE65E935B40F502B7D914BBDB4A77F5A4AAE5A2CFFEB26D5A58E3E50FDAA8D34811CEB61 +CF811D37C92A53CF493A7D6157CB48AA26367FAE934BB478ABE1EA432CB77F2411E7DEA7F65540 +B904CED9DB4BFA3ED733505DCF97D1971A66317E516F7F04EA905325C263EBB7BD8513B73D74B9 +220FB92616250EDE3F72169BCD8304FD8BC3A27B7C103E0045F769DB56A418AE8880AD56BC9E9C +DC833AE39C55A3C2948CA60384171CF9C207EE9BA9CE27BDFE3471C65DE1D617C6407133346AA2 +C25A88F42C08E72B12A32A2061800D825C31CD595D92FB6DB14FF28B309F1D317DBB1AFDE68221 +D98262E4A264F5A35570F40368D638BA8FAE9871F39782A6B46D8F3545186DDB8277A7C7EFB96D +5F09EA49652C129B4C54B872D8A409BDB611ABE271DF3300A7F3E8C8E161017FD0188580C954F8 +C4CC674E22FEB88CF5E0ABD19A284A0D9D91F2EC95F9A93F1D35FCA8D00BCAD8C6612E92C358DF +A868DA9C5DBFD73B01D11C38CA5F131564872BDC60F819BC5BFD15FD8E75AB533DAC3548B8266F +8D1D596DE55166BA58B3003A07182C7C0F69D4B1F298233262F2E7AF2B24A3CCFB725BDE5A5E48 +D7E9565970651803930E70E4189529CD573697A81C0B0A61ECDCF942F3339FDE20D1DDC8086202 +D1D3609AD6603E3690A79A285E1692353124196549C913077D3F8C6646975591A42AF8B5DDEE53 +78238DFB9624F44365ADDEAD9ED557CF4D8CAC26BFDDD772CEB98C5B366AFB2140959055EEE647 +90206F72E58E161E8773F8FF59582AB55B1B3E638399539F630E11780E5352ED6EE9737876FCC1 +763241305257C279854203A088F4782C30C6EAA125C8A6FC26212C535E66789980970DC0803E50 +6671FE3E96928BA55FE297368079A35A67B7FE13C8DC465C360E22A406DDF868FF4FFA3CFA6955 +0AD36656CC1CD19A1A1836FECE37B79F458DB40D42DE82D4E5ADA8BBB910EA51154948346FFFC2 +46EB10EF2660EDA4BFFFFFE6FF201D5A3CDD09528066C739255F4C23D39389E59FEC4407021D2E +0A870C6C627C32DAD68511ED8C91C05BD746BAA819D9900AD5102EFE6360858FBCD2F9A71FFFCE +AEC72FD18B5767336D08446AE9D69486C9C593CEDB8A91EB0804DD709C757DEAE3F9E6D6248AC8 +F8CC65E617965AF69FE99CCBA7189B288FCD4C1CE3DE8EEA0776D38B8A2B8F01679C2270356046 +C9310723589B7F396E9FB18C628EE7A83AE57F6D1817C1D94FD3EC6C45CD6728C82EA72E2CEED8 +2F0857A6143CCC6EAAE0B443EC7D274D7974B895948F6483C58F0F33FBD311D498E0A029012249 +8DFC0A644CDDC892B8CF603F7A6D39F7B650EF99E0C0F7D1611227BC3BC8BDCADED093902193EF +A008E6C5E52E032914165156CD97FBFA0B423447A8BF6CE288047D77F0B7A9E4932F89F6560C47 +B02738DF984BB26E0548423BAC15FD9FEF5B46CB5B396A3472CCC0D61B334B7DEB439892BF377D +BE2435787D0145F410E19640224A3DBF881521D31888AC1A4FA69A5E90852811B13596B546F159 +340A0F66E06251A095204556D8175A10A57EF634A6152B036F9EBF2F3639DFDE53C3CBB14CA209 +EA4BDA72BB143299E5EEDE1B535D45F07B24495918E7C71879E2F03467AA3D19C0D63F61A6252B +724EBD3EC0E343BB4F627B02914972D07DE8298CD128FD99A1D484BB1B5CA373F4E2491D24BAFC +320DA213FD2DA7F2B09DB190CDD2F30BDA955E44096617E5AD294DD32E35CB60CFA20615DB6337 +C23D83054F5E6F595FD907D150272AE09C66216DFB4F743E3B2E62B7D53B5E8E7667B289A00CE7 +B96B0B53244F3D124FF980C0BA68306C01FE4A8F282EF4C8D6568A53D90F3B05EB14E26BF96777 +50BF259A58735E2AABF4F003380CB8CB8EE541507C36BE19B2C46A2A2657FBD11BEB0A30BFA051 +2A6D3C9F8E26FF2C72BBD173EF0F04C8DB3DC608336C84829D5D54571A90F1B7728E0AA3108802 +C8992B6987B27FAE219EA24AF3F178DBBC7B455C9B59402B4BF3B265929C02D95B8BB3BFDFF9A0 +9639B4E1CD845B1340915489A7AA9AA19AD6822CD437E52033499D9CE1BE3A351811661CC140A8 +66E9BD299727F14813431B7DE87A015E84298EDACEB0BF034A9BFA2CDA13EEF9970FE8BD269246 +7BBA1FD66B349217DAB37501E98D330623D2E7BFFCB076ECCAA19D835074DBB07C6395F6930C5B +67077B26210227DD697D0B6F46FC88C182BEA5C5A4BFBE33D772AB706215308854A30AD2D065C7 +708A4AE333C65CE0BC2B0F22F0B60EA61197BBA3AF236D9E1FBF21DB6BEAD9AE94C3B28A3DA552 +09827CC8752A7BA6763EF1A943AAA5E60726B4015CF14D16F1352D433C5F4AE74D2D2B31204F05 +06966383AAF38A5CF0E5ECBD1B792BD1073B25A8CC4D0D2E1650AB4E931D89A2A619F860BC7244 +1DDB888F0324BB646DCCCE2D491F5FA75E598CF2651B0323187F3A8DB5A8BB4BD59367871B76F4 +ACBAB3D7153CD215540799F29EC08139EB9918AF0FF098ABF8554A9035A16442A5C202389076DC +D6E23751A85FD1B3F3AEA19E043B8A3EEB75C40C70EF918FA4102973E0E8615959F28807C3D20C +DB9E972E392745BC632B451FEA1FE04A410C8077B035AFA74F1B701FD91753B0D01BB3DE1AFE1B +E79802710DAB4DCE481870EE559F8C677D4C978D20CAF4474804F1F053812E67CACB662427B560 +458532D532C202E4942221A492EB14885148C43B62F8A0D19EF45490FF38CCAD1FA02C378EC0AC +44600B2CB28B244C787150A468BA7FA4986BC2E3A93A18531243E0B836988DD2C196AD291A305D +D91F3B4DA47CA75BD05FF0513FE10F844072E60AC651AEB7BC78DF6FC3A5E8E37584B0E45B457C +046557A3B3586442803328D2BE2C286456F34F8DFC1D1478377DA6847CF53C1ACA05AD72999E77 +C0FC0A262120BEA3FA83AC099756309B444596C26486208726CBE32558991EF39838798463BA21 +1345B85FD8FDA2A2FE834C488DDE8F8264A5E86246DB3AAB30B75B8C51A71EA729DAEF0F03FBF5 +B020AD02E09D43803126C34C11CFF1A69F2AE2DF39274ECAEC92C868989335190E6E2C245925D7 +1F45B1A4593578338BBFA6A2E2CAD3CE8AE00E97F5039B430DD9EC8A77404BC1231589F7FD32CE +3AFD2D0238085FF6FEFE450C9A2014463C41F4D3312DD98FF27A039BC894AC993961F81ED116B6 +5CA0BB449011527101A0D1168CB8CCCA699231C96ADF616582C557E4ADE73B0377F825C9AB0BB3 +C789F46535E0A3843A9955F292DC9A3E046E3990A558004478B12A2ADE2A95626FAC0F60DEA236 +0C0BB784F5073DE5185CD81565FBFF1189F47DCA5B947C59CA154C13F38260D51C47989D1C60DA +57D3ED1C8BD10A54D0D646F901D9B2E4A08D0477BB3B06E99C4CC3BEE8AD49CBFCD70FCA133F71 +0F8C2E8AD72191B672A37EC62BB27BC5905C70EEB185D4E801028764F2B3FCFA28321264950971 +37FDD160FC2F91B01A55F41CE24DCF84FFCA957D272FF4B8CCD8DAFC196816F258F12000975EEA +8284FE1C9894B140C717B9892B2F1FB1F9A63F27342363A34E280F42FC7517070062F3B45FD468 +4836E9B48C7BD721105B0D8D2FE65C759E47AF34C2D99EFA576DBC7B390597ED274AE0AFE364C7 +66B24E9C267AB0E6AF79E29D9A61A1141440FFEF47FAC973E1277122833B65CCD0C1669E8E0943 +CA94CDF9879F5B3540D9DA03B314274B338EECB14D93F6B229ED1BF061E0E662601F4BB44EC49D +58CFE25CF826B28F9885B8DC6C171F5D9F886E28BCB68291B0A00BBF8AE9A10F5B137AED55165B +CD3044786C0464EEAD2641B5B416ACE8B4D15B48E12D509D42188E3F3143E56AB28C85A3C312ED +F114B8931C57E66CCCED4CAB926F6CE5AE543CE2858C16AD0ABBEF49C66614255285549465F618 +12207C1DE430353F9C84D69D0D8AD5DD6594CF1770DBE352E41F5E12793A51CC70F386133B0EE8 +F96E4249F7DE76AE85233938BA8DFD4E8006F53FAFECF02DD407816873A76CD4EC41B175170ABD +70951C54647063553EB4E5EB14C900DBD377D2413575C50381317CA959747CE3E354768728484D +7B9AAC935EA5B17616DB1F80CC1D1DFDC1DAA780384B3475A816F4CDC3E92F307FD5373BFF893F +AF1E294259719699A387068094F8DEA44146EFEF7E079A131D9727347F351AF955CC435C07AD95 +49B8B1D75D19C5C465753BB77355FCA71406B77A6AF3204AFF93B4CD3E34E90A88DAC6D9A9A453 +37BC6AE499E07CEB31D14798FF0F55E2D8FC111B7D095554E7751BF71C3D4A7C33199C3E320246 +04B645D1D7029ABF2FC1801D4314E01D1C209A4F1ADB0FA96FE882B7416FA41AACC9EFA6879E53 +971A639D90B2AD319D259507E73A536575CE9251AAB41BF174395A5657E83FBC9D7003889561EB +AF9AC04CF2BF8E7310B7E6659812D19248CF6991DEB4C2A396AE00E725DEA00528CE08FD8D1D59 +5D1DD69D556F4584D50A80D51FCA123E8A35E13E5BD9EE977E09A692D821832B4ABDF01DA3ADEE +6AFCB27D3A7799711E3442FB8F83AC27FBD12BB7345D71F1F9712DA9DF2111FC10CFFCE8770699 +55011A4D38355B005B531AD274A09EEBFB8CD6A1F964A4DB7907B1781E52C42514D7858AD21CE9 +E6D97817432229CBC8CDDD5F0917F3FD35F9E62EDE71102A96CCEA949CDD94C1ACD847241C4FCE +BFFE7FF6028FFBC05E999F1C1C002FF395502643782D78543ADE03568B73A269266556CB545B7A +8D4177A782264B71BCC4B6B605C75B62ACFD6485D2E5D07A7FF53BF84A28FE086ADCE032D12729 +03D7C9901FF0E71C2E2411F6157A4CDDC9260E47A768CE48F099D4DB84868741913274F219DAA8 +068E82298242261D9BC0F4515298CA81FDD19215E5380EB4F46B1ADDD33BC8520361121C624BE4 +FFF8339DAE4776EA251776F6AB33AB8FDE785B6A94DBA8C960F95136308D09B4BA32D25F3A8CCB +2BE5AE8B4468A302435F4DD30EE92D165D12A463CF5BDADF434804CBF1686D4F5433D01E50F60C +DB832DB19E52CAAFC73DFD28510228646F610869C0CEC899C497B272D470F4B8B7710AD23E8059 +8BE10019858015F16FFC232CE4D5336370DF76EBBDA878CF686E3331D814EC72CDD40C5BCDEBEC +AF33C40081A4C27B1B21522F4BB7A92A674C5456EABC8D90827D747012F268C84C16E7AB4401AD +4E7F96FB64E0C83631A44723C9F35278174A56DE96322E152B3FE95658D11EF4C0BE5C0BCC1349 +0293310B10B0C8CCFA2479D50439A8B40F5CA0955A2D30E9327364080A83A1896B1A062793A557 +2DF318BEDDA17F3E662C0D4B41D8C348C1F2CCDE37392D715C4BC89BB5F9DD323E6AC6C3EAE658 +0B61EC042A91C45C6D72250CA6CB87B660389672933ED446B7D80D88E1A0BCC9D618C67B26D8A0 +12FB02C68FA7E4FC9FC91A22926C2D8F48F2371709E8151C31F5F4D40C6E75280FF9428F13D559 +DB7D37F75456E9B53B271BA496EE76A1AFF092390E5B896145C1ECFE3D39359634F9B942BE156E +9951FEC9D81A290469961303EF4ECFC1C050540A5FC778D18BFAB6FF326814CB256DD315F9C224 +8466F67E996E67DE3B772A4BD0238BC5C532F387B5F2A8546E6703B35E86D59716972B0C0883A0 +9C37410CE21704956BF6F5BFD93355B079C6405DACF179254BC08E415D0ED560CF9D7D786A4149 +DDD69FF12EFF44F4628D39830AABB8E951C9D6F2D80EA8EBE498CFA76E47BF82C76246A337346D +005EE988C82DBB8D1FD4729E2234A549666FF469D15349402B322A205E69CFB65A2C93E5C51B7D +D45F2E488DDBF1AC7BBA4484E0013A456DB8568BC8C48F8DB292055062FD73D01C47D5A48A0B6D +EAA5485F2D3717899AA9A7C861247DE19E3EF236506A76A7CF6A03335FD453DA1A319E209E71AB +A95C7727805EF257093573A1F963ECCDD8D5EB00CA24F323A74703EEA66668B38E76DC53A00542 +C61C737EBB67552C8C0D90A04D30109F562105E03A669AA93168FABCE3F6E8F15D0F94A7DF9659 +447E45F00570C63B74449D628471A70754B8A5C3DD4B7F1257CB9C02360CA1118EF42445B81A77 +8E671CF4B94BF5EC261A34A7EA7BD65B80D149F68CE50320DBC63E45BAD02BBF09C28D50A021E6 +0859FC9BFB6ABB71F874C39547291060CA4AD86BA98D6F106C945924EB226B0604E65D41C70921 +8822B9BF062BB0795E8CA290DDAA2FFE6ABE37D13995731F008F06CDF4654AE43F6D0F180E9430 +2FF7F71349F12D0E6C5D7BB8981A94930A6C1CF5799F5B3A64486A1B279E5DFEF99FB82CED12F1 +9C5B9A80CDE6D8AC2AABCAA1D2FDDC03455E69EDBCA45654321A7CEE805D3555A6870CD69DFAFE +8DC3DFFB20FD9DEF9EC095BBDF1894543A2EED30B416083E0C976F099569B95722D48ECD95258D +6FDFED1E14427F44A56F25B974FCB4D47F5749564EFEC60A783695924CD5E6569339F6E43C6696 +00A478AD5ACFEDA6E60835F19274BFE1E9085AE42DDBC2CEE9B856BBDEA49C0BBD66A400509D22 +B75C8AC63FFC5D82758FD22D9CBBFAAC44FB258BC893977E823D00F3837172AF051B69FFB4B427 +3911ADEBEA9D520F234BA4D8FC3E3C363238CD744402D096FA5078681AC3CAD245F9FFB510EC68 +13DCE93C66BF83C0AE307ABF446F4E1091745F57C941544336DD8F59749E832B5437C3AB8994B0 +82914781AF7EA09208D7F1BD45DD6D21FDBF11031AF0CAF929C39DB34BCB05144821082D1471E9 +E6526937C7F78DA1113ED907D7C0C03A6EB8D72BC0BD292EA13B0C92295FAD404DDE1212DBB454 +C3BE0EA56E5270B6E5FB81918AFA8D8574582D3464869C07188211730888ED6F5405BE928A9928 +E851A4CF29DBF352F3D257525B708FA7A1303B55A532E4C1258A5F6A0D12995802529CBD6E65AA +AA602E4220815A5AB18673FFA922789D35943DE4157F63142B3CBD2C8FC0E0CE664AAE02BE5A93 +C97CEE6FA6F8F6AB841857B3887FA143F6B9610B2F3AFD3740F3E0B442B5AC065AF833C29F01E2 +29FC382804E896DED6E0F676CD666F8787DD406DB5C69C9A2847E18BCE2FD27A138AA93379CE8C +37891058DC1C5515CA5F23380D3530050EE56F6B9732E4A0185B4D8FEDFB1E7460AA13771EF4DF +05D74602200CC84DFF2A103D3748D6198756F4749B74AA32B2F30F700D1F08E71E1645BF2C9A4F +544544E13F1439825969ACC1A6DC057348702E1CFD18DC3B697B28B042E39CB7B09C80E70707F2 +13C636A75753EBF406B599010D028940E9312B75BFEEC39C0030BD18333404479447210F91684D +BE2105B852064B685C3C6028C7178FC5CA73C17F0954C93F6B2C4B2191175D4CDDFEDF41FC4048 +0F0C8B8B369A27F550AC1D353FA11B318DEEBB01B4B8FC7AA6F06828968E1FE4F9B5B96F9D3017 +1866B8D14485287A60037526E721739C7CD0C17F6F64FD99EE76623F71C48C0A982E50CAE84DE3 +D25F5F1AABBC058FFA718AF92327E4FEBF106F744C170EAB07749FFB69633FD98E480CB281AA03 +93E6DE2159DD6B99C790167E538CD79D6155775604F644D040E43869DB91A4D00875EA13440FC3 +902AD40066380C2F83443B0499206BE189DDA2076DF315B58D6BCC0C89D42A699225676A47144B +04DF1BA596017F3A2E2EC3D513CDD2A9F184070CCE94C96F7BF6CFF00D922748BFC1C8597C7668 +F116989E7F08CA14585BF06880EF1A073FB8A77075074957BC126EE2BD330BB4C569A23009D01C +A08D0F691A6BCE9C4B5A50AE33A8D7C8948FBE555D9A0BD39BF49EA21811C515CD384361D5A0DC +611DBD505058A43122D8D9647FE84DC4DDC8BFFA1E31D3FEBA54276784D9B36CA7614B9938700F +59C39289B78213122F7B4602CB59013CB72E028C3D297E574A6B43A0C68BE116BDA1276BACC516 +73FAE3818E011213F0F87AB6DB1888140BBEC4F1119C00E4A62288F0F5E23B6058099F3F65FE3B +3E074385ECBE56E5DA88FE13C1EC3E7FDF22E775C7E1FD0CBC4B7FE931B7395A2E9350B69C484C +389628F1A7A85CF10B665734B60C4A945FC79388EA356FE1A03C9FB016DE980B8BC3B9BB8BAF80 +16FEFCBBC66690E1356BB97AFF51F98CEA4837A418557E5FC1619D069FC59A4A4C3EC08714D00A +8F1AA53F8B59C403C123A8C04EE38025DB14CB7CF964A4DB792E25A9E8FB5743817EF7F9000B3F +EADF7726EAFCB71940D2A9FDDAA02AA62D8B13EE70FCAC1358A34591AC3CCD3F163B4DA0EACE30 +0467E63CF26F6BCEA3EB934AC6775DE665AED32C8119293CBA154DAED637633C0253D4E001CC2F +699E318C5D2413FB8468B43EF418EA0C6C2314AEFD5E429F3BEDDDD122DE559D0725A44B31A749 +0F653D9A9233117B76237DE8B27E4C1886423A04F999792ACCCCA4BA4CD7BF35C785FA07D65672 +223E0C8661CE11EC0FBD391AA4B990CD353CAF98135827FBEBD98BBA4D618CC0BFE026589EAEAE +55DAF78E0597BC770A36751261192555BE810C82F6A736BA2AE6D3D8043B761826D440F795280B +03AAC4CEB41DB919A67C2AC68947B39B70D9C4918CC8512FC2F7C663190A81E33335A5A6196E95 +39A276D49FB75DD408570144DEACEC7153917E6494A56A1D8E8B3A2D06D997A9AF15575E4F50E1 +FC7A1067291BF0E9C69FBE1784AABA9874712B1E37F3EEBDE499E3FC6B3B9A9F15C620ADCB559A +8F79A17C5403411C1F72CC343B1FC1A639C5B5CA0D2D0B75DAD4B0B4834D7948A1B82D2AD1C6AF +FC0664EE1E82A6445E1BDDBE61CE2E5FA89CBA747ACB305C0458C71D1C40278FD48840C3EDBD15 +DEF854810CEA55DBD03FC20A63F7D2027A6553C053E153DB79D08A447835E252216DEFC01C2262 +32C8EA4A13A477207A37180A21E6C36DBF11DB159966F862B6BEEAAC2AABC9DA188F0D10AFCE82 +588F6457AADB7C3B4DE2FC6DB3EAF91E09FB2D1C748F0584E037F1C901F532217F2BA27C4491AA +8EF780DEF8177C2E80ACEFA425508D81737A008B6D9342130799AAFB7F5BE5A4F05EEC34F93F5A +4DF2F01EC3AB9574D32AE530A6BDD9EAE39AB88FF21FA502C434730537D38AE69F747A0413E4B0 +7B6AFCABCC807FEA7088AC8C96FB6DA878C08E2A114AE417AF245C6302B705C1B7A8FAB1CC76B3 +08A71E905602C35799828ED1185048EC2B5C01465E70A996655C6AD5B9638DB6FBDF425980BB31 +642A9B57CB1675E94804F6C3D35679E3C37A020D361D6FBDACF6963689201B8EEC706CFF2D5107 +41B4BEAA7FAF600D3608CEFFB406B06887C1A1A1D08093EC3C7510D292278ABB7193DD9988BF2F +E9A6612422B8E44656EBC88D9299F9FE5DA3AD9DBE9D75A2D49E4CF8BBE6A794039E5F69931ED3 +40081841C762AB97ED85F786692038DD1B59D89EAF49920E768E7F7F1EDD29C75DB9C1D3617E75 +B1940DB46CE53264F3992A1FB5BDEB1799F5D3A695A63BA2C6D33D594C5C365683C66FBA942B2E +FD09F3F0BCA92248D5F30FC7C7189D8B01B13D4D50CA60091F590407AFEB4EC2076B5B92F0B30F +4041F2E4100EA471A066E823695F1D2233F2A6E03F8CA102E0C155334330EECEE15147827AEA8E +C014A0C08E6CA126D9CE917861CF2111B5E03DDFAA0CAC9AE2F6B2E6AE961D4377AD47041999B9 +CD86A17ECAB5315823ECC411598F37B7E756190DCC6A1FDA59FE638C1A93907E04CF90DB5C7224 +FD8719E57D5A430C429E210FD49FBD3CEC3F24D845EBF8F5A088F68E19CF7D339887AF3C298912 +26CB77855A7F2683F257407C708BBAA4C4B9DB8745270C8980BFF767BB06561B3015B9932294D9 +5DB8A1040D7BF9E3D40A63C617DAF8EE7644D5B0D6308FB171EF3E78614648A321C5FDE3AD8184 +4BB85BBD99592562D7002347ABC2638E9338F26CCF0743087FECD56D3CA82B6849BEB2ECD7D377 +CA06361AB29CF13EB1DBDC56F86BDFEB451AD6C48915FDD35A14E7A6911837AD87CA3E38199C09 +16374140E83C9AF1A8A85C56DE956FAEC1D75541F4ED3B64C99D951180E1B8F64F1F8B7B45B159 +F8F5A0D426766C68D7B072EF6974F3ADF3A5BE90B7E9A21FEDCF47E29E7414C80C845C5D93B8B1 +D9FA86B1CA0E22558DF8EBCD439EB920BAB797536C174C458B1550F2EE8D7A784521F02517F8EC +A4F71CB240FB5F9D86E4F51F9151F403B0AC8A72C0FB6842356941FC3A2370996C9642CBBBCB08 +9BA6A5CB6FB9E2BAFA06E84F0E2E549E0EE23B21821E626077FAA50F021A23D42FBF4A7C4829E7 +26708780FE7B0613923D556F039B934712658859E8E685E74141499E09EAD6FCB62B0CE175A021 +36887CC85EDA5D3B8377AD464EEBDBDA46D0ABB1446D87AE5F0A45E3A94F1C6281647A0B899954 +410DD0DE1117BA611AA431F573CC4DA9CDA2FD3AD71C37A4FFF7B8250212797DFC54B99A8A6067 +A27D70D6FE72DF3C59247CD853E07CCDBB6A74F6B228B19F5FC764222E63D09BDDAE37245516DD +37517F13E23205C8B0D0CE1AEE7612D61D962A67559E3FD96566C1BA374D07A9A462B499734332 +5C78AFA5230AB300EB23F6A225DC7C7C7233403713774A190AEF9B6E7AAB5D8B887EB7F1F8F585 +C9B3118AA1C30F80284BCE0E730E247085FF7B1CD7E0988F36BAA813C8FCD339887407D4882AB3 +74112DE05DDFA5139EDB6AE5B583E031157980C2D52169D49775FBA8B4E1D906EA4B8E10DAB35E +203CA01FA7629BB5325218A005637EB76CD3E55D11B771FA770C337E6CEEB465A8D7F1597F6551 +B2FF65FC891033FADF0389DBC588C8DFBD1DA9AFCACCE38582B167C3E36210B9AD5551E75067BC +50AD37890806683F8028D06ED899E9B198A9EFBD321A3AC3C6D9FE41B644CD37B66412E5720D14 +47A89CFE14AF540B5DE8E900E9D66C21BD6528D636F6AE5293F1C9444883F0C15C41D79EBBDC25 +4BFAF1005645A73FFE6C2F657CAAE102E0BB5E787471E929F7F8DD97C6E59659925F0C3D741BA0 +9CE501E074E78CF9333485AEF2730507157A422D843A19CA1DE2B808D5F0A22318A1B9CC5E07C5 +5CF186372472A2C737D87499294A5C5E8EA50EEB7947C833AEF8A3CD932D4A7E4B8FD99C74604A +BCA2B4AA067CA63C1CFBAF9FCD793B00F452011DF2DECB602EDE3FFB8A06FAA52489EF4EE736F0 +B8C5FB0B6B9BC8B59E9ECEEA1D22668FBC908A89EFFDE0DF6BAC4D0A7A7F038DD8EFC85F177970 +9B4DB3949C6943F9E080853762B79D5BD391C6B066BF52547320E2C8358D0C0CEE994C89CA1CA9 +F37CD219736C2C01AD74993103C4E992FEE17503A00F025A55A882DBB711112E3A247623DC65D5 +14FF7CEC646305862AFEB7BF057B1816F9CDAD7DA4A1DAA6E26682FAFD0A7D20F88F37FF51BD77 +734B1EDE7092B809A214CC1C12EC8B8434F34E0DB6C249D3553C548E2A00D71D2C4723D9E10F76 +05E66FDD97F90C26DB0864421B57313FC2A345D31829B0B25450E2CB4ABEC4FB9D1F39A2D68BCF +BF41B93F92B39E7EC6DA3912DF9BCA1686DAD2F69EDB26B37C1205A1409187C8274A50ECB0434A +D03524EFCF0BD29131EA2B6DC7115FD69D98E4D8D9C38DB3A9A5AF5605A13E627F4EAB13B08911 +B44E2E6C678004F88DA3FE2DD09C3407220DEA3DCAC845C89049D9370DD8383EF4CD3B684AC7B0 +A61B688FA132868C52A27DCF6C885EA96B5313627164D532C3C70CADA13EC5124E940C55837008 +78D64D77AF0A13F4803E2716A1C6973130AFC4954A6800461DE890AF174C3501D575C1F3A3661C +0974B3D4CDFEC08205DBFC683D6F265DFDE654C623F30BDF9CBE83262869767D243291A7BC5747 +8929BD6231701D3C493E47C54824F073C45739A179BE64EED97B01B6161840BD9DBF4E54B2BD1A +2768FD02108989F4A41D4A727100E5B9B1CCFE3891BD70A6926AA1DE689620DE6925CF29F10657 +91FEFBACA00068DA6A1AF89E0DB4C042B97517EB6AA79BDAC43EE8FEB822F8BF616BFD7123200C +BAA27C8468BB472F93DB1A012BAF9B0A4B5F826D6E2DACB093022BBAB16FA3ECA34CF711BCE815 +CFF4C2D72F49020C34EC029DDB65E0793F9ABACE04003CC7FDAEC84340964BF7010B37F05AC17D +B406FDD7975C49FB46280D6599C47C0123FB86218D242338BC54F8566CB38FD2425F70379E0123 +C9D0A53B3BC609BA0586E7BAA48C889DB4AC331FBACC669C2E14F3419C6B0F58E75FC76C405C42 +E9562D33FAF544941B0F8CF79DC26F83A14F1D8746BFBF020D4D443D22CEC07432C921187827E1 +D52C93DE2743A75320E55169F2D619B78C0A0089CA20C6832FDF1116145FD98BF771ECCD42DB59 +BD173B046FD71DDDBF9D9AFEBBAD6116B1863427EE0D81713BEB43CD0EB9166296FDEE311EB20C +013B3F7601CE6229425FBD8B28A0972A81A8D1C0484289F5561B69C2ADDDBB70F75F770DF38996 +8FE1C7D6DB3872BE6EA35EB1C7B56D4593016541D22EC5C71A635CCCF52D6A621A9122D14C37C2 +93EA5CE08E368E8292F7C98B2500229B04A5E1C96924E802A3BC0FB5E58B8F778A6E57AA8C64C2 +759E0C8B63083DF8F46FC3761FC9F984EEA18C5A932A144E58DAA18FD55F51FAAB06E1D28F2655 +09365235B5E44F1453E3B0624C6E3709641AB1C5814FAE6642D852DA32AC7B54FE8560BF3ADD3A +B3033BA8923A0884E565D1CADC4D09C8A52CBDDD039E2C83769058DD389F86F71852F10998B4E3 +A758498F4A9B79CA6C334019901CC779B9A6B005569A0E192AE2628E16A8BCBD70276E36E175CA +A41E221A3502A046B178FAACF020A1CF03188D8764730809B2D37A45FAA742D7E591BE258B4172 +6D91960670CAE77ADADEC51A672A7F7624057603FFEF82622FBFBD4E0EF4661151429E37A64B5F +4CE3C03D593AD9F504597EB6F0528F36399B33F30CC3B2F96F3733A8013041EB3A6AAF4B0A45FE +F733D1FC07D44693D6AF26F4E3A902C8F20A7AFA23A9726F334C4E6120855EB049172A34E4BD0C +93C3003AA814CF57C912C53C6254E3B37F494C99AFAEF3ED92ED9D1A3826C812C315F5D1C78641 +1EA2CD5ED850E596EC26CD63CF6AD87D0A43B9F44E0A297180416C2B551D6DB874E7E11E0D23AF +306F045C7F67B6F54AA8A588084EC5FC95BEC9E4591231BE11A52E398B863C32B7256475C6EBCB +5F2313D750C7742E3E838C62DE54311278BBCCCD5116DD957EB97D34D6452700C1847581DC82AF +67E3288DAE3B6F16E9DC35799C1C85F9A568DCFB9839960C8D28F11261375C4A19B4DF0B2DE321 +AEF39EEFE81A28147876D457931A141E1E6FB18DE81582DE371EB7304AC7BFCD7E116E7277DC4B +041A8E304CD6AFC986E037D112DEE3B26D0B353D8011FA8B0E9B048CB382D6C4C7BB82AC2E0EC2 +FB6C4D904FB9E6D3A9FB83F88605DAB42E02C7982B894B945787E8C61E3A256F42D36B2632DFB7 +CD62BB7EFD676D42A155F0FB6475B51008729CCF23957B468946D4286272C7510DB2D0645EE78B +AF3F051730DDB1F7D56092BEC76E82B76D201A470D3946BE6AD863533526D66DAE5914DEC93438 +77BFDB7C2F01D9886354059CB8EFE4270058D3A06146B213C36D1B342D457DB8673BFFAC4315BC +CEE9ABCC370920E95F8637B83480D8C978C093CE085EA1B4E01CE104C94AC744BC0E69671AB889 +CDE75E6CD976FD2D0FA70C306B6D36C4511E70AEA5B6655512372FD55C016432A3CD9417D97D0A +4C228BE55911C32419A0FE5F16EC9A6071AAAE1D851F74AE0710056014BF9630039F6637EEF891 +99BF3CF081C955795B4467EAE95019BAC7EF36FA79D9F97F3D33DF2251F44B99D13DCB7D832378 +24E4BE48A308529C6BC428B12CF69A6127EFC21121444DCC37F9A7A3F2730F02D8D3FE9581CA2B +88BE913CF948A95152A64566A881389A059E5BEE75841870787C4720DC6FAD43F12F853EEC7A65 +FE5ED736DF222CE1E386B806BEA91AF7F7F72EEC0EFDF895471D76057854AA61255D6E2EA52813 +62153D6F589FA2FBD0376DF21968B0FA750B30D65EDCA7FC2D85702361C4CAF1CD043E48485C45 +1534C56AA12BCDE172F23F6738D165A320CDF987B827BC566FB90EDD853C6D7C567C095AA5DA9D +379415125D7C67919EF3B8D982A1469169016064F637708A327E68EF2C5AF23BFE04C1AB598DF0 +85BC3CB55A0646850932FA352A9E8AE66017D9837AF4129339680A1E55C160E4A049F31FCC2A25 +76C7EB46248B94CE3519BAC922CF46F1E1E9A7B8A75F47AAE73EBF0A994CF247A0D08E65AB321A +059CB4EE443F720EE5BB46A1271305FF9884F5EC3E63DFE059B32849E88FB974A4A091DBB853D9 +B39DBC19E523D69925A419E891E8AEA1476B14BCC1BA4AE031263CB83BEEF7C7060362BC08D82A +6415FD9958CF428D4C43961DBEBAD1FB7D77663700DC73B80F6692E862A5FA8E5B31C028B6C7C8 +A7C11B3B1B0A79787ADABD6D1E37306118CA3505DC3C07372641E721DA4C5460A82CC6CA846FA5 +49CE1054C7C096FCE1AE70765DDDA2679F035226A0321F422FF944689BB614169B7E41FA56AB25 +E1CBD33DD1612E53D4484F49526800E2FF17233E262E3BCEE284CF7451B81F07037C7B9D724EB6 +40D32F49D2CF36A63E8F41D967BE05EE2B1A96B0C1CA58ACC971CBA30074970DEEBC91B0D66ACF +6DF605332DD97B1BE3CB54B7A8EECB390FBE859084BCD1A458ACEB0042C778FED53D5EAB466A28 +10EAB53A25E40F97B0550FEB048F83E8CA232DCE97FE280E98F43867A62D7F9EB5DA265435C783 +2BDB173271FA2AE0A3863D03AE13F0CF54B7DF774767F87D1BAA65CEE822C038A6F91AB256CB68 +23B9C505D77EE082844FD8C7072CA789737FE8D6F4D6621CED1DEC6C9756F1195DCCF09244FB8E +87BE0077EA745DA363F398328CD3B22EC1EAE10BD08E5FCEEED39B7E0B86305628FAC28A050C75 +A6F17864E16BE855C2E4A1998B83AB94AE09FA37B69FE6673F4D1D241ED9ABE53FFA2175777364 +7B5F07FF8CE2BC3121EA092FCE04072647C5645C1937B7EFE57CC1D6C2652F8EE4F5F7788A7243 +AC033876ECAFD7C5DB01D09F00830661A8F01C0FFB7CEDF7C23E620A78733A50028CAD88D33DF1 +58CE6A1F833C2AE7E57C875CF29304DD96DADBFE1DC590FE866C066EA6EF0C78F7FBE8229200E4 +8A0E6FD4AC0A81623255CCE187ADB8AEEA7C1D791EC5901ACF30074FBF6C97AECB19BCE7CD96A2 +58C901D1FFC4A79446EF7BE7A9080AEEFB054372C30F3555D3654D5CC2DE0BFA214B00A5764B9D +69B0F02B420647C0C61CAED3755896D4A9E872CD95D0FE6DF1D3799626E818B802435C6AF74308 +5F0AC41AE3618C4D345C509E9E689C8934EDA9F76A17F8F056ADD5367884E14AA984C28FEF4F5D +4D9776E0133A4A550F7964F43E2C9E8AF8B54C9F81FC7818A6C80B2C3319690A5CD785D00320C5 +8FC00E762F2A1D8102F8EB7A3EA692928900CEBF2764907E75CCA0F1500C546D931B9ECC96A53E +CA6FA69EBAEF1F09EC6F4FD6C16B34243F5639C9F9DA5C4E2851D7A21E76FCB35F5D2E8EBA7CA7 +AB688C96F27D782C335BBB3DCF7CF8EEB322FE5692CF2EBC2E363F12ACCF9F7A513BBBB024FF94 +788BAF7086ECEFFDAEA528D8168D8BD43E428D4BD7A0E5F9414C116BD6E42D257882EB8634CBC6 +D11B5AEA305DD6C628387C6E489B9A871CED2085903463470A10E8B85433BB7865B7B9B955ED04 +60691CCF814A0BA81F6C20C2B19877E4F37C406744BA5FEAD343EDC4B42BC0040B8FDEA21BDCF3 +047030A1E62365FBEBB3E0C419DB4DB280BEC3CBBDE80DAE0088D1AA03DD1A8A3313FC744EBEEF +1E993482AADE395EB6024A67BC90A4DD121D8D2A82BC9B50B817843CBBC79A2810FDE2A148BDDC +183C9B8391CD0FD80817E39F299028420A09939D41C1351C2562E20A45BF8392ADB750A1AA3245 +24D61999129D827D4C28BDCBF3A9DF6207BF8C33337B19F886B9326AB723071652AAC0CCD5FD1F +2D47062848BC1AEF1032B35F8F20AF5739BE6B0F7A612559A36CA3814F4807CF62B65FD6DCF1F0 +26F31D2523B523DA3A55270EDA57C727C69EC945911028F9F6E56234B3A400FDF92C80C1D42211 +F661DEC84271C010E2450B08500534530BB6CFBECDC8FEA688C2CCEFB0FCD77744CF4E0719FBC5 +CED407B114EB2F51E266F5BB9766F831ADEBDC8485C4B519ED77A1BC98BB56BBE0E5940D3BD1D2 +46ECAFD652DE1BA803D2798645CEBA92D6E6E123852D27BBD75F9946CC17E2DB56008231D07BEE +887EF18AC9F99EEFCF1B2BFAE8F99987B61451AD50DDD548DED93CE69161A2E67435E9BA5EDB8C +2EEA6088D4F71FACE28CA3B27628C3EAA0C59A1049EF61DDCF048F587F725082F557953FE0B804 +8B7B38A196A66A975557F6F5749B52474DB4AC594AEF8181876EB84277E2699F637DB5AA2F5B46 +20CC1037D83881D63D7E8DD3430C307E4646466F94E529BCB54EE9A7F8A795DD789683615CB182 +623D16D1F80257B9FC1759C798CD3917648F992A34BC685B3F6798D398E762E0E0F3F86B6933B0 +D7AF1ADC561B621BA00828F89E21335B079738ACCAB8D88AE5C406AE9CB920708F41110E6D7ED4 +315330E6FDFCBFEBB541CE32E5F93C5FF1396BDF250232E9893CEB5F87F5E4165A9FE1AD8D71C0 +7C23B65B875A7331F59340874222B9F3085B25E4F00F11154AAAC24562B2BFA901B960426A4E6C +E481ED163C9AB39E6426C4CCE2B20E8C72B1C108C405977D45C460115FF4EC599C9BBE75F8BF4F +0D186A2FE9309D9F50768E829531C40BB63297C382B19DBCE41D5E5E91F4B58D98990291D9CFF1 +EFCCC6F8B1F8CEDC8076825B673121609812A297D6B9564B4048C8A899631D351A438621003BF8 +AEA0B738AE619E99C0531D175EBCAE621B836CD9C593358E03CBA68498B05BA0B56F233F59DC52 +0699C21985E63F5A4A3F77CB74A2AE1946AC5C78DAC2AB7728EAC7B5CF10A97755059B1EAD6640 +91C8ED90AB4EE76F827F1AE1EF1DD9A50396C1832FDC24754A976878A49F6E87AE9B2195F82BDD +DB8D035BC0343CA13815B3A4A6DFE42D6F59C07E017F8CF207711397897435E3C5B914AC719210 +FA8D12A2909E11FFF50A2C47299916A49D4E180F5BCA51F0F3EA76E549A04A1A117279FDA57CA0 +6A069A4578525471537268F263E8A150D14C266383B94E61972B189525D99A9BA9D65E4F0EED37 +88C2DA2B5D476FE2A70EACB7CAA301BABCCEBD031B12A8AF178D371232AD0A47DB8972E7722BDF +BA44356EB7C5D7B6EAB76305BE2267F4F8F7F3579F8CEFB2919FCB14FE218197B6C2997BEF23DF +8FBB588F2DCF0F2D3AE1F057FC2049FD732C238981F5FBD1B057B49A4C0092BC958780EE01BEE2 +A4F42B0486935409EAB9E8E1C0E8D7D46D834A09E191FEDBA815094F745B87F2BAAEAB278B0FD7 +C68A95363FAA80A24BD3CD02979B6C0A168A7C056370020D4E70721FD0309D6405D1E61FB307B1 +5C54FF8139EAE59C2A1BA1D893A7D26609296369763BA51577B5C9A7497A7DAE54E939C289E4D0 +C925B456EA7A08DE43D89BA5AD3E5E629637AAA91BDE15D982A3FF9971C6EDCC8568B3A262DB7A +B3BD950E4C9A372D2995B7EF38DF40246F2EF7366A8DD25074BB52FAD66589E892DC53B0F76D94 +E54381D0D5ACE114E8B1114E1233419C688B207F2982633960DF741AC2D97B9CBE1C492F2F7A70 +EA70968F75DC7C49F3F17864ACD90177CA8E0E1F02BA7EEDA27271F2ADBCD7F8C980CAC6ABA671 +8E3BAC6016FB2BDB2D44A81A0967386BF9E6212797B0F2F9A9B2B4A2015DE47D4722289E5632FC +3BDCE60F5F1AF5D1033BAFA4366FA938B1DC63A799190319CF16236EEAA454585C3D22DA9E28CA +C0174C9C878075F29692C9865C54726316A0016E148F37210E1C90BFDE8FF6A6AE696529B3039A +1BA3C28179C198035CE42A1F794B290814BC98EE2F46A39750DDD65C873F25D173ACDEE1A5BC53 +1564EA76995DCF122E4E1D05F6E84524A2FE136E6BE115F8E3E80AAEC073A150DDFA6394B0FE5B +0398FC08F49C2B271960182F63ECCC2F71C973A0768F5D1464D86CFA932B9FEBAEA87EF97E0FCD +6EFE7E4BBED09C2184902176FB7D2EA1A885250D338EA4C8FE4DF827A402CB4D511B730E98C644 +D3009A2A6AA30604DCC012F9B3833AC40FB72040EBB22FF3CCF65697158F50248F2ED01F749570 +6684DCA7556FABF359CCC3A73FEB39E2AABBE9E337C1B338EA33CF54BF25B8B9788F418CFB064E +0667948946027A755ABFBA7A72EE83D34533F95A72F34A724181C6E52C1944D11F6DD2B2AB4E1E +3C9BB1C94A0782DDB2B63BDA717DDAE42618B99E24AAD06B5463DFDC8C055F39820911D2BF2605 +3CC93F110ED75B5F48DA4599454C03461C95F48A1915EE53689C05AE84A7B1D3938FF5B3AC5F5A +34A1BA2725FA5BDBA7B6C272FBA86731207502C8BBECCEF03B6CD4E50FE6FDEFFC87E74F48816A +566A1222BE1F47491DBD73E4DECB5791BA834D4D1C99C497985959A1847B817751C4ABAF98D96A +6F995AE37DB073655CBFBB9DC91497CCA1434BCDEBD5F83CB160E74963BA96F0E795FF727061C4 +D0CA9FFA9B373762EC0FE39E1CD41C6D2434537D159EEE9ECFDD6F3564F31452035D2303D7938A +AF260E8442D58EF5BFDA2DA2FEA1D89582C1E13903CE2002BBCBE0F79D623A3498A7333B1F9A9F +383795981679F5DC5F1B782F20F3464D00107970B2B05FED2A02BA813C66BCFC67385B79EF4358 +AAA05039F1765780177E1CF51A5B4CE720D491C16D929495015AACABC3F898068EC8EE33895AF7 +2AA3EB7203BCAAAE9ACB00390BF9AA87B113C230FB9B1442FA0C2102DBDEB3B95B712F05407B9B +7012A0602009A6A69474181B552E8398D8B9093E588427C2A4EE8F601332A89DE59724C07DD39A +C83B5FA441256A517117801E56FE217B47764C79B4250A8ABF00B60B6B68A7919A4BCDAF8C9A6B +590F6A7F93C361D74606B0C96A6242A515E859032AF658E3817943FCAC6981FE1D7C865D5CC57E +000A3F1E9535E0C45105ED0B0BD4700C29E9C89441C931785925B711E1FD4E8ECCBB3F7A3AD63F +68C41C1BCE45557139D329C076E167DDD4FFAAE81D4664353D03C20759354232D85EA6869854EA +2D9E8AA9300D3DF0039A0A0AB73D018476B5F9BA8B5CCA9A20270FC1CEA623630FBA1ACFB66BB6 +BBE9A218855F07DCA2479EB8876354533186C7FEC2D63B3974D3FB8C3F5064BC8A0EAD9B8F1698 +85F93B1BEB0181242D76A94956BBC5314E57515C3ACFFAE5CFA1C1584715C4290A850847C06995 +18B2CA576B128EBD9BE61196EB0A2CCC51477707D1D073CCAD6851501EA673966FE65E2342C54C +05C81CD80FFDF78FDCC77A0C0E8C5FABA906C1FDD4D08DE0184BCEC1BF9E6F7AAB80862A4E5EF6 +509ECFCD45D48A74EA2886D244A361256E8B8112DDDD5432C68936FD7FC2D5A62722BB50183470 +11DC2FE65B2C7E28005347EE495FE071E59DF2326E9C4B91D324BE9185D3511212B2A2E47CFA7B +D1A4CD5CB3CB986488FC985E7624737A00F18C547852AC26658210C94C2F84761BA0230AB0F484 +18D591E115C6016EC39B97F8B12899FD7A4C1C6B155EF17EF46AEC8FC6F5D10353EBAD43D87C44 +A085A86F9DBA13F0BEB46C85DA96D08C1D9BC65E2E5443631AE92FDDD68E3E24A2F2249E36460D +F1CCBB2CF80A5D1545D8AC3D71D9B11098EA4DC944B4D1F83E43DD9C3804B101220A74692FF7E2 +281D509FA230567FD325D0D2717150C52C557506D61DDDD33430230E74F6E9ADC722B24A7471AA +9ABE1942AFB075E2AF7A1EBABF205EE7C89EFA9807BA76E28F12406B0B2B8E3404768EF607131D +E759494BFA1B2F935415299734E0C68EAF737D44F207163E16AF0CEE304CB57E5AFE3E5DA24DA2 +4513A3BE9F1A7E489AAFFBA73F46E0475705AFB8C0762FB011FF6AA4CF201BDC4F519BE49E18EF +C5406269E9850A8D70BE682451B541094FB99C7DC23693A2761826BE7531E4FF4F853FB38EE944 +94E51A45991E256F0E9B841945351EC27AA28F33717EE276D3F1ACCDA6584A89C11F9FA0878B98 +96ED230C9440E6DE15F6F16D3DFFF568CF1DFDCD629A0259C174C5B366A13C545AFBF7EBAB3499 +6F7F0EED236BDFB8B20CCA618BB717E63658DC3805C259AF55E1A515AAC1E6D1A25AF80925D54E +3AB059F1634D966AC7A184B22D03CB000F766C60C579684CA613D8B6DCEBD3202C11D117797435 +D88FA620A0CA34E7C1242E2AF58EE6B102C15D6D19EEFD837E360AAD094BA6C646FB18FA15C2A2 +3755DF7B1A5E78460E3625BC0496B864405BC5EB57690ED18A7402F5A5EBA9FE39AD3B89000652 +90DFDE4604A8837DB0E8C15CED65679FCBAE5E36AD6361CB1BAD709F4CC7EB620D4F36FBB41CB9 +CF1A58E92D31E48419D4C3E265E465AC1D1A72CA49FEFB007BE89FC577BE36EA07CC77DD456A4B +9A1B534347A9FCEB1E342B3BDAA514289DBC68C504A3F0BA2F2CBDB2FEA9BEE064FD28B616594C +B9544AE541ED7C3BD384D5AF90E04F3054D3525A1650A14A61F9458A5B57645310C6BF0E4228C4 +8368E50433AD91AB68C5420BC0D280BC01DE983DE039B205B82349BB16F96F6AE3563335B0BA23 +ECE046C4C8B74545AED35F6686A53AD04CCADF82D6158907BD7849D308E8211FCAE32A0D7C6530 +833520005842093FDEE243B68BED8ED474CA329F4456D46E3EA01E4E8D350C710CFA5211B7DDE4 +1119BF82249E7BC7CF2B34A7AB2CAD5919DB030F08DCB38203537B864E208AB2AF0E7C71D6241D +D52068080641FF8F0ABF3C7870D3ED073C858E9037868D4CFC078E65E2781146550320B5760C6D +C267F0FCBDA013AC5D3E53104D29FC7BE967F94756337BA8326A4236CF1BF6ABEFE33ACFCCDB6E +FB14F847D0966FA25C3712ACB68FB1D43323198D2114FB4699814307311A06EE32E6BA0874D891 +C33471BEB116209013F89F843F47B3EB599F0D3C4E9FE3AB5164C6E9A91D219E0BE9E651A01A1F +373FC8650A81A3303756D63CE841C7577DF7915FDF112897393B3CD3C3607DA7C6DCCEF2352595 +E532F8FF9E6636F90AC733CFA66FB911768C0CCEC0FA71E7E13E6291D5DF3CBD60E13B9979BC1A +AD37FD2F1927B9755212E6ACF5DF241F231D8C46F656F85F563DACEFF22B117535332CA805099F +1EDAE0D808021C9F401B44A5AD7B60A447E229D8BB7B0808C152F2008D6762C95E5461399DE9D8 +CE542B5F9B706D0D3A57F2FC0E8C0773414A9E68434D1FDDF5B6FFBEB267F68D9D9161774094FE +01239404823F2CCBA524C1C01716D2FBBA0084127ACF78EE9DFBAA0ED8F78BE95C86C125940CC4 +4B212C731159B19C0B408E99D4C548AA46B2AE843FE48E468198F8D95756960612B4202102F3E4 +D52B3820494459555FA4023263706F11B42893695D07F0EB8E127DFD37A97E91D5DC7FB0196446 +E01D601FBB5B8760E4AB2C29748812902D70DD542768348BA72474CB11002B3F8409B8EE61E994 +40F953E188265FD44098477F84C792A1370D6E69886F2B1519FD44C3D8A5864BDA156A7ECDA773 +07A0E02FDD14EEC81E3B47290710078FFC0327CD05EF83322B2895F5EFD50316AB6DD8E4728C41 +6E53A4D1FBFF227B6AA74AF674D610ABE75232164D67A28888CD1761F1495EA4E952D7C6E9DFF7 +F34BB44BF18EA414A777D0287FDE8D87AF5961964C3983B34CDA085C809460FE1AC18BA1EF66F7 +6BFE1DED0C4D2F5BB503464F6AE24C3EB1D8A0FFBAD22E62CD09A44C42F5AC9F65639A617A4BE5 +A7ED95ED939485671FADE5118C8C62B27903D13C872899813B511C16246D0EB28FD225992E4C45 +1FBACB81875A8BC56CC80F6CFFF53BCF0E13B5613D8E67183029B7297FED40D4A0094F69B05FF2 +2021C2E27B7581B9C02D849D58D53F6BE9B1393C0089EC07CB15624FAA4B85ED8221E559351E51 +78AB83CAC67F38C972A8A1763993356BE358E73378AAAE22FB2345EB68C09D61B7CA2A7217F396 +C25F8D1230E81CE01269DCE2FE7006BB68F50375A53A38FF7F387F19120260AD9E8E39A797AC33 +E85D7BD2F960A3E8606F7C7AC756279BC3B0DDDC2575D29800AF220D0928DCFEC6FD9A287A5E8E +3CAD8D3FE4ED4904100163695F2C32B3BC9C3074E2AC1E28EFC899EF49D1424199663BEB347F6E +E1 + +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark + Index: xc/fonts/scaled/Type1/lcdxsr.afm diff -u /dev/null xc/fonts/scaled/Type1/lcdxsr.afm:1.1 --- /dev/null Wed Mar 8 16:39:17 2000 +++ xc/fonts/scaled/Type1/lcdxsr.afm Wed Mar 8 16:39:17 2000 @@ -0,0 +1,497 @@ +StartFontMetrics 2.0 +Comment Copyright (c) 2000 Bigelow & Holmes Inc. and Y&Y, Inc. +Comment Patents pending. All Rights Reserved. +Comment Lucidux is a trademark of Bigelow & Holmes Inc. +Comment CreationDate: 2000 Mar 04 11:21:33 +Comment For other Bigelow & Holmes fonts see http://www.YandY.com +Version 000.200 +Notice Copyright (C) 2000 Bigelow & Holmes Inc. and Y&Y, Inc. All rights reserved. +FullName Lucidux Sans +FamilyName LuciduxSans +Weight Normal +ItalicAngle 0 +IsFixedPitch false +UnderlinePosition -100 +UnderlineThickness 50 +FontName LuciduxSans +FontBBox -76 -211 972 993 +Comment UniqueID 5096729 +CapHeight 723 +XHeight 530 +Ascender 771 +Descender -193 +EncodingScheme AdobeStandardEncoding +StartCharMetrics 337 +C 32 ; WX 278 ; N space ; B 0 0 0 0 ; +C 33 ; WX 278 ; N exclam ; B 91 0 187 723 ; +C 34 ; WX 355 ; N quotedbl ; B 45 530 310 771 ; +C 35 ; WX 556 ; N numbersign ; B 12 0 544 723 ; +C 36 ; WX 556 ; N dollar ; B 50 -60 460 783 ; +C 37 ; WX 889 ; N percent ; B 54 -18 835 741 ; +C 38 ; WX 667 ; N ampersand ; B 27 -18 631 741 ; +C 40 ; WX 333 ; N parenleft ; B 64 -145 293 771 ; +C 41 ; WX 333 ; N parenright ; B 40 -145 269 771 ; +C 42 ; WX 389 ; N asterisk ; B 19 367 370 723 ; +C 43 ; WX 584 ; N plus ; B 51 48 533 530 ; +C 44 ; WX 278 ; N comma ; B 79 -157 199 120 ; +C 45 ; WX 333 ; N hyphen ; B 43 253 290 325 ; +C 46 ; WX 278 ; N period ; B 79 0 199 120 ; +C 47 ; WX 278 ; N slash ; B -29 -145 307 723 ; +C 48 ; WX 556 ; N zero ; B 39 -18 517 741 ; +C 49 ; WX 556 ; N one ; B 112 0 498 741 ; +C 50 ; WX 556 ; N two ; B 50 0 460 741 ; +C 51 ; WX 556 ; N three ; B 75 -18 472 741 ; +C 52 ; WX 556 ; N four ; B 15 0 523 723 ; +C 53 ; WX 556 ; N five ; B 79 -18 472 723 ; +C 54 ; WX 556 ; N six ; B 41 -18 501 741 ; +C 55 ; WX 556 ; N seven ; B 66 0 530 723 ; +C 56 ; WX 556 ; N eight ; B 48 -18 532 741 ; +C 57 ; WX 556 ; N nine ; B 41 -18 501 741 ; +C 58 ; WX 278 ; N colon ; B 91 0 187 530 ; +C 59 ; WX 278 ; N semicolon ; B 91 -157 187 530 ; +C 60 ; WX 584 ; N less ; B 51 48 533 530 ; +C 61 ; WX 584 ; N equal ; B 51 163 533 416 ; +C 62 ; WX 584 ; N greater ; B 51 48 533 530 ; +C 63 ; WX 556 ; N question ; B 67 0 495 741 ; +C 64 ; WX 1015 ; N at ; B 123 -18 901 741 ; +C 65 ; WX 667 ; N A ; B 9 0 655 723 ; +C 66 ; WX 667 ; N B ; B 81 0 601 723 ; +C 67 ; WX 722 ; N C ; B 57 -18 660 741 ; +C 68 ; WX 722 ; N D ; B 81 0 677 723 ; +C 69 ; WX 667 ; N E ; B 93 0 639 723 ; +C 70 ; WX 611 ; N F ; B 93 0 584 723 ; +C 71 ; WX 778 ; N G ; B 45 -18 686 741 ; +C 72 ; WX 722 ; N H ; B 81 0 641 723 ; +C 73 ; WX 278 ; N I ; B 88 0 190 723 ; +C 74 ; WX 500 ; N J ; B 24 -145 410 723 ; +C 75 ; WX 667 ; N K ; B 93 0 643 723 ; +C 76 ; WX 556 ; N L ; B 81 0 537 723 ; +C 77 ; WX 833 ; N M ; B 81 0 752 723 ; +C 78 ; WX 722 ; N N ; B 81 0 641 723 ; +C 79 ; WX 778 ; N O ; B 45 -18 733 741 ; +C 80 ; WX 667 ; N P ; B 81 0 644 723 ; +C 81 ; WX 778 ; N Q ; B 45 -145 800 741 ; +C 82 ; WX 722 ; N R ; B 81 0 700 723 ; +C 83 ; WX 667 ; N S ; B 59 -18 607 741 ; +C 84 ; WX 611 ; N T ; B 10 0 601 723 ; +C 85 ; WX 722 ; N U ; B 81 -18 641 723 ; +C 86 ; WX 667 ; N V ; B 17 0 661 723 ; +C 87 ; WX 944 ; N W ; B 12 0 932 723 ; +C 88 ; WX 667 ; N X ; B 13 0 653 723 ; +C 89 ; WX 667 ; N Y ; B 15 0 653 723 ; +C 90 ; WX 611 ; N Z ; B 50 0 561 723 ; +C 91 ; WX 278 ; N bracketleft ; B 73 -145 266 771 ; +C 92 ; WX 278 ; N backslash ; B -29 -145 307 723 ; +C 93 ; WX 278 ; N bracketright ; B 13 -145 205 771 ; +C 94 ; WX 469 ; N asciicircum ; B 18 289 451 723 ; +C 95 ; WX 556 ; N underscore ; B 48 -72 508 0 ; +C 97 ; WX 556 ; N a ; B 46 -12 536 542 ; +C 98 ; WX 556 ; N b ; B 75 -12 514 771 ; +C 99 ; WX 500 ; N c ; B 42 -12 452 542 ; +C 100 ; WX 556 ; N d ; B 42 -12 481 771 ; +C 101 ; WX 556 ; N e ; B 42 -12 498 542 ; +C 102 ; WX 278 ; N f ; B 15 0 307 783 ; +C 103 ; WX 556 ; N g ; B 42 -205 484 542 ; +C 104 ; WX 556 ; N h ; B 75 0 487 771 ; +C 105 ; WX 222 ; N i ; B 63 0 159 723 ; +C 106 ; WX 222 ; N j ; B -76 -205 162 723 ; +C 107 ; WX 500 ; N k ; B 75 0 491 771 ; +C 108 ; WX 222 ; N l ; B 63 0 159 771 ; +C 109 ; WX 833 ; N m ; B 75 0 764 542 ; +C 110 ; WX 556 ; N n ; B 75 0 487 542 ; +C 111 ; WX 556 ; N o ; B 42 -12 514 542 ; +C 112 ; WX 556 ; N p ; B 75 -193 514 542 ; +C 113 ; WX 556 ; N q ; B 42 -193 481 542 ; +C 114 ; WX 333 ; N r ; B 75 0 326 542 ; +C 115 ; WX 500 ; N s ; B 57 -12 443 542 ; +C 116 ; WX 278 ; N t ; B 14 -12 273 636 ; +C 117 ; WX 556 ; N u ; B 69 -12 481 530 ; +C 118 ; WX 500 ; N v ; B 9 0 494 530 ; +C 119 ; WX 722 ; N w ; B 6 0 715 530 ; +C 120 ; WX 500 ; N x ; B 14 0 485 530 ; +C 121 ; WX 500 ; N y ; B 9 -193 494 530 ; +C 122 ; WX 500 ; N z ; B 36 0 464 530 ; +C 123 ; WX 334 ; N braceleft ; B 12 -145 277 771 ; +C 124 ; WX 260 ; N bar ; B 94 -145 166 771 ; +C 125 ; WX 334 ; N braceright ; B 57 -145 322 771 ; +C 126 ; WX 584 ; N asciitilde ; B 51 201 533 377 ; +C 161 ; WX 333 ; N exclamdown ; B 118 -193 215 530 ; +C 162 ; WX 556 ; N cent ; B 84 0 495 723 ; +C 163 ; WX 556 ; N sterling ; B 59 0 472 741 ; +C 165 ; WX 556 ; N yen ; B 12 0 526 723 ; +C 167 ; WX 556 ; N section ; B 63 -163 493 741 ; +C 168 ; WX 556 ; N currency ; B 60 143 497 580 ; +C 169 ; WX 191 ; N quotesingle ; B 35 506 156 771 ; +C 171 ; WX 556 ; N guillemotleft ; B 56 48 490 482 ; +C 180 ; WX 278 ; N periodcentered ; B 79 240 199 360 ; +C 182 ; WX 537 ; N paragraph ; B 43 -145 441 723 ; +C 187 ; WX 556 ; N guillemotright ; B 66 48 500 482 ; +C 191 ; WX 611 ; N questiondown ; B 90 -211 518 530 ; +C 193 ; WX 333 ; N grave ; B 52 626 281 783 ; +C 194 ; WX 333 ; N acute ; B 63 626 292 783 ; +C 195 ; WX 333 ; N circumflex ; B -4 626 337 783 ; +C 196 ; WX 333 ; N tilde ; B 4 626 329 741 ; +C 197 ; WX 333 ; N macron ; B 10 627 323 699 ; +C 198 ; WX 333 ; N breve ; B 4 626 329 783 ; +C 199 ; WX 333 ; N dotaccent ; B 118 626 215 723 ; +C 200 ; WX 333 ; N dieresis ; B 28 626 305 711 ; +C 202 ; WX 333 ; N ring ; B 56 626 277 848 ; +C 203 ; WX 333 ; N cedilla ; B 84 -211 253 0 ; +C 205 ; WX 333 ; N hungarumlaut ; B -25 626 358 783 ; +C 206 ; WX 333 ; N ogonek ; B 83 -181 250 0 ; +C 207 ; WX 333 ; N caron ; B -4 626 337 783 ; +C 225 ; WX 1000 ; N AE ; B 9 0 972 723 ; +C 227 ; WX 370 ; N ordfeminine ; B 42 402 348 741 ; +C 232 ; WX 556 ; N Lslash ; B 8 0 537 723 ; +C 233 ; WX 778 ; N Oslash ; B 45 -18 733 741 ; +C 234 ; WX 1000 ; N OE ; B 45 -18 972 741 ; +C 235 ; WX 365 ; N ordmasculine ; B 36 402 329 741 ; +C 241 ; WX 889 ; N ae ; B 46 -12 831 542 ; +C 245 ; WX 222 ; N dotlessi ; B 63 0 159 530 ; +C 248 ; WX 222 ; N lslash ; B -3 0 225 771 ; +C 249 ; WX 611 ; N oslash ; B 70 -12 541 542 ; +C 250 ; WX 944 ; N oe ; B 42 -12 885 542 ; +C 251 ; WX 611 ; N germandbls ; B 63 -12 569 783 ; +C -1 ; WX 667 ; N Aacute ; B 9 0 655 940 ; +C -1 ; WX 667 ; N Abreve ; B 9 0 655 940 ; +C -1 ; WX 667 ; N Acircumflex ; B 9 0 655 940 ; +C -1 ; WX 667 ; N Adieresis ; B 9 0 655 868 ; +C -1 ; WX 667 ; N Agrave ; B 9 0 655 940 ; +C -1 ; WX 667 ; N Amacron ; B 9 0 655 856 ; +C -1 ; WX 667 ; N Aogonek ; B 9 -181 655 723 ; +C -1 ; WX 667 ; N Aring ; B 9 0 655 945 ; +C -1 ; WX 667 ; N Atilde ; B 9 0 655 898 ; +C -1 ; WX 722 ; N Cacute ; B 57 -18 660 940 ; +C -1 ; WX 722 ; N Ccaron ; B 57 -18 660 940 ; +C -1 ; WX 722 ; N Ccedilla ; B 57 -211 660 741 ; +C -1 ; WX 722 ; N Ccircumflex ; B 57 -18 660 940 ; +C -1 ; WX 722 ; N Cdotaccent ; B 57 -18 660 880 ; +C -1 ; WX 722 ; N Dcaron ; B 81 0 677 940 ; +C -1 ; WX 722 ; N Dcroat ; B 2 0 677 723 ; +C -1 ; WX 667 ; N Eacute ; B 93 0 639 940 ; +C -1 ; WX 667 ; N Ebreve ; B 93 0 639 940 ; +C -1 ; WX 667 ; N Ecaron ; B 93 0 639 940 ; +C -1 ; WX 667 ; N Ecircumflex ; B 93 0 639 940 ; +C -1 ; WX 667 ; N Edieresis ; B 93 0 639 868 ; +C -1 ; WX 667 ; N Edotaccent ; B 93 0 639 880 ; +C -1 ; WX 667 ; N Egrave ; B 93 0 639 940 ; +C -1 ; WX 667 ; N Emacron ; B 93 0 639 856 ; +C -1 ; WX 722 ; N Eng ; B 81 -205 641 723 ; +C -1 ; WX 667 ; N Eogonek ; B 93 -181 639 723 ; +C -1 ; WX 722 ; N Eth ; B 2 0 677 723 ; +C -1 ; WX 556 ; N Euro ; B 0 -18 527 740 ; +C -1 ; WX 778 ; N Gbreve ; B 45 -18 686 940 ; +C -1 ; WX 778 ; N Gcircumflex ; B 45 -18 686 940 ; +C -1 ; WX 778 ; N Gcommaaccent ; B 45 -211 686 741 ; +C -1 ; WX 778 ; N Gdotaccent ; B 45 -18 686 880 ; +C -1 ; WX 722 ; N Hbar ; B 8 0 714 723 ; +C -1 ; WX 722 ; N Hcircumflex ; B 81 0 641 940 ; +C -1 ; WX 735 ; N IJ ; B 88 -145 645 723 ; +C -1 ; WX 278 ; N Iacute ; B 78 0 307 940 ; +C -1 ; WX 278 ; N Ibreve ; B -24 0 301 940 ; +C -1 ; WX 278 ; N Icircumflex ; B -32 0 309 940 ; +C -1 ; WX 278 ; N Idieresis ; B 0 0 277 868 ; +C -1 ; WX 278 ; N Idotaccent ; B 88 0 190 880 ; +C -1 ; WX 278 ; N Igrave ; B -18 0 211 940 ; +C -1 ; WX 278 ; N Imacron ; B -18 0 295 856 ; +C -1 ; WX 278 ; N Iogonek ; B 59 -181 226 723 ; +C -1 ; WX 278 ; N Itilde ; B -24 0 301 898 ; +C -1 ; WX 500 ; N Jcircumflex ; B 24 -145 517 940 ; +C -1 ; WX 667 ; N Kcommaaccent ; B 93 -211 643 723 ; +C -1 ; WX 556 ; N Lacute ; B 81 0 537 940 ; +C -1 ; WX 556 ; N Lcaron ; B 81 0 537 723 ; +C -1 ; WX 556 ; N Lcommaaccent ; B 81 -211 537 723 ; +C -1 ; WX 556 ; N Ldot ; B 81 0 537 723 ; +C -1 ; WX 722 ; N Nacute ; B 81 0 641 940 ; +C -1 ; WX 722 ; N Ncaron ; B 81 0 641 940 ; +C -1 ; WX 722 ; N Ncommaaccent ; B 81 -211 641 723 ; +C -1 ; WX 722 ; N Ntilde ; B 81 0 641 898 ; +C -1 ; WX 778 ; N Oacute ; B 45 -18 733 940 ; +C -1 ; WX 778 ; N Obreve ; B 45 -18 733 940 ; +C -1 ; WX 778 ; N Ocircumflex ; B 45 -18 733 940 ; +C -1 ; WX 778 ; N Odieresis ; B 45 -18 733 868 ; +C -1 ; WX 778 ; N Ograve ; B 45 -18 733 940 ; +C -1 ; WX 778 ; N Ohungarumlaut ; B 45 -18 733 940 ; +C -1 ; WX 778 ; N Omacron ; B 45 -18 733 856 ; +C -1 ; WX 778 ; N Otilde ; B 45 -18 733 898 ; +C -1 ; WX 722 ; N Racute ; B 81 0 700 940 ; +C -1 ; WX 722 ; N Rcaron ; B 81 0 700 940 ; +C -1 ; WX 722 ; N Rcommaaccent ; B 81 -211 700 723 ; +C -1 ; WX 667 ; N Sacute ; B 59 -18 607 940 ; +C -1 ; WX 667 ; N Scaron ; B 59 -18 607 940 ; +C -1 ; WX 667 ; N Scedilla ; B 59 -191 607 741 ; +C -1 ; WX 667 ; N Scircumflex ; B 59 -18 607 940 ; +C -1 ; WX 667 ; N Scommaaccent ; B 59 -211 607 741 ; +C -1 ; WX 611 ; N Tbar ; B 10 0 601 723 ; +C -1 ; WX 611 ; N Tcaron ; B 10 0 601 940 ; +C -1 ; WX 611 ; N Tcedilla ; B 10 -191 601 723 ; +C -1 ; WX 611 ; N Tcommaaccent ; B 10 -211 601 723 ; +C -1 ; WX 667 ; N Thorn ; B 81 0 644 723 ; +C -1 ; WX 722 ; N Uacute ; B 81 -18 641 940 ; +C -1 ; WX 722 ; N Ubreve ; B 81 -18 641 940 ; +C -1 ; WX 722 ; N Ucircumflex ; B 81 -18 641 940 ; +C -1 ; WX 722 ; N Udieresis ; B 81 -18 641 868 ; +C -1 ; WX 722 ; N Ugrave ; B 81 -18 641 940 ; +C -1 ; WX 722 ; N Uhungarumlaut ; B 81 -18 641 940 ; +C -1 ; WX 722 ; N Umacron ; B 81 -18 641 856 ; +C -1 ; WX 722 ; N Uogonek ; B 81 -181 641 723 ; +C -1 ; WX 722 ; N Uring ; B 81 -18 641 993 ; +C -1 ; WX 722 ; N Utilde ; B 81 -18 641 898 ; +C -1 ; WX 944 ; N Wcircumflex ; B 12 0 932 940 ; +C -1 ; WX 667 ; N Yacute ; B 15 0 653 940 ; +C -1 ; WX 667 ; N Ycircumflex ; B 15 0 653 940 ; +C -1 ; WX 667 ; N Ydieresis ; B 15 0 653 868 ; +C -1 ; WX 611 ; N Zacute ; B 50 0 561 940 ; +C -1 ; WX 611 ; N Zcaron ; B 50 0 561 940 ; +C -1 ; WX 611 ; N Zdotaccent ; B 50 0 561 880 ; +C -1 ; WX 556 ; N aacute ; B 46 -12 536 783 ; +C -1 ; WX 556 ; N abreve ; B 46 -12 536 783 ; +C -1 ; WX 556 ; N acircumflex ; B 46 -12 536 783 ; +C -1 ; WX 556 ; N adieresis ; B 46 -12 536 711 ; +C -1 ; WX 333 ; N afii57929 ; B 118 549 215 771 ; +C -1 ; WX 556 ; N agrave ; B 46 -12 536 783 ; +C -1 ; WX 556 ; N amacron ; B 46 -12 536 699 ; +C -1 ; WX 556 ; N aogonek ; B 46 -181 536 542 ; +C -1 ; WX 333 ; N apostrophe ; B 118 549 215 771 ; +C -1 ; WX 556 ; N aring ; B 46 -12 536 848 ; +C -1 ; WX 556 ; N atilde ; B 46 -12 536 741 ; +C -1 ; WX 260 ; N brokenbar ; B 94 -145 166 771 ; +C -1 ; WX 500 ; N cacute ; B 42 -12 453 783 ; +C -1 ; WX 500 ; N ccaron ; B 42 -12 467 783 ; +C -1 ; WX 500 ; N ccedilla ; B 42 -211 452 542 ; +C -1 ; WX 500 ; N ccircumflex ; B 42 -12 467 783 ; +C -1 ; WX 500 ; N cdotaccent ; B 42 -12 452 723 ; +C -1 ; WX 333 ; N commaaccent ; B 86 -211 253 -54 ; +C -1 ; WX 737 ; N copyright ; B 7 0 730 723 ; +C -1 ; WX 615 ; N dcaron ; B 42 -12 615 771 ; +C -1 ; WX 556 ; N dcroat ; B 42 -12 553 771 ; +C -1 ; WX 400 ; N degree ; B 55 452 345 741 ; +C -1 ; WX 584 ; N divide ; B 51 0 533 578 ; +C -1 ; WX 222 ; N dotlessj ; B -76 -205 162 530 ; +C -1 ; WX 556 ; N eacute ; B 42 -12 498 783 ; +C -1 ; WX 556 ; N ebreve ; B 42 -12 498 783 ; +C -1 ; WX 556 ; N ecaron ; B 42 -12 498 783 ; +C -1 ; WX 556 ; N ecircumflex ; B 42 -12 498 783 ; +C -1 ; WX 556 ; N edieresis ; B 42 -12 498 711 ; +C -1 ; WX 556 ; N edotaccent ; B 42 -12 498 723 ; +C -1 ; WX 556 ; N egrave ; B 42 -12 498 783 ; +C -1 ; WX 556 ; N emacron ; B 42 -12 498 699 ; +C -1 ; WX 556 ; N eng ; B 75 -205 487 542 ; +C -1 ; WX 556 ; N eogonek ; B 42 -181 498 542 ; +C -1 ; WX 602 ; N eth ; B 42 -12 560 818 ; +C -1 ; WX 556 ; N gbreve ; B 42 -205 484 783 ; +C -1 ; WX 556 ; N gcircumflex ; B 42 -205 484 783 ; +C -1 ; WX 556 ; N gcommaaccent ; B 42 -205 484 848 ; +C -1 ; WX 556 ; N gdotaccent ; B 42 -205 484 723 ; +C -1 ; WX 556 ; N hbar ; B 3 0 487 771 ; +C -1 ; WX 556 ; N hcircumflex ; B 75 0 487 976 ; +C -1 ; WX 222 ; N iacute ; B 50 0 279 783 ; +C -1 ; WX 222 ; N ibreve ; B -52 0 273 783 ; +C -1 ; WX 222 ; N icircumflex ; B -60 0 281 783 ; +C -1 ; WX 222 ; N idieresis ; B -28 0 249 711 ; +C -1 ; WX 222 ; N igrave ; B -46 0 183 783 ; +C -1 ; WX 444 ; N ij ; B 63 -205 384 723 ; +C -1 ; WX 222 ; N imacron ; B -46 0 267 699 ; +C -1 ; WX 222 ; N iogonek ; B 30 -181 197 723 ; +C -1 ; WX 222 ; N itilde ; B -52 0 273 741 ; +C -1 ; WX 222 ; N jcircumflex ; B -76 -205 276 783 ; +C -1 ; WX 500 ; N kcommaaccent ; B 75 -211 491 771 ; +C -1 ; WX 500 ; N kgreenlandic ; B 75 0 491 530 ; +C -1 ; WX 222 ; N lacute ; B 39 0 268 976 ; +C -1 ; WX 292 ; N lcaron ; B 63 0 298 771 ; +C -1 ; WX 222 ; N lcommaaccent ; B 39 -211 206 771 ; +C -1 ; WX 334 ; N ldot ; B 63 0 328 771 ; +C -1 ; WX 584 ; N logicalnot ; B 42 145 524 434 ; +C -1 ; WX 222 ; N longs ; B 4 0 250 783 ; +C -1 ; WX 556 ; N mu ; B 69 -193 481 530 ; +C -1 ; WX 584 ; N multiply ; B 58 55 526 523 ; +C -1 ; WX 556 ; N nacute ; B 75 0 487 783 ; +C -1 ; WX 604 ; N napostrophe ; B 0 0 535 771 ; +C -1 ; WX 278 ; N nbspace ; B 0 0 0 0 ; +C -1 ; WX 556 ; N ncaron ; B 75 0 487 783 ; +C -1 ; WX 556 ; N ncommaaccent ; B 75 -211 487 542 ; +C -1 ; WX 556 ; N ntilde ; B 75 0 487 741 ; +C -1 ; WX 556 ; N oacute ; B 42 -12 514 783 ; +C -1 ; WX 556 ; N obreve ; B 42 -12 514 783 ; +C -1 ; WX 556 ; N ocircumflex ; B 42 -12 514 783 ; +C -1 ; WX 556 ; N odieresis ; B 42 -12 514 711 ; +C -1 ; WX 556 ; N ograve ; B 42 -12 514 783 ; +C -1 ; WX 556 ; N ohungarumlaut ; B 42 -12 548 783 ; +C -1 ; WX 556 ; N omacron ; B 42 -12 514 699 ; +C -1 ; WX 834 ; N onehalf ; B 57 -18 774 741 ; +C -1 ; WX 834 ; N onequarter ; B 57 -18 774 741 ; +C -1 ; WX 333 ; N onesuperior ; B 60 289 229 734 ; +C -1 ; WX 556 ; N otilde ; B 42 -12 514 741 ; +C -1 ; WX 584 ; N plusminus ; B 51 0 533 578 ; +C -1 ; WX 333 ; N racute ; B 75 0 353 783 ; +C -1 ; WX 333 ; N rcaron ; B 2 0 343 783 ; +C -1 ; WX 333 ; N rcommaaccent ; B 75 -211 326 542 ; +C -1 ; WX 737 ; N registered ; B 7 0 730 723 ; +C -1 ; WX 500 ; N sacute ; B 57 -12 443 783 ; +C -1 ; WX 500 ; N scaron ; B 57 -12 443 783 ; +C -1 ; WX 500 ; N scedilla ; B 57 -191 443 542 ; +C -1 ; WX 500 ; N scircumflex ; B 57 -12 443 783 ; +C -1 ; WX 500 ; N scommaaccent ; B 57 -211 443 542 ; +C -1 ; WX 333 ; N sfthyphen ; B 43 253 290 325 ; +C -1 ; WX 278 ; N tbar ; B 14 -12 273 636 ; +C -1 ; WX 375 ; N tcaron ; B 14 -12 352 824 ; +C -1 ; WX 278 ; N tcedilla ; B 14 -191 273 636 ; +C -1 ; WX 278 ; N tcommaaccent ; B 14 -211 273 636 ; +C -1 ; WX 556 ; N thorn ; B 75 -193 514 771 ; +C -1 ; WX 834 ; N threequarters ; B 54 -18 780 741 ; +C -1 ; WX 333 ; N threesuperior ; B 36 278 304 734 ; +C -1 ; WX 333 ; N twosuperior ; B 36 289 312 734 ; +C -1 ; WX 556 ; N uacute ; B 69 -12 481 783 ; +C -1 ; WX 556 ; N ubreve ; B 69 -12 481 783 ; +C -1 ; WX 556 ; N ucircumflex ; B 69 -12 481 783 ; +C -1 ; WX 556 ; N udieresis ; B 69 -12 481 711 ; +C -1 ; WX 556 ; N ugrave ; B 69 -12 481 783 ; +C -1 ; WX 556 ; N uhungarumlaut ; B 69 -12 525 783 ; +C -1 ; WX 556 ; N umacron ; B 69 -12 481 699 ; +C -1 ; WX 556 ; N uni20AC ; B 0 -18 527 740 ; +C -1 ; WX 556 ; N uogonek ; B 69 -181 481 530 ; +C -1 ; WX 556 ; N uring ; B 69 -12 481 848 ; +C -1 ; WX 556 ; N utilde ; B 69 -12 481 741 ; +C -1 ; WX 722 ; N wcircumflex ; B 6 0 715 783 ; +C -1 ; WX 500 ; N yacute ; B 9 -193 494 783 ; +C -1 ; WX 500 ; N ycircumflex ; B 9 -193 494 783 ; +C -1 ; WX 500 ; N ydieresis ; B 9 -193 494 711 ; +C -1 ; WX 500 ; N zacute ; B 36 0 464 783 ; +C -1 ; WX 500 ; N zcaron ; B 36 0 464 783 ; +C -1 ; WX 500 ; N zdotaccent ; B 36 0 464 723 ; +EndCharMetrics +StartComposites 132 +CC Aacute 2 ; PCC A 0 0 ; PCC acute 210 157 ; +CC Abreve 2 ; PCC A 0 0 ; PCC breve 169 157 ; +CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 168 157 ; +CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 168 157 ; +CC Agrave 2 ; PCC A 0 0 ; PCC grave 126 157 ; +CC Amacron 2 ; PCC A 0 0 ; PCC macron 169 157 ; +CC Atilde 2 ; PCC A 0 0 ; PCC tilde 168 157 ; +CC Cacute 2 ; PCC C 0 0 ; PCC acute 281 157 ; +CC Ccaron 2 ; PCC C 0 0 ; PCC caron 250 157 ; +CC Ccircumflex 2 ; PCC C 0 0 ; PCC circumflex 250 157 ; +CC Cdotaccent 2 ; PCC C 0 0 ; PCC dotaccent 250 157 ; +CC Dcaron 2 ; PCC D 0 0 ; PCC caron 167 157 ; +CC Eacute 2 ; PCC E 0 0 ; PCC acute 240 157 ; +CC Ebreve 2 ; PCC E 0 0 ; PCC breve 193 157 ; +CC Ecaron 2 ; PCC E 0 0 ; PCC caron 191 157 ; +CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 199 157 ; +CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 192 157 ; +CC Edotaccent 2 ; PCC E 0 0 ; PCC dotaccent 192 157 ; +CC Egrave 2 ; PCC E 0 0 ; PCC grave 156 157 ; +CC Emacron 2 ; PCC E 0 0 ; PCC macron 186 157 ; +CC Gbreve 2 ; PCC G 0 0 ; PCC breve 256 157 ; +CC Gcircumflex 2 ; PCC G 0 0 ; PCC circumflex 256 157 ; +CC Gdotaccent 2 ; PCC G 0 0 ; PCC dotaccent 257 157 ; +CC Hcircumflex 2 ; PCC H 0 0 ; PCC circumflex 194 157 ; +CC Iacute 2 ; PCC I 0 0 ; PCC acute 15 157 ; +CC Ibreve 2 ; PCC I 0 0 ; PCC breve -28 157 ; +CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex -28 157 ; +CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis -28 157 ; +CC Idotaccent 2 ; PCC I 0 0 ; PCC dotaccent -27 157 ; +CC Igrave 2 ; PCC I 0 0 ; PCC grave -70 157 ; +CC Imacron 2 ; PCC I 0 0 ; PCC macron -28 157 ; +CC Itilde 2 ; PCC I 0 0 ; PCC tilde -28 157 ; +CC Jcircumflex 2 ; PCC J 0 0 ; PCC circumflex 180 157 ; +CC Lacute 2 ; PCC L 0 0 ; PCC acute 24 157 ; +CC Ldot 2 ; PCC L 0 0 ; PCC dotaccent 245 -313 ; +CC Nacute 2 ; PCC N 0 0 ; PCC acute 226 157 ; +CC Ncaron 2 ; PCC N 0 0 ; PCC caron 195 157 ; +CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 207 157 ; +CC Oacute 2 ; PCC O 0 0 ; PCC acute 265 157 ; +CC Obreve 2 ; PCC O 0 0 ; PCC breve 222 157 ; +CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 222 157 ; +CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 222 157 ; +CC Ograve 2 ; PCC O 0 0 ; PCC grave 180 157 ; +CC Ohungarumlaut 2 ; PCC O 0 0 ; PCC hungarumlaut 301 157 ; +CC Omacron 2 ; PCC O 0 0 ; PCC macron 222 157 ; +CC Otilde 2 ; PCC O 0 0 ; PCC tilde 222 157 ; +CC Racute 2 ; PCC R 0 0 ; PCC acute 192 157 ; +CC Rcaron 2 ; PCC R 0 0 ; PCC caron 143 157 ; +CC Sacute 2 ; PCC S 0 0 ; PCC acute 193 157 ; +CC Scaron 2 ; PCC S 0 0 ; PCC caron 162 157 ; +CC Scircumflex 2 ; PCC S 0 0 ; PCC circumflex 161 157 ; +CC Tcaron 2 ; PCC T 0 0 ; PCC caron 139 157 ; +CC Uacute 2 ; PCC U 0 0 ; PCC acute 243 157 ; +CC Ubreve 2 ; PCC U 0 0 ; PCC breve 201 157 ; +CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 201 157 ; +CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 201 157 ; +CC Ugrave 2 ; PCC U 0 0 ; PCC grave 159 157 ; +CC Uhungarumlaut 2 ; PCC U 0 0 ; PCC hungarumlaut 269 157 ; +CC Umacron 2 ; PCC U 0 0 ; PCC macron 201 157 ; +CC Uring 2 ; PCC U 0 0 ; PCC ring 201 145 ; +CC Utilde 2 ; PCC U 0 0 ; PCC tilde 201 157 ; +CC Wcircumflex 2 ; PCC W 0 0 ; PCC circumflex 311 157 ; +CC Yacute 2 ; PCC Y 0 0 ; PCC acute 213 157 ; +CC Ycircumflex 2 ; PCC Y 0 0 ; PCC circumflex 178 157 ; +CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 178 157 ; +CC Zacute 2 ; PCC Z 0 0 ; PCC acute 170 157 ; +CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 145 157 ; +CC Zdotaccent 2 ; PCC Z 0 0 ; PCC dotaccent 145 157 ; +CC aacute 2 ; PCC a 0 0 ; PCC acute 158 0 ; +CC abreve 2 ; PCC a 0 0 ; PCC breve 121 0 ; +CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 116 0 ; +CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 107 0 ; +CC agrave 2 ; PCC a 0 0 ; PCC grave 74 0 ; +CC amacron 2 ; PCC a 0 0 ; PCC macron 106 0 ; +CC aring 2 ; PCC a 0 0 ; PCC ring 116 0 ; +CC atilde 2 ; PCC a 0 0 ; PCC tilde 101 0 ; +CC cacute 2 ; PCC c 0 0 ; PCC acute 161 0 ; +CC ccaron 2 ; PCC c 0 0 ; PCC caron 130 0 ; +CC ccircumflex 2 ; PCC c 0 0 ; PCC circumflex 130 0 ; +CC cdotaccent 2 ; PCC c 0 0 ; PCC dotaccent 130 0 ; +CC eacute 2 ; PCC e 0 0 ; PCC acute 154 0 ; +CC ebreve 2 ; PCC e 0 0 ; PCC breve 111 0 ; +CC ecaron 2 ; PCC e 0 0 ; PCC caron 112 0 ; +CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 117 0 ; +CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 118 0 ; +CC edotaccent 2 ; PCC e 0 0 ; PCC dotaccent 112 0 ; +CC egrave 2 ; PCC e 0 0 ; PCC grave 69 0 ; +CC emacron 2 ; PCC e 0 0 ; PCC macron 111 0 ; +CC gbreve 2 ; PCC g 0 0 ; PCC breve 126 0 ; +CC gcircumflex 2 ; PCC g 0 0 ; PCC circumflex 125 0 ; +CC gdotaccent 2 ; PCC g 0 0 ; PCC dotaccent 120 0 ; +CC hcircumflex 2 ; PCC h 0 0 ; PCC circumflex 115 193 ; +CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -13 0 ; +CC ibreve 2 ; PCC dotlessi 0 0 ; PCC breve -56 0 ; +CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -56 0 ; +CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -56 0 ; +CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -98 0 ; +CC imacron 2 ; PCC dotlessi 0 0 ; PCC macron -56 0 ; +CC itilde 2 ; PCC dotlessi 0 0 ; PCC tilde -56 0 ; +CC lacute 2 ; PCC l 0 0 ; PCC acute -24 193 ; +CC nacute 2 ; PCC n 0 0 ; PCC acute 139 0 ; +CC ncaron 2 ; PCC n 0 0 ; PCC caron 119 0 ; +CC ntilde 2 ; PCC n 0 0 ; PCC tilde 107 0 ; +CC oacute 2 ; PCC o 0 0 ; PCC acute 154 0 ; +CC obreve 2 ; PCC o 0 0 ; PCC breve 111 0 ; +CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 111 0 ; +CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 111 0 ; +CC ograve 2 ; PCC o 0 0 ; PCC grave 69 0 ; +CC ohungarumlaut 2 ; PCC o 0 0 ; PCC hungarumlaut 190 0 ; +CC omacron 2 ; PCC o 0 0 ; PCC macron 111 0 ; +CC otilde 2 ; PCC o 0 0 ; PCC tilde 111 0 ; +CC racute 2 ; PCC r 0 0 ; PCC acute 61 0 ; +CC rcaron 2 ; PCC r 0 0 ; PCC caron 6 0 ; +CC sacute 2 ; PCC s 0 0 ; PCC acute 133 0 ; +CC scaron 2 ; PCC s 0 0 ; PCC caron 102 0 ; +CC scircumflex 2 ; PCC s 0 0 ; PCC circumflex 101 0 ; +CC uacute 2 ; PCC u 0 0 ; PCC acute 151 0 ; +CC ubreve 2 ; PCC u 0 0 ; PCC breve 108 0 ; +CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 108 0 ; +CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 108 0 ; +CC ugrave 2 ; PCC u 0 0 ; PCC grave 72 0 ; +CC uhungarumlaut 2 ; PCC u 0 0 ; PCC hungarumlaut 167 0 ; +CC umacron 2 ; PCC u 0 0 ; PCC macron 108 0 ; +CC uring 2 ; PCC u 0 0 ; PCC ring 108 0 ; +CC utilde 2 ; PCC u 0 0 ; PCC tilde 108 0 ; +CC wcircumflex 2 ; PCC w 0 0 ; PCC circumflex 198 0 ; +CC yacute 2 ; PCC y 0 0 ; PCC acute 127 0 ; +CC ycircumflex 2 ; PCC y 0 0 ; PCC circumflex 91 0 ; +CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 91 0 ; +CC zacute 2 ; PCC z 0 0 ; PCC acute 115 0 ; +CC zcaron 2 ; PCC z 0 0 ; PCC caron 85 0 ; +CC zdotaccent 2 ; PCC z 0 0 ; PCC dotaccent 82 0 ; +EndComposites +EndFontMetrics Index: xc/fonts/scaled/Type1/lcdxsr.pfa diff -u /dev/null xc/fonts/scaled/Type1/lcdxsr.pfa:1.1 --- /dev/null Wed Mar 8 16:39:17 2000 +++ xc/fonts/scaled/Type1/lcdxsr.pfa Wed Mar 8 16:39:17 2000 @@ -0,0 +1,946 @@ +%!PS-AdobeFont-1.1: LuciduxSans 000.200 +%%CreationDate: 2000 Mar 04 11:21:33 + +% Copyright (C) 2000 Bigelow & Holmes Inc. and Y&Y, Inc. +% Patents pending. All Rights Reserved. +% Lucidux is a trademark of Bigelow & Holmes Inc. + +% Permission is hereby granted, free of charge, to any person obtaining a +% copy of these Fonts and associated documentation files (the "Font Software"), +% to deal in the Font Software, including without limitation the rights to +% use, copy, merge, publish, distribute, sublicense, and/or sell copies of +% the Font Software, and to permit persons to whom the Font Software is +% furnished to do so, subject to the following conditions: + +% The above copyright, trademark, patent notices and this permission notice +% shall be included in all copies of one or more of the Software. + +% The Font Software may not be modified, alterered, or added to, and in +% particular the designs of glyphs or characters in the Fonts may not be +% modified nor may additional glyphs or characters be added to the Fonts, +% except that composite characters composed of two or more characters in the +% Fonts may be created using the seac (Standard Encoding Accented Character) +% Type 1 operator. + +% THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +% EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +% MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF +% COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BIGELOW & +% HOLMES INC. OR Y&Y, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR +% CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +% ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +% OTHER DEALINGS IN THE FONT SOFTWARE. + +% Except as contained in this notice, the names of Bigelow & Holmes Inc. +% and Y&Y, Inc. shall not be used in advertising or otherwise to promote +% the sale, use or other dealings in this Font Software without prior +% written authorization from the Bigelow & Holmes Inc. and Y&Y, Inc. + +% For further information, contact: +% mailto:support@yandy.com or mailto:design@bigelowandholmes.com +% For other Bigelow & Holmes fonts see http://www.YandY.com + +12 dict begin +/FontInfo 9 dict dup begin + /version (000.200) readonly def + /Notice (Copyright (C) 2000 Bigelow & Holmes Inc. and Y&Y, Inc. All rights reserved.) readonly def + /FullName (Lucidux Sans) readonly def + /FamilyName (LuciduxSans) readonly def + /Weight (Normal) readonly def + /ItalicAngle 0 def + /isFixedPitch false def + /UnderlinePosition -100 def + /UnderlineThickness 50 def +end readonly def +/FontName /LuciduxSans def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding StandardEncoding def +/FontBBox{-76 -211 932 993}readonly def +/UniqueID 5096729 def +currentdict end +currentfile eexec +8053514D28EC28DA1630165FAB262882D3FD7667933E8516EE9710995B33AD6AFA66AE56E3B4F8 +1A010BA2D16746155E0B46B8233AF9FC6FB5A1DE6E6D7277AEC5CE81679028F3B440619FB93E88 +614EBEE63F9A83374DA4CF45FCBBACEBE22717D34438C9B2E3DC7580F497AC697EA20AC096930F +E90934EA8FFE999902BA55F2149DEADDCBC4CF03F530F526450856BF8F3CE1C247AA6810D725B6 +E4CB0C6B7DC3B7B5FBE22909A1ED01A6BCEFAE9A709DB1D61BF8A223420C27BC28535F3C5C58CE +BD7239771F455E727EB9C9025F7B0B98D9C49F8A33E8C9A67A30CBC40719B9902A42978F54386A +B019C6EED778074F809506075C7CF394AFF792A52C36CC8FCE79BAABF945F6AB3AE924FBF89F12 +D0D56822E09D7226051E5235D975B5A7E02610477A9B9148DA4E93861FF37C54BBB2F3196A5A37 +94CC7C8B06CB9817A184DD7B41CF130CA812FD511CC539DA6AE1E3D8D57C26DC2630D87CA276CB +0B55BEC3BB4626608A4DE50E3CBF313230AFAA9E86F83366003B63876ED7072ADF068B03629105 +DE8544254F4129096C4FCB741029ECA3DBF8402BF0027BD8429F4C0E4A691B9DB7BA0BB6D0B3D2 +76619C3FA1475D1BA1FAD4C5B40B63D5B85E1245256B455D0A4ED46CD28F119131B2838E932481 +125EDC015EF47C67EB10A5731F52ACC0B85572C16D2752367D0D949148DF67F9C11A5C58489D18 +F47204970B36C16A540CDA197D74AC1E2254032FFCC6714FE366A738531F78B2C05734BE1A6213 +6C6CDB890D290C32464359ACAE204BBC7B80AC79A14D8A755400ABD2B23BAF9C3E3D992141F8F9 +C97ED2B563D69C87826A3FB0E39EA086C35A4F7A56AD6365793F5F6168C0343059BE346958E71A +16BABC2E5B30DB1EA0CCC7A4366F49434FD92EE9CE371FD39CC3B253BA16BEB8C682A31B9F3F68 +B4EECA96055FA79C9EBBA6C36CEE00083986CAA5C8DE818400D2801DBFBFE48E01EACC97EA6A4C +43BE6013355C5F85F2BC86A716675CC0598A7AA3DEF4A4B348FC065EBCC0CA7BD95676E189BDA2 +4453E4DB797CA557B29167E4439C59E97CFF0B50422EFA7FEA7669CB43413B7B38CF6155E1650C +1364A263E17D900FA58ECC3BB1815AE05917608E9EE42DE02BA771FC20E4F02DD92686EA09D218 +E4E9F79C77789FFEB2AA92342FF6D36B225A4E03C2C83982F8BC735F64DB3D9CC25EFB579147B3 +F249703EB296678A8B58C23CAF5F38AAF9016239CED770BB08A06C0B09E670700E18B5FAEDF27B +9FCB06586A86FCF79E224138554F2A23D84473DD561A66FC017994B3CA2F0D957FC0D2DFDC5A4A +A1A5AA5F3C41A3397F19F6ECEBC55CA2C9A32A307EE08FEFA3D9D396E3A0564ABAA069DAC2F814 +2E0E56B0C5AC36E457C6193AB40DCAB58560839805BAB0E4B9344D9AE12C393C6EF0827BCD6B5C +A045A532CE56B61BED6FD4133347CFF6857AD0A508811538828830DC61F68767120F8AD87035B0 +2106FA9EBDF337E877D5C0720AA1EC5166DADF2781833DBB6C3215A1051AE3B8D3607F5413CEAA +E2583927E617D159478382DD27A2A282DF8C6E1D0C0EEC94948DC03917AB8FFB091ADAC2691CCB +8A2F5538A14B3C016D76AD2C6BF376A8504216F000D2F7C1CC7556C8DBAA59FB2E0448A8BDCD83 +7B6C431FF52807D26086B6E01357331EAF8A1321A81ACB52FFCC19ACD507FE1BD2244375AC2749 +D77C536435C7DC6F5BB0C5B86883CED544C59301C4F49DA43987229A772C9DAC343953F214D9BD +FE395EED13BC6FF3540C742CE162EEB87EA338240949925BE3F30B6951CEDAB4E70D07AEE75497 +6C2D472F749B4CE70485FF108C03B22FA9AF82D709B7D36014B0C430369FAD731D551650B576D6 +5682A370A527915CE8965940EA14F4892FB924033832E5693C2E075F4F4F798F0FAD9A8DB5C7D8 +7BDB56792B42D75F2E60C7ACFE9BF889167AF920C2712658D2664C6DE96E42010D62A6A7CB68ED +43F642BFB37D8397E90C15C8EFAC45D2BCB95BD92F364BDD79254D518FACB99A9439AB8D2376FD +E0DA89DC340E2B643A909715B710C7EAC4CBDC7A477F76E98EFF9E9BEE906558BDB1D8946DC603 +56D217C2468CCF79809AFB4BC8CFFF9FB1087279A6C99975157B8EAF1C05C2DED789877EBE1E0F +2D1CE8F7B577BFFF25BF813A92493CE528471F6C3CC588FDC42DADE958787DBE995166033598F2 +189E5411259F5AFD4AAE5892EDA4EB096A82521949823F8345EA98741924497799215AA0B4AE62 +F18D763EC2E0477AAA2C640D8248D7A03B9FD251B9F395648D735DCA676619B65849077997D848 +A6FCCA750A37A2BB0D5AE6C3C4662342012D67968BE19FAD25944F4445D0FC4AB007B418B1CBB3 +E09FF54944D9573EBE8720842BB0B80C5A6023AB192425DE90FFF3F4B8A7AE3D1B53FB50C904A5 +8BF66D41042EC1D0F82977847868583A3349B75C4985A20E4CB9D14E5E8B185DA22C6AC87E2795 +17294469F982F80FB0C12CC961B6E3DA953EC91E2262EFEE86C28D5082858D23D262D4EC3D9F96 +8D597B4370CFB02826BFA1435CC974356D54EDFBF02A115151FB0E70626E8EF2B8F969056F9E3C +B74E9E88925C6A1321F632971DB929CCDB9CBF1D3732E8FDBCCB7F81F10C59C0C3429C7B0C2CFA +B4B9F533999BC632BD5A2C01B58AC7032E0EEEEF273D9C703E936D26DB1569B81E63B41BA5CE1E +E0A00268D8E7F2A30AD7DC5737604FF4A7CE6541DB6BDC400275C85162B4E5A2C67006F757BD2A +992AA8526CAE3B57B6391D133802F8BD42BAF94C64D81FF90DE05F64AA745A7D239D911BE6526B +5B115848656071426246C52998F63410187DDD218B3F366095FC745A99F90FCB4CE3CF236891A6 +1F802DA5D207C0ACE85A74955B936B971252327D2F448BE84E8E2074B341E84AFA0A18C0DFDAD5 +B1596AB057D3B35E15E7CD138A501E8F2EBD5E3F66D2AEBD82059D6A736512A65325CBAF512EA8 +BF44EC8479533E087F5F0AA450F31167D4CF10DFD5D2B9CAAD27630B90356CCBB23E3E63A5BE07 +D8EAEBFEFE0435C8CAABC390B8B11E9F83B8A2C7714EAF839C9127C9961B3CEACAFD512D77D536 +F259CCCF425183B2D0D288BBEAEA0DD6DC638BE3DEA5157567765393DDECA3BEEDDC236BBFD10C +A6C1CD40F377BA53CE9F68876798F0DED447C2339633590790E4637BDB988ECDF7AA467B9B9C86 +AD4BBCB524027E44E87A394A411B73521E413222D2FF815CC6D06EB75C088917296B3109794876 +5CFF25166BCEF3E7CC4217481453099C0BBE280749B6FA99DA273551A98A5446E9084C75FE4CCA +DAECD7CAE2CB1A38842E5C9ADF9CA2D3D584E66B283E0DB1CD1A14D784FAD53B95B1B1EC7AA1F8 +10496924DCAA826B6FD34CFB4317F6CCF8DBB440593EAEB7FB9E1EBC9BAFFC3BEB5A68FF5790F6 +65F9359942DCB2332627DD69E4A547675204A09BFBAAAC819F39AFA8660102A9F684864E5E1FCA +5D08ADC38400F8E64D7B6075F1C2A0E015D8E42CDAD33EFE41B03C6646AB385AF6F05430083334 +CDDDAF29FC0C8E1B76811A7C343A4E4CFDD49511CC2178D70FE73B5FBA6AC71A7DA5098FEDE0E2 +803B1E3F7AE072A607FB4E08C5F04D544FB6488F2448BFBC53E6B8C91A5C79CC07D052A41E6870 +AADBC8D12285068BEF96878889A6D18445EC8F6643D9F0ED1C0F433A91AC4475C9F0C5B507180C +2696835B60CEF5E418C218D0714AC70C9595A73CAEAF72FE85CFAEA24EAE7CE5D2426AEF85193A +F7BF243732C450F38A5117C8C21B4FF7C59D2056DAE2FEBD4E2BEFB92C770490FC1F2287C9C4F5 +A74493A14017650C8A2C613600B7D2F0D26F26ABA9113F33F127E7BBB42245BB1B36449C9A1086 +920C9F50022A98EA1638F3D08A1FCCCB60AD0CEA217BA0DA2C4C86F31DACA71AED80728C7000C6 +EA8A00BD1C7F13A072975F5D1913ED0FE8496817116472D07F9618BF40743B4C4777FA8B84518A +2B60586D0D18A807E991565A4636B203EA7D2E69363F6E719DFAE7D9C0760F80C65F6FA3CEA15B +0CED811395AEF9E52C8E31510E13C6B5F32C3789945E9989D723EFDA8FCE2207A1053F0005B9D5 +A7C734CB4317FA4C8E1928548474131E8D582FDFDE73AE4AC928B7D55D5E7FA71F20E220317B93 +61E0F3CEA7CE57D22F09BF0D7871CBFEEEC115BD914914126AAC1C5800D5036B32E1DBC78A303A +71C13F9E6EB178DE3A78C328DE953F0666E296C7BB0044636CABA978D0C129390CC49BE39A7BC1 +BF2DB4B2537C260C53393512567DFE2EACC33675924DAFECDD4DC26CDA41572EEDB8A24698835F +E325FA5423EB048EE8120FB303DEBEDD8061D186CC5BC0685B2E2067344ECD682ED40A52CFDF19 +F688CC1CA231B5538BCC0FF05CF8CB5F12392108875FE3C68DE432F9560F9C7C6944C85679260D +1067FF0291CEBBD4A9EB4F2272ABA4E5CBF9DFD51D62265B6766F21B5CAE3F7C217907DE6CB9D9 +4E96BA17C260AD66DF8CCC311631985F53E2267B139DEC948EAA38DB6D3EB06B40580403816F31 +5788F094FF4AF03DA3528B9E0DA5F902679C63E4F4B1E04DBB7F1B267274868B8E06FFADFC82AD +078CE7462B01750ABC72276CFD035841DF8666D5FCDF41CE59059EFB22976B876293A1ADEA7502 +92342A3D65AECDEC0C108EEC0239EC4390245630EDF6212E9CD5D1200A4B68E1ADD82F69BA313A +2F5D24E4882A2EBA16A8405C69189E7EBD76815B0E7D79FB7A8D26F05BD01D74F851AB6BD3182C +9D2563EAE67E6BBB8E3BBDDE19EB95FB1402AA140D874562A0E8022A621EC94DC2D5669283D994 +6615DDEFB717DE7B2B96971E35DE1AEB667BCC78E4C1FF02E7FEC18ABEC52C8FFAB65A7E665767 +1591C53A681C7F8CE929C04FAFAA990BF4258F468C12ECA77542646B84F41A625866C87888BF73 +D689417E37D0E93255A1F11D9AFE300853D10C1720EF855A5212044E41BA74B70C82A455485AB5 +1D146FC66E7693977573366A87143385091E2EB54EDCE5F830AB7F2C83FE7EDDD26A959CFC6516 +ADBA9F9ECB389BC5900C4305D9FA6A2F2E24D61819D88FA7E28AE04F6B72656BE4D40873C8F4EA +9DED9CA2889902EC325F2E1A5A36E140501470A7EA0E1ED34C06400E5ED32C1133F8E154535AAE +67599192C4F0715DA1FF146B7473744D78CBC392335D5C9C1504C191C863979E688C7A2F1A25CD +8B23A5E945767D01DB6BAB2EAA40BC27ECD156645802777F679E2F62A0A3EDE2EB45C32DE35EBE +CC5BC15F6C0ED1A086E43271318622FFA20438F0184647BC44174EC75181A42E15DE4D1E7D62A6 +728432956F3A2816A18E961B346DDC72A23C55A92F8F3CD66B0234433570F88A4DC5EC39954408 +3671FB30791F330A89ADFBC9BF900A8A6A2B34DA74415ECA67AA64F71C72FF2D8C38183D83DA9C +E2734899F5105690C5414BA2C8E2461B01BA8671BC23762CACDEE38309135CFAEC26606CB1A3A8 +C57A8686560AB0FD8728CF15B8CB8631FD5201EF8C146E5E623A96FA4C46794169DB0069316CD9 +FE9AC0CCE1EEC3CBBC5995FBDB5713244D45CD2BB8B613752B11D78DCC4C4860E583DD0609009C +1180407725FF461106D38DE9AAA31694ABE3609792A274DF009EB1B6A26BED165AF16EF31CC2AB +81DCEB391E358ADB3350C44016FE62E8E24093EC4F96DB1A567608768FB9F5D905E6E93CA7E525 +015086AE47B86ED1E9BCE519618E29E575D35BCC86CFAF55A3BC97B3E4A9F2032597E114F6DC37 +34E561E6328A679D15BC3FCEDB77FBC3B591FB00AEC53F1D5AF3405ECAC6AB5FF107190C786C58 +0E1AFF4F6A4CDF5008B3928C303CF2345F473B4F2884B7A47BE58C33DB853A60E7F4E82662CD0C +C1F765A2C07F373A79C2E23962ADD4D8E382D88A1517F180632345B87186540F2C14A71EE12529 +704ADF4A63566B705701C5A70A9040BD71A74FA1641987B7B543EF0577FF76B4964CED0B33FF1E +4EA9A7412D7C8ACCE0774069BCB69C1878A8ABF2E15F4C1098DBC7215D812B9E9860584E21568A +A555C83C1F8D88517C4C11798EC3D9014E4B6097633E590A7986C604BC7F3A3FC77F2F5BDA178D +72A60BD2259164877AAA4740002C741B458C882CD9BE11370ADC879230028EFB60C49D7020B4E9 +A3FC085A2CC1FF06434919442F83DC161EB9D305C5654919ADC8E4AFC70EFEE8D958CAD2E063F1 +BFCDD7E81BB014693D1AC4C85DAA9996BE10D62C8BDDB5CF76143D2CAD519A079F2F942240D304 +22927B867F6026625B58CF93657F4981EC7E56A771AA09A5D800A51F5AA1CF7336CC6EFFEA9310 +F41C214DD71CB8F73262892A2ECA58A12682294CEA304D13F06DDAC6B2082EC655F6B609884D29 +9FDA364C10B303242D6D8814633A0252542008ECAFB8C4E33B6A2CA752A5BFCD749C2DD8C3F4E2 +00A2DF6856E9C60784C6C8E11128ED8B569C4ECE2A881F35AE772FA912A0DD36A190FE93A4D1E5 +D7B3B7A483B8A6B492ECF2950EA60FC6A186EE781440215D2815484C809FE95C68E1CAC2165B35 +1062FE875D0EBFB8A0EE594DBEAA00AA5A6FB1D9EAF5EA72053B6874F0070FC55E6B725AABEA3A +798DA02D83B329F741DE52842DC0AE88ABD9EB501F3C27CF774A5BF5260391CD2255CEAB7CD8A6 +013EB32ECD4911779608E9105597DF344FA1AB7D6D48007CD2542C09AE6559AAC5753A2C55EE34 +E60F4EBD3F9944B6F0FF3BFB23EB7F0AB987C5E43AD5CDE34DB19690372E6F062226FCEC37480C +463F2A68778B1A0CA62B3B36F7EEE1CA5DA157450A36ADC254910F1FCC8E0B07686FDE5851ED54 +64384D567DF300E3C6A7055F0F660A10AAC5DC83611AFFF400F3C7DDE4C051B2F65EC785228DBB +2CFE39580A7A004329F982006A7F7ACF0BE4972ADD9E9BEFE46070BDCBC17EDABBF51BF4F3FC66 +D423DFB9BC25A7F8F3A808240725BFE76C5A04731A94AB7B30F22EDB4DE3A1614CF335AE975154 +CCA71F0A946DBF7E6E77EAA47B0A029C595DBEB7AEEC924B1C8E24394A5648F92838A83B089602 +3B89686C0E27C6A03F96D7292128BBBE808B238D3A7D5221DB704AC862427EC3C5E2DFC2D0C8D5 +17923B2BF68215A518A73A7986AB5C8A1F6FC3CE276158F679FF5DF42592EBD30D208E43E75036 +06EAD4A5D34F92F315FD005B2ED4000096DEA6DC821040178C197C9B2A8140258E6082BB296DF6 +D23E7720D07DFD8FD92CF4FAA31DC8BFEE27CF4AD8F88BCA915173BAF3D97C0F88B09880682666 +BAF1FEBA3F9B9F536779BBB3A320524FFF8FC7A3DB515A52A71C5BAEE6669CCCDF066C56A2F421 +C3B9389AEAFADD980B67B6A66768F2EEA740CFB26B1C4C4CF76ACD3440B06CB2A081987E28D485 +CABBF28245029F196AB03A8AA25B25C5459245F44089B975752B21C355C637C5453D2616A86E02 +96FA0E32780BCF172DC482591142C1E8CD535E81A4E78C1EA4F08DD91FE25ED45CCCFC854ABA7A +8D58A32A9A904C39B7D4C86729E7CA2E6F40B1524FBE5B9987F51C41A0ECEADCF2EFFE55997415 +3D17158249262C26B487780B68FA0D6DB7AE493D6F7552B25ED6AB044057D3326B311CD5520255 +3E3E94877516E51E85E43E4988F8CE24E50E7D45BBC94252C4C3C31F79C5E1CAD52F44CD9EA7C6 +4837850836959BA2316D16C3C2C65B966D17BEEA4F9D496D4112A4F8FC18564A803FF314A73038 +FC6B0110D9AF9A81B79CCFB941AA6F58C338331F52070C229C6DA54683CD115BC452266E75B9C4 +889CCF3FE006A9ADD933639EEEC1F4BDB661BDD7D7628FF71EE7DF89E2EE15CEEECBD62C654D24 +B85DCAD9DE021B063AE17C44A9E9A59B7462201C0B4B810DCFB22F0EC0F0CCDA94B5A7B8E6A7F1 +42493296D571C06DAA25B45E832956BDE6CD4FACEF81AAD0A160406AA2E98923E6189B748CF86D +290372D8A27A054AAB2A68DA3B4B66E4657068AF14E11774EC5092F311CCA7FAE0F43D6E34F94C +48F21570D4F6CDAAB269BDE27F26EE6876FDD0D32A1098FBEA9F2EC5357EC79C7B837D2752C9E5 +29734C699C97369229D3B2CFD746CBBDD6225D566008F39DE9BCAAB9359672A76217531FFC99E5 +99CBF243723B63BEED88C4CBDDC82461FCD2E72F41C204B7A84951702127FD44FF3640B6EC2845 +95BD25958D049D265314E6AC041B99A1C27CF4BD5B18D39FF948C8CF77028AAC0E0E6274D5F384 +2F966C6D374E3455CDD6DA17B3B1BDDAF283536599B73BDC5D3E65487001D87A29F1EF12164728 +9A0E1EFA01E6DD31E312300EFA75011F259CDED61B4C2A23A0178A33154A51035F37AAA4DED2E5 +AC2382CCC6E01620F1D4E9213165AA757084A7281ADB76C5A8ED35AD9ABB7AFC9FEF262B259A86 +745A984B0EBA446744639E4034232AEAA3E3567C2A7400D452B7BD66F7844A114C280BAE434C15 +FA5002E88AC093E5621DA4EB030B318D0DF1718BF5C12AA07421176CE9A505351813D861DC8C0D +8D8126D1BD084DE7DF796F5A4CB5FDEB055EDF5DEE1D24BC967470DCAADBA990F5849C8BDCAEFD +8931EB87FF6F20DED07C17607DB1A1DFF20E81067158CAC2ED889FF645C65CC11BCF6C8D4517B6 +1EBC49132AFCCAC38C26241F7CAEA714336C15913A50401D2E8DB548A9393CE05E7786DCC03E10 +D8275587100DC5E28701EEB32378A3F95B8B97D5DC62AAD185925E40A914EDE5DF31ACD9550CCA +5F4B0EC8DD28054784296573FA721DC4034748BCAB8F3C6B362ABE3128CB8B3BDB3F8FA43E904C +0159D0AD292A86775C0590BD02F08FE7503C8629B9897FF267955D2B68AC90C470726329F05DD7 +549B350478DB1D400D7D9CB1F97F15BEE7F450EEC2150B5222F8611EA2AF5419F0157E6EE7E224 +F7C6635A4AB6B29843FAD05D34744DEAB615E63B60A02CCF7F9F1AE66BBB3C95432E38F46AB48A +59D90EB091ABC2EADC69624D2A4C9FDD3186BF3FC2668DAD5B1B3CF95D41C95451F0E52525077C +AEAF54DDE7538AB080C0038EB005D764F0E73BBF5FCDC004147A5652B53A3368209C22B6416BA4 +225D803F4EDA10E4E09F1FD57D04E75BF40927A0E2D962441F0703C6B991CC2CD0B8BFE902E255 +5A132B7B6EE6630A274D854FBC4458615A7501B4DC76B70CAD3EEE085C0189B842FD238BD60EE8 +2E3520AAA7E72F40FBE61E773E523494AC8CD0477A52951453281E49F95B892D1A526DF6829C27 +A50AC15B87D980E511521CEDDC4CE04B6AD483423D42004E8D9A052CCDEDB7D7EE3881B6C02040 +CF3CFB1FA12D10B73C076732E41BD793615B2CABB3CC5ADF4C1A27984430C453C5DEEEC73CC60D +69B63D1FF1227D2ABDC41C1C12BF589B16B8907636448C75D331C73539E5E3AC72A44851ED8818 +25B4D8E1C1E27FD29771F34210C153BDAB1BBCF90C40D6109C9806390F5DE097A064D5F9EEEA98 +D8EACC7BCC552ACB0929291DDA60C2985E53124D64A61A90A41C2D139E77F66552664DCDCC01F7 +201B16C0F4A05D4F015C8D77B52F7E37115B988C2CD96CD06B1A762778AE60A0A04AEA6BC01A3F +113700E3C4204E479DB89AE43AEF82BA7357FE02E342403A3B854440D39635291E0F7394EA120F +0FA9BE1AD225338237F31118DE454E5DD06FDBF6B037F4E504A6B520A6E56B2DFE522F477358A7 +998FEAC7016D09B5C884C0C40FA81749F76C5D477B2CD1D841D6AB75D4C5E4FB7B0E8CE3D47830 +8BAB4737D603AB7A93AC4D78CF6551DC96DCEF69A2CE79F0A0BD7CAC00580820E0C1A2C459B9A1 +CBC96C839D8E9ABB7A3A02AC70E93F46657D85A6E20E879A261B6E05F30BE51C6F77F8BA0A62E0 +EBE88A9484309C898938D71E43EAD8D502005C359E7E40A370079B9EAB66ED91A9566971EAC9C7 +C64A1881C9F1AD2809DC26BB2D4E2C3A30AAD707880CC0ED37EA68C563C196A1DEC3EFDBBA63A5 +33D66EE19904A0E23FA27D85076B11D855E2B054E0DB13E2CEA6D2D518F47D6EF3ABCCEC8F4C9A +8AD6EA345CDF58F63DFBF82DBC31E0DA8B5CBDB9951EB779DB55ACD3580908DC8060691EF61783 +B17CFC12F2DED169D24DE6E1F9876B6975E125D09E1BD087A8F85427F06B2661EACE2DBFF00DDE +CDC04CF9AEBC849492BF031ED833D90D8CB2153F959B528804CA555AFAF4E8D8755F58B7F016F1 +6E53B848A95C084E3C31CD19F0A0CC394D142618A37B49C130C1CB06E5293E1F18E822C2539DC2 +54C33E33A33C080E782129EFAB4F00D685B08964842FDF96DFF10A5834D22F05D2F270190EF5CB +D0EB5B51B0FD0A10C94F5407650AD8A41A87494BD2BA0966F308A3088D9FDC0FFA3CC8191217F0 +212A32FCB6DF8E0846CC416B0F1848A150449B307D6B018EFD65485E23CBC699656AE124923633 +787F32639F522FEC39BD2BBD4A25D98628B94370E63605407216C27233E88F4F4758D418416F09 +94B9025DF2797236E42B6910058CE7C7DB3DA05EFF8B58873CDF16DBE69EB375CFD6AA548D1E6D +44311A598D8C048B6781C8BFE342D43230AD6BCF0D99CEAB515E417F4F5683A8D37C98EE8E204D +98B3B0B8DD4ABC4803E8F0CB3DD727E45E832D447380CAD44BE1D367F42D7098C3EF529A044F20 +BDA4263E41D435A405653DFB93260955514CD20BC210D389F2D4B9891F9C553BCC7304C9A1A0F3 +FE8AFFC96151A32F24FC812898F198BBDB699EE6B65C890760CA3B801E1CAB6D3B0059D3FD9817 +F3B78838FB278A49D9CE5EB207B694F15C9E01A93957282C6580147EBC522633957EABE31FC735 +86AAE6E235908920EA28984B6C16898B67BE1041E72D612352BFBC1AB627DB41592C91A814166A +4485237EA53E378454459AE0C64BC3A8B1D3516AE984A1308B26E9F1E01EB94B34629F2959E617 +728A36EA2C39D997E675BC35FA27A1CBAF94EE3829BF8BEC1797B310A845CFDE7AE2736F9AA992 +A504F101053AF8894D44A998313CD42C32121AEA7E0946FD7808EEEE44BCC31FB9885DD0ABACEA +2528029F2FDF2905F411EA0470F679BA724A6038CCC205FC6592DF6FCF855395274B49338DA782 +ABF3D896E12A459B5ADC4DC418805B4B4BCE727B8D8FFF0B0BE48B02AA275D9FC4D65F92FEBCFB +0EA791B78C6973C0F82D5CBFB142A40A470114C281888BD8D3587F022E787519781D1FC501C3F4 +B506E0036B86CE604D52FFEF1F52E16F4FE251DD27BA466E03F82F857EF3C93B9A8995017052A6 +8B12717A803A81BB54C2F4A9981464BE58C35758920BF514B8CEEEF1A3E0B61002ABDCB2FC37D4 +EC8282AD45112F48DA9E2D5103A9CFFDDDB2016BD72FBE451444A085DAF0F3E9AD57A3FC968221 +AC6A334D33B4C517886C7C694734E86B2EB908AB8D985F1798ED35169CD21B21AB6D74A2593038 +DA588BA5D3A8404282FA7336D9EAC89AF900B8918409D10528BBC21A604148FBE0FBE3B5397EDC +57C4E7D654C7C5B0E7DF231BD2F12A545FC34B8129362D44608FF2395F2446C42DC0BCAF38ACCD +9106DE6F6BA995012A146D25942FA3FBA36EA962976FBD49FF19A4B3FBFE242548FF61DDBCD31B +B724FD8AA40D418490A541F51A53D3260E525CAE5DA0810FC13C51E18A67760262105D57F114A0 +46D26D99712E00949F8846D14D6EC450C95BF95B5B91EBD73BA54B5FF6BD43BEE2775E693C070D +78958EA0B3676DD52A06C816CAEF3E4422B211D1C3935D41541C584EB69D1185654261DD70A35F +E70A5B22C97E09E01D1E2E41849D24842F1D543CD7271B120D09711CD69D12B2660FDF945F3694 +612785148D40A3A1E2DD895837AF319CFB89DFA6395078E184FDF3828BA1236C4EB8128915FE68 +D4C7A4F9D293B98E806E60D84B962459A9F2E84A407E471F6CC88E4E8D9E8D55284BF75787FF64 +8CD35B5F04712068C975F3DB130CCD2050EE3EA92DFD0AEC9D6DB582DDF851B0876A0B1D6F9731 +1BDC3D553A035EF4B3D3C8F42F65D3C971F64CE37B7BE64C3E58EDAC79AD1E7B82004FC87B73D0 +D3D6394AD0ABC0F60A228A5207C3424F938B5F95335317605BCB533375D5EDCB870672C12F21CC +31ECF2FAD9AFC97ACF99E0FB50565BB9C8C3665AEC901657E28B1467D3B97F7592787EEF417EE4 +AABF77186AEF37AF935F67A18E1D2839134CCEDB3F8EDD458752DD7F98A58344113C579EC35F50 +2B9AC55C21CE938947587313E7CFF8BEC4F6B5F78922E9E4F3D6096BE9A143F7DD9D4822DDD10F +AB79A44F2C52F93DEFDB85BC80C21F20AB8118F01169FAC6B628B8E21D9B19706A7C1F503FC626 +D0CC4DCE28ACA47DB45BF55C398E4ED97A300466733527B394F114254B9C81A4FDBC2E205DC4A9 +E54A6ADA3203E8FAC560B2339319D1DB7A2864DEAE71AE3EF79E8169EC6F012E0B736D19DB3C2E +55AC0F166E0AE28E992278EAB90088100C7E1DF9F58FA8BA0803AAF6839AB82A9DEA6CE26C1B16 +4D20D6AEB4E8ACCAC7C5A337FD13425D7C0DD3D5BA062222AC07394BFDCD7CFF3254401B2731C8 +415F2C4CD0758DFD96BF6CD127222A92EF503A4FD596647F6677FA1738A0150EAF83E24390A120 +FF617D9CBA081FCD39F049CA5E9CC4B54DDBB546F4A229662F058C4C4687A943277B7F0D58137C +2A285421D4908400577977FF997FFD34800F21318E049489065AC88169F57F7B766B4F9326BBBE +F6CB887E3F6840131BB83B5A8464692A0A712348D00E112591D5B7648BA338D7E61F3D42D1B67B +3D3902DEDB7C899734786D83BAF7D8EBD4EF0988DCD1880C8031E9D70020F54E6251F0EB4AD90C +AD469B9CC4AB1FE31A6540A39FB2C56E06921B76B28022328FA9A7C4184833B557FE552035AB7F +B8FEFE56984FDC692D83F0666EE536BA4545F00A66EE9CEA9C16B400DD5225DAB335A1D0562A62 +0C41B622D873A9F95330179DBC713233EBF4C30273EBE201ECD04CA9D5CE414A00F3C9FFB7B213 +590FA2403B7A471EBA218D885EF682C1E52C90A6554DE2C1949B9DBF55B393418F3B52B36E4E4A +E3CED6C625347EDAEE6E80776641D68FA7E833BB6D5CCED5D17B9C45BF3BEED91627EF23CEADC5 +A7991F738C0025DC7D7B9A98E63A655CDC28B5967391B783A6C7BFF53F6F09CBAA63AF7C3A142F +9B9106132C97A3019339AB229614586E72567EB37FCF2D289F9703A8F228725A4FEE68B4EF6652 +31CAF2C8E853729955CDC04736E48D3DEEA3CDE978E17049B2EBC2D7184737E46E2D58697A2DF3 +4B9EDEFB01BB465816355A2547092FCE455558D12B6D1EEC48B75C43319B868B0EDEB4125310E8 +A3D60BFC2612ADFF85D07FD8B99D466712A1C3A577CEDE5B9E8A8FE1E68CF24EE21F2CF5447387 +4DCD278B8E5AB2D7BFC0CB4A02612D33417F018EFD09FB64E7CFB08AAAE91BAC91244EC770EF48 +E216D570170DDC93132B0D9F69765CF35432B21022287845029D7A5E3839947A4EBB15A084A28A +CF278428E0F895BC1815F7399FA43EF963878B8ED8C191C9F8DD52C52BBAC557297FB8B474E26B +17C87C5C61981AA16695FCDB4DCE4EB40B637C565D824BA750317234B52B9B1AC9B396C39BF115 +6326E9A7F356D7EA3F5B29B23B711C0A4133A9D1A151AE53BE39C4D3A9D613D82D53E7E9371179 +74558F35F1731E049A73E770C0139C51359A557BC6A483C3BE86C6717B8CB1C1513F6E3ED34D42 +E4C62D9FBDF1BB12BEDFA63AC6F20FA210DFB8460A9D58F3F0C6A9964E66B775E3AF9AB571F32D +DD7AE1B8F62F15B84ABDA55052A30EE5C6ACA62DE7799836D08A131A6D7F2884494F5CD35FAD31 +033890F0FAA23E48ACF4347B379D1A5E01554E780636CE22128585081636CF56A420AA38816231 +D499D240C1602E37BC2BDE4919045D347932126AB10B2162CB8586158E368E84AAC965F994A398 +0F6760829FCF2F2B54D86763BAD0BA1E4AC948CE456AA70710BE57E9E755D67ADD8933B2B588F3 +D596AD68E617EA997167F29E37673E9AE6657895DAFB66F29469629CC024C6EF42CE5CE07CF398 +ADA05722A285C7F8EC0CF6D0C3A88DE0058D0FD2FAA95CF3669263FA214FF41DF5B511DD46957C +3378D7598E4DC3543333710DDD3F8079AE3CB210358F29604092D86EE4E74F5533E94D9DB09927 +14316CED7905C97F09C8BE323921A6E403B667958B08CE56907E104BC05FE7DB62BA98518E56DB +3AC152A8CBBACC9BF1335ED09288C3F518AF6D34D928818EDC8A494351ADB0FD94320010BFCEFD +3B2099F673ED9D1C7BF34A4D0507701578C285EA0671B9AC55138D7AA96270B47D01ABFB3068C1 +4BBC596AB337BB55F1C06B79EDC5DDB937A3D03D3C324E0760DED6424A64EA1BBDC9D7134C5106 +7FFF18950D3AEDA35986877943754239464CA48E634DA93EA39E62D4C2AD5BBEE483423B44224D +891F7A65B4C1426035EC83EAA68AFE9DAE86D39CDC692E3628FAB02F89B410A68418BFAEE281BC +C9075B51DE9020236E382BA845B149A6408C9F6134F323DF8CA9FE43737C49F737410C5196F7EF +1F4E86A34328A649874EE1810B0CFF07290CA6975EEDFDE48C5319BA56079344E9E5E98DBEE132 +7F902352A3312AAE0B946F43CA64BCDE25CBECA653DAADD270A7B65A47610B3239244F3AA479D8 +0FBDAFE0F68D1D17035935B4FEF0138AC7B41DA297B47CB08994A9AE496023B4C5304E7A433343 +A3E475A546CCACA86BEBCEB40D58E3856CA1B94F3D9441C728E8DEEF7BBEB1E57F18790FA2BD83 +6F1EFA47805A9DA9EB00809480E90B8967E658D60709254EDBF59BE03230277422EBF9F4494F61 +87B818BAA088B1DF16EE5C4BBA9077AB2FFF8B56E295C5B922C5D1A57660FF0C538126B3CFE1CC +EAA20D82A4C26CA7CC9EBDDDED4C44845AA0BADF7673F0BFC24283618D54DFB53C52982893F3BF +C44C36380B2519BA632D66F463589FB4C42F5D2782A945A2AF5D4F2E86D30539A9E009EEE57060 +5466C67B9D30BF27F85D9EF4A9857313BDCF2D66BD58B0BEA619AA39022DF45F05332DE6CD099D +09043A1EE2709736E360B7B0F5B8DCE3B60680F4C55BF5600B4DF5682B41CAB84AF64F4D1088D1 +BB62F900DEAADD4938DFAD2A5BD2BCBB687327A2865355924EAF5F10E5A68CA2349D12641018BA +95C8883B6F5DC05C936C5A47A0CCA84BDF47145436FA8EF65C5FE880275577A42DF1969D5F96CF +762593F2491479243F8B10C316766A73BC898FAC5D40F9980A266AEAEB1AAF1F9C56BAA55C3F4B +39CA2E82C61598EF600E50BA612B7EEE4BFD531628FA62519C55890C08C07D2297A9DAFD01AFA9 +DFBAFFE0C4D46CF5F56D19FABF0E59EDC99DCD0588DE8C547A57F7118E1D3E4F582BD6C9B30CEE +ADB7F7A904B4C9BC32CAE0632452420FF9F5EEEE29CF862F4840663BAF546D5C9893E7F68967BB +3EA4E475B8B7CAC5E0EF38E5A445A016BD26BD0069DAC04DD55501C7D775282E149535A1F52507 +F8ACD00D2F3901FFC033EE09ABFACE00715D68B8E3C8DAC30B4F867956D5947EB338673C814BB8 +F4854D8058AF60B56CBD4305F52BE437A60B69AC5CB74C068ADE65F5BC4A71379767FA900E5279 +EDFE83623F79215845478AE8B01D86BC5365D72BEDCA517693EBAAB9B979856EDEDE801F60B9AA +A6C1877CFA5D6450C910C4FEBA29F00C65C61E95919EFE072838236DDDC4DF3BB02B7D897BEFF0 +B8568B4DD79176270B98889352D548E9CA281D2B40E303FC3323954AA6619E74E7A19B9A846BE0 +2676430504A8F5CECD32108AF97AE80EFAA01AF2E2154413297968A8C96DD7367C5A7BA6AE3F92 +A80B3A69D1EDDC57E7ECB9FAD0004010C4DE74019B1CEB8D884C9BC8614B0C351F57DBF90ED6C8 +E833FBB79D67D8C541C4A0B5CA28A012BC55CED14D0876C3A0A6824547706D270C53AE87BE6B6F +F435E2C830609341E116FBE76AB1889D5B08C08818E73DF97A22E8B04821977D19AD825601C7E1 +9BE8E3CE3623DF0C94827F217997F79A661D0E4FA551FD71CE2819AC1C06C380B9038987A58EF5 +7B9ABED74B2C0539DBD1862DD0BB81DE60F693464277AD9450A2ADFADF442A5159CC231E2AAE86 +F7AFD97316270D0816B6A2E402BC750F0B0F5BD8D0482ABFADCA7D5ED7671E8A5A2509DFCAAD1D +A09D1C68C9B7785692E9DD04508434FF479C8C837E388C8A23EED248BE730A06AF790040E3948B +45E6B2D3E8BF11A8C4017F325E086589A01DE60D6EDF9D4953DA1B259596737046E1A3C9E67F31 +30FC48E2EB938FEBE7BAA95F4D53CE816E3F72CC01BC118DD4BFC68E319A3E9FBE688F577EDD46 +4851251DDA07A30482B66A7A58E2268FBD7DC1D8C4405274FC819886C77812E74FBF3729F3DB6E +1D7FAC286404CD5BC0648BE55E2D6F2D6DCD60AEA029AF4B84E4DE9A36F48ED9BE37E4ED107870 +FD61CBCB60551E3075591A5A6361F70F90B50A8E8E314E7660BBDB757A5CE6A69FED05A3F7F2B6 +8A41BCBFA2C2641B6C90F5219D95A2EBFCBC228BEF5816A4D2DBF7B9BAE803C2B963D73382FE03 +7C3433B7274B8E1710E0D17637B0C1927BE575D2000456724670880A94141037AA9726402CE6E7 +2945D45AD90DEB914C1A974AAC28F296494AFF533CC323CD32DB99C11C94F9E32CBAABB3796C76 +A144D1C07DF7BB6D6BBAEE980AE11D6F034FD4A67236B9A3F67603CFDBCA7AD528AA8FD98753EA +890C42D2F696F080E869AC72859A5EFBB4B93C9E1631B8B13DC65BB14A4C2D1099D662652E5390 +E4E58C95B76E530201553BB200C72FC69E5FAB3EA862DB632A5E1272476CEA8483E8319AEA9795 +7271DA3FD947B0099BCD505DD0756D887F81F93A890E21FA978C71BE0942542E729F593BBFCE30 +DCE9151B4B039D19D14EFA6552210149CD8FA0DA535A189C23DAB06F9C54C4A8D3A719ADE2C04C +C95CA5D14C438B9E577E8980331ED59B1DB2265CE1C481343DC2600E42072065129A9409FF1808 +F9E7A222A20F9A5E1DF4BFFC5DD396A34F79B22AD2605088FE2F52F35DFA5662044AEB675CC9B8 +230B7E836BED9ACF72FCD4CA71DD38C0664D88A870A6B67CCBC02C2F14A07A2B5CE7CC00E350A7 +B2D984CFBFA6F0A85B3EFC3CB4DB5D61A0ED513F4EAFC6B647460B2316FBF99237DD866D7026A2 +030FE810EB1AF4DD0E713F53C6EA4A4B59931D7DD284A0D48C46B87B168A3479E07BEE1ADCB134 +0AC9C84D527DF8761CC77CF5B44A644187A341AB9A7450E63FB4CF0BF068E33885E47F8906E0BB +F8A971992F99E1BF0208FA983F43F6152D45611D05A0806EBDD6301D46C7395A4448BB1B745129 +7E36E9038CF6475B915926948E58280F3CC640460DA269E49C4F4D5AEF09251F15C8C227DA1E57 +E1B75E29C5AD1E7B414D6CC4D2D2802FB3387C2DBFF5FB5B3716325477A225D6CD67C58C8712F7 +FB966122402CDA4638EFF9DDF27CE4B22C2F08E27D0B15A4A9CD0E5048EB97F7A7BBD01BAA73A0 +93A4CD89F6A9BF0D49C12FAC14DDFD3BEAD0C5293F0764421292CB3961A14BDA0F74D9881900A9 +3E658C582CC0C06E416F4D73B30C47DFD2782F02EF5C95B5C647D33B92CCDB48439E97DECDB043 +1931F6881C49EC1FC628A0B1F21DA267A5E2BB701AC4E6620A8F3CF81E8CF30047423C0AE11C93 +9D076FBDB6D490BC6D1F4F5D80315BCBA2F7334DD71B804F27AFA39FF16897F3001F84D510C295 +B37E61CBCD5F41EC0AEE3B35994EF80A5D2832CA3A31EFF10D915F85C4C2A11762F405511016B7 +DD15CFF82B71A8D9C53888519E3772988A9810C59CC24972BE8E71955F094990D92A5AFF533CD7 +083C2822755E6D6CA965DA2544DE3DA478D5C16C0B516F4A73EE2EC2A9D30415AC0928F1C11E2B +75F20151FD4D0DD368B8BD127AFA1702DBB4B88E83B52DBE959CFE1A666C5D4869581B73FE43F9 +D948278507E12B6ADF82B4604081718445D16A876D6A52B50845592153F897E22C523D176F4C49 +9BC6760BB32641AB6EEBB37CF1CC57B83816509259952B395D762FDF2A9210E7A7034E1352CE81 +B49EA3A6F778EE4460DDDF4695F671D6496B6FADB1E4448BE66843EB91274580A0A52255D1058F +A5D79CDABAF32907871F3D93A23371285BFAD140F309B357C9FD73BF54565A055F5E4D3C25A378 +A5574C9203AB93FB4F5E0B556D7685D05AEE0A165811EE0FE7C12A74709549DABE4666BE296472 +3B33EBD5B925E93C6BF1E37A3548E8C3D976BFD8507535D5AD1698E59CDC281AD157B41F4C1391 +C3182D15A281CBF993A469961EBF4C449370B37E00C3E1CF216F81F05CBE1BF2C8EC92F40F5F16 +C35C7D0EA6BD5DA25E0411D9BCF2C5D7A8323EEF3E3B54FCC76A2526476A1F59790FB7EDEEB4AE +9CBB682D3919FDB70CE240568F89A6033CD11D8B83C5E26278D5FD339F02AEDA0D7F020CC45D4B +BC2D235CC736799E2FE94C4AF957B281A8DEF2E944165A4F80079A143FF713BFEF95A7DC402A54 +C61DFE618C8084EFAC0914FF1B710929D1C7C9FD1FA22F5E58B4BA20DB0BE4B7BAB35177E4D54A +F789E460F45141A00606A771D1794A62792F079AF7B0CDFD3F1B75D2FD04A59C487E55C87C3C15 +99EEDB6F1465A53B041C5D4D9705B5046B8F6654AE45EDEF041F681B85D75235A58B9A889F070F +90CCA51F0750285E6C9A9AD80B1832EAA0215FA7161527C71C274F0115F1BA45B0AAD2146233C5 +0F5129B7A2B400215B5DB7DDB6B609F423F5741D66B5DABA3338A57AB0DF617D14FA465C107285 +6978D54A1DF67BFE2A9DFF2A45EE273BB39B8B7B71AEBD1FB46C17A1291BDA66611A85E4F28FA3 +56745BA0A69A25BEF8AB4CB133A9B411C78570CB33FAB6C68C61EAC2DDC51A9B84D906F02150B7 +568915548E292E371145AB1778971607E5380275841DAF46F45D0AAED09C080C1C6E66A6C3C470 +FD7C9CD27970B9069489F0DE6FB862551F1B9ED36507305D786AFAF3E7778825ED63728317E7A4 +05F7B7980A38E4190F443911247EB33CDD5DE9AB53F283077C4DCE339626FE22E44D147AD65371 +62EC884DE142C467BFAF52CAF9C0ED69352FB71A3EE40FFDBB3D8DB44D257FEEFAE23F51A9A2E0 +5464A6DEEE4FA26927A4E2186AD8392FDBD2ADE934914FC23408D45F356E71D1BEE3A70C86D01D +594FE207A94578FA00422CBEC223BA871050985FE15653A1CC54CD79F508B799DBE191E77A4931 +1B3775924F3EE2122BC3CA211B87A65319334A931B8E969E1E062A54026F1E4C445634E2B91201 +08C5B651223233F227EF4171D7E8D3C2A0315B4BBCB64281292DBC737BA0E2FD3B367091C8D5A7 +9036F4207AD96600D7FD38959BA2E49F24A555EA2EDD329D521C2F8248C04157A51D857C17FC97 +33F5A0B75C92CD91B00F3B64C1EAA23157772A08B170385D84DD9145BB761CFEA016DFF415618B +C62F3743DABCF9606E16E7A716953A1C723981C6B7CD6F09D13C783B2DE73762704AF97B475014 +2F4B810125DAF80229C53E67D421EB3A75BD0C4EECC71493E84B67B64D68925B3743080E382772 +EA2AB0645CBF2B278FD325FAC30FDC335BB1093D6D87EE6B920E96E794EEFAE5E00B44F4B6998F +D6C202840341316F6BA08FB644B7B7F5AA8A02EEEBF84396FC35DACA77C6E44CCA675493EB0C99 +5502FA80A04BEF356AD4A5B5AAE3A350E635E1EDE581698F5176CB6F06F67BD79953F2CEA5C8F6 +E7EC71560D9C03538BFF431E0D8DE4BE3548BEE8F1DEF8059BACCA663C2F53285A5E5E6D124433 +1F6BF9A152489331A894F1EBDA9E21B3DB090EB8FF6E12C89505CBADEC8F8E068D8DE3457AC152 +50DF9646438FB514F8CDD9E1BAED0AA5D1583D4F50E0D879601B0E3675017CECAFC45C17C6E1EF +C8CB462AED82A0AAE520EA4A9A819B223B6C1234F64F0805DF709B970B7E8D4CDB31854C48C1CC +ED44429F449B759FEC3EE7DF3545119EC993ED5D5920F803455044642A55493B23E139E5B66B6E +BF60706A41DE78350A95D2CE7DA88FF6D425E6EAB5DE23D2289167E0FC366E82962EF2CD153C6D +C56F41D88A949AD1E7963C014C40F4BFB4943223CAF81A6333B1179FE1EBEB47F41A2A7B9C3E51 +6E75DA77E9D6ABD144CC4645CCE6287A49D1235D7A15BB09C2BDEDC471431C09FBE9BB14A0F329 +E3F96EC5F5D4DE39480B419EB4CB22E6CED15FE724B35AF2393F54CF08FDFFAB69907B97903A3D +028840A4D375438264DCC42BEDC0F18BD8AB86896B810BEB9712DD7D42E8F0D51736F1EF352D26 +F874953D41CA70624EBFBBC454228E9E4FBDE6E480530873993E77184C7B280C0F119E28625199 +339CDA289E78E09C34596EF95AEAEDADEAF99082167C5E1E699026E2F0055A57174C115B2D8E9D +8C62ED03E3F47908BD19032127FD9621BAF8D99B25430A853D10EEFF0432AE96BDC0DE51062B79 +11ACF8F6DCFDA6A5FF01E56469649A6643051B2D9AEDB4F757812BB577C62BB045AA5AFDAD53CA +8526D9D98B8A3526841C340D7649532108AA0D7A917FFEC15CA6636E8E13F33006177154C4335F +D647EAD1C78F480D2A50F8CC7934DDC69FA063C65557245692BE8B142630017B022CB0656E5355 +5994276C376A7E74A6BD20A736D5C25D566972A6105C59E4353C92DBF81E4FE8A014555DD37049 +F173E444322779467B2DBAE754F1D8313272A5416A248AB1AD08D72EC5A4E43E19CCFED92A82A9 +6EC4E12868A5B915CFE1231C6C2259941CA6157611A2BAED7E20BDE0B0A28A1A90CF91FC639FA0 +F85DFB9CE71293365D19A18BFDD86D25501C22ED56DA5FBEF9269FF8DE3A1A2AE537FAFA64A12C +174AD7CC360FC98225E41A8261C39A95B5A070588687051D52198EED9EEAE6BD7C4AAA06E9FDB2 +D90EE76A5CA0A9D72B2F5816687453BFE2D91E72293DBE064338B8E2CB25E3CBF3EFBD29D7BA3F +86B8CE4C15F04C20B3BA262D4707BB40735C7754400C056F84614416EBD172A7294F42E0008A81 +0C688741EE213C8A1821CA6C204F27D0E7F8F754AAEE756A7F720AF7F674C2C24248CA46DB0969 +905F74267398335BEECB028FE7EC8F814472454D30647A9A0195F1E3FC113CCAFAB4D75FFF83E8 +3B651682DC813BA4C388245B11B08EFA714AA77EEB58D908B0B7F182EBD918BE523B9379C410A6 +780C7D8FEF5166D09433A9AA5F4894A7ABB985833FD9E0489FA812C42CB2F9B866C2FE719884B0 +04442B2EA4D485A313188BC1DB81FE00F24215BC01B6FC333AED155526656C79DD1C63360449FD +229C0F218407788B3A9D71EC318A4B2316D848AEB7999AF6E397E7C53D80515B075F45B1D4D561 +C6438744F5E73C591B0F2AD46F63FD79AC31339309A5A6E1B7682D0FD26BFBF9A545D42C10A785 +09C3D63048544E95B7CBA82AE0944CA20CF9B8D28FC11CF6E39C3B144D465EBDE9D2A29B9D150E +08BBEBADBA559FAD8AFCB98AAA9402DD64B1B9B99DAB134D9CD63FBB3154933AC2D973C91C0539 +38EF8ADF3FEEDFAE6C59014850831420141F9E90EEBD2AA500CBB3DE2C8BCA9A52BB9961C67C21 +2013AE95E108FE93D7D51563E315EAE352636D3296B483BB5F61A0FD0A5B64C09139803DC9C5CC +F7CDDAEACC4876CF13578095DA0148E8DD1928984AE1475690EB4E8D6CF455E647F9844347B00F +52C080B949C9DE164DD7526F9936437BC43B50CBFDE72A06ED9A88180C21E2477FE1EE14578341 +F05D3374B20C019E212DB4D4128331F212AF03F53FA18E99F5826FD003FF028F54848F8D044F98 +883B6194904E09C80A281BCFF7B9EB869D4E8196C5E3DD44C4076D45B142A3953FD7B8F2146E63 +76C48227D557630700F0E9641DE2B591C27E872323215B1D49E6EC58DBBD921616158BEB03B82F +B3AE0259F7D7F0AAB6C78493559AD1B101BD8031CAEF522DDB975F705664A5F44990629EF7C7B3 +5FFD9E621DB48EE0611EA907A264B63238C2F4D8A6201F30C2B1ECA4698270A8F9832280D7DBFB +B88AE46DCF182060725AA44B00D30048F7A43AB53C2052420BFE51401FE807234BE5848E4E05A7 +02EBC2C0018ABB7793206BDD78EA7DF8A9A7AB1E865E8348A2B407AB913002334E91E2DDEF495A +1095188397D8E564E842F926A3C15E530889B6524462A57886DF74AB4056E9BF59DA6C8B06DFE0 +22F3468946C919184BEC2B309D9EA1E8965A2EF19640C143EF5EB40DC0BE1FA313883064A4FEAA +D879B7B2A7781609B2C964C2BD28C883EF1F8035DFF83F749C76ED1D99E8339F0AB77333F6E9B7 +945860FDC1D3DF95FB45AD0D5BB67A226473AB95853BD839B51B645A7CD84D67FE3E0E13DEC8DA +D4F117AE9043EA6309039D8DA61A5A8A1FE724112277054ABCD652510DB3B8D80273B3C1A12FC1 +ED9329D5E5EA3086E97BFCF8440FC81F8595E3E41E1915847D87F7CD12B5C6E1B5C000B59E88CC +8B03021182C59F567798FF7915C1EED99D4AEADE1F646244E89C2039D6AEFD14FBFDEC7A20DB79 +742212C7EBA7AEC6CC23B86D5EEB969A402D4DFF70D0C3CC4567E6231E3C78D90B9CD408624244 +873B8A599639C5497E66F03172D143E553154D6AE62A79FB43F410B174AFD1154FF4893FA2A3C5 +E722542E995D987A63C094231EE2DDA59AC743454891507227DE9F9581CAE34D7D2C7D431CECAA +0D01DA3A4AD12F251752DF537AC8F20B8C7758C8CF4E7688B7FA4686164358DF73964DC7062A65 +AC515F1A66A9A2C911679E193BC8EE78A2A9DDD0002CE6FF050DB674A0704B4CC04F9E04DC3060 +E5461C5EF9AC5391AC350F978F1E53975C7758B84D6B90799526611A03325BB8985E30D212EB4D +BAFF460ADA1BF03899A885F6BDC841A518BD134E6D60AD804E786057A2AD9761F90BCCD31792C9 +71F52DE1031325BC116FC098A3718ABFFBB5958AC64AFEA7B91B5D5CBE4BC95D1D96B694CCD8D5 +ACABA746F2AE8C20861E4CEE122514EA537CE42196B130C30A372424FFB38EB57421B9B57CCFBA +E1F48BF3D35AC704C01DDEB9983A97C7050FD9DB62293111F390275AC8D889ED6039B6A7BC1C04 +D99852B76D2AF35A6DC781A5BF8C75686BCC21E80DACDD1A6E69E61F19986F1A4B7C428FDA9829 +BF36D0BB5F39D7968B024BFDBDF8CA812A8CA9C4B8C5799E8CEEC594DD846108CA83C1546A1B7D +BE3E0C51980044860ACD9F846448AEEF9ED39376A6C2163B72CDD28F0B8F670587BD9484F2BF7D +72530805F1D6452EF98D4A78AF3938727E0BF27B8293C92362544FD5946BC91FCC667D5DB98607 +BF3B44457CE0CDEA7C3C0C1E50C2C382015147B8F49994A02BFD1562FD014341F457D84C1776B3 +8D42070431C4F221768B3C9CD7DFD4D0941E7BB60DE99B8EC2B87229EC3B548F825635B8364322 +B9E3F76ADC67DE0EB2AB51687783813AE9EC715C914A95854136E2D623203FA5BEF699B83CD0B4 +88945194BA0378175A089F8EA340C968A6DFCF5F6824BC81E1B3CD76661A2BA8D9DEE9906B1417 +4AA0BF26B03FC4F46FB3A35735232891BBE15D989C1741B60ECF19D672CECB711324C27D897FF0 +2CEBC53171B645542634EF5399EC93566F502B25535C49200978C312396B8A12452301C32355BC +806FB656CD4B4E1BE21FB22F54C022D30F821F881AB02CBDE35143F089EE2A97015C75E04FEDA5 +220CF2A1CBF13FE5C64C02698AE6DD30F2E224EB98E8CD7E6CAC85EFA9F3527CEFBE523B9379C3 +F6C0E1A67812D375CC1F0438F0BBB81DDA6062F68964DFF1D7B0335DD2B90F38724851018DB989 +E89CBC620584C657359BAFFE711321F277F6047F26FDBA32F591BA2666C86B70BA39F770B4DD14 +AE1B3291537EF4D60EA6D0F15C52B625772837B0D3DBE7F95B739FE759F31D823486F0118AD7C3 +E5C0832CE0A4A42DE584541BA178FFD5A16D80F81579C14EF199DF223E4057A34A52577008EDED +8D228F0EDBA010F4229D37E951FE13A017362002F200DFBFCDD7F0C0315AC23D4B983C36693F07 +4E78A768E9FC14BE15766308234F26A2EF0374F758EE3676C357269A4880CD2AD6CE31F6383D4F +F7600EAA4194F10AA3BCCAB352BB4FDA863E546C95DA911F47534F3C07FC75A59037D4FBF1F15E +77B38C8D8E3187D2C24798585A490B7AC9A1C879CF02ACBB5527D45F5710DD5FAC757A9B636912 +E2915013E57CC627ACB1057061DF007888FE84C209DAA450405FB2BBE3F7EDD4DAFAF7B6013273 +BB3330EE079B285A63156621B30736F09B50C69E4BF6F8A17536C8C2F003D5D4B9E11AC60CAA0A +6F9972D0B2C45688950C6183037C536BB5F78DD5F63AAEFBE4687642441899EDC448DE481522FF +D5C0FD867CEF8578A3DFD3BABFD13322BB13AA1A6E2799414FE1804316F24EBE68124E4C1D750F +43A2AA7E738666987A20F161AEC226BAE6CC69AFCF25B86E6B2FB5403E2E2A35DED5AF4654FD5E +6A5C4A6539B7DE5E5E9D2A1DCB6BB153F6EFC93642AF5BFCFF24C821CA4BEEBED5367999A770B9 +5F56435635B2CA08614E0D56CD63818978E3BE88B9B7C3E73B0B91C6943B82E3E06B2888A6E243 +4D9A7DE919F34DC46BE5889C3C34E5109C42316531384AC3F6751CD78F3566B4AA72BC09DE7039 +1DDF704638D85F1DC0B5E6FE9B61A2A131AE5E960BA167E46613343B22A280E213B7BA7F020534 +93D4BB6EF8C6B9207BFC417D4F94761425A4C8A1A5F78C1184B3872F220F1402038FAB18046210 +FDE94DE175C921C9029380963288AE680A0CA8F4565D15B927FA7DF6E968141131C7297CA1CF34 +9603A84F11BD4D5DD1E71EB72B4F975993E6D4CF5F54FC1FD3FE667F1BFFD085E5F20EBF389EA2 +D619FE65CC2CCB6FBC43567F47386A65EDA1A1C1C6E9758A6879A185470D3AEF95317498CCD576 +00ECF7880BF1BD83B2EB150C61A7689702ED0B4802ACC2BDEC7BCB12E1D246C0C208C0FF24BD83 +B3B7F1933689ACF4764A258263F0EBCE6E88DC0038A3C0A78B26FEF84CCF39E2E034C72FA4F7BA +3067B32729A2D4B2A1E342E4A30EC214C72B983D5FE55C60C8B9F4F36CF6C178120536E62CD1EE +6E7F79C6F7EABD5E0135A1277F17C9E263F50E992D32EB92143FD51F8060AC1A02C8D2C7AD790D +F3B0CBFBC61FAB7C118BBE6AEB55550E49686EEA133FFCD3EDF7F1DF36FF8C32B84796B08E76FE +C092509B7561703F75C26307D5F662699CB284A9EDF96C03C3D82C05730C3D8F450553445D7BBE +BD25E887DA0BED0597EC73A42EFB4A8847A135D7C1796DCB28DFA21C23917BCCC7E678AC7A867E +AA45AF963468F8FF209B824F947569D035EEC7429866F2D73F2D092307174F0EB20F683077849D +A4F062DD441A10D00BB13C69DD08BA988F68544DA6A774CC7634E2F57355304D597142311978FA +609280A79EE12014BBA5D4AB2DE690422A7DB0F2FF3F15E0EA60CE62F33F413773DB2F23E52DFA +F184AD26EF0315B1F5247E315DFFBC606DAC09E6801CECCB6CC4600F37678EAE5166B4B7EFF342 +B4C233D67B909DA1990E3BF1FCC76EEA2BB089AE0DC381D049B382DC58419B1A8F942055AB7891 +2D7BC346CA4460BA843C8655E1A010A03C853A9B90E8B004CB0C9FCB6C3467F7F351A9AC68EAC2 +A1F4825C2AC4B90F49B8D6FF03B1BAE515CF3C06F54CEBD46F365BD5DEE9342851F3949B4AD9E7 +0FF5D13F1467AFCC171F051DFAAB8934022BA2AD0B9298C245B6AAB2AB67913D95EF7E2AFB2082 +031B6B372BE4C5F73FA26B16189BCED26AEA74DF1F35A8A5011FA02D8CF7F2007EBF8F66303392 +1CB2B33536594F296632A7744AFB4109255671755D35D7AC950DE4ED65FF6F506FEF0441774FE3 +8D3F3DA33DB035526A3B6D5D6842366F954F2E655A2243DB4E6E59198996486DB0B42A677C8C69 +47A884FDDC1B93B5A92BE1C006A17139C45485F3865571F420F8628CF47DBEC47DEBEB6AEF3F2D +CE9709FD9E20E930592881E4322854E38B39B7693300293869403D20F32ECACF06BF0B169AB8D7 +328C618DB64FA68BB2FF0BBA60196D9E8A1198DB0835C43B2A8695C8FE9F5D0F11CAE814A57E30 +C6B6297029E471DE8A0173B051A41407EA7DB59382B735AB433FF78BC5AC60FAE395889C96EEC9 +F64D418CE460F9562D025B40A0267BB257374EF76FA05A5754E737EE783E17043B2468E09B3211 +E501FA42AE659556FD98ACF8692D900E2C826473702E4F91C1F528411A34DB6B594C1EE90D747F +24E7AED10D4FE463089FE7FBFAF8643FA86B5616ADC78FF1271D47B8C157B001688C5ADD277DE8 +C6BC936650F1AB603B45ABB435D37FC3EBA6976F16982701C4BE9B13544FC3F7C7043564C470E1 +D36B4787635A5F57F8C09263E0C402771407854FE81CF8A0E1DA31A58F073AB0E209B69CD0AC9A +062595C94B4E15E94C106CA20B2E95CF93119FB18BB61A7215A7124B86939864271FB2199C08C9 +5B3239013C0C6F1AE03E87EE0D8D2E9869994C68DB35BE7DBCFDED23AD60CF5A04B7D28C8044EF +C46B99BF0A577FDBA908EDD70540952CA3291FAB3C7CFA544C28040BFD1B6C904B5A87907F1406 +08CA4214E543DE95CC604A6E49AA418B3B58B670AC62CAB0A7669983F2D97D0F508DBAAC6CDE0A +0B8657F5544474FEB3BCB9A282905E4EDA677DD494711BFBC48027B155A7437A5190CC8420FDD3 +DA4430CCF2C87E89D71AA64F647F81F298CE66CB1B4DA199BF258EBAA7D27D68EDEB6229BB539A +10DC92FFEBECF0A01FEDB682FDB79FB0FEE6E519D245C0CEA8E4269C4CE45E3EEC498A42D363F3 +9C6FD3036D0D53585A1D4E7227FD6EFCF7B4C94B431C16AA26DEC9DC7CDC0DC500856D6F65A65F +FCFDA676910B8D952174263AAF54AE0446D57D8826062152637D04CF90757489BA59AC487285CE +9DE66E923B26279EDA3B89D83A1B1FD9ABE060F8EAF1778D4C328CB0917B1F1FD1116E6509CF09 +CC20F41669FF78FDD3DB88AEDFC31E3C30A912EDD7D17EA3E9BFB595BB7A76319BA8558FC14581 +CBF31471AE69BADBA31C58D57CE051C9F9618E14AC6F0A8DFBA47248B53DE982FECF91C647CF69 +77957297673BC28E2E0E583BFF6D1063AED9A01E45FF73B790755EAF8654DF7DF5A63CC82F0EB6 +1D2A71F279E771C7417DAEEA527A90CB1DF2B9C72310DD76F2C19524629B4D4A4CA3980D9EBD3A +75A2DA22D837A2FD36F9B0192122B9498354D76264C6270F66076CE3EDD313100D0B8BFD3193EC +1C2196A1244854111AB83EDA4E362E1C8C3E62FD78716A821B7FE1110BBF0599857DC6CE96A075 +F0E70FEB9CC53D7FCBB42A1962F21668ADEF5C062744849752D8692844DB8D52DF602B84324F98 +651A8CDD277C8EDF82B41CDE0C5075C173EC71A37EE167F2467C0DEF17B5A16E28FC1B1B78FBD7 +B3AA6F5EBF64C49B2EF5EA9712EB3EB121FFE86AF9169556C02E5487EE59A4ED2E4A4C19712540 +195E3955E449C874BF520515B01749B033D76617D6633A6A03F6FE140A1985B081B39E3173EC40 +34FAC0B1788456390ED60CAD817B08810FAAA1444364046AB43CB84D021964BA1409CA60BBAB06 +5404DF35B6CCA0845DF8CA51F968CBF94141546AFFAC009D0DCE4441E151482F9F3101C06F1641 +24A8188513C07B07FA4133D7F04CE401291DA8F9729290A51DFD807D65249A4B4E314C7167E917 +7D3BA99D21FBA6D6B1A31AD24167E59B58A05D241C9FC1F3DD5B929CB5C48389A4D650255E808B +6F5418333A1813EE944408A524C49DF1170224400DA6092B1BA1A7FD45EF71E1146410AB535384 +447931B28A3D64C726AAC1B877157FF26529CC043877FBBCA0A5E2FF3D0592E22A798BE23FF7B1 +C7A8E8AE21A3EA3D791D2EAE4BEA552BE1FB000B8E8FAD6D1095D4A1F884447CF51E0780DB3B93 +E32F462FE5BC689F23D1447C841A05423FA0F340C9A674978F528B32E1CE6512B5784CF6D5AE90 +0437503A7E6222311966C8078DE6C736A48D9A009B0F2B7D594F87BFCF0B5A361A5FDF8E318ED6 +B3A515C537342221AFA46FAEF95565ADBE6D9708EA5862CABCC4178936C3A6959FD7DF67018761 +04F63CC7BF6A41E79B1A454B378AD4E2BFB4269DE0D0805F114196BC6BB7C6205191F3509F9C10 +8B0D0DFFD4A4ED8DD1CFCE625AEA8FCE807C1D856C2AABC9146278E588CD440B40907D1982C21C +AEF4656D24934D137709260AD574F6138AC7B445FC0ADE37A071823D79C4807944FE3C2B4ECA8F +74543812CB47C89B9F87A7DA0EFF11502AF449A36024446210D9ABC501FEBF40B4ABE6F93FF639 +4B99C0989872EEBCD2F5EC1A124CDA34D50F0CF8C13032EF6135B65AA0182C028076B1674DD405 +39C7B9148CA83D45931955CB0D8B58A6B42BE7FDFF60D11232E1CC2918479B3764DB3FEC4D3C0F +CBB5A29CF704DA2F6A15113650A1AD301DED8A38E79F030ECC3142A5FBF822F693AF94C2AE0CE5 +66DECAD7E3E83789D9B7A1215E012FCE31714D2EBACDA26C490501AB453D03AB11EBA0EC2F3D5B +D8BFEB71A37AEFAFF914023F403701E92A7FF7441D12088323651EEB6B8DE3617E5CF7666CAABB +1531174377188599D7FDE8509A90C3F4FCE9C30661E5D12A6E5DE920FC160AB278677BEFFCCA86 +37669E321EF6A44A6EE7D543F334D2AE9127C7D133A32F7069F2FBCFAB5B333561F4EDE5A7E56B +C3556BCE8AA48425A0FD7F167F1CEBB1744564EA2D08CF11F7C84BE57719E32B5C23CE4B4ABCE3 +4B6597B8D488BC460CA6D811525D0726D8DB56824DCF2CA2BD3BE0F3E6DEE187904392C3062840 +7E34D4B5688D7B9F07301D7D9C0EF8128B555075D4D8B2AD41787F3C2ACD226D31BC85807C9119 +D2F93CC846D407D7E469DC566DDF304DCF49DB50E43BB30E47E783D1FDFDACD15344E75469F026 +1C364A90F44A61718C0790CDCE5E93A50AE475927A819ABC582C49FE995E44DCBDE242C7C1D67F +A33C2119B87D981D848FEB1640C3D84E810320A5B2BB404D5A2B3C29D0A16B799DBA9146F34A8F +338A6C815F025073AB19BE766F412A71C1B78583B2CABB9301A05956FD21DFA21F5ACCE764AEC0 +0668948ECA4D6D6175D61C8C234FA7E425DBC54E21CAD7B348467BEBBB65BAFB8947A0A9ACCA91 +EDE384600F02D7ED8A73E5739117099BF4BBD09F059D81883152CEE2D72C7069ADA47D8018DB88 +A0373C53589EA97F82616ABA1BA736F0589E47FD5105FDBFE1969127DAE37680DFD57F5915D68C +BD0D9ABF0C5589FD7AF8AADF5BAB93A22EC6DE22D05C9F87FC266F28B901D2A3AA4C008D0A70D8 +0F571832FB252F035607817DAEAB962BE00590B923C95833E67270B8A8330326143DDF7B29F4F1 +A7B8C593A1988BEBC2C9D7EA58D198C500993F3FCD8577626559578B31BC7BA8649027A97EB0B9 +167B0D7A05563AE962FDCDE09FE97683832B4DD78C328BBF7C0211A12EFC63FF46CEE77CAFD5CA +AC1D2ED6127685F468D7E1490193465321D253949A93C1940DC911993205F1D7B1FE740E9CBA14 +BA2236FC5F3890A8D0592BDFD006786E506205769AB47EE62F0E30753FC51E4295AAAE1CA3A9E4 +15659FF30AA6491B63AD956F873F183AD44E2348EC25BB76AEA23AD745BB504AE2BE6FCACDE576 +AE496228D4835A5626DB7DC61B3BF0E8D9ED624C21F737F4889166ACA83F442B6D53F09DE61E2A +3105B72C8B1802E24A28156F554C4B5DF270E1C7AF6488DB550B7A5B379DFB0367689DFF6ED457 +58DE38E2F5B63ED6CD3291856677FA09625FB35249DF24D7F2D7044FDAC8BA75273BF0FECD51E9 +1CCA4A648CF57296EA3DE777C268AE63B13DA03586F217DF758166BBCD590FBD212328B2EC4A41 +D44B61E80605349C51B3C6ACB9AE6E07E243A18D7832B098F258CFB560DB8134413B9019A3DF65 +94BF7DB8338F109A16EA32F1B03968E73630B88A11D0EC859B2BFBC3ED924717597E3BCFBEA6BD +9E1E9A5059E2B8CDFC1F3D2223534E770D7086591E662BD4C81C045B14AB1CAAA09880E846B365 +C904AE4809F10F0264218C7FDCA71EE82D883DA74928CF16A09EADF5CFD7C76FE94ED2076F1803 +D443A1AF38B5F8301CB3ECFDFA81D20B7DBEA7128221275860DBF3D8A3FED566AF92B40266BCEF +F9793294DB56F4D74D7BCCC9F9BA44106CB44F5287836A486B43132F4C5E5A27007A53DC4400EE +3D5DFFDCD16397A6C481F6AF73738452DC61106F487F763FA4436E5AC4DC23DCC6F84DC9093D5A +5C82F2C2BF0B927BB8265CC3F6287CA9367EC97BFE94EB63535FA774A39F47704C93158FD6582F +86B9BC4D48667CE04DC667FAA5283C07C3041246CAD928DE747DFE2C21856EF0C039BB0EF0EABF +7A17BC418211CBEBD47E2982361A75A46F1EC6BC0A40AA733C2FE28E7CE86736A5B7FF5658E00E +8CCDCBC4B66F304D13CDDD5B90D82CBFFD03CE2DE01CE4CBDFEC5701697E5F465838728630D760 +289DB71A23930ED3115FBCE382B1AE95F18FB8692BB77E5AAE4ED869452B89BF632FC5A4689594 +5F8C9D9653E591496AA4F4CED1F8227CA8243F7B29638C17D9AB8438F2B6EA5C1B81409FD3FCBF +BD2B9D9F83B4CD7D4A680BF87842F157CEC2DD028C0CE7709171B07C377718E58CE64642F0D3C1 +8366EB511BC5E4485FAC12BD70B7D95216466267367C9DF738C8AE8B379082200B157FDFBE0E1E +6E2068D9820F26FD13EBE2A2159BCF2AE8DF7B1006E556D7D8ED665F922DFF0C72432D81E16490 +7194E634AD30E3C13A8F8F7F2B289E9001F17244F0281B5A50FEA63C512C5F2C7B4CDD9A34C1C6 +BBB4ABA01820CCC0CA7EB20EA5F399F2290507CDD3BFA1407BED22589D4DC8C1BB3A25F6E83484 +FFCBBF1BAA68590FB6A133AF455F402898202EBEDD3429EE46FF29424E6552AD2490A962347D46 +7D18E1ABFC4ECBA9DB6E77C7B6E236BC1503625FECE1ACAC8943F6BE1E3FF1F4C72F3EE11648E8 +5C7ECFDBA7C9A8BF03AF4AF5BFC22C0ED52B5A1F844C13706A89989CE0A79C0F2646FA20684301 +0826DF99B0DDFB7CF956F89794DF019865673B4E27A72B181991F6BC4502FA0B9DE72CB0CAF9C2 +6937AB754A252F1D2C21F2A9425150172A02A03799091D5763ECEFEB05310CAAE670F85F2DE529 +5BC2470B089F4D2EAB0D3883641A92B11639592BE8BAB78D39EBAD088CB524ABDC663BEB937E25 +62D73A5DD0FEAC9EA95857A92E49A987ACDFBC70AE092DA24715971283B52B82A7CD6E7A1350AA +B515A1067D03CDD000E371906225B8F82C9596A2A33D843F6D43AF2EF35905FBE2C76651727477 +DB699104194B8EA676C38602A975FE8ADA245572A312A0784CBF350625908E3A63EFAE61EE3E5A +DCF4EFD7AE1E71C82126CA01DF440568FC93AEC6465FFBCD018D9757C5E14F967F5939217CBD71 +0C40330B08F857212A5055735C5C901AB5B95FF9A25FED4E7F1806F7764244F404BDEA3B172CFC +A8CA5202B33013F7FFCFBE6056E08BEB8934AF5EB8738F55811A906F3E58E120960B3CDEE821F9 +1C45E309CAC13F86B2B8A9134C2B54C7178A103BD63534945C27075FC028AB857E252B3D73C3B4 +590C969D20AEA11E85AB56B0AEDF28A17E70DCC2A2AFCCCAEE5F775FAE4BD32FBD8A0E4C42FBF0 +E240A3DD100B79310811873606501EF45AAD874D4FB72BDA048FB26EE4DF9465DFCAB66B267359 +950C5410FC7E4C754D4CA00C0D5880EFE87AE3F8C66BE1D299822AD624DAEE81BFFE4644EC04E4 +27BCED324867BC4905BCE69148912A407AF31814B1F12FFE073AB5B9E77AE9ABAC47CA59EB4923 +169180E999D3EA3F93FBE68D074C6504505D015440E60CBF7CEF648EF817E4175D934CA1DD0601 +AA6BC8FFD75589FE6FF6994C7ABAC22A1F830D6A259A2731C4BABD2591A314F082814758BE1898 +7DD95A143164F303C93B211D8737A7506A190D628F761CBAC5A7A895187678A6DE02CD3163381B +0C1DD226947182B6B123AC40B98EE7887E7F918D38CE750A8DA28388828A9D5AD2DACD4AEA92BE +A9B09F1FE38272AE94199F358CAE518856B5A7686EA66AA842C1BEDD8260F9A3CBCAAD5FEFEA75 +7C4F2B6F8E22B6AD2F18074E33C360EDDDF43363FD8AE5932B5DB36E0F705C3653115BCE8B684D +794AD5BB056DD2FEAA61F43554D5B5409C65CB8658C1CCDA58E77B05A6609DBF86B3278E7E7AD7 +AA425E1D3EE338A6D7269FF59F1BF672EC1CFF33852C1BD9536116627E2CC92AFE3DFB2426A78A +62B2C4C8FBAFDEAECD36C6AB224664F1A9D0900664C35AAA88C69515ABAD780EBBD2D479DA27E8 +C46E8E36C8837E7433BFFD9612A5A95F89BF47845EAF6BFE8F215A88793C6CBBAD5F0046C9779B +10EE299F48F4DAB0E337C593ECE0585F0E3CD7C55EFFD61EF5517C54A0FE5800B1866AF8EFA01F +B0B544BEA7186CA4F9370ABC2DA372555BA2333AD4C6636A4EC6C9CE6427CD09E76A89941D68EF +49B5CAD3C0BF5DC326F6ABAFD96383F4FFC4C8FF470924F79E4AD0FDBDF57077A3A1B18FFFCE34 +8F08E3AF9AA061033A067CF9496913C533A6E5D40C9FB5C14145A252D94951C69CA420821CEAFA +9603C8474319DDE814A12905B17DA7829D569C511D985ADFE6B9DDF633951E62CD1F52085A70E0 +2ED6D8F3181BEFD25F131A3DDF70A2E1A43CF6D3FBCD415AF990A5110F6D26944FD5296786EF23 +A92C79A089B2B4BF2C856B31F8043A4510FC408B3B6E519606363E3A87883DC2EF50990934C9EC +9A31869FC86EF5032FB47F10A85BFB45C6A6857A8A0AD65BBE29CA9AB58D2FF7315A07027DF41E +68FC08C8B129BDDF9EDC34C0B0B90480ADEC2E91D9942DC1E3942A29CF82BD1AD0AF7B902E83BC +E244AF4833C8415745B0084A4B73DA376896C9B54291AED5B7046A02C278CF3465972DC2377274 +211B55DB03073C058D2B844B04B0E0E98D1C3E0603F64B94618E9C6788B14224CA937290805877 +2A67ABD0A2B99E7DD81BF263CCDB17326B874B868253D8666F982115AD0BAA62C43A94DB7EC799 +888D9C132D3315CA33712880A1C08D1A8EC7EA7600F33B3AC6E70D6A5E468C239F4732EF9A56AB +EE53F2C3CDCBB4B1C168C1FD780FABBC5F93804ADD9F24201C11B516A0475C5CB6F4EC64BC7472 +0280EA4FB81CD107DCE08566F355CA2AB60ED3A62B7B3D965695BA2D364B43774718D1495F37D8 +BEEA58D19FC531457A0C4E1230AC5A68B3F7C4F0722BB7991FA6DF9FEF362506C77E29DF9C1055 +99FE9BA8FEABDE0E2DF3068203B8FF5FEA86AB8925C8CDCA35CD32298BBAA35201D33840B08E80 +4ACFC242B3779BAAAC6A6366531E79E4E91B2B67E81BEBC1BF83329D538B4943DD443E19DBC9A4 +A63CD7642615370719E7C70B3A2B19F7D9C00ED65F5CF58DD7C4E471EBFFFA3BB8C60F6A01C1EB +6F4B62EE07F178DC865A985E1ECEE1A630B3373DC182F63768899855E9149049963B51B2EDE249 +09BBA26023455AABA20051B21F53DAD18D3C797A8311C2F75B3C66815F3E7ACB78D21F22219816 +0F24B299AA85AD06E4F3187D6DC77B0BFA6C508989F146ECE73AF20FD271BE065979DD0B860DB7 +2665D2F4BDD5FA3A476CDB4905D65C69E48BB2BCC7724C226A3DFF07110445EBD37A3354DC28E6 +0615CEE80B6D7233DCB7B7EE93848CCAE17C6EAC4ECEDDFBCD9FAAD95A501436C5461156A5A6FE +F874DDF43BA843641734A696CC6B3CE7F1182495FE47804CF676F13E4AD3F8CC40FC19065EB4B7 +CA47F69CD3CF18786F631B7061E98AF2F488D1DB1B87B84ED5B62E07239927DC4E60043B981160 +BF957F62A6597A21170A89E833A749CCA04FB48F08FA3477DB78D2913249D8D947CDB8B65D44DE +AC6AC744B0D826AF0B8CCB905D439A0C237744369A53C88F56F0D057E97945A9D8365CE0133D96 +05283E90897064DA38C8E8815DF477E5B21FCCFC06DAEFC570BB3040574D7A403D2AA1302681F4 +4CE0A86C86C1F66E1D43BBF9F11D4C2FCFEA4A0F651E2C5FC762F8D78F9FE2306BF558056054CA +1104003734B9500FA0097080CCCE7A7F58C7A6F34217D5ED987D2A342ED6C94F93DD29FB539B2A +AD3EEBBF1B9589E77FAF96EA9560C8F3E3CD3DEDA62FA04C0124AA516AE534510B63DE5C993D0C +AA7F02D48B7C6794E99ABD135E4D1FC8EABD88141D63D336763783DBFB54555D4B048977C4B3E2 +DCDC260627EF67F92DA7E40210E00F239E66A2AF0F35D21E04D5D2AFC8D1E97C8A9E41FB95ED87 +F9EBA40035D0EA0F1B03AB34B09A9A594A26F50E99BB350EFEB509581C75C3C80CD4DF6D3B061E +EB93757B5FCDA97780243538DD7DBADDA8EA7A01B6142C1D3A5FE4E2E56C73DCEE7D1DA168F683 +1D4A48A71208D1D33745345DDE9B8BE1CF2FFFDDC15D79A884349832DF9C7232B3D108D7B5491C +FCB227038E996FD259D33FB8AD615302423F01C17F001C3A69A8E3D5091D31F15315AD3CA281CB +45D4EC3DFDCF441789DB63F5021B622C50EAA12A95A976BA98A434B32D43471CA360050B8B07D4 +41C70A3D372B04589B2B496B969A9B4860036400907AF7EA9F5E88A37CA350F43D2DB9035DAA31 +27E76B60CBB0C0D7DE13B56F160DE4A32F426A1F6E42D8C44D4C80679CD8C98152AF89DB4C08E6 +0C7085984C0963EE0F59F0100FCF233D1A39D1A38A396478DE6CE25306E0640B654087F6145077 +00C03AAA7BB6CECCABCE84A4C054AFE72793AE9DCC94B0BC250F7619CDB43F592142B520AE7941 +0AB466B8C69A435DBE5BABE475E4BA2F2B19BEEC08FB9D918408D719F0EEABB7D0F05D524434FC +4B82E9D4AC9B6414468CA6887785F828E9C50AC1477C64A6FC57B6D409590868CBA6C1AD0264F7 +852DE591B4656A4DBEDA3F7C9EEF007D7F94C10E33C4AB758AA43888B71009CE055589672DBC98 +5BF0BAFCFC705FACE6604A1A1A4604B29C9C49AC7420AF3EDB7924E8042C8FB6F470FE5167BDB8 +261C8E0357D6004DB76E2BA3FA160D299CCF0670D6194D4AF9348A66EC5C166B398C39989A1ED5 +F7664198AE4445E9B16051A1F0A7CC3E25A8438065A176CAFCC8E24E12E49C3E7F995D914FDB75 +CDB9E4BF0D1B96E28AB240C59510871946C9115285DB6E5B6A5CBD7CF1D9D70E7F3525D79D853B +19B06FFDC2F09D175FED18F4D6099CB71953476B5FA95976615CF18E019FB16579DB34EE2CEE5C +0B3A04DB169E4BBCA63DEEC71CBEA6FA427779C23AFC7FE08FC174421454DE25CF8F3BE3CF6FED +94A1C24F0CA4908CB269BCEF1BBA7E158D433EEC3FCEEDD0C7C701090B6F46AA52E99B8DBFFB0C +3281D18B6822CEBA6E70A0E2274188539AE685D559B89C9F3C2015116FC03090E2B68688137D87 +DBEDF725AA4199078536B7F6B5F0F89FB8993F31EB0ACE76A4C85E6105959776DD0EC8EDC3B101 +C52EF510E654C19F0F7E059F585A8ABEFD25B5F01DDBA78C82B4B53BB1173F2AB10DAD034D7F80 +0665E536292652AF8E939A3F237284BB371D4942A05D9D478BCB43BADC7C5AA044665F995CC678 +5BE45E96C8CEE12E312E911E7923602A58E0EE8BD0D6C78A7CBF78CAA113860166806D85315FD4 +5798D910E304A909E0EEC29CBB322D8C27BF417AAD0C01C19BDD63415ECE01FE1A0C8E4F8E445D +C18C969ADB4963ACBFE25DB7097F376FF7F984879BDC71A8361103775B9C890D15D0EB24E75188 +D825B9C4BC34F1EDA425352B8C2270BD925A99EA609B2338855F0C9D941B872F75530AC00163A4 +AB4C4390CB5D29810DA751AF049B62743098F58609CB5758248E1EE442C886D5E30705B79E67D4 +7F91878924597CA3F5ACC9DC7F1E33B4B2C5E30A3E96F7F1FC886E69B76D8153F17AD8DF50A04D +A8A856EBE57BBA83BFE556C83A4B535CCB185DB2A4674EEFBDDDB5F467A190B200AEC41BB8A5DB +5192CE02948FDF0231A7612742B193BFC95F7516C5C45210AF2FB79DD9233DCB7F4365055CDD3F +35C32D32BE603BADFBFA3E42AA31495B2468E35BA10E1CFB66675AB207995FFA65BBA3C170FCD1 +EE6089D2FEFB717770862AC4BF9037778EC3CE607663405C2894565B3AE1C2BF49D628E7AA1D12 +211A2D8F9E7ECB6907479EB581AC2805F0866271BD59CDC0F5733C1FF9AAC5CD9A1C134E71B179 +D364857C8F38D84A9489B3998135B731F105D75C5709CDAF12B10FD29F3416C35BD18B1B732AA3 +1AA9F1407243E1BC60827BEDDAD46A8F309E4AD0828580CB3A54AF9CFBF16F6F0F955B640964DC +F03D3343FA878BC07F609F31963E975454A5C2C66ADE9CDB0D1B4676ECFB2838BB098B48580C6E +8B9056A99F382159D46A286A741F2CE5A07E8BE7586AA100511EB6F080FB059976F48B52655E00 +40409AD0DB39F61A0A13DACE4EEB39B6D9077E42CD5756FA90032559C1EA131287C1DA18FD68CB +706C371C5AC4726F02A966AD4CD8774EA1464C027E0D4DAFE5A9267A2C2E2B4264CC9F55616270 +604C787F5CCEC8294133214A3EFF7E39D1D98F34EF9CF09128602C119EABD5346CF0C2AEFE7579 +AD815FF6318C24CBB548D202AD9A9894C7DADE7415655CE804B722C489F74C3A47F01CCD7F4E62 +035BE469F78B26A06EDDF9C8DD66880D81C50EA866ABF0E61C071F9C68F58131DCE03E6A9EBE69 +4EA488FD04F6C6779A79AFC9AB33CD301EEC4ED934A5395D740BD190D66C13E2295B12F69C10E6 +087634A465232AB4F85A4B89AFB6D4E655AD0A5062C3CD6B56BC2E803E1EB995EBD93480EB8843 +AD91B2335B33EA0E117D701785B1BC051D504E03D7427C884CFE21C637422E9105516C846CE0FF +01420B4DDC859A3F88586234207B2770F42CAD5E8A2EDCF70250DB905DAD6460B6CEE2AA467F63 +F13D0AAD48DA12CC8F868E081281FE43B99FDB1F953BF7E05296D638BC8CCD33A4729361B366ED +E7C35A3AE0E0EF62833D4294CEC817AD19B99AF4CCC8320D78AF2D7BDC2419C0ED6645325D1326 +CDFE25A7D78E378B2511BD89A56266D5DAB1CDD560CF18C4D2944AB1E7762D5BC0C663B8036426 +F845586A6C57AC38AC5DCEF65E921C97B9FF511396EDF56FBB7532F5674939D373DC315A5DFFF1 +F90FFC272D4616AB3D11E5BDFE78EC18CFA488D9270DC68D4D4352F718D054CC6124625B19FEC1 +406128E9E7C925D39B45621D5C52CC575FDD35928D4750DC45FB9E130AB0B6540E7EE3D3BD113A +257824652ED45ABAF2C4C9F2A9D1B8981DFE63F5869AB516E515399D8E30E420F3C1B249321812 +2554CFFE0ED3A7FC0704E7551877F310ACC007E40BB9FCC3468CC12F79EF96F1E2164C786E263D +28F601E5275BAADCD8ED2E2D5763EA997D68C672BC22D07E4338ED749ABB57E8C14301E2574AC0 +519B32D03D18158ED2993B6F1560F81416354F8ADF3D95894435BAF5454BB29264AC162073B0C3 +81D99974F40B306E95170AB5AD80DF9D2EF1ABAEB63244C0374FB7DD59BBD8257CDE973BAFA91D +8064B47E015FB8FC4134DF2D39C2294F32CEC590173E150F8AF490AABBD4BA4F3F28C990196658 +18362F3B26C5663D02CD9A13C8F11EFA2B0A2141CEB588357171917B1FF02858B3F3DEF2FB0FCA +3423D2FA6072A1CB2875364864252EA86CB63D42C263D154A2D7E6DE6804E7E2C1D362D18D9246 +B92FDCC5FED1382B3BD39F76CE3BFE818049D4614BFDD478CE888CC2D0B39AFFC8323AEE04EFB5 +5AF138858B99D5F63C214361C30B6D9B47D7C077021E3D32E83F300E58EFA4C64EF1646D52A576 +9628E796ECD2CE44F9A8CAC886CC2D3A5304B710858BF4F9CCDD0FE2DA75E814242DD38AB417C8 +AAAAD930F5BAB2A6BC2B6945620BF328540BA9B40543647940E1FDC7B2DAEF3BDD42E47EC46889 +9908D555B48312C7FA8535C55D7E29E8DC546669B730424AC9AFA83A72B42EC45D6B7B1DB333B8 +BD64ACA315948FE54192E8D6A8CF068E92E3C525A70355BB9A8461EB4030349786CC27A65DFB9D +A2E7932640DD1DD7D7680664E2299D97DA403264AB855AD86ACDED626819BE325F3295F836B286 +7E6259F5A1298616D3B9FC807C4B2C52DA96B1B20CEDED29BFA4E589F8529E5093E3345C9F0B9F +09D22A7284220619558D890394EEDCDAD04851CDAFD6D861054C733E978EC4421C60348B1EB9AD +6BC94D7D76F4AAA19E22B5DF9DBA06E8B4A510541DEBACB40EB167B873072D597C4D9320D7E434 +03764EC48DFA340C88CC2B93EF834F8E12A61D6F3AB5524EE5E5238B6E594A31DBC459EA9A4678 +458CAC5FEA09AEF0DF9B433F517049807596B311852E95DACF2D693CC07FB6D52F3B8C4D71B539 +DE46169F5745ECAA34C68B77EE74C0DF8037AE2EC78D163A0F4DA3590B407A6F55714720B0E905 +D60F6775C0AA3F6F7297AFE8DC8458159021748BCB7B0961F12E9840133EEB6AB29854A749A06D +3D4F4AA5BBDDDAB4A7B90D5E24AB5D68E448BA9C23BED8DC86006A8CE82DEDCB2527ADCBBFB90B +2B8763BE0F1336DAF1E18A9D61358AB5FEA80DB1E21B318B11D14A4F673BAF105955B961B6508F +D50D6FFF267BBCAF04BAA4E47B34917E7066874AAB4D2E77EEE43C2BB8E5EEE53A83659F7B17AA +F87745B870909512AB5011A7995184169061E9C46C6A795FAD18B11BE94029B0DAA5D5E941B8E5 +AD2D6B85675A1B46CA90E2323025E6C7DC2AB5341D196D847F9F99D4066792F61F9EF3BDDB987F +1262FB4E68D5CB15A7E9D27B5C55898EC4A375E05E91D64E5B7E45ACBB75A43DB89D719A5DACF4 +8AF67569E9C73BB3DAC71933735731CBB8D22869145EE00A3DF5DFE7F5B32BD63756436D68F93F +5DFB45062463109ED68A8059452902E987C995A9C7E8B76AD466BBD9F3C8C22A9D4A9568B65F7E +A8054E24D1FCCE36A06A54F777F7385FD9D0EEF4DEA53537495488A5BE03950A9447F5D79EEFFB +F36E67FC2F8A571E345BD97B6B5F1130A290BA0478ADD1CEE88AED762B72AAA7DB14176F28B86F +B0EB2812E641B10CF8A7A6D7C1776EA7CF4D1B0AD9C9B41FB61F76A23065D24B639B3B634DF4A5 +352222CD3683F821342C1A03B30DB7933DA188F31B761CBC6AE190917F4788661112D4FD984A52 +CCA960F3B238FE2CB447EE6315D5958D372EA0E529E682CDAB1EF0615214FBFFCD29AE78355757 +C7D05F888D57E64735688D3A11F3B59AFF742B3066227043E3B4A9A94A852342702AA4A8167444 +0DD569881A342A068D8FDCA1984E9BB00761809D18F81EE0046AF2EFCB5F7735AA475FFB2E654B +38C5ADFCDCE37282D790FA5CE06C79685218939D8F4E9719017863270CB08548E38ED4DE3CD01F +B0846933A9105EF69920AE572A932862DCE65CC58F58E2CB8EE127D351566ED22BDAF6E76C66C2 +D2FFB18DFC068EA337F572A1062FE80BAB597B31C6F19B4DDC117E0F1E46A0E1E7483C540B3840 +969C85F2C4EA62910D9F0395BCF0839AB34D51805CF48E7EDD62A7258E682EF7865013108F517E +2178800BDA4DD72AB2C96B5B8A02468E20451E2175A0939FA8F01BFDEE1C9257945904CEA28E8B +3F1454BB18B2AE069389B82A0D4D52178993541E7DBCC75D42011A257F3DC402DCC81529003241 +425959DC1E3C1D99B5C4C267C626844DFD3EDD89F025F784153992B1737FAA9034E14750CE17AB +DFF3476F2F176162495081861E12375A38AEBE2BD3401FDF62A292AAEDDDE4706CB60A1A910C1E +D73908213096F3BEB88F56BCAAA718E4ABA78CEBA155EF00C4DC50FCB8B139A762AB7CE2364A0D +71A1C0FFFB846B186B4436A50E7C2359F6579A68A354BB02BEAE39ACC57FA790A11DBF29FCEE84 +8866A06848D29DEEE2AE43DC09FDF74D5052870267718166E8C33A3EC9BC7794518B4277CA3095 +9E9E2E19FA8D9EB82CAA7AD867AA54134D7CB50BCC508FD5EA2DD6552B9C8FDB23AD7526D566F2 +6D6FD67F67F771076EEC9C18416050B9981BBFA7435253E7B3698C7356A8690D4F35F710288632 +905F916A64228291511B2DA796407985EE1639E01D5568C05D51E04122D9FBE54392B345D62915 +5D93BEEB4972D27DE8E6500C7BF27D9D67F17F255187706E237E65D05E99406F61C80F1E7DA57A +4237C99C6E57EC0AC57AF378820074DAB972E30F61BBBE93211B24188E18B4E08559092881F4B6 +8B6C31AB765A8083EED91DAE5A5E883FD17A808172677F854C752AA19E351B404C7B30DD6995CD +CC9AA89D5C4C50AFDB5D519ACB7F0BC5E68C548C679973EE792FAED2DC6E79A1FE598ED193AD84 +426803AAB6A9A0C9DA912889D76902C1EBD38CC4B46025E0373BE5791116F83B45750BA34AF940 +37477C11923E47650D9FEBB135354E2450C859A28B751DE50557D7B50E2688CABEC6DD71D831EA +9B8E763A98685EA60B47A4FE816A13987E17A88001D8A504717DDA9DC6E51F94152C2CF2D3FE92 +2D0A335F0DE498FF454DC40FC17F74CAA17575871DBB41B47037743592753A81772AB4D3A19270 +A7E10C1CDA5E336302632ADCE6FAB52C6200415E050FAD5A251ADE10AA77A5265B9AB6FBBEFE9B +46F8179395230BE8346DC61D9C569E6ABC42A67D49BBAC1A87E67C3D8651016336E31745ACA2A0 +CF990C2671879348EA0900929A299700F408164E7D8F9362CB68EF57E51A361B005DBD3EF8C8F1 +E142D54DC1ECBC9FD7F55B7C8CCDB8548C2D7CCFC1FBF55FC5F76C0A6F50CA628D1E77EF2937AF +C0906CC171E6D6DB053E61C0F3B5C46D21079F339399F13864B0709A06FC5D1D986F0F8C8DD09F +0183D141FE866179201892D41CA9D91154E5EF61BD813CCA89ACE70648523959072255701F0B8A +B35D0A4BA7C4364877E6E3147D0DCE4510C3CB3801DDFD0750004311022E4BA452FD45D6825DAB +4992D56323C0C0AB5EC0FD57047B30F96CDF30367C322FFB691D62DD3CE8604D58CB1FB25F3135 +E89D971A71F4FB337FD11DCB60F8603D369DD13A3E3E4CA9EE784395C0697141F2F3BA5F057547 +ABDC8968EB80B8C14300D7CCDCC8CF695E5C38607956B446BB2EA37B45BC5857DE3D0B665EFCF0 +1D1C06EA91666DBD8B7AAC2F226215CD12BCB16D3E3C263D784C64B2389BC3A75B80308C4F2D66 +9E91065D07B7CBA596B273DD7E80C3777AAD1C8913BFF8720D333F1DB6C6F477550DD2DF7D95AC +4B40C13B3AB908B6823726A3460F5049D8867F3B7EFCDD4E2678AD71A21F0FD9B97E909DCF8AB7 +DD50BAF1EC26F7EA14FEAA4BFE58DE6DB2BCBA6DCFD7081C05C664E414C2B7651FDE70492E76B8 +257841CACD6C182DE08DF75496B719C6BD3B3C4BF8921D5E5045F9B68B82DC29BBF3EFD3DD9B34 +C9C2571B67D7ED60A9546FD45623455A6084D5467FB9F1D84C0DCA650C2E2CC0470F04495B6CE4 +64B77072CA71C7066AE594B3F45B500645C660CA96582B537CFDB33BC83DB0C2BCF55A820C264D +DA22C7FDBF4DF6FE3FD5025FF2BA1949027675A3E129C056F1030C97362CC0361ABE6D1CEEDDE8 +15220E2D0235DB954EB600951E2874C788E75FD412849E985A23993608DC555B0CC1F9F4FB4B76 +98BC84EC2B6663E14D4985847E0F5BDEE46319DCEAE170C2BD7FBAD655971837722B5CDC9F2669 +54013BA36AF5FDC7BCDD4D19DB6FB58B840C0EAC62DA5018A9C547B52128B615C78E2B3E4A1C2B +284723218365DEFC1627F943215A25AA154ACF92A8ED779676158F2F1856AF18A5EE9881D442AE +9C130149CAA480DF44C62C5C30C4C244CDAA1D2E76A58B4977DEF1054A033EF5B75A434050FFDB +F56E3BE1989A87C8F88FEE1E0C5445A3C2563B8459DA7E0E44B35DCF3565D55DD96F9477892642 +8A41F3FC0623184CE06454E50F3E273BC1CA60396B31A2BB40CADA18C679364DBC35A3DF0AC67F +3687261D4CE8D8B0B9838A231A162BB0BD97994C989719269129E22C2C00F6D2E27A30F1C7862A +4913E3E233D6A25FDC4A99CC2F7FA3AF5B36675231EE1234BC58F9253EB97250F9EB6A5337E0B3 +6E9B04CB28B18F6ABF913473A596A624B5D9279815220B4E5674189B80D45492408CDB2A34159B +9E3CFC02D54457B07DC7E792589DBB0780E48E713279E400D38FEAACEEC2A461CD8B021B168160 +8A18CDE5E51786AC2C4C5120D5B2A7EC13455FD76C2BD46C122D89B200E74FCF5A7C38CF7245E0 +4D88C8AB34B1135973D2140119299A345EBD16D363637FA60EB2A2630CBF906CABA49A9947D45B +5AA3E88913A4F6EB07EE8503C1936708FBAB0E444E70772BF6B32B077D85C514A819D82B86273D +5348EBC299CEF9D665DFD7EC28E468B1BBF2AE150F018B2751422F86960D904B74093B1C59CA84 +1337A9B2A4C43F97534108B194A94C06EA70E687517B627EB31C7C956D292F1C903F320EA5DC99 +7BB1662BC1A1DC7A5D7479D65FD48A552AEE0FFF92E4B7CE7D2B4926909FFED1ADE44F766F7FCC +4D148322B0768A7B59BC53871508427D682B6E9BB1331F2C42E927F6419FF0BF764ED929F564AE +A661455C85FDE1F8AA512FF9F1921FC730E3A8A7B8CEDC09EBBEA990D2F6E9680CF1C7FA3D8331 +E33D0636F063EC75A8624D31AE4B36582BDEF4CE7DA84AA16A1D10B4CBE339008D499CC8E4C050 +84EA24F8D817136EBCF1CDC9ABF2A211801B272FC27BB6C496E0EC15970A148F622A2F911A1FB1 +1D3F58826AEB532A9D7F6807AA278BB1A08ADFF6FE589C97643C2683CBE502FBD74E3652A84374 +0144048E10C191F5E6989ED64C6F2C075BF26386226AD28AB966D2B0E2F9B9BC358CA16203F570 +CE5F822E5A6A97D12946A3AF01DD9027B608AA3D214559AECFD3BCD11257E4B31BDB5865888C24 +FF44175DF047FEC3378A588E797B7A9C6D14172E6E05BE9642DC4EC1D1D6C84D36967387E5D048 +02E02F9B9BE06227F85BCC04DBF29C7BBA82C4CC4B6073EEFDBEB40E579D033FC8B08F8C450F02 +60A4CEC236D67B90CA08A9F45BCDC3C4677C40B492C85EB366AC2617342211260215046C544ADC +125B80DEB38124FD22E2A8E698AFCD7E86AAB44B219416C8332C91EED602F7EA9B6707AA097830 +6579E52549EF7DD54FD1F26C2B666CFBBC46874F4AE5373A1A8645107F230464E0C988F6744F67 +C338ECBCFA06DC4008C47ACA9285E135F1C53B13F68DBA5CEA443DFE1F4E2EAB82F9C8825BBA16 +D2BA42E7391C77E4C6DB1D9C2C8622FE29390B12BF9CF4FA14F6863F85B5A212CE8B0714578BDC +02D37825E46A35BCE32E9C30060C6C9D2815AFAB9743143688AC25BCF8872C24D5141F914DE595 +31BBD3F4B4C79450302F6A2DAA120D8581640D0F21B776CEADB58DE38E415ADF2D88B9A277CD6A +B4BB87057DA9DFFFE39F7D26AF0CD8E345166E0BB8CBE3CB2BF0BBD1FC88DB83B0EB920260C840 +B4D6FBAD205446DB1EEB682B49E52DF2DDC0C1021E30799F6F773F54F55263C61A65C178CBCB13 +BC7BA8EF67B67B214E2A2E3B72B4A1B641EFAAB5305BCB5D675B0540635411E955F517336F4050 +505CE9D8F5B9DC29AB1B5E3F51EE4CDA3C7D0A494BF561D01BF6A1905577749A2F5EEBE4908CFD +DE8A859C760967C845CEDE2F0FDB47C22DCDA4B3C90ABD88DD2B0A05ED63EA9EEBEACD77D032AE +84BFF77F189FD7FF1A10102F49AD215367E059E970F51F4F32A946CC26B29A4CE5E5425F6AE015 +FABA84F7CDB785F470DC275074290020313B4835AC71E7A5297760C13A570C97EE657EBFAFD067 +B94905E52E24158E719FDEEB8A0312D2A125F16948905DE0F1BDC9F647FC2D1CDC73CB984084E8 +A98C805F4CCC5E6EB4934A3D55617852C16333A92072E79816040619D6A83F5DD6B70C96C34028 +D8DF9FAAA0F438B5E4B87B0962A0389692E055D531D4A589B68CDBB20714B101692B71BF1610E6 +C2089B4C50252BD5ECB1764758246135AFBEF8DF9E21386C27FF186A141C3CCC4F4E8A9EE47A6D +56B9A610DEE9C532672D5B1D08792C174B260DE3027D30D2D28F3F4B48FBE84EBE2070EB4BE93C +5AF33BEB7F64E1AAEF3C88B2AF4867ED8B6B978BF0CA7961EDAA9B34122125633514807F9E8BC7 +ED918471DA0B1C262E6213E83743E39306D6D40554BFF66689F0B048FF454D2FBBDF1592E4745F +69ACB5510F1B3C6FACEF9980EC10279D4C96B46BEBCC3F9E29303542A216406AE41A6195058779 +4523F148AB196D0CE0EB5D68F486216656BF30007B576863E06D962B461DFD159AC680641E8C0B +D4C2D054C069E3BD33771028D781C3910D82A0E41F958332453974C1E71AA17C6B4A62F22538C1 +70E51933807E343CAB71EF32D00C4D18F51015762BD6E1480CCD3E812568C902E5E2715B965352 +FFC9A5E6FD99184B3E85A9F88127D9AEDA75A2D5235FB4A697DBB31777FF6CEF15916AB8BA8963 +1AFA9BA6A58CFFE03CBA1A04FDB7444BC39D003C34E18955451DEDB9D30C368D6A9885158262EF +EE500909AFEB3F59C1B0DF7C7A2662F05FC990CA2F4E56AD30AE59D2745D07D000AF52D1C77F15 +F8C2E73A66E77034DE9E1E29A3898A15EB389FD6A4EF76A2D47730CB31B045C3117F1B73106A61 +FA6F863DA7F88EE849C5F8E2342A990E2F23D7B249FB34A0E0A2B3520B7703FDA0AD34292D8AE1 +B928241CA8D190F8CDAAED8E00E25536B1CC1D43F7483149C35CB858D6046CD4E69666E4A01934 +E69E0ED021937F81B55FEE4917B6109C047955473A7F82A1878CF98C40815CF22FD3E6967DA017 +1D126F89176CE0474C1E78702DBCA54DD0188418095D00091AE88CEBBC16A023D1B2FF4368A796 +2FADD90662281974CD98F35E4770772754E9F903A238022FFC148930CCBA3EDBF2FBF9189E4472 +E279A9E6B81650D52FFE79205B1444D9243B0E066FFF4889EE5F153898FF1D82257A9E44B0B066 +251518F0BC9FAFB19F1599A307AE055E5DBB3F9C3167237CB7117802ACB346D342D9E9CDFDC553 +28E9E65902B62D0A398AD46127A7D626905E78CCAFCDD7221807F220B67FEAF3F0DC51B236D865 +94564B61976E0FB2184A7C040D41D1FD9C0F392420060F380BAAC03388CF13188B72A0E4C588BD +A44AEB0759AD9C6FA452D356F4CF21EA40B46C06BF667A04D761E0A1B61533D62CCFBEB30AD8C3 +E43F2E591D189067669C4C86A4602764DBBF1D0760C0186C6361DFB5FD19B0EE58C6E0943D2798 +CBC4EE5A22C8242478A5FA73B50EA200102496074720D4FFF52C36B6C88B093B6EB802F3913083 +C6FA8E5272D189308801E356DC6ED26457AD0D8D73FEFADA43F87BB5DC71E816A6947D9AA86E72 +08929F9D47B63BB67E43E5A384076ABFA43994DFEC8166EE5A664C8A89D3E058E9CDD55D6DBF8E +24CFB109E0A2863B5797737084177048250B486079CF88BD9A34778759FAB5C58173C224A8B5C7 +0BC7858EA1B54B013D09416BFA911BC1130CF933DF26EFD122ADBF85EBBD2C001EC61BF735996C +20079AA815D23194F1337642B4B72BE3A349FEE44E38DB284277CED5FC041F40EE0D7B36E79C7B +D460D29858827E07BA03A994250397B56B29953C8CEC487407B9F4C43706B711E64C43B34A47F7 +F4277671604B1141BF6D2E481A02E8F1A645154C5DCEDC68BBDF398D245DD96D884804D88A81FE +293C80DDFD1BF8F083E78930F4F1C748298A134CB42EA93DEC722029FAFFE8D734EAC2400CF9D3 +C77E95EC89F0045002E62DE9803BBBECFEEAE7F9F154A7E576B5A87F42681EDE969167E99AA502 +23E2F216E5D3F13DE29F9E5084950A71B984581CFFCA72E51417D4654C23B2D220B301DF0564F5 +A3F54A109865FE841305A8E676D773286AC1037DFC3E60AC4D2C4198D872AFBC0C35447F10773C +655C69991351D3D3C540339DAD59B2B296EE668311A76407533AF60297663BE62951A78E21DF92 +0509ED51831DA0C0C8A819529CE2F3C89F737B33644FAD8F45F850E8C8A5BB5CC373360676C9CD +6661792518688BB3DCA85EDEA315863B53F98812229D8F7F10D74EC00B8F9C80BFFDA13D98CB7C +0CC5270D0E12748C3B49B43C1FEFF591B2E6243CB3DDAEBB3967AA44ED1100FA8AD74D525C6EB2 +E47A9E18C10914C1B65BFFA1E446E73315E53E9450002E092FBFE4980E1D1E692A9C3AA16EEC3A +6B63BD538816D42FED81124CB57972BF8DEBA2F3DDB53E813EBB552F610AD165446450510F44E2 +2A4B27F8FF0D42AB5938E5F94286A400791260158F806BA335CF4C9F47CDCBD8597601D109B30B +902C17BDD5F526E006C1CB18E04165591BA0E6A462C3575C438082EBFFCBA0F6377E4B57E412F5 +99993E0C34C554BD5BFC64B59FBC5F89766A3A46E4A207F4B96A02D83DA64AB42B66AFFE2D569A +9C4072CCA8120EFEA00F3EE37AD5871AAB09E5BD21E53F22E8676DB4ED7C0106409E3B47195504 +7EB35F4BB52CC58CCEFAC0D93A39C0275D8882A4EADB6690CE1253A89409BECA16B3057A67262F +308F66D00786F6CCC2EFD4F5028125FB46C33E041CA45397514A232C1743EEB9CCE6F8E37C68F5 +03448AC4A2043DC77CD01DD9D634DF0FB5C8D893C20B87CC2936A95A274521BDEFDFAE2F5382FB +D3D06B3517026D4EEC7BAA97808EA82904EC975F3190C4CCC6C31A776A389C22E77E3EC5C9E5D0 +3745EE163D7504C72FC5B763927D2D7F917F481A289FEC914C702AABD3FA8D94036B74DB78F9BF +CE0D2FF8D82EFC46FC8EC40FA7E80CF58113028DB1CCF702CFFDF9A4C12A5F2F2CBAAF438F414E +0C72B25AA596AD9C8529B7C1E6BDEFC58B2B115D9A3FABBD88FFCDB7DE5F987975D84DF2D535D2 +697D72E7D2344217A47F665BB389E7AB6D8C8AA5E02F951A6909FB2B17DDA83B59E1930EC56DD1 +BC23637EF0B057FD29803DFB7AEFBABE1844376632B7DBCBAF50019CBB87CAF70065AE617247F0 +20E95C097B967C5D5CA399B648814B6596E164951AF5028F89E567990CFF3A0D50BFB84F2BB3EE +4ECF04FF0866437248755D494DFBF704CA8FD7A47317B547720E2437640D0D7D007874D9F4FC12 +DC886B6ABFBAF3C2E00F71F46CD4EE2EE027FCE07BBBCFE20CA9063AC09B1F633F5F5BFB509EC7 +5693A438B4047C9E8003CF2EEB04CF01E2774833BBE362D13F4A8A412E0816764747F22FA55116 +54E9514424F422AB46EF4CF86647221146DF03F52EA71FE3A7803527D9F490DBE903AB98FC0740 +19AD93740C2137D0C66AC8173C5712C79F354DF602C353BA9693D9EFBAB1CDF1A5C61390A20D99 +EC03B3925DF1EC909A1E0AD055C6DAA5B121FD1BDC5E821DE1FAF5072B99713753C1EF4590A545 +E785AB60688C3931E487C9BA39ED39A5E6412C83619E17F7D86EBEFB8EB0014E923F3EFC671235 +618BCA650C8326D91E5734441E0CBE00231DEA7712D8934B80F8C8524C9D73CF6E62A18F0405B9 +95F11E784F3FE58094ACC46A6EB1B77E8458002AFC70230C249A991B7C6999EEE6E968C99374A4 +F3BD222367432D10CB58D0AEC4194118C4843FE651E9B44A4B4692C7AB8524A975256D8AAF9D36 +2A8C35C8EE821B3A182A6C29321900C16DD92E3CCE9C04A44ED2548E74B9EC249085D196B5BBE7 +E6191C8836C40090F5D971BBD9FAC95BD773B350A1F829036DB9B1FBF39F6ACE485AC478C5DD97 +357BDA0492D84BA797C6C8483D38FCC678EBFBAADE3437E56974D27C47191ACDE4AC8947C9F4A2 +EFB3CCB7827FFD33D864EDEE4F272A3EAABB3B3FD0E18223E5A7D755C217E39EE612D98112019F +9E8D4A880A7807FC421048371219BBB15E591B9AECDDC5FDBD8755E0017F912262F9851D5B9914 +A60BB5AB42187672613899EF5B7521BD155D6C3909EFE0C62FCDD450BF48E1234E7C010851D538 +0AE29706B7DB5B32C663FE3EC4E116385B4C33CE60BD7A94DDC443A671DFA6FD96AD4B132D0641 +03458CFE9DCD0E067688A44A0BCED30F7F3DD39E70751BA1F96D21F316C945923C196F6DEDCD54 +45547A032AA540C0FA2D9A7FA15A45639468249FC2DF296D81E601590CF0B1D96C26F53864B227 +8B311B7BB515407924ED958F051046530A865E723951ACF1F4D0B027656847E2B7341F6A5D6542 +F1F5C245A7241D19FEF18D7FEB18F082119F08A23D710606B034DD5660F2A3B3B08597E3532466 +E4746C313FD77B158A6CE4EE68E311872152CC15C67CAEC51FE84960A4A99A0DD85854205C88D9 +2A6BFE9A6C25C0CF2B7A74971E2911623DB45DE2ECFD23E80C7E0370D0EADF9DE9B75439DA9608 +D2E5D625917D214C7C89393867BA8C7F35A4900D8A60821836BFA9E46AA40A8C4E66D530B184AD +78040B870FDBD15447008DB9CF9A496DA6E7538516D59AC0D905D91BC92B422F2011596256518C +E2FE08D1D5690FF091120965A53D30CC1B7F75C83BA9EBCDC32BAAB5C4446CF62B46FBACF9AFEE +B587B5B768DE8BBAFB3E4C1F67042C7DBEE609D5DF07CCF6CDA5DDFE99661D1CCC927041EB5FE1 +9C11F212CA9DC90A6EB2C96F7CDDA71946385883C6915CE9D7A2773854AD9D19B744839AFE4062 +18 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark + Index: xc/doc/man/Xt/XtAppNEv.man diff -u xc/doc/man/Xt/XtAppNEv.man:1.1.1.4 xc/doc/man/Xt/XtAppNEv.man:1.3 --- xc/doc/man/Xt/XtAppNEv.man:1.1.1.4 Sun Sep 27 05:00:48 1998 +++ xc/doc/man/Xt/XtAppNEv.man Wed Mar 8 16:39:27 2000 @@ -25,6 +25,8 @@ .\" 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. +.\" $XFree86: xc/doc/man/Xt/XtAppNEv.man,v 1.3 2000/03/01 01:04:20 dawes Exp $ +.\" .ds tk X Toolkit .ds xT X Toolkit Intrinsics \- C Language Interface .ds xI Intrinsics @@ -270,14 +272,19 @@ by calling .ZN XtDispatchEvent . This constitutes the main loop of \*(tk applications, -and, as such, it does not return. +and, as such, it does not return unless +.ZN XtAppSetExitFlag +is called. Applications are expected to exit in response to some user action. There is nothing special about .ZN XtAppMainLoop ; -it is simply an infinite loop that calls +it is simply an loop that calls .ZN XtAppNextEvent and then -.ZN XtDispatchEvent . +.ZN XtDispatchEvent , +until +.ZN XtAppGetExitFlag () +returns true. .LP Applications can provide their own version of this loop, which tests some global termination flag or tests that the number Index: xc/doc/specs/Imakefile diff -u xc/doc/specs/Imakefile:1.2 xc/doc/specs/Imakefile:1.3 --- xc/doc/specs/Imakefile:1.2 Sun Dec 20 06:56:38 1998 +++ xc/doc/specs/Imakefile Wed Mar 8 16:39:29 2000 @@ -1,5 +1,5 @@ XCOMM $XConsortium: Imakefile,v 1.10 94/07/25 12:21:20 gildea Exp $ -XCOMM $XFree86: xc/doc/specs/Imakefile,v 1.2 1998/12/20 11:56:38 dawes Exp $ +XCOMM $XFree86: xc/doc/specs/Imakefile,v 1.3 2000/03/02 17:52:57 dawes Exp $ #define IHaveSubdirs #define PassCDebugFlags @@ -9,7 +9,7 @@ #else SUBDIRS = BDF CTEXT FSProtocol ICCCM XProtocol Xserver X11 XDMCP XLFD \ Xaw Xmu Xt Xext Xi xfs PEX5 ICE SM xtrans XIM xterm rstart \ - i18n programs + GL Xv i18n programs #endif all:: Index: xc/doc/specs/GL/Imakefile diff -u /dev/null xc/doc/specs/GL/Imakefile:1.1 --- /dev/null Wed Mar 8 16:39:29 2000 +++ xc/doc/specs/GL/Imakefile Wed Mar 8 16:39:29 2000 @@ -0,0 +1,4 @@ +XCOMM $XFree86: xc/doc/specs/GL/Imakefile,v 1.1 2000/03/02 17:52:57 dawes Exp $ + +InstallDoc(libGL,libGL.txt) + Index: xc/doc/specs/GL/libGL.txt diff -u /dev/null xc/doc/specs/GL/libGL.txt:1.1 --- /dev/null Wed Mar 8 16:39:29 2000 +++ xc/doc/specs/GL/libGL.txt Wed Mar 8 16:39:29 2000 @@ -0,0 +1,197 @@ + + + +Introduction +------------ + +This document describes the implementation of the XFree86 4.0 libGL.so +library defined by the Linux/OpenGL Base specification found at +http://reality.sgi.com/opengl/linux/linuxbase.html. + +The documentation is divided into two sections: + User's Guide + Driver Developer's Guide + +Author: Brian Paul (brian@precisioninsight.com) +Date: February 2000 + + + +User's Guide +------------ + +Using libGL.so + +The libGL.so library defines the gl- and glX-prefixed functions needed to +run OpenGL programs. OpenGL client applications should link with the +-lGL option to use it. + +libGL.so serves two primary functions: GLX protocol generation for indirect +rendering and loading/management of hardware drivers for direct rendering. + +When libGL.so initializes itself it uses the DRI to determine the +appropriate hardware driver for each screen on the local X display. +The hardware drivers are expected to be in the /usr/X11R6/lib/modules/dri/ +directory. Drivers are named with the convention <name>_dri.so where +<name> is a driver such as "tdfx", "i810", "gamma", etc. + +The LIBGL_DRIVERS_DIR environment variable may be used to specify a +different DRI modules directory, overriding /usr/X11R6/lib/modules/dri/. +This environment variable is ignored in setuid programs for security +reasons. + +When libGL.so is unable to locate appropriate hardware drivers it will +fall back to using indirect GLX rendering. + +To aid in solving problems, libGL.so will print diagnostic messages to +stderr if the LIBGL_DEBUG environment variable is defined. + +libGL.so is thread safe. The overhead of thread safety for common, +single-thread clients is negligible. However, the overhead of thread +safety for multi-threaded clients is significant. Each GL API call +requires two calls to pthread_get_specific() which can noticably +impact performance. Warning: libGL.so is thread safe but individual +DRI drivers may not be. Please consult the documentation for a driver +to learn if it is thread safe. + + + +Indirect Rendering + +You can force indirect rendering mode by setting the LIBGL_ALWAYS_INDIRECT +environment variable. Hardware acceleration will not be used. + + + +libGL.so Extensibility + +libGL.so is designed to be extended without upgrading. That is, +drivers may install new OpenGL extension functions into libGL.so +without requiring libGL.so to be replaced. Clients of libGL.so should +use the glXGetProcAddressEXT() function to obtain the address of +functions by name. For more details of GLX_ARB_get_proc_address see +http://oss.sgi.com/projects/ogl-sample/registry/ARB/get_proc_address.spec + +libGL.so is also designed with flexibility such that it may be used +with many generations of hardware drivers to come. + + + + +Driver Developer's Guide +------------------------ + +This section describes the requirements to make an XFree86 4.0 +libGL.so-compatible hardware driver. It is not intended for end +users of libGL.so. + + +XFree86 source files + +libGL.so is built inside XFree86 with sources found in xc/lib/GL/. +Specifically, libGL.so is built from: + + xc/lib/GL/glx/*.c + xc/lib/dri/XF86dri.c + xc/lib/dri/dri_glx.c + xc/lib/GL/mesa/src/glapi.c + xc/lib/GL/mesa/src/glapitemp.h + xc/lib/GL/mesa/src/glapitable.h + xc/lib/GL/mesa/src/glapioffsets.h + xc/lib/GL/mesa/src/glapinoop.c + xc/lib/GL/mesa/src/glheader.h + xc/lib/GL/mesa/src/glthread.c + xc/lib/GL/mesa/src/glthread.h + xc/lib/GL/mesa/src/X86/glapi_x86.S + xc/lib/GL/mesa/src/X86/assyntax.h + +Understand that the mesa/src/gl*.[ch] files are not tied to Mesa. They +have no dependencies on the rest of Mesa and are designed to be reusable +in a number of projects. + +The glapi_x86.X and assyntax.h files implement x86-optimized dispatch +of GL functions. They are not required; C-based dispatch can be used +instead, with a slight performance penalty. + + + +Driver loading and binding + +When libGL.so initializes itself (via the __glXInitialize function) a +call is made to driCreateDisplay(). This function uses DRI facilities +to determine the driver file appropriate for each screen on the local +display. Each screen's driver is then opened with dlopen() and asked +for its __driCreateScreen() function. The pointers to the __driCreateScreen() +functions are kept in an array, indexed by screen number, in the +__DRIdisplayRec struct. + +When a driver's __driCreateScreen() function is called, it must initialize +a __DRIscreenRec struct. This struct acts as the root of a tree of +function pointers which are called to create and destroy contexts and +drawables and perform all the operations needed by the GLX interface. +See the xc/lib/GL/glx/glxclient.h file for details. + + + +Dynamic Extension Function Registration + +In order to provide forward compatibility with future drivers, libGL.so +allows drivers to register new OpenGL extension functions which weren't +known when libGL.so was built. + +The register_extensions() function in xc/lib/GL/dri/dri_glx.c is called +as soon as libGL.so is loaded. This is done with gcc's constructor +attribute. This mechanism will likely have to be changed for other compilers. + +register_extensions() loops over all local displays and screens, determines +the DRI driver for each, and calls the driver's __driRegisterExtensions() +function, if present. + +The __driRegisterExtensions() function can add new entrypoints to libGL +by calling: + + GLboolean _glapi_add_entrypoint(const char *funcName, GLuint offset) + +The parameters are the name of the function (such as "glFoobarEXT") and the +offset of the dispatch slot in the API dispatch table. The return value +indicates success (GL_TRUE) or failure (GL_FALSE). + +_glapi_add_entrypoint() will synthesize entrypoint code in assembly +language. Assembly languages is required since parameter passing +can't be handled correctly using a C-based solution. + +The address of the new entrypoint is obtained by calling the +glXGetProcAddressARB() function. + +The dispatch offset number MUST be a number allocated by SGI in the same +manner in which new GL_* constants are allocated. Using an arbitrary +offset number will result in many problems. + + + +Dispatch Management + +When a GL context is made current, the driver must install its dispatch +table as the current dispatch table. This is done by calling + + void _glapi_set_dispatch(struct _glapi_table *dispatch); + +This will install the named dispatch table for the calling thread. +The current dispatch table for a thread can be obtained by calling + + struct _glapi_table *_glapi_get_dispatch(void); + +For higher performance in the common single-thread case, the global +variable _glapi_Dispatch will point to the current dispatch table. +This variable will be NULL when in multi-thread mode. + + + +Context Management + +libGL.so uses the XFree86 xthreads package to manage a thread-specific +current context pointer. See __glXGet/SetCurrentContext() in glext.c + +Drivers may use the _glapi_set/get_context() functions to maintain +a private thread-specific context pointer. + Index: xc/doc/specs/Xext/Imakefile diff -u xc/doc/specs/Xext/Imakefile:1.2 xc/doc/specs/Xext/Imakefile:1.3 --- xc/doc/specs/Xext/Imakefile:1.2 Sun Dec 20 06:56:40 1998 +++ xc/doc/specs/Xext/Imakefile Wed Mar 8 16:39:36 2000 @@ -1,5 +1,5 @@ XCOMM $TOG: Imakefile /main/21 1997/12/10 16:42:02 kaleb $ -XCOMM $XFree86: xc/doc/specs/Xext/Imakefile,v 1.2 1998/12/20 11:56:40 dawes Exp $ +XCOMM $XFree86: xc/doc/specs/Xext/Imakefile,v 1.3 2000/03/02 17:52:58 dawes Exp $ MakeSimpleDoc(shape,shape.ms) @@ -39,7 +39,27 @@ MakeEqnDoc(evi,evi.ms) -AllTarget(DPMS.txt DPMSLib.txt) +#if 0 +TEXTDOCS = DPMS.txt DPMSLib.txt bigreq.txt buffer.txt evi.txt mit-shm.txt \ + record.txt recordlib.txt shape.txt shapelib.txt tog-cup.txt \ + xc-misc.txt xtest.txt xtestlib.txt + +AllTarget($(TEXTDOCS)) +#endif InstallRoffDoc(DPMS) InstallRoffDoc(DPMSLib) +InstallRoffDoc(bigreq) +InstallRoffDoc(buffer) +InstallRoffDoc(evi) +InstallRoffDoc(mit-shm) +InstallRoffDoc(record) +InstallRoffDoc(recordlib) +InstallRoffDoc(shape) +InstallRoffDoc(shapelib) +InstallRoffDoc(tog-cup) +InstallRoffDoc(xc-misc) +InstallRoffDoc(xtest) +InstallRoffDoc(xtestlib) + + Index: xc/doc/specs/Xext/buffer.ms diff -u xc/doc/specs/Xext/buffer.ms:1.1.1.3 xc/doc/specs/Xext/buffer.ms:1.3 --- xc/doc/specs/Xext/buffer.ms:1.1.1.3 Sun Sep 27 05:06:14 1998 +++ xc/doc/specs/Xext/buffer.ms Wed Mar 8 16:39:36 2000 @@ -1,4 +1,5 @@ .\" $TOG: buffer.ms /main/9 1997/11/04 17:55:08 kaleb $ +.\" $XFree86: xc/doc/specs/Xext/buffer.ms,v 1.3 2000/03/03 23:16:24 dawes Exp $ .TL Extending X for Double-Buffering, Multi-Buffering, and Stereo .AU @@ -99,7 +100,7 @@ .LP Normal windows are created using the standard \fBCreateWindow\fP request: .DS -.ft 8 +.\" .ft 8 CreateWindow parent : WINDOW w_id : WINDOW @@ -110,7 +111,7 @@ border_width : INT16 value_mask : BITMASK value_list : LISTofVALUE -.ft +.\" .ft .DE .LP This request allocates a set of window attributes and @@ -198,7 +199,7 @@ The new request, \fBCreateImageBuffers\fP, creates a group of image buffers and associates them with a normal X window: .DS -.ft 8 +.\" .ft 8 CreateImageBuffers w_id : WINDOW buffers : LISTofBUFFER @@ -208,7 +209,7 @@ number_buffers : CARD16 (Errors: Window, IDChoice, Value) -.ft +.\" .ft .DE One image buffer will be associated with each ID passed in \fIbuffers\fP. The first buffer of the list is referred to as buffer[0], the next @@ -309,14 +310,14 @@ .LP To display an image buffer the following request can be used: .DS -.ft 8 +.\" .ft 8 DisplayImageBuffers buffers : LISTofBUFFER min_delay : CARD16 max_delay : CARD16 (Errors: Buffer, Match) -.ft +.\" .ft .DE The image buffers listed will become displayed as simultaneously as possible and the update action, bound at \fBCreateImageBuffers\fP @@ -389,7 +390,7 @@ To explicitly clear a rectangular area of an image buffer to the window background, the following request can be used: .DS -.ft 8 +.\" .ft 8 ClearImageBufferArea buffer : BUFFER x, y : INT16 @@ -397,7 +398,7 @@ exposures : BOOL (Errors: Buffer, Value) -.ft P +.\" .ft P .DE .LP Like the X \fBClearArea\fP request, \fIx\fP and \fIy\fP are relative to @@ -415,12 +416,12 @@ The group of image buffers allocated by a \fBCreateImageBuffers\fP request can be destroyed with the following request: .DS -.ft 8 +.\" .ft 8 DestroyImageBuffers w_id : WINDOW (Error: Window) -.ft +.\" .ft .DE .LP The association between the buffer ID's and their corresponding @@ -433,13 +434,13 @@ The following attributes will be associated with each window that is multi-buffered: .DS -.ft 8 +.\" .ft 8 displayed_buffer : CARD16 update_action : {Undefined,Background,Untouched,Copied} update_hint : {Frequent,Intermittent,Static} window_mode : {Mono,Stereo} buffers : LISTofBUFFER -.ft +.\" .ft .DE .LP \fIdisplayed_buffer\fP is set to the \fIindex\fP of the currently @@ -451,7 +452,7 @@ in the \fIbuffers\fP list. The above attributes can be queried with the following request: .DS -.ft 8 +.\" .ft 8 GetMultiBufferAttributes w_id : WINDOW => @@ -462,7 +463,7 @@ buffers : LISTofBUFFER (Errors: Window, Access, Value) -.ft +.\" .ft .DE .LP If the window is not multi-buffered, a \fBAccess\fP error will be generated. @@ -471,26 +472,26 @@ to set this attribute, a generic set request is provided to allow for future expansion: .DS -.ft 8 +.\" .ft 8 SetMultiBufferAttributes w_id : WINDOW value_mask : BITMASK value_list : LISTofVALUE (Errors: Window, Match, Value) -.ft +.\" .ft .DE .LP If the window is not multi-buffered, a \fBMatch\fP error will be generated. The following attributes are maintained for each buffer of a multi-buffered window: .DS -.ft 8 +.\" .ft 8 window : WINDOW event_mask : SETofEVENT index : CARD16 side : {Mono,Left,Right} -.ft +.\" .ft .DE .LP \fIwindow\fP indicates the window this buffer is associated with. @@ -503,7 +504,7 @@ For non-stereo windows, this attribute will be set to \fIMono\fP. These attributes can be queried with the following request: .DS -.ft 8 +.\" .ft 8 GetBufferAttributes buffer : BUFFER => @@ -513,7 +514,7 @@ side : {Mono,Left,Right} (Errors: Buffer, Value) -.ft +.\" .ft .DE .LP The only buffer attribute that can be explicitly set @@ -527,14 +528,14 @@ to set this attribute, a generic set request is provided to allow for future expansion: .DS -.ft 8 +.\" .ft 8 SetBufferAttributes buffer : BUFFER value_mask : BITMASK value_list : LISTofVALUE (Errors: Buffer, Value) -.ft +.\" .ft .DE .LP Clients may want to query the server about basic multi-buffer @@ -543,17 +544,17 @@ that would most likely be read once by Xlib for each screen, and used as a data base for other Xlib queries: .DS -.ft 8 +.\" .ft 8 GetBufferInfo root : WINDOW => info : LISTofSCREEN_INFO -.ft +.\" .ft .DE .LP Where \fBSCREEN_INFO\fP and \fBBUFFER_INFO\fP are defined as: .DS -.ft 8 +.\" .ft 8 SCREEN_INFO : [ normal_info : LISTofBUFFER_INFO, stereo_info : LISTofBUFFER_INFO ] @@ -561,7 +562,7 @@ BUFFER_INFO : [ visual : VISUALID, max_buffers : CARD16, depth : CARD8 ] -.ft +.\" .ft .DE .LP Information regarding multi-buffering of normal (mono) windows @@ -576,12 +577,12 @@ The following request returns the major and minor version numbers of this extension: .DS -.ft 8 +.\" .ft 8 GetBufferVersion => major_number : CARD8 minor_number : CARD8 -.ft +.\" .ft .DE .LP The version numbers are an escape hatch in case future revisions of @@ -620,11 +621,11 @@ to stop drawing until some portion of the buffer is writable, the following event is added: .DS -.ft 8 +.\" .ft 8 ClobberNotify buffer : BUFFER state : {Unclobbered,PartiallyClobbered,FullyClobbered} -.ft +.\" .ft .DE .LP The \fBClobberNotify\fP event is reported to clients selecting @@ -653,10 +654,10 @@ soon as a buffer becomes available. To support this, the following event is added: .DS -.ft 8 +.\" .ft 8 UpdateNotify buffer : BUFFER -.ft +.\" .ft .DE .LP The \fBUpdateNotify\fP event is reported to clients selecting @@ -678,7 +679,7 @@ The following pseudo-code fragment illustrates how to create and display a double-buffered image: .DS -.ft 8 +.\" .ft 8 /* * Create a normal window */ @@ -716,7 +717,7 @@ * contents of last displayed image buffer. */ DestroyImageBuffers( W ) -.ft +.\" .ft .DE .bp .SH @@ -727,7 +728,7 @@ a multi-buffered image and cycle through the images to simulate a movie loop: .DS -.ft 8 +.\" .ft 8 /* * Create a normal window */ @@ -760,7 +761,7 @@ foreach frame DisplayImageBuffers( [B(i)], 100, 0 ) } -.ft +.\" .ft .DE .bp .SH @@ -782,7 +783,7 @@ buffer and a right image buffer. To create a stereo window, a client makes the following request: .DS -.ft 8 +.\" .ft 8 CreateStereoWindow parent : WINDOW w_id : WINDOW @@ -797,7 +798,7 @@ (Errors: Alloc, Color, Cursor, Match, Pixmap, Value, Window) -.ft +.\" .ft .DE .LP This request, modeled after the \fBCreateWindow\fP request, @@ -853,7 +854,7 @@ The following shows how to create and display a single-buffered stereo image: .DS -.ft 8 +.\" .ft 8 /* * Create the stereo window, map it the screen, * and draw the left and right images @@ -863,7 +864,7 @@ MapWindow( W ) <draw picture using L,R> -.ft +.\" .ft .DE .KE .bp @@ -896,7 +897,7 @@ .LP To double-buffer a stereo window: .DS -.ft 8 +.\" .ft 8 /* * Create stereo window and map it to the screen */ @@ -927,7 +928,7 @@ <draw picture using L0,R0> DisplayImageBuffers( [L0], 100, 0 ) } -.ft +.\" .ft .DE .bp .SH @@ -935,7 +936,7 @@ .LP To cycle through \fIN\fP stereo images: .DS -.ft 8 +.\" .ft 8 /* * Create stereo window */ @@ -968,7 +969,7 @@ foreach stereo image DisplayImageBuffers( [L(i)], 100, 0 ) } -.ft +.\" .ft .DE .bp .SH Index: xc/doc/specs/Xext/evi.ms diff -u xc/doc/specs/Xext/evi.ms:1.1.1.1 xc/doc/specs/Xext/evi.ms:1.3 --- xc/doc/specs/Xext/evi.ms:1.1.1.1 Sun Sep 27 05:06:25 1998 +++ xc/doc/specs/Xext/evi.ms Wed Mar 8 16:39:36 2000 @@ -1,5 +1,6 @@ .\" Use -ms and macros.t .\" $TOG: evi.ms /main/2 1997/12/11 18:43:52 kaleb $ +.\" $XFree86: xc/doc/specs/Xext/evi.ms,v 1.3 2000/03/03 23:16:24 dawes Exp $ .EH '''' .OH '''' .EF '''' @@ -267,7 +268,7 @@ .Pn < X11/extensions/XEVI.h >. .LP .sM -.FD0 +.FD 0 .PN Bool XeviQueryVersion( .br Display *\fIdisplay\fP\^, Index: xc/doc/specs/Xv/Imakefile diff -u /dev/null xc/doc/specs/Xv/Imakefile:1.1 --- /dev/null Wed Mar 8 16:39:37 2000 +++ xc/doc/specs/Xv/Imakefile Wed Mar 8 16:39:37 2000 @@ -0,0 +1,4 @@ +XCOMM $XFree86: xc/doc/specs/Xv/Imakefile,v 1.1 2000/03/02 17:52:59 dawes Exp $ + +InstallDoc(xv-protocol-v2,xv-protocol.txt) + Index: xc/doc/specs/xterm/Imakefile diff -u xc/doc/specs/xterm/Imakefile:1.3 xc/doc/specs/xterm/Imakefile:1.4 --- xc/doc/specs/xterm/Imakefile:1.3 Sun Mar 21 07:46:30 1999 +++ xc/doc/specs/xterm/Imakefile Wed Mar 8 16:39:38 2000 @@ -1,8 +1,7 @@ XCOMM $XConsortium: Imakefile,v 1.1 94/02/10 21:08:29 rws Exp $ -XCOMM $XFree86: xc/doc/specs/xterm/Imakefile,v 1.3 1999/03/21 12:46:30 dawes Exp $ +XCOMM $XFree86: xc/doc/specs/xterm/Imakefile,v 1.4 2000/03/02 17:53:00 dawes Exp $ MakeTblDoc(ctlseqs,ctlseqs.ms) -AllTarget(ctlseqs.txt) - InstallRoffDoc(ctlseqs) + Index: xc/doc/specs/xterm/ctlseqs.ms diff -u xc/doc/specs/xterm/ctlseqs.ms:3.35 xc/doc/specs/xterm/ctlseqs.ms:3.36 --- xc/doc/specs/xterm/ctlseqs.ms:3.35 Wed Mar 8 16:39:38 2000 +++ xc/doc/specs/xterm/ctlseqs.ms Wed Mar 8 16:39:38 2000 @@ -1,7 +1,7 @@ .\"#! troff -ms $1 -*- Nroff -*- .\" "Xterm Control Sequences" document .\" $XConsortium: ctlseqs.ms,v 1.16 94/12/28 20:45:48 gildea Exp $ -.\" $XFree86: xc/doc/specs/xterm/ctlseqs.ms,v 3.35 2000/02/13 00:56:01 dawes Exp $ +.\" $XFree86: xc/doc/specs/xterm/ctlseqs.ms,v 3.36 2000/03/03 20:02:05 dawes Exp $ .\" .\" .\" Copyright 1996,1997,1998,1999,2000 by Thomas E. Dickey <dickey@clark.net> @@ -294,6 +294,7 @@ .IP \*(Pm A multiple numeric parameter composed of any number of single numeric parameters, separated by \*; character(s). +Individual values for the parameters are listed with \*(Ps . .IP \*(Pt A text parameter composed of printable characters. . @@ -673,7 +674,7 @@ It should apply only to VT220 and up, but \fIxterm\fP extends this to VT100. \(-> \*(Cs\*(Pp\*s\*;\*(Pv\*s\*;\*(Pc\*s\*c .br -where \*(Pc denotes the terminal type +where \*(Pp denotes the terminal type \(-> \*0 (``VT100'') \(-> \*1 (``VT220'') .br Index: xc/extras/FreeType/mkinstalldirs diff -u xc/extras/FreeType/mkinstalldirs:1.1.1.2 xc/extras/FreeType/mkinstalldirs:1.2 --- xc/extras/FreeType/mkinstalldirs:1.1.1.2 Sat Jan 23 22:21:50 1999 +++ xc/extras/FreeType/mkinstalldirs Wed Mar 8 16:39:38 2000 @@ -4,7 +4,7 @@ # Created: 1993-05-16 # Public domain -# $Id: mkinstalldirs,v 1.2 1998/09/01 16:52:17 werner Exp $ +# Id: mkinstalldirs,v 1.2 1998/09/01 16:52:17 werner Exp $ errstatus=0 Index: xc/extras/FreeType/contrib/ttf2bdf/Makefile.in diff -u xc/extras/FreeType/contrib/ttf2bdf/Makefile.in:1.1.1.2 xc/extras/FreeType/contrib/ttf2bdf/Makefile.in:1.2 --- xc/extras/FreeType/contrib/ttf2bdf/Makefile.in:1.1.1.2 Wed Mar 8 16:39:40 2000 +++ xc/extras/FreeType/contrib/ttf2bdf/Makefile.in Wed Mar 8 16:39:40 2000 @@ -1,5 +1,5 @@ # -# $Id: Makefile.in,v 1.4 1998/12/06 18:50:22 mleisher Exp $ +# Id: Makefile.in,v 1.4 1998/12/06 18:50:22 mleisher Exp $ # # Index: xc/extras/FreeType/contrib/ttf2bdf/README diff -u xc/extras/FreeType/contrib/ttf2bdf/README:1.1.1.2 xc/extras/FreeType/contrib/ttf2bdf/README:1.2 --- xc/extras/FreeType/contrib/ttf2bdf/README:1.1.1.2 Wed Mar 8 16:39:40 2000 +++ xc/extras/FreeType/contrib/ttf2bdf/README Wed Mar 8 16:39:40 2000 @@ -1,5 +1,5 @@ # -# $Id: README,v 1.18 1999/08/19 16:30:24 mleisher Exp $ +# Id: README,v 1.18 1999/08/19 16:30:24 mleisher Exp $ # # Index: xc/extras/FreeType/contrib/ttf2bdf/configure.in diff -u xc/extras/FreeType/contrib/ttf2bdf/configure.in:1.1.1.1 xc/extras/FreeType/contrib/ttf2bdf/configure.in:1.2 --- xc/extras/FreeType/contrib/ttf2bdf/configure.in:1.1.1.1 Sat Jan 23 22:21:52 1999 +++ xc/extras/FreeType/contrib/ttf2bdf/configure.in Wed Mar 8 16:39:40 2000 @@ -1,4 +1,4 @@ -dnl $Id: configure.in,v 1.1 1998/01/14 21:45:26 mleisher Exp $ +dnl Id: configure.in,v 1.1 1998/01/14 21:45:26 mleisher Exp $ dnl Process this file with autoconf to produce a configure script. AC_INIT(../../lib/freetype.h) Index: xc/extras/FreeType/contrib/ttf2bdf/remap.c diff -u xc/extras/FreeType/contrib/ttf2bdf/remap.c:1.1.1.2 xc/extras/FreeType/contrib/ttf2bdf/remap.c:1.2 --- xc/extras/FreeType/contrib/ttf2bdf/remap.c:1.1.1.2 Wed Mar 8 16:39:40 2000 +++ xc/extras/FreeType/contrib/ttf2bdf/remap.c Wed Mar 8 16:39:40 2000 @@ -22,9 +22,9 @@ */ #ifndef lint #ifdef __GNUC__ -static char rcsid[] __attribute__ ((unused)) = "$Id: remap.c,v 1.9 1999/06/16 16:13:11 mleisher Exp $"; +static char rcsid[] __attribute__ ((unused)) = "Id: remap.c,v 1.9 1999/06/16 16:13:11 mleisher Exp $"; #else -static char rcsid[] = "$Id: remap.c,v 1.9 1999/06/16 16:13:11 mleisher Exp $"; +static char rcsid[] = "Id: remap.c,v 1.9 1999/06/16 16:13:11 mleisher Exp $"; #endif #endif Index: xc/extras/FreeType/contrib/ttf2bdf/remap.h diff -u xc/extras/FreeType/contrib/ttf2bdf/remap.h:1.1.1.2 xc/extras/FreeType/contrib/ttf2bdf/remap.h:1.2 --- xc/extras/FreeType/contrib/ttf2bdf/remap.h:1.1.1.2 Wed Mar 8 16:39:40 2000 +++ xc/extras/FreeType/contrib/ttf2bdf/remap.h Wed Mar 8 16:39:40 2000 @@ -25,7 +25,7 @@ #define _h_remap /* - * $Id: remap.h,v 1.4 1999/05/03 17:07:04 mleisher Exp $ + * Id: remap.h,v 1.4 1999/05/03 17:07:04 mleisher Exp $ */ #ifdef __cplusplus Index: xc/extras/FreeType/contrib/ttf2bdf/ttf2bdf.c diff -u xc/extras/FreeType/contrib/ttf2bdf/ttf2bdf.c:1.1.1.2 xc/extras/FreeType/contrib/ttf2bdf/ttf2bdf.c:1.2 --- xc/extras/FreeType/contrib/ttf2bdf/ttf2bdf.c:1.1.1.2 Wed Mar 8 16:39:40 2000 +++ xc/extras/FreeType/contrib/ttf2bdf/ttf2bdf.c Wed Mar 8 16:39:40 2000 @@ -22,9 +22,9 @@ */ #ifndef lint #ifdef __GNUC__ -static char rcsid[] __attribute__ ((unused)) = "$Id: ttf2bdf.c,v 1.25 1999/10/21 16:31:54 mleisher Exp $"; +static char rcsid[] __attribute__ ((unused)) = "Id: ttf2bdf.c,v 1.25 1999/10/21 16:31:54 mleisher Exp $"; #else -static char rcsid[] = "$Id: ttf2bdf.c,v 1.25 1999/10/21 16:31:54 mleisher Exp $"; +static char rcsid[] = "Id: ttf2bdf.c,v 1.25 1999/10/21 16:31:54 mleisher Exp $"; #endif #endif Index: xc/extras/FreeType/contrib/ttf2bdf/ttf2bdf.man diff -u xc/extras/FreeType/contrib/ttf2bdf/ttf2bdf.man:1.1.1.2 xc/extras/FreeType/contrib/ttf2bdf/ttf2bdf.man:1.2 --- xc/extras/FreeType/contrib/ttf2bdf/ttf2bdf.man:1.1.1.2 Wed Mar 8 16:39:40 2000 +++ xc/extras/FreeType/contrib/ttf2bdf/ttf2bdf.man Wed Mar 8 16:39:40 2000 @@ -1,5 +1,5 @@ .\" -.\" $Id: ttf2bdf.man,v 1.14 1999/10/21 16:31:54 mleisher Exp $ +.\" Id: ttf2bdf.man,v 1.14 1999/10/21 16:31:54 mleisher Exp $ .\" .TH TTF2BDF 1 "21 October 1999" "X Version 11" .SH NAME Index: xc/extras/FreeType/contrib/ttf2bdf/maps/iso8859.1 diff -u xc/extras/FreeType/contrib/ttf2bdf/maps/iso8859.1:1.1.1.1 xc/extras/FreeType/contrib/ttf2bdf/maps/iso8859.1:1.2 --- xc/extras/FreeType/contrib/ttf2bdf/maps/iso8859.1:1.1.1.1 Wed Mar 8 16:39:41 2000 +++ xc/extras/FreeType/contrib/ttf2bdf/maps/iso8859.1 Wed Mar 8 16:39:41 2000 @@ -1,5 +1,5 @@ # -# $Id: iso8859.1,v 1.2 1999/06/16 16:13:11 mleisher Exp $ +# Id: iso8859.1,v 1.2 1999/06/16 16:13:11 mleisher Exp $ # # SAMPLE TTF2BDF MAPPING TABLE # Index: xc/extras/FreeType/contrib/ttf2bdf/maps/iso8859.2 diff -u xc/extras/FreeType/contrib/ttf2bdf/maps/iso8859.2:1.1.1.2 xc/extras/FreeType/contrib/ttf2bdf/maps/iso8859.2:1.2 --- xc/extras/FreeType/contrib/ttf2bdf/maps/iso8859.2:1.1.1.2 Wed Mar 8 16:39:41 2000 +++ xc/extras/FreeType/contrib/ttf2bdf/maps/iso8859.2 Wed Mar 8 16:39:41 2000 @@ -1,5 +1,5 @@ # -# $Id: iso8859.2,v 1.2 1999/06/16 16:13:11 mleisher Exp $ +# Id: iso8859.2,v 1.2 1999/06/16 16:13:11 mleisher Exp $ # # SAMPLE TTF2BDF MAPPING TABLE # Index: xc/extras/FreeType/contrib/ttf2bdf/maps/iso8859.3 diff -u xc/extras/FreeType/contrib/ttf2bdf/maps/iso8859.3:1.1.1.1 xc/extras/FreeType/contrib/ttf2bdf/maps/iso8859.3:1.2 --- xc/extras/FreeType/contrib/ttf2bdf/maps/iso8859.3:1.1.1.1 Wed Mar 8 16:39:41 2000 +++ xc/extras/FreeType/contrib/ttf2bdf/maps/iso8859.3 Wed Mar 8 16:39:41 2000 @@ -1,5 +1,5 @@ # -# $Id: iso8859.3,v 1.2 1999/06/16 16:13:11 mleisher Exp $ +# Id: iso8859.3,v 1.2 1999/06/16 16:13:11 mleisher Exp $ # # SAMPLE TTF2BDF MAPPING TABLE # Index: xc/extras/FreeType/contrib/ttf2pfb/ttf2pfb.c diff -u xc/extras/FreeType/contrib/ttf2pfb/ttf2pfb.c:1.1.1.2 xc/extras/FreeType/contrib/ttf2pfb/ttf2pfb.c:1.2 --- xc/extras/FreeType/contrib/ttf2pfb/ttf2pfb.c:1.1.1.2 Wed Mar 8 16:39:41 2000 +++ xc/extras/FreeType/contrib/ttf2pfb/ttf2pfb.c Wed Mar 8 16:39:41 2000 @@ -46,7 +46,7 @@ #include "freetype.h" #include "extend/ftxpost.h" /* we are in the FreeType package tree */ -char rcsid[] = "$Id: ttf2pfb.c,v 1.13 1999/08/20 13:14:26 werner Exp $"; +char rcsid[] = "Id: ttf2pfb.c,v 1.13 1999/08/20 13:14:26 werner Exp $"; #define PID_UNICODE 3 @@ -885,7 +885,7 @@ Fputps("%!PS"); Fputps("%%% CharString debugging program."); - Fputps("%%% Generated by: ttf2pfb $Revision: 1.13 $"); + Fputps("%%% Generated by: ttf2pfb Revision: 1.13 $"); Fputps("%%% plot char-string (pathes defined in /cjkxxxx)"); Fputps(""); Fputps("%%% user-defined parameter"); Index: xc/extras/FreeType/test/common.c diff -u xc/extras/FreeType/test/common.c:1.1.1.2 xc/extras/FreeType/test/common.c:1.2 --- xc/extras/FreeType/test/common.c:1.1.1.2 Wed Mar 8 16:39:46 2000 +++ xc/extras/FreeType/test/common.c Wed Mar 8 16:39:46 2000 @@ -23,9 +23,9 @@ #ifndef lint #ifdef __GNUC__ - static char rcsid[] __attribute__ ((unused)) = "$Id: common.c,v 1.14 1999/08/13 12:54:34 werner Exp $"; + static char rcsid[] __attribute__ ((unused)) = "Id: common.c,v 1.14 1999/08/13 12:54:34 werner Exp $"; #else - static char rcsid[] = "$Id: common.c,v 1.14 1999/08/13 12:54:34 werner Exp $"; + static char rcsid[] = "Id: common.c,v 1.14 1999/08/13 12:54:34 werner Exp $"; #endif #endif Index: xc/extras/Mesa/include/GL/gl.h diff -u xc/extras/Mesa/include/GL/gl.h:1.2 xc/extras/Mesa/include/GL/gl.h:1.3 --- xc/extras/Mesa/include/GL/gl.h:1.2 Wed Mar 8 16:39:47 2000 +++ xc/extras/Mesa/include/GL/gl.h Wed Mar 8 16:39:47 2000 @@ -56,38 +56,44 @@ # 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(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 -# if defined(_MSC_VER) && defined(BUILD_GL32) /* tag specify we're building mesa as a DLL */ -# define GLAPI __declspec(dllexport) -# define WGLAPI __declspec(dllexport) -# elif defined(_MSC_VER) && defined(_DLL) /* tag specifying we're building for DLL runtime support */ -# define GLAPI __declspec(dllimport) -# define WGLAPI __declspec(dllimport) -# else /* for use with static link lib build of Win32 edition only */ -# define GLAPI extern -# define WGLAPI __declspec(dllimport) -# endif /* _STATIC_MESA support */ -# define GLAPIENTRY __stdcall -# define GLAPIENTRYP __stdcall * -# define GLCALLBACK __stdcall -# define GLCALLBACKP __stdcall * -# define GLWINAPI __stdcall -# define GLWINAPIV __cdecl +# if defined(_MSC_VER) && defined(BUILD_GL32) /* tag specify we're building mesa as a DLL */ +# define GLAPI __declspec(dllexport) +# define WGLAPI __declspec(dllexport) +# elif defined(_MSC_VER) && defined(_DLL) /* tag specifying we're building for DLL runtime support */ +# define GLAPI __declspec(dllimport) +# define WGLAPI __declspec(dllimport) +# else /* for use with static link lib build of Win32 edition only */ +# define GLAPI extern +# define WGLAPI __declspec(dllimport) +# endif /* _STATIC_MESA support */ +# define GLAPIENTRY __stdcall +# define GLAPIENTRYP __stdcall * +# define GLCALLBACK __stdcall +# define GLCALLBACKP __stdcall * +# if defined(__CYGWIN32__) +# define GLCALLBACKPCAST * +# else +# define GLCALLBACKPCAST __stdcall * +# endif +# define GLWINAPI __stdcall +# define GLWINAPIV __cdecl #else /* non-Windows compilation */ -# define GLAPI extern -# define GLAPIENTRY -# define GLAPIENTRYP * -# define GLCALLBACK -# define GLCALLBACKP * -# define GLWINAPI -# define GLWINAPIV +# define GLAPI extern +# define GLAPIENTRY +# define GLAPIENTRYP * +# define GLCALLBACK +# define GLCALLBACKP * +# define GLCALLBACKPCAST * +# define GLWINAPI +# define GLWINAPIV #endif /* WIN32 / CYGWIN32 bracket */ /* compatability guard so we don't need to change client code */ @@ -130,18 +136,9 @@ -/* - * Apps can test for this symbol to do conditional compilation if needed. - */ -/* XXX these Mesa symbols are going away -#define MESA -#define MESA_MAJOR_VERSION 3 -#define MESA_MINOR_VERSION 1 -*/ - - #define GL_VERSION_1_1 1 #define GL_VERSION_1_2 1 +#define GL_HAS_GLEXT 1 @@ -1783,7 +1780,7 @@ /* - * XXX these extensions may eventually be moved into a new glext.h file + * XXX these extensions may eventually be moved into glext.h */ @@ -2157,19 +2154,19 @@ /* - * GL_INGR_blend_func_separate (EXT number 173) + * GL_EXT_blend_func_separate (EXT number 173) (aka GL_INGR_blend_func_separate) */ -#ifndef GL_INGR_blend_func_separate -#define GL_INGR_blend_func_separate 1 +#ifndef GL_EXT_blend_func_separate +#define GL_EXT_blend_func_separate 1 -#define GL_BLEND_DST_RGB_INGR 0x80C8 -#define GL_BLEND_SRC_RGB_INGR 0x80C9 -#define GL_BLEND_DST_ALPHA_INGR 0x80CA -#define GL_BLEND_SRC_ALPHA_INGR 0x80CB +#define GL_BLEND_DST_RGB_EXT 0x80C8 +#define GL_BLEND_SRC_RGB_EXT 0x80C9 +#define GL_BLEND_DST_ALPHA_EXT 0x80CA +#define GL_BLEND_SRC_ALPHA_EXT 0x80CB -GLAPI void GLAPIENTRY glBlendFuncSeparateINGR( GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha ); +GLAPI void GLAPIENTRY glBlendFuncSeparateEXT( GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha ); -#endif /* GL_INGR_blend_func_separate */ +#endif /* GL_EXT_blend_func_separate */ @@ -2199,7 +2196,7 @@ /* - * GL_ARB_multitexture (no number) + * GL_ARB_multitexture (ARB 0) */ #ifndef GL_ARB_multitexture #define GL_ARB_multitexture 1 @@ -2280,7 +2277,7 @@ /* - * GL_MESA_window_pos (no number) + * GL_MESA_window_pos (197) */ #ifndef GL_MESA_window_pos #define GL_MESA_window_pos 1 @@ -2315,7 +2312,7 @@ /* - * GL_MESA_resize_bufffers (no number) + * GL_MESA_resize_bufffers (196) */ #ifndef GL_MESA_resize_bufffers #define GL_MESA_resize_buffers 1 @@ -2327,7 +2324,7 @@ /* - * GL_ARB_tranpose_matrix (number ?) + * GL_ARB_tranpose_matrix (ARB 2) */ #ifndef GL_ARB_transpose_matrix #define GL_ARB_transpose_matrix 1 @@ -2342,7 +2339,21 @@ GLAPI void GLAPIENTRY glMultTransposeMatrixdARB( const GLdouble m[16] ); GLAPI void GLAPIENTRY glMultTransposeMatrixfARB( const GLfloat m[16] ); -#endif +#endif /* GL_ARB_tranpose_matrix */ + + + +/* + * GL_ARB_multisample (ARB 4) + */ +#ifndef GL_ARB_multisample +#define GL_ARB_multisample 1 + +GLAPI void GLAPIENTRY glSampleCoverageARB(GLclampf value, GLboolean invert); + +GLAPI void GLAPIENTRY glSamplePassARB(GLenum pass); + +#endif /* GL_ARB_multisample */ Index: xc/extras/Mesa/include/GL/glext.h diff -u /dev/null xc/extras/Mesa/include/GL/glext.h:1.1 --- /dev/null Wed Mar 8 16:39:48 2000 +++ xc/extras/Mesa/include/GL/glext.h Wed Mar 8 16:39:48 2000 @@ -0,0 +1,1619 @@ +#ifndef __glext_h_ +#define __glext_h_ + + +/* + * XXX Many extensions need to be added yet. + * XXX Some token values aren't known (grep for ?) + * XXX This file may be automatically generated in the future. + */ + + +#ifdef __cplusplus +extern "C" { +#endif + + +#ifdef _WIN32 +#define WIN32_LEAN_AND_MEAN 1 +#include <windows.h> +#endif + +#ifndef GLAPI +#define GLAPI extern +#endif + +#ifdef GLAPIENTRY +#define APIENTRY GLAPIENTRY +#endif + +#ifndef APIENTRY +#define APIENTRY +#endif + + +#define GL_GLEXT_VERSION_EXT 1 + + +/* + * 1. GL_EXT_abgr + */ +#ifndef GL_EXT_abgr +#define GL_EXT_abgr 1 + +#define GL_ABGR_EXT 0x8000 + +#endif /* GL_EXT_abgr */ + + + +/* + * 2. GL_EXT_blend_color + */ +#ifndef GL_EXT_blend_color +#define GL_EXT_blend_color 1 + +#define GL_CONSTANT_COLOR_EXT 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002 +#define GL_CONSTANT_ALPHA_EXT 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004 +#define GL_BLEND_COLOR_EXT 0x8005 + +GLAPI void APIENTRY glBlendColorEXT(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); + +typedef void (APIENTRY * PFNGLBLENDCOLOREXTPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); + +#endif /* GL_EXT_blend_color */ + + + +/* + * 3. GL_EXT_polygon_offset + */ +#ifndef GL_EXT_polygon_offset +#define GL_EXT_polygon_offset 1 + +#define GL_POLYGON_OFFSET_EXT 0x8037 +#define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038 +#define GL_POLYGON_OFFSET_BIAS_EXT 0x8039 + +GLAPI void APIENTRY glPolygonOffsetEXT(GLfloat factor, GLfloat bias); + +typedef void (APIENTRY * PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias); + +#endif /* GL_EXT_polygon_offset */ + + + +/* + * 6. GL_EXT_texture3D + */ +#ifndef GL_EXT_texture3D +#define GL_EXT_texture3D 1 + +#define GL_PACK_SKIP_IMAGES_EXT 0x806B +#define GL_PACK_IMAGE_HEIGHT_EXT 0x806C +#define GL_UNPACK_SKIP_IMAGES_EXT 0x806D +#define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E +#define GL_TEXTURE_3D_EXT 0x806F +#define GL_PROXY_TEXTURE_3D_EXT 0x8070 +#define GL_TEXTURE_DEPTH_EXT 0x8071 +#define GL_TEXTURE_WRAP_R_EXT 0x8072 +#define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073 +#define GL_TEXTURE_3D_BINDING_EXT 0x806A + +GLAPI void APIENTRY glTexImage3DEXT(GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); +GLAPI void APIENTRY glTexSubImage3DEXT(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); +GLAPI void APIENTRY glCopyTexSubImage3DEXT(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + +typedef void (APIENTRY * PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); +typedef void (APIENTRY * PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); +typedef void (APIENTRY * PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + +#endif /* GL_EXT_texture3D */ + + + +/* + * 7. GL_SGI_texture_filter4 + */ +#ifndef GL_SGI_texture_filter4 +#define GL_SGI_texture_filter4 1 + +#define GL_FILTER4_SGIS ? +#define GL_TEXTURE_FILTER4_SIZE_SGIS ? + +GLAPI void APIENTRY glGetTexFilterFuncSGIS(GLenum target, GLenum filter, GLfloat *weights); +GLAPI void APIENTRY glTexFilterFuncSGIS(GLenum target, GLenum filter, GLsizei n, const GLfloat *weights); + +typedef void (APIENTRY * PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat *weights); +typedef void (APIENTRY * PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights); + +#endif /* GL_SGI_texture_filter4 */ + + + +/* + * 9. GL_EXT_subtexture + */ +#ifndef GL_EXT_subtexture +#define GL_EXT_subtexture 1 + +GLAPI void APIENTRY glCopyTexSubImage1DEXT(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +GLAPI void APIENTRY glTexSubImage1DEXT(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); +GLAPI void APIENTRY glTexSubImage2DEXT(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + +typedef void (APIENTRY * PFNGLCOPYTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +typedef void (APIENTRY * PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); +typedef void (APIENTRY * PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + +#endif /* GL_EXT_subtexture */ + + + +/* + * 10. GL_EXT_copy_texture + */ +#ifndef GL_EXT_copy_texture +#define GL_EXT_copy_texture 1 + +GLAPI void APIENTRY glCopyTexImage1DEXT(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +GLAPI void APIENTRY glCopyTexImage2DEXT(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +GLAPI void APIENTRY glCopyTexSubImage2DEXT(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + +typedef void (APIENTRY * PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +typedef void (APIENTRY * PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +typedef void (APIENTRY * PFNGLCOPYTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + +#endif /* GL_EXT_copy_texture */ + + + +/* + * 11. GL_EXT_histogram + */ +#ifndef GL_EXT_histogram +#define GL_EXT_histogram 1 + +#define GL_HISTOGRAM_EXT 0x8024 +#define GL_PROXY_HISTOGRAM_EXT 0x8025 +#define GL_HISTOGRAM_WIDTH_EXT 0x8026 +#define GL_HISTOGRAM_FORMAT_EXT 0x8027 +#define GL_HISTOGRAM_RED_SIZE_EXT 0x8028 +#define GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029 +#define GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A +#define GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B +#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C +#define GL_HISTOGRAM_SINK_EXT 0x802D + +GLAPI void APIENTRY glGetHistogramEXT(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); +GLAPI void APIENTRY glGetHistogramParameterfvEXT(GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetHistogramParameterivEXT(GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetMinmaxEXT(GLenum target, GLboolean reset, GLenum format, GLenum types, GLvoid *values); +GLAPI void APIENTRY glGetMinmaxParameterfvEXT(GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetMinmaxParameterivEXT(GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glHistogramEXT(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); +GLAPI void APIENTRY glMinmaxEXT(GLenum target, GLenum internalformat, GLboolean sink); +GLAPI void APIENTRY glResetHistogramEXT(GLenum target); +GLAPI void APIENTRY glResetMinmaxEXT(GLenum target); + +typedef void (APIENTRY * PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); +typedef void (APIENTRY * PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRY * PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRY * PFNGLGETMINMAXEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum types, GLvoid *values); +typedef void (APIENTRY * PFNGLGETMINMAXPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRY * PFNGLGETMINMAXPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRY * PFNGLHISTOGRAMEXTPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); +typedef void (APIENTRY * PFNGLMINMAXEXTPROC) (GLenum target, GLenum internalformat, GLboolean sink); +typedef void (APIENTRY * PFNGLRESETHISTOGRAMEXTPROC) (GLenum target); +typedef void (APIENTRY * PFNGLRESETMINMAXEXTPROC) (GLenum target); + +#endif /* GL_EXT_histogram */ + + + +/* + * 12. GL_EXT_convolution + */ +#ifndef GL_EXT_convolution +#define GL_EXT_convolution 1 + +#define GL_CONVOLUTION_1D_EXT 0x8010 +#define GL_CONVOLUTION_2D_EXT 0x8011 +#define GL_SEPARABLE_2D_EXT 0x8012 +#define GL_CONVOLUTION_BORDER_MODE_EXT 0x8013 +#define GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014 +#define GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015 +#define GL_REDUCE_EXT 0x8016 +#define GL_CONVOLUTION_FORMAT_EXT 0x8017 +#define GL_CONVOLUTION_WIDTH_EXT 0x8018 +#define GL_CONVOLUTION_HEIGHT_EXT 0x8019 +#define GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A +#define GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B +#define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C +#define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D +#define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E +#define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F +#define GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020 +#define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021 +#define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022 +#define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023 + +GLAPI void APIENTRY glConvolutionFilter1DEXT(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); +GLAPI void APIENTRY glConvolutionFilter2DEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); +GLAPI void APIENTRY glConvolutionParameterfEXT(GLenum target, GLenum pname, GLfloat params); +GLAPI void APIENTRY glConvolutionParameterfvEXT(GLenum target, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glConvolutionParameteriEXT(GLenum target, GLenum pname, GLint params); +GLAPI void APIENTRY glConvolutionParameterivEXT(GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glCopyConvolutionFilter1DEXT(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +GLAPI void APIENTRY glCopyConvolutionFilter2DEXT(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI void APIENTRY glGetConvolutionFilterEXT(GLenum target, GLenum format, GLenum type, GLvoid *image); +GLAPI void APIENTRY glGetConvolutionParameterfvEXT(GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetConvolutionParameterivEXT(GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetSeparableFilterEXT(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); +GLAPI void APIENTRY glSeparableFilter2DEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); + +typedef void (APIENTRY * PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); +typedef void (APIENTRY * PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); +typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat params); +typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint params); +typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRY * PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (APIENTRY * PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRY * PFNGLGETCONVOLUTIONFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image); +typedef void (APIENTRY * PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRY * PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRY * PFNGLGETSEPARABLEFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); +typedef void (APIENTRY * PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); + +#endif /* GL_EXT_convolution */ + + + +/* + * 13. GL_SGI_color_matrix + */ +#ifndef GL_SGI_color_matrix +#define GL_SGI_color_matrix 1 + +#define GL_COLOR_MATRIX_SGI 0x80B1 +#define GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2 +#define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3 +#define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4 +#define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5 +#define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6 +#define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7 +#define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8 +#define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9 +#define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA +#define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB + +#endif /* GL_SGI_color_matrix */ + + + +/* + * 14. GL_SGI_color_table + */ +#ifndef GL_SGI_color_table +#define GL_SGI_color_table 1 + +#define COLOR_TABLE_SGI 0x80D0 +#define POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1 +#define POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2 +#define PROXY_COLOR_TABLE_SGI 0x80D3 +#define PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4 +#define PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5 +#define COLOR_TABLE_SCALE_SGI 0x80D6 +#define COLOR_TABLE_BIAS_SGI 0x80D7 +#define COLOR_TABLE_FORMAT_SGI 0x80D8 +#define COLOR_TABLE_WIDTH_SGI 0x80D9 +#define COLOR_TABLE_RED_SIZE_SGI 0x80DA +#define COLOR_TABLE_GREEN_SIZE_SGI 0x80DB +#define COLOR_TABLE_BLUE_SIZE_SGI 0x80DC +#define COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD +#define COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE +#define COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF + +GLAPI void APIENTRY glColorTableParameterfvSGI(GLenum target, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glColorTableParameterivSGI(GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glColorTableSGI(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); +GLAPI void APIENTRY glCopyColorTableSGI(GLenum target, GLenum internalFormat, GLint x, GLint y, GLsizei width); +GLAPI void APIENTRY glGetColorTableParameterfvSGI(GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetColorTableParameterivSGI(GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetColorTableSGI(GLenum target, GLenum format, GLenum type, GLvoid *table); + +typedef void (APIENTRY * PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRY * PFNGLCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRY * PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); +typedef void (APIENTRY * PFNGLCOPYCOLORTABLESGIPROC) (GLenum target, GLenum internalFormat, GLint x, GLint y, GLsizei width); +typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRY * PFNGLGETCOLORTABLESGIPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table); + +#endif /* GL_SGI_color_table */ + + + +/* + * ?. GL_SGIX_pixel_texture + */ +#ifndef GL_SGIX_pixel_texture +#define GL_SGIX_pixel_texture 1 + +GLAPI void APIENTRY glPixelTexGenSGIX(GLenum mode); + +typedef void (APIENTRY * PFNGLPIXELTEXGENSGIXPROC) (GLenum mode); + +#endif /* GL_SGIX_pixel_texture */ + + + +/* + * 15. GL_SGIS_pixel_texture + */ +#ifndef GL_SGIS_pixel_texture +#define GL_SGIS_pixel_texture 1 + +#define GL_PIXEL_TEXTURE_SGIS ? +#define GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS ? +#define GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS ? +#define GL_PIXEL_GROUP_COLOR_SGIS ? + +GLAPI void APIENTRY glPixelTexGenParameterfSGIS(GLenum target, GLfloat value); +GLAPI void APIENTRY glPixelTexGenParameterfvSGIS(GLenum target, const GLfloat *value); +GLAPI void APIENTRY glPixelTexGenParameteriSGIS(GLenum target, GLint value); +GLAPI void APIENTRY glPixelTexGenParameterivSGIS(GLenum target, const GLint *value); +GLAPI void APIENTRY glGetPixelTexGenParameterfvSGIS(GLenum target, GLfloat *value); +GLAPI void APIENTRY glGetPixelTexGenParameterivSGIS(GLenum target, GLint *value); + +typedef void (APIENTRY * PFNGLPIXELTEXGENPARAMETERFSGISPROC) (GLenum target, GLfloat value); +typedef void (APIENTRY * PFNGLPIXELTEXGENPARAMETERFVSGISPROC) (GLenum target, const GLfloat *value); +typedef void (APIENTRY * PFNGLPIXELTEXGENPARAMETERISGISPROC) (GLenum target, GLint value); +typedef void (APIENTRY * PFNGLPIXELTEXGENPARAMETERIVSGISPROC) (GLenum target, const GLint *value); +typedef void (APIENTRY * PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC) (GLenum target, GLfloat *value); +typedef void (APIENTRY * PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC) (GLenum target, GLint *value); + +#endif /* GL_SGIS_pixel_texture */ + + + +/* + * 16. GL_SGIS_texture4D + */ +#ifndef GL_SGIS_texture4D +#define GL_SGIS_texture4D 1 + +#define GL_PACK_SKIP_VOLUMES_SGIS ? +#define GL_PACK_IMAGE_DEPTH_SGIS ? +#define GL_UNPACK_SKIP_VOLUMES_SGIS ? +#define GL_UNPACK_IMAGE_DEPTH_SGIS ? +#define GL_TEXTURE_4D_SGIS ? +#define GL_PROXY_TEXTURE_4D_SGIS ? +#define GL_TEXTURE_4DSIZE_SGIS ? +#define GL_TEXTURE_WRAP_Q_SGIS ? +#define GL_MAX_4D_TEXTURE_SIZE_SGIS ? +#define GL_TEXTURE_4D_BINDING_SGIS ? + +GLAPI void APIENTRY glTexImage4DSGIS(GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei extent, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glTexSubImage4DSGIS(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei extent, GLenum format, GLenum type, const void *pixels); + +typedef void (APIENTRY * PFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei extent, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRY * PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei extent, GLenum format, GLenum type, const void *pixels); + +#endif /* GL_SGIS_texture4D */ + + + +/* + * 20. GL_EXT_texture_object + */ +#ifndef GL_EXT_texture_object +#define GL_EXT_texture_object 1 + +#define GL_TEXTURE_PRIORITY_EXT 0x8066 +#define GL_TEXTURE_RESIDENT_EXT 0x8067 +#define GL_TEXTURE_1D_BINDING_EXT 0x8068 +#define GL_TEXTURE_2D_BINDING_EXT 0x8069 + +GLAPI void APIENTRY glGenTexturesEXT(GLsizei n, GLuint *textures); +GLAPI void APIENTRY glDeleteTexturesEXT(GLsizei n, const GLuint *textures); +GLAPI void APIENTRY glBindTextureEXT(GLenum target, GLuint texture); +GLAPI void APIENTRY glPrioritizeTexturesEXT(GLsizei n, const GLuint *textures, const GLclampf *priorities); +GLAPI GLboolean APIENTRY glAreTexturesResidentEXT(GLsizei n, const GLuint *textures, GLboolean *residences); +GLAPI GLboolean APIENTRY glIsTextureEXT(GLuint texture); + +typedef void (APIENTRY * PFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint *textures); +typedef void (APIENTRY * PFNGLDELETETEXTURESEXTPROC) (GLsizei n, const GLuint *textures); +typedef void (APIENTRY * PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture); +typedef void (APIENTRY * PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint *textures, const GLclampf *priorities); +typedef GLboolean (APIENTRY * PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint *textures, GLboolean *residences); +typedef GLboolean (APIENTRY * PFNGLISTEXTUREEXTPROC) (GLuint texture); + +#endif /* GL_EXT_texture_object */ + + + +/* + * 21. GL_SGIS_detail_texture + */ +#ifndef GL_SGIS_detail_texture +#define GL_SGIS_detail_texture + +#define GL_DETAIL_TEXTURE_2D_SGIS 0x8095 +#define GL_DETAIL_TEXTURE_2D_BINDING_SGIS 0x8096 +#define GL_LINEAR_DETAIL_SGIS 0x8097 +#define GL_LINEAR_DETAIL_ALPHA_SGIS 0x8098 +#define GL_LINEAR_DETAIL_COLOR_SGIS 0x8099 +#define GL_DETAIL_TEXTURE_LEVEL_SGIS 0x809A +#define GL_DETAIL_TEXTURE_MODE_SGIS 0x809B + +GLAPI void APIENTRY glDetailTexFuncSGIS(GLenum target, GLsizei n, const GLfloat *points); +GLAPI void APIENTRY glGetDetailTexFuncSGIS(GLenum target, GLfloat *points); + +typedef void (APIENTRY * PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points); +typedef void (APIENTRY * PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat *points); + +#endif /* GL_SGIS_detail_texture */ + + + +/* + * 22. GL_SGIS_sharpen_texture + */ +#ifndef GL_SGIS_sharpen_texture +#define GL_SGIS_sharpen_texture 1 + +#define GL_LINEAR_SHARPEN_SGIS 0x80AD +#define GL_LINEAR_SHARPEN_ALPHA_SGIS 0x80AE +#define GL_LINEAR_SHARPEN_COLOR_SGIS 0x80AF +#define GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS 0x80B0 + +GLAPI void APIENTRY glGetSharpenTexFuncSGIS(GLenum target, GLfloat *points); +GLAPI void APIENTRY glSharpenTexFuncSGIS(GLenum target, GLsizei n, const GLfloat *points); + +typedef void (APIENTRY * PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat *points); +typedef void (APIENTRY * PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points); + +#endif /* GL_SGIS_sharpen_texture */ + + + +/* + * 23. GL_EXT_packed_pixels + */ +#ifndef GL_EXT_packed_pixels +#define GL_EXT_packed_pixels 1 + +#define GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032 +#define GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034 +#define GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035 +#define GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036 + +#endif /* GL_EXT_packed_pixels */ + + + +/* + * 25. GL_SGIS_multisample + */ + +#ifndef GL_SGIS_multisample +#define GL_SGIS_multisample 1 + +#define GL_MULTISAMPLE_SGIS 0x809D +#define GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F +#define GL_SAMPLE_MASK_SGIS 0x80A0 +#define GL_MULTISAMPLE_BIT_EXT 0x20000000 +#define GL_1PASS_SGIS 0x80A1 +#define GL_2PASS_0_SGIS 0x80A2 +#define GL_2PASS_1_SGIS 0x80A3 +#define GL_4PASS_0_SGIS 0x80A4 +#define GL_4PASS_1_SGIS 0x80A5 +#define GL_4PASS_2_SGIS 0x80A6 +#define GL_4PASS_3_SGIS 0x80A7 +#define GL_SAMPLE_BUFFERS_SGIS 0x80A8 +#define GL_SAMPLES_SGIS 0x80A9 +#define GL_SAMPLE_MASK_VALUE_SGIS 0x80AA +#define GL_SAMPLE_MASK_INVERT_SGIS 0x80AB +#define GL_SAMPLE_PATTERN_SGIS 0x80AC + +GLAPI void APIENTRY glSampleMaskSGIS(GLclampf value, GLboolean invert); +GLAPI void APIENTRY glSamplePatternSGIS(GLenum pattern); + +typedef void (APIENTRY * PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert); +typedef void (APIENTRY * PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern); + +#endif /* GL_SGIS_multisample */ + + + +/* + * 27. GL_EXT_rescale_normal + */ +#ifndef GL_EXT_rescale_normal +#define GL_EXT_rescale_normal 1 + +#define GL_RESCALE_NORMAL_EXT 0x803A + +#endif /* GL_EXT_rescale_normal */ + + + +/* + * 30. GL_EXT_vertex_array + */ +#ifndef GL_EXT_vertex_array +#define GL_EXT_vertex_array 1 + +#define GL_VERTEX_ARRAY_EXT 0x8074 +#define GL_NORMAL_ARRAY_EXT 0x8075 +#define GL_COLOR_ARRAY_EXT 0x8076 +#define GL_INDEX_ARRAY_EXT 0x8077 +#define GL_TEXTURE_COORD_ARRAY_EXT 0x8078 +#define GL_EDGE_FLAG_ARRAY_EXT 0x8079 +#define GL_VERTEX_ARRAY_SIZE_EXT 0x807A +#define GL_VERTEX_ARRAY_TYPE_EXT 0x807B +#define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C +#define GL_VERTEX_ARRAY_COUNT_EXT 0x807D +#define GL_NORMAL_ARRAY_TYPE_EXT 0x807E +#define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F +#define GL_NORMAL_ARRAY_COUNT_EXT 0x8080 +#define GL_COLOR_ARRAY_SIZE_EXT 0x8081 +#define GL_COLOR_ARRAY_TYPE_EXT 0x8082 +#define GL_COLOR_ARRAY_STRIDE_EXT 0x8083 +#define GL_COLOR_ARRAY_COUNT_EXT 0x8084 +#define GL_INDEX_ARRAY_TYPE_EXT 0x8085 +#define GL_INDEX_ARRAY_STRIDE_EXT 0x8086 +#define GL_INDEX_ARRAY_COUNT_EXT 0x8087 +#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088 +#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089 +#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A +#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B +#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C +#define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D +#define GL_VERTEX_ARRAY_POINTER_EXT 0x808E +#define GL_NORMAL_ARRAY_POINTER_EXT 0x808F +#define GL_COLOR_ARRAY_POINTER_EXT 0x8090 +#define GL_INDEX_ARRAY_POINTER_EXT 0x8091 +#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092 +#define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093 + +GLAPI void APIENTRY glVertexPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *ptr); +GLAPI void APIENTRY glNormalPointerEXT(GLenum type, GLsizei stride, GLsizei count, const GLvoid *ptr); +GLAPI void APIENTRY glColorPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *ptr); +GLAPI void APIENTRY glIndexPointerEXT(GLenum type, GLsizei stride, GLsizei count, const GLvoid *ptr); +GLAPI void APIENTRY glTexCoordPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *ptr); +GLAPI void APIENTRY glEdgeFlagPointerEXT(GLsizei stride, GLsizei count, const GLboolean *ptr); +GLAPI void APIENTRY glGetPointervEXT(GLenum pname, void **params); +GLAPI void APIENTRY glArrayElementEXT(GLint i); +GLAPI void APIENTRY glDrawArraysEXT(GLenum mode, GLint first, GLsizei count); + +typedef void (APIENTRY * PFNGLARRAYELEMENTEXTPROC) (GLint i); +typedef void (APIENTRY * PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); +typedef void (APIENTRY * PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count); +typedef void (APIENTRY * PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean *pointer); +typedef void (APIENTRY * PFNGLGETPOINTERVEXTPROC) (GLenum pname, GLvoid* *params); +typedef void (APIENTRY * PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); +typedef void (APIENTRY * PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); +typedef void (APIENTRY * PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); +typedef void (APIENTRY * PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); + +#endif /* GL_EXT_vertex_array */ + + + +/* + * 35. GL_SGIS_texture_edge_clamp + */ +#ifndef GL_SGIS_texture_edge_clamp +#define GL_SGIS_texture_edge_clamp 1 + +#define GL_CLAMP_TO_EDGE_SGIS 0x812F + +#endif /* GL_SGIS_texture_edge_clamp */ + + + +/* + * 37. GL_EXT_blend_minmax + */ +#ifndef GL_EXT_blend_minmax +#define GL_EXT_blend_minmax 1 + +#define GL_FUNC_ADD_EXT 0x8006 +#define GL_MIN_EXT 0x8007 +#define GL_MAX_EXT 0x8008 +#define GL_BLEND_EQUATION_EXT 0x8009 + +GLAPI void APIENTRY glBlendEquationEXT(GLenum mode); + +typedef void (APIENTRY * PFNGLBLENDEQUATIONEXTPROC) (GLenum mode); + +#endif /* GL_EXT_blend_minmax */ + + + +/* + * 38. GL_EXT_blend_subtract (requires GL_EXT_blend_max) + */ +#ifndef GL_EXT_blend_subtract +#define GL_EXT_blend_subtract 1 + +#define GL_FUNC_SUBTRACT_EXT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B + +#endif /* GL_EXT_blend_subtract */ + + + +/* + * 39. GL_EXT_blend_logic_op + */ +#ifndef GL_EXT_blend_logic_op +#define GL_EXT_blend_logic_op 1 + +/* No new tokens or functions */ + +#endif /* GL_EXT_blend_logic_op */ + + + +/* + * 52. GL_SGIX_sprite + */ +#ifndef GL_SGIX_sprite +#define GL_SGIX_sprite 1 + +#define GL_SPRITE_SGIX 0x8148 +#define GL_SPRITE_MODE_SGIX 0x8149 +#define GL_SPRITE_AXIS_SGIX 0x814A +#define GL_SPRITE_TRANSLATION_SGIX 0x814B +#define GL_SPRITE_AXIAL_SGIX 0x814C +#define GL_SPRITE_OBJECT_ALIGNED_SGIX 0x814D +#define GL_SPRITE_EYE_ALIGNED_SGIX 0x814E + +GLAPI void APIENTRY glSpriteParameterfSGIX(GLenum pname, GLfloat param); +GLAPI void APIENTRY glSpriteParameterfvSGIX(GLenum pname, const GLfloat *param); +GLAPI void APIENTRY glSpriteParameteriSGIX(GLenum pname, GLint param); +GLAPI void APIENTRY glSpriteParameterivSGIX(GLenum pname, const GLint *param); + +typedef void (APIENTRY * PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRY * PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, const GLfloat *param); +typedef void (APIENTRY * PFNGLSPRITEPARAMETERISGIXPROC) (GLenum pname, GLint param); +typedef void (APIENTRY * PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, const GLint *param); + +#endif /* GL_SGIX_sprite */ + + + +/* + * 54. GL_EXT_point_parameters + */ +#ifndef GL_EXT_point_parameters +#define GL_EXT_point_parameters 1 + +#define GL_POINT_SIZE_MIN_EXT 0x8126 +#define GL_POINT_SIZE_MAX_EXT 0x8127 +#define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128 +#define GL_DISTANCE_ATTENUATION_EXT 0x8129 + +GLAPI void APIENTRY glPointParameterfEXT(GLenum pname, GLfloat param); +GLAPI void APIENTRY glPointParameterfvEXT(GLenum pname, const GLfloat *params); + +typedef void (APIENTRY * PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRY * PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat *params); + +#endif /* GL_EXT_point_parameters */ + + + +/* + * 55. GL_SGIX_instruments + */ +#ifndef GL_SGIX_instruments +#define GL_SGIX_instruments 1 + +#define GL_INSTRUMENT_BUFFER_POINTER_SGIX 0x8180 +#define GL_INSTRUMENT_MEASUREMENTS_SGIX 0x8181 + +GLAPI GLint APIENTRY glGetInstrumentsSGIX(void); +GLAPI void APIENTRY glInstrumentsBufferSGIX(GLsizei size, GLint *buf); +GLAPI GLint APIENTRY glPollInstrumentsSGIX(GLint *markerp); +GLAPI void APIENTRY glReadInstrumentsSGIX(GLint marker); +GLAPI void APIENTRY glStartInstrumentsSGIX(void); +GLAPI void APIENTRY glStopInstrumentsSGIX(GLint marker); + +typedef GLint (APIENTRY * PFNGLGETINSTRUMENTSSGIXPROC) (void); +typedef void (APIENTRY * PFNGLINSTRUMENTSBUFFERSGIXPROC) (GLsizei size, GLint *buf); +typedef GLint (APIENTRY * PFNGLPOLLINSTRUMENTSSGIXPROC) (GLint *markerp); +typedef void (APIENTRY * PFNGLREADINSTRUMENTSSGIXPROC) (GLint marker); +typedef void (APIENTRY * PFNGLSTARTINSTRUMENTSSGIXPROC) (void); +typedef void (APIENTRY * PFNGLSTOPINSTRUMENTSSGIXPROC) (GLint marker); + +#endif + + +/* + * 57. GL_SGIX_framezoom + */ +#ifndef GL_SGIX_framezoom +#define GL_SGIX_framezoom 1 + +#define GL_FRAMEZOOM_SGIX 0x818B +#define GL_FRAMEZOOM_FACTOR_SGIX 0x818C +#define GL_MAX_FRAMEZOOM_FACTOR_SGIX 0x818D + +GLAPI void APIENTRY glFrameZoomSGIX(GLint factor); + +typedef void (APIENTRY * PFNGLFRAMEZOOMSGIXPROC) (GLint factor); + +#endif /* GL_SGIX_framezoom */ + + + +/* + * 58. GL_SGIX_tag_sample_buffer + */ +#ifndef GL_SGIX_tag_sample_buffer +#define GL_SGIX_tag_sample_buffer 1 + +GLAPI void APIENTRY glTagSampleBufferSGIX(void); + +typedef void (APIENTRY * PFNGLTAGSAMPLEBUFFERSGIXPROC) (void); + +#endif /* GL_SGIX_tag_sample_buffer */ + + + +/* + * 60. GL_SGIX_reference_plane + */ +#ifndef GL_SGIX_reference_plane +#define GL_SGIX_reference_plane 1 + +#define GL_REFERENCE_PLANE_SGIX 0x817D +#define GL_REFERENCE_PLANE_EQUATION_SGIX 0x817E + +GLAPI void APIENTRY glReferencePlaneSGIX(const GLdouble *plane); + +typedef void (APIENTRY * PFNGLREFERENCEPLANESGIXPROC) (const GLdouble *plane); + +#endif /* GL_SGIX_reference_plane */ + + + +/* + * 61. GL_SGIX_flush_raster + */ +#ifndef GL_SGIX_flush_raster +#define GL_SGIX_flush_raster 1 + +GLAPI void APIENTRY glFlushRasterSGIX(void); + +typedef void (APIENTRY * PFNGLFLUSHRASTERSGIXPROC) (void); + +#endif /* GL_SGIX_flush_raster */ + + + +/* + * 74. GL_EXT_color_subtable + */ + +#ifndef GL_EXT_color_subtable +#define GL_EXT_color_subtable 1 + +GLAPI void APIENTRY glColorSubTableEXT(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data); +GLAPI void APIENTRY glCopyColorSubTableEXT(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); + +typedef void (APIENTRY * PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data); +typedef void (APIENTRY * PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); + +#endif + + +/* + * 77. GL_PGI_misc_hints + */ +#ifndef GL_PGI_misc_hints +#define GL_PGI_misc_hints 1 + +#define GL_PREFER_DOUBLEBUFFER_HINT_PGI 107000 +#define GL_STRICT_DEPTHFUNC_HINT_PGI 107030 +#define GL_STRICT_LIGHTING_HINT_PGI 107031 +#define GL_STRICT_SCISSOR_HINT_PGI 107032 +#define GL_FULL_STIPPLE_HINT_PGI 107033 +#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 107011 +#define GL_NATIVE_GRAPHICS_END_HINT_PGI 107012 +#define GL_CONSERVE_MEMORY_HINT_PGI 107005 +#define GL_RECLAIM_MEMORY_HINT_PGI 107006 +#define GL_ALWAYS_FAST_HINT_PGI 107020 +#define GL_ALWAYS_SOFT_HINT_PGI 107021 +#define GL_ALLOW_DRAW_OBJ_HINT_PGI 107022 +#define GL_ALLOW_DRAW_WIN_HINT_PGI 107023 +#define GL_ALLOW_DRAW_FRG_HINT_PGI 107024 +#define GL_ALLOW_DRAW_SPN_HINT_PGI 107024 +#define GL_ALLOW_DRAW_MEM_HINT_PGI 107025 +#define GL_CLIP_NEAR_HINT_PGI 107040 +#define GL_CLIP_FAR_HINT_PGI 107041 +#define GL_WIDE_LINE_HINT_PGI 107042 +#define GL_BACK_NORMALS_HINT_PGI 107043 +#define GL_NATIVE_GRAPHICS_HANDLE_PGI 107010 + +GLAPI void APIENTRY glHintPGI(GLenum target, GLint mode); + +typedef void (APIENTRY * PFNGLHINTPGIPROC) (GLenum target, GLint mode); + +#endif /* GL_PGI_misc_hints */ + + + +/* + * 78. GL_EXT_paletted_texture + */ +#ifndef GL_EXT_paletted_texture +#define GL_EXT_paletted_texture 1 + +#define GL_TABLE_TOO_LARGE_EXT 0x8031 +#define GL_COLOR_TABLE_FORMAT_EXT 0x80D8 +#define GL_COLOR_TABLE_WIDTH_EXT 0x80D9 +#define GL_COLOR_TABLE_RED_SIZE_EXT 0x80DA +#define GL_COLOR_TABLE_GREEN_SIZE_EXT 0x80DB +#define GL_COLOR_TABLE_BLUE_SIZE_EXT 0x80DC +#define GL_COLOR_TABLE_ALPHA_SIZE_EXT 0x80DD +#define GL_COLOR_TABLE_LUMINANCE_SIZE_EXT 0x80DE +#define GL_COLOR_TABLE_INTENSITY_SIZE_EXT 0x80DF +#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED +#define GL_COLOR_INDEX1_EXT 0x80E2 +#define GL_COLOR_INDEX2_EXT 0x80E3 +#define GL_COLOR_INDEX4_EXT 0x80E4 +#define GL_COLOR_INDEX8_EXT 0x80E5 +#define GL_COLOR_INDEX12_EXT 0x80E6 +#define GL_COLOR_INDEX16_EXT 0x80E7 + +GLAPI void APIENTRY glColorTableEXT(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); +GLAPI void APIENTRY glColorSubTableEXT(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); +GLAPI void APIENTRY glGetColorTableEXT(GLenum target, GLenum format, GLenum type, GLvoid *table); +GLAPI void APIENTRY glGetColorTableParameterfvEXT(GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetColorTableParameterivEXT(GLenum target, GLenum pname, GLint *params); + +typedef void (APIENTRY * PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); +typedef void (APIENTRY * PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); +typedef void (APIENTRY * PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table); +typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); + +#endif /* GL_EXT_paletted_texture */ + + + +/* + * 79. GL_EXT_clip_volume_hint + */ +#ifndef GL_EXT_clip_volume_hint +#define GL_EXT_clip_volume_hint 1 + +#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F + +#endif /* GL_EXT_clip_volume_hint */ + + + +/* + * 80. GL_SGIX_list_priority + */ +#ifndef GL_SGIX_list_priority +#define GL_SGIX_list_priority 1 + +#define GL_LIST_PRIORITY_SGIX 0x8182 + +GLAPI void APIENTRY glGetListParameterfvSGIX(GLuint list, GLenum name, GLfloat *param); +GLAPI void APIENTRY glGetListParameterivSGIX(GLuint list, GLenum name, GLint *param); +GLAPI void APIENTRY glListParameterfSGIX(GLuint list, GLenum name, GLfloat param); +GLAPI void APIENTRY glListParameterfvSGIX(GLuint list, GLenum name, const GLfloat *param); +GLAPI void APIENTRY glListParameteriSGIX(GLuint list, GLenum name, GLint param); +GLAPI void APIENTRY glListParameterivSGIX(GLuint list, GLenum name, const GLint *param); + +typedef void (APIENTRY * PFNGLGETLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum name, GLfloat *param); +typedef void (APIENTRY * PFNGLGETLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum name, GLint *param); +typedef void (APIENTRY * PFNGLLISTPARAMETERFSGIXPROC) (GLuint list, GLenum name, GLfloat param); +typedef void (APIENTRY * PFNGLLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum name, const GLfloat *param); +typedef void (APIENTRY * PFNGLLISTPARAMETERISGIXPROC) (GLuint list, GLenum name, GLint param); +typedef void (APIENTRY * PFNGLLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum name, const GLint *param); + +#endif /* GL_SGIX_list_priority */ + + + +/* + * 94. GL_EXT_index_material + */ +#ifndef GL_EXT_index_material +#define GL_EXT_index_material 1 + +#define GL_INDEX_MATERIAL_EXT ? +#define GL_INDEX_MATERIAL_PARAMETER_EXT ? +#define GL_INDEX_MATERIAL_FACE_EXT ? + +GLAPI void APIENTRY glIndexMaterialEXT(GLenum face, GLenum mode); + +typedef void (APIENTRY * PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode); + +#endif /* GL_EXT_index_material */ + + + +/* + * 95. GL_EXT_index_func + */ +#ifndef GL_EXT_index_func +#define GL_EXT_index_func 1 + +#define GL_INDEX_TEST_EXT ? +#define GL_INDEX_TEST_FUNC_EXT ? +#define GL_INDEX_TEST_REF_EXT ? + +GLAPI void APIENTRY glIndexFuncEXT(GLenum func, GLfloat ref); + +typedef void (APIENTRY * PFNGLINDEXFUNCEXTPROC) (GLenum func, GLfloat ref); + +#endif /* GL_EXT_index_func */ + + + +/* + * 97. GL_EXT_compiled_vertex_array + */ +#ifndef GL_EXT_compiled_vertex_array +#define GL_EXT_compiled_vertex_array 1 + +#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8 +#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9 + +GLAPI void APIENTRY glLockArraysEXT(GLint first, GLsizei count); +GLAPI void APIENTRY glUnlockArraysEXT(void); + +typedef void (APIENTRY * PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count); +typedef void (APIENTRY * PFNGLUNLOCKARRAYSEXTPROC) (void); + +#endif /* GL_EXT_compiled_vertex_array */ + + + +/* + * 98. GL_EXT_cull_vertex + */ +#ifndef GL_EXT_cull_vertex +#define GL_EXT_cull_vertex 1 + +#define GL_CULL_VERTEX_EXT 0x81AA +#define GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB +#define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC + +GLAPI void APIENTRY glCullParameterdvEXT(GLenum pname, const GLdouble *params); +GLAPI void APIENTRY glCullParameterfvEXT(GLenum pname, const GLfloat *params); + +typedef void (APIENTRY * PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble* params); +typedef void (APIENTRY * PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat* params); + +#endif /* GL_EXT_cull_vertex */ + + + +/* + * 102. GL_SGIX_fragment_lighting + */ +#ifndef GL_SGIX_fragment_lighting +#define GL_SGIX_fragment_lighting 1 + +GLAPI void APIENTRY glFragmentColorMaterialSGIX(GLenum face, GLenum mode); +GLAPI void APIENTRY glFragmentLightfSGIX(GLenum light, GLenum pname, GLfloat param); +GLAPI void APIENTRY glFragmentLightfvSGIX(GLenum light, GLenum pname, const GLfloat * params); +GLAPI void APIENTRY glFragmentLightiSGIX(GLenum light, GLenum pname, GLint param); +GLAPI void APIENTRY glFragmentLightivSGIX(GLenum light, GLenum pname, const GLint * params); +GLAPI void APIENTRY glFragmentLightModelfSGIX(GLenum pname, GLfloat param); +GLAPI void APIENTRY glFragmentLightModelfvSGIX(GLenum pname, const GLfloat * params); +GLAPI void APIENTRY glFragmentLightModeliSGIX(GLenum pname, GLint param); +GLAPI void APIENTRY glFragmentLightModelivSGIX(GLenum pname, const GLint * params); +GLAPI void APIENTRY glFragmentMaterialfSGIX(GLenum face, GLenum pname, GLfloat param); +GLAPI void APIENTRY glFragmentMaterialfvSGIX(GLenum face, GLenum pname, const GLfloat * params); +GLAPI void APIENTRY glFragmentMaterialiSGIX(GLenum face, GLenum pname, GLint param); +GLAPI void APIENTRY glFragmentMaterialivSGIX(GLenum face, GLenum pname, const GLint * params); +GLAPI void APIENTRY glGetFragmentLightfvSGIX(GLenum light, GLenum pname, GLfloat * params); +GLAPI void APIENTRY glGetFragmentLightivSGIX(GLenum light, GLenum pname, GLint * params); +GLAPI void APIENTRY glGetFragmentMaterialfvSGIX(GLenum face, GLenum pname, GLfloat * params); +GLAPI void APIENTRY glGetFragmentMaterialivSGIX(GLenum face, GLenum pname, GLint * params); +GLAPI void APIENTRY glLightEnviSGIX(GLenum pname, GLint param); + +typedef void (APIENTRY * PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode); +typedef void (APIENTRY * PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param); +typedef void (APIENTRY * PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, const GLfloat * params); +typedef void (APIENTRY * PFNGLFRAGMENTLIGHTISGIXPROC) (GLenum light, GLenum pname, GLint param); +typedef void (APIENTRY * PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, const GLint * params); +typedef void (APIENTRY * PFNGLFRAGMENTLIGHTMODELFSGIXPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRY * PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, const GLfloat * params); +typedef void (APIENTRY * PFNGLFRAGMENTLIGHTMODELISGIXPROC) (GLenum pname, GLint param); +typedef void (APIENTRY * PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, const GLint * params); +typedef void (APIENTRY * PFNGLFRAGMENTMATERIALFSGIXPROC) (GLenum face, GLenum pname, GLfloat param); +typedef void (APIENTRY * PFNGLFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat * params); +typedef void (APIENTRY * PFNGLFRAGMENTMATERIALISGIXPROC) (GLenum face, GLenum pname, GLint param); +typedef void (APIENTRY * PFNGLFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint * params); +typedef void (APIENTRY * PFNGLGETFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat * params); +typedef void (APIENTRY * PFNGLGETFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint * params); +typedef void (APIENTRY * PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, GLfloat * params); +typedef void (APIENTRY * PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, GLint * params); +typedef void (APIENTRY * PFNGLLIGHTENVISGIXPROC) (GLenum pname, GLint param); + +#endif /* GL_SGIX_fragment_lighting */ + + + +/* + * 129. GL_EXT_bgra + */ +#ifndef GL_EXT_bgra +#define GL_EXT_bgra 1 + +#define GL_BGR_EXT 0x80E0 +#define GL_BGRA_EXT 0x80E1 + +#endif /* GL_EXT_bgra */ + + + +/* + * 141. GL_EXT_shared_texture_palette (req's GL_EXT_paletted_texture) + */ +#ifndef GL_EXT_shared_texture_palette +#define GL_EXT_shared_texture_palette 1 + +#define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB + +#endif /* GL_EXT_shared_texture_palette */ + + + +/* + * 149. GL_EXT_fog_coord + */ +#ifndef GL_EXT_fog_coord +#define GL_EXT_fog_coord 1 + +#define GL_FOG_COORDINATE_SOURCE_EXT 0x8450 +#define GL_FOG_COORDINATE_EXT 0x8451 +#define GL_FRAGMENT_DEPTH_EXT 0x8452 +#define GL_CURRENT_FOG_COORDINATE_EXT 0x8453 +#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454 +#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455 +#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456 +#define GL_FOG_COORDINATE_ARRAY_EXT 0x8457 + +GLAPI void APIENTRY glFogCoordfEXT(GLfloat coord); +GLAPI void APIENTRY glFogCoordfvEXT(const GLfloat * coord); +GLAPI void APIENTRY glFogCoorddEXT(GLdouble coord); +GLAPI void APIENTRY glFogCoorddvEXT(const GLdouble * coord); +GLAPI void APIENTRY glFogCoordPointerEXT(GLenum type, GLsizei stride, const GLvoid * pointer); + +typedef void (APIENTRY * PFNGLFOGCOORDFEXTPROC) (GLfloat coord); +typedef void (APIENTRY * PFNGLFOGCOORDFVEXTPROC) (const GLfloat * coord); +typedef void (APIENTRY * PFNGLFOGCOORDDEXTPROC) (GLdouble coord); +typedef void (APIENTRY * PFNGLFOGCOORDDVEXTPROC) (const GLdouble * coord); +typedef void (APIENTRY * PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid * pointer); + +#endif + + + +/* + * 158. GL_EXT_texture_env_combine + */ +#ifndef GL_EXT_texture_env_combine +#define GL_EXT_texture_env_combine 1 + +#define GL_COMBINE_EXT 0x8570 +#define GL_COMBINE_RGB_EXT 0x8571 +#define GL_COMBINE_ALPHA_EXT 0x8572 +#define GL_RGB_SCALE_EXT 0x8573 +#define GL_ADD_SIGNED_EXT 0x8574 +#define GL_INTERPOLATE_EXT 0x8575 +#define GL_CONSTANT_EXT 0x8576 +#define GL_PRIMARY_COLOR_EXT 0x8577 +#define GL_PREVIOUS_EXT 0x8578 +#define GL_SOURCE0_RGB_EXT 0x8580 +#define GL_SOURCE1_RGB_EXT 0x8581 +#define GL_SOURCE2_RGB_EXT 0x8582 +#define GL_SOURCE0_ALPHA_EXT 0x8588 +#define GL_SOURCE1_ALPHA_EXT 0x8589 +#define GL_SOURCE2_ALPHA_EXT 0x858A +#define GL_OPERAND0_RGB_EXT 0x8590 +#define GL_OPERAND1_RGB_EXT 0x8591 +#define GL_OPERAND2_RGB_EXT 0x8592 +#define GL_OPERAND0_ALPHA_EXT 0x8598 +#define GL_OPERAND1_ALPHA_EXT 0x8599 +#define GL_OPERAND2_ALPHA_EXT 0x859A + +#endif /* GL_EXT_texture_env_combine */ + + + +/* + * 173. GL_EXT_blend_func_separate + */ +#ifndef GL_EXT_blend_func_separate +#define GL_EXT_blend_func_separate 1 + +#define GL_BLEND_DST_RGB_EXT 0x80C8 +#define GL_BLEND_SRC_RGB_EXT 0x80C9 +#define GL_BLEND_DST_ALPHA_EXT 0x80CA +#define GL_BLEND_SRC_ALPHA_EXT 0x80CB + +GLAPI void APIENTRY glBlendFuncSeparateEXT(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); + +typedef void (APIENTRY * PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); + +#endif /* GL_EXT_blend_func_separate */ + + + +/* + * 173. GL_INGR_blend_func_separate + */ +#ifndef GL_INGR_blend_func_separate +#define GL_INGR_blend_func_separate 1 + +#define GL_BLEND_DST_RGB_INGR 0x80C8 +#define GL_BLEND_SRC_RGB_INGR 0x80C9 +#define GL_BLEND_DST_ALPHA_INGR 0x80CA +#define GL_BLEND_SRC_ALPHA_INGR 0x80CB + +GLAPI void APIENTRY glBlendFuncSeparateINGR(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); + +typedef void (APIENTRY * PFNGLBLENDFUNCSEPARATEINGRPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); + +#endif /* GL_INGR_blend_func_separate */ + + + +/* + * 176. GL_EXT_stencil_wrap + */ +#ifndef GL_EXT_stencil_wrap +#define GL_EXT_stencil_wrap 1 + +#define GL_INCR_WRAP_EXT 0x8507 +#define GL_DECR_WRAP_EXT 0x8508 + +#endif /* GL_EXT_stencil_wrap */ + + + +/* + * 179. GL_NV_texgen_reflection + */ +#ifndef GL_NV_texgen_reflection +#define GL_NV_texgen_reflection 1 + +#define GL_NORMAL_MAP_NV 0x8511 +#define GL_REFLECTION_MAP_NV 0x8512 + +#endif /* GL_NV_texgen_reflection */ + + + +/* + * 185. GL_EXT_texture_env_add + */ +#ifndef GL_EXT_texture_env_add +#define GL_EXT_texture_env_add 1 + +/* No new tokens or functions */ + +#endif /* GL_EXT_texture_env_add */ + + + +/* + * ??. GL_WIN_swap_hint + */ +#ifndef GL_WIN_swap_hint +#define GL_WIN_swap_hint 1 + +GLAPI void APIENTRY glAddSwapHintRectWIN(GLint x, GLint y, GLsizei width, GLsizei height); + +typedef void (APIENTRY * PFNGLADDSWAPHINTRECTWINPROC) (GLint x, GLint y, GLsizei width, GLsizei height); + +#endif /* GL_WIN_swap_hint */ + + + +/* + * 188. GL_EXT_vertex_weighting + */ +#ifndef GL_EXT_vertex_weighting +#define GL_EXT_vertex_weighting 1 + +#define GL_VERTEX_WEIGHTING_EXT 0x8509 +#define GL_MODELVIEW0_EXT 0x1700 +#define GL_MODELVIEW1_EXT 0x850a +#define GL_CURRENT_VERTEX_WEIGHT_EXT 0x850b +#define GL_VERTEX_WEIGHT_ARRAY_EXT 0x850c +#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850d +#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850e +#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850f +#define GL_MODELVIEW0_STACK_DEPTH_EXT 0x0BA3 +#define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502 +#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510 + +GLAPI void APIENTRY glVertexWeightfEXT(GLfloat weight); +GLAPI void APIENTRY glVertexWeightfvEXT(const GLfloat *weight); +GLAPI void APIENTRY glVertexWeightPointerEXT(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + +typedef void (APIENTRY * PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight); +typedef void (APIENTRY * PFNGLVERTEXWEIGHTFVEXTPROC) (const GLfloat *weight); +typedef void (APIENTRY * PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + +#endif + + + +/* + * 189. GL_NV_light_max_exponent + */ +#ifndef GL_NV_light_max_exponent +#define GL_NV_light_max_exponent 1 + +#define GL_MAX_SHININESS_NV 0x8507 +#define GL_MAX_SPOT_EXPONENT_NV 0x8508 + +#endif + + + +/* + * 190. GL_NV_vertex_array_range + */ +#ifndef GL_NV_vertex_array_range +#define GL_NV_vertex_array_range 1 + +/* TOKENS? */ + +GLAPI void APIENTRY glFlushVertexArrayRangeNV(void); +GLAPI void APIENTRY glVertexArrayRangeNV(GLsizei size, const GLvoid * pointer); + +typedef void (APIENTRY * PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void); + +#endif + + + +/* + * 191. GL_NV_register_combiners + */ +#ifndef GL_NV_register_combiners +#define GL_NV_register_combiners 1 + +/* TOKENS? */ + +#ifdef VMS +/*VMS only allows externals of maximal 31 characters! */ +#define glGetCombinerOutputParameterfvNV glGetCombinerOutputParameterfvN +#define glGetCombinerOutputParameterivNV glGetCombinerOutputParameterivN +#define glGetFinalCombinerInputParameterfvNV glGetFnlCmbinerInpParameterfvNV +#define glGetFinalCombinerInputParameterivNV glGetFnlCmbinerInpParameterivNV +#endif + +GLAPI void APIENTRY glCombinerParameterfvNV(GLenum pname, const GLfloat * params); +GLAPI void APIENTRY glCombinerParameterfNV(GLenum pname, GLfloat param); +GLAPI void APIENTRY glCombinerParameterivNV(GLenum pname, const GLint * params); +GLAPI void APIENTRY glCombinerParameteriNV(GLenum pname, GLint param); +GLAPI void APIENTRY glCombinerInputNV(GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); +GLAPI void APIENTRY glCombinerOutputNV(GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); +GLAPI void APIENTRY glFinalCombinerInputNV(GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); +GLAPI void APIENTRY glGetCombinerInputParameterfvNV(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat * params); +GLAPI void APIENTRY glGetCombinerInputParameterivNV(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint * params); +GLAPI void APIENTRY glGetCombinerOutputParameterfvNV(GLenum stage, GLenum portion, GLenum pname, GLfloat * params); +GLAPI void APIENTRY glGetCombinerOutputParameterivNV(GLenum stage, GLenum portion, GLenum pname, GLint * params); +GLAPI void APIENTRY glGetFinalCombinerInputParameterfvNV(GLenum variable, GLenum pname, GLfloat * params); +GLAPI void APIENTRY glGetFinalCombinerInputParameterivNV(GLenum variable, GLenum pname, GLint * params); + +typedef void (APIENTRY * PFNGLVERTEXARRAYRANGENVPROC) (GLsizei size, const GLvoid * pointer); +typedef void (APIENTRY * PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat * params); +typedef void (APIENTRY * PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRY * PFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint * params); +typedef void (APIENTRY * PFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param); +typedef void (APIENTRY * PFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); +typedef void (APIENTRY * PFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); +typedef void (APIENTRY * PFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); +typedef void (APIENTRY * PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat * params); +typedef void (APIENTRY * PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint * params); +typedef void (APIENTRY * PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat * params); +typedef void (APIENTRY * PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint * params); +typedef void (APIENTRY * PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat * params); +typedef void (APIENTRY * PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint * params); + +#endif /* GL_NV_register_combiners */ + + + +/* + * 192. GL_NV_fog_distance + */ +#ifndef GL_NV_fog_distance +#define GL_NV_fog_distance 1 + +#define GL_FOG_DISTANCE_MODE_NV 0x855a +#define GL_EYE_RADIAL_NV 0x855b +#define GL_EYE_PLANE_ABSOLUTE_NV 0x855c + +#endif /* GL_NV_fog_distance*/ + + + +/* + * 194. GL_NV_blend_square + */ +#ifndef GL_NV_blend_square +#define GL_NV_blend_square 1 + +/* no tokens or functions */ + +#endif /* GL_NV_blend_square */ + + + +/* + * 195. GL_NV_texture_env_combine4 + */ +#ifndef GL_NV_texture_env_combine4 +#define GL_NV_texture_env_combine4 1 + +#define GL_COMBINE4_NV 0x8503 +#define GL_SOURCE3_RGB_NV 0x8583 +#define GL_SOURCE3_ALPHA_NV 0x858B +#define GL_OPERAND3_RGB_NV 0x8593 +#define GL_OPERAND3_ALPHA_NV 0x859B + +#endif /* GL_NV_texture_env_combine4 */ + + + +/* + * 196. GL_MESA_resize_bufffers + */ +#ifndef GL_MESA_resize_buffers +#define GL_MESA_resize_buffers 1 + +GLAPI void APIENTRY glResizeBuffersMESA(void); + +typedef void (APIENTRY * PFNGLRESIZEBUFFERSMESAPROC) (void); + +#endif /* GL_MESA_resize_bufffers */ + + + +/* + * 197. GL_MESA_window_pos + */ +#ifndef GL_MESA_window_pos +#define GL_MESA_window_pos 1 + +GLAPI void APIENTRY glWindowPos2iMESA(GLint x, GLint y); +GLAPI void APIENTRY glWindowPos2sMESA(GLshort x, GLshort y); +GLAPI void APIENTRY glWindowPos2fMESA(GLfloat x, GLfloat y); +GLAPI void APIENTRY glWindowPos2dMESA(GLdouble x, GLdouble y); +GLAPI void APIENTRY glWindowPos2ivMESA(const GLint *p); +GLAPI void APIENTRY glWindowPos2svMESA(const GLshort *p); +GLAPI void APIENTRY glWindowPos2fvMESA(const GLfloat *p); +GLAPI void APIENTRY glWindowPos2dvMESA(const GLdouble *p); +GLAPI void APIENTRY glWindowPos3iMESA(GLint x, GLint y, GLint z); +GLAPI void APIENTRY glWindowPos3sMESA(GLshort x, GLshort y, GLshort z); +GLAPI void APIENTRY glWindowPos3fMESA(GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glWindowPos3dMESA(GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glWindowPos3ivMESA(const GLint *p); +GLAPI void APIENTRY glWindowPos3svMESA(const GLshort *p); +GLAPI void APIENTRY glWindowPos3fvMESA(const GLfloat *p); +GLAPI void APIENTRY glWindowPos3dvMESA(const GLdouble *p); +GLAPI void APIENTRY glWindowPos4iMESA(GLint x, GLint y, GLint z, GLint w); +GLAPI void APIENTRY glWindowPos4sMESA(GLshort x, GLshort y, GLshort z, GLshort w); +GLAPI void APIENTRY glWindowPos4fMESA(GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void APIENTRY glWindowPos4dMESA(GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glWindowPos4ivMESA(const GLint *p); +GLAPI void APIENTRY glWindowPos4svMESA(const GLshort *p); +GLAPI void APIENTRY glWindowPos4fvMESA(const GLfloat *p); +GLAPI void APIENTRY glWindowPos4dvMESA(const GLdouble *p); + +typedef void (APIENTRY * PFNGLWINDOWPOS2IMESAPROC) (GLint x, GLint y); +typedef void (APIENTRY * PFNGLWINDOWPOS2SMESAPROC) (GLshort x, GLshort y); +typedef void (APIENTRY * PFNGLWINDOWPOS2FMESAPROC) (GLfloat x, GLfloat y); +typedef void (APIENTRY * PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y); +typedef void (APIENTRY * PFNGLWINDOWPOS2IVMESAPROC) (const GLint *p); +typedef void (APIENTRY * PFNGLWINDOWPOS2SVMESAPROC) (const GLshort *p); +typedef void (APIENTRY * PFNGLWINDOWPOS2FVMESAPROC) (const GLfloat *p); +typedef void (APIENTRY * PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble *p); +typedef void (APIENTRY * PFNGLWINDOWPOS3IMESAPROC) (GLint x, GLint y, GLint z); +typedef void (APIENTRY * PFNGLWINDOWPOS3SMESAPROC) (GLshort x, GLshort y, GLshort z); +typedef void (APIENTRY * PFNGLWINDOWPOS3FMESAPROC) (GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRY * PFNGLWINDOWPOS3DMESAPROC) (GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRY * PFNGLWINDOWPOS3IVMESAPROC) (const GLint *p); +typedef void (APIENTRY * PFNGLWINDOWPOS3SVMESAPROC) (const GLshort *p); +typedef void (APIENTRY * PFNGLWINDOWPOS3FVMESAPROC) (const GLfloat *p); +typedef void (APIENTRY * PFNGLWINDOWPOS3DVMESAPROC) (const GLdouble *p); +typedef void (APIENTRY * PFNGLWINDOWPOS4SMESAPROC) (GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (APIENTRY * PFNGLWINDOWPOS4FMESAPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRY * PFNGLWINDOWPOS4DMESAPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRY * PFNGLWINDOWPOS4IVMESAPROC) (const GLint *p); +typedef void (APIENTRY * PFNGLWINDOWPOS4SVMESAPROC) (const GLshort *p); +typedef void (APIENTRY * PFNGLWINDOWPOS4FVMESAPROC) (const GLfloat *p); +typedef void (APIENTRY * PFNGLWINDOWPOS4DVMESAPROC) (const GLdouble *p); + +#endif /* GL_MESA_window_pos */ + + + +/* + * ARB 0. GL_ARB_multitexture + */ +#ifndef GL_ARB_multitexture +#define GL_ARB_multitexture 1 + +#define GL_TEXTURE0_ARB 0x84C0 +#define GL_TEXTURE1_ARB 0x84C1 +#define GL_TEXTURE2_ARB 0x84C2 +#define GL_TEXTURE3_ARB 0x84C3 +#define GL_TEXTURE4_ARB 0x84C4 +#define GL_TEXTURE5_ARB 0x84C5 +#define GL_TEXTURE6_ARB 0x84C6 +#define GL_TEXTURE7_ARB 0x84C7 +#define GL_TEXTURE8_ARB 0x84C8 +#define GL_TEXTURE9_ARB 0x84C9 +#define GL_TEXTURE10_ARB 0x84CA +#define GL_TEXTURE11_ARB 0x84CB +#define GL_TEXTURE12_ARB 0x84CC +#define GL_TEXTURE13_ARB 0x84CD +#define GL_TEXTURE14_ARB 0x84CE +#define GL_TEXTURE15_ARB 0x84CF +#define GL_TEXTURE16_ARB 0x84D0 +#define GL_TEXTURE17_ARB 0x84D1 +#define GL_TEXTURE18_ARB 0x84D2 +#define GL_TEXTURE19_ARB 0x84D3 +#define GL_TEXTURE20_ARB 0x84D4 +#define GL_TEXTURE21_ARB 0x84D5 +#define GL_TEXTURE22_ARB 0x84D6 +#define GL_TEXTURE23_ARB 0x84D7 +#define GL_TEXTURE24_ARB 0x84D8 +#define GL_TEXTURE25_ARB 0x84D9 +#define GL_TEXTURE26_ARB 0x84DA +#define GL_TEXTURE27_ARB 0x84DB +#define GL_TEXTURE28_ARB 0x84DC +#define GL_TEXTURE29_ARB 0x84DD +#define GL_TEXTURE30_ARB 0x84DE +#define GL_TEXTURE31_ARB 0x84DF +#define GL_ACTIVE_TEXTURE_ARB 0x84E0 +#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1 +#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2 + +GLAPI void APIENTRY glActiveTextureARB(GLenum texture); +GLAPI void APIENTRY glClientActiveTextureARB(GLenum texture); +GLAPI void APIENTRY glMultiTexCoord1dARB(GLenum target, GLdouble s); +GLAPI void APIENTRY glMultiTexCoord1dvARB(GLenum target, const GLdouble *v); +GLAPI void APIENTRY glMultiTexCoord1fARB(GLenum target, GLfloat s); +GLAPI void APIENTRY glMultiTexCoord1fvARB(GLenum target, const GLfloat *v); +GLAPI void APIENTRY glMultiTexCoord1iARB(GLenum target, GLint s); +GLAPI void APIENTRY glMultiTexCoord1ivARB(GLenum target, const GLint *v); +GLAPI void APIENTRY glMultiTexCoord1sARB(GLenum target, GLshort s); +GLAPI void APIENTRY glMultiTexCoord1svARB(GLenum target, const GLshort *v); +GLAPI void APIENTRY glMultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t); +GLAPI void APIENTRY glMultiTexCoord2dvARB(GLenum target, const GLdouble *v); +GLAPI void APIENTRY glMultiTexCoord2fARB(GLenum target, GLfloat s, GLfloat t); +GLAPI void APIENTRY glMultiTexCoord2fvARB(GLenum target, const GLfloat *v); +GLAPI void APIENTRY glMultiTexCoord2iARB(GLenum target, GLint s, GLint t); +GLAPI void APIENTRY glMultiTexCoord2ivARB(GLenum target, const GLint *v); +GLAPI void APIENTRY glMultiTexCoord2sARB(GLenum target, GLshort s, GLshort t); +GLAPI void APIENTRY glMultiTexCoord2svARB(GLenum target, const GLshort *v); +GLAPI void APIENTRY glMultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r); +GLAPI void APIENTRY glMultiTexCoord3dvARB(GLenum target, const GLdouble *v); +GLAPI void APIENTRY glMultiTexCoord3fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r); +GLAPI void APIENTRY glMultiTexCoord3fvARB(GLenum target, const GLfloat *v); +GLAPI void APIENTRY glMultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r); +GLAPI void APIENTRY glMultiTexCoord3ivARB(GLenum target, const GLint *v); +GLAPI void APIENTRY glMultiTexCoord3sARB(GLenum target, GLshort s, GLshort t, GLshort r); +GLAPI void APIENTRY glMultiTexCoord3svARB(GLenum target, const GLshort *v); +GLAPI void APIENTRY glMultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); +GLAPI void APIENTRY glMultiTexCoord4dvARB(GLenum target, const GLdouble *v); +GLAPI void APIENTRY glMultiTexCoord4fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +GLAPI void APIENTRY glMultiTexCoord4fvARB(GLenum target, const GLfloat *v); +GLAPI void APIENTRY glMultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q); +GLAPI void APIENTRY glMultiTexCoord4ivARB(GLenum target, const GLint *v); +GLAPI void APIENTRY glMultiTexCoord4sARB(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); +GLAPI void APIENTRY glMultiTexCoord4svARB(GLenum target, const GLshort *v); + +typedef void (APIENTRY * PFNGLACTIVETEXTUREARBPROC) (GLenum texture); +typedef void (APIENTRY * PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture); +typedef void (APIENTRY * PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s); +typedef void (APIENTRY * PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s); +typedef void (APIENTRY * PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s); +typedef void (APIENTRY * PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s); +typedef void (APIENTRY * PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t); +typedef void (APIENTRY * PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t); +typedef void (APIENTRY * PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t); +typedef void (APIENTRY * PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t); +typedef void (APIENTRY * PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); +typedef void (APIENTRY * PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); +typedef void (APIENTRY * PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r); +typedef void (APIENTRY * PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r); +typedef void (APIENTRY * PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); +typedef void (APIENTRY * PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +typedef void (APIENTRY * PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); +typedef void (APIENTRY * PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); +typedef void (APIENTRY * PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v); + +#endif /* GL_ARB_multitexture */ + + + +/* + * ARB 2. GL_ARB_tranpose_matrix + */ +#ifndef GL_ARB_transpose_matrix +#define GL_ARB_transpose_matrix 1 + +#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3 +#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4 +#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5 +#define GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6 + +GLAPI void APIENTRY glLoadTransposeMatrixdARB( const GLdouble m[16] ); +GLAPI void APIENTRY glLoadTransposeMatrixfARB( const GLfloat m[16] ); +GLAPI void APIENTRY glMultTransposeMatrixdARB( const GLdouble m[16] ); +GLAPI void APIENTRY glMultTransposeMatrixfARB( const GLfloat m[16] ); + +typedef void (APIENTRY * PFNGLLOADTRANSPOSEMATRIXDARBPROC) ( const GLdouble m[16] ); +typedef void (APIENTRY * PFNGLLOADTRANSPOSEMATRIXFARBPROC) ( const GLfloat m[16] ); +typedef void (APIENTRY * PFNGLMULTTRANSPOSEMATRIXDARBPROC) ( const GLdouble m[16] ); +typedef void (APIENTRY * PFNGLMULTTRANSPOSEMATRIXFARBPROC) ( const GLfloat m[16] ); + +#endif /* GL_ARB_tranpose_matrix */ + + + +/* + * ARB 4. GL_ARB_multisample + */ +#ifndef GL_ARB_multisample +#define GL_ARB_multisample 1 + +GLAPI void APIENTRY glSamplePassARB(GLenum pass); +GLAPI void APIENTRY glSampleCoverageARB(GLclampf value, GLboolean invert); + +typedef void (APIENTRY * PFNGLSAMPLEPASSARBPROC) (GLenum pass); +typedef void (APIENTRY * PFNGLSAMPLECOVERAGEARBPROC) (GLclampf value, GLboolean invert); + +#endif /* GL_ARB_multisample */ + + + +#ifdef __cplusplus +} +#endif + + +#endif /* __glext_h_ */ Index: xc/extras/Mesa/include/GL/glx.h diff -u xc/extras/Mesa/include/GL/glx.h:1.2 xc/extras/Mesa/include/GL/glx.h:1.3 --- xc/extras/Mesa/include/GL/glx.h:1.2 Wed Mar 8 16:39:48 2000 +++ xc/extras/Mesa/include/GL/glx.h Wed Mar 8 16:39:48 2000 @@ -3,7 +3,7 @@ * Mesa 3-D graphics library * Version: 3.3 * - * Copyright (C) 1999 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2000 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"), @@ -224,7 +224,7 @@ GLXContext ctx); extern void glXCopyContext( Display *dpy, GLXContext src, GLXContext dst, - GLuint mask ); + unsigned long mask ); extern void glXSwapBuffers( Display *dpy, GLXDrawable drawable ); Index: xc/extras/Mesa/include/GL/xmesa_x.h diff -u xc/extras/Mesa/include/GL/xmesa_x.h:1.1 xc/extras/Mesa/include/GL/xmesa_x.h:1.3 --- xc/extras/Mesa/include/GL/xmesa_x.h:1.1 Wed Mar 8 16:39:48 2000 +++ xc/extras/Mesa/include/GL/xmesa_x.h Wed Mar 8 16:39:48 2000 @@ -30,7 +30,6 @@ * Authors: * Kevin E. Martin <kevin@precisioninsight.com> * - * $Header: /cvsroot/dri/xc/xc/extras/Mesa/include/GL/xmesa_x.h,v 1.2 2000/01/30 00:27:01 brianp Exp $ */ #ifndef _XMESA_X_H_ @@ -78,7 +77,6 @@ #define GET_REDMASK(__v) __v->visinfo->red_mask #define GET_GREENMASK(__v) __v->visinfo->green_mask #define GET_BLUEMASK(__v) __v->visinfo->blue_mask -#define GET_BITS_PER_PIXEL(__v) bits_per_pixel(__v->display, __v->visinfo) #if defined(__cplusplus) || defined(c_plusplus) #define GET_VISUAL_CLASS(__v) __v->visinfo->c_class #else Index: xc/extras/Mesa/include/GL/xmesa_xf86.h diff -u xc/extras/Mesa/include/GL/xmesa_xf86.h:1.1 xc/extras/Mesa/include/GL/xmesa_xf86.h:1.4 --- xc/extras/Mesa/include/GL/xmesa_xf86.h:1.1 Wed Mar 8 16:39:49 2000 +++ xc/extras/Mesa/include/GL/xmesa_xf86.h Wed Mar 8 16:39:49 2000 @@ -25,12 +25,12 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ +/* $XFree86: xc/extras/Mesa/include/GL/xmesa_xf86.h,v 1.4 2000/03/03 16:02:10 tsi Exp $ */ /* * Authors: * Kevin E. Martin <kevin@precisioninsight.com> * - * $Header: /cvsroot/dri/xc/xc/extras/Mesa/include/GL/xmesa_xf86.h,v 1.2 2000/01/30 00:27:01 brianp Exp $ */ #ifndef _XMESA_XF86_H_ @@ -128,12 +128,12 @@ do { \ xRectangle __r[1]; \ (void) __d; \ - ValidateGC(__b, __gc); \ + ValidateGC((DrawablePtr)__b, __gc); \ __r[0].x = __x; \ __r[0].y = __y; \ __r[0].width = __w; \ __r[0].height = __h; \ - (*__gc->ops->PolyFillRect)(__b, __gc, 1, __r); \ + (*__gc->ops->PolyFillRect)((DrawablePtr)__b, __gc, 1, __r); \ } while (0) #define XMesaPutImage(__d,__b,__gc,__i,__sx,__sy,__x,__y,__w,__h) \ @@ -179,13 +179,6 @@ #define GET_REDMASK(__v) __v->visinfo->redMask #define GET_GREENMASK(__v) __v->visinfo->greenMask #define GET_BLUEMASK(__v) __v->visinfo->blueMask - -/*XXX this was wrong. However, using nplanes instead may fail when - * we have overlay planes in the future! - */ -/*#define GET_BITS_PER_PIXEL(__v) __v->visinfo->bitsPerRGBValue*/ -#define GET_BITS_PER_PIXEL(__v) __v->visinfo->nplanes - #define GET_VISUAL_CLASS(__v) __v->visinfo->class #define GET_VISUAL_DEPTH(__v) __v->visinfo->nplanes #define GET_BLACK_PIXEL(__v) __v->display->blackPixel Index: xc/extras/Mesa/src/bitmap.c diff -u xc/extras/Mesa/src/bitmap.c:1.3 xc/extras/Mesa/src/bitmap.c:1.4 --- xc/extras/Mesa/src/bitmap.c:1.3 Wed Mar 8 16:39:49 2000 +++ xc/extras/Mesa/src/bitmap.c Wed Mar 8 16:39:49 2000 @@ -61,15 +61,6 @@ return; /* NULL bitmap is legal, a no-op */ } - if (ctx->NewState) { - gl_update_state(ctx); - gl_reduced_prim_change( ctx, GL_BITMAP ); - } - - if (ctx->PB->primitive!=GL_BITMAP) { /* A.W. 1.1.2000 */ - gl_reduced_prim_change( ctx, GL_BITMAP ); - } - /* Set bitmap drawing color */ if (ctx->Visual->RGBAflag) { GLint r, g, b, a; @@ -166,6 +157,16 @@ GLint x = (GLint) ( (ctx->Current.RasterPos[0] - xorig) + 0.0F ); GLint y = (GLint) ( (ctx->Current.RasterPos[1] - yorig) + 0.0F ); GLboolean completed = GL_FALSE; + + if (ctx->NewState) { + gl_update_state(ctx); + gl_reduced_prim_change( ctx, GL_BITMAP ); + } + + if (ctx->PB->primitive!=GL_BITMAP) { /* A.W. 1.1.2000 */ + gl_reduced_prim_change( ctx, GL_BITMAP ); + } + if (ctx->Driver.Bitmap) { /* let device driver try to render the bitmap */ completed = (*ctx->Driver.Bitmap)( ctx, x, y, width, height, Index: xc/extras/Mesa/src/blend.c diff -u xc/extras/Mesa/src/blend.c:1.3 xc/extras/Mesa/src/blend.c:1.4 --- xc/extras/Mesa/src/blend.c:1.3 Wed Mar 8 16:39:49 2000 +++ xc/extras/Mesa/src/blend.c Wed Mar 8 16:39:49 2000 @@ -101,10 +101,10 @@ } -/* GL_INGR_blend_func_separate */ +/* GL_EXT_blend_func_separate */ void -_mesa_BlendFuncSeparateINGR( GLenum sfactorRGB, GLenum dfactorRGB, - GLenum sfactorA, GLenum dfactorA ) +_mesa_BlendFuncSeparateEXT( GLenum sfactorRGB, GLenum dfactorRGB, + GLenum sfactorA, GLenum dfactorA ) { GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glBlendFuncSeparate"); @@ -211,7 +211,7 @@ /* This is really an extension function! */ void -_mesa_BlendEquationEXT( GLenum mode ) +_mesa_BlendEquation( GLenum mode ) { GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glBlendEquation"); @@ -255,7 +255,7 @@ void -_mesa_BlendColorEXT( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) +_mesa_BlendColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) { GET_CURRENT_CONTEXT(ctx); ctx->Color.BlendColor[0] = CLAMP( red, 0.0F, 1.0F ); @@ -285,26 +285,27 @@ for (i=0;i<n;i++) { if (mask[i]) { - GLint t = rgba[i][ACOMP]; /* t in [0,255] */ + const GLint t = rgba[i][ACOMP]; /* t in [0,255] */ if (t == 0) { + /* 0% alpha */ rgba[i][RCOMP] = dest[i][RCOMP]; rgba[i][GCOMP] = dest[i][GCOMP]; rgba[i][BCOMP] = dest[i][BCOMP]; rgba[i][ACOMP] = dest[i][ACOMP]; } - else if (t == 255) { - /* no-op */ + else if (t == CHAN_MAX) { + /* 100% alpha, no-op */ } else { - GLint s = 255 - t; - GLint r = (rgba[i][RCOMP] * t + dest[i][RCOMP] * s) >> 8; - GLint g = (rgba[i][GCOMP] * t + dest[i][GCOMP] * s) >> 8; - GLint b = (rgba[i][BCOMP] * t + dest[i][BCOMP] * s) >> 8; - GLint a = (rgba[i][ACOMP] * t + dest[i][ACOMP] * s) >> 8; - ASSERT(r <= 255); - ASSERT(g <= 255); - ASSERT(b <= 255); - ASSERT(a <= 255); + const GLint s = CHAN_MAX - t; + const GLint r = (rgba[i][RCOMP] * t + dest[i][RCOMP] * s) >> 8; + const GLint g = (rgba[i][GCOMP] * t + dest[i][GCOMP] * s) >> 8; + const GLint b = (rgba[i][BCOMP] * t + dest[i][BCOMP] * s) >> 8; + const GLint a = (rgba[i][ACOMP] * t + dest[i][ACOMP] * s) >> 8; + ASSERT(r <= CHAN_MAX); + ASSERT(g <= CHAN_MAX); + ASSERT(b <= CHAN_MAX); + ASSERT(a <= CHAN_MAX); rgba[i][RCOMP] = (GLubyte) r; rgba[i][GCOMP] = (GLubyte) g; rgba[i][BCOMP] = (GLubyte) b; @@ -335,10 +336,10 @@ GLint g = rgba[i][GCOMP] + dest[i][GCOMP]; GLint b = rgba[i][BCOMP] + dest[i][BCOMP]; GLint a = rgba[i][ACOMP] + dest[i][ACOMP]; - rgba[i][RCOMP] = (GLubyte) MIN2( r, 255 ); - rgba[i][GCOMP] = (GLubyte) MIN2( g, 255 ); - rgba[i][BCOMP] = (GLubyte) MIN2( b, 255 ); - rgba[i][ACOMP] = (GLubyte) MIN2( a, 255 ); + rgba[i][RCOMP] = (GLubyte) MIN2( r, CHAN_MAX ); + rgba[i][GCOMP] = (GLubyte) MIN2( g, CHAN_MAX ); + rgba[i][BCOMP] = (GLubyte) MIN2( b, CHAN_MAX ); + rgba[i][ACOMP] = (GLubyte) MIN2( a, CHAN_MAX ); } } } @@ -428,10 +429,10 @@ blend_general( GLcontext *ctx, GLuint n, const GLubyte mask[], GLubyte rgba[][4], CONST GLubyte dest[][4] ) { - GLfloat rscale = 1.0F / 255.0F; - GLfloat gscale = 1.0F / 255.0F; - GLfloat bscale = 1.0F / 255.0F; - GLfloat ascale = 1.0F / 255.0F; + GLfloat rscale = 1.0F / CHAN_MAXF; + GLfloat gscale = 1.0F / CHAN_MAXF; + GLfloat bscale = 1.0F / CHAN_MAXF; + GLfloat ascale = 1.0F / CHAN_MAXF; GLuint i; for (i=0;i<n;i++) { @@ -485,7 +486,7 @@ sR = sG = sB = 1.0F - (GLfloat) Ad * ascale; break; case GL_SRC_ALPHA_SATURATE: - if (As < 1.0F - (GLfloat) Ad * ascale) { + if (As < CHAN_MAX - Ad) { sR = sG = sB = (GLfloat) As * ascale; } else { @@ -704,10 +705,10 @@ } /* final clamping */ - rgba[i][RCOMP] = (GLubyte) (GLint) CLAMP( r, 0.0F, 255.0F ); - rgba[i][GCOMP] = (GLubyte) (GLint) CLAMP( g, 0.0F, 255.0F ); - rgba[i][BCOMP] = (GLubyte) (GLint) CLAMP( b, 0.0F, 255.0F ); - rgba[i][ACOMP] = (GLubyte) (GLint) CLAMP( a, 0.0F, 255.0F ); + rgba[i][RCOMP] = (GLubyte) (GLint) CLAMP( r, 0.0F, CHAN_MAXF ); + rgba[i][GCOMP] = (GLubyte) (GLint) CLAMP( g, 0.0F, CHAN_MAXF ); + rgba[i][BCOMP] = (GLubyte) (GLint) CLAMP( b, 0.0F, CHAN_MAXF ); + rgba[i][ACOMP] = (GLubyte) (GLint) CLAMP( a, 0.0F, CHAN_MAXF ); } } } Index: xc/extras/Mesa/src/blend.h diff -u xc/extras/Mesa/src/blend.h:1.3 xc/extras/Mesa/src/blend.h:1.4 --- xc/extras/Mesa/src/blend.h:1.3 Wed Mar 8 16:39:49 2000 +++ xc/extras/Mesa/src/blend.h Wed Mar 8 16:39:49 2000 @@ -48,16 +48,16 @@ extern void -_mesa_BlendFuncSeparateINGR( GLenum sfactorRGB, GLenum dfactorRGB, - GLenum sfactorA, GLenum dfactorA ); +_mesa_BlendFuncSeparateEXT( GLenum sfactorRGB, GLenum dfactorRGB, + GLenum sfactorA, GLenum dfactorA ); extern void -_mesa_BlendEquationEXT( GLenum mode ); +_mesa_BlendEquation( GLenum mode ); extern void -_mesa_BlendColorEXT(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); +_mesa_BlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); #endif Index: xc/extras/Mesa/src/colortab.c diff -u xc/extras/Mesa/src/colortab.c:1.3 xc/extras/Mesa/src/colortab.c:1.4 --- xc/extras/Mesa/src/colortab.c:1.3 Wed Mar 8 16:39:49 2000 +++ xc/extras/Mesa/src/colortab.c Wed Mar 8 16:39:49 2000 @@ -3,7 +3,7 @@ * Mesa 3-D graphics library * Version: 3.3 * - * Copyright (C) 1999 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2000 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"), @@ -111,9 +111,9 @@ void -_mesa_ColorTableEXT( GLenum target, GLenum internalFormat, - GLsizei width, GLenum format, GLenum type, - const GLvoid *table ) +_mesa_ColorTable( GLenum target, GLenum internalFormat, + GLsizei width, GLenum format, GLenum type, + const GLvoid *table ) { GET_CURRENT_CONTEXT(ctx); struct gl_texture_unit *texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit]; @@ -121,7 +121,7 @@ struct gl_color_table *palette; GLboolean proxy = GL_FALSE; - ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glColorTableEXT"); + ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glColorTable"); switch (target) { case GL_TEXTURE_1D: @@ -156,24 +156,24 @@ palette = &ctx->Texture.Palette; break; default: - gl_error(ctx, GL_INVALID_ENUM, "glColorTableEXT(target)"); + gl_error(ctx, GL_INVALID_ENUM, "glColorTable(target)"); return; } assert(palette); if (!gl_is_legal_format_and_type(format, type)) { - gl_error(ctx, GL_INVALID_ENUM, "glColorTableEXT(format or type)"); + gl_error(ctx, GL_INVALID_ENUM, "glColorTable(format or type)"); return; } if (decode_internal_format(internalFormat) < 0) { - gl_error( ctx, GL_INVALID_ENUM, "glColorTableEXT(internalFormat)" ); + gl_error( ctx, GL_INVALID_ENUM, "glColorTable(internalFormat)" ); return; } if (width < 1 || width > MAX_TEXTURE_PALETTE_SIZE || !power_of_two(width)) { - gl_error(ctx, GL_INVALID_VALUE, "glColorTableEXT(width)"); + gl_error(ctx, GL_INVALID_VALUE, "glColorTable(width)"); if (proxy) { palette->Size = 0; palette->IntFormat = (GLenum) 0; @@ -208,9 +208,9 @@ void -_mesa_ColorSubTableEXT( GLenum target, GLsizei start, - GLsizei count, GLenum format, GLenum type, - const GLvoid *table ) +_mesa_ColorSubTable( GLenum target, GLsizei start, + GLsizei count, GLenum format, GLenum type, + const GLvoid *table ) { GET_CURRENT_CONTEXT(ctx); struct gl_texture_unit *texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit]; @@ -219,7 +219,7 @@ GLint comps; GLubyte *dest; - ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glColorSubTableEXT"); + ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glColorSubTable"); switch (target) { case GL_TEXTURE_1D: @@ -239,19 +239,19 @@ palette = &ctx->Texture.Palette; break; default: - gl_error(ctx, GL_INVALID_ENUM, "glColorSubTableEXT(target)"); + gl_error(ctx, GL_INVALID_ENUM, "glColorSubTable(target)"); return; } assert(palette); if (!gl_is_legal_format_and_type(format, type)) { - gl_error(ctx, GL_INVALID_ENUM, "glColorSubTableEXT(format or type)"); + gl_error(ctx, GL_INVALID_ENUM, "glColorSubTable(format or type)"); return; } if (count < 1) { - gl_error(ctx, GL_INVALID_VALUE, "glColorSubTableEXT(count)"); + gl_error(ctx, GL_INVALID_VALUE, "glColorSubTable(count)"); return; } @@ -259,7 +259,7 @@ assert(comps > 0); /* error should be caught sooner */ if (start + count > palette->Size) { - gl_error(ctx, GL_INVALID_VALUE, "glColorSubTableEXT(count)"); + gl_error(ctx, GL_INVALID_VALUE, "glColorSubTable(count)"); return; } dest = palette->Table + start * comps * sizeof(GLubyte); @@ -284,8 +284,8 @@ void -_mesa_GetColorTableEXT( GLenum target, GLenum format, - GLenum type, GLvoid *table ) +_mesa_GetColorTable( GLenum target, GLenum format, + GLenum type, GLvoid *table ) { GET_CURRENT_CONTEXT(ctx); struct gl_texture_unit *texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit]; @@ -293,7 +293,7 @@ GLubyte rgba[MAX_TEXTURE_PALETTE_SIZE][4]; GLint i; - ASSERT_OUTSIDE_BEGIN_END(ctx, "glGetColorTableEXT"); + ASSERT_OUTSIDE_BEGIN_END(ctx, "glGetColorTable"); switch (target) { case GL_TEXTURE_1D: @@ -309,7 +309,7 @@ palette = &ctx->Texture.Palette; break; default: - gl_error(ctx, GL_INVALID_ENUM, "glGetColorTableEXT(target)"); + gl_error(ctx, GL_INVALID_ENUM, "glGetColorTable(target)"); return; } @@ -365,7 +365,7 @@ } break; default: - gl_problem(ctx, "bad palette format in glGetColorTableEXT"); + gl_problem(ctx, "bad palette format in glGetColorTable"); return; } @@ -380,23 +380,23 @@ void -_mesa_GetColorTableParameterfvEXT( GLenum target, GLenum pname, GLfloat *params ) +_mesa_GetColorTableParameterfv( GLenum target, GLenum pname, GLfloat *params ) { GLint iparams[10]; - _mesa_GetColorTableParameterivEXT( target, pname, iparams ); + _mesa_GetColorTableParameteriv( target, pname, iparams ); *params = (GLfloat) iparams[0]; } void -_mesa_GetColorTableParameterivEXT( GLenum target, GLenum pname, GLint *params ) +_mesa_GetColorTableParameteriv( GLenum target, GLenum pname, GLint *params ) { GET_CURRENT_CONTEXT(ctx); struct gl_texture_unit *texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit]; struct gl_color_table *palette; - ASSERT_OUTSIDE_BEGIN_END(ctx, "glGetColorTableParameterEXT"); + ASSERT_OUTSIDE_BEGIN_END(ctx, "glGetColorTableParameter"); switch (target) { case GL_TEXTURE_1D: @@ -412,7 +412,7 @@ palette = &ctx->Texture.Palette; break; default: - gl_error(ctx, GL_INVALID_ENUM, "glGetColorTableParameterEXT(target)"); + gl_error(ctx, GL_INVALID_ENUM, "glGetColorTableParameter(target)"); return; } @@ -442,7 +442,7 @@ *params = 8; break; default: - gl_error(ctx, GL_INVALID_ENUM, "glGetColorTableParameterEXT" ); + gl_error(ctx, GL_INVALID_ENUM, "glGetColorTableParameter" ); return; } } Index: xc/extras/Mesa/src/colortab.h diff -u xc/extras/Mesa/src/colortab.h:1.3 xc/extras/Mesa/src/colortab.h:1.4 --- xc/extras/Mesa/src/colortab.h:1.3 Wed Mar 8 16:39:49 2000 +++ xc/extras/Mesa/src/colortab.h Wed Mar 8 16:39:49 2000 @@ -3,7 +3,7 @@ * Mesa 3-D graphics library * Version: 3.3 * - * Copyright (C) 1999 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2000 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"), @@ -32,29 +32,24 @@ extern void -_mesa_ColorTableEXT( GLenum target, GLenum internalformat, - GLsizei width, GLenum format, GLenum type, - const GLvoid *table ); +_mesa_ColorTable( GLenum target, GLenum internalformat, + GLsizei width, GLenum format, GLenum type, + const GLvoid *table ); extern void -_mesa_ColorSubTableEXT( GLenum target, GLsizei start, - GLsizei count, GLenum format, GLenum type, - const GLvoid *table ); +_mesa_ColorSubTable( GLenum target, GLsizei start, + GLsizei count, GLenum format, GLenum type, + const GLvoid *table ); extern void -_mesa_GetColorTableEXT( GLenum target, GLenum format, - GLenum type, GLvoid *table ); -#ifdef VMS -/* VMS does not support externals longer than 32 characters. */ -#define _mesa_GetColorTableParameterfvEXT VMS_GCTParameterfvEXT -#define _mesa_GetColorTableParameterivEXT VMS_GCTParameterivEXT -#endif +_mesa_GetColorTable( GLenum target, GLenum format, + GLenum type, GLvoid *table ); extern void -_mesa_GetColorTableParameterfvEXT( GLenum target, GLenum pname, GLfloat *params ); +_mesa_GetColorTableParameterfv( GLenum target, GLenum pname, GLfloat *params ); extern void -_mesa_GetColorTableParameterivEXT( GLenum target, GLenum pname, GLint *params ); +_mesa_GetColorTableParameteriv( GLenum target, GLenum pname, GLint *params ); #endif Index: xc/extras/Mesa/src/config.c diff -u xc/extras/Mesa/src/config.c:1.3 xc/extras/Mesa/src/config.c:1.4 --- xc/extras/Mesa/src/config.c:1.3 Wed Mar 8 16:39:49 2000 +++ xc/extras/Mesa/src/config.c Wed Mar 8 16:39:49 2000 @@ -217,7 +217,6 @@ { struct cnode *hint, *tail, *value; const char *hname, *vname; - GLenum h, v; if (is_list(args, &hint, &tail) && is_list(tail, &value, &tail) && @@ -225,11 +224,12 @@ is_word(hint, &hname) && is_word(value, &vname)) { - if ((h = (GLenum) gl_lookup_enum_by_name(hname)) != -1 && - (v = (GLenum) gl_lookup_enum_by_name(vname)) != -1) + GLint h = gl_lookup_enum_by_name(hname); + GLint v = gl_lookup_enum_by_name(vname); + if (h != -1 && v != -1) { printf("calling glHint(%s=%d, %s=%d)\n", hname, h, vname, v); - if (!_mesa_try_Hint( ctx, h, v )) + if (!_mesa_try_Hint( ctx, (GLenum) h, (GLenum) v )) error( hint, "glHint failed"); printf("allow draw mem: %d\n", ctx->Hint.AllowDrawMem); return; Index: xc/extras/Mesa/src/config.h diff -u xc/extras/Mesa/src/config.h:1.3 xc/extras/Mesa/src/config.h:1.4 --- xc/extras/Mesa/src/config.h:1.3 Wed Mar 8 16:39:49 2000 +++ xc/extras/Mesa/src/config.h Wed Mar 8 16:39:49 2000 @@ -157,7 +157,8 @@ * Bits per color channel (must be 8 at this time!) */ #define CHAN_BITS 8 - +#define CHAN_MAX ((1 << CHAN_BITS) - 1) +#define CHAN_MAXF ((GLfloat) CHAN_MAX) /* Index: xc/extras/Mesa/src/dd.h diff -u xc/extras/Mesa/src/dd.h:1.3 xc/extras/Mesa/src/dd.h:1.4 --- xc/extras/Mesa/src/dd.h:1.3 Wed Mar 8 16:39:49 2000 +++ xc/extras/Mesa/src/dd.h Wed Mar 8 16:39:49 2000 @@ -138,12 +138,10 @@ *** every device driver. *** **********************************************************************/ - const char * (*RendererString)(void); - /* - * Return a string which uniquely identifies this device driver. - * The string should contain no whitespace. Examples: "X11", "OffScreen", - * "MSWindows", "SVGA". - * NOTE: This function will be obsolete in favor of GetString in the future! + const GLubyte * (*GetString)( GLcontext *ctx, GLenum name ); + /* Return a string as needed by glGetString(). + * Only the GL_RENDERER token must be implemented. Otherwise, + * NULL can be returned. */ void (*UpdateState)( GLcontext *ctx ); @@ -326,17 +324,6 @@ *** since Mesa will either set them to NULL or point them at a *** *** fall-back function. *** **********************************************************************/ - - const char * (*ExtensionString)( GLcontext *ctx ); - /* Return a space-separated list of extensions for this driver. - * NOTE: This function will be obsolete in favor of GetString in the future! - */ - - const GLubyte * (*GetString)( GLcontext *ctx, GLenum name ); - /* Return a string as needed by glGetString(). - * NOTE: This will replace the ExtensionString and RendererString - * functions in the future! - */ void (*Finish)( GLcontext *ctx ); /* Index: xc/extras/Mesa/src/dlist.c diff -u xc/extras/Mesa/src/dlist.c:1.3 xc/extras/Mesa/src/dlist.c:1.4 --- xc/extras/Mesa/src/dlist.c:1.3 Wed Mar 8 16:39:49 2000 +++ xc/extras/Mesa/src/dlist.c Wed Mar 8 16:39:50 2000 @@ -32,6 +32,7 @@ #include "attrib.h" #include "bitmap.h" #include "bbox.h" +#include "blend.h" #include "buffers.h" #include "clip.h" #include "colortab.h" @@ -691,7 +692,7 @@ n[1].e = mode; } if (ctx->ExecuteFlag) { - (*ctx->Exec->BlendEquationEXT)( mode ); + (*ctx->Exec->BlendEquation)( mode ); } } @@ -712,8 +713,8 @@ } -static void save_BlendFuncSeparateINGR(GLenum sfactorRGB, GLenum dfactorRGB, - GLenum sfactorA, GLenum dfactorA) +static void save_BlendFuncSeparateEXT(GLenum sfactorRGB, GLenum dfactorRGB, + GLenum sfactorA, GLenum dfactorA) { GET_CURRENT_CONTEXT(ctx); Node *n; @@ -726,7 +727,7 @@ n[4].e = dfactorA; } if (ctx->ExecuteFlag) { - (*ctx->Exec->BlendFuncSeparateINGR)( sfactorRGB, dfactorRGB, + (*ctx->Exec->BlendFuncSeparateEXT)( sfactorRGB, dfactorRGB, sfactorA, dfactorA); } } @@ -746,7 +747,7 @@ n[4].f = alpha; } if (ctx->ExecuteFlag) { - (*ctx->Exec->BlendColorEXT)( red, green, blue, alpha ); + (*ctx->Exec->BlendColor)( red, green, blue, alpha ); } } @@ -938,17 +939,17 @@ } -static void save_ColorTableEXT( GLenum target, GLenum internalFormat, - GLsizei width, GLenum format, GLenum type, - const GLvoid *table ) +static void save_ColorTable( GLenum target, GLenum internalFormat, + GLsizei width, GLenum format, GLenum type, + const GLvoid *table ) { GET_CURRENT_CONTEXT(ctx); if (target == GL_PROXY_TEXTURE_1D || target == GL_PROXY_TEXTURE_2D || target == GL_PROXY_TEXTURE_3D) { /* execute immediately */ - (*ctx->Exec->ColorTableEXT)( target, internalFormat, width, - format, type, table ); + (*ctx->Exec->ColorTable)( target, internalFormat, width, + format, type, table ); } else { GLvoid *image = _mesa_unpack_image(width, 1, 1, format, type, table, @@ -968,16 +969,16 @@ FREE(image); } if (ctx->ExecuteFlag) { - (*ctx->Exec->ColorTableEXT)( target, internalFormat, width, - format, type, table ); + (*ctx->Exec->ColorTable)( target, internalFormat, width, + format, type, table ); } } } -static void save_ColorSubTableEXT( GLenum target, GLsizei start, GLsizei count, - GLenum format, GLenum type, - const GLvoid *table) +static void save_ColorSubTable( GLenum target, GLsizei start, GLsizei count, + GLenum format, GLenum type, + const GLvoid *table) { GET_CURRENT_CONTEXT(ctx); GLvoid *image = _mesa_unpack_image(count, 1, 1, format, type, table, @@ -997,7 +998,7 @@ FREE(image); } if (ctx->ExecuteFlag) { - (*ctx->Exec->ColorSubTableEXT)(target, start, count, format, type, table); + (*ctx->Exec->ColorSubTable)(target, start, count, format, type, table); } } @@ -2882,17 +2883,6 @@ } -static void save_TexImage3DEXT( GLenum target, - GLint level, GLenum components, - GLsizei width, GLsizei height, GLsizei depth, - GLint border, GLenum format, GLenum type, - const GLvoid *pixels ) -{ - save_TexImage3D(target, level, (GLint) components, width, height, - depth, border, format, type, pixels); -} - - static void save_TexSubImage1D( GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels ) @@ -3402,16 +3392,16 @@ } break; case OPCODE_BLEND_COLOR: - (*ctx->Exec->BlendColorEXT)( n[1].f, n[2].f, n[3].f, n[4].f ); + (*ctx->Exec->BlendColor)( n[1].f, n[2].f, n[3].f, n[4].f ); break; case OPCODE_BLEND_EQUATION: - (*ctx->Exec->BlendEquationEXT)( n[1].e ); + (*ctx->Exec->BlendEquation)( n[1].e ); break; case OPCODE_BLEND_FUNC: (*ctx->Exec->BlendFunc)( n[1].e, n[2].e ); break; case OPCODE_BLEND_FUNC_SEPARATE: - (*ctx->Exec->BlendFuncSeparateINGR)(n[1].e, n[2].e, n[3].e, n[4].e); + (*ctx->Exec->BlendFuncSeparateEXT)(n[1].e, n[2].e, n[3].e, n[4].e); break; case OPCODE_CALL_LIST: /* Generated by glCallList(), don't add ListBase */ @@ -3463,8 +3453,8 @@ { struct gl_pixelstore_attrib save = ctx->Unpack; ctx->Unpack = _mesa_native_packing; - (*ctx->Exec->ColorTableEXT)( n[1].e, n[2].e, n[3].i, n[4].e, - n[5].e, n[6].data ); + (*ctx->Exec->ColorTable)( n[1].e, n[2].e, n[3].i, n[4].e, + n[5].e, n[6].data ); ctx->Unpack = save; /* restore */ } break; @@ -3472,8 +3462,8 @@ { struct gl_pixelstore_attrib save = ctx->Unpack; ctx->Unpack = _mesa_native_packing; - (*ctx->Exec->ColorSubTableEXT)( n[1].e, n[2].i, n[3].i, - n[4].e, n[5].e, n[6].data ); + (*ctx->Exec->ColorSubTable)( n[1].e, n[2].i, n[3].i, + n[4].e, n[5].e, n[6].data ); ctx->Unpack = save; /* restore */ } break; @@ -4514,9 +4504,9 @@ table->TexSubImage3D = save_TexSubImage3D; /* GL_ARB_imaging */ - /* NOT supported, just call stub functions */ - table->BlendColor = _mesa_BlendColor; - table->BlendEquation = _mesa_BlendEquation; + /* Not all are supported */ + table->BlendColor = save_BlendColor; + table->BlendEquation = save_BlendEquation; table->ColorSubTable = _mesa_ColorSubTable; table->ColorTable = _mesa_ColorTable; table->ColorTableParameterfv = _mesa_ColorTableParameterfv; @@ -4550,17 +4540,21 @@ table->ResetMinmax = _mesa_ResetMinmax; table->SeparableFilter2D = _mesa_SeparableFilter2D; - /* 6. GL_EXT_texture3d */ + /* GL_EXT_texture3d */ +#if 0 table->CopyTexSubImage3DEXT = save_CopyTexSubImage3D; table->TexImage3DEXT = save_TexImage3DEXT; table->TexSubImage3DEXT = save_TexSubImage3D; +#endif /* GL_EXT_paletted_texture */ - table->ColorTableEXT = save_ColorTableEXT; - table->ColorSubTableEXT = save_ColorSubTableEXT; - table->GetColorTableEXT = _mesa_GetColorTableEXT; - table->GetColorTableParameterfvEXT = _mesa_GetColorTableParameterfvEXT; - table->GetColorTableParameterivEXT = _mesa_GetColorTableParameterivEXT; +#if 0 + table->ColorTableEXT = save_ColorTable; + table->ColorSubTableEXT = save_ColorSubTable; +#endif + table->GetColorTableEXT = _mesa_GetColorTable; + table->GetColorTableParameterfvEXT = _mesa_GetColorTableParameterfv; + table->GetColorTableParameterivEXT = _mesa_GetColorTableParameteriv; /* GL_EXT_compiled_vertex_array */ table->LockArraysEXT = _mesa_LockArraysEXT; @@ -4577,10 +4571,14 @@ table->PolygonOffsetEXT = save_PolygonOffsetEXT; /* GL_EXT_blend_minmax */ - table->BlendEquationEXT = save_BlendEquation; +#if 0 + table->BlendEquationEXT = save_BlendEquationEXT; +#endif /* GL_EXT_blend_color */ - table->BlendColorEXT = save_BlendColor; +#if 0 + table->BlendColorEXT = save_BlendColorEXT; +#endif /* GL_ARB_multitexture */ table->ActiveTextureARB = save_ActiveTextureARB; @@ -4618,8 +4616,8 @@ table->MultiTexCoord4sARB = _mesa_MultiTexCoord4sARB; table->MultiTexCoord4svARB = _mesa_MultiTexCoord4svARB; - /* GL_INGR_blend_func_separate */ - table->BlendFuncSeparateINGR = save_BlendFuncSeparateINGR; + /* GL_EXT_blend_func_separate */ + table->BlendFuncSeparateEXT = save_BlendFuncSeparateEXT; /* GL_MESA_window_pos */ table->WindowPos2dMESA = save_WindowPos2dMESA; Index: xc/extras/Mesa/src/extensions.c diff -u xc/extras/Mesa/src/extensions.c:1.3 xc/extras/Mesa/src/extensions.c:1.4 --- xc/extras/Mesa/src/extensions.c:1.3 Wed Mar 8 16:39:50 2000 +++ xc/extras/Mesa/src/extensions.c Wed Mar 8 16:39:50 2000 @@ -48,7 +48,7 @@ static struct { int enabled; const char *name; } default_extensions[] = { - { ALWAYS_ENABLED, "GL_EXT_blend_color" }, + { DEFAULT_ON, "GL_EXT_blend_color" }, { DEFAULT_OFF, "ARB_imaging" }, { DEFAULT_ON, "GL_EXT_blend_minmax" }, { DEFAULT_ON, "GL_EXT_blend_logic_op" }, Index: xc/extras/Mesa/src/get.c diff -u xc/extras/Mesa/src/get.c:1.3 xc/extras/Mesa/src/get.c:1.4 --- xc/extras/Mesa/src/get.c:1.3 Wed Mar 8 16:39:50 2000 +++ xc/extras/Mesa/src/get.c Wed Mar 8 16:39:50 2000 @@ -121,16 +121,16 @@ case GL_BLEND_SRC: *params = ENUM_TO_BOOL(ctx->Color.BlendSrcRGB); break; - case GL_BLEND_SRC_RGB_INGR: + case GL_BLEND_SRC_RGB_EXT: *params = ENUM_TO_BOOL(ctx->Color.BlendSrcRGB); break; - case GL_BLEND_DST_RGB_INGR: + case GL_BLEND_DST_RGB_EXT: *params = ENUM_TO_BOOL(ctx->Color.BlendDstRGB); break; - case GL_BLEND_SRC_ALPHA_INGR: + case GL_BLEND_SRC_ALPHA_EXT: *params = ENUM_TO_BOOL(ctx->Color.BlendSrcA); break; - case GL_BLEND_DST_ALPHA_INGR: + case GL_BLEND_DST_ALPHA_EXT: *params = ENUM_TO_BOOL(ctx->Color.BlendDstA); break; case GL_BLEND_EQUATION_EXT: @@ -1083,16 +1083,16 @@ case GL_BLEND_SRC: *params = ENUM_TO_DOUBLE(ctx->Color.BlendSrcRGB); break; - case GL_BLEND_SRC_RGB_INGR: + case GL_BLEND_SRC_RGB_EXT: *params = ENUM_TO_DOUBLE(ctx->Color.BlendSrcRGB); break; - case GL_BLEND_DST_RGB_INGR: + case GL_BLEND_DST_RGB_EXT: *params = ENUM_TO_DOUBLE(ctx->Color.BlendDstRGB); break; - case GL_BLEND_SRC_ALPHA_INGR: + case GL_BLEND_SRC_ALPHA_EXT: *params = ENUM_TO_DOUBLE(ctx->Color.BlendSrcA); break; - case GL_BLEND_DST_ALPHA_INGR: + case GL_BLEND_DST_ALPHA_EXT: *params = ENUM_TO_DOUBLE(ctx->Color.BlendDstA); break; case GL_BLEND_EQUATION_EXT: @@ -2046,16 +2046,16 @@ case GL_BLEND_SRC: *params = ENUM_TO_FLOAT(ctx->Color.BlendSrcRGB); break; - case GL_BLEND_SRC_RGB_INGR: + case GL_BLEND_SRC_RGB_EXT: *params = ENUM_TO_FLOAT(ctx->Color.BlendSrcRGB); break; - case GL_BLEND_DST_RGB_INGR: + case GL_BLEND_DST_RGB_EXT: *params = ENUM_TO_FLOAT(ctx->Color.BlendDstRGB); break; - case GL_BLEND_SRC_ALPHA_INGR: + case GL_BLEND_SRC_ALPHA_EXT: *params = ENUM_TO_FLOAT(ctx->Color.BlendSrcA); break; - case GL_BLEND_DST_ALPHA_INGR: + case GL_BLEND_DST_ALPHA_EXT: *params = ENUM_TO_FLOAT(ctx->Color.BlendDstA); break; case GL_BLEND_EQUATION_EXT: @@ -2986,16 +2986,16 @@ case GL_BLEND_SRC: *params = (GLint) ctx->Color.BlendSrcRGB; break; - case GL_BLEND_SRC_RGB_INGR: + case GL_BLEND_SRC_RGB_EXT: *params = (GLint) ctx->Color.BlendSrcRGB; break; - case GL_BLEND_DST_RGB_INGR: + case GL_BLEND_DST_RGB_EXT: *params = (GLint) ctx->Color.BlendDstRGB; break; - case GL_BLEND_SRC_ALPHA_INGR: + case GL_BLEND_SRC_ALPHA_EXT: *params = (GLint) ctx->Color.BlendSrcA; break; - case GL_BLEND_DST_ALPHA_INGR: + case GL_BLEND_DST_ALPHA_EXT: *params = (GLint) ctx->Color.BlendDstA; break; case GL_BLEND_EQUATION_EXT: @@ -3932,47 +3932,32 @@ _mesa_GetString( GLenum name ) { GET_CURRENT_CONTEXT(ctx); - static char result[1000]; static char *vendor = "Brian Paul"; + static char *renderer = "Mesa"; static char *version = "1.2 Mesa 3.3 beta"; ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH_WITH_RETVAL(ctx, "glGetString", 0); - /* First see if device driver can satisfy this call */ - switch (name) { - case GL_VENDOR: - case GL_RENDERER: - case GL_VERSION: - if (ctx->Driver.GetString) { - const GLubyte *str = (*ctx->Driver.GetString)(ctx, name); - if (str && str[0]) - return str; - } - break; - /* Extensions always handled by extensions.c */ - case GL_EXTENSIONS: - return (GLubyte *) gl_extensions_get_string( ctx ); - default: - gl_error( ctx, GL_INVALID_ENUM, "glGetString" ); - return (GLubyte *) 0; - } - - /* If we get here, device driver didn't return a string */ - switch (name) { - case GL_VENDOR: - return (GLubyte *) vendor; - case GL_RENDERER: - strcpy(result, "Mesa"); - if (ctx->Driver.RendererString) { - strcat(result, " "); - strcat(result, (*ctx->Driver.RendererString)()); - } - return (GLubyte *) result; - case GL_VERSION: - return (GLubyte *) version; - default: - /* caught above */ - return NULL; + /* this is a required driver function */ + assert(ctx->Driver.GetString); + { + const GLubyte *str = (*ctx->Driver.GetString)(ctx, name); + if (str) + return str; + + switch (name) { + case GL_VENDOR: + return (const GLubyte *) vendor; + case GL_RENDERER: + return (const GLubyte *) renderer; + case GL_VERSION: + return (const GLubyte *) version; + case GL_EXTENSIONS: + return (GLubyte *) gl_extensions_get_string( ctx ); + default: + gl_error( ctx, GL_INVALID_ENUM, "glGetString" ); + return (GLubyte *) 0; + } } } Index: xc/extras/Mesa/src/glapi.c diff -u xc/extras/Mesa/src/glapi.c:1.5 xc/extras/Mesa/src/glapi.c:1.6 --- xc/extras/Mesa/src/glapi.c:1.5 Wed Mar 8 16:39:50 2000 +++ xc/extras/Mesa/src/glapi.c Wed Mar 8 16:39:50 2000 @@ -50,7 +50,7 @@ /* This is used when thread safety is disabled */ -struct _glapi_table *_glapi_Dispatch = &__glapi_noop_table; +struct _glapi_table *_glapi_Dispatch = (struct _glapi_table *) __glapi_noop_table; /* Used when thread safety disabled */ void *_glapi_Context = NULL; @@ -156,7 +156,7 @@ { if (!dispatch) { /* use the no-op functions */ - dispatch = &__glapi_noop_table; + dispatch = (struct _glapi_table *) __glapi_noop_table; } #ifdef DEBUG else { @@ -218,16 +218,17 @@ const char * _glapi_get_version(void) { - return "20000128"; /* YYYYMMDD */ + return "20000223"; /* YYYYMMDD */ } -struct name_address_pair { +struct name_address_offset { const char *Name; GLvoid *Address; + GLuint Offset; }; -static struct name_address_pair static_functions[1000]; +static struct name_address_offset static_functions[1000]; @@ -241,7 +242,7 @@ GLuint i; for (i = 0; static_functions[i].Name; i++) { if (strcmp(static_functions[i].Name, funcName) == 0) { - return i; + return static_functions[i].Offset; } } return -1; @@ -255,7 +256,7 @@ static GLvoid * get_static_proc_address(const char *funcName) { - GLuint i = get_static_proc_offset(funcName); + GLint i = get_static_proc_offset(funcName); if (i >= 0) return static_functions[i].Address; else @@ -271,14 +272,7 @@ #define MAX_EXTENSION_FUNCS 1000 - -struct _glapi_ext_entrypoint { - const char *Name; /* the extension function's name */ - GLuint Offset; /* relative to start of dispatch table */ - GLvoid *Address; /* address of dispatch function */ -}; - -static struct _glapi_ext_entrypoint ExtEntryTable[MAX_EXTENSION_FUNCS]; +static struct name_address_offset ExtEntryTable[MAX_EXTENSION_FUNCS]; static GLuint NumExtEntryPoints = 0; @@ -494,20 +488,20 @@ const char * _glapi_get_proc_name(GLuint offset) { - GLuint n = sizeof(static_functions) / sizeof(struct name_address_pair); - if (offset < n) { - return static_functions[offset].Name; + const GLuint n = sizeof(static_functions) / sizeof(struct name_address_offset); + GLuint i; + for (i = 0; i < n; i++) { + if (static_functions[i].Offset == offset) + return static_functions[i].Name; } - else { - /* search added extension functions */ - GLuint i; - for (i = 0; i < NumExtEntryPoints; i++) { - if (ExtEntryTable[i].Offset == offset) { - return ExtEntryTable[i].Name; - } + + /* search added extension functions */ + for (i = 0; i < NumExtEntryPoints; i++) { + if (ExtEntryTable[i].Offset == offset) { + return ExtEntryTable[i].Name; } - return NULL; } + return NULL; } @@ -559,10 +553,10 @@ assert(ResetMinMaxOffset == offset); } { - GLuint blendColorOffset = _glapi_get_proc_offset("glBlendColorEXT"); - char *blendColorFunc = (char*) &table->BlendColorEXT; + GLuint blendColorOffset = _glapi_get_proc_offset("glBlendColor"); + char *blendColorFunc = (char*) &table->BlendColor; GLuint offset = (blendColorFunc - (char *) table) / sizeof(void *); - assert(blendColorOffset == _gloffset_BlendColorEXT); + assert(blendColorOffset == _gloffset_BlendColor); assert(blendColorOffset == offset); } { @@ -588,449 +582,453 @@ -static struct name_address_pair static_functions[] = { - { "NotImplemented", (GLvoid *) NotImplemented }, - - /* GL 1.1 */ - { "glAccum", (GLvoid *) glAccum }, - { "glAlphaFunc", (GLvoid *) glAlphaFunc }, - { "glBegin", (GLvoid *) glBegin }, - { "glBitmap", (GLvoid *) glBitmap }, - { "glBlendFunc", (GLvoid *) glBlendFunc }, - { "glCallList", (GLvoid *) glCallList }, - { "glCallLists", (GLvoid *) glCallLists }, - { "glClear", (GLvoid *) glClear }, - { "glClearAccum", (GLvoid *) glClearAccum }, - { "glClearColor", (GLvoid *) glClearColor }, - { "glClearDepth", (GLvoid *) glClearDepth }, - { "glClearIndex", (GLvoid *) glClearIndex }, - { "glClearStencil", (GLvoid *) glClearStencil }, - { "glClipPlane", (GLvoid *) glClipPlane }, - { "glColor3b", (GLvoid *) glColor3b }, - { "glColor3bv", (GLvoid *) glColor3bv }, - { "glColor3d", (GLvoid *) glColor3d }, - { "glColor3dv", (GLvoid *) glColor3dv }, - { "glColor3f", (GLvoid *) glColor3f }, - { "glColor3fv", (GLvoid *) glColor3fv }, - { "glColor3i", (GLvoid *) glColor3i }, - { "glColor3iv", (GLvoid *) glColor3iv }, - { "glColor3s", (GLvoid *) glColor3s }, - { "glColor3sv", (GLvoid *) glColor3sv }, - { "glColor3ub", (GLvoid *) glColor3ub }, - { "glColor3ubv", (GLvoid *) glColor3ubv }, - { "glColor3ui", (GLvoid *) glColor3ui }, - { "glColor3uiv", (GLvoid *) glColor3uiv }, - { "glColor3us", (GLvoid *) glColor3us }, - { "glColor3usv", (GLvoid *) glColor3usv }, - { "glColor4b", (GLvoid *) glColor4b }, - { "glColor4bv", (GLvoid *) glColor4bv }, - { "glColor4d", (GLvoid *) glColor4d }, - { "glColor4dv", (GLvoid *) glColor4dv }, - { "glColor4f", (GLvoid *) glColor4f }, - { "glColor4fv", (GLvoid *) glColor4fv }, - { "glColor4i", (GLvoid *) glColor4i }, - { "glColor4iv", (GLvoid *) glColor4iv }, - { "glColor4s", (GLvoid *) glColor4s }, - { "glColor4sv", (GLvoid *) glColor4sv }, - { "glColor4ub", (GLvoid *) glColor4ub }, - { "glColor4ubv", (GLvoid *) glColor4ubv }, - { "glColor4ui", (GLvoid *) glColor4ui }, - { "glColor4uiv", (GLvoid *) glColor4uiv }, - { "glColor4us", (GLvoid *) glColor4us }, - { "glColor4usv", (GLvoid *) glColor4usv }, - { "glColorMask", (GLvoid *) glColorMask }, - { "glColorMaterial", (GLvoid *) glColorMaterial }, - { "glCopyPixels", (GLvoid *) glCopyPixels }, - { "glCullFace", (GLvoid *) glCullFace }, - { "glDeleteLists", (GLvoid *) glDeleteLists }, - { "glDepthFunc", (GLvoid *) glDepthFunc }, - { "glDepthMask", (GLvoid *) glDepthMask }, - { "glDepthRange", (GLvoid *) glDepthRange }, - { "glDisable", (GLvoid *) glDisable }, - { "glDrawBuffer", (GLvoid *) glDrawBuffer }, - { "glDrawPixels", (GLvoid *) glDrawPixels }, - { "glEdgeFlag", (GLvoid *) glEdgeFlag }, - { "glEdgeFlagv", (GLvoid *) glEdgeFlagv }, - { "glEnable", (GLvoid *) glEnable }, - { "glEnd", (GLvoid *) glEnd }, - { "glEndList", (GLvoid *) glEndList }, - { "glEvalCoord1d", (GLvoid *) glEvalCoord1d }, - { "glEvalCoord1dv", (GLvoid *) glEvalCoord1dv }, - { "glEvalCoord1f", (GLvoid *) glEvalCoord1f }, - { "glEvalCoord1fv", (GLvoid *) glEvalCoord1fv }, - { "glEvalCoord2d", (GLvoid *) glEvalCoord2d }, - { "glEvalCoord2dv", (GLvoid *) glEvalCoord2dv }, - { "glEvalCoord2f", (GLvoid *) glEvalCoord2f }, - { "glEvalCoord2fv", (GLvoid *) glEvalCoord2fv }, - { "glEvalMesh1", (GLvoid *) glEvalMesh1 }, - { "glEvalMesh2", (GLvoid *) glEvalMesh2 }, - { "glEvalPoint1", (GLvoid *) glEvalPoint1 }, - { "glEvalPoint2", (GLvoid *) glEvalPoint2 }, - { "glFeedbackBuffer", (GLvoid *) glFeedbackBuffer }, - { "glFinish", (GLvoid *) glFinish }, - { "glFlush", (GLvoid *) glFlush }, - { "glFogf", (GLvoid *) glFogf }, - { "glFogfv", (GLvoid *) glFogfv }, - { "glFogi", (GLvoid *) glFogi }, - { "glFogiv", (GLvoid *) glFogiv }, - { "glFrontFace", (GLvoid *) glFrontFace }, - { "glFrustum", (GLvoid *) glFrustum }, - { "glGenLists", (GLvoid *) glGenLists }, - { "glGetBooleanv", (GLvoid *) glGetBooleanv }, - { "glGetClipPlane", (GLvoid *) glGetClipPlane }, - { "glGetDoublev", (GLvoid *) glGetDoublev }, - { "glGetError", (GLvoid *) glGetError }, - { "glGetFloatv", (GLvoid *) glGetFloatv }, - { "glGetIntegerv", (GLvoid *) glGetIntegerv }, - { "glGetLightfv", (GLvoid *) glGetLightfv }, - { "glGetLightiv", (GLvoid *) glGetLightiv }, - { "glGetMapdv", (GLvoid *) glGetMapdv }, - { "glGetMapfv", (GLvoid *) glGetMapfv }, - { "glGetMapiv", (GLvoid *) glGetMapiv }, - { "glGetMaterialfv", (GLvoid *) glGetMaterialfv }, - { "glGetMaterialiv", (GLvoid *) glGetMaterialiv }, - { "glGetPixelMapfv", (GLvoid *) glGetPixelMapfv }, - { "glGetPixelMapuiv", (GLvoid *) glGetPixelMapuiv }, - { "glGetPixelMapusv", (GLvoid *) glGetPixelMapusv }, - { "glGetPolygonStipple", (GLvoid *) glGetPolygonStipple }, - { "glGetString", (GLvoid *) glGetString }, - { "glGetTexEnvfv", (GLvoid *) glGetTexEnvfv }, - { "glGetTexEnviv", (GLvoid *) glGetTexEnviv }, - { "glGetTexGendv", (GLvoid *) glGetTexGendv }, - { "glGetTexGenfv", (GLvoid *) glGetTexGenfv }, - { "glGetTexGeniv", (GLvoid *) glGetTexGeniv }, - { "glGetTexImage", (GLvoid *) glGetTexImage }, - { "glGetTexLevelParameterfv", (GLvoid *) glGetTexLevelParameterfv }, - { "glGetTexLevelParameteriv", (GLvoid *) glGetTexLevelParameteriv }, - { "glGetTexParameterfv", (GLvoid *) glGetTexParameterfv }, - { "glGetTexParameteriv", (GLvoid *) glGetTexParameteriv }, - { "glHint", (GLvoid *) glHint }, - { "glIndexMask", (GLvoid *) glIndexMask }, - { "glIndexd", (GLvoid *) glIndexd }, - { "glIndexdv", (GLvoid *) glIndexdv }, - { "glIndexf", (GLvoid *) glIndexf }, - { "glIndexfv", (GLvoid *) glIndexfv }, - { "glIndexi", (GLvoid *) glIndexi }, - { "glIndexiv", (GLvoid *) glIndexiv }, - { "glIndexs", (GLvoid *) glIndexs }, - { "glIndexsv", (GLvoid *) glIndexsv }, - { "glInitNames", (GLvoid *) glInitNames }, - { "glIsEnabled", (GLvoid *) glIsEnabled }, - { "glIsList", (GLvoid *) glIsList }, - { "glLightModelf", (GLvoid *) glLightModelf }, - { "glLightModelfv", (GLvoid *) glLightModelfv }, - { "glLightModeli", (GLvoid *) glLightModeli }, - { "glLightModeliv", (GLvoid *) glLightModeliv }, - { "glLightf", (GLvoid *) glLightf }, - { "glLightfv", (GLvoid *) glLightfv }, - { "glLighti", (GLvoid *) glLighti }, - { "glLightiv", (GLvoid *) glLightiv }, - { "glLineStipple", (GLvoid *) glLineStipple }, - { "glLineWidth", (GLvoid *) glLineWidth }, - { "glListBase", (GLvoid *) glListBase }, - { "glLoadIdentity", (GLvoid *) glLoadIdentity }, - { "glLoadMatrixd", (GLvoid *) glLoadMatrixd }, - { "glLoadMatrixf", (GLvoid *) glLoadMatrixf }, - { "glLoadName", (GLvoid *) glLoadName }, - { "glLogicOp", (GLvoid *) glLogicOp }, - { "glMap1d", (GLvoid *) glMap1d }, - { "glMap1f", (GLvoid *) glMap1f }, - { "glMap2d", (GLvoid *) glMap2d }, - { "glMap2f", (GLvoid *) glMap2f }, - { "glMapGrid1d", (GLvoid *) glMapGrid1d }, - { "glMapGrid1f", (GLvoid *) glMapGrid1f }, - { "glMapGrid2d", (GLvoid *) glMapGrid2d }, - { "glMapGrid2f", (GLvoid *) glMapGrid2f }, - { "glMaterialf", (GLvoid *) glMaterialf }, - { "glMaterialfv", (GLvoid *) glMaterialfv }, - { "glMateriali", (GLvoid *) glMateriali }, - { "glMaterialiv", (GLvoid *) glMaterialiv }, - { "glMatrixMode", (GLvoid *) glMatrixMode }, - { "glMultMatrixd", (GLvoid *) glMultMatrixd }, - { "glMultMatrixf", (GLvoid *) glMultMatrixf }, - { "glNewList", (GLvoid *) glNewList }, - { "glNormal3b", (GLvoid *) glNormal3b }, - { "glNormal3bv", (GLvoid *) glNormal3bv }, - { "glNormal3d", (GLvoid *) glNormal3d }, - { "glNormal3dv", (GLvoid *) glNormal3dv }, - { "glNormal3f", (GLvoid *) glNormal3f }, - { "glNormal3fv", (GLvoid *) glNormal3fv }, - { "glNormal3i", (GLvoid *) glNormal3i }, - { "glNormal3iv", (GLvoid *) glNormal3iv }, - { "glNormal3s", (GLvoid *) glNormal3s }, - { "glNormal3sv", (GLvoid *) glNormal3sv }, - { "glOrtho", (GLvoid *) glOrtho }, - { "glPassThrough", (GLvoid *) glPassThrough }, - { "glPixelMapfv", (GLvoid *) glPixelMapfv }, - { "glPixelMapuiv", (GLvoid *) glPixelMapuiv }, - { "glPixelMapusv", (GLvoid *) glPixelMapusv }, - { "glPixelStoref", (GLvoid *) glPixelStoref }, - { "glPixelStorei", (GLvoid *) glPixelStorei }, - { "glPixelTransferf", (GLvoid *) glPixelTransferf }, - { "glPixelTransferi", (GLvoid *) glPixelTransferi }, - { "glPixelZoom", (GLvoid *) glPixelZoom }, - { "glPointSize", (GLvoid *) glPointSize }, - { "glPolygonMode", (GLvoid *) glPolygonMode }, - { "glPolygonOffset", (GLvoid *) glPolygonOffset }, - { "glPolygonStipple", (GLvoid *) glPolygonStipple }, - { "glPopAttrib", (GLvoid *) glPopAttrib }, - { "glPopMatrix", (GLvoid *) glPopMatrix }, - { "glPopName", (GLvoid *) glPopName }, - { "glPushAttrib", (GLvoid *) glPushAttrib }, - { "glPushMatrix", (GLvoid *) glPushMatrix }, - { "glPushName", (GLvoid *) glPushName }, - { "glRasterPos2d", (GLvoid *) glRasterPos2d }, - { "glRasterPos2dv", (GLvoid *) glRasterPos2dv }, - { "glRasterPos2f", (GLvoid *) glRasterPos2f }, - { "glRasterPos2fv", (GLvoid *) glRasterPos2fv }, - { "glRasterPos2i", (GLvoid *) glRasterPos2i }, - { "glRasterPos2iv", (GLvoid *) glRasterPos2iv }, - { "glRasterPos2s", (GLvoid *) glRasterPos2s }, - { "glRasterPos2sv", (GLvoid *) glRasterPos2sv }, - { "glRasterPos3d", (GLvoid *) glRasterPos3d }, - { "glRasterPos3dv", (GLvoid *) glRasterPos3dv }, - { "glRasterPos3f", (GLvoid *) glRasterPos3f }, - { "glRasterPos3fv", (GLvoid *) glRasterPos3fv }, - { "glRasterPos3i", (GLvoid *) glRasterPos3i }, - { "glRasterPos3iv", (GLvoid *) glRasterPos3iv }, - { "glRasterPos3s", (GLvoid *) glRasterPos3s }, - { "glRasterPos3sv", (GLvoid *) glRasterPos3sv }, - { "glRasterPos4d", (GLvoid *) glRasterPos4d }, - { "glRasterPos4dv", (GLvoid *) glRasterPos4dv }, - { "glRasterPos4f", (GLvoid *) glRasterPos4f }, - { "glRasterPos4fv", (GLvoid *) glRasterPos4fv }, - { "glRasterPos4i", (GLvoid *) glRasterPos4i }, - { "glRasterPos4iv", (GLvoid *) glRasterPos4iv }, - { "glRasterPos4s", (GLvoid *) glRasterPos4s }, - { "glRasterPos4sv", (GLvoid *) glRasterPos4sv }, - { "glReadBuffer", (GLvoid *) glReadBuffer }, - { "glReadPixels", (GLvoid *) glReadPixels }, - { "glRectd", (GLvoid *) glRectd }, - { "glRectdv", (GLvoid *) glRectdv }, - { "glRectf", (GLvoid *) glRectf }, - { "glRectfv", (GLvoid *) glRectfv }, - { "glRecti", (GLvoid *) glRecti }, - { "glRectiv", (GLvoid *) glRectiv }, - { "glRects", (GLvoid *) glRects }, - { "glRectsv", (GLvoid *) glRectsv }, - { "glRenderMode", (GLvoid *) glRenderMode }, - { "glRotated", (GLvoid *) glRotated }, - { "glRotatef", (GLvoid *) glRotatef }, - { "glScaled", (GLvoid *) glScaled }, - { "glScalef", (GLvoid *) glScalef }, - { "glScissor", (GLvoid *) glScissor }, - { "glSelectBuffer", (GLvoid *) glSelectBuffer }, - { "glShadeModel", (GLvoid *) glShadeModel }, - { "glStencilFunc", (GLvoid *) glStencilFunc }, - { "glStencilMask", (GLvoid *) glStencilMask }, - { "glStencilOp", (GLvoid *) glStencilOp }, - { "glTexCoord1d", (GLvoid *) glTexCoord1d }, - { "glTexCoord1dv", (GLvoid *) glTexCoord1dv }, - { "glTexCoord1f", (GLvoid *) glTexCoord1f }, - { "glTexCoord1fv", (GLvoid *) glTexCoord1fv }, - { "glTexCoord1i", (GLvoid *) glTexCoord1i }, - { "glTexCoord1iv", (GLvoid *) glTexCoord1iv }, - { "glTexCoord1s", (GLvoid *) glTexCoord1s }, - { "glTexCoord1sv", (GLvoid *) glTexCoord1sv }, - { "glTexCoord2d", (GLvoid *) glTexCoord2d }, - { "glTexCoord2dv", (GLvoid *) glTexCoord2dv }, - { "glTexCoord2f", (GLvoid *) glTexCoord2f }, - { "glTexCoord2fv", (GLvoid *) glTexCoord2fv }, - { "glTexCoord2i", (GLvoid *) glTexCoord2i }, - { "glTexCoord2iv", (GLvoid *) glTexCoord2iv }, - { "glTexCoord2s", (GLvoid *) glTexCoord2s }, - { "glTexCoord2sv", (GLvoid *) glTexCoord2sv }, - { "glTexCoord3d", (GLvoid *) glTexCoord3d }, - { "glTexCoord3dv", (GLvoid *) glTexCoord3dv }, - { "glTexCoord3f", (GLvoid *) glTexCoord3f }, - { "glTexCoord3fv", (GLvoid *) glTexCoord3fv }, - { "glTexCoord3i", (GLvoid *) glTexCoord3i }, - { "glTexCoord3iv", (GLvoid *) glTexCoord3iv }, - { "glTexCoord3s", (GLvoid *) glTexCoord3s }, - { "glTexCoord3sv", (GLvoid *) glTexCoord3sv }, - { "glTexCoord4d", (GLvoid *) glTexCoord4d }, - { "glTexCoord4dv", (GLvoid *) glTexCoord4dv }, - { "glTexCoord4f", (GLvoid *) glTexCoord4f }, - { "glTexCoord4fv", (GLvoid *) glTexCoord4fv }, - { "glTexCoord4i", (GLvoid *) glTexCoord4i }, - { "glTexCoord4iv", (GLvoid *) glTexCoord4iv }, - { "glTexCoord4s", (GLvoid *) glTexCoord4s }, - { "glTexCoord4sv", (GLvoid *) glTexCoord4sv }, - { "glTexEnvf", (GLvoid *) glTexEnvf }, - { "glTexEnvfv", (GLvoid *) glTexEnvfv }, - { "glTexEnvi", (GLvoid *) glTexEnvi }, - { "glTexEnviv", (GLvoid *) glTexEnviv }, - { "glTexGend", (GLvoid *) glTexGend }, - { "glTexGendv", (GLvoid *) glTexGendv }, - { "glTexGenf", (GLvoid *) glTexGenf }, - { "glTexGenfv", (GLvoid *) glTexGenfv }, - { "glTexGeni", (GLvoid *) glTexGeni }, - { "glTexGeniv", (GLvoid *) glTexGeniv }, - { "glTexImage1D", (GLvoid *) glTexImage1D }, - { "glTexImage2D", (GLvoid *) glTexImage2D }, - { "glTexParameterf", (GLvoid *) glTexParameterf }, - { "glTexParameterfv", (GLvoid *) glTexParameterfv }, - { "glTexParameteri", (GLvoid *) glTexParameteri }, - { "glTexParameteriv", (GLvoid *) glTexParameteriv }, - { "glTranslated", (GLvoid *) glTranslated }, - { "glTranslatef", (GLvoid *) glTranslatef }, - { "glVertex2d", (GLvoid *) glVertex2d }, - { "glVertex2dv", (GLvoid *) glVertex2dv }, - { "glVertex2f", (GLvoid *) glVertex2f }, - { "glVertex2fv", (GLvoid *) glVertex2fv }, - { "glVertex2i", (GLvoid *) glVertex2i }, - { "glVertex2iv", (GLvoid *) glVertex2iv }, - { "glVertex2s", (GLvoid *) glVertex2s }, - { "glVertex2sv", (GLvoid *) glVertex2sv }, - { "glVertex3d", (GLvoid *) glVertex3d }, - { "glVertex3dv", (GLvoid *) glVertex3dv }, - { "glVertex3f", (GLvoid *) glVertex3f }, - { "glVertex3fv", (GLvoid *) glVertex3fv }, - { "glVertex3i", (GLvoid *) glVertex3i }, - { "glVertex3iv", (GLvoid *) glVertex3iv }, - { "glVertex3s", (GLvoid *) glVertex3s }, - { "glVertex3sv", (GLvoid *) glVertex3sv }, - { "glVertex4d", (GLvoid *) glVertex4d }, - { "glVertex4dv", (GLvoid *) glVertex4dv }, - { "glVertex4f", (GLvoid *) glVertex4f }, - { "glVertex4fv", (GLvoid *) glVertex4fv }, - { "glVertex4i", (GLvoid *) glVertex4i }, - { "glVertex4iv", (GLvoid *) glVertex4iv }, - { "glVertex4s", (GLvoid *) glVertex4s }, - { "glVertex4sv", (GLvoid *) glVertex4sv }, - { "glViewport", (GLvoid *) glViewport }, - +static struct name_address_offset static_functions[] = { /* GL 1.1 */ -#ifdef GL_VERSION_1_1 + { "glNewList", (GLvoid *) glNewList, _gloffset_NewList }, + { "glEndList", (GLvoid *) glEndList, _gloffset_EndList }, + { "glCallList", (GLvoid *) glCallList, _gloffset_CallList }, + { "glCallLists", (GLvoid *) glCallLists, _gloffset_CallLists }, + { "glDeleteLists", (GLvoid *) glDeleteLists, _gloffset_DeleteLists }, + { "glGenLists", (GLvoid *) glGenLists, _gloffset_GenLists }, + { "glListBase", (GLvoid *) glListBase, _gloffset_ListBase }, + { "glBegin", (GLvoid *) glBegin, _gloffset_Begin }, + { "glBitmap", (GLvoid *) glBitmap, _gloffset_Bitmap }, + { "glColor3b", (GLvoid *) glColor3b, _gloffset_Color3b }, + { "glColor3bv", (GLvoid *) glColor3bv, _gloffset_Color3bv }, + { "glColor3d", (GLvoid *) glColor3d, _gloffset_Color3d }, + { "glColor3dv", (GLvoid *) glColor3dv, _gloffset_Color3dv }, + { "glColor3f", (GLvoid *) glColor3f, _gloffset_Color3f }, + { "glColor3fv", (GLvoid *) glColor3fv, _gloffset_Color3fv }, + { "glColor3i", (GLvoid *) glColor3i, _gloffset_Color3i }, + { "glColor3iv", (GLvoid *) glColor3iv, _gloffset_Color3iv }, + { "glColor3s", (GLvoid *) glColor3s, _gloffset_Color3s }, + { "glColor3sv", (GLvoid *) glColor3sv, _gloffset_Color3sv }, + { "glColor3ub", (GLvoid *) glColor3ub, _gloffset_Color3ub }, + { "glColor3ubv", (GLvoid *) glColor3ubv, _gloffset_Color3ubv }, + { "glColor3ui", (GLvoid *) glColor3ui, _gloffset_Color3ui }, + { "glColor3uiv", (GLvoid *) glColor3uiv, _gloffset_Color3uiv }, + { "glColor3us", (GLvoid *) glColor3us, _gloffset_Color3us }, + { "glColor3usv", (GLvoid *) glColor3usv, _gloffset_Color3usv }, + { "glColor4b", (GLvoid *) glColor4b, _gloffset_Color4b }, + { "glColor4bv", (GLvoid *) glColor4bv, _gloffset_Color4bv }, + { "glColor4d", (GLvoid *) glColor4d, _gloffset_Color4d }, + { "glColor4dv", (GLvoid *) glColor4dv, _gloffset_Color4dv }, + { "glColor4f", (GLvoid *) glColor4f, _gloffset_Color4f }, + { "glColor4fv", (GLvoid *) glColor4fv, _gloffset_Color4fv }, + { "glColor4i", (GLvoid *) glColor4i, _gloffset_Color4i }, + { "glColor4iv", (GLvoid *) glColor4iv, _gloffset_Color4iv }, + { "glColor4s", (GLvoid *) glColor4s, _gloffset_Color4s }, + { "glColor4sv", (GLvoid *) glColor4sv, _gloffset_Color4sv }, + { "glColor4ub", (GLvoid *) glColor4ub, _gloffset_Color4ub }, + { "glColor4ubv", (GLvoid *) glColor4ubv, _gloffset_Color4ubv }, + { "glColor4ui", (GLvoid *) glColor4ui, _gloffset_Color4ui }, + { "glColor4uiv", (GLvoid *) glColor4uiv, _gloffset_Color4uiv }, + { "glColor4us", (GLvoid *) glColor4us, _gloffset_Color4us }, + { "glColor4usv", (GLvoid *) glColor4usv, _gloffset_Color4usv }, + { "glEdgeFlag", (GLvoid *) glEdgeFlag, _gloffset_EdgeFlag }, + { "glEdgeFlagv", (GLvoid *) glEdgeFlagv, _gloffset_EdgeFlagv }, + { "glEnd", (GLvoid *) glEnd, _gloffset_End }, + { "glIndexd", (GLvoid *) glIndexd, _gloffset_Indexd }, + { "glIndexdv", (GLvoid *) glIndexdv, _gloffset_Indexdv }, + { "glIndexf", (GLvoid *) glIndexf, _gloffset_Indexf }, + { "glIndexfv", (GLvoid *) glIndexfv, _gloffset_Indexfv }, + { "glIndexi", (GLvoid *) glIndexi, _gloffset_Indexi }, + { "glIndexiv", (GLvoid *) glIndexiv, _gloffset_Indexiv }, + { "glIndexs", (GLvoid *) glIndexs, _gloffset_Indexs }, + { "glIndexsv", (GLvoid *) glIndexsv, _gloffset_Indexsv }, + { "glNormal3b", (GLvoid *) glNormal3b, _gloffset_Normal3b }, + { "glNormal3bv", (GLvoid *) glNormal3bv, _gloffset_Normal3bv }, + { "glNormal3d", (GLvoid *) glNormal3d, _gloffset_Normal3d }, + { "glNormal3dv", (GLvoid *) glNormal3dv, _gloffset_Normal3dv }, + { "glNormal3f", (GLvoid *) glNormal3f, _gloffset_Normal3f }, + { "glNormal3fv", (GLvoid *) glNormal3fv, _gloffset_Normal3fv }, + { "glNormal3i", (GLvoid *) glNormal3i, _gloffset_Normal3i }, + { "glNormal3iv", (GLvoid *) glNormal3iv, _gloffset_Normal3iv }, + { "glNormal3s", (GLvoid *) glNormal3s, _gloffset_Normal3s }, + { "glNormal3sv", (GLvoid *) glNormal3sv, _gloffset_Normal3sv }, + { "glRasterPos2d", (GLvoid *) glRasterPos2d, _gloffset_RasterPos2d }, + { "glRasterPos2dv", (GLvoid *) glRasterPos2dv, _gloffset_RasterPos2dv }, + { "glRasterPos2f", (GLvoid *) glRasterPos2f, _gloffset_RasterPos2f }, + { "glRasterPos2fv", (GLvoid *) glRasterPos2fv, _gloffset_RasterPos2fv }, + { "glRasterPos2i", (GLvoid *) glRasterPos2i, _gloffset_RasterPos2i }, + { "glRasterPos2iv", (GLvoid *) glRasterPos2iv, _gloffset_RasterPos2iv }, + { "glRasterPos2s", (GLvoid *) glRasterPos2s, _gloffset_RasterPos2s }, + { "glRasterPos2sv", (GLvoid *) glRasterPos2sv, _gloffset_RasterPos2sv }, + { "glRasterPos3d", (GLvoid *) glRasterPos3d, _gloffset_RasterPos3d }, + { "glRasterPos3dv", (GLvoid *) glRasterPos3dv, _gloffset_RasterPos3dv }, + { "glRasterPos3f", (GLvoid *) glRasterPos3f, _gloffset_RasterPos3f }, + { "glRasterPos3fv", (GLvoid *) glRasterPos3fv, _gloffset_RasterPos3fv }, + { "glRasterPos3i", (GLvoid *) glRasterPos3i, _gloffset_RasterPos3i }, + { "glRasterPos3iv", (GLvoid *) glRasterPos3iv, _gloffset_RasterPos3iv }, + { "glRasterPos3s", (GLvoid *) glRasterPos3s, _gloffset_RasterPos3s }, + { "glRasterPos3sv", (GLvoid *) glRasterPos3sv, _gloffset_RasterPos3sv }, + { "glRasterPos4d", (GLvoid *) glRasterPos4d, _gloffset_RasterPos4d }, + { "glRasterPos4dv", (GLvoid *) glRasterPos4dv, _gloffset_RasterPos4dv }, + { "glRasterPos4f", (GLvoid *) glRasterPos4f, _gloffset_RasterPos4f }, + { "glRasterPos4fv", (GLvoid *) glRasterPos4fv, _gloffset_RasterPos4fv }, + { "glRasterPos4i", (GLvoid *) glRasterPos4i, _gloffset_RasterPos4i }, + { "glRasterPos4iv", (GLvoid *) glRasterPos4iv, _gloffset_RasterPos4iv }, + { "glRasterPos4s", (GLvoid *) glRasterPos4s, _gloffset_RasterPos4s }, + { "glRasterPos4sv", (GLvoid *) glRasterPos4sv, _gloffset_RasterPos4sv }, + { "glRectd", (GLvoid *) glRectd, _gloffset_Rectd }, + { "glRectdv", (GLvoid *) glRectdv, _gloffset_Rectdv }, + { "glRectf", (GLvoid *) glRectf, _gloffset_Rectf }, + { "glRectfv", (GLvoid *) glRectfv, _gloffset_Rectfv }, + { "glRecti", (GLvoid *) glRecti, _gloffset_Recti }, + { "glRectiv", (GLvoid *) glRectiv, _gloffset_Rectiv }, + { "glRects", (GLvoid *) glRects, _gloffset_Rects }, + { "glRectsv", (GLvoid *) glRectsv, _gloffset_Rectsv }, + { "glTexCoord1d", (GLvoid *) glTexCoord1d, _gloffset_TexCoord1d }, + { "glTexCoord1dv", (GLvoid *) glTexCoord1dv, _gloffset_TexCoord1dv }, + { "glTexCoord1f", (GLvoid *) glTexCoord1f, _gloffset_TexCoord1f }, + { "glTexCoord1fv", (GLvoid *) glTexCoord1fv, _gloffset_TexCoord1fv }, + { "glTexCoord1i", (GLvoid *) glTexCoord1i, _gloffset_TexCoord1i }, + { "glTexCoord1iv", (GLvoid *) glTexCoord1iv, _gloffset_TexCoord1iv }, + { "glTexCoord1s", (GLvoid *) glTexCoord1s, _gloffset_TexCoord1s }, + { "glTexCoord1sv", (GLvoid *) glTexCoord1sv, _gloffset_TexCoord1sv }, + { "glTexCoord2d", (GLvoid *) glTexCoord2d, _gloffset_TexCoord2d }, + { "glTexCoord2dv", (GLvoid *) glTexCoord2dv, _gloffset_TexCoord2dv }, + { "glTexCoord2f", (GLvoid *) glTexCoord2f, _gloffset_TexCoord2f }, + { "glTexCoord2fv", (GLvoid *) glTexCoord2fv, _gloffset_TexCoord2fv }, + { "glTexCoord2i", (GLvoid *) glTexCoord2i, _gloffset_TexCoord2i }, + { "glTexCoord2iv", (GLvoid *) glTexCoord2iv, _gloffset_TexCoord2iv }, + { "glTexCoord2s", (GLvoid *) glTexCoord2s, _gloffset_TexCoord2s }, + { "glTexCoord2sv", (GLvoid *) glTexCoord2sv, _gloffset_TexCoord2sv }, + { "glTexCoord3d", (GLvoid *) glTexCoord3d, _gloffset_TexCoord3d }, + { "glTexCoord3dv", (GLvoid *) glTexCoord3dv, _gloffset_TexCoord3dv }, + { "glTexCoord3f", (GLvoid *) glTexCoord3f, _gloffset_TexCoord3f }, + { "glTexCoord3fv", (GLvoid *) glTexCoord3fv, _gloffset_TexCoord3fv }, + { "glTexCoord3i", (GLvoid *) glTexCoord3i, _gloffset_TexCoord3i }, + { "glTexCoord3iv", (GLvoid *) glTexCoord3iv, _gloffset_TexCoord3iv }, + { "glTexCoord3s", (GLvoid *) glTexCoord3s, _gloffset_TexCoord3s }, + { "glTexCoord3sv", (GLvoid *) glTexCoord3sv, _gloffset_TexCoord3sv }, + { "glTexCoord4d", (GLvoid *) glTexCoord4d, _gloffset_TexCoord4d }, + { "glTexCoord4dv", (GLvoid *) glTexCoord4dv, _gloffset_TexCoord4dv }, + { "glTexCoord4f", (GLvoid *) glTexCoord4f, _gloffset_TexCoord4f }, + { "glTexCoord4fv", (GLvoid *) glTexCoord4fv, _gloffset_TexCoord4fv }, + { "glTexCoord4i", (GLvoid *) glTexCoord4i, _gloffset_TexCoord4i }, + { "glTexCoord4iv", (GLvoid *) glTexCoord4iv, _gloffset_TexCoord4iv }, + { "glTexCoord4s", (GLvoid *) glTexCoord4s, _gloffset_TexCoord4s }, + { "glTexCoord4sv", (GLvoid *) glTexCoord4sv, _gloffset_TexCoord4sv }, + { "glVertex2d", (GLvoid *) glVertex2d, _gloffset_Vertex2d }, + { "glVertex2dv", (GLvoid *) glVertex2dv, _gloffset_Vertex2dv }, + { "glVertex2f", (GLvoid *) glVertex2f, _gloffset_Vertex2f }, + { "glVertex2fv", (GLvoid *) glVertex2fv, _gloffset_Vertex2fv }, + { "glVertex2i", (GLvoid *) glVertex2i, _gloffset_Vertex2i }, + { "glVertex2iv", (GLvoid *) glVertex2iv, _gloffset_Vertex2iv }, + { "glVertex2s", (GLvoid *) glVertex2s, _gloffset_Vertex2s }, + { "glVertex2sv", (GLvoid *) glVertex2sv, _gloffset_Vertex2sv }, + { "glVertex3d", (GLvoid *) glVertex3d, _gloffset_Vertex3d }, + { "glVertex3dv", (GLvoid *) glVertex3dv, _gloffset_Vertex3dv }, + { "glVertex3f", (GLvoid *) glVertex3f, _gloffset_Vertex3f }, + { "glVertex3fv", (GLvoid *) glVertex3fv, _gloffset_Vertex3fv }, + { "glVertex3i", (GLvoid *) glVertex3i, _gloffset_Vertex3i }, + { "glVertex3iv", (GLvoid *) glVertex3iv, _gloffset_Vertex3iv }, + { "glVertex3s", (GLvoid *) glVertex3s, _gloffset_Vertex3s }, + { "glVertex3sv", (GLvoid *) glVertex3sv, _gloffset_Vertex3sv }, + { "glVertex4d", (GLvoid *) glVertex4d, _gloffset_Vertex4d }, + { "glVertex4dv", (GLvoid *) glVertex4dv, _gloffset_Vertex4dv }, + { "glVertex4f", (GLvoid *) glVertex4f, _gloffset_Vertex4f }, + { "glVertex4fv", (GLvoid *) glVertex4fv, _gloffset_Vertex4fv }, + { "glVertex4i", (GLvoid *) glVertex4i, _gloffset_Vertex4i }, + { "glVertex4iv", (GLvoid *) glVertex4iv, _gloffset_Vertex4iv }, + { "glVertex4s", (GLvoid *) glVertex4s, _gloffset_Vertex4s }, + { "glVertex4sv", (GLvoid *) glVertex4sv, _gloffset_Vertex4sv }, + { "glClipPlane", (GLvoid *) glClipPlane, _gloffset_ClipPlane }, + { "glColorMaterial", (GLvoid *) glColorMaterial, _gloffset_ColorMaterial }, + { "glCullFace", (GLvoid *) glCullFace, _gloffset_CullFace }, + { "glFogf", (GLvoid *) glFogf, _gloffset_Fogf }, + { "glFogfv", (GLvoid *) glFogfv, _gloffset_Fogfv }, + { "glFogi", (GLvoid *) glFogi, _gloffset_Fogi }, + { "glFogiv", (GLvoid *) glFogiv, _gloffset_Fogiv }, + { "glFrontFace", (GLvoid *) glFrontFace, _gloffset_FrontFace }, + { "glHint", (GLvoid *) glHint, _gloffset_Hint }, + { "glLightf", (GLvoid *) glLightf, _gloffset_Lightf }, + { "glLightfv", (GLvoid *) glLightfv, _gloffset_Lightfv }, + { "glLighti", (GLvoid *) glLighti, _gloffset_Lighti }, + { "glLightiv", (GLvoid *) glLightiv, _gloffset_Lightiv }, + { "glLightModelf", (GLvoid *) glLightModelf, _gloffset_LightModelf }, + { "glLightModelfv", (GLvoid *) glLightModelfv, _gloffset_LightModelfv }, + { "glLightModeli", (GLvoid *) glLightModeli, _gloffset_LightModeli }, + { "glLightModeliv", (GLvoid *) glLightModeliv, _gloffset_LightModeliv }, + { "glLineStipple", (GLvoid *) glLineStipple, _gloffset_LineStipple }, + { "glLineWidth", (GLvoid *) glLineWidth, _gloffset_LineWidth }, + { "glMaterialf", (GLvoid *) glMaterialf, _gloffset_Materialf }, + { "glMaterialfv", (GLvoid *) glMaterialfv, _gloffset_Materialfv }, + { "glMateriali", (GLvoid *) glMateriali, _gloffset_Materiali }, + { "glMaterialiv", (GLvoid *) glMaterialiv, _gloffset_Materialiv }, + { "glPointSize", (GLvoid *) glPointSize, _gloffset_PointSize }, + { "glPolygonMode", (GLvoid *) glPolygonMode, _gloffset_PolygonMode }, + { "glPolygonStipple", (GLvoid *) glPolygonStipple, _gloffset_PolygonStipple }, + { "glScissor", (GLvoid *) glScissor, _gloffset_Scissor }, + { "glShadeModel", (GLvoid *) glShadeModel, _gloffset_ShadeModel }, + { "glTexParameterf", (GLvoid *) glTexParameterf, _gloffset_TexParameterf }, + { "glTexParameterfv", (GLvoid *) glTexParameterfv, _gloffset_TexParameterfv }, + { "glTexParameteri", (GLvoid *) glTexParameteri, _gloffset_TexParameteri }, + { "glTexParameteriv", (GLvoid *) glTexParameteriv, _gloffset_TexParameteriv }, + { "glTexImage1D", (GLvoid *) glTexImage1D, _gloffset_TexImage1D }, + { "glTexImage2D", (GLvoid *) glTexImage2D, _gloffset_TexImage2D }, + { "glTexEnvf", (GLvoid *) glTexEnvf, _gloffset_TexEnvf }, + { "glTexEnvfv", (GLvoid *) glTexEnvfv, _gloffset_TexEnvfv }, + { "glTexEnvi", (GLvoid *) glTexEnvi, _gloffset_TexEnvi }, + { "glTexEnviv", (GLvoid *) glTexEnviv, _gloffset_TexEnviv }, + { "glTexGend", (GLvoid *) glTexGend, _gloffset_TexGend }, + { "glTexGendv", (GLvoid *) glTexGendv, _gloffset_TexGendv }, + { "glTexGenf", (GLvoid *) glTexGenf, _gloffset_TexGenf }, + { "glTexGenfv", (GLvoid *) glTexGenfv, _gloffset_TexGenfv }, + { "glTexGeni", (GLvoid *) glTexGeni, _gloffset_TexGeni }, + { "glTexGeniv", (GLvoid *) glTexGeniv, _gloffset_TexGeniv }, + { "glFeedbackBuffer", (GLvoid *) glFeedbackBuffer, _gloffset_FeedbackBuffer }, + { "glSelectBuffer", (GLvoid *) glSelectBuffer, _gloffset_SelectBuffer }, + { "glRenderMode", (GLvoid *) glRenderMode, _gloffset_RenderMode }, + { "glInitNames", (GLvoid *) glInitNames, _gloffset_InitNames }, + { "glLoadName", (GLvoid *) glLoadName, _gloffset_LoadName }, + { "glPassThrough", (GLvoid *) glPassThrough, _gloffset_PassThrough }, + { "glPopName", (GLvoid *) glPopName, _gloffset_PopName }, + { "glPushName", (GLvoid *) glPushName, _gloffset_PushName }, + { "glDrawBuffer", (GLvoid *) glDrawBuffer, _gloffset_DrawBuffer }, + { "glClear", (GLvoid *) glClear, _gloffset_Clear }, + { "glClearAccum", (GLvoid *) glClearAccum, _gloffset_ClearAccum }, + { "glClearIndex", (GLvoid *) glClearIndex, _gloffset_ClearIndex }, + { "glClearColor", (GLvoid *) glClearColor, _gloffset_ClearColor }, + { "glClearStencil", (GLvoid *) glClearStencil, _gloffset_ClearStencil }, + { "glClearDepth", (GLvoid *) glClearDepth, _gloffset_ClearDepth }, + { "glStencilMask", (GLvoid *) glStencilMask, _gloffset_StencilMask }, + { "glColorMask", (GLvoid *) glColorMask, _gloffset_ColorMask }, + { "glDepthMask", (GLvoid *) glDepthMask, _gloffset_DepthMask }, + { "glIndexMask", (GLvoid *) glIndexMask, _gloffset_IndexMask }, + { "glAccum", (GLvoid *) glAccum, _gloffset_Accum }, + { "glDisable", (GLvoid *) glDisable, _gloffset_Disable }, + { "glEnable", (GLvoid *) glEnable, _gloffset_Enable }, + { "glFinish", (GLvoid *) glFinish, _gloffset_Finish }, + { "glFlush", (GLvoid *) glFlush, _gloffset_Flush }, + { "glPopAttrib", (GLvoid *) glPopAttrib, _gloffset_PopAttrib }, + { "glPushAttrib", (GLvoid *) glPushAttrib, _gloffset_PushAttrib }, + { "glMap1d", (GLvoid *) glMap1d, _gloffset_Map1d }, + { "glMap1f", (GLvoid *) glMap1f, _gloffset_Map1f }, + { "glMap2d", (GLvoid *) glMap2d, _gloffset_Map2d }, + { "glMap2f", (GLvoid *) glMap2f, _gloffset_Map2f }, + { "glMapGrid1d", (GLvoid *) glMapGrid1d, _gloffset_MapGrid1d }, + { "glMapGrid1f", (GLvoid *) glMapGrid1f, _gloffset_MapGrid1f }, + { "glMapGrid2d", (GLvoid *) glMapGrid2d, _gloffset_MapGrid2d }, + { "glMapGrid2f", (GLvoid *) glMapGrid2f, _gloffset_MapGrid2f }, + { "glEvalCoord1d", (GLvoid *) glEvalCoord1d, _gloffset_EvalCoord1d }, + { "glEvalCoord1dv", (GLvoid *) glEvalCoord1dv, _gloffset_EvalCoord1dv }, + { "glEvalCoord1f", (GLvoid *) glEvalCoord1f, _gloffset_EvalCoord1f }, + { "glEvalCoord1fv", (GLvoid *) glEvalCoord1fv, _gloffset_EvalCoord1fv }, + { "glEvalCoord2d", (GLvoid *) glEvalCoord2d, _gloffset_EvalCoord2d }, + { "glEvalCoord2dv", (GLvoid *) glEvalCoord2dv, _gloffset_EvalCoord2dv }, + { "glEvalCoord2f", (GLvoid *) glEvalCoord2f, _gloffset_EvalCoord2f }, + { "glEvalCoord2fv", (GLvoid *) glEvalCoord2fv, _gloffset_EvalCoord2fv }, + { "glEvalMesh1", (GLvoid *) glEvalMesh1, _gloffset_EvalMesh1 }, + { "glEvalPoint1", (GLvoid *) glEvalPoint1, _gloffset_EvalPoint1 }, + { "glEvalMesh2", (GLvoid *) glEvalMesh2, _gloffset_EvalMesh2 }, + { "glEvalPoint2", (GLvoid *) glEvalPoint2, _gloffset_EvalPoint2 }, + { "glAlphaFunc", (GLvoid *) glAlphaFunc, _gloffset_AlphaFunc }, + { "glBlendFunc", (GLvoid *) glBlendFunc, _gloffset_BlendFunc }, + { "glLogicOp", (GLvoid *) glLogicOp, _gloffset_LogicOp }, + { "glStencilFunc", (GLvoid *) glStencilFunc, _gloffset_StencilFunc }, + { "glStencilOp", (GLvoid *) glStencilOp, _gloffset_StencilOp }, + { "glDepthFunc", (GLvoid *) glDepthFunc, _gloffset_DepthFunc }, + { "glPixelZoom", (GLvoid *) glPixelZoom, _gloffset_PixelZoom }, + { "glPixelTransferf", (GLvoid *) glPixelTransferf, _gloffset_PixelTransferf }, + { "glPixelTransferi", (GLvoid *) glPixelTransferi, _gloffset_PixelTransferi }, + { "glPixelStoref", (GLvoid *) glPixelStoref, _gloffset_PixelStoref }, + { "glPixelStorei", (GLvoid *) glPixelStorei, _gloffset_PixelStorei }, + { "glPixelMapfv", (GLvoid *) glPixelMapfv, _gloffset_PixelMapfv }, + { "glPixelMapuiv", (GLvoid *) glPixelMapuiv, _gloffset_PixelMapuiv }, + { "glPixelMapusv", (GLvoid *) glPixelMapusv, _gloffset_PixelMapusv }, + { "glReadBuffer", (GLvoid *) glReadBuffer, _gloffset_ReadBuffer }, + { "glCopyPixels", (GLvoid *) glCopyPixels, _gloffset_CopyPixels }, + { "glReadPixels", (GLvoid *) glReadPixels, _gloffset_ReadPixels }, + { "glDrawPixels", (GLvoid *) glDrawPixels, _gloffset_DrawPixels }, + { "glGetBooleanv", (GLvoid *) glGetBooleanv, _gloffset_GetBooleanv }, + { "glGetClipPlane", (GLvoid *) glGetClipPlane, _gloffset_GetClipPlane }, + { "glGetDoublev", (GLvoid *) glGetDoublev, _gloffset_GetDoublev }, + { "glGetError", (GLvoid *) glGetError, _gloffset_GetError }, + { "glGetFloatv", (GLvoid *) glGetFloatv, _gloffset_GetFloatv }, + { "glGetIntegerv", (GLvoid *) glGetIntegerv, _gloffset_GetIntegerv }, + { "glGetLightfv", (GLvoid *) glGetLightfv, _gloffset_GetLightfv }, + { "glGetLightiv", (GLvoid *) glGetLightiv, _gloffset_GetLightiv }, + { "glGetMapdv", (GLvoid *) glGetMapdv, _gloffset_GetMapdv }, + { "glGetMapfv", (GLvoid *) glGetMapfv, _gloffset_GetMapfv }, + { "glGetMapiv", (GLvoid *) glGetMapiv, _gloffset_GetMapiv }, + { "glGetMaterialfv", (GLvoid *) glGetMaterialfv, _gloffset_GetMaterialfv }, + { "glGetMaterialiv", (GLvoid *) glGetMaterialiv, _gloffset_GetMaterialiv }, + { "glGetPixelMapfv", (GLvoid *) glGetPixelMapfv, _gloffset_GetPixelMapfv }, + { "glGetPixelMapuiv", (GLvoid *) glGetPixelMapuiv, _gloffset_GetPixelMapuiv }, + { "glGetPixelMapusv", (GLvoid *) glGetPixelMapusv, _gloffset_GetPixelMapusv }, + { "glGetPolygonStipple", (GLvoid *) glGetPolygonStipple, _gloffset_GetPolygonStipple }, + { "glGetString", (GLvoid *) glGetString, _gloffset_GetString }, + { "glGetTexEnvfv", (GLvoid *) glGetTexEnvfv, _gloffset_GetTexEnvfv }, + { "glGetTexEnviv", (GLvoid *) glGetTexEnviv, _gloffset_GetTexEnviv }, + { "glGetTexGendv", (GLvoid *) glGetTexGendv, _gloffset_GetTexGendv }, + { "glGetTexGenfv", (GLvoid *) glGetTexGenfv, _gloffset_GetTexGenfv }, + { "glGetTexGeniv", (GLvoid *) glGetTexGeniv, _gloffset_GetTexGeniv }, + { "glGetTexImage", (GLvoid *) glGetTexImage, _gloffset_GetTexImage }, + { "glGetTexParameterfv", (GLvoid *) glGetTexParameterfv, _gloffset_GetTexParameterfv }, + { "glGetTexParameteriv", (GLvoid *) glGetTexParameteriv, _gloffset_GetTexParameteriv }, + { "glGetTexLevelParameterfv", (GLvoid *) glGetTexLevelParameterfv, _gloffset_GetTexLevelParameterfv }, + { "glGetTexLevelParameteriv", (GLvoid *) glGetTexLevelParameteriv, _gloffset_GetTexLevelParameteriv }, + { "glIsEnabled", (GLvoid *) glIsEnabled, _gloffset_IsEnabled }, + { "glIsList", (GLvoid *) glIsList, _gloffset_IsList }, + { "glDepthRange", (GLvoid *) glDepthRange, _gloffset_DepthRange }, + { "glFrustum", (GLvoid *) glFrustum, _gloffset_Frustum }, + { "glLoadIdentity", (GLvoid *) glLoadIdentity, _gloffset_LoadIdentity }, + { "glLoadMatrixf", (GLvoid *) glLoadMatrixf, _gloffset_LoadMatrixf }, + { "glLoadMatrixd", (GLvoid *) glLoadMatrixd, _gloffset_LoadMatrixd }, + { "glMatrixMode", (GLvoid *) glMatrixMode, _gloffset_MatrixMode }, + { "glMultMatrixf", (GLvoid *) glMultMatrixf, _gloffset_MultMatrixf }, + { "glMultMatrixd", (GLvoid *) glMultMatrixd, _gloffset_MultMatrixd }, + { "glOrtho", (GLvoid *) glOrtho, _gloffset_Ortho }, + { "glPopMatrix", (GLvoid *) glPopMatrix, _gloffset_PopMatrix }, + { "glPushMatrix", (GLvoid *) glPushMatrix, _gloffset_PushMatrix }, + { "glRotated", (GLvoid *) glRotated, _gloffset_Rotated }, + { "glRotatef", (GLvoid *) glRotatef, _gloffset_Rotatef }, + { "glScaled", (GLvoid *) glScaled, _gloffset_Scaled }, + { "glScalef", (GLvoid *) glScalef, _gloffset_Scalef }, + { "glTranslated", (GLvoid *) glTranslated, _gloffset_Translated }, + { "glTranslatef", (GLvoid *) glTranslatef, _gloffset_Translatef }, + { "glViewport", (GLvoid *) glViewport, _gloffset_Viewport }, + /* 1.1 */ + { "glArrayElement", (GLvoid *) glArrayElement, _gloffset_ArrayElement }, + { "glColorPointer", (GLvoid *) glColorPointer, _gloffset_ColorPointer }, + { "glDisableClientState", (GLvoid *) glDisableClientState, _gloffset_DisableClientState }, + { "glDrawArrays", (GLvoid *) glDrawArrays, _gloffset_DrawArrays }, + { "glDrawElements", (GLvoid *) glDrawElements, _gloffset_DrawElements }, + { "glEdgeFlagPointer", (GLvoid *) glEdgeFlagPointer, _gloffset_EdgeFlagPointer }, + { "glEnableClientState", (GLvoid *) glEnableClientState, _gloffset_EnableClientState }, + { "glGetPointerv", (GLvoid *) glGetPointerv, _gloffset_GetPointerv }, + { "glIndexPointer", (GLvoid *) glIndexPointer, _gloffset_IndexPointer }, + { "glInterleavedArrays", (GLvoid *) glInterleavedArrays, _gloffset_InterleavedArrays }, + { "glNormalPointer", (GLvoid *) glNormalPointer, _gloffset_NormalPointer }, + { "glTexCoordPointer", (GLvoid *) glTexCoordPointer, _gloffset_TexCoordPointer }, + { "glVertexPointer", (GLvoid *) glVertexPointer, _gloffset_VertexPointer }, + { "glPolygonOffset", (GLvoid *) glPolygonOffset, _gloffset_PolygonOffset }, + { "glCopyTexImage1D", (GLvoid *) glCopyTexImage1D, _gloffset_CopyTexImage1D }, + { "glCopyTexImage2D", (GLvoid *) glCopyTexImage2D, _gloffset_CopyTexImage2D }, + { "glCopyTexSubImage1D", (GLvoid *) glCopyTexSubImage1D, _gloffset_CopyTexSubImage1D }, + { "glCopyTexSubImage2D", (GLvoid *) glCopyTexSubImage2D, _gloffset_CopyTexSubImage2D }, + { "glTexSubImage1D", (GLvoid *) glTexSubImage1D, _gloffset_TexSubImage1D }, + { "glTexSubImage2D", (GLvoid *) glTexSubImage2D, _gloffset_TexSubImage2D }, + { "glAreTexturesResident", (GLvoid *) glAreTexturesResident, _gloffset_AreTexturesResident }, + { "glBindTexture", (GLvoid *) glBindTexture, _gloffset_BindTexture }, + { "glDeleteTextures", (GLvoid *) glDeleteTextures, _gloffset_DeleteTextures }, + { "glGenTextures", (GLvoid *) glGenTextures, _gloffset_GenTextures }, + { "glIsTexture", (GLvoid *) glIsTexture, _gloffset_IsTexture }, + { "glPrioritizeTextures", (GLvoid *) glPrioritizeTextures, _gloffset_PrioritizeTextures }, + { "glIndexub", (GLvoid *) glIndexub, _gloffset_Indexub }, + { "glIndexubv", (GLvoid *) glIndexubv, _gloffset_Indexubv }, + { "glPopClientAttrib", (GLvoid *) glPopClientAttrib, _gloffset_PopClientAttrib }, + { "glPushClientAttrib", (GLvoid *) glPushClientAttrib, _gloffset_PushClientAttrib }, + /* 1.2 */ +#ifdef GL_VERSION_1_2 #define NAME(X) X #else #define NAME(X) NotImplemented #endif - { "glAreTexturesResident", (GLvoid *) NAME(glAreTexturesResident) }, - { "glArrayElement", (GLvoid *) NAME(glArrayElement) }, - { "glBindTexture", (GLvoid *) NAME(glBindTexture) }, - { "glColorPointer", (GLvoid *) NAME(glColorPointer) }, - { "glCopyTexImage1D", (GLvoid *) NAME(glCopyTexImage1D) }, - { "glCopyTexImage2D", (GLvoid *) NAME(glCopyTexImage2D) }, - { "glCopyTexSubImage1D", (GLvoid *) NAME(glCopyTexSubImage1D) }, - { "glCopyTexSubImage2D", (GLvoid *) NAME(glCopyTexSubImage2D) }, - { "glDeleteTextures", (GLvoid *) NAME(glDeleteTextures) }, - { "glDisableClientState", (GLvoid *) NAME(glDisableClientState) }, - { "glDrawArrays", (GLvoid *) NAME(glDrawArrays) }, - { "glDrawElements", (GLvoid *) NAME(glDrawElements) }, - { "glEdgeFlagPointer", (GLvoid *) NAME(glEdgeFlagPointer) }, - { "glEnableClientState", (GLvoid *) NAME(glEnableClientState) }, - { "glGenTextures", (GLvoid *) NAME(glGenTextures) }, - { "glGetPointerv", (GLvoid *) NAME(glGetPointerv) }, - { "glIndexPointer", (GLvoid *) NAME(glIndexPointer) }, - { "glIndexub", (GLvoid *) NAME(glIndexub) }, - { "glIndexubv", (GLvoid *) NAME(glIndexubv) }, - { "glInterleavedArrays", (GLvoid *) NAME(glInterleavedArrays) }, - { "glIsTexture", (GLvoid *) NAME(glIsTexture) }, - { "glNormalPointer", (GLvoid *) NAME(glNormalPointer) }, - { "glPopClientAttrib", (GLvoid *) NAME(glPopClientAttrib) }, - { "glPrioritizeTextures", (GLvoid *) NAME(glPrioritizeTextures) }, - { "glPushClientAttrib", (GLvoid *) NAME(glPushClientAttrib) }, - { "glTexCoordPointer", (GLvoid *) NAME(glTexCoordPointer) }, - { "glTexSubImage1D", (GLvoid *) NAME(glTexSubImage1D) }, - { "glTexSubImage2D", (GLvoid *) NAME(glTexSubImage2D) }, - { "glVertexPointer", (GLvoid *) NAME(glVertexPointer) }, + { "glBlendColor", (GLvoid *) NAME(glBlendColor), _gloffset_BlendColor }, + { "glBlendEquation", (GLvoid *) NAME(glBlendEquation), _gloffset_BlendEquation }, + { "glDrawRangeElements", (GLvoid *) NAME(glDrawRangeElements), _gloffset_DrawRangeElements }, + { "glColorTable", (GLvoid *) NAME(glColorTable), _gloffset_ColorTable }, + { "glColorTableParameterfv", (GLvoid *) NAME(glColorTableParameterfv), _gloffset_ColorTableParameterfv }, + { "glColorTableParameteriv", (GLvoid *) NAME(glColorTableParameteriv), _gloffset_ColorTableParameteriv }, + { "glCopyColorTable", (GLvoid *) NAME(glCopyColorTable), _gloffset_CopyColorTable }, + { "glGetColorTable", (GLvoid *) NAME(glGetColorTable), _gloffset_GetColorTable }, + { "glGetColorTableParameterfv", (GLvoid *) NAME(glGetColorTableParameterfv), _gloffset_GetColorTableParameterfv }, + { "glGetColorTableParameteriv", (GLvoid *) NAME(glGetColorTableParameteriv), _gloffset_GetColorTableParameteriv }, + { "glColorSubTable", (GLvoid *) NAME(glColorSubTable), _gloffset_ColorSubTable }, + { "glCopyColorSubTable", (GLvoid *) NAME(glCopyColorSubTable), _gloffset_CopyColorSubTable }, + { "glConvolutionFilter1D", (GLvoid *) NAME(glConvolutionFilter1D), _gloffset_ConvolutionFilter1D }, + { "glConvolutionFilter2D", (GLvoid *) NAME(glConvolutionFilter2D), _gloffset_ConvolutionFilter2D }, + { "glConvolutionParameterf", (GLvoid *) NAME(glConvolutionParameterf), _gloffset_ConvolutionParameterf }, + { "glConvolutionParameterfv", (GLvoid *) NAME(glConvolutionParameterfv), _gloffset_ConvolutionParameterfv }, + { "glConvolutionParameteri", (GLvoid *) NAME(glConvolutionParameteri), _gloffset_ConvolutionParameteri }, + { "glConvolutionParameteriv", (GLvoid *) NAME(glConvolutionParameteriv), _gloffset_ConvolutionParameteriv }, + { "glCopyConvolutionFilter1D", (GLvoid *) NAME(glCopyConvolutionFilter1D), _gloffset_CopyConvolutionFilter1D }, + { "glCopyConvolutionFilter2D", (GLvoid *) NAME(glCopyConvolutionFilter2D), _gloffset_CopyConvolutionFilter2D }, + { "glGetConvolutionFilter", (GLvoid *) NAME(glGetConvolutionFilter), _gloffset_GetConvolutionFilter }, + { "glGetConvolutionParameterfv", (GLvoid *) NAME(glGetConvolutionParameterfv), _gloffset_GetConvolutionParameterfv }, + { "glGetConvolutionParameteriv", (GLvoid *) NAME(glGetConvolutionParameteriv), _gloffset_GetConvolutionParameteriv }, + { "glGetSeparableFilter", (GLvoid *) NAME(glGetSeparableFilter), _gloffset_GetSeparableFilter }, + { "glSeparableFilter2D", (GLvoid *) NAME(glSeparableFilter2D), _gloffset_SeparableFilter2D }, + { "glGetHistogram", (GLvoid *) NAME(glGetHistogram), _gloffset_GetHistogram }, + { "glGetHistogramParameterfv", (GLvoid *) NAME(glGetHistogramParameterfv), _gloffset_GetHistogramParameterfv }, + { "glGetHistogramParameteriv", (GLvoid *) NAME(glGetHistogramParameteriv), _gloffset_GetHistogramParameteriv }, + { "glGetMinmax", (GLvoid *) NAME(glGetMinmax), _gloffset_GetMinmax }, + { "glGetMinmaxParameterfv", (GLvoid *) NAME(glGetMinmaxParameterfv), _gloffset_GetMinmaxParameterfv }, + { "glGetMinmaxParameteriv", (GLvoid *) NAME(glGetMinmaxParameteriv), _gloffset_GetMinmaxParameteriv }, + { "glHistogram", (GLvoid *) NAME(glHistogram), _gloffset_Histogram }, + { "glMinmax", (GLvoid *) NAME(glMinmax), _gloffset_Minmax }, + { "glResetHistogram", (GLvoid *) NAME(glResetHistogram), _gloffset_ResetHistogram }, + { "glResetMinmax", (GLvoid *) NAME(glResetMinmax), _gloffset_ResetMinmax }, + { "glTexImage3D", (GLvoid *) NAME(glTexImage3D), _gloffset_TexImage3D }, + { "glTexSubImage3D", (GLvoid *) NAME(glTexSubImage3D), _gloffset_TexSubImage3D }, + { "glCopyTexSubImage3D", (GLvoid *) NAME(glCopyTexSubImage3D), _gloffset_CopyTexSubImage3D }, #undef NAME - /* GL 1.2 */ -#ifdef GL_VERSION_1_2 + /* GL_ARB_multitexture */ +#ifdef GL_ARB_multitexture #define NAME(X) X #else #define NAME(X) NotImplemented #endif - { "glCopyTexSubImage3D", (GLvoid *) NAME(glCopyTexSubImage3D) }, - { "glDrawRangeElements", (GLvoid *) NAME(glDrawRangeElements) }, - { "glTexImage3D", (GLvoid *) NAME(glTexImage3D) }, - { "glTexSubImage3D", (GLvoid *) NAME(glTexSubImage3D) }, -#undef NAME - - /* GL_ARB_imaging */ -#ifdef GL_ARB_imaging + { "glActiveTextureARB", (GLvoid *) NAME(glActiveTextureARB), _gloffset_ActiveTextureARB }, + { "glClientActiveTextureARB", (GLvoid *) NAME(glClientActiveTextureARB), _gloffset_ClientActiveTextureARB }, + { "glMultiTexCoord1dARB", (GLvoid *) NAME(glMultiTexCoord1dARB), _gloffset_MultiTexCoord1dARB }, + { "glMultiTexCoord1dvARB", (GLvoid *) NAME(glMultiTexCoord1dvARB), _gloffset_MultiTexCoord1dvARB }, + { "glMultiTexCoord1fARB", (GLvoid *) NAME(glMultiTexCoord1fARB), _gloffset_MultiTexCoord1fARB }, + { "glMultiTexCoord1fvARB", (GLvoid *) NAME(glMultiTexCoord1fvARB), _gloffset_MultiTexCoord1fvARB }, + { "glMultiTexCoord1iARB", (GLvoid *) NAME(glMultiTexCoord1iARB), _gloffset_MultiTexCoord1iARB }, + { "glMultiTexCoord1ivARB", (GLvoid *) NAME(glMultiTexCoord1ivARB), _gloffset_MultiTexCoord1ivARB }, + { "glMultiTexCoord1sARB", (GLvoid *) NAME(glMultiTexCoord1sARB), _gloffset_MultiTexCoord1sARB }, + { "glMultiTexCoord1svARB", (GLvoid *) NAME(glMultiTexCoord1svARB), _gloffset_MultiTexCoord1svARB }, + { "glMultiTexCoord2dARB", (GLvoid *) NAME(glMultiTexCoord2dARB), _gloffset_MultiTexCoord2dARB }, + { "glMultiTexCoord2dvARB", (GLvoid *) NAME(glMultiTexCoord2dvARB), _gloffset_MultiTexCoord2dvARB }, + { "glMultiTexCoord2fARB", (GLvoid *) NAME(glMultiTexCoord2fARB), _gloffset_MultiTexCoord2fARB }, + { "glMultiTexCoord2fvARB", (GLvoid *) NAME(glMultiTexCoord2fvARB), _gloffset_MultiTexCoord2fvARB }, + { "glMultiTexCoord2iARB", (GLvoid *) NAME(glMultiTexCoord2iARB), _gloffset_MultiTexCoord2iARB }, + { "glMultiTexCoord2ivARB", (GLvoid *) NAME(glMultiTexCoord2ivARB), _gloffset_MultiTexCoord2ivARB }, + { "glMultiTexCoord2sARB", (GLvoid *) NAME(glMultiTexCoord2sARB), _gloffset_MultiTexCoord2sARB }, + { "glMultiTexCoord2svARB", (GLvoid *) NAME(glMultiTexCoord2svARB), _gloffset_MultiTexCoord2svARB }, + { "glMultiTexCoord3dARB", (GLvoid *) NAME(glMultiTexCoord3dARB), _gloffset_MultiTexCoord3dARB }, + { "glMultiTexCoord3dvARB", (GLvoid *) NAME(glMultiTexCoord3dvARB), _gloffset_MultiTexCoord3dvARB }, + { "glMultiTexCoord3fARB", (GLvoid *) NAME(glMultiTexCoord3fARB), _gloffset_MultiTexCoord3fARB }, + { "glMultiTexCoord3fvARB", (GLvoid *) NAME(glMultiTexCoord3fvARB), _gloffset_MultiTexCoord3fvARB }, + { "glMultiTexCoord3iARB", (GLvoid *) NAME(glMultiTexCoord3iARB), _gloffset_MultiTexCoord3iARB }, + { "glMultiTexCoord3ivARB", (GLvoid *) NAME(glMultiTexCoord3ivARB), _gloffset_MultiTexCoord3ivARB }, + { "glMultiTexCoord3sARB", (GLvoid *) NAME(glMultiTexCoord3sARB), _gloffset_MultiTexCoord3sARB }, + { "glMultiTexCoord3svARB", (GLvoid *) NAME(glMultiTexCoord3svARB), _gloffset_MultiTexCoord3svARB }, + { "glMultiTexCoord4dARB", (GLvoid *) NAME(glMultiTexCoord4dARB), _gloffset_MultiTexCoord4dARB }, + { "glMultiTexCoord4dvARB", (GLvoid *) NAME(glMultiTexCoord4dvARB), _gloffset_MultiTexCoord4dvARB }, + { "glMultiTexCoord4fARB", (GLvoid *) NAME(glMultiTexCoord4fARB), _gloffset_MultiTexCoord4fARB }, + { "glMultiTexCoord4fvARB", (GLvoid *) NAME(glMultiTexCoord4fvARB), _gloffset_MultiTexCoord4fvARB }, + { "glMultiTexCoord4iARB", (GLvoid *) NAME(glMultiTexCoord4iARB), _gloffset_MultiTexCoord4iARB }, + { "glMultiTexCoord4ivARB", (GLvoid *) NAME(glMultiTexCoord4ivARB), _gloffset_MultiTexCoord4ivARB }, + { "glMultiTexCoord4sARB", (GLvoid *) NAME(glMultiTexCoord4sARB), _gloffset_MultiTexCoord4sARB }, + { "glMultiTexCoord4svARB", (GLvoid *) NAME(glMultiTexCoord4svARB), _gloffset_MultiTexCoord4svARB }, +#undef NAME + + /* GL_ARB_transpose_matrix */ +#ifdef GL_ARB_transpose_matrix #define NAME(X) X #else #define NAME(X) NotImplemented #endif - { "glBlendColor", (GLvoid *) NAME(glBlendColor) }, - { "glBlendEquation", (GLvoid *) NAME(glBlendEquation) }, - { "glColorSubTable", (GLvoid *) NAME(glColorSubTable) }, - { "glColorTable", (GLvoid *) NAME(glColorTable) }, - { "glColorTableParameterfv", (GLvoid *) NAME(glColorTableParameterfv) }, - { "glColorTableParameteriv", (GLvoid *) NAME(glColorTableParameteriv) }, - { "glConvolutionFilter1D", (GLvoid *) NAME(glConvolutionFilter1D) }, - { "glConvolutionFilter2D", (GLvoid *) NAME(glConvolutionFilter2D) }, - { "glConvolutionParameterf", (GLvoid *) NAME(glConvolutionParameterf) }, - { "glConvolutionParameterfv", (GLvoid *) NAME(glConvolutionParameterfv) }, - { "glConvolutionParameteri", (GLvoid *) NAME(glConvolutionParameteri) }, - { "glConvolutionParameteriv", (GLvoid *) NAME(glConvolutionParameteriv) }, - { "glCopyColorSubTable", (GLvoid *) NAME(glCopyColorSubTable) }, - { "glCopyColorTable", (GLvoid *) NAME(glCopyColorTable) }, - { "glCopyConvolutionFilter1D", (GLvoid *) NAME(glCopyConvolutionFilter1D) }, - { "glCopyConvolutionFilter2D", (GLvoid *) NAME(glCopyConvolutionFilter2D) }, - { "glGetColorTable", (GLvoid *) NAME(glGetColorTable) }, - { "glGetColorTableParameterfv", (GLvoid *) NAME(glGetColorTableParameterfv) }, - { "glGetColorTableParameteriv", (GLvoid *) NAME(glGetColorTableParameteriv) }, - { "glGetConvolutionFilter", (GLvoid *) NAME(glGetConvolutionFilter) }, - { "glGetConvolutionParameterfv", (GLvoid *) NAME(glGetConvolutionParameterfv) }, - { "glGetConvolutionParameteriv", (GLvoid *) NAME(glGetConvolutionParameteriv) }, - { "glGetHistogram", (GLvoid *) NAME(glGetHistogram) }, - { "glGetHistogramParameterfv", (GLvoid *) NAME(glGetHistogramParameterfv) }, - { "glGetHistogramParameteriv", (GLvoid *) NAME(glGetHistogramParameteriv) }, - { "glGetMinmax", (GLvoid *) NAME(glGetMinmax) }, - { "glGetMinmaxParameterfv", (GLvoid *) NAME(glGetMinmaxParameterfv) }, - { "glGetMinmaxParameteriv", (GLvoid *) NAME(glGetMinmaxParameteriv) }, - { "glGetSeparableFilter", (GLvoid *) NAME(glGetSeparableFilter) }, - { "glHistogram", (GLvoid *) NAME(glHistogram) }, - { "glMinmax", (GLvoid *) NAME(glMinmax) }, - { "glResetHistogram", (GLvoid *) NAME(glResetHistogram) }, - { "glResetMinmax", (GLvoid *) NAME(glResetMinmax) }, - { "glSeparableFilter2D", (GLvoid *) NAME(glSeparableFilter2D) }, + { "glLoadTransposeMatrixdARB", (GLvoid *) NAME(glLoadTransposeMatrixdARB), _gloffset_LoadTransposeMatrixdARB }, + { "glLoadTransposeMatrixfARB", (GLvoid *) NAME(glLoadTransposeMatrixfARB), _gloffset_LoadTransposeMatrixfARB }, + { "glMultTransposeMatrixdARB", (GLvoid *) NAME(glMultTransposeMatrixdARB), _gloffset_MultTransposeMatrixdARB }, + { "glMultTransposeMatrixfARB", (GLvoid *) NAME(glMultTransposeMatrixfARB), _gloffset_MultTransposeMatrixfARB }, #undef NAME - /* GL_ARB_multitexture */ -#ifdef GL_ARB_multitexture + /* GL_ARB_multisample */ +#ifdef GL_ARB_multisample #define NAME(X) X #else #define NAME(X) NotImplemented #endif - { "glActiveTextureARB", (GLvoid *) NAME(glActiveTextureARB) }, - { "glClientActiveTextureARB", (GLvoid *) NAME(glClientActiveTextureARB) }, - { "glMultiTexCoord1dARB", (GLvoid *) NAME(glMultiTexCoord1dARB) }, - { "glMultiTexCoord1dvARB", (GLvoid *) NAME(glMultiTexCoord1dvARB) }, - { "glMultiTexCoord1fARB", (GLvoid *) NAME(glMultiTexCoord1fARB) }, - { "glMultiTexCoord1fvARB", (GLvoid *) NAME(glMultiTexCoord1fvARB) }, - { "glMultiTexCoord1iARB", (GLvoid *) NAME(glMultiTexCoord1iARB) }, - { "glMultiTexCoord1ivARB", (GLvoid *) NAME(glMultiTexCoord1ivARB) }, - { "glMultiTexCoord1sARB", (GLvoid *) NAME(glMultiTexCoord1sARB) }, - { "glMultiTexCoord1svARB", (GLvoid *) NAME(glMultiTexCoord1svARB) }, - { "glMultiTexCoord2dARB", (GLvoid *) NAME(glMultiTexCoord2dARB) }, - { "glMultiTexCoord2dvARB", (GLvoid *) NAME(glMultiTexCoord2dvARB) }, - { "glMultiTexCoord2fARB", (GLvoid *) NAME(glMultiTexCoord2fARB) }, - { "glMultiTexCoord2fvARB", (GLvoid *) NAME(glMultiTexCoord2fvARB) }, - { "glMultiTexCoord2iARB", (GLvoid *) NAME(glMultiTexCoord2iARB) }, - { "glMultiTexCoord2ivARB", (GLvoid *) NAME(glMultiTexCoord2ivARB) }, - { "glMultiTexCoord2sARB", (GLvoid *) NAME(glMultiTexCoord2sARB) }, - { "glMultiTexCoord2svARB", (GLvoid *) NAME(glMultiTexCoord2svARB) }, - { "glMultiTexCoord3dARB", (GLvoid *) NAME(glMultiTexCoord3dARB) }, - { "glMultiTexCoord3dvARB", (GLvoid *) NAME(glMultiTexCoord3dvARB) }, - { "glMultiTexCoord3fARB", (GLvoid *) NAME(glMultiTexCoord3fARB) }, - { "glMultiTexCoord3fvARB", (GLvoid *) NAME(glMultiTexCoord3fvARB) }, - { "glMultiTexCoord3iARB", (GLvoid *) NAME(glMultiTexCoord3iARB) }, - { "glMultiTexCoord3ivARB", (GLvoid *) NAME(glMultiTexCoord3ivARB) }, - { "glMultiTexCoord3sARB", (GLvoid *) NAME(glMultiTexCoord3sARB) }, - { "glMultiTexCoord3svARB", (GLvoid *) NAME(glMultiTexCoord3svARB) }, - { "glMultiTexCoord4dARB", (GLvoid *) NAME(glMultiTexCoord4dARB) }, - { "glMultiTexCoord4dvARB", (GLvoid *) NAME(glMultiTexCoord4dvARB) }, - { "glMultiTexCoord4fARB", (GLvoid *) NAME(glMultiTexCoord4fARB) }, - { "glMultiTexCoord4fvARB", (GLvoid *) NAME(glMultiTexCoord4fvARB) }, - { "glMultiTexCoord4iARB", (GLvoid *) NAME(glMultiTexCoord4iARB) }, - { "glMultiTexCoord4ivARB", (GLvoid *) NAME(glMultiTexCoord4ivARB) }, - { "glMultiTexCoord4sARB", (GLvoid *) NAME(glMultiTexCoord4sARB) }, - { "glMultiTexCoord4svARB", (GLvoid *) NAME(glMultiTexCoord4svARB) }, + { "glSampleCoverageARB", (GLvoid *) NAME(glSampleCoverageARB), _gloffset_SampleCoverageARB }, + { "glSamplePassARB", (GLvoid *) NAME(glSamplePassARB), _gloffset_SamplePassARB }, #undef NAME /* 2. GL_EXT_blend_color */ @@ -1039,7 +1037,7 @@ #else #define NAME(X) NotImplemented #endif - { "glBlendColorEXT", (GLvoid *) NAME(glBlendColorEXT) }, + { "glBlendColorEXT", (GLvoid *) NAME(glBlendColorEXT), _gloffset_BlendColor }, #undef NAME /* 3. GL_EXT_polygon_offset */ @@ -1048,7 +1046,7 @@ #else #define NAME(X) NotImplemented #endif - { "glPolygonOffsetEXT", (GLvoid *) NAME(glPolygonOffsetEXT) }, + { "glPolygonOffsetEXT", (GLvoid *) NAME(glPolygonOffsetEXT), _gloffset_PolygonOffsetEXT }, #undef NAME /* 6. GL_EXT_texture3D */ @@ -1057,9 +1055,9 @@ #else #define NAME(X) NotImplemented #endif - { "glCopyTexSubImage3DEXT", (GLvoid *) NAME(glCopyTexSubImage3DEXT) }, - { "glTexImage3DEXT", (GLvoid *) NAME(glTexImage3DEXT) }, - { "glTexSubImage3DEXT", (GLvoid *) NAME(glTexSubImage3DEXT) }, + { "glCopyTexSubImage3DEXT", (GLvoid *) NAME(glCopyTexSubImage3DEXT), _gloffset_CopyTexSubImage3D }, + { "glTexImage3DEXT", (GLvoid *) NAME(glTexImage3DEXT), _gloffset_TexImage3D }, + { "glTexSubImage3DEXT", (GLvoid *) NAME(glTexSubImage3DEXT), _gloffset_TexSubImage3D }, #undef NAME /* 7. GL_SGI_texture_filter4 */ @@ -1068,8 +1066,8 @@ #else #define NAME(X) NotImplemented #endif - { "glGetTexFilterFuncSGIS", (GLvoid *) NAME(glGetTexFilterFuncSGIS) }, - { "glTexFilterFuncSGIS", (GLvoid *) NAME(glTexFilterFuncSGIS) }, + { "glGetTexFilterFuncSGIS", (GLvoid *) NAME(glGetTexFilterFuncSGIS), _gloffset_GetTexFilterFuncSGIS }, + { "glTexFilterFuncSGIS", (GLvoid *) NAME(glTexFilterFuncSGIS), _gloffset_TexFilterFuncSGIS }, #undef NAME /* 9. GL_EXT_subtexture */ @@ -1078,8 +1076,8 @@ #else #define NAME(X) NotImplemented #endif - { "glTexSubImage1DEXT", (GLvoid *) NAME(glTexSubImage1DEXT) }, - { "glTexSubImage2DEXT", (GLvoid *) NAME(glTexSubImage2DEXT) }, + { "glTexSubImage1DEXT", (GLvoid *) NAME(glTexSubImage1DEXT), _gloffset_TexSubImage1D }, + { "glTexSubImage2DEXT", (GLvoid *) NAME(glTexSubImage2DEXT), _gloffset_TexSubImage2D }, #undef NAME /* 10. GL_EXT_copy_texture */ @@ -1088,10 +1086,10 @@ #else #define NAME(X) NotImplemented #endif - { "glCopyTexImage1DEXT", (GLvoid *) NAME(glCopyTexImage1DEXT) }, - { "glCopyTexImage2DEXT", (GLvoid *) NAME(glCopyTexImage2DEXT) }, - { "glCopyTexSubImage1DEXT", (GLvoid *) NAME(glCopyTexSubImage1DEXT) }, - { "glCopyTexSubImage2DEXT", (GLvoid *) NAME(glCopyTexSubImage2DEXT) }, + { "glCopyTexImage1DEXT", (GLvoid *) NAME(glCopyTexImage1DEXT), _gloffset_CopyTexImage1D }, + { "glCopyTexImage2DEXT", (GLvoid *) NAME(glCopyTexImage2DEXT), _gloffset_CopyTexImage2D }, + { "glCopyTexSubImage1DEXT", (GLvoid *) NAME(glCopyTexSubImage1DEXT), _gloffset_CopyTexSubImage1D }, + { "glCopyTexSubImage2DEXT", (GLvoid *) NAME(glCopyTexSubImage2DEXT), _gloffset_CopyTexSubImage2D }, #undef NAME /* 11. GL_EXT_histogram */ @@ -1100,16 +1098,16 @@ #else #define NAME(X) NotImplemented #endif - { "glGetHistogramEXT", (GLvoid *) NAME(glGetHistogramEXT) }, - { "glGetHistogramParameterfvEXT", (GLvoid *) NAME(glGetHistogramParameterfvEXT) }, - { "glGetHistogramParameterivEXT", (GLvoid *) NAME(glGetHistogramParameterivEXT) }, - { "glGetMinmaxEXT", (GLvoid *) NAME(glGetMinmaxEXT) }, - { "glGetMinmaxParameterfvEXT", (GLvoid *) NAME(glGetMinmaxParameterfvEXT) }, - { "glGetMinmaxParameterivEXT", (GLvoid *) NAME(glGetMinmaxParameterivEXT) }, - { "glHistogramEXT", (GLvoid *) NAME(glHistogramEXT) }, - { "glMinmaxEXT", (GLvoid *) NAME(glMinmaxEXT) }, - { "glResetHistogramEXT", (GLvoid *) NAME(glResetHistogramEXT) }, - { "glResetMinmaxEXT", (GLvoid *) NAME(glResetMinmaxEXT) }, + { "glGetHistogramEXT", (GLvoid *) NAME(glGetHistogramEXT), _gloffset_GetHistogramEXT }, + { "glGetHistogramParameterfvEXT", (GLvoid *) NAME(glGetHistogramParameterfvEXT), _gloffset_GetHistogramParameterfvEXT }, + { "glGetHistogramParameterivEXT", (GLvoid *) NAME(glGetHistogramParameterivEXT), _gloffset_GetHistogramParameterivEXT }, + { "glGetMinmaxEXT", (GLvoid *) NAME(glGetMinmaxEXT), _gloffset_GetMinmaxEXT }, + { "glGetMinmaxParameterfvEXT", (GLvoid *) NAME(glGetMinmaxParameterfvEXT), _gloffset_GetMinmaxParameterfvEXT }, + { "glGetMinmaxParameterivEXT", (GLvoid *) NAME(glGetMinmaxParameterivEXT), _gloffset_GetMinmaxParameterivEXT }, + { "glHistogramEXT", (GLvoid *) NAME(glHistogramEXT), _gloffset_Histogram }, + { "glMinmaxEXT", (GLvoid *) NAME(glMinmaxEXT), _gloffset_Minmax }, + { "glResetHistogramEXT", (GLvoid *) NAME(glResetHistogramEXT), _gloffset_ResetHistogram }, + { "glResetMinmaxEXT", (GLvoid *) NAME(glResetMinmaxEXT), _gloffset_ResetMinmax }, #undef NAME /* 12. GL_EXT_convolution */ @@ -1118,19 +1116,19 @@ #else #define NAME(X) NotImplemented #endif - { "glConvolutionFilter1DEXT", (GLvoid *) NAME(glConvolutionFilter1DEXT) }, - { "glConvolutionFilter2DEXT", (GLvoid *) NAME(glConvolutionFilter2DEXT) }, - { "glConvolutionParameterfEXT", (GLvoid *) NAME(glConvolutionParameterfEXT) }, - { "glConvolutionParameterfvEXT", (GLvoid *) NAME(glConvolutionParameterfvEXT) }, - { "glConvolutionParameteriEXT", (GLvoid *) NAME(glConvolutionParameteriEXT) }, - { "glConvolutionParameterivEXT", (GLvoid *) NAME(glConvolutionParameterivEXT) }, - { "glCopyConvolutionFilter1DEXT", (GLvoid *) NAME(glCopyConvolutionFilter1DEXT) }, - { "glCopyConvolutionFilter2DEXT", (GLvoid *) NAME(glCopyConvolutionFilter2DEXT) }, - { "glGetConvolutionFilterEXT", (GLvoid *) NAME(glGetConvolutionFilterEXT) }, - { "glGetConvolutionParameterivEXT", (GLvoid *) NAME(glGetConvolutionParameterivEXT) }, - { "glGetConvolutionParameterfvEXT", (GLvoid *) NAME(glGetConvolutionParameterfvEXT) }, - { "glGetSeparableFilterEXT", (GLvoid *) NAME(glGetSeparableFilterEXT) }, - { "glSeparableFilter2DEXT", (GLvoid *) NAME(glSeparableFilter2DEXT) }, + { "glConvolutionFilter1DEXT", (GLvoid *) NAME(glConvolutionFilter1DEXT), _gloffset_ConvolutionFilter1D }, + { "glConvolutionFilter2DEXT", (GLvoid *) NAME(glConvolutionFilter2DEXT), _gloffset_ConvolutionFilter2D }, + { "glConvolutionParameterfEXT", (GLvoid *) NAME(glConvolutionParameterfEXT), _gloffset_ConvolutionParameterf }, + { "glConvolutionParameterfvEXT", (GLvoid *) NAME(glConvolutionParameterfvEXT), _gloffset_ConvolutionParameterfv }, + { "glConvolutionParameteriEXT", (GLvoid *) NAME(glConvolutionParameteriEXT), _gloffset_ConvolutionParameteri }, + { "glConvolutionParameterivEXT", (GLvoid *) NAME(glConvolutionParameterivEXT), _gloffset_ConvolutionParameteriv }, + { "glCopyConvolutionFilter1DEXT", (GLvoid *) NAME(glCopyConvolutionFilter1DEXT), _gloffset_CopyConvolutionFilter1D }, + { "glCopyConvolutionFilter2DEXT", (GLvoid *) NAME(glCopyConvolutionFilter2DEXT), _gloffset_CopyConvolutionFilter2D }, + { "glGetConvolutionFilterEXT", (GLvoid *) NAME(glGetConvolutionFilterEXT), _gloffset_GetConvolutionFilterEXT }, + { "glGetConvolutionParameterivEXT", (GLvoid *) NAME(glGetConvolutionParameterivEXT), _gloffset_GetConvolutionParameterivEXT }, + { "glGetConvolutionParameterfvEXT", (GLvoid *) NAME(glGetConvolutionParameterfvEXT), _gloffset_GetConvolutionParameterfvEXT }, + { "glGetSeparableFilterEXT", (GLvoid *) NAME(glGetSeparableFilterEXT), _gloffset_GetSeparableFilterEXT }, + { "glSeparableFilter2DEXT", (GLvoid *) NAME(glSeparableFilter2DEXT), _gloffset_SeparableFilter2D }, #undef NAME /* 14. GL_SGI_color_table */ @@ -1139,13 +1137,13 @@ #else #define NAME(X) NotImplemented #endif - { "glColorTableSGI", (GLvoid *) NAME(glColorTableSGI) }, - { "glColorTableParameterfvSGI", (GLvoid *) NAME(glColorTableParameterfvSGI) }, - { "glColorTableParameterivSGI", (GLvoid *) NAME(glColorTableParameterivSGI) }, - { "glCopyColorTableSGI", (GLvoid *) NAME(glCopyColorTableSGI) }, - { "glGetColorTableSGI", (GLvoid *) NAME(glGetColorTableSGI) }, - { "glGetColorTableParameterfvSGI", (GLvoid *) NAME(glGetColorTableParameterfvSGI) }, - { "glGetColorTableParameterivSGI", (GLvoid *) NAME(glGetColorTableParameterivSGI) }, + { "glColorTableSGI", (GLvoid *) NAME(glColorTableSGI), _gloffset_ColorTable }, + { "glColorTableParameterfvSGI", (GLvoid *) NAME(glColorTableParameterfvSGI), _gloffset_ColorTableParameterfv }, + { "glColorTableParameterivSGI", (GLvoid *) NAME(glColorTableParameterivSGI), _gloffset_ColorTableParameteriv }, + { "glCopyColorTableSGI", (GLvoid *) NAME(glCopyColorTableSGI), _gloffset_CopyColorTable }, + { "glGetColorTableSGI", (GLvoid *) NAME(glGetColorTableSGI), _gloffset_GetColorTableSGI }, + { "glGetColorTableParameterfvSGI", (GLvoid *) NAME(glGetColorTableParameterfvSGI), _gloffset_GetColorTableParameterfvSGI }, + { "glGetColorTableParameterivSGI", (GLvoid *) NAME(glGetColorTableParameterivSGI), _gloffset_GetColorTableParameterivSGI }, #undef NAME /* 15. GL_SGIS_pixel_texture */ @@ -1154,10 +1152,10 @@ #else #define NAME(X) NotImplemented #endif - { "glPixelTexGenParameterfSGIS", (GLvoid *) NAME(glPixelTexGenParameterfSGIS) }, - { "glPixelTexGenParameteriSGIS", (GLvoid *) NAME(glPixelTexGenParameteriSGIS) }, - { "glGetPixelTexGenParameterfvSGIS", (GLvoid *) NAME(glGetPixelTexGenParameterfvSGIS) }, - { "glGetPixelTexGenParameterivSGIS", (GLvoid *) NAME(glGetPixelTexGenParameterivSGIS) }, + { "glPixelTexGenParameterfSGIS", (GLvoid *) NAME(glPixelTexGenParameterfSGIS), _gloffset_PixelTexGenParameterfSGIS }, + { "glPixelTexGenParameteriSGIS", (GLvoid *) NAME(glPixelTexGenParameteriSGIS), _gloffset_PixelTexGenParameteriSGIS }, + { "glGetPixelTexGenParameterfvSGIS", (GLvoid *) NAME(glGetPixelTexGenParameterfvSGIS), _gloffset_GetPixelTexGenParameterfvSGIS }, + { "glGetPixelTexGenParameterivSGIS", (GLvoid *) NAME(glGetPixelTexGenParameterivSGIS), _gloffset_GetPixelTexGenParameterivSGIS }, #undef NAME /* 16. GL_SGIS_texture4D */ @@ -1166,8 +1164,8 @@ #else #define NAME(X) NotImplemented #endif - { "glTexImage4DSGIS", (GLvoid *) NAME(glTexImage4DSGIS) }, - { "glTexSubImage4DSGIS", (GLvoid *) NAME(glTexSubImage4DSGIS) }, + { "glTexImage4DSGIS", (GLvoid *) NAME(glTexImage4DSGIS), _gloffset_TexImage4DSGIS }, + { "glTexSubImage4DSGIS", (GLvoid *) NAME(glTexSubImage4DSGIS), _gloffset_TexSubImage4DSGIS }, #undef NAME /* 20. GL_EXT_texture_object */ @@ -1176,12 +1174,12 @@ #else #define NAME(X) NotImplemented #endif - { "glAreTexturesResidentEXT", (GLvoid *) NAME(glAreTexturesResidentEXT) }, - { "glBindTextureEXT", (GLvoid *) NAME(glBindTextureEXT) }, - { "glDeleteTexturesEXT", (GLvoid *) NAME(glDeleteTexturesEXT) }, - { "glGenTexturesEXT", (GLvoid *) NAME(glGenTexturesEXT) }, - { "glIsTextureEXT", (GLvoid *) NAME(glIsTextureEXT) }, - { "glPrioritizeTexturesEXT", (GLvoid *) NAME(glPrioritizeTexturesEXT) }, + { "glAreTexturesResidentEXT", (GLvoid *) NAME(glAreTexturesResidentEXT), _gloffset_AreTexturesResidentEXT }, + { "glBindTextureEXT", (GLvoid *) NAME(glBindTextureEXT), _gloffset_BindTexture }, + { "glDeleteTexturesEXT", (GLvoid *) NAME(glDeleteTexturesEXT), _gloffset_DeleteTextures }, + { "glGenTexturesEXT", (GLvoid *) NAME(glGenTexturesEXT), _gloffset_GenTexturesEXT }, + { "glIsTextureEXT", (GLvoid *) NAME(glIsTextureEXT), _gloffset_IsTextureEXT }, + { "glPrioritizeTexturesEXT", (GLvoid *) NAME(glPrioritizeTexturesEXT), _gloffset_PrioritizeTextures }, #undef NAME /* 21. GL_SGIS_detail_texture */ @@ -1190,8 +1188,8 @@ #else #define NAME(X) NotImplemented #endif - { "glDetailTexFuncSGIS", (GLvoid *) NAME(glDetailTexFuncSGIS) }, - { "glGetDetailTexFuncSGIS", (GLvoid *) NAME(glGetDetailTexFuncSGIS) }, + { "glDetailTexFuncSGIS", (GLvoid *) NAME(glDetailTexFuncSGIS), _gloffset_DetailTexFuncSGIS }, + { "glGetDetailTexFuncSGIS", (GLvoid *) NAME(glGetDetailTexFuncSGIS), _gloffset_GetDetailTexFuncSGIS }, #undef NAME /* 22. GL_SGIS_sharpen_texture */ @@ -1200,8 +1198,8 @@ #else #define NAME(X) NotImplemented #endif - { "glGetSharpenTexFuncSGIS", (GLvoid *) NAME(glGetSharpenTexFuncSGIS) }, - { "glSharpenTexFuncSGIS", (GLvoid *) NAME(glSharpenTexFuncSGIS) }, + { "glGetSharpenTexFuncSGIS", (GLvoid *) NAME(glGetSharpenTexFuncSGIS), _gloffset_GetSharpenTexFuncSGIS }, + { "glSharpenTexFuncSGIS", (GLvoid *) NAME(glSharpenTexFuncSGIS), _gloffset_SharpenTexFuncSGIS }, #undef NAME /* 25. GL_SGIS_multisample */ @@ -1210,8 +1208,8 @@ #else #define NAME(X) NotImplemented #endif - { "glSampleMaskSGIS", (GLvoid *) NAME(glSampleMaskSGIS) }, - { "glSamplePatternSGIS", (GLvoid *) NAME(glSamplePatternSGIS) }, + { "glSampleMaskSGIS", (GLvoid *) NAME(glSampleMaskSGIS), _gloffset_SampleMaskSGIS }, + { "glSamplePatternSGIS", (GLvoid *) NAME(glSamplePatternSGIS), _gloffset_SamplePatternSGIS }, #undef NAME /* 30. GL_EXT_vertex_array */ @@ -1220,15 +1218,15 @@ #else #define NAME(X) NotImplemented #endif - { "glArrayElementEXT", (GLvoid *) NAME(glArrayElementEXT) }, - { "glColorPointerEXT", (GLvoid *) NAME(glColorPointerEXT) }, - { "glDrawArraysEXT", (GLvoid *) NAME(glDrawArraysEXT) }, - { "glEdgeFlagPointerEXT", (GLvoid *) NAME(glEdgeFlagPointerEXT) }, - { "glGetPointervEXT", (GLvoid *) NAME(glGetPointervEXT) }, - { "glIndexPointerEXT", (GLvoid *) NAME(glIndexPointerEXT) }, - { "glNormalPointerEXT", (GLvoid *) NAME(glNormalPointerEXT) }, - { "glTexCoordPointerEXT", (GLvoid *) NAME(glTexCoordPointerEXT) }, - { "glVertexPointerEXT", (GLvoid *) NAME(glVertexPointerEXT) }, + { "glArrayElementEXT", (GLvoid *) NAME(glArrayElementEXT), _gloffset_ArrayElement }, + { "glColorPointerEXT", (GLvoid *) NAME(glColorPointerEXT), _gloffset_ColorPointerEXT }, + { "glDrawArraysEXT", (GLvoid *) NAME(glDrawArraysEXT), _gloffset_DrawArrays }, + { "glEdgeFlagPointerEXT", (GLvoid *) NAME(glEdgeFlagPointerEXT), _gloffset_EdgeFlagPointerEXT }, + { "glGetPointervEXT", (GLvoid *) NAME(glGetPointervEXT), _gloffset_GetPointerv }, + { "glIndexPointerEXT", (GLvoid *) NAME(glIndexPointerEXT), _gloffset_IndexPointerEXT }, + { "glNormalPointerEXT", (GLvoid *) NAME(glNormalPointerEXT), _gloffset_NormalPointerEXT }, + { "glTexCoordPointerEXT", (GLvoid *) NAME(glTexCoordPointerEXT), _gloffset_TexCoordPointerEXT }, + { "glVertexPointerEXT", (GLvoid *) NAME(glVertexPointerEXT), _gloffset_VertexPointerEXT }, #undef NAME /* 37. GL_EXT_blend_minmax */ @@ -1237,7 +1235,7 @@ #else #define NAME(X) NotImplemented #endif - { "glBlendEquationEXT", (GLvoid *) NAME(glBlendEquationEXT) }, + { "glBlendEquationEXT", (GLvoid *) NAME(glBlendEquationEXT), _gloffset_BlendEquation }, #undef NAME /* 52. GL_SGIX_sprite */ @@ -1246,10 +1244,10 @@ #else #define NAME(X) NotImplemented #endif - { "glSpriteParameterfSGIX", (GLvoid *) NAME(glSpriteParameterfSGIX) }, - { "glSpriteParameterfvSGIX", (GLvoid *) NAME(glSpriteParameterfvSGIX) }, - { "glSpriteParameteriSGIX", (GLvoid *) NAME(glSpriteParameteriSGIX) }, - { "glSpriteParameterivSGIX", (GLvoid *) NAME(glSpriteParameterivSGIX) }, + { "glSpriteParameterfSGIX", (GLvoid *) NAME(glSpriteParameterfSGIX), _gloffset_SpriteParameterfSGIX }, + { "glSpriteParameterfvSGIX", (GLvoid *) NAME(glSpriteParameterfvSGIX), _gloffset_SpriteParameterfvSGIX }, + { "glSpriteParameteriSGIX", (GLvoid *) NAME(glSpriteParameteriSGIX), _gloffset_SpriteParameteriSGIX }, + { "glSpriteParameterivSGIX", (GLvoid *) NAME(glSpriteParameterivSGIX), _gloffset_SpriteParameterivSGIX }, #undef NAME /* 54. GL_EXT_point_parameters */ @@ -1258,8 +1256,8 @@ #else #define NAME(X) NotImplemented #endif - { "glPointParameterfEXT", (GLvoid *) NAME(glPointParameterfEXT) }, - { "glPointParameterfvEXT", (GLvoid *) NAME(glPointParameterfvEXT) }, + { "glPointParameterfEXT", (GLvoid *) NAME(glPointParameterfEXT), _gloffset_PointParameterfEXT }, + { "glPointParameterfvEXT", (GLvoid *) NAME(glPointParameterfvEXT), _gloffset_PointParameterfvEXT }, #undef NAME /* 55. GL_SGIX_instruments */ @@ -1268,12 +1266,12 @@ #else #define NAME(X) NotImplemented #endif - { "glInstrumentsBufferSGIX", (GLvoid *) NAME(glInstrumentsBufferSGIX) }, - { "glStartInstrumentsSGIX", (GLvoid *) NAME(glStartInstrumentsSGIX) }, - { "glStopInstrumentsSGIX", (GLvoid *) NAME(glStopInstrumentsSGIX) }, - { "glReadInstrumentsSGIX", (GLvoid *) NAME(glReadInstrumentsSGIX) }, - { "glPollInstrumentsSGIX", (GLvoid *) NAME(glPollInstrumentsSGIX) }, - { "glGetInstrumentsSGIX", (GLvoid *) NAME(glGetInstrumentsSGIX) }, + { "glInstrumentsBufferSGIX", (GLvoid *) NAME(glInstrumentsBufferSGIX), _gloffset_InstrumentsBufferSGIX }, + { "glStartInstrumentsSGIX", (GLvoid *) NAME(glStartInstrumentsSGIX), _gloffset_StartInstrumentsSGIX }, + { "glStopInstrumentsSGIX", (GLvoid *) NAME(glStopInstrumentsSGIX), _gloffset_StopInstrumentsSGIX }, + { "glReadInstrumentsSGIX", (GLvoid *) NAME(glReadInstrumentsSGIX), _gloffset_ReadInstrumentsSGIX }, + { "glPollInstrumentsSGIX", (GLvoid *) NAME(glPollInstrumentsSGIX), _gloffset_PollInstrumentsSGIX }, + { "glGetInstrumentsSGIX", (GLvoid *) NAME(glGetInstrumentsSGIX), _gloffset_GetInstrumentsSGIX }, #undef NAME /* 57. GL_SGIX_framezoom */ @@ -1282,7 +1280,16 @@ #else #define NAME(X) NotImplemented #endif - { "glFrameZoomSGIX", (GLvoid *) NAME(glFrameZoomSGIX) }, + { "glFrameZoomSGIX", (GLvoid *) NAME(glFrameZoomSGIX), _gloffset_FrameZoomSGIX }, +#undef NAME + + /* 58. GL_SGIX_tag_sample_buffer */ +#ifdef GL_SGIX_tag_sample_buffer +#define NAME(X) X +#else +#define NAME(X) NotImplemented +#endif + { "glTagSampleBufferSGIX", (GLvoid *) NAME(glTagSampleBufferSGIX), _gloffset_TagSampleBufferSGIX }, #undef NAME /* 60. GL_SGIX_reference_plane */ @@ -1291,7 +1298,7 @@ #else #define NAME(X) NotImplemented #endif - { "glReferencePlaneSGIX", (GLvoid *) NAME(glReferencePlaneSGIX) }, + { "glReferencePlaneSGIX", (GLvoid *) NAME(glReferencePlaneSGIX), _gloffset_ReferencePlaneSGIX }, #undef NAME /* 61. GL_SGIX_flush_raster */ @@ -1300,22 +1307,24 @@ #else #define NAME(X) NotImplemented #endif - { "glFlushRasterSGIX", (GLvoid *) NAME(glFlushRasterSGIX) }, + { "glFlushRasterSGIX", (GLvoid *) NAME(glFlushRasterSGIX), _gloffset_FlushRasterSGIX }, #undef NAME /* 66. GL_HP_image_transform */ +#if 0 #ifdef GL_HP_image_transform #define NAME(X) X #else #define NAME(X) NotImplemented #endif - { "glGetImageTransformParameterfvHP", (GLvoid *) NAME(glGetImageTransformParameterfvHP) }, - { "glGetImageTransformParameterivHP", (GLvoid *) NAME(glGetImageTransformParameterivHP) }, - { "glImageTransformParameterfHP", (GLvoid *) NAME(glImageTransformParameterfHP) }, - { "glImageTransformParameterfvHP", (GLvoid *) NAME(glImageTransformParameterfvHP) }, - { "glImageTransformParameteriHP", (GLvoid *) NAME(glImageTransformParameteriHP) }, - { "glImageTransformParameterivHP", (GLvoid *) NAME(glImageTransformParameterivHP) }, + { "glGetImageTransformParameterfvHP", (GLvoid *) NAME(glGetImageTransformParameterfvHP), _gloffset_GetImageTransformParameterfvHP }, + { "glGetImageTransformParameterivHP", (GLvoid *) NAME(glGetImageTransformParameterivHP), _gloffset_GetImageTransformParameterivHP }, + { "glImageTransformParameterfHP", (GLvoid *) NAME(glImageTransformParameterfHP), _gloffset_ImageTransformParameterfHP }, + { "glImageTransformParameterfvHP", (GLvoid *) NAME(glImageTransformParameterfvHP), _gloffset_ImageTransformParameterfvHP }, + { "glImageTransformParameteriHP", (GLvoid *) NAME(glImageTransformParameteriHP), _gloffset_ImageTransformParameteriHP }, + { "glImageTransformParameterivHP", (GLvoid *) NAME(glImageTransformParameterivHP), _gloffset_ImageTransformParameterivHP }, #undef NAME +#endif /* 74. GL_EXT_color_subtable */ #ifdef GL_EXT_color_subtable @@ -1323,8 +1332,8 @@ #else #define NAME(X) NotImplemented #endif - { "glColorSubTableEXT", (GLvoid *) NAME(glColorSubTableEXT) }, - { "glCopyColorSubTableEXT", (GLvoid *) NAME(glCopyColorSubTableEXT) }, + { "glColorSubTableEXT", (GLvoid *) NAME(glColorSubTableEXT), _gloffset_ColorSubTable }, + { "glCopyColorSubTableEXT", (GLvoid *) NAME(glCopyColorSubTableEXT), _gloffset_CopyColorSubTable }, #undef NAME /* 77. GL_PGI_misc_hints */ @@ -1333,7 +1342,7 @@ #else #define NAME(X) NotImplemented #endif - { "glHintPGI", (GLvoid *) NAME(glHintPGI) }, + { "glHintPGI", (GLvoid *) NAME(glHintPGI), _gloffset_HintPGI }, #undef NAME /* 78. GL_EXT_paletted_texture */ @@ -1342,10 +1351,10 @@ #else #define NAME(X) NotImplemented #endif - { "glColorTableEXT", (GLvoid *) NAME(glColorTableEXT) }, - { "glGetColorTableEXT", (GLvoid *) NAME(glGetColorTableEXT) }, - { "glGetColorTableParameterfvEXT", (GLvoid *) NAME(glGetColorTableParameterfvEXT) }, - { "glGetColorTableParameterivEXT", (GLvoid *) NAME(glGetColorTableParameterivEXT) }, + { "glColorTableEXT", (GLvoid *) NAME(glColorTableEXT), _gloffset_ColorTable }, + { "glGetColorTableEXT", (GLvoid *) NAME(glGetColorTableEXT), _gloffset_GetColorTable }, + { "glGetColorTableParameterfvEXT", (GLvoid *) NAME(glGetColorTableParameterfvEXT), _gloffset_GetColorTableParameterfv }, + { "glGetColorTableParameterivEXT", (GLvoid *) NAME(glGetColorTableParameterivEXT), _gloffset_GetColorTableParameteriv }, #undef NAME /* 80. GL_SGIX_list_priority */ @@ -1354,12 +1363,12 @@ #else #define NAME(X) NotImplemented #endif - { "glGetListParameterfvSGIX", (GLvoid *) NAME(glGetListParameterfvSGIX) }, - { "glGetListParameterivSGIX", (GLvoid *) NAME(glGetListParameterivSGIX) }, - { "glListParameterfSGIX", (GLvoid *) NAME(glListParameterfSGIX) }, - { "glListParameterfvSGIX", (GLvoid *) NAME(glListParameterfvSGIX) }, - { "glListParameteriSGIX", (GLvoid *) NAME(glListParameteriSGIX) }, - { "glListParameterivSGIX", (GLvoid *) NAME(glListParameterivSGIX) }, + { "glGetListParameterfvSGIX", (GLvoid *) NAME(glGetListParameterfvSGIX), _gloffset_GetListParameterfvSGIX }, + { "glGetListParameterivSGIX", (GLvoid *) NAME(glGetListParameterivSGIX), _gloffset_GetListParameterivSGIX }, + { "glListParameterfSGIX", (GLvoid *) NAME(glListParameterfSGIX), _gloffset_ListParameterfSGIX }, + { "glListParameterfvSGIX", (GLvoid *) NAME(glListParameterfvSGIX), _gloffset_ListParameterfvSGIX }, + { "glListParameteriSGIX", (GLvoid *) NAME(glListParameteriSGIX), _gloffset_ListParameteriSGIX }, + { "glListParameterivSGIX", (GLvoid *) NAME(glListParameterivSGIX), _gloffset_ListParameterivSGIX }, #undef NAME /* 94. GL_EXT_index_material */ @@ -1368,7 +1377,7 @@ #else #define NAME(X) NotImplemented #endif - { "glIndexMaterialEXT", (GLvoid *) NAME(glIndexMaterialEXT) }, + { "glIndexMaterialEXT", (GLvoid *) NAME(glIndexMaterialEXT), _gloffset_IndexMaterialEXT }, #undef NAME /* 95. GL_EXT_index_func */ @@ -1377,7 +1386,7 @@ #else #define NAME(X) NotImplemented #endif - { "glIndexFuncEXT", (GLvoid *) NAME(glIndexFuncEXT) }, + { "glIndexFuncEXT", (GLvoid *) NAME(glIndexFuncEXT), _gloffset_IndexFuncEXT }, #undef NAME /* 97. GL_EXT_compiled_vertex_array */ @@ -1386,8 +1395,8 @@ #else #define NAME(X) NotImplemented #endif - { "glLockArraysEXT", (GLvoid *) NAME(glLockArraysEXT) }, - { "glUnlockArraysEXT", (GLvoid *) NAME(glUnlockArraysEXT) }, + { "glLockArraysEXT", (GLvoid *) NAME(glLockArraysEXT), _gloffset_LockArraysEXT }, + { "glUnlockArraysEXT", (GLvoid *) NAME(glUnlockArraysEXT), _gloffset_UnlockArraysEXT }, #undef NAME /* 98. GL_EXT_cull_vertex */ @@ -1396,52 +1405,119 @@ #else #define NAME(X) NotImplemented #endif - { "glCullParameterfvEXT", (GLvoid *) NAME(glCullParameterfvEXT) }, - { "glCullParameterdvEXT", (GLvoid *) NAME(glCullParameterdvEXT) }, + { "glCullParameterfvEXT", (GLvoid *) NAME(glCullParameterfvEXT), _gloffset_CullParameterfvEXT }, + { "glCullParameterdvEXT", (GLvoid *) NAME(glCullParameterdvEXT), _gloffset_CullParameterdvEXT }, +#undef NAME + + /* 102. GL_SGIX_fragment_lighting */ +#ifdef GL_SGIX_fragment_lighting +#define NAME(X) X +#else +#define NAME(X) NotImplemented +#endif + { "glFragmentColorMaterialSGIX", (GLvoid *) NAME(glFragmentColorMaterialSGIX), _gloffset_FragmentColorMaterialSGIX }, + { "glFragmentLightfSGIX", (GLvoid *) NAME(glFragmentLightfSGIX), _gloffset_FragmentLightfSGIX }, + { "glFragmentLightfvSGIX", (GLvoid *) NAME(glFragmentLightfvSGIX), _gloffset_FragmentLightfvSGIX }, + { "glFragmentLightiSGIX", (GLvoid *) NAME(glFragmentLightiSGIX), _gloffset_FragmentLightiSGIX }, + { "glFragmentLightivSGIX", (GLvoid *) NAME(glFragmentLightivSGIX), _gloffset_FragmentLightivSGIX }, + { "glFragmentLightModelfSGIX", (GLvoid *) NAME(glFragmentLightModelfSGIX), _gloffset_FragmentLightModelfSGIX }, + { "glFragmentLightModelfvSGIX", (GLvoid *) NAME(glFragmentLightModelfvSGIX), _gloffset_FragmentLightModelfvSGIX }, + { "glFragmentLightModeliSGIX", (GLvoid *) NAME(glFragmentLightModeliSGIX), _gloffset_FragmentLightModeliSGIX }, + { "glFragmentLightModelivSGIX", (GLvoid *) NAME(glFragmentLightModelivSGIX), _gloffset_FragmentLightModelivSGIX }, + { "glFragmentMaterialfSGIX", (GLvoid *) NAME(glFragmentMaterialfSGIX), _gloffset_FragmentMaterialfSGIX }, + { "glFragmentMaterialfvSGIX", (GLvoid *) NAME(glFragmentMaterialfvSGIX), _gloffset_FragmentMaterialfvSGIX }, + { "glFragmentMaterialiSGIX", (GLvoid *) NAME(glFragmentMaterialiSGIX), _gloffset_FragmentMaterialiSGIX }, + { "glFragmentMaterialivSGIX", (GLvoid *) NAME(glFragmentMaterialivSGIX), _gloffset_FragmentMaterialivSGIX }, + { "glGetFragmentLightfvSGIX", (GLvoid *) NAME(glGetFragmentLightfvSGIX), _gloffset_GetFragmentLightfvSGIX }, + { "glGetFragmentLightivSGIX", (GLvoid *) NAME(glGetFragmentLightivSGIX), _gloffset_GetFragmentLightivSGIX }, + { "glGetFragmentMaterialfvSGIX", (GLvoid *) NAME(glGetFragmentMaterialfvSGIX), _gloffset_GetFragmentMaterialfvSGIX }, + { "glGetFragmentMaterialivSGIX", (GLvoid *) NAME(glGetFragmentMaterialivSGIX), _gloffset_GetFragmentMaterialivSGIX }, + { "glLightEnviSGIX", (GLvoid *) NAME(glLightEnviSGIX), _gloffset_LightEnviSGIX }, +#undef NAME + + /* 149. GL_EXT_fog_coord */ +#ifdef GL_EXT_fog_coord +#define NAME(X) X +#else +#define NAME(X) NotImplemented +#endif + { "glFogCoordfEXT", (GLvoid *) NAME(glFogCoordfEXT), _gloffset_FogCoordfEXT }, + { "glFogCoordfvEXT", (GLvoid *) NAME(glFogCoordfvEXT), _gloffset_FogCoordfvEXT }, + { "glFogCoorddEXT", (GLvoid *) NAME(glFogCoorddEXT), _gloffset_FogCoorddEXT }, + { "glFogCoorddEXT", (GLvoid *) NAME(glFogCoorddEXT), _gloffset_FogCoorddEXT }, + { "glFogCoordPointerEXT", (GLvoid *) NAME(glFogCoordPointerEXT), _gloffset_FogCoordPointerEXT }, #undef NAME /* 173. GL_EXT/INGR_blend_func_separate */ -#ifdef GL_INGR_blend_func_separate +#ifdef GL_EXT_blend_func_separate #define NAME(X) X #else #define NAME(X) NotImplemented #endif - { "glBlendFuncSeparateINGR", (GLvoid *) NAME(glBlendFuncSeparateINGR) }, + { "glBlendFuncSeparateEXT", (GLvoid *) NAME(glBlendFuncSeparateEXT), _gloffset_BlendFuncSeparateEXT }, + { "glBlendFuncSeparateINGR", (GLvoid *) NAME(glBlendFuncSeparateEXT), _gloffset_BlendFuncSeparateEXT }, #undef NAME - /* GL_MESA_window_pos */ -#ifdef MESA_window_pos + /* 188. GL_EXT_vertex_weighting */ +#ifdef GL_EXT_vertex_weighting #define NAME(X) X #else #define NAME(X) NotImplemented #endif - { "glWindowPos4fMESA", (GLvoid *) NAME(glWindowPos4fMESA) }, + { "glVertexWeightfEXT", (GLvoid *) NAME(glVertexWeightfEXT), _gloffset_VertexWeightfEXT }, + { "glVertexWeightfvEXT", (GLvoid *) NAME(glVertexWeightfvEXT), _gloffset_VertexWeightfvEXT }, + { "glVertexWeightPointerEXT", (GLvoid *) NAME(glVertexWeightPointerEXT), _gloffset_VertexWeightPointerEXT }, #undef NAME - /* GL_MESA_resize_buffers */ + /* 190. GL_NV_vertex_array_range */ +#ifdef GL_NV_vertex_array_range +#define NAME(X) X +#else +#define NAME(X) NotImplemented +#endif + { "glFlushVertexArrayRangeNV", (GLvoid *) NAME(glFlushVertexArrayRangeNV), _gloffset_FlushVertexArrayRangeNV }, + { "glVertexArrayRangeNV", (GLvoid *) NAME(glVertexArrayRangeNV), _gloffset_VertexArrayRangeNV }, +#undef NAME + + /* 191. GL_NV_register_combiners */ +#ifdef GL_NV_register_combiners +#define NAME(X) X +#else +#define NAME(X) NotImplemented +#endif + { "glCombinerParameterfvNV", (GLvoid *) NAME(glCombinerParameterfvNV), _gloffset_CombinerParameterfvNV }, + { "glCombinerParameterfNV", (GLvoid *) NAME(glCombinerParameterfNV), _gloffset_CombinerParameterfNV }, + { "glCombinerParameterivNV", (GLvoid *) NAME(glCombinerParameterivNV), _gloffset_CombinerParameterivNV }, + { "glCombinerParameteriNV", (GLvoid *) NAME(glCombinerParameteriNV), _gloffset_CombinerParameteriNV }, + { "glCombinerInputNV", (GLvoid *) NAME(glCombinerInputNV), _gloffset_CombinerInputNV }, + { "glCombinerOutputNV", (GLvoid *) NAME(glCombinerOutputNV), _gloffset_CombinerOutputNV }, + { "glFinalCombinerInputNV", (GLvoid *) NAME(glFinalCombinerInputNV), _gloffset_FinalCombinerInputNV }, + { "glGetCombinerInputParameterfvNV", (GLvoid *) NAME(glGetCombinerInputParameterfvNV), _gloffset_GetCombinerInputParameterfvNV }, + { "glGetCombinerInputParameterivNV", (GLvoid *) NAME(glGetCombinerInputParameterivNV), _gloffset_GetCombinerInputParameterivNV }, + { "glGetCombinerOutputParameterfvNV", (GLvoid *) NAME(glGetCombinerOutputParameterfvNV), _gloffset_GetCombinerOutputParameterfvNV }, + { "glGetCombinerOutputParameterivNV", (GLvoid *) NAME(glGetCombinerOutputParameterivNV), _gloffset_GetCombinerOutputParameterivNV }, + { "glGetFinalCombinerInputParameterfvNV", (GLvoid *) NAME(glGetFinalCombinerInputParameterfvNV), _gloffset_GetFinalCombinerInputParameterfvNV }, + { "glGetFinalCombinerInputParameterivNV", (GLvoid *) NAME(glGetFinalCombinerInputParameterivNV), _gloffset_GetFinalCombinerInputParameterivNV }, +#undef NAME + + /* 196. GL_MESA_resize_buffers */ #ifdef MESA_resize_buffers #define NAME(X) X #else #define NAME(X) NotImplemented #endif - { "glResizeBuffersMESA", (GLvoid *) NAME(glResizeBuffersMESA) }, + { "glResizeBuffersMESA", (GLvoid *) NAME(glResizeBuffersMESA), _gloffset_ResizeBuffersMESA }, #undef NAME - /* GL_ARB_transpose_matrix */ -#ifdef GL_ARB_transpose_matrix + /* 197. GL_MESA_window_pos */ +#ifdef MESA_window_pos #define NAME(X) X #else #define NAME(X) NotImplemented #endif - { "glLoadTransposeMatrixdARB", (GLvoid *) NAME(glLoadTransposeMatrixdARB) }, - { "glLoadTransposeMatrixfARB", (GLvoid *) NAME(glLoadTransposeMatrixfARB) }, - { "glMultTransposeMatrixdARB", (GLvoid *) NAME(glMultTransposeMatrixdARB) }, - { "glMultTransposeMatrixfARB", (GLvoid *) NAME(glMultTransposeMatrixfARB) }, + { "glWindowPos4fMESA", (GLvoid *) NAME(glWindowPos4fMESA), _gloffset_WindowPos4fMESA }, #undef NAME - /* - * XXX many more extenstion functions to add. - */ { NULL, NULL } /* end of list marker */ }; Index: xc/extras/Mesa/src/glapinoop.c diff -u xc/extras/Mesa/src/glapinoop.c:1.5 xc/extras/Mesa/src/glapinoop.c:1.6 --- xc/extras/Mesa/src/glapinoop.c:1.5 Wed Mar 8 16:39:50 2000 +++ xc/extras/Mesa/src/glapinoop.c Wed Mar 8 16:39:50 2000 @@ -80,648 +80,780 @@ -static void Dummy(void) +static int +NoOpGeneric(void) { + if (warn()) { + fprintf(stderr, "GL User Error: calling extension function without a current context\n"); + } + return 0; } -struct _glapi_table __glapi_noop_table = { - Dummy, - NoOpAccum, - NoOpAlphaFunc, - NoOpBegin, - NoOpBitmap, - NoOpBlendFunc, - NoOpCallList, - NoOpCallLists, - NoOpClear, - NoOpClearAccum, - NoOpClearColor, - NoOpClearDepth, - NoOpClearIndex, - NoOpClearStencil, - NoOpClipPlane, - NoOpColor3b, - NoOpColor3bv, - NoOpColor3d, - NoOpColor3dv, - NoOpColor3f, - NoOpColor3fv, - NoOpColor3i, - NoOpColor3iv, - NoOpColor3s, - NoOpColor3sv, - NoOpColor3ub, - NoOpColor3ubv, - NoOpColor3ui, - NoOpColor3uiv, - NoOpColor3us, - NoOpColor3usv, - NoOpColor4b, - NoOpColor4bv, - NoOpColor4d, - NoOpColor4dv, - NoOpColor4f, - NoOpColor4fv, - NoOpColor4i, - NoOpColor4iv, - NoOpColor4s, - NoOpColor4sv, - NoOpColor4ub, - NoOpColor4ubv, - NoOpColor4ui, - NoOpColor4uiv, - NoOpColor4us, - NoOpColor4usv, - NoOpColorMask, - NoOpColorMaterial, - NoOpCopyPixels, - NoOpCullFace, - NoOpDeleteLists, - NoOpDepthFunc, - NoOpDepthMask, - NoOpDepthRange, - NoOpDisable, - NoOpDrawBuffer, - NoOpDrawPixels, - NoOpEdgeFlag, - NoOpEdgeFlagv, - NoOpEnable, - NoOpEnd, - NoOpEndList, - NoOpEvalCoord1d, - NoOpEvalCoord1dv, - NoOpEvalCoord1f, - NoOpEvalCoord1fv, - NoOpEvalCoord2d, - NoOpEvalCoord2dv, - NoOpEvalCoord2f, - NoOpEvalCoord2fv, - NoOpEvalMesh1, - NoOpEvalMesh2, - NoOpEvalPoint1, - NoOpEvalPoint2, - NoOpFeedbackBuffer, - NoOpFinish, - NoOpFlush, - NoOpFogf, - NoOpFogfv, - NoOpFogi, - NoOpFogiv, - NoOpFrontFace, - NoOpFrustum, - NoOpGenLists, - NoOpGetBooleanv, - NoOpGetClipPlane, - NoOpGetDoublev, - NoOpGetError, - NoOpGetFloatv, - NoOpGetIntegerv, - NoOpGetLightfv, - NoOpGetLightiv, - NoOpGetMapdv, - NoOpGetMapfv, - NoOpGetMapiv, - NoOpGetMaterialfv, - NoOpGetMaterialiv, - NoOpGetPixelMapfv, - NoOpGetPixelMapuiv, - NoOpGetPixelMapusv, - NoOpGetPolygonStipple, - NoOpGetString, - NoOpGetTexEnvfv, - NoOpGetTexEnviv, - NoOpGetTexGendv, - NoOpGetTexGenfv, - NoOpGetTexGeniv, - NoOpGetTexImage, - NoOpGetTexLevelParameterfv, - NoOpGetTexLevelParameteriv, - NoOpGetTexParameterfv, - NoOpGetTexParameteriv, - NoOpHint, - NoOpIndexMask, - NoOpIndexd, - NoOpIndexdv, - NoOpIndexf, - NoOpIndexfv, - NoOpIndexi, - NoOpIndexiv, - NoOpIndexs, - NoOpIndexsv, - NoOpInitNames, - NoOpIsEnabled, - NoOpIsList, - NoOpLightModelf, - NoOpLightModelfv, - NoOpLightModeli, - NoOpLightModeliv, - NoOpLightf, - NoOpLightfv, - NoOpLighti, - NoOpLightiv, - NoOpLineStipple, - NoOpLineWidth, - NoOpListBase, - NoOpLoadIdentity, - NoOpLoadMatrixd, - NoOpLoadMatrixf, - NoOpLoadName, - NoOpLogicOp, - NoOpMap1d, - NoOpMap1f, - NoOpMap2d, - NoOpMap2f, - NoOpMapGrid1d, - NoOpMapGrid1f, - NoOpMapGrid2d, - NoOpMapGrid2f, - NoOpMaterialf, - NoOpMaterialfv, - NoOpMateriali, - NoOpMaterialiv, - NoOpMatrixMode, - NoOpMultMatrixd, - NoOpMultMatrixf, - NoOpNewList, - NoOpNormal3b, - NoOpNormal3bv, - NoOpNormal3d, - NoOpNormal3dv, - NoOpNormal3f, - NoOpNormal3fv, - NoOpNormal3i, - NoOpNormal3iv, - NoOpNormal3s, - NoOpNormal3sv, - NoOpOrtho, - NoOpPassThrough, - NoOpPixelMapfv, - NoOpPixelMapuiv, - NoOpPixelMapusv, - NoOpPixelStoref, - NoOpPixelStorei, - NoOpPixelTransferf, - NoOpPixelTransferi, - NoOpPixelZoom, - NoOpPointSize, - NoOpPolygonMode, - NoOpPolygonOffset, - NoOpPolygonStipple, - NoOpPopAttrib, - NoOpPopMatrix, - NoOpPopName, - NoOpPushAttrib, - NoOpPushMatrix, - NoOpPushName, - NoOpRasterPos2d, - NoOpRasterPos2dv, - NoOpRasterPos2f, - NoOpRasterPos2fv, - NoOpRasterPos2i, - NoOpRasterPos2iv, - NoOpRasterPos2s, - NoOpRasterPos2sv, - NoOpRasterPos3d, - NoOpRasterPos3dv, - NoOpRasterPos3f, - NoOpRasterPos3fv, - NoOpRasterPos3i, - NoOpRasterPos3iv, - NoOpRasterPos3s, - NoOpRasterPos3sv, - NoOpRasterPos4d, - NoOpRasterPos4dv, - NoOpRasterPos4f, - NoOpRasterPos4fv, - NoOpRasterPos4i, - NoOpRasterPos4iv, - NoOpRasterPos4s, - NoOpRasterPos4sv, - NoOpReadBuffer, - NoOpReadPixels, - NoOpRectd, - NoOpRectdv, - NoOpRectf, - NoOpRectfv, - NoOpRecti, - NoOpRectiv, - NoOpRects, - NoOpRectsv, - NoOpRenderMode, - NoOpRotated, - NoOpRotatef, - NoOpScaled, - NoOpScalef, - NoOpScissor, - NoOpSelectBuffer, - NoOpShadeModel, - NoOpStencilFunc, - NoOpStencilMask, - NoOpStencilOp, - NoOpTexCoord1d, - NoOpTexCoord1dv, - NoOpTexCoord1f, - NoOpTexCoord1fv, - NoOpTexCoord1i, - NoOpTexCoord1iv, - NoOpTexCoord1s, - NoOpTexCoord1sv, - NoOpTexCoord2d, - NoOpTexCoord2dv, - NoOpTexCoord2f, - NoOpTexCoord2fv, - NoOpTexCoord2i, - NoOpTexCoord2iv, - NoOpTexCoord2s, - NoOpTexCoord2sv, - NoOpTexCoord3d, - NoOpTexCoord3dv, - NoOpTexCoord3f, - NoOpTexCoord3fv, - NoOpTexCoord3i, - NoOpTexCoord3iv, - NoOpTexCoord3s, - NoOpTexCoord3sv, - NoOpTexCoord4d, - NoOpTexCoord4dv, - NoOpTexCoord4f, - NoOpTexCoord4fv, - NoOpTexCoord4i, - NoOpTexCoord4iv, - NoOpTexCoord4s, - NoOpTexCoord4sv, - NoOpTexEnvf, - NoOpTexEnvfv, - NoOpTexEnvi, - NoOpTexEnviv, - NoOpTexGend, - NoOpTexGendv, - NoOpTexGenf, - NoOpTexGenfv, - NoOpTexGeni, - NoOpTexGeniv, - NoOpTexImage1D, - NoOpTexImage2D, - NoOpTexParameterf, - NoOpTexParameterfv, - NoOpTexParameteri, - NoOpTexParameteriv, - NoOpTranslated, - NoOpTranslatef, - NoOpVertex2d, - NoOpVertex2dv, - NoOpVertex2f, - NoOpVertex2fv, - NoOpVertex2i, - NoOpVertex2iv, - NoOpVertex2s, - NoOpVertex2sv, - NoOpVertex3d, - NoOpVertex3dv, - NoOpVertex3f, - NoOpVertex3fv, - NoOpVertex3i, - NoOpVertex3iv, - NoOpVertex3s, - NoOpVertex3sv, - NoOpVertex4d, - NoOpVertex4dv, - NoOpVertex4f, - NoOpVertex4fv, - NoOpVertex4i, - NoOpVertex4iv, - NoOpVertex4s, - NoOpVertex4sv, - NoOpViewport, - - /* GL 1.1 */ - NoOpAreTexturesResident, - NoOpArrayElement, - NoOpBindTexture, - NoOpColorPointer, - NoOpCopyTexImage1D, - NoOpCopyTexImage2D, - NoOpCopyTexSubImage1D, - NoOpCopyTexSubImage2D, - NoOpDeleteTextures, - NoOpDisableClientState, - NoOpDrawArrays, - NoOpDrawElements, - NoOpEdgeFlagPointer, - NoOpEnableClientState, - NoOpGenTextures, - NoOpGetPointerv, - NoOpIndexPointer, - NoOpIndexub, - NoOpIndexubv, - NoOpInterleavedArrays, - NoOpIsTexture, - NoOpNormalPointer, - NoOpPopClientAttrib, - NoOpPrioritizeTextures, - NoOpPushClientAttrib, - NoOpTexCoordPointer, - NoOpTexSubImage1D, - NoOpTexSubImage2D, - NoOpVertexPointer, - - /* GL 1.2 */ - NoOpCopyTexSubImage3D, - NoOpDrawRangeElements, - NoOpTexImage3D, - NoOpTexSubImage3D, - - /* GL_ARB_imaging */ - NoOpBlendColor, - NoOpBlendEquation, - NoOpColorSubTable, - NoOpColorTable, - NoOpColorTableParameterfv, - NoOpColorTableParameteriv, - NoOpConvolutionFilter1D, - NoOpConvolutionFilter2D, - NoOpConvolutionParameterf, - NoOpConvolutionParameterfv, - NoOpConvolutionParameteri, - NoOpConvolutionParameteriv, - NoOpCopyColorSubTable, - NoOpCopyColorTable, - NoOpCopyConvolutionFilter1D, - NoOpCopyConvolutionFilter2D, - NoOpGetColorTable, - NoOpGetColorTableParameterfv, - NoOpGetColorTableParameteriv, - NoOpGetConvolutionFilter, - NoOpGetConvolutionParameterfv, - NoOpGetConvolutionParameteriv, - NoOpGetHistogram, - NoOpGetHistogramParameterfv, - NoOpGetHistogramParameteriv, - NoOpGetMinmax, - NoOpGetMinmaxParameterfv, - NoOpGetMinmaxParameteriv, - NoOpGetSeparableFilter, - NoOpHistogram, - NoOpMinmax, - NoOpResetHistogram, - NoOpResetMinmax, - NoOpSeparableFilter2D, - +void *__glapi_noop_table[] = { + (void *) NoOpNewList, + (void *) NoOpEndList, + (void *) NoOpCallList, + (void *) NoOpCallLists, + (void *) NoOpDeleteLists, + (void *) NoOpGenLists, + (void *) NoOpListBase, + (void *) NoOpBegin, + (void *) NoOpBitmap, + (void *) NoOpColor3b, + (void *) NoOpColor3bv, + (void *) NoOpColor3d, + (void *) NoOpColor3dv, + (void *) NoOpColor3f, + (void *) NoOpColor3fv, + (void *) NoOpColor3i, + (void *) NoOpColor3iv, + (void *) NoOpColor3s, + (void *) NoOpColor3sv, + (void *) NoOpColor3ub, + (void *) NoOpColor3ubv, + (void *) NoOpColor3ui, + (void *) NoOpColor3uiv, + (void *) NoOpColor3us, + (void *) NoOpColor3usv, + (void *) NoOpColor4b, + (void *) NoOpColor4bv, + (void *) NoOpColor4d, + (void *) NoOpColor4dv, + (void *) NoOpColor4f, + (void *) NoOpColor4fv, + (void *) NoOpColor4i, + (void *) NoOpColor4iv, + (void *) NoOpColor4s, + (void *) NoOpColor4sv, + (void *) NoOpColor4ub, + (void *) NoOpColor4ubv, + (void *) NoOpColor4ui, + (void *) NoOpColor4uiv, + (void *) NoOpColor4us, + (void *) NoOpColor4usv, + (void *) NoOpEdgeFlag, + (void *) NoOpEdgeFlagv, + (void *) NoOpEnd, + (void *) NoOpIndexd, + (void *) NoOpIndexdv, + (void *) NoOpIndexf, + (void *) NoOpIndexfv, + (void *) NoOpIndexi, + (void *) NoOpIndexiv, + (void *) NoOpIndexs, + (void *) NoOpIndexsv, + (void *) NoOpNormal3b, + (void *) NoOpNormal3bv, + (void *) NoOpNormal3d, + (void *) NoOpNormal3dv, + (void *) NoOpNormal3f, + (void *) NoOpNormal3fv, + (void *) NoOpNormal3i, + (void *) NoOpNormal3iv, + (void *) NoOpNormal3s, + (void *) NoOpNormal3sv, + (void *) NoOpRasterPos2d, + (void *) NoOpRasterPos2dv, + (void *) NoOpRasterPos2f, + (void *) NoOpRasterPos2fv, + (void *) NoOpRasterPos2i, + (void *) NoOpRasterPos2iv, + (void *) NoOpRasterPos2s, + (void *) NoOpRasterPos2sv, + (void *) NoOpRasterPos3d, + (void *) NoOpRasterPos3dv, + (void *) NoOpRasterPos3f, + (void *) NoOpRasterPos3fv, + (void *) NoOpRasterPos3i, + (void *) NoOpRasterPos3iv, + (void *) NoOpRasterPos3s, + (void *) NoOpRasterPos3sv, + (void *) NoOpRasterPos4d, + (void *) NoOpRasterPos4dv, + (void *) NoOpRasterPos4f, + (void *) NoOpRasterPos4fv, + (void *) NoOpRasterPos4i, + (void *) NoOpRasterPos4iv, + (void *) NoOpRasterPos4s, + (void *) NoOpRasterPos4sv, + (void *) NoOpRectd, + (void *) NoOpRectdv, + (void *) NoOpRectf, + (void *) NoOpRectfv, + (void *) NoOpRecti, + (void *) NoOpRectiv, + (void *) NoOpRects, + (void *) NoOpRectsv, + (void *) NoOpTexCoord1d, + (void *) NoOpTexCoord1dv, + (void *) NoOpTexCoord1f, + (void *) NoOpTexCoord1fv, + (void *) NoOpTexCoord1i, + (void *) NoOpTexCoord1iv, + (void *) NoOpTexCoord1s, + (void *) NoOpTexCoord1sv, + (void *) NoOpTexCoord2d, + (void *) NoOpTexCoord2dv, + (void *) NoOpTexCoord2f, + (void *) NoOpTexCoord2fv, + (void *) NoOpTexCoord2i, + (void *) NoOpTexCoord2iv, + (void *) NoOpTexCoord2s, + (void *) NoOpTexCoord2sv, + (void *) NoOpTexCoord3d, + (void *) NoOpTexCoord3dv, + (void *) NoOpTexCoord3f, + (void *) NoOpTexCoord3fv, + (void *) NoOpTexCoord3i, + (void *) NoOpTexCoord3iv, + (void *) NoOpTexCoord3s, + (void *) NoOpTexCoord3sv, + (void *) NoOpTexCoord4d, + (void *) NoOpTexCoord4dv, + (void *) NoOpTexCoord4f, + (void *) NoOpTexCoord4fv, + (void *) NoOpTexCoord4i, + (void *) NoOpTexCoord4iv, + (void *) NoOpTexCoord4s, + (void *) NoOpTexCoord4sv, + (void *) NoOpVertex2d, + (void *) NoOpVertex2dv, + (void *) NoOpVertex2f, + (void *) NoOpVertex2fv, + (void *) NoOpVertex2i, + (void *) NoOpVertex2iv, + (void *) NoOpVertex2s, + (void *) NoOpVertex2sv, + (void *) NoOpVertex3d, + (void *) NoOpVertex3dv, + (void *) NoOpVertex3f, + (void *) NoOpVertex3fv, + (void *) NoOpVertex3i, + (void *) NoOpVertex3iv, + (void *) NoOpVertex3s, + (void *) NoOpVertex3sv, + (void *) NoOpVertex4d, + (void *) NoOpVertex4dv, + (void *) NoOpVertex4f, + (void *) NoOpVertex4fv, + (void *) NoOpVertex4i, + (void *) NoOpVertex4iv, + (void *) NoOpVertex4s, + (void *) NoOpVertex4sv, + (void *) NoOpClipPlane, + (void *) NoOpColorMaterial, + (void *) NoOpCullFace, + (void *) NoOpFogf, + (void *) NoOpFogfv, + (void *) NoOpFogi, + (void *) NoOpFogiv, + (void *) NoOpFrontFace, + (void *) NoOpHint, + (void *) NoOpLightf, + (void *) NoOpLightfv, + (void *) NoOpLighti, + (void *) NoOpLightiv, + (void *) NoOpLightModelf, + (void *) NoOpLightModelfv, + (void *) NoOpLightModeli, + (void *) NoOpLightModeliv, + (void *) NoOpLineStipple, + (void *) NoOpLineWidth, + (void *) NoOpMaterialf, + (void *) NoOpMaterialfv, + (void *) NoOpMateriali, + (void *) NoOpMaterialiv, + (void *) NoOpPointSize, + (void *) NoOpPolygonMode, + (void *) NoOpPolygonStipple, + (void *) NoOpScissor, + (void *) NoOpShadeModel, + (void *) NoOpTexParameterf, + (void *) NoOpTexParameterfv, + (void *) NoOpTexParameteri, + (void *) NoOpTexParameteriv, + (void *) NoOpTexImage1D, + (void *) NoOpTexImage2D, + (void *) NoOpTexEnvf, + (void *) NoOpTexEnvfv, + (void *) NoOpTexEnvi, + (void *) NoOpTexEnviv, + (void *) NoOpTexGend, + (void *) NoOpTexGendv, + (void *) NoOpTexGenf, + (void *) NoOpTexGenfv, + (void *) NoOpTexGeni, + (void *) NoOpTexGeniv, + (void *) NoOpFeedbackBuffer, + (void *) NoOpSelectBuffer, + (void *) NoOpRenderMode, + (void *) NoOpInitNames, + (void *) NoOpLoadName, + (void *) NoOpPassThrough, + (void *) NoOpPopName, + (void *) NoOpPushName, + (void *) NoOpDrawBuffer, + (void *) NoOpClear, + (void *) NoOpClearAccum, + (void *) NoOpClearIndex, + (void *) NoOpClearColor, + (void *) NoOpClearStencil, + (void *) NoOpClearDepth, + (void *) NoOpStencilMask, + (void *) NoOpColorMask, + (void *) NoOpDepthMask, + (void *) NoOpIndexMask, + (void *) NoOpAccum, + (void *) NoOpDisable, + (void *) NoOpEnable, + (void *) NoOpFinish, + (void *) NoOpFlush, + (void *) NoOpPopAttrib, + (void *) NoOpPushAttrib, + (void *) NoOpMap1d, + (void *) NoOpMap1f, + (void *) NoOpMap2d, + (void *) NoOpMap2f, + (void *) NoOpMapGrid1d, + (void *) NoOpMapGrid1f, + (void *) NoOpMapGrid2d, + (void *) NoOpMapGrid2f, + (void *) NoOpEvalCoord1d, + (void *) NoOpEvalCoord1dv, + (void *) NoOpEvalCoord1f, + (void *) NoOpEvalCoord1fv, + (void *) NoOpEvalCoord2d, + (void *) NoOpEvalCoord2dv, + (void *) NoOpEvalCoord2f, + (void *) NoOpEvalCoord2fv, + (void *) NoOpEvalMesh1, + (void *) NoOpEvalPoint1, + (void *) NoOpEvalMesh2, + (void *) NoOpEvalPoint2, + (void *) NoOpAlphaFunc, + (void *) NoOpBlendFunc, + (void *) NoOpLogicOp, + (void *) NoOpStencilFunc, + (void *) NoOpStencilOp, + (void *) NoOpDepthFunc, + (void *) NoOpPixelZoom, + (void *) NoOpPixelTransferf, + (void *) NoOpPixelTransferi, + (void *) NoOpPixelStoref, + (void *) NoOpPixelStorei, + (void *) NoOpPixelMapfv, + (void *) NoOpPixelMapuiv, + (void *) NoOpPixelMapusv, + (void *) NoOpReadBuffer, + (void *) NoOpCopyPixels, + (void *) NoOpReadPixels, + (void *) NoOpDrawPixels, + (void *) NoOpGetBooleanv, + (void *) NoOpGetClipPlane, + (void *) NoOpGetDoublev, + (void *) NoOpGetError, + (void *) NoOpGetFloatv, + (void *) NoOpGetIntegerv, + (void *) NoOpGetLightfv, + (void *) NoOpGetLightiv, + (void *) NoOpGetMapdv, + (void *) NoOpGetMapfv, + (void *) NoOpGetMapiv, + (void *) NoOpGetMaterialfv, + (void *) NoOpGetMaterialiv, + (void *) NoOpGetPixelMapfv, + (void *) NoOpGetPixelMapuiv, + (void *) NoOpGetPixelMapusv, + (void *) NoOpGetPolygonStipple, + (void *) NoOpGetString, + (void *) NoOpGetTexEnvfv, + (void *) NoOpGetTexEnviv, + (void *) NoOpGetTexGendv, + (void *) NoOpGetTexGenfv, + (void *) NoOpGetTexGeniv, + (void *) NoOpGetTexImage, + (void *) NoOpGetTexParameterfv, + (void *) NoOpGetTexParameteriv, + (void *) NoOpGetTexLevelParameterfv, + (void *) NoOpGetTexLevelParameteriv, + (void *) NoOpIsEnabled, + (void *) NoOpIsList, + (void *) NoOpDepthRange, + (void *) NoOpFrustum, + (void *) NoOpLoadIdentity, + (void *) NoOpLoadMatrixf, + (void *) NoOpLoadMatrixd, + (void *) NoOpMatrixMode, + (void *) NoOpMultMatrixf, + (void *) NoOpMultMatrixd, + (void *) NoOpOrtho, + (void *) NoOpPopMatrix, + (void *) NoOpPushMatrix, + (void *) NoOpRotated, + (void *) NoOpRotatef, + (void *) NoOpScaled, + (void *) NoOpScalef, + (void *) NoOpTranslated, + (void *) NoOpTranslatef, + (void *) NoOpViewport, + /* 1.1 */ + (void *) NoOpArrayElement, + (void *) NoOpBindTexture, + (void *) NoOpColorPointer, + (void *) NoOpDisableClientState, + (void *) NoOpDrawArrays, + (void *) NoOpDrawElements, + (void *) NoOpEdgeFlagPointer, + (void *) NoOpEnableClientState, + (void *) NoOpIndexPointer, + (void *) NoOpIndexub, + (void *) NoOpIndexubv, + (void *) NoOpInterleavedArrays, + (void *) NoOpNormalPointer, + (void *) NoOpPolygonOffset, + (void *) NoOpTexCoordPointer, + (void *) NoOpVertexPointer, + (void *) NoOpAreTexturesResident, + (void *) NoOpCopyTexImage1D, + (void *) NoOpCopyTexImage2D, + (void *) NoOpCopyTexSubImage1D, + (void *) NoOpCopyTexSubImage2D, + (void *) NoOpDeleteTextures, + (void *) NoOpGenTextures, + (void *) NoOpGetPointerv, + (void *) NoOpIsTexture, + (void *) NoOpPrioritizeTextures, + (void *) NoOpTexSubImage1D, + (void *) NoOpTexSubImage2D, + (void *) NoOpPopClientAttrib, + (void *) NoOpPushClientAttrib, + /* 1.2 */ + (void *) NoOpBlendColor, + (void *) NoOpBlendEquation, + (void *) NoOpDrawRangeElements, + (void *) NoOpColorTable, + (void *) NoOpColorTableParameterfv, + (void *) NoOpColorTableParameteriv, + (void *) NoOpCopyColorTable, + (void *) NoOpGetColorTable, + (void *) NoOpGetColorTableParameterfv, + (void *) NoOpGetColorTableParameteriv, + (void *) NoOpColorSubTable, + (void *) NoOpCopyColorSubTable, + (void *) NoOpConvolutionFilter1D, + (void *) NoOpConvolutionFilter2D, + (void *) NoOpConvolutionParameterf, + (void *) NoOpConvolutionParameterfv, + (void *) NoOpConvolutionParameteri, + (void *) NoOpConvolutionParameteriv, + (void *) NoOpCopyConvolutionFilter1D, + (void *) NoOpCopyConvolutionFilter2D, + (void *) NoOpGetConvolutionFilter, + (void *) NoOpGetConvolutionParameterfv, + (void *) NoOpGetConvolutionParameteriv, + (void *) NoOpGetSeparableFilter, + (void *) NoOpSeparableFilter2D, + (void *) NoOpGetHistogram, + (void *) NoOpGetHistogramParameterfv, + (void *) NoOpGetHistogramParameteriv, + (void *) NoOpGetMinmax, + (void *) NoOpGetMinmaxParameterfv, + (void *) NoOpGetMinmaxParameteriv, + (void *) NoOpHistogram, + (void *) NoOpMinmax, + (void *) NoOpResetHistogram, + (void *) NoOpResetMinmax, + (void *) NoOpTexImage3D, + (void *) NoOpTexSubImage3D, + (void *) NoOpCopyTexSubImage3D, /* GL_ARB_multitexture */ - NoOpActiveTextureARB, - NoOpClientActiveTextureARB, - NoOpMultiTexCoord1dARB, - NoOpMultiTexCoord1dvARB, - NoOpMultiTexCoord1fARB, - NoOpMultiTexCoord1fvARB, - NoOpMultiTexCoord1iARB, - NoOpMultiTexCoord1ivARB, - NoOpMultiTexCoord1sARB, - NoOpMultiTexCoord1svARB, - NoOpMultiTexCoord2dARB, - NoOpMultiTexCoord2dvARB, - NoOpMultiTexCoord2fARB, - NoOpMultiTexCoord2fvARB, - NoOpMultiTexCoord2iARB, - NoOpMultiTexCoord2ivARB, - NoOpMultiTexCoord2sARB, - NoOpMultiTexCoord2svARB, - NoOpMultiTexCoord3dARB, - NoOpMultiTexCoord3dvARB, - NoOpMultiTexCoord3fARB, - NoOpMultiTexCoord3fvARB, - NoOpMultiTexCoord3iARB, - NoOpMultiTexCoord3ivARB, - NoOpMultiTexCoord3sARB, - NoOpMultiTexCoord3svARB, - NoOpMultiTexCoord4dARB, - NoOpMultiTexCoord4dvARB, - NoOpMultiTexCoord4fARB, - NoOpMultiTexCoord4fvARB, - NoOpMultiTexCoord4iARB, - NoOpMultiTexCoord4ivARB, - NoOpMultiTexCoord4sARB, - NoOpMultiTexCoord4svARB, - - /* - * Extensions - */ - - /* 2. GL_EXT_blend_color */ - NoOpBlendColorEXT, - - /* 3. GL_EXT_polygon_offset */ - NoOpPolygonOffsetEXT, - - /* 6. GL_EXT_texture3d */ - NoOpCopyTexSubImage3DEXT, - NoOpTexImage3DEXT, - NoOpTexSubImage3DEXT, - - /* 7. GL_SGI_texture_filter4 */ - NoOpGetTexFilterFuncSGIS, - NoOpTexFilterFuncSGIS, - - /* 9. GL_EXT_subtexture */ - NoOpTexSubImage1DEXT, - NoOpTexSubImage2DEXT, - - /* 10. GL_EXT_copy_texture */ - NoOpCopyTexImage1DEXT, - NoOpCopyTexImage2DEXT, - NoOpCopyTexSubImage1DEXT, - NoOpCopyTexSubImage2DEXT, - - /* 11. GL_EXT_histogram */ - NoOpGetHistogramEXT, - NoOpGetHistogramParameterfvEXT, - NoOpGetHistogramParameterivEXT, - NoOpGetMinmaxEXT, - NoOpGetMinmaxParameterfvEXT, - NoOpGetMinmaxParameterivEXT, - NoOpHistogramEXT, - NoOpMinmaxEXT, - NoOpResetHistogramEXT, - NoOpResetMinmaxEXT, - - /* 12. GL_EXT_convolution */ - NoOpConvolutionFilter1DEXT, - NoOpConvolutionFilter2DEXT, - NoOpConvolutionParameterfEXT, - NoOpConvolutionParameterfvEXT, - NoOpConvolutionParameteriEXT, - NoOpConvolutionParameterivEXT, - NoOpCopyConvolutionFilter1DEXT, - NoOpCopyConvolutionFilter2DEXT, - NoOpGetConvolutionFilterEXT, - NoOpGetConvolutionParameterfvEXT, - NoOpGetConvolutionParameterivEXT, - NoOpGetSeparableFilterEXT, - NoOpSeparableFilter2DEXT, - - /* 14. GL_SGI_color_table */ - NoOpColorTableSGI, - NoOpColorTableParameterfvSGI, - NoOpColorTableParameterivSGI, - NoOpCopyColorTableSGI, - NoOpGetColorTableSGI, - NoOpGetColorTableParameterfvSGI, - NoOpGetColorTableParameterivSGI, - - /* 15. GL_SGIS_pixel_texture */ - NoOpPixelTexGenParameterfSGIS, - NoOpPixelTexGenParameteriSGIS, - NoOpGetPixelTexGenParameterfvSGIS, - NoOpGetPixelTexGenParameterivSGIS, - - /* 16. GL_SGIS_texture4D */ - NoOpTexImage4DSGIS, - NoOpTexSubImage4DSGIS, - - /* 20. GL_EXT_texture_object */ - NoOpAreTexturesResidentEXT, - NoOpBindTextureEXT, - NoOpDeleteTexturesEXT, - NoOpGenTexturesEXT, - NoOpIsTextureEXT, - NoOpPrioritizeTexturesEXT, - - /* 21. GL_SGIS_detail_texture */ - NoOpDetailTexFuncSGIS, - NoOpGetDetailTexFuncSGIS, - - /* 22. GL_SGIS_sharpen_texture */ - NoOpGetSharpenTexFuncSGIS, - NoOpSharpenTexFuncSGIS, - - /* 25. GL_SGIS_multisample */ - NoOpSampleMaskSGIS, - NoOpSamplePatternSGIS, - - /* 30. GL_EXT_vertex_array */ - NoOpArrayElementEXT, - NoOpColorPointerEXT, - NoOpDrawArraysEXT, - NoOpEdgeFlagPointerEXT, - NoOpGetPointervEXT, - NoOpIndexPointerEXT, - NoOpNormalPointerEXT, - NoOpTexCoordPointerEXT, - NoOpVertexPointerEXT, - - /* 37. GL_EXT_blend_minmax */ - NoOpBlendEquationEXT, - - /* 52. GL_SGIX_sprite */ - NoOpSpriteParameterfSGIX, - NoOpSpriteParameterfvSGIX, - NoOpSpriteParameteriSGIX, - NoOpSpriteParameterivSGIX, - - /* 54. GL_EXT_point_parameters */ - NoOpPointParameterfEXT, - NoOpPointParameterfvEXT, - - /* 55. GL_SGIX_instruments */ - NoOpGetInstrumentsSGIX, - NoOpInstrumentsBufferSGIX, - NoOpPollInstrumentsSGIX, - NoOpReadInstrumentsSGIX, - NoOpStartInstrumentsSGIX, - NoOpStopInstrumentsSGIX, - - /* 57. GL_SGIX_framezoom */ - NoOpFrameZoomSGIX, - - /* 60. GL_SGIX_reference_plane */ - NoOpReferencePlaneSGIX, - - /* 61. GL_SGIX_flush_raster */ - NoOpFlushRasterSGIX, - - /* 66. GL_HP_image_transform */ - NoOpGetImageTransformParameterfvHP, - NoOpGetImageTransformParameterivHP, - NoOpImageTransformParameterfHP, - NoOpImageTransformParameterfvHP, - NoOpImageTransformParameteriHP, - NoOpImageTransformParameterivHP, - - /* 74. GL_EXT_color_subtable */ - NoOpColorSubTableEXT, - NoOpCopyColorSubTableEXT, - - /* 77. GL_PGI_misc_hints */ - NoOpHintPGI, - - /* 78. GL_EXT_paletted_texture */ - NoOpColorTableEXT, - NoOpGetColorTableEXT, - NoOpGetColorTableParameterfvEXT, - NoOpGetColorTableParameterivEXT, - - /* 80. GL_SGIX_list_priority */ - NoOpGetListParameterfvSGIX, - NoOpGetListParameterivSGIX, - NoOpListParameterfSGIX, - NoOpListParameterfvSGIX, - NoOpListParameteriSGIX, - NoOpListParameterivSGIX, - - /* 94. GL_EXT_index_material */ - NoOpIndexMaterialEXT, - - /* 95. GL_EXT_index_func */ - NoOpIndexFuncEXT, - - /* 96. GL_EXT_index_array_formats - no functions */ - - /* 97. GL_EXT_compiled_vertex_array */ - NoOpLockArraysEXT, - NoOpUnlockArraysEXT, - - /* 98. GL_EXT_cull_vertex */ - NoOpCullParameterfvEXT, - NoOpCullParameterdvEXT, - - /* 173. GL_EXT/INGR_blend_func_separate */ - NoOpBlendFuncSeparateINGR, - - /* GL_MESA_window_pos */ - NoOpWindowPos2dMESA, - NoOpWindowPos2dvMESA, - NoOpWindowPos2fMESA, - NoOpWindowPos2fvMESA, - NoOpWindowPos2iMESA, - NoOpWindowPos2ivMESA, - NoOpWindowPos2sMESA, - NoOpWindowPos2svMESA, - NoOpWindowPos3dMESA, - NoOpWindowPos3dvMESA, - NoOpWindowPos3fMESA, - NoOpWindowPos3fvMESA, - NoOpWindowPos3iMESA, - NoOpWindowPos3ivMESA, - NoOpWindowPos3sMESA, - NoOpWindowPos3svMESA, - NoOpWindowPos4dMESA, - NoOpWindowPos4dvMESA, - NoOpWindowPos4fMESA, - NoOpWindowPos4fvMESA, - NoOpWindowPos4iMESA, - NoOpWindowPos4ivMESA, - NoOpWindowPos4sMESA, - NoOpWindowPos4svMESA, - - /* GL_MESA_resize_buffers */ - NoOpResizeBuffersMESA, - + (void *) NoOpActiveTextureARB, + (void *) NoOpClientActiveTextureARB, + (void *) NoOpMultiTexCoord1dARB, + (void *) NoOpMultiTexCoord1dvARB, + (void *) NoOpMultiTexCoord1fARB, + (void *) NoOpMultiTexCoord1fvARB, + (void *) NoOpMultiTexCoord1iARB, + (void *) NoOpMultiTexCoord1ivARB, + (void *) NoOpMultiTexCoord1sARB, + (void *) NoOpMultiTexCoord1svARB, + (void *) NoOpMultiTexCoord2dARB, + (void *) NoOpMultiTexCoord2dvARB, + (void *) NoOpMultiTexCoord2fARB, + (void *) NoOpMultiTexCoord2fvARB, + (void *) NoOpMultiTexCoord2iARB, + (void *) NoOpMultiTexCoord2ivARB, + (void *) NoOpMultiTexCoord2sARB, + (void *) NoOpMultiTexCoord2svARB, + (void *) NoOpMultiTexCoord3dARB, + (void *) NoOpMultiTexCoord3dvARB, + (void *) NoOpMultiTexCoord3fARB, + (void *) NoOpMultiTexCoord3fvARB, + (void *) NoOpMultiTexCoord3iARB, + (void *) NoOpMultiTexCoord3ivARB, + (void *) NoOpMultiTexCoord3sARB, + (void *) NoOpMultiTexCoord3svARB, + (void *) NoOpMultiTexCoord4dARB, + (void *) NoOpMultiTexCoord4dvARB, + (void *) NoOpMultiTexCoord4fARB, + (void *) NoOpMultiTexCoord4fvARB, + (void *) NoOpMultiTexCoord4iARB, + (void *) NoOpMultiTexCoord4ivARB, + (void *) NoOpMultiTexCoord4sARB, + (void *) NoOpMultiTexCoord4svARB, /* GL_ARB_transpose_matrix */ - NoOpLoadTransposeMatrixdARB, - NoOpLoadTransposeMatrixfARB, - NoOpMultTransposeMatrixdARB, - NoOpMultTransposeMatrixfARB, - + (void *) NoOpLoadTransposeMatrixfARB, + (void *) NoOpLoadTransposeMatrixdARB, + (void *) NoOpMultTransposeMatrixfARB, + (void *) NoOpMultTransposeMatrixdARB, + /* GL_ARB_multisample */ + (void *) NoOpSampleCoverageARB, + (void *) NoOpSamplePassARB, + /* GL_EXT_blend_color */ + /* GL_EXT_polygon_offset */ + (void *) NoOpPolygonOffsetEXT, + /* GL_EXT_texture3D */ + /* GL_EXT_subtexture */ + /* GL_SGIS_texture_filter4 */ + (void *) NoOpGetTexFilterFuncSGIS, + (void *) NoOpTexFilterFuncSGIS, + /* GL_EXT_subtexture */ + /* GL_EXT_copy_texture */ + /* GL_EXT_histogram */ + (void *) NoOpGetHistogramEXT, + (void *) NoOpGetHistogramParameterfvEXT, + (void *) NoOpGetHistogramParameterivEXT, + (void *) NoOpGetMinmaxEXT, + (void *) NoOpGetMinmaxParameterfvEXT, + (void *) NoOpGetMinmaxParameterivEXT, + /* GL_EXT_convolution */ + (void *) NoOpGetConvolutionFilterEXT, + (void *) NoOpGetConvolutionParameterfvEXT, + (void *) NoOpGetConvolutionParameterivEXT, + (void *) NoOpGetSeparableFilterEXT, + /* GL_SGI_color_table */ + (void *) NoOpGetColorTableSGI, + (void *) NoOpGetColorTableParameterfvSGI, + (void *) NoOpGetColorTableParameterivSGI, + /* GL_SGIX_pixel_texture */ + (void *) NoOpPixelTexGenSGIX, + /* GL_SGIS_pixel_texture */ + (void *) NoOpPixelTexGenParameteriSGIS, + (void *) NoOpPixelTexGenParameterivSGIS, + (void *) NoOpPixelTexGenParameterfSGIS, + (void *) NoOpPixelTexGenParameterfvSGIS, + (void *) NoOpGetPixelTexGenParameterivSGIS, + (void *) NoOpGetPixelTexGenParameterfvSGIS, + /* GL_SGIS_texture4D */ + (void *) NoOpTexImage4DSGIS, + (void *) NoOpTexSubImage4DSGIS, + /* GL_EXT_texture_object */ + (void *) NoOpAreTexturesResidentEXT, + (void *) NoOpGenTexturesEXT, + (void *) NoOpIsTextureEXT, + /* GL_SGIS_detail_texture */ + (void *) NoOpDetailTexFuncSGIS, + (void *) NoOpGetDetailTexFuncSGIS, + /* GL_SGIS_sharpen_texture */ + (void *) NoOpSharpenTexFuncSGIS, + (void *) NoOpGetSharpenTexFuncSGIS, + /* GL_SGIS_multisample */ + (void *) NoOpSampleMaskSGIS, + (void *) NoOpSamplePatternSGIS, + /* GL_EXT_vertex_array */ + (void *) NoOpColorPointerEXT, + (void *) NoOpEdgeFlagPointerEXT, + (void *) NoOpIndexPointerEXT, + (void *) NoOpNormalPointerEXT, + (void *) NoOpTexCoordPointerEXT, + (void *) NoOpVertexPointerEXT, + /* GL_EXT_blend_minmax */ + /* GL_SGIX_sprite */ + (void *) NoOpSpriteParameterfSGIX, + (void *) NoOpSpriteParameterfvSGIX, + (void *) NoOpSpriteParameteriSGIX, + (void *) NoOpSpriteParameterivSGIX, + /* GL_EXT_point_parameters */ + (void *) NoOpPointParameterfEXT, + (void *) NoOpPointParameterfvEXT, + /* GL_SGIX_instruments */ + (void *) NoOpGetInstrumentsSGIX, + (void *) NoOpInstrumentsBufferSGIX, + (void *) NoOpPollInstrumentsSGIX, + (void *) NoOpReadInstrumentsSGIX, + (void *) NoOpStartInstrumentsSGIX, + (void *) NoOpStopInstrumentsSGIX, + /* GL_SGIX_framezoom */ + (void *) NoOpFrameZoomSGIX, + /* GL_SGIX_tag_sample_buffer */ + (void *) NoOpTagSampleBufferSGIX, + /* GL_SGIX_reference_plane */ + (void *) NoOpReferencePlaneSGIX, + /* GL_SGIX_flush_raster */ + (void *) NoOpFlushRasterSGIX, + /* GL_SGIX_list_priority */ + (void *) NoOpGetListParameterfvSGIX, + (void *) NoOpGetListParameterivSGIX, + (void *) NoOpListParameterfSGIX, + (void *) NoOpListParameterfvSGIX, + (void *) NoOpListParameteriSGIX, + (void *) NoOpListParameterivSGIX, + /* GL_SGIX_fragment_lighting */ + (void *) NoOpFragmentColorMaterialSGIX, + (void *) NoOpFragmentLightfSGIX, + (void *) NoOpFragmentLightfvSGIX, + (void *) NoOpFragmentLightiSGIX, + (void *) NoOpFragmentLightivSGIX, + (void *) NoOpFragmentLightModelfSGIX, + (void *) NoOpFragmentLightModelfvSGIX, + (void *) NoOpFragmentLightModeliSGIX, + (void *) NoOpFragmentLightModelivSGIX, + (void *) NoOpFragmentMaterialfSGIX, + (void *) NoOpFragmentMaterialfvSGIX, + (void *) NoOpFragmentMaterialiSGIX, + (void *) NoOpFragmentMaterialivSGIX, + (void *) NoOpGetFragmentLightfvSGIX, + (void *) NoOpGetFragmentLightivSGIX, + (void *) NoOpGetFragmentMaterialfvSGIX, + (void *) NoOpGetFragmentMaterialivSGIX, + (void *) NoOpLightEnviSGIX, + /* GL_EXT_vertex_weighting */ + (void *) NoOpVertexWeightfEXT, + (void *) NoOpVertexWeightfvEXT, + (void *) NoOpVertexWeightPointerEXT, + /* GL_NV_vertex_array_range */ + (void *) NoOpFlushVertexArrayRangeNV, + (void *) NoOpVertexArrayRangeNV, + /* GL_NV_register_combiners */ + (void *) NoOpCombinerParameterfvNV, + (void *) NoOpCombinerParameterfNV, + (void *) NoOpCombinerParameterivNV, + (void *) NoOpCombinerParameteriNV, + (void *) NoOpCombinerInputNV, + (void *) NoOpCombinerOutputNV, + (void *) NoOpFinalCombinerInputNV, + (void *) NoOpGetCombinerInputParameterfvNV, + (void *) NoOpGetCombinerInputParameterivNV, + (void *) NoOpGetCombinerOutputParameterfvNV, + (void *) NoOpGetCombinerOutputParameterivNV, + (void *) NoOpGetFinalCombinerInputParameterfvNV, + (void *) NoOpGetFinalCombinerInputParameterivNV, + /* GL_MESA_resize_buffers */ + (void *) NoOpResizeBuffersMESA, + /* GL_MESA_window_pos */ + (void *) NoOpWindowPos2dMESA, + (void *) NoOpWindowPos2dvMESA, + (void *) NoOpWindowPos2fMESA, + (void *) NoOpWindowPos2fvMESA, + (void *) NoOpWindowPos2iMESA, + (void *) NoOpWindowPos2ivMESA, + (void *) NoOpWindowPos2sMESA, + (void *) NoOpWindowPos2svMESA, + (void *) NoOpWindowPos3dMESA, + (void *) NoOpWindowPos3dvMESA, + (void *) NoOpWindowPos3fMESA, + (void *) NoOpWindowPos3fvMESA, + (void *) NoOpWindowPos3iMESA, + (void *) NoOpWindowPos3ivMESA, + (void *) NoOpWindowPos3sMESA, + (void *) NoOpWindowPos3svMESA, + (void *) NoOpWindowPos4dMESA, + (void *) NoOpWindowPos4dvMESA, + (void *) NoOpWindowPos4fMESA, + (void *) NoOpWindowPos4fvMESA, + (void *) NoOpWindowPos4iMESA, + (void *) NoOpWindowPos4ivMESA, + (void *) NoOpWindowPos4sMESA, + (void *) NoOpWindowPos4svMESA, + /* GL_EXT_draw_range_elements */ + (void *) NoOpBlendFuncSeparateEXT, + /* GL_EXT_index_material */ + (void *) NoOpIndexMaterialEXT, + /* GL_EXT_index_func */ + (void *) NoOpIndexFuncEXT, + /* GL_EXT_compiled_vertex_array */ + (void *) NoOpLockArraysEXT, + (void *) NoOpUnlockArraysEXT, + /* GL_EXT_cull_vertex */ + (void *) NoOpCullParameterdvEXT, + (void *) NoOpCullParameterfvEXT, + /* GL_PGI_misc_hints */ + (void *) NoOpHintPGI, + /* GL_EXT_fog_coord */ + (void *) NoOpFogCoordfEXT, + (void *) NoOpFogCoordfvEXT, + (void *) NoOpFogCoorddEXT, + (void *) NoOpFogCoorddEXT, + (void *) NoOpFogCoordPointerEXT, + /* GL_EXT_color_table */ + (void *) NoOpGetColorTableEXT, + (void *) NoOpGetColorTableParameterivEXT, + (void *) NoOpGetColorTableParameterfvEXT, + + /* A whole bunch of no-op functions. These might be called + * when someone tries to call a dynamically-registered extension + * function without a current rendering context. + */ + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric, + (void *) NoOpGeneric }; - Index: xc/extras/Mesa/src/glapinoop.h diff -u xc/extras/Mesa/src/glapinoop.h:1.2 xc/extras/Mesa/src/glapinoop.h:1.3 --- xc/extras/Mesa/src/glapinoop.h:1.2 Wed Mar 8 16:39:50 2000 +++ xc/extras/Mesa/src/glapinoop.h Wed Mar 8 16:39:50 2000 @@ -34,7 +34,7 @@ _glapi_noop_enable_warnings(GLboolean enable); -extern struct _glapi_table __glapi_noop_table; +extern void *__glapi_noop_table[]; #endif Index: xc/extras/Mesa/src/glapioffsets.h diff -u xc/extras/Mesa/src/glapioffsets.h:1.2 xc/extras/Mesa/src/glapioffsets.h:1.3 --- xc/extras/Mesa/src/glapioffsets.h:1.2 Wed Mar 8 16:39:50 2000 +++ xc/extras/Mesa/src/glapioffsets.h Wed Mar 8 16:39:50 2000 @@ -1,823 +1,559 @@ - -/* - * Mesa 3-D graphics library - * Version: 3.3 - * - * Copyright (C) 1999 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - -/* - * This file defines a static offset for all GL functions within the - * dispatch table. - * - * Eventually a replacement for this file will be available from SGI - * or the ARB so all vendors have the same info. - * - * XXX this file is incomplete - many more extension functions left to add - */ - - - -#ifndef _glextfunc_h_ -#define _glextfunc_h_ - -#define _BASE 0 - - -/* GL 1.1 */ -#define _gloffset_Accum (_BASE + 1) -#define _gloffset_AlphaFunc (_BASE + 2) -#define _gloffset_Begin (_BASE + 3) -#define _gloffset_Bitmap (_BASE + 4) -#define _gloffset_BlendFunc (_BASE + 5) -#define _gloffset_CallList (_BASE + 6) -#define _gloffset_CallLists (_BASE + 7) -#define _gloffset_Clear (_BASE + 8) -#define _gloffset_ClearAccum (_BASE + 9) -#define _gloffset_ClearColor (_BASE + 10) -#define _gloffset_ClearDepth (_BASE + 11) -#define _gloffset_ClearIndex (_BASE + 12) -#define _gloffset_ClearStencil (_BASE + 13) -#define _gloffset_ClipPlane (_BASE + 14) -#define _gloffset_Color3b (_BASE + 15) -#define _gloffset_Color3bv (_BASE + 16) -#define _gloffset_Color3d (_BASE + 17) -#define _gloffset_Color3dv (_BASE + 18) -#define _gloffset_Color3f (_BASE + 19) -#define _gloffset_Color3fv (_BASE + 20) -#define _gloffset_Color3i (_BASE + 21) -#define _gloffset_Color3iv (_BASE + 22) -#define _gloffset_Color3s (_BASE + 23) -#define _gloffset_Color3sv (_BASE + 24) -#define _gloffset_Color3ub (_BASE + 25) -#define _gloffset_Color3ubv (_BASE + 26) -#define _gloffset_Color3ui (_BASE + 27) -#define _gloffset_Color3uiv (_BASE + 28) -#define _gloffset_Color3us (_BASE + 29) -#define _gloffset_Color3usv (_BASE + 30) -#define _gloffset_Color4b (_BASE + 31) -#define _gloffset_Color4bv (_BASE + 32) -#define _gloffset_Color4d (_BASE + 33) -#define _gloffset_Color4dv (_BASE + 34) -#define _gloffset_Color4f (_BASE + 35) -#define _gloffset_Color4fv (_BASE + 36) -#define _gloffset_Color4i (_BASE + 37) -#define _gloffset_Color4iv (_BASE + 38) -#define _gloffset_Color4s (_BASE + 39) -#define _gloffset_Color4sv (_BASE + 40) -#define _gloffset_Color4ub (_BASE + 41) -#define _gloffset_Color4ubv (_BASE + 42) -#define _gloffset_Color4ui (_BASE + 43) -#define _gloffset_Color4uiv (_BASE + 44) -#define _gloffset_Color4us (_BASE + 45) -#define _gloffset_Color4usv (_BASE + 46) -#define _gloffset_ColorMask (_BASE + 47) -#define _gloffset_ColorMaterial (_BASE + 48) -#define _gloffset_CopyPixels (_BASE + 49) -#define _gloffset_CullFace (_BASE + 50) -#define _gloffset_DeleteLists (_BASE + 51) -#define _gloffset_DepthFunc (_BASE + 52) -#define _gloffset_DepthMask (_BASE + 53) -#define _gloffset_DepthRange (_BASE + 54) -#define _gloffset_Disable (_BASE + 55) -#define _gloffset_DrawBuffer (_BASE + 56) -#define _gloffset_DrawPixels (_BASE + 57) -#define _gloffset_EdgeFlag (_BASE + 58) -#define _gloffset_EdgeFlagv (_BASE + 59) -#define _gloffset_Enable (_BASE + 60) -#define _gloffset_End (_BASE + 61) -#define _gloffset_EndList (_BASE + 62) -#define _gloffset_EvalCoord1d (_BASE + 63) -#define _gloffset_EvalCoord1dv (_BASE + 64) -#define _gloffset_EvalCoord1f (_BASE + 65) -#define _gloffset_EvalCoord1fv (_BASE + 66) -#define _gloffset_EvalCoord2d (_BASE + 67) -#define _gloffset_EvalCoord2dv (_BASE + 68) -#define _gloffset_EvalCoord2f (_BASE + 69) -#define _gloffset_EvalCoord2fv (_BASE + 70) -#define _gloffset_EvalMesh1 (_BASE + 71) -#define _gloffset_EvalMesh2 (_BASE + 72) -#define _gloffset_EvalPoint1 (_BASE + 73) -#define _gloffset_EvalPoint2 (_BASE + 74) -#define _gloffset_FeedbackBuffer (_BASE + 75) -#define _gloffset_Finish (_BASE + 76) -#define _gloffset_Flush (_BASE + 77) -#define _gloffset_Fogf (_BASE + 78) -#define _gloffset_Fogfv (_BASE + 79) -#define _gloffset_Fogi (_BASE + 80) -#define _gloffset_Fogiv (_BASE + 81) -#define _gloffset_FrontFace (_BASE + 82) -#define _gloffset_Frustum (_BASE + 83) -#define _gloffset_GenLists (_BASE + 84) -#define _gloffset_GetBooleanv (_BASE + 85) -#define _gloffset_GetClipPlane (_BASE + 86) -#define _gloffset_GetDoublev (_BASE + 87) -#define _gloffset_GetError (_BASE + 88) -#define _gloffset_GetFloatv (_BASE + 89) -#define _gloffset_GetIntegerv (_BASE + 90) -#define _gloffset_GetLightfv (_BASE + 91) -#define _gloffset_GetLightiv (_BASE + 92) -#define _gloffset_GetMapdv (_BASE + 93) -#define _gloffset_GetMapfv (_BASE + 94) -#define _gloffset_GetMapiv (_BASE + 95) -#define _gloffset_GetMaterialfv (_BASE + 96) -#define _gloffset_GetMaterialiv (_BASE + 97) -#define _gloffset_GetPixelMapfv (_BASE + 98) -#define _gloffset_GetPixelMapuiv (_BASE + 99) -#define _gloffset_GetPixelMapusv (_BASE + 100) -#define _gloffset_GetPolygonStipple (_BASE + 101) -#define _gloffset_GetString (_BASE + 102) -#define _gloffset_GetTexEnvfv (_BASE + 103) -#define _gloffset_GetTexEnviv (_BASE + 104) -#define _gloffset_GetTexGendv (_BASE + 105) -#define _gloffset_GetTexGenfv (_BASE + 106) -#define _gloffset_GetTexGeniv (_BASE + 107) -#define _gloffset_GetTexImage (_BASE + 108) -#define _gloffset_GetTexLevelParameterfv (_BASE + 109) -#define _gloffset_GetTexLevelParameteriv (_BASE + 110) -#define _gloffset_GetTexParameterfv (_BASE + 111) -#define _gloffset_GetTexParameteriv (_BASE + 112) -#define _gloffset_Hint (_BASE + 113) -#define _gloffset_IndexMask (_BASE + 114) -#define _gloffset_Indexd (_BASE + 115) -#define _gloffset_Indexdv (_BASE + 116) -#define _gloffset_Indexf (_BASE + 117) -#define _gloffset_Indexfv (_BASE + 118) -#define _gloffset_Indexi (_BASE + 119) -#define _gloffset_Indexiv (_BASE + 120) -#define _gloffset_Indexs (_BASE + 121) -#define _gloffset_Indexsv (_BASE + 122) -#define _gloffset_InitNames (_BASE + 123) -#define _gloffset_IsEnabled (_BASE + 124) -#define _gloffset_IsList (_BASE + 125) -#define _gloffset_LightModelf (_BASE + 126) -#define _gloffset_LightModelfv (_BASE + 127) -#define _gloffset_LightModeli (_BASE + 128) -#define _gloffset_LightModeliv (_BASE + 129) -#define _gloffset_Lightf (_BASE + 130) -#define _gloffset_Lightfv (_BASE + 131) -#define _gloffset_Lighti (_BASE + 132) -#define _gloffset_Lightiv (_BASE + 133) -#define _gloffset_LineStipple (_BASE + 134) -#define _gloffset_LineWidth (_BASE + 135) -#define _gloffset_ListBase (_BASE + 136) -#define _gloffset_LoadIdentity (_BASE + 137) -#define _gloffset_LoadMatrixd (_BASE + 138) -#define _gloffset_LoadMatrixf (_BASE + 139) -#define _gloffset_LoadName (_BASE + 140) -#define _gloffset_LogicOp (_BASE + 141) -#define _gloffset_Map1d (_BASE + 142) -#define _gloffset_Map1f (_BASE + 143) -#define _gloffset_Map2d (_BASE + 144) -#define _gloffset_Map2f (_BASE + 145) -#define _gloffset_MapGrid1d (_BASE + 146) -#define _gloffset_MapGrid1f (_BASE + 147) -#define _gloffset_MapGrid2d (_BASE + 148) -#define _gloffset_MapGrid2f (_BASE + 149) -#define _gloffset_Materialf (_BASE + 150) -#define _gloffset_Materialfv (_BASE + 151) -#define _gloffset_Materiali (_BASE + 152) -#define _gloffset_Materialiv (_BASE + 153) -#define _gloffset_MatrixMode (_BASE + 154) -#define _gloffset_MultMatrixd (_BASE + 155) -#define _gloffset_MultMatrixf (_BASE + 156) -#define _gloffset_NewList (_BASE + 157) -#define _gloffset_Normal3b (_BASE + 158) -#define _gloffset_Normal3bv (_BASE + 159) -#define _gloffset_Normal3d (_BASE + 160) -#define _gloffset_Normal3dv (_BASE + 161) -#define _gloffset_Normal3f (_BASE + 162) -#define _gloffset_Normal3fv (_BASE + 163) -#define _gloffset_Normal3i (_BASE + 164) -#define _gloffset_Normal3iv (_BASE + 165) -#define _gloffset_Normal3s (_BASE + 166) -#define _gloffset_Normal3sv (_BASE + 167) -#define _gloffset_Ortho (_BASE + 168) -#define _gloffset_PassThrough (_BASE + 169) -#define _gloffset_PixelMapfv (_BASE + 170) -#define _gloffset_PixelMapuiv (_BASE + 171) -#define _gloffset_PixelMapusv (_BASE + 172) -#define _gloffset_PixelStoref (_BASE + 173) -#define _gloffset_PixelStorei (_BASE + 174) -#define _gloffset_PixelTransferf (_BASE + 175) -#define _gloffset_PixelTransferi (_BASE + 176) -#define _gloffset_PixelZoom (_BASE + 177) -#define _gloffset_PointSize (_BASE + 178) -#define _gloffset_PolygonMode (_BASE + 179) -#define _gloffset_PolygonOffset (_BASE + 180) -#define _gloffset_PolygonStipple (_BASE + 181) -#define _gloffset_PopAttrib (_BASE + 182) -#define _gloffset_PopMatrix (_BASE + 183) -#define _gloffset_PopName (_BASE + 184) -#define _gloffset_PushAttrib (_BASE + 185) -#define _gloffset_PushMatrix (_BASE + 186) -#define _gloffset_PushName (_BASE + 187) -#define _gloffset_RasterPos2d (_BASE + 188) -#define _gloffset_RasterPos2dv (_BASE + 189) -#define _gloffset_RasterPos2f (_BASE + 190) -#define _gloffset_RasterPos2fv (_BASE + 191) -#define _gloffset_RasterPos2i (_BASE + 192) -#define _gloffset_RasterPos2iv (_BASE + 193) -#define _gloffset_RasterPos2s (_BASE + 194) -#define _gloffset_RasterPos2sv (_BASE + 195) -#define _gloffset_RasterPos3d (_BASE + 196) -#define _gloffset_RasterPos3dv (_BASE + 197) -#define _gloffset_RasterPos3f (_BASE + 198) -#define _gloffset_RasterPos3fv (_BASE + 199) -#define _gloffset_RasterPos3i (_BASE + 200) -#define _gloffset_RasterPos3iv (_BASE + 201) -#define _gloffset_RasterPos3s (_BASE + 202) -#define _gloffset_RasterPos3sv (_BASE + 203) -#define _gloffset_RasterPos4d (_BASE + 204) -#define _gloffset_RasterPos4dv (_BASE + 205) -#define _gloffset_RasterPos4f (_BASE + 206) -#define _gloffset_RasterPos4fv (_BASE + 207) -#define _gloffset_RasterPos4i (_BASE + 208) -#define _gloffset_RasterPos4iv (_BASE + 209) -#define _gloffset_RasterPos4s (_BASE + 210) -#define _gloffset_RasterPos4sv (_BASE + 211) -#define _gloffset_ReadBuffer (_BASE + 212) -#define _gloffset_ReadPixels (_BASE + 213) -#define _gloffset_Rectd (_BASE + 214) -#define _gloffset_Rectdv (_BASE + 215) -#define _gloffset_Rectf (_BASE + 216) -#define _gloffset_Rectfv (_BASE + 217) -#define _gloffset_Recti (_BASE + 218) -#define _gloffset_Rectiv (_BASE + 219) -#define _gloffset_Rects (_BASE + 220) -#define _gloffset_Rectsv (_BASE + 221) -#define _gloffset_RenderMode (_BASE + 222) -#define _gloffset_Rotated (_BASE + 223) -#define _gloffset_Rotatef (_BASE + 224) -#define _gloffset_Scaled (_BASE + 225) -#define _gloffset_Scalef (_BASE + 226) -#define _gloffset_Scissor (_BASE + 227) -#define _gloffset_SelectBuffer (_BASE + 228) -#define _gloffset_ShadeModel (_BASE + 229) -#define _gloffset_StencilFunc (_BASE + 230) -#define _gloffset_StencilMask (_BASE + 231) -#define _gloffset_StencilOp (_BASE + 232) -#define _gloffset_TexCoord1d (_BASE + 233) -#define _gloffset_TexCoord1dv (_BASE + 234) -#define _gloffset_TexCoord1f (_BASE + 235) -#define _gloffset_TexCoord1fv (_BASE + 236) -#define _gloffset_TexCoord1i (_BASE + 237) -#define _gloffset_TexCoord1iv (_BASE + 238) -#define _gloffset_TexCoord1s (_BASE + 239) -#define _gloffset_TexCoord1sv (_BASE + 240) -#define _gloffset_TexCoord2d (_BASE + 241) -#define _gloffset_TexCoord2dv (_BASE + 242) -#define _gloffset_TexCoord2f (_BASE + 243) -#define _gloffset_TexCoord2fv (_BASE + 244) -#define _gloffset_TexCoord2i (_BASE + 245) -#define _gloffset_TexCoord2iv (_BASE + 246) -#define _gloffset_TexCoord2s (_BASE + 247) -#define _gloffset_TexCoord2sv (_BASE + 248) -#define _gloffset_TexCoord3d (_BASE + 249) -#define _gloffset_TexCoord3dv (_BASE + 250) -#define _gloffset_TexCoord3f (_BASE + 251) -#define _gloffset_TexCoord3fv (_BASE + 252) -#define _gloffset_TexCoord3i (_BASE + 253) -#define _gloffset_TexCoord3iv (_BASE + 254) -#define _gloffset_TexCoord3s (_BASE + 255) -#define _gloffset_TexCoord3sv (_BASE + 256) -#define _gloffset_TexCoord4d (_BASE + 257) -#define _gloffset_TexCoord4dv (_BASE + 258) -#define _gloffset_TexCoord4f (_BASE + 259) -#define _gloffset_TexCoord4fv (_BASE + 260) -#define _gloffset_TexCoord4i (_BASE + 261) -#define _gloffset_TexCoord4iv (_BASE + 262) -#define _gloffset_TexCoord4s (_BASE + 263) -#define _gloffset_TexCoord4sv (_BASE + 264) -#define _gloffset_TexEnvf (_BASE + 265) -#define _gloffset_TexEnvfv (_BASE + 266) -#define _gloffset_TexEnvi (_BASE + 267) -#define _gloffset_TexEnviv (_BASE + 268) -#define _gloffset_TexGend (_BASE + 269) -#define _gloffset_TexGendv (_BASE + 270) -#define _gloffset_TexGenf (_BASE + 271) -#define _gloffset_TexGenfv (_BASE + 272) -#define _gloffset_TexGeni (_BASE + 273) -#define _gloffset_TexGeniv (_BASE + 274) -#define _gloffset_TexImage1D (_BASE + 275) -#define _gloffset_TexImage2D (_BASE + 276) -#define _gloffset_TexParameterf (_BASE + 277) -#define _gloffset_TexParameterfv (_BASE + 278) -#define _gloffset_TexParameteri (_BASE + 279) -#define _gloffset_TexParameteriv (_BASE + 280) -#define _gloffset_Translated (_BASE + 281) -#define _gloffset_Translatef (_BASE + 282) -#define _gloffset_Vertex2d (_BASE + 283) -#define _gloffset_Vertex2dv (_BASE + 284) -#define _gloffset_Vertex2f (_BASE + 285) -#define _gloffset_Vertex2fv (_BASE + 286) -#define _gloffset_Vertex2i (_BASE + 287) -#define _gloffset_Vertex2iv (_BASE + 288) -#define _gloffset_Vertex2s (_BASE + 289) -#define _gloffset_Vertex2sv (_BASE + 290) -#define _gloffset_Vertex3d (_BASE + 291) -#define _gloffset_Vertex3dv (_BASE + 292) -#define _gloffset_Vertex3f (_BASE + 293) -#define _gloffset_Vertex3fv (_BASE + 294) -#define _gloffset_Vertex3i (_BASE + 295) -#define _gloffset_Vertex3iv (_BASE + 296) -#define _gloffset_Vertex3s (_BASE + 297) -#define _gloffset_Vertex3sv (_BASE + 298) -#define _gloffset_Vertex4d (_BASE + 299) -#define _gloffset_Vertex4dv (_BASE + 300) -#define _gloffset_Vertex4f (_BASE + 301) -#define _gloffset_Vertex4fv (_BASE + 302) -#define _gloffset_Vertex4i (_BASE + 303) -#define _gloffset_Vertex4iv (_BASE + 304) -#define _gloffset_Vertex4s (_BASE + 305) -#define _gloffset_Vertex4sv (_BASE + 306) -#define _gloffset_Viewport (_BASE + 307) - -/* GL 1.1 */ -#define _gloffset_AreTexturesResident (_BASE + 308) -#define _gloffset_ArrayElement (_BASE + 309) -#define _gloffset_BindTexture (_BASE + 310) -#define _gloffset_ColorPointer (_BASE + 311) -#define _gloffset_CopyTexImage1D (_BASE + 312) -#define _gloffset_CopyTexImage2D (_BASE + 313) -#define _gloffset_CopyTexSubImage1D (_BASE + 314) -#define _gloffset_CopyTexSubImage2D (_BASE + 315) -#define _gloffset_DeleteTextures (_BASE + 316) -#define _gloffset_DisableClientState (_BASE + 317) -#define _gloffset_DrawArrays (_BASE + 318) -#define _gloffset_DrawElements (_BASE + 319) -#define _gloffset_EdgeFlagPointer (_BASE + 320) -#define _gloffset_EnableClientState (_BASE + 321) -#define _gloffset_GenTextures (_BASE + 322) -#define _gloffset_GetPointerv (_BASE + 323) -#define _gloffset_IndexPointer (_BASE + 324) -#define _gloffset_Indexub (_BASE + 325) -#define _gloffset_Indexubv (_BASE + 326) -#define _gloffset_InterleavedArrays (_BASE + 327) -#define _gloffset_IsTexture (_BASE + 328) -#define _gloffset_NormalPointer (_BASE + 329) -#define _gloffset_PopClientAttrib (_BASE + 330) -#define _gloffset_PrioritizeTextures (_BASE + 331) -#define _gloffset_PushClientAttrib (_BASE + 332) -#define _gloffset_TexCoordPointer (_BASE + 333) -#define _gloffset_TexSubImage1D (_BASE + 334) -#define _gloffset_TexSubImage2D (_BASE + 335) -#define _gloffset_VertexPointer (_BASE + 336) - -/* GL 1.2 */ -#define _gloffset_CopyTexSubImage3D (_BASE + 337) -#define _gloffset_DrawRangeElements (_BASE + 338) -#define _gloffset_TexImage3D (_BASE + 339) -#define _gloffset_TexSubImage3D (_BASE + 340) - -/* GL_ARB_imaging */ -#define _gloffset_BlendColor (_BASE + 341) -#define _gloffset_BlendEquation (_BASE + 342) -#define _gloffset_ColorSubTable (_BASE + 343) -#define _gloffset_ColorTable (_BASE + 344) -#define _gloffset_ColorTableParameterfv (_BASE + 345) -#define _gloffset_ColorTableParameteriv (_BASE + 346) -#define _gloffset_ConvolutionFilter1D (_BASE + 347) -#define _gloffset_ConvolutionFilter2D (_BASE + 348) -#define _gloffset_ConvolutionParameterf (_BASE + 349) -#define _gloffset_ConvolutionParameterfv (_BASE + 350) -#define _gloffset_ConvolutionParameteri (_BASE + 351) -#define _gloffset_ConvolutionParameteriv (_BASE + 352) -#define _gloffset_CopyColorSubTable (_BASE + 353) -#define _gloffset_CopyColorTable (_BASE + 354) -#define _gloffset_CopyConvolutionFilter1D (_BASE + 355) -#define _gloffset_CopyConvolutionFilter2D (_BASE + 356) -#define _gloffset_GetColorTable (_BASE + 357) -#define _gloffset_GetColorTableParameterfv (_BASE + 358) -#define _gloffset_GetColorTableParameteriv (_BASE + 359) -#define _gloffset_GetConvolutionFilter (_BASE + 360) -#define _gloffset_GetConvolutionParameterfv (_BASE + 361) -#define _gloffset_GetConvolutionParameteriv (_BASE + 362) -#define _gloffset_GetHistogram (_BASE + 363) -#define _gloffset_GetHistogramParameterfv (_BASE + 364) -#define _gloffset_GetHistogramParameteriv (_BASE + 365) -#define _gloffset_GetMinmax (_BASE + 366) -#define _gloffset_GetMinmaxParameterfv (_BASE + 367) -#define _gloffset_GetMinmaxParameteriv (_BASE + 368) -#define _gloffset_GetSeparableFilter (_BASE + 369) -#define _gloffset_Histogram (_BASE + 370) -#define _gloffset_Minmax (_BASE + 371) -#define _gloffset_ResetHistogram (_BASE + 372) -#define _gloffset_ResetMinmax (_BASE + 373) -#define _gloffset_SeparableFilter2D (_BASE + 374) - -/* GL_ARB_multitexture */ -#define _gloffset_ActiveTextureARB (_BASE + 375) -#define _gloffset_ClientActiveTextureARB (_BASE + 376) -#define _gloffset_MultiTexCoord1dARB (_BASE + 377) -#define _gloffset_MultiTexCoord1dvARB (_BASE + 378) -#define _gloffset_MultiTexCoord1fARB (_BASE + 379) -#define _gloffset_MultiTexCoord1fvARB (_BASE + 380) -#define _gloffset_MultiTexCoord1iARB (_BASE + 381) -#define _gloffset_MultiTexCoord1ivARB (_BASE + 382) -#define _gloffset_MultiTexCoord1sARB (_BASE + 383) -#define _gloffset_MultiTexCoord1svARB (_BASE + 384) -#define _gloffset_MultiTexCoord2dARB (_BASE + 385) -#define _gloffset_MultiTexCoord2dvARB (_BASE + 386) -#define _gloffset_MultiTexCoord2fARB (_BASE + 387) -#define _gloffset_MultiTexCoord2fvARB (_BASE + 388) -#define _gloffset_MultiTexCoord2iARB (_BASE + 389) -#define _gloffset_MultiTexCoord2ivARB (_BASE + 390) -#define _gloffset_MultiTexCoord2sARB (_BASE + 391) -#define _gloffset_MultiTexCoord2svARB (_BASE + 392) -#define _gloffset_MultiTexCoord3dARB (_BASE + 393) -#define _gloffset_MultiTexCoord3dvARB (_BASE + 394) -#define _gloffset_MultiTexCoord3fARB (_BASE + 395) -#define _gloffset_MultiTexCoord3fvARB (_BASE + 396) -#define _gloffset_MultiTexCoord3iARB (_BASE + 397) -#define _gloffset_MultiTexCoord3ivARB (_BASE + 398) -#define _gloffset_MultiTexCoord3sARB (_BASE + 399) -#define _gloffset_MultiTexCoord3svARB (_BASE + 400) -#define _gloffset_MultiTexCoord4dARB (_BASE + 401) -#define _gloffset_MultiTexCoord4dvARB (_BASE + 402) -#define _gloffset_MultiTexCoord4fARB (_BASE + 403) -#define _gloffset_MultiTexCoord4fvARB (_BASE + 404) -#define _gloffset_MultiTexCoord4iARB (_BASE + 405) -#define _gloffset_MultiTexCoord4ivARB (_BASE + 406) -#define _gloffset_MultiTexCoord4sARB (_BASE + 407) -#define _gloffset_MultiTexCoord4svARB (_BASE + 408) - - - -#define _EXTBASE (_BASE + 409) - - -/* 1. GL_EXT_abgr - no functions */ - -/* 2. GL_EXT_blend_color */ -#define _gloffset_BlendColorEXT (_EXTBASE + 0) - -/* 3. GL_EXT_polygon_offset */ -#define _gloffset_PolygonOffsetEXT (_EXTBASE + 1) - -/* 4. GL_EXT_texture - no functions */ - -/* 5. ??? */ - -/* 6. GL_EXT_texture3D */ -#define _gloffset_CopyTexSubImage3DEXT (_EXTBASE + 2) -#define _gloffset_TexImage3DEXT (_EXTBASE + 3) -#define _gloffset_TexSubImage3DEXT (_EXTBASE + 4) - -/* 7. GL_SGI_texture_filter4 */ -#define _gloffset_GetTexFilterFuncSGIS (_EXTBASE + 5) -#define _gloffset_TexFilterFuncSGIS (_EXTBASE + 6) - -/* 8. ??? */ - -/* 9. GL_EXT_subtexture */ -#define _gloffset_TexSubImage1DEXT (_EXTBASE + 7) -#define _gloffset_TexSubImage2DEXT (_EXTBASE + 8) -/*#define _gloffset_TexSubImage3DEXT*/ - -/* 10. GL_EXT_copy_texture */ -#define _gloffset_CopyTexImage1DEXT (_EXTBASE + 9) -#define _gloffset_CopyTexImage2DEXT (_EXTBASE + 10) -#define _gloffset_CopyTexSubImage1DEXT (_EXTBASE + 11) -#define _gloffset_CopyTexSubImage2DEXT (_EXTBASE + 12) -/*#define _gloffset_CopyTexSubImage3DEXT*/ - -/* 11. GL_EXT_histogram */ -#define _gloffset_GetHistogramEXT (_EXTBASE + 13) -#define _gloffset_GetHistogramParameterfvEXT (_EXTBASE + 15) -#define _gloffset_GetHistogramParameterivEXT (_EXTBASE + 14) -#define _gloffset_GetMinmaxEXT (_EXTBASE + 16) -#define _gloffset_GetMinmaxParameterfvEXT (_EXTBASE + 18) -#define _gloffset_GetMinmaxParameterivEXT (_EXTBASE + 17) -#define _gloffset_HistogramEXT (_EXTBASE + 19) -#define _gloffset_MinmaxEXT (_EXTBASE + 20) -#define _gloffset_ResetHistogramEXT (_EXTBASE + 21) -#define _gloffset_ResetMinmaxEXT (_EXTBASE + 22) - -/* 12. GL_EXT_convolution */ -#define _gloffset_ConvolutionFilter1DEXT (_EXTBASE + 23) -#define _gloffset_ConvolutionFilter2DEXT (_EXTBASE + 24) -#define _gloffset_ConvolutionParameterfEXT (_EXTBASE + 25) -#define _gloffset_ConvolutionParameterfvEXT (_EXTBASE + 26) -#define _gloffset_ConvolutionParameteriEXT (_EXTBASE + 27) -#define _gloffset_ConvolutionParameterivEXT (_EXTBASE + 28) -#define _gloffset_CopyConvolutionFilter1DEXT (_EXTBASE + 29) -#define _gloffset_CopyConvolutionFilter2DEXT (_EXTBASE + 30) -#define _gloffset_GetConvolutionFilterEXT (_EXTBASE + 31) -#define _gloffset_GetConvolutionParameterivEXT (_EXTBASE + 32) -#define _gloffset_GetConvolutionParameterfvEXT (_EXTBASE + 33) -#define _gloffset_GetSeparableFilterEXT (_EXTBASE + 34) -#define _gloffset_SeparableFilter2DEXT (_EXTBASE + 35) - -/* 13. GL_SGI_color_matrix - no functions */ - -/* 14. GL_SGI_color_table */ -#define _gloffset_ColorTableSGI (_EXTBASE + 36) -#define _gloffset_ColorTableParameterfvSGI (_EXTBASE + 37) -#define _gloffset_ColorTableParameterivSGI (_EXTBASE + 38) -#define _gloffset_CopyColorTableSGI (_EXTBASE + 39) -#define _gloffset_GetColorTableSGI (_EXTBASE + 40) -#define _gloffset_GetColorTableParameterfvSGI (_EXTBASE + 41) -#define _gloffset_GetColorTableParameterivSGI (_EXTBASE + 42) - -/* 15. GL_SGIS_pixel_texture */ -#define _gloffset_PixelTexGenParameterfSGIS (_EXTBASE + 43) -#define _gloffset_PixelTexGenParameteriSGIS (_EXTBASE + 44) -#define _gloffset_GetPixelTexGenParameterfvSGIS (_EXTBASE + 45) -#define _gloffset_GetPixelTexGenParameterivSGIS (_EXTBASE + 46) - -/* 16. GL_SGIS_texture4D */ -#define _gloffset_TexImage4DSGIS (_EXTBASE + 47) -#define _gloffset_TexSubImage4DSGIS (_EXTBASE + 48) - -/* 17. GL_SGI_texture_color_table - no functions */ - -/* 18. GL_EXT_cmyka - no functions */ - -/* 19. ??? */ - -/* 20. GL_EXT_texture_object */ -#define _gloffset_AreTexturesResidentEXT (_EXTBASE + 49) -#define _gloffset_BindTextureEXT (_EXTBASE + 50) -#define _gloffset_DeleteTexturesEXT (_EXTBASE + 51) -#define _gloffset_GenTexturesEXT (_EXTBASE + 52) -#define _gloffset_IsTextureEXT (_EXTBASE + 53) -#define _gloffset_PrioritizeTexturesEXT (_EXTBASE + 54) - -/* 21. GL_SGIS_detail_texture */ -#define _gloffset_DetailTexFuncSGIS (_EXTBASE + 55) -#define _gloffset_GetDetailTexFuncSGIS (_EXTBASE + 56) - -/* 22. GL_SGIS_sharpen_texture */ -#define _gloffset_GetSharpenTexFuncSGIS (_EXTBASE + 57) -#define _gloffset_SharpenTexFuncSGIS (_EXTBASE + 58) - -/* 23. GL_EXT_packed_pixels - no functions */ - -/* 24. GL_SGIS_texture_lod - no functions */ - -/* 25. GL_SGIS_multisample */ -#define _gloffset_SampleMaskSGIS (_EXTBASE + 54) -#define _gloffset_SamplePatternSGIS (_EXTBASE + 55) - -/* 26. ??? */ - -/* 27. GL_EXT_rescale_normal - no functions */ - -/* 28. GLX_EXT_visual_info - no functions */ - -/* 29. ??? */ - -/* 30. GL_EXT_vertex_array */ -#define _gloffset_ArrayElementEXT (_EXTBASE + 56) -#define _gloffset_ColorPointerEXT (_EXTBASE + 57) -#define _gloffset_DrawArraysEXT (_EXTBASE + 58) -#define _gloffset_EdgeFlagPointerEXT (_EXTBASE + 59) -#define _gloffset_GetPointervEXT (_EXTBASE + 60) -#define _gloffset_IndexPointerEXT (_EXTBASE + 61) -#define _gloffset_NormalPointerEXT (_EXTBASE + 62) -#define _gloffset_TexCoordPointerEXT (_EXTBASE + 63) -#define _gloffset_VertexPointerEXT (_EXTBASE + 64) - -/* 31. GL_EXT_misc_attribute - no functions */ - -/* 32. GL_SGIS_generate_mipmap - no functions */ - -/* 33. GL_SGIX_clipmap - no functions */ - -/* 34. GL_SGIX_shadow - no functions */ - -/* 35. GL_SGIS_texture_edge_clamp - no functions */ - -/* 36. GL_SGIS_texture_border_clamp - no functions */ - -/* 37. GL_EXT_blend_minmax */ -#define _gloffset_BlendEquationEXT (_EXTBASE + 65) - -/* 38. GL_EXT_blend_subtract - no functions */ - -/* 39. GL_EXT_blend_logic_op - no functions */ - -/* 40. GLX_SGI_swap_control - GLX functions */ - -/* 41. GLX_SGI_video_sync - GLX functions */ - -/* 42. GLX_SGI_make_current_read - GLX functions */ - -/* 43. GLX_SGIX_video_source - GLX functions */ - -/* 44. GLX_EXT_visual_rating - no functions */ - -/* 45. GL_SGIX_interlace - no functions */ - -/* 46. ??? */ - -/* 47. GLX_EXT_import_context - GLX functions */ - -/* 48. ??? */ - -/* 49. GLX_SGIX_fbconfig - some GLX functions */ - -/* 50. GLX_SGIX_pbuffer - GLX functions */ - -/* 51. GL_SGIS_texture_select - no functions */ - -/* 52. GL_SGIX_sprite */ -#define _gloffset_SpriteParameterfSGIX (_EXTBASE + 66) -#define _gloffset_SpriteParameterfvSGIX (_EXTBASE + 67) -#define _gloffset_SpriteParameteriSGIX (_EXTBASE + 68) -#define _gloffset_SpriteParameterivSGIX (_EXTBASE + 69) - -/* 53. ??? */ - -/* 54. GL_EXT_point_parameters */ -#define _gloffset_PointParameterfEXT (_EXTBASE + 70) -#define _gloffset_PointParameterfvEXT (_EXTBASE + 71) - -/* 55. GL_SGIX_instruments */ -#define _gloffset_InstrumentsBufferSGIX (_EXTBASE + 72) -#define _gloffset_StartInstrumentsSGIX (_EXTBASE + 73) -#define _gloffset_StopInstrumentsSGIX (_EXTBASE + 74) -#define _gloffset_ReadInstrumentsSGIX (_EXTBASE + 75) -#define _gloffset_PollInstrumentsSGIX (_EXTBASE + 76) -#define _gloffset_GetInstrumentsSGIX (_EXTBASE + 77) - -/* 56. GL_SGIX_texture_scale_bias - no functions */ - -/* 57. GL_SGIX_framezoom */ -#define _gloffset_FrameZoomSGIX (_EXTBASE + 78) - -/* 58. GL_SGIX_tag_sample_buffer - no functions */ - -/* 59. ??? */ - -/* 60. GL_SGIX_reference_plane */ -#define _gloffset_ReferencePlaneSGIX (_EXTBASE + 79) - -/* 61. GL_SGIX_flush_raster */ -#define _gloffset_FlushRasterSGIX (_EXTBASE + 80) - -/* 62. GLX_SGI_cushion - GLX functions */ - -/* 63. GL_SGIX_depth_texture - no functions */ - -/* 64. ??? */ - -/* 65. GL_SGIX_fog_offset - no functions */ - -/* 66. GL_HP_image_transform */ -#define _gloffset_GetImageTransformParameterfvHP (_EXTBASE + 81) -#define _gloffset_GetImageTransformParameterivHP (_EXTBASE + 82) -#define _gloffset_ImageTransformParameterfHP (_EXTBASE + 83) -#define _gloffset_ImageTransformParameterfvHP (_EXTBASE + 84) -#define _gloffset_ImageTransformParameteriHP (_EXTBASE + 85) -#define _gloffset_ImageTransformParameterivHP (_EXTBASE + 86) - -/* 67. GL_HP_convolution_border_modes - no functions */ - -/* 68. ??? */ - -/* 69. GL_SGIX_texture_add_env - no functions */ - -/* 70. ??? */ - -/* 71. ??? */ - -/* 72. ??? */ - -/* 73. ??? */ - -/* 74. GL_EXT_color_subtable */ -#define _gloffset_ColorSubTableEXT (_EXTBASE + 87) -#define _gloffset_CopyColorSubTableEXT (_EXTBASE + 88) - -/* 75. GLU_EXT_object_space_tess - GLU functions */ - -/* 76. GL_PGI_vertex_hints - no functions */ - -/* 77. GL_PGI_misc_hints */ -#define _gloffset_HintPGI (_EXTBASE + 89) - -/* 78. GL_EXT_paletted_texture */ -/* ColorSubTableEXT already defined */ -#define _gloffset_ColorTableEXT (_EXTBASE + 91) -#define _gloffset_GetColorTableEXT (_EXTBASE + 92) -#define _gloffset_GetColorTableParameterfvEXT (_EXTBASE + 93) -#define _gloffset_GetColorTableParameterivEXT (_EXTBASE + 94) - -/* 79. GL_EXT_clip_volume_hint - no functions */ - -/* 80. GL_SGIX_list_priority */ -#define _gloffset_GetListParameterfvSGIX (_EXTBASE + 95) -#define _gloffset_GetListParameterivSGIX (_EXTBASE + 96) -#define _gloffset_ListParameterfSGIX (_EXTBASE + 97) -#define _gloffset_ListParameterfvSGIX (_EXTBASE + 98) -#define _gloffset_ListParameteriSGIX (_EXTBASE + 99) -#define _gloffset_ListParameterivSGIX (_EXTBASE + 100) - -/* 81. GL_SGIX_ir_instrument1 - no functions */ - -/* 82. ??? */ - -/* 83. GLX_SGIX_video_resize - GLX functions */ - -/* 84. GL_SGIX_texture_lod_bias - no functions */ - -/* 85. GLU_SGI_filter4_parameters - GLU functions */ - -/* 86. GLX_SGIX_dm_buffer - GLX functions */ - -/* 87. ??? */ - -/* 88. ??? */ - -/* 89. ??? */ - -/* 90. ??? */ - -/* 91. GLX_SGIX_swap_group - GLX functions */ - -/* 92. GLX_SGIX_swap_barrier - GLX functions */ - -/* 93. GL_EXT_index_texture - no functions */ - -/* 94. GL_EXT_index_material */ -#define _gloffset_IndexMaterialEXT (_EXTBASE + 101) - -/* 95. GL_EXT_index_func */ -#define _gloffset_IndexFuncEXT (_EXTBASE + 102) - -/* 96. GL_EXT_index_array_formats - no functions */ - -/* 97. GL_EXT_compiled_vertex_array */ -#define _gloffset_LockArraysEXT (_EXTBASE + 103) -#define _gloffset_UnlockArraysEXT (_EXTBASE + 104) - -/* 98. GL_EXT_cull_vertex */ -#define _gloffset_CullParameterfvEXT (_EXTBASE + 105) -#define _gloffset_CullParameterdvEXT (_EXTBASE + 106) - -/* 99. ??? */ - -/* 100. GLU_EXT_nurbs_tessellator - GLU functions */ - -/* 173. GL_EXT/INGR_blend_func_separate */ -#define _gloffset_BlendFuncSeparateINGR (_EXTBASE + 107) - -/* GL_MESA_window_pos */ -#define _gloffset_WindowPos2dMESA (_EXTBASE + 108) -#define _gloffset_WindowPos2dvMESA (_EXTBASE + 109) -#define _gloffset_WindowPos2fMESA (_EXTBASE + 110) -#define _gloffset_WindowPos2fvMESA (_EXTBASE + 111) -#define _gloffset_WindowPos2iMESA (_EXTBASE + 112) -#define _gloffset_WindowPos2ivMESA (_EXTBASE + 113) -#define _gloffset_WindowPos2sMESA (_EXTBASE + 114) -#define _gloffset_WindowPos2svMESA (_EXTBASE + 115) -#define _gloffset_WindowPos3dMESA (_EXTBASE + 116) -#define _gloffset_WindowPos3dvMESA (_EXTBASE + 117) -#define _gloffset_WindowPos3fMESA (_EXTBASE + 118) -#define _gloffset_WindowPos3fvMESA (_EXTBASE + 119) -#define _gloffset_WindowPos3iMESA (_EXTBASE + 120) -#define _gloffset_WindowPos3ivMESA (_EXTBASE + 121) -#define _gloffset_WindowPos3sMESA (_EXTBASE + 122) -#define _gloffset_WindowPos3svMESA (_EXTBASE + 123) -#define _gloffset_WindowPos4dMESA (_EXTBASE + 124) -#define _gloffset_WindowPos4dvMESA (_EXTBASE + 125) -#define _gloffset_WindowPos4fMESA (_EXTBASE + 126) -#define _gloffset_WindowPos4fvMESA (_EXTBASE + 127) -#define _gloffset_WindowPos4iMESA (_EXTBASE + 128) -#define _gloffset_WindowPos4ivMESA (_EXTBASE + 129) -#define _gloffset_WindowPos4sMESA (_EXTBASE + 130) -#define _gloffset_WindowPos4svMESA (_EXTBASE + 131) - -/* GL_MESA_resize_buffers */ -#define _gloffset_ResizeBuffersMESA (_EXTBASE + 132) - -/* GL_ARB_transpose_matrix */ -#define _gloffset_LoadTransposeMatrixdARB (_EXTBASE + 133) -#define _gloffset_LoadTransposeMatrixfARB (_EXTBASE + 134) -#define _gloffset_MultTransposeMatrixdARB (_EXTBASE + 135) -#define _gloffset_MultTransposeMatrixfARB (_EXTBASE + 136) - - +/* DO NOT EDIT - This file generated automatically */ +#ifndef _GLAPI_OFFSETS_H_ +#define _GLAPI_OFFSETS_H_ + +#define _gloffset_NewList 0 +#define _gloffset_EndList 1 +#define _gloffset_CallList 2 +#define _gloffset_CallLists 3 +#define _gloffset_DeleteLists 4 +#define _gloffset_GenLists 5 +#define _gloffset_ListBase 6 +#define _gloffset_Begin 7 +#define _gloffset_Bitmap 8 +#define _gloffset_Color3b 9 +#define _gloffset_Color3bv 10 +#define _gloffset_Color3d 11 +#define _gloffset_Color3dv 12 +#define _gloffset_Color3f 13 +#define _gloffset_Color3fv 14 +#define _gloffset_Color3i 15 +#define _gloffset_Color3iv 16 +#define _gloffset_Color3s 17 +#define _gloffset_Color3sv 18 +#define _gloffset_Color3ub 19 +#define _gloffset_Color3ubv 20 +#define _gloffset_Color3ui 21 +#define _gloffset_Color3uiv 22 +#define _gloffset_Color3us 23 +#define _gloffset_Color3usv 24 +#define _gloffset_Color4b 25 +#define _gloffset_Color4bv 26 +#define _gloffset_Color4d 27 +#define _gloffset_Color4dv 28 +#define _gloffset_Color4f 29 +#define _gloffset_Color4fv 30 +#define _gloffset_Color4i 31 +#define _gloffset_Color4iv 32 +#define _gloffset_Color4s 33 +#define _gloffset_Color4sv 34 +#define _gloffset_Color4ub 35 +#define _gloffset_Color4ubv 36 +#define _gloffset_Color4ui 37 +#define _gloffset_Color4uiv 38 +#define _gloffset_Color4us 39 +#define _gloffset_Color4usv 40 +#define _gloffset_EdgeFlag 41 +#define _gloffset_EdgeFlagv 42 +#define _gloffset_End 43 +#define _gloffset_Indexd 44 +#define _gloffset_Indexdv 45 +#define _gloffset_Indexf 46 +#define _gloffset_Indexfv 47 +#define _gloffset_Indexi 48 +#define _gloffset_Indexiv 49 +#define _gloffset_Indexs 50 +#define _gloffset_Indexsv 51 +#define _gloffset_Normal3b 52 +#define _gloffset_Normal3bv 53 +#define _gloffset_Normal3d 54 +#define _gloffset_Normal3dv 55 +#define _gloffset_Normal3f 56 +#define _gloffset_Normal3fv 57 +#define _gloffset_Normal3i 58 +#define _gloffset_Normal3iv 59 +#define _gloffset_Normal3s 60 +#define _gloffset_Normal3sv 61 +#define _gloffset_RasterPos2d 62 +#define _gloffset_RasterPos2dv 63 +#define _gloffset_RasterPos2f 64 +#define _gloffset_RasterPos2fv 65 +#define _gloffset_RasterPos2i 66 +#define _gloffset_RasterPos2iv 67 +#define _gloffset_RasterPos2s 68 +#define _gloffset_RasterPos2sv 69 +#define _gloffset_RasterPos3d 70 +#define _gloffset_RasterPos3dv 71 +#define _gloffset_RasterPos3f 72 +#define _gloffset_RasterPos3fv 73 +#define _gloffset_RasterPos3i 74 +#define _gloffset_RasterPos3iv 75 +#define _gloffset_RasterPos3s 76 +#define _gloffset_RasterPos3sv 77 +#define _gloffset_RasterPos4d 78 +#define _gloffset_RasterPos4dv 79 +#define _gloffset_RasterPos4f 80 +#define _gloffset_RasterPos4fv 81 +#define _gloffset_RasterPos4i 82 +#define _gloffset_RasterPos4iv 83 +#define _gloffset_RasterPos4s 84 +#define _gloffset_RasterPos4sv 85 +#define _gloffset_Rectd 86 +#define _gloffset_Rectdv 87 +#define _gloffset_Rectf 88 +#define _gloffset_Rectfv 89 +#define _gloffset_Recti 90 +#define _gloffset_Rectiv 91 +#define _gloffset_Rects 92 +#define _gloffset_Rectsv 93 +#define _gloffset_TexCoord1d 94 +#define _gloffset_TexCoord1dv 95 +#define _gloffset_TexCoord1f 96 +#define _gloffset_TexCoord1fv 97 +#define _gloffset_TexCoord1i 98 +#define _gloffset_TexCoord1iv 99 +#define _gloffset_TexCoord1s 100 +#define _gloffset_TexCoord1sv 101 +#define _gloffset_TexCoord2d 102 +#define _gloffset_TexCoord2dv 103 +#define _gloffset_TexCoord2f 104 +#define _gloffset_TexCoord2fv 105 +#define _gloffset_TexCoord2i 106 +#define _gloffset_TexCoord2iv 107 +#define _gloffset_TexCoord2s 108 +#define _gloffset_TexCoord2sv 109 +#define _gloffset_TexCoord3d 110 +#define _gloffset_TexCoord3dv 111 +#define _gloffset_TexCoord3f 112 +#define _gloffset_TexCoord3fv 113 +#define _gloffset_TexCoord3i 114 +#define _gloffset_TexCoord3iv 115 +#define _gloffset_TexCoord3s 116 +#define _gloffset_TexCoord3sv 117 +#define _gloffset_TexCoord4d 118 +#define _gloffset_TexCoord4dv 119 +#define _gloffset_TexCoord4f 120 +#define _gloffset_TexCoord4fv 121 +#define _gloffset_TexCoord4i 122 +#define _gloffset_TexCoord4iv 123 +#define _gloffset_TexCoord4s 124 +#define _gloffset_TexCoord4sv 125 +#define _gloffset_Vertex2d 126 +#define _gloffset_Vertex2dv 127 +#define _gloffset_Vertex2f 128 +#define _gloffset_Vertex2fv 129 +#define _gloffset_Vertex2i 130 +#define _gloffset_Vertex2iv 131 +#define _gloffset_Vertex2s 132 +#define _gloffset_Vertex2sv 133 +#define _gloffset_Vertex3d 134 +#define _gloffset_Vertex3dv 135 +#define _gloffset_Vertex3f 136 +#define _gloffset_Vertex3fv 137 +#define _gloffset_Vertex3i 138 +#define _gloffset_Vertex3iv 139 +#define _gloffset_Vertex3s 140 +#define _gloffset_Vertex3sv 141 +#define _gloffset_Vertex4d 142 +#define _gloffset_Vertex4dv 143 +#define _gloffset_Vertex4f 144 +#define _gloffset_Vertex4fv 145 +#define _gloffset_Vertex4i 146 +#define _gloffset_Vertex4iv 147 +#define _gloffset_Vertex4s 148 +#define _gloffset_Vertex4sv 149 +#define _gloffset_ClipPlane 150 +#define _gloffset_ColorMaterial 151 +#define _gloffset_CullFace 152 +#define _gloffset_Fogf 153 +#define _gloffset_Fogfv 154 +#define _gloffset_Fogi 155 +#define _gloffset_Fogiv 156 +#define _gloffset_FrontFace 157 +#define _gloffset_Hint 158 +#define _gloffset_Lightf 159 +#define _gloffset_Lightfv 160 +#define _gloffset_Lighti 161 +#define _gloffset_Lightiv 162 +#define _gloffset_LightModelf 163 +#define _gloffset_LightModelfv 164 +#define _gloffset_LightModeli 165 +#define _gloffset_LightModeliv 166 +#define _gloffset_LineStipple 167 +#define _gloffset_LineWidth 168 +#define _gloffset_Materialf 169 +#define _gloffset_Materialfv 170 +#define _gloffset_Materiali 171 +#define _gloffset_Materialiv 172 +#define _gloffset_PointSize 173 +#define _gloffset_PolygonMode 174 +#define _gloffset_PolygonStipple 175 +#define _gloffset_Scissor 176 +#define _gloffset_ShadeModel 177 +#define _gloffset_TexParameterf 178 +#define _gloffset_TexParameterfv 179 +#define _gloffset_TexParameteri 180 +#define _gloffset_TexParameteriv 181 +#define _gloffset_TexImage1D 182 +#define _gloffset_TexImage2D 183 +#define _gloffset_TexEnvf 184 +#define _gloffset_TexEnvfv 185 +#define _gloffset_TexEnvi 186 +#define _gloffset_TexEnviv 187 +#define _gloffset_TexGend 188 +#define _gloffset_TexGendv 189 +#define _gloffset_TexGenf 190 +#define _gloffset_TexGenfv 191 +#define _gloffset_TexGeni 192 +#define _gloffset_TexGeniv 193 +#define _gloffset_FeedbackBuffer 194 +#define _gloffset_SelectBuffer 195 +#define _gloffset_RenderMode 196 +#define _gloffset_InitNames 197 +#define _gloffset_LoadName 198 +#define _gloffset_PassThrough 199 +#define _gloffset_PopName 200 +#define _gloffset_PushName 201 +#define _gloffset_DrawBuffer 202 +#define _gloffset_Clear 203 +#define _gloffset_ClearAccum 204 +#define _gloffset_ClearIndex 205 +#define _gloffset_ClearColor 206 +#define _gloffset_ClearStencil 207 +#define _gloffset_ClearDepth 208 +#define _gloffset_StencilMask 209 +#define _gloffset_ColorMask 210 +#define _gloffset_DepthMask 211 +#define _gloffset_IndexMask 212 +#define _gloffset_Accum 213 +#define _gloffset_Disable 214 +#define _gloffset_Enable 215 +#define _gloffset_Finish 216 +#define _gloffset_Flush 217 +#define _gloffset_PopAttrib 218 +#define _gloffset_PushAttrib 219 +#define _gloffset_Map1d 220 +#define _gloffset_Map1f 221 +#define _gloffset_Map2d 222 +#define _gloffset_Map2f 223 +#define _gloffset_MapGrid1d 224 +#define _gloffset_MapGrid1f 225 +#define _gloffset_MapGrid2d 226 +#define _gloffset_MapGrid2f 227 +#define _gloffset_EvalCoord1d 228 +#define _gloffset_EvalCoord1dv 229 +#define _gloffset_EvalCoord1f 230 +#define _gloffset_EvalCoord1fv 231 +#define _gloffset_EvalCoord2d 232 +#define _gloffset_EvalCoord2dv 233 +#define _gloffset_EvalCoord2f 234 +#define _gloffset_EvalCoord2fv 235 +#define _gloffset_EvalMesh1 236 +#define _gloffset_EvalPoint1 237 +#define _gloffset_EvalMesh2 238 +#define _gloffset_EvalPoint2 239 +#define _gloffset_AlphaFunc 240 +#define _gloffset_BlendFunc 241 +#define _gloffset_LogicOp 242 +#define _gloffset_StencilFunc 243 +#define _gloffset_StencilOp 244 +#define _gloffset_DepthFunc 245 +#define _gloffset_PixelZoom 246 +#define _gloffset_PixelTransferf 247 +#define _gloffset_PixelTransferi 248 +#define _gloffset_PixelStoref 249 +#define _gloffset_PixelStorei 250 +#define _gloffset_PixelMapfv 251 +#define _gloffset_PixelMapuiv 252 +#define _gloffset_PixelMapusv 253 +#define _gloffset_ReadBuffer 254 +#define _gloffset_CopyPixels 255 +#define _gloffset_ReadPixels 256 +#define _gloffset_DrawPixels 257 +#define _gloffset_GetBooleanv 258 +#define _gloffset_GetClipPlane 259 +#define _gloffset_GetDoublev 260 +#define _gloffset_GetError 261 +#define _gloffset_GetFloatv 262 +#define _gloffset_GetIntegerv 263 +#define _gloffset_GetLightfv 264 +#define _gloffset_GetLightiv 265 +#define _gloffset_GetMapdv 266 +#define _gloffset_GetMapfv 267 +#define _gloffset_GetMapiv 268 +#define _gloffset_GetMaterialfv 269 +#define _gloffset_GetMaterialiv 270 +#define _gloffset_GetPixelMapfv 271 +#define _gloffset_GetPixelMapuiv 272 +#define _gloffset_GetPixelMapusv 273 +#define _gloffset_GetPolygonStipple 274 +#define _gloffset_GetString 275 +#define _gloffset_GetTexEnvfv 276 +#define _gloffset_GetTexEnviv 277 +#define _gloffset_GetTexGendv 278 +#define _gloffset_GetTexGenfv 279 +#define _gloffset_GetTexGeniv 280 +#define _gloffset_GetTexImage 281 +#define _gloffset_GetTexParameterfv 282 +#define _gloffset_GetTexParameteriv 283 +#define _gloffset_GetTexLevelParameterfv 284 +#define _gloffset_GetTexLevelParameteriv 285 +#define _gloffset_IsEnabled 286 +#define _gloffset_IsList 287 +#define _gloffset_DepthRange 288 +#define _gloffset_Frustum 289 +#define _gloffset_LoadIdentity 290 +#define _gloffset_LoadMatrixf 291 +#define _gloffset_LoadMatrixd 292 +#define _gloffset_MatrixMode 293 +#define _gloffset_MultMatrixf 294 +#define _gloffset_MultMatrixd 295 +#define _gloffset_Ortho 296 +#define _gloffset_PopMatrix 297 +#define _gloffset_PushMatrix 298 +#define _gloffset_Rotated 299 +#define _gloffset_Rotatef 300 +#define _gloffset_Scaled 301 +#define _gloffset_Scalef 302 +#define _gloffset_Translated 303 +#define _gloffset_Translatef 304 +#define _gloffset_Viewport 305 +#define _gloffset_ArrayElement 306 +#define _gloffset_BindTexture 307 +#define _gloffset_ColorPointer 308 +#define _gloffset_DisableClientState 309 +#define _gloffset_DrawArrays 310 +#define _gloffset_DrawElements 311 +#define _gloffset_EdgeFlagPointer 312 +#define _gloffset_EnableClientState 313 +#define _gloffset_IndexPointer 314 +#define _gloffset_Indexub 315 +#define _gloffset_Indexubv 316 +#define _gloffset_InterleavedArrays 317 +#define _gloffset_NormalPointer 318 +#define _gloffset_PolygonOffset 319 +#define _gloffset_TexCoordPointer 320 +#define _gloffset_VertexPointer 321 +#define _gloffset_AreTexturesResident 322 +#define _gloffset_CopyTexImage1D 323 +#define _gloffset_CopyTexImage2D 324 +#define _gloffset_CopyTexSubImage1D 325 +#define _gloffset_CopyTexSubImage2D 326 +#define _gloffset_DeleteTextures 327 +#define _gloffset_GenTextures 328 +#define _gloffset_GetPointerv 329 +#define _gloffset_IsTexture 330 +#define _gloffset_PrioritizeTextures 331 +#define _gloffset_TexSubImage1D 332 +#define _gloffset_TexSubImage2D 333 +#define _gloffset_PopClientAttrib 334 +#define _gloffset_PushClientAttrib 335 +#define _gloffset_BlendColor 336 +#define _gloffset_BlendEquation 337 +#define _gloffset_DrawRangeElements 338 +#define _gloffset_ColorTable 339 +#define _gloffset_ColorTableParameterfv 340 +#define _gloffset_ColorTableParameteriv 341 +#define _gloffset_CopyColorTable 342 +#define _gloffset_GetColorTable 343 +#define _gloffset_GetColorTableParameterfv 344 +#define _gloffset_GetColorTableParameteriv 345 +#define _gloffset_ColorSubTable 346 +#define _gloffset_CopyColorSubTable 347 +#define _gloffset_ConvolutionFilter1D 348 +#define _gloffset_ConvolutionFilter2D 349 +#define _gloffset_ConvolutionParameterf 350 +#define _gloffset_ConvolutionParameterfv 351 +#define _gloffset_ConvolutionParameteri 352 +#define _gloffset_ConvolutionParameteriv 353 +#define _gloffset_CopyConvolutionFilter1D 354 +#define _gloffset_CopyConvolutionFilter2D 355 +#define _gloffset_GetConvolutionFilter 356 +#define _gloffset_GetConvolutionParameterfv 357 +#define _gloffset_GetConvolutionParameteriv 358 +#define _gloffset_GetSeparableFilter 359 +#define _gloffset_SeparableFilter2D 360 +#define _gloffset_GetHistogram 361 +#define _gloffset_GetHistogramParameterfv 362 +#define _gloffset_GetHistogramParameteriv 363 +#define _gloffset_GetMinmax 364 +#define _gloffset_GetMinmaxParameterfv 365 +#define _gloffset_GetMinmaxParameteriv 366 +#define _gloffset_Histogram 367 +#define _gloffset_Minmax 368 +#define _gloffset_ResetHistogram 369 +#define _gloffset_ResetMinmax 370 +#define _gloffset_TexImage3D 371 +#define _gloffset_TexSubImage3D 372 +#define _gloffset_CopyTexSubImage3D 373 +#define _gloffset_ActiveTextureARB 374 +#define _gloffset_ClientActiveTextureARB 375 +#define _gloffset_MultiTexCoord1dARB 376 +#define _gloffset_MultiTexCoord1dvARB 377 +#define _gloffset_MultiTexCoord1fARB 378 +#define _gloffset_MultiTexCoord1fvARB 379 +#define _gloffset_MultiTexCoord1iARB 380 +#define _gloffset_MultiTexCoord1ivARB 381 +#define _gloffset_MultiTexCoord1sARB 382 +#define _gloffset_MultiTexCoord1svARB 383 +#define _gloffset_MultiTexCoord2dARB 384 +#define _gloffset_MultiTexCoord2dvARB 385 +#define _gloffset_MultiTexCoord2fARB 386 +#define _gloffset_MultiTexCoord2fvARB 387 +#define _gloffset_MultiTexCoord2iARB 388 +#define _gloffset_MultiTexCoord2ivARB 389 +#define _gloffset_MultiTexCoord2sARB 390 +#define _gloffset_MultiTexCoord2svARB 391 +#define _gloffset_MultiTexCoord3dARB 392 +#define _gloffset_MultiTexCoord3dvARB 393 +#define _gloffset_MultiTexCoord3fARB 394 +#define _gloffset_MultiTexCoord3fvARB 395 +#define _gloffset_MultiTexCoord3iARB 396 +#define _gloffset_MultiTexCoord3ivARB 397 +#define _gloffset_MultiTexCoord3sARB 398 +#define _gloffset_MultiTexCoord3svARB 399 +#define _gloffset_MultiTexCoord4dARB 400 +#define _gloffset_MultiTexCoord4dvARB 401 +#define _gloffset_MultiTexCoord4fARB 402 +#define _gloffset_MultiTexCoord4fvARB 403 +#define _gloffset_MultiTexCoord4iARB 404 +#define _gloffset_MultiTexCoord4ivARB 405 +#define _gloffset_MultiTexCoord4sARB 406 +#define _gloffset_MultiTexCoord4svARB 407 +#define _gloffset_LoadTransposeMatrixfARB 408 +#define _gloffset_LoadTransposeMatrixdARB 409 +#define _gloffset_MultTransposeMatrixfARB 410 +#define _gloffset_MultTransposeMatrixdARB 411 +#define _gloffset_SampleCoverageARB 412 +#define _gloffset_SamplePassARB 413 +#define _gloffset_PolygonOffsetEXT 414 +#define _gloffset_GetTexFilterFuncSGIS 415 +#define _gloffset_TexFilterFuncSGIS 416 +#define _gloffset_GetHistogramEXT 417 +#define _gloffset_GetHistogramParameterfvEXT 418 +#define _gloffset_GetHistogramParameterivEXT 419 +#define _gloffset_GetMinmaxEXT 420 +#define _gloffset_GetMinmaxParameterfvEXT 421 +#define _gloffset_GetMinmaxParameterivEXT 422 +#define _gloffset_GetConvolutionFilterEXT 423 +#define _gloffset_GetConvolutionParameterfvEXT 424 +#define _gloffset_GetConvolutionParameterivEXT 425 +#define _gloffset_GetSeparableFilterEXT 426 +#define _gloffset_GetColorTableSGI 427 +#define _gloffset_GetColorTableParameterfvSGI 428 +#define _gloffset_GetColorTableParameterivSGI 429 +#define _gloffset_PixelTexGenSGIX 430 +#define _gloffset_PixelTexGenParameteriSGIS 431 +#define _gloffset_PixelTexGenParameterivSGIS 432 +#define _gloffset_PixelTexGenParameterfSGIS 433 +#define _gloffset_PixelTexGenParameterfvSGIS 434 +#define _gloffset_GetPixelTexGenParameterivSGIS 435 +#define _gloffset_GetPixelTexGenParameterfvSGIS 436 +#define _gloffset_TexImage4DSGIS 437 +#define _gloffset_TexSubImage4DSGIS 438 +#define _gloffset_AreTexturesResidentEXT 439 +#define _gloffset_GenTexturesEXT 440 +#define _gloffset_IsTextureEXT 441 +#define _gloffset_DetailTexFuncSGIS 442 +#define _gloffset_GetDetailTexFuncSGIS 443 +#define _gloffset_SharpenTexFuncSGIS 444 +#define _gloffset_GetSharpenTexFuncSGIS 445 +#define _gloffset_SampleMaskSGIS 446 +#define _gloffset_SamplePatternSGIS 447 +#define _gloffset_ColorPointerEXT 448 +#define _gloffset_EdgeFlagPointerEXT 449 +#define _gloffset_IndexPointerEXT 450 +#define _gloffset_NormalPointerEXT 451 +#define _gloffset_TexCoordPointerEXT 452 +#define _gloffset_VertexPointerEXT 453 +#define _gloffset_SpriteParameterfSGIX 454 +#define _gloffset_SpriteParameterfvSGIX 455 +#define _gloffset_SpriteParameteriSGIX 456 +#define _gloffset_SpriteParameterivSGIX 457 +#define _gloffset_PointParameterfEXT 458 +#define _gloffset_PointParameterfvEXT 459 +#define _gloffset_GetInstrumentsSGIX 460 +#define _gloffset_InstrumentsBufferSGIX 461 +#define _gloffset_PollInstrumentsSGIX 462 +#define _gloffset_ReadInstrumentsSGIX 463 +#define _gloffset_StartInstrumentsSGIX 464 +#define _gloffset_StopInstrumentsSGIX 465 +#define _gloffset_FrameZoomSGIX 466 +#define _gloffset_TagSampleBufferSGIX 467 +#define _gloffset_ReferencePlaneSGIX 468 +#define _gloffset_FlushRasterSGIX 469 +#define _gloffset_GetListParameterfvSGIX 470 +#define _gloffset_GetListParameterivSGIX 471 +#define _gloffset_ListParameterfSGIX 472 +#define _gloffset_ListParameterfvSGIX 473 +#define _gloffset_ListParameteriSGIX 474 +#define _gloffset_ListParameterivSGIX 475 +#define _gloffset_FragmentColorMaterialSGIX 476 +#define _gloffset_FragmentLightfSGIX 477 +#define _gloffset_FragmentLightfvSGIX 478 +#define _gloffset_FragmentLightiSGIX 479 +#define _gloffset_FragmentLightivSGIX 480 +#define _gloffset_FragmentLightModelfSGIX 481 +#define _gloffset_FragmentLightModelfvSGIX 482 +#define _gloffset_FragmentLightModeliSGIX 483 +#define _gloffset_FragmentLightModelivSGIX 484 +#define _gloffset_FragmentMaterialfSGIX 485 +#define _gloffset_FragmentMaterialfvSGIX 486 +#define _gloffset_FragmentMaterialiSGIX 487 +#define _gloffset_FragmentMaterialivSGIX 488 +#define _gloffset_GetFragmentLightfvSGIX 489 +#define _gloffset_GetFragmentLightivSGIX 490 +#define _gloffset_GetFragmentMaterialfvSGIX 491 +#define _gloffset_GetFragmentMaterialivSGIX 492 +#define _gloffset_LightEnviSGIX 493 +#define _gloffset_VertexWeightfEXT 494 +#define _gloffset_VertexWeightfvEXT 495 +#define _gloffset_VertexWeightPointerEXT 496 +#define _gloffset_FlushVertexArrayRangeNV 497 +#define _gloffset_VertexArrayRangeNV 498 +#define _gloffset_CombinerParameterfvNV 499 +#define _gloffset_CombinerParameterfNV 500 +#define _gloffset_CombinerParameterivNV 501 +#define _gloffset_CombinerParameteriNV 502 +#define _gloffset_CombinerInputNV 503 +#define _gloffset_CombinerOutputNV 504 +#define _gloffset_FinalCombinerInputNV 505 +#define _gloffset_GetCombinerInputParameterfvNV 506 +#define _gloffset_GetCombinerInputParameterivNV 507 +#define _gloffset_GetCombinerOutputParameterfvNV 508 +#define _gloffset_GetCombinerOutputParameterivNV 509 +#define _gloffset_GetFinalCombinerInputParameterfvNV 510 +#define _gloffset_GetFinalCombinerInputParameterivNV 511 +#define _gloffset_ResizeBuffersMESA 512 +#define _gloffset_WindowPos2dMESA 513 +#define _gloffset_WindowPos2dvMESA 514 +#define _gloffset_WindowPos2fMESA 515 +#define _gloffset_WindowPos2fvMESA 516 +#define _gloffset_WindowPos2iMESA 517 +#define _gloffset_WindowPos2ivMESA 518 +#define _gloffset_WindowPos2sMESA 519 +#define _gloffset_WindowPos2svMESA 520 +#define _gloffset_WindowPos3dMESA 521 +#define _gloffset_WindowPos3dvMESA 522 +#define _gloffset_WindowPos3fMESA 523 +#define _gloffset_WindowPos3fvMESA 524 +#define _gloffset_WindowPos3iMESA 525 +#define _gloffset_WindowPos3ivMESA 526 +#define _gloffset_WindowPos3sMESA 527 +#define _gloffset_WindowPos3svMESA 528 +#define _gloffset_WindowPos4dMESA 529 +#define _gloffset_WindowPos4dvMESA 530 +#define _gloffset_WindowPos4fMESA 531 +#define _gloffset_WindowPos4fvMESA 532 +#define _gloffset_WindowPos4iMESA 533 +#define _gloffset_WindowPos4ivMESA 534 +#define _gloffset_WindowPos4sMESA 535 +#define _gloffset_WindowPos4svMESA 536 +#define _gloffset_BlendFuncSeparateEXT 537 +#define _gloffset_IndexMaterialEXT 538 +#define _gloffset_IndexFuncEXT 539 +#define _gloffset_LockArraysEXT 540 +#define _gloffset_UnlockArraysEXT 541 +#define _gloffset_CullParameterdvEXT 542 +#define _gloffset_CullParameterfvEXT 543 +#define _gloffset_HintPGI 544 +#define _gloffset_FogCoordfEXT 545 +#define _gloffset_FogCoordfvEXT 546 +#define _gloffset_FogCoorddEXT 547 +#define _gloffset_FogCoorddvEXT 548 +#define _gloffset_FogCoordPointerEXT 549 +#define _gloffset_GetColorTableEXT 550 +#define _gloffset_GetColorTableParameterivEXT 551 +#define _gloffset_GetColorTableParameterfvEXT 552 #endif - Index: xc/extras/Mesa/src/glapitable.h diff -u xc/extras/Mesa/src/glapitable.h:1.2 xc/extras/Mesa/src/glapitable.h:1.3 --- xc/extras/Mesa/src/glapitable.h:1.2 Wed Mar 8 16:39:51 2000 +++ xc/extras/Mesa/src/glapitable.h Wed Mar 8 16:39:51 2000 @@ -1,853 +1,564 @@ +/* DO NOT EDIT - This file generated automatically */ +#ifndef _GLAPI_TABLE_H_ +#define _GLAPI_TABLE_H_ -/* - * Mesa 3-D graphics library - * Version: 3.3 - * - * Copyright (C) 1999-2000 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ +#include <GL/gl.h> - -/* - * This file is not specific to Mesa. It defines a dispatch table - * which could be used by any number of OpenGL implementations. - * It's designed to be gl.h-independent as well. That is, it does - * not depend on any particular extensions being defined in the gl.h - * header. We #define extension symbols (like _GLAPI_EXT_blend_color) - * to determine which entry points to compile. Clients of this dispatcher - * (like Mesa) can #ifdef test these symbols to know how to fill in the - * table. - */ - - -#ifndef _GLAPI_TABLE_H -#define _GLAPI_TABLE_H - - -#include "GL/gl.h" - - -/* - * This struct contains pointers for all the GL API entrypoints - * plus some reserved slots for dynamic extensions. - * - * Strictly speaking, this struct isn't needed if we have assembly - * language entrypoint functions since no knowledge of function - * arguments is needed. - * - * This struct may be replaced by an automatically-generated struct - * using the spec files in the OpenGL SI. - */ struct _glapi_table { - void (*Dummy)(void); - - /* - * OpenGL 1.0 - */ - void (*Accum)(GLenum, GLfloat); - void (*AlphaFunc)(GLenum, GLclampf); - void (*Begin)(GLenum); - void (*Bitmap)(GLsizei, GLsizei, GLfloat, GLfloat, GLfloat, GLfloat, const GLubyte *); - void (*BlendFunc)(GLenum, GLenum); - void (*CallList)(GLuint list); - void (*CallLists)(GLsizei, GLenum, const GLvoid *); - void (*Clear)(GLbitfield); - void (*ClearAccum)(GLfloat, GLfloat, GLfloat, GLfloat); - void (*ClearColor)(GLclampf, GLclampf, GLclampf, GLclampf); - void (*ClearDepth)(GLclampd); - void (*ClearIndex)(GLfloat); - void (*ClearStencil)(GLint); - void (*ClipPlane)(GLenum, const GLdouble *); - void (*Color3b)(GLbyte, GLbyte, GLbyte); - void (*Color3bv)(const GLbyte *); - void (*Color3d)(GLdouble, GLdouble, GLdouble); - void (*Color3dv)(const GLdouble *); - void (*Color3f)(GLfloat, GLfloat, GLfloat); - void (*Color3fv)(const GLfloat *); - void (*Color3i)(GLint, GLint, GLint); - void (*Color3iv)(const GLint *); - void (*Color3s)(GLshort, GLshort, GLshort); - void (*Color3sv)(const GLshort *); - void (*Color3ub)(GLubyte, GLubyte, GLubyte); - void (*Color3ubv)(const GLubyte *); - void (*Color3ui)(GLuint, GLuint, GLuint); - void (*Color3uiv)(const GLuint *); - void (*Color3us)(GLushort, GLushort, GLushort); - void (*Color3usv)(const GLushort *); - void (*Color4b)(GLbyte, GLbyte, GLbyte, GLbyte); - void (*Color4bv)(const GLbyte *); - void (*Color4d)(GLdouble, GLdouble, GLdouble, GLdouble); - void (*Color4dv)(const GLdouble *); - void (*Color4f)(GLfloat, GLfloat, GLfloat, GLfloat); - void (*Color4fv)(const GLfloat *); - void (*Color4i)(GLint, GLint, GLint, GLint); - void (*Color4iv)(const GLint *); - void (*Color4s)(GLshort, GLshort, GLshort, GLshort); - void (*Color4sv)(const GLshort *); - void (*Color4ub)(GLubyte, GLubyte, GLubyte, GLubyte); - void (*Color4ubv)(const GLubyte *); - void (*Color4ui)(GLuint, GLuint, GLuint, GLuint); - void (*Color4uiv)(const GLuint *); - void (*Color4us)(GLushort, GLushort, GLushort, GLushort); - void (*Color4usv)(const GLushort *); - void (*ColorMask)(GLboolean, GLboolean, GLboolean, GLboolean); - void (*ColorMaterial)(GLenum, GLenum); - void (*CopyPixels)(GLint, GLint, GLsizei, GLsizei, GLenum); - void (*CullFace)(GLenum); - void (*DeleteLists)(GLuint, GLsizei); - void (*DepthFunc)(GLenum); - void (*DepthMask)(GLboolean); - void (*DepthRange)(GLclampd, GLclampd); - void (*Disable)(GLenum); - void (*DrawBuffer)(GLenum); - void (*DrawPixels)(GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); - void (*EdgeFlag)(GLboolean); - void (*EdgeFlagv)(const GLboolean *); - void (*Enable)(GLenum); - void (*End)(void); - void (*EndList)(void); - void (*EvalCoord1d)(GLdouble); - void (*EvalCoord1dv)(const GLdouble *); - void (*EvalCoord1f)(GLfloat); - void (*EvalCoord1fv)(const GLfloat *); - void (*EvalCoord2d)(GLdouble u, GLdouble); - void (*EvalCoord2dv)(const GLdouble *); - void (*EvalCoord2f)(GLfloat u, GLfloat); - void (*EvalCoord2fv)(const GLfloat *); - void (*EvalMesh1)(GLenum, GLint, GLint); - void (*EvalMesh2)(GLenum, GLint, GLint, GLint, GLint); - void (*EvalPoint1)(GLint); - void (*EvalPoint2)(GLint, GLint); - void (*FeedbackBuffer)(GLsizei, GLenum, GLfloat *); - void (*Finish)(void); - void (*Flush)(void); - void (*Fogf)(GLenum, GLfloat); - void (*Fogfv)(GLenum, const GLfloat *); - void (*Fogi)(GLenum, GLint); - void (*Fogiv)(GLenum, const GLint *); - void (*FrontFace)(GLenum); - void (*Frustum)(GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble); - GLuint (*GenLists)(GLsizei); - void (*GetBooleanv)(GLenum, GLboolean *); - void (*GetClipPlane)(GLenum, GLdouble *); - void (*GetDoublev)(GLenum, GLdouble *); - GLenum (*GetError)(void); - void (*GetFloatv)(GLenum, GLfloat *); - void (*GetIntegerv)(GLenum, GLint *); - void (*GetLightfv)(GLenum light, GLenum, GLfloat *); - void (*GetLightiv)(GLenum light, GLenum, GLint *); - void (*GetMapdv)(GLenum, GLenum, GLdouble *); - void (*GetMapfv)(GLenum, GLenum, GLfloat *); - void (*GetMapiv)(GLenum, GLenum, GLint *); - void (*GetMaterialfv)(GLenum, GLenum, GLfloat *); - void (*GetMaterialiv)(GLenum, GLenum, GLint *); - void (*GetPixelMapfv)(GLenum, GLfloat *); - void (*GetPixelMapuiv)(GLenum, GLuint *); - void (*GetPixelMapusv)(GLenum, GLushort *); - void (*GetPolygonStipple)(GLubyte *); - const GLubyte* (*GetString)(GLenum name); - void (*GetTexEnvfv)(GLenum, GLenum, GLfloat *); - void (*GetTexEnviv)(GLenum, GLenum, GLint *); - void (*GetTexGendv)(GLenum coord, GLenum, GLdouble *); - void (*GetTexGenfv)(GLenum coord, GLenum, GLfloat *); - void (*GetTexGeniv)(GLenum coord, GLenum, GLint *); - void (*GetTexImage)(GLenum, GLint level, GLenum, GLenum, GLvoid *); - void (*GetTexLevelParameterfv)(GLenum, GLint, GLenum, GLfloat *); - void (*GetTexLevelParameteriv)(GLenum, GLint, GLenum, GLint *); - void (*GetTexParameterfv)(GLenum, GLenum, GLfloat *); - void (*GetTexParameteriv)(GLenum, GLenum, GLint *); - void (*Hint)(GLenum, GLenum); - void (*IndexMask)(GLuint); - void (*Indexd)(GLdouble); - void (*Indexdv)(const GLdouble *); - void (*Indexf)(GLfloat); - void (*Indexfv)(const GLfloat *); - void (*Indexi)(GLint); - void (*Indexiv)(const GLint *); - void (*Indexs)(GLshort); - void (*Indexsv)(const GLshort *); - void (*InitNames)(void); - GLboolean (*IsEnabled)(GLenum); - GLboolean (*IsList)(GLuint); - void (*LightModelf)(GLenum, GLfloat); - void (*LightModelfv)(GLenum, const GLfloat *); - void (*LightModeli)(GLenum, GLint); - void (*LightModeliv)(GLenum, const GLint *); - void (*Lightf)(GLenum light, GLenum, GLfloat); - void (*Lightfv)(GLenum light, GLenum, const GLfloat *); - void (*Lighti)(GLenum light, GLenum, GLint); - void (*Lightiv)(GLenum light, GLenum, const GLint *); - void (*LineStipple)(GLint factor, GLushort); - void (*LineWidth)(GLfloat); - void (*ListBase)(GLuint); - void (*LoadIdentity)(void); - void (*LoadMatrixd)(const GLdouble *); - void (*LoadMatrixf)(const GLfloat *); - void (*LoadName)(GLuint); - void (*LogicOp)(GLenum); - void (*Map1d)(GLenum, GLdouble, GLdouble, GLint, GLint, const GLdouble *); - void (*Map1f)(GLenum, GLfloat, GLfloat, GLint, GLint, const GLfloat *); - void (*Map2d)(GLenum, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, const GLdouble *); - void (*Map2f)(GLenum, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, const GLfloat *); - void (*MapGrid1d)(GLint, GLdouble, GLdouble); - void (*MapGrid1f)(GLint, GLfloat, GLfloat); - void (*MapGrid2d)(GLint, GLdouble, GLdouble, GLint, GLdouble, GLdouble); - void (*MapGrid2f)(GLint, GLfloat, GLfloat, GLint, GLfloat, GLfloat); - void (*Materialf)(GLenum, GLenum, GLfloat); - void (*Materialfv)(GLenum, GLenum, const GLfloat *); - void (*Materiali)(GLenum, GLenum, GLint); - void (*Materialiv)(GLenum, GLenum, const GLint *); - void (*MatrixMode)(GLenum); - void (*MultMatrixd)(const GLdouble *); - void (*MultMatrixf)(const GLfloat *); - void (*NewList)(GLuint list, GLenum); - void (*Normal3b)(GLbyte, GLbyte, GLbyte); - void (*Normal3bv)(const GLbyte *); - void (*Normal3d)(GLdouble, GLdouble, GLdouble); - void (*Normal3dv)(const GLdouble *); - void (*Normal3f)(GLfloat, GLfloat, GLfloat); - void (*Normal3fv)(const GLfloat *); - void (*Normal3i)(GLint, GLint, GLint); - void (*Normal3iv)(const GLint *); - void (*Normal3s)(GLshort, GLshort, GLshort); - void (*Normal3sv)(const GLshort *); - void (*Ortho)(GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble); - void (*PassThrough)(GLfloat); - void (*PixelMapfv)(GLenum, GLint, const GLfloat *); - void (*PixelMapuiv)(GLenum, GLint, const GLuint *); - void (*PixelMapusv)(GLenum, GLint, const GLushort *); - void (*PixelStoref)(GLenum, GLfloat); - void (*PixelStorei)(GLenum, GLint); - void (*PixelTransferf)(GLenum, GLfloat); - void (*PixelTransferi)(GLenum, GLint); - void (*PixelZoom)(GLfloat, GLfloat); - void (*PointSize)(GLfloat); - void (*PolygonMode)(GLenum, GLenum); - void (*PolygonOffset)(GLfloat, GLfloat); - void (*PolygonStipple)(const GLubyte *); - void (*PopAttrib)(void); - void (*PopMatrix)(void); - void (*PopName)(void); - void (*PushAttrib)(GLbitfield); - void (*PushMatrix)(void); - void (*PushName)(GLuint); - void (*RasterPos2d)(GLdouble, GLdouble); - void (*RasterPos2dv)(const GLdouble *); - void (*RasterPos2f)(GLfloat, GLfloat); - void (*RasterPos2fv)(const GLfloat *); - void (*RasterPos2i)(GLint, GLint); - void (*RasterPos2iv)(const GLint *); - void (*RasterPos2s)(GLshort, GLshort); - void (*RasterPos2sv)(const GLshort *); - void (*RasterPos3d)(GLdouble, GLdouble, GLdouble); - void (*RasterPos3dv)(const GLdouble *); - void (*RasterPos3f)(GLfloat, GLfloat, GLfloat); - void (*RasterPos3fv)(const GLfloat *); - void (*RasterPos3i)(GLint, GLint, GLint); - void (*RasterPos3iv)(const GLint *); - void (*RasterPos3s)(GLshort, GLshort, GLshort); - void (*RasterPos3sv)(const GLshort *); - void (*RasterPos4d)(GLdouble, GLdouble, GLdouble, GLdouble); - void (*RasterPos4dv)(const GLdouble *); - void (*RasterPos4f)(GLfloat, GLfloat, GLfloat, GLfloat); - void (*RasterPos4fv)(const GLfloat *); - void (*RasterPos4i)(GLint, GLint, GLint, GLint); - void (*RasterPos4iv)(const GLint *); - void (*RasterPos4s)(GLshort, GLshort, GLshort, GLshort); - void (*RasterPos4sv)(const GLshort *); - void (*ReadBuffer)(GLenum); - void (*ReadPixels)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLvoid *); - void (*Rectd)(GLdouble, GLdouble, GLdouble, GLdouble); - void (*Rectdv)(const GLdouble *, const GLdouble *); - void (*Rectf)(GLfloat, GLfloat, GLfloat, GLfloat); - void (*Rectfv)(const GLfloat *, const GLfloat *); - void (*Recti)(GLint, GLint, GLint, GLint); - void (*Rectiv)(const GLint *, const GLint *); - void (*Rects)(GLshort, GLshort, GLshort, GLshort); - void (*Rectsv)(const GLshort *, const GLshort *); - GLint (*RenderMode)(GLenum); - void (*Rotated)(GLdouble, GLdouble, GLdouble, GLdouble); - void (*Rotatef)(GLfloat, GLfloat, GLfloat, GLfloat); - void (*Scaled)(GLdouble, GLdouble, GLdouble); - void (*Scalef)(GLfloat, GLfloat, GLfloat); - void (*Scissor)(GLint, GLint, GLsizei, GLsizei); - void (*SelectBuffer)(GLsizei, GLuint *); - void (*ShadeModel)(GLenum); - void (*StencilFunc)(GLenum, GLint, GLuint); - void (*StencilMask)(GLuint); - void (*StencilOp)(GLenum, GLenum, GLenum); - void (*TexCoord1d)(GLdouble); - void (*TexCoord1dv)(const GLdouble *); - void (*TexCoord1f)(GLfloat); - void (*TexCoord1fv)(const GLfloat *); - void (*TexCoord1i)(GLint); - void (*TexCoord1iv)(const GLint *); - void (*TexCoord1s)(GLshort); - void (*TexCoord1sv)(const GLshort *); - void (*TexCoord2d)(GLdouble, GLdouble); - void (*TexCoord2dv)(const GLdouble *); - void (*TexCoord2f)(GLfloat, GLfloat); - void (*TexCoord2fv)(const GLfloat *); - void (*TexCoord2i)(GLint, GLint); - void (*TexCoord2iv)(const GLint *); - void (*TexCoord2s)(GLshort, GLshort); - void (*TexCoord2sv)(const GLshort *); - void (*TexCoord3d)(GLdouble, GLdouble, GLdouble); - void (*TexCoord3dv)(const GLdouble *); - void (*TexCoord3f)(GLfloat, GLfloat, GLfloat); - void (*TexCoord3fv)(const GLfloat *); - void (*TexCoord3i)(GLint, GLint, GLint); - void (*TexCoord3iv)(const GLint *); - void (*TexCoord3s)(GLshort, GLshort, GLshort); - void (*TexCoord3sv)(const GLshort *); - void (*TexCoord4d)(GLdouble, GLdouble, GLdouble, GLdouble); - void (*TexCoord4dv)(const GLdouble *); - void (*TexCoord4f)(GLfloat, GLfloat, GLfloat, GLfloat); - void (*TexCoord4fv)(const GLfloat *); - void (*TexCoord4i)(GLint, GLint, GLint, GLint); - void (*TexCoord4iv)(const GLint *); - void (*TexCoord4s)(GLshort, GLshort, GLshort, GLshort); - void (*TexCoord4sv)(const GLshort *); - void (*TexEnvf)(GLenum, GLenum, GLfloat); - void (*TexEnvfv)(GLenum, GLenum, const GLfloat *); - void (*TexEnvi)(GLenum, GLenum, GLint); - void (*TexEnviv)(GLenum, GLenum, const GLint *); - void (*TexGend)(GLenum, GLenum, GLdouble); - void (*TexGendv)(GLenum, GLenum, const GLdouble *); - void (*TexGenf)(GLenum, GLenum, GLfloat); - void (*TexGenfv)(GLenum, GLenum, const GLfloat *); - void (*TexGeni)(GLenum, GLenum, GLint); - void (*TexGeniv)(GLenum, GLenum, const GLint *); - void (*TexImage1D)(GLenum, GLint, GLint, GLsizei, GLint, GLenum, GLenum, const GLvoid *); - void (*TexImage2D)(GLenum, GLint, GLint, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *); - void (*TexParameterf)(GLenum, GLenum, GLfloat); - void (*TexParameterfv)(GLenum, GLenum, const GLfloat *); - void (*TexParameteri)(GLenum, GLenum, GLint); - void (*TexParameteriv)(GLenum, GLenum, const GLint *); - void (*Translated)(GLdouble, GLdouble, GLdouble); - void (*Translatef)(GLfloat, GLfloat, GLfloat); - void (*Vertex2d)(GLdouble, GLdouble); - void (*Vertex2dv)(const GLdouble *); - void (*Vertex2f)(GLfloat, GLfloat); - void (*Vertex2fv)(const GLfloat *); - void (*Vertex2i)(GLint, GLint); - void (*Vertex2iv)(const GLint *); - void (*Vertex2s)(GLshort, GLshort); - void (*Vertex2sv)(const GLshort *); - void (*Vertex3d)(GLdouble, GLdouble, GLdouble); - void (*Vertex3dv)(const GLdouble *); - void (*Vertex3f)(GLfloat, GLfloat, GLfloat); - void (*Vertex3fv)(const GLfloat *); - void (*Vertex3i)(GLint, GLint, GLint); - void (*Vertex3iv)(const GLint *); - void (*Vertex3s)(GLshort, GLshort, GLshort); - void (*Vertex3sv)(const GLshort *); - void (*Vertex4d)(GLdouble, GLdouble, GLdouble, GLdouble); - void (*Vertex4dv)(const GLdouble *); - void (*Vertex4f)(GLfloat, GLfloat, GLfloat, GLfloat); - void (*Vertex4fv)(const GLfloat *); - void (*Vertex4i)(GLint, GLint, GLint, GLint); - void (*Vertex4iv)(const GLint *); - void (*Vertex4s)(GLshort, GLshort, GLshort, GLshort); - void (*Vertex4sv)(const GLshort *); - void (*Viewport)(GLint, GLint, GLsizei, GLsizei); - - /* - * OpenGL 1.1 - */ - GLboolean (*AreTexturesResident)(GLsizei, const GLuint *, GLboolean *); - void (*ArrayElement)(GLint); - void (*BindTexture)(GLenum, GLuint); - void (*ColorPointer)(GLint, GLenum, GLsizei, const GLvoid *); - void (*CopyTexImage1D)(GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint); - void (*CopyTexImage2D)(GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint); - void (*CopyTexSubImage1D)(GLenum, GLint, GLint, GLint, GLint, GLsizei); - void (*CopyTexSubImage2D)(GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); - void (*DeleteTextures)(GLsizei, const GLuint *); - void (*DisableClientState)(GLenum); - void (*DrawArrays)(GLenum, GLint, GLsizei); - void (*DrawElements)(GLenum, GLsizei, GLenum, const GLvoid *); - void (*EdgeFlagPointer)(GLsizei, const GLvoid *); - void (*EnableClientState)(GLenum); - void (*GenTextures)(GLsizei, GLuint *); - void (*GetPointerv)(GLenum, GLvoid **); - void (*IndexPointer)(GLenum, GLsizei, const GLvoid *); - void (*Indexub)(GLubyte); - void (*Indexubv)(const GLubyte *); - void (*InterleavedArrays)(GLenum, GLsizei, const GLvoid *); - GLboolean (*IsTexture)(GLuint); - void (*NormalPointer)(GLenum, GLsizei, const GLvoid *); - void (*PopClientAttrib)(void); - void (*PrioritizeTextures)(GLsizei, const GLuint *, const GLclampf *); - void (*PushClientAttrib)(GLbitfield); - void (*TexCoordPointer)(GLint, GLenum, GLsizei, const GLvoid *); - void (*TexSubImage1D)(GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const GLvoid *); - void (*TexSubImage2D)(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); - void (*VertexPointer)(GLint, GLenum, GLsizei, const GLvoid *); - - - /* - * OpenGL 1.2 - */ - void (*CopyTexSubImage3D)(GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); - void (*DrawRangeElements)(GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *); - void (*TexImage3D)(GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *); - void (*TexSubImage3D)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); - - - /* - * GL_ARB_imaging - */ - void (*BlendColor)(GLclampf, GLclampf, GLclampf, GLclampf); - void (*BlendEquation)(GLenum); - void (*ColorSubTable)(GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); - void (*ColorTable)(GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); - void (*ColorTableParameterfv)(GLenum, GLenum, const GLfloat *); - void (*ColorTableParameteriv)(GLenum, GLenum, const GLint *); - void (*ConvolutionFilter1D)(GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); - void (*ConvolutionFilter2D)(GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); - void (*ConvolutionParameterf)(GLenum, GLenum, GLfloat); - void (*ConvolutionParameterfv)(GLenum, GLenum, const GLfloat *); - void (*ConvolutionParameteri)(GLenum, GLenum, GLint); - void (*ConvolutionParameteriv)(GLenum, GLenum, const GLint *); - void (*CopyColorSubTable)(GLenum, GLsizei, GLint, GLint, GLsizei); - void (*CopyColorTable)(GLenum, GLenum, GLint, GLint, GLsizei); - void (*CopyConvolutionFilter1D)(GLenum, GLenum, GLint x, GLint y, GLsizei); - void (*CopyConvolutionFilter2D)(GLenum, GLenum, GLint x, GLint y, GLsizei, GLsizei); - void (*GetColorTable)(GLenum, GLenum, GLenum, GLvoid *); - void (*GetColorTableParameterfv)(GLenum, GLenum, GLfloat *); - void (*GetColorTableParameteriv)(GLenum, GLenum, GLint *); - void (*GetConvolutionFilter)(GLenum, GLenum, GLenum, GLvoid *); - void (*GetConvolutionParameterfv)(GLenum, GLenum, GLfloat *); - void (*GetConvolutionParameteriv)(GLenum, GLenum, GLint *); - void (*GetHistogram)(GLenum, GLboolean, GLenum, GLenum, GLvoid *); - void (*GetHistogramParameterfv)(GLenum, GLenum, GLfloat *); - void (*GetHistogramParameteriv)(GLenum, GLenum, GLint *); - void (*GetMinmax)(GLenum, GLboolean, GLenum, GLenum, GLvoid *); - void (*GetMinmaxParameterfv)(GLenum, GLenum, GLfloat *); - void (*GetMinmaxParameteriv)(GLenum, GLenum, GLint *); - void (*GetSeparableFilter)(GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *); - void (*Histogram)(GLenum, GLsizei, GLenum, GLboolean); - void (*Minmax)(GLenum, GLenum, GLboolean); - void (*ResetHistogram)(GLenum); - void (*ResetMinmax)(GLenum); - void (*SeparableFilter2D)(GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *); - - /* - * GL_ARB_multitexture - */ - void (*ActiveTextureARB)(GLenum); - void (*ClientActiveTextureARB)(GLenum); - void (*MultiTexCoord1dARB)(GLenum, GLdouble); - void (*MultiTexCoord1dvARB)(GLenum, const GLdouble *); - void (*MultiTexCoord1fARB)(GLenum, GLfloat); - void (*MultiTexCoord1fvARB)(GLenum, const GLfloat *); - void (*MultiTexCoord1iARB)(GLenum, GLint); - void (*MultiTexCoord1ivARB)(GLenum, const GLint *); - void (*MultiTexCoord1sARB)(GLenum, GLshort); - void (*MultiTexCoord1svARB)(GLenum, const GLshort *); - void (*MultiTexCoord2dARB)(GLenum, GLdouble, GLdouble); - void (*MultiTexCoord2dvARB)(GLenum, const GLdouble *); - void (*MultiTexCoord2fARB)(GLenum, GLfloat, GLfloat); - void (*MultiTexCoord2fvARB)(GLenum, const GLfloat *); - void (*MultiTexCoord2iARB)(GLenum, GLint, GLint); - void (*MultiTexCoord2ivARB)(GLenum, const GLint *); - void (*MultiTexCoord2sARB)(GLenum, GLshort, GLshort); - void (*MultiTexCoord2svARB)(GLenum, const GLshort *); - void (*MultiTexCoord3dARB)(GLenum, GLdouble, GLdouble, GLdouble); - void (*MultiTexCoord3dvARB)(GLenum, const GLdouble *); - void (*MultiTexCoord3fARB)(GLenum, GLfloat, GLfloat, GLfloat); - void (*MultiTexCoord3fvARB)(GLenum, const GLfloat *); - void (*MultiTexCoord3iARB)(GLenum, GLint, GLint, GLint); - void (*MultiTexCoord3ivARB)(GLenum, const GLint *); - void (*MultiTexCoord3sARB)(GLenum, GLshort, GLshort, GLshort); - void (*MultiTexCoord3svARB)(GLenum, const GLshort *); - void (*MultiTexCoord4dARB)(GLenum, GLdouble, GLdouble, GLdouble, GLdouble); - void (*MultiTexCoord4dvARB)(GLenum, const GLdouble *); - void (*MultiTexCoord4fARB)(GLenum, GLfloat, GLfloat, GLfloat, GLfloat); - void (*MultiTexCoord4fvARB)(GLenum, const GLfloat *); - void (*MultiTexCoord4iARB)(GLenum, GLint, GLint, GLint, GLint); - void (*MultiTexCoord4ivARB)(GLenum, const GLint *); - void (*MultiTexCoord4sARB)(GLenum, GLshort, GLshort, GLshort, GLshort); - void (*MultiTexCoord4svARB)(GLenum, const GLshort *); - - - /* - * Extensions - */ - - /* 1. GL_EXT_abgr - no functions */ - - /* 2. GL_EXT_blend_color */ - void (*BlendColorEXT)(GLclampf, GLclampf, GLclampf, GLclampf); - - /* 3. GL_EXT_polygon_offset */ - void (*PolygonOffsetEXT)(GLfloat, GLfloat); - - /* 4. GL_EXT_texture - no functions */ - - /* 5. ??? */ - - /* 6. GL_EXT_texture3D */ - void (*CopyTexSubImage3DEXT)(GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); - void (*TexImage3DEXT)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *); - void (*TexSubImage3DEXT)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); - - /* 7. GL_SGI_texture_filter4 */ - void (*GetTexFilterFuncSGIS)(GLenum, GLenum, GLsizei, const GLfloat *); - void (*TexFilterFuncSGIS)(GLenum, GLenum, GLfloat *); - - /* 8. ??? */ - - /* 9. GL_EXT_subtexture */ - void (*TexSubImage1DEXT)(GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const GLvoid *); - void (*TexSubImage2DEXT)(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); - - /* 10. GL_EXT_copy_texture */ - void (*CopyTexImage1DEXT)(GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint); - void (*CopyTexImage2DEXT)(GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint); - void (*CopyTexSubImage1DEXT)(GLenum, GLint, GLint, GLint, GLint, GLsizei); - void (*CopyTexSubImage2DEXT)(GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); - - /* 11. GL_EXT_histogram */ - void (*GetHistogramEXT)(GLenum, GLboolean, GLenum, GLenum, GLvoid *); - void (*GetHistogramParameterfvEXT)(GLenum, GLenum, GLfloat *); - void (*GetHistogramParameterivEXT)(GLenum, GLenum, GLint *); - void (*GetMinmaxEXT)(GLenum, GLboolean, GLenum, GLenum, GLvoid *); - void (*GetMinmaxParameterfvEXT)(GLenum, GLenum, GLfloat *); - void (*GetMinmaxParameterivEXT)(GLenum, GLenum, GLint *); - void (*HistogramEXT)(GLenum, GLsizei, GLenum, GLboolean); - void (*MinmaxEXT)(GLenum, GLenum, GLboolean); - void (*ResetHistogramEXT)(GLenum); - void (*ResetMinmaxEXT)(GLenum); - - /* 12. GL_EXT_convolution */ - void (*ConvolutionFilter1DEXT)(GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); - void (*ConvolutionFilter2DEXT)(GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); - void (*ConvolutionParameterfEXT)(GLenum, GLenum, GLfloat); - void (*ConvolutionParameterfvEXT)(GLenum, GLenum, const GLfloat *); - void (*ConvolutionParameteriEXT)(GLenum, GLenum, GLint); - void (*ConvolutionParameterivEXT)(GLenum, GLenum, const GLint *); - void (*CopyConvolutionFilter1DEXT)(GLenum, GLenum, GLint x, GLint y, GLsizei); - void (*CopyConvolutionFilter2DEXT)(GLenum, GLenum, GLint x, GLint y, GLsizei, GLsizei); - void (*GetConvolutionFilterEXT)(GLenum, GLenum, GLenum, GLvoid *); - void (*GetConvolutionParameterfvEXT)(GLenum, GLenum, GLfloat *); - void (*GetConvolutionParameterivEXT)(GLenum, GLenum, GLint *); - void (*GetSeparableFilterEXT)(GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *); - void (*SeparableFilter2DEXT)(GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *); - - /* 13. GL_SGI_color_matrix - no functions */ - - /* 14. GL_SGI_color_table */ - void (*ColorTableSGI)(GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); - void (*ColorTableParameterfvSGI)(GLenum, GLenum, const GLfloat *); - void (*ColorTableParameterivSGI)(GLenum, GLenum, const GLint *); - void (*CopyColorTableSGI)(GLenum, GLenum, GLint, GLint, GLsizei); - void (*GetColorTableSGI)(GLenum, GLenum, GLenum, GLvoid *); - void (*GetColorTableParameterfvSGI)(GLenum, GLenum, GLfloat *); - void (*GetColorTableParameterivSGI)(GLenum, GLenum, GLint *); - - /* 15. GL_SGIS_pixel_texture */ - void (*PixelTexGenParameterfSGIS)(GLenum, GLfloat); - void (*PixelTexGenParameteriSGIS)(GLenum, GLint); - void (*GetPixelTexGenParameterfvSGIS)(GLenum, GLfloat *); - void (*GetPixelTexGenParameterivSGIS)(GLenum, GLint *); - - /* 16. GL_SGIS_texture4D */ - void (*TexImage4DSGIS)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const void *); - void (*TexSubImage4DSGIS)(GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const void *); - - /* 17. GL_SGI_texture_color_table - no functions */ - - /* 18. GL_EXT_cmyka - no functions */ - - /* 19. ??? */ - - /* 20. GL_EXT_texture_object */ - GLboolean (*AreTexturesResidentEXT)(GLsizei, const GLuint *, GLboolean *); - void (*BindTextureEXT)(GLenum, GLuint); - void (*DeleteTexturesEXT)(GLsizei, const GLuint *); - void (*GenTexturesEXT)(GLsizei, GLuint *); - GLboolean (*IsTextureEXT)(GLuint); - void (*PrioritizeTexturesEXT)(GLsizei, const GLuint *, const GLclampf *); - - /* 21. GL_SGIS_detail_texture */ - void (*DetailTexFuncSGIS)(GLenum, GLsizei, const GLfloat *); - void (*GetDetailTexFuncSGIS)(GLenum, GLfloat *); - - /* 22. GL_SGIS_sharpen_texture */ - void (*GetSharpenTexFuncSGIS)(GLenum, GLfloat *); - void (*SharpenTexFuncSGIS)(GLenum, GLsizei, const GLfloat *); - - /* 23. GL_EXT_packed_pixels - no functions */ - - /* 24. GL_SGIS_texture_lod - no functions */ - - /* 25. GL_SGIS_multisample */ - void (*SampleMaskSGIS)(GLclampf, GLboolean); - void (*SamplePatternSGIS)(GLenum); - - /* 26. ??? */ - - /* 27. GL_EXT_rescale_normal - no functions */ - - /* 28. GLX_EXT_visual_info - no functions */ - - /* 29. ??? */ - - /* 30. GL_EXT_vertex_array */ - void (*ArrayElementEXT)(GLint); - void (*ColorPointerEXT)(GLint, GLenum, GLsizei, GLsizei, const void *); - void (*DrawArraysEXT)(GLenum, GLint, GLsizei); - void (*EdgeFlagPointerEXT)(GLsizei, GLsizei, const GLboolean *); - void (*GetPointervEXT)(GLenum, void **); - void (*IndexPointerEXT)(GLenum, GLsizei, GLsizei, const void *); - void (*NormalPointerEXT)(GLenum, GLsizei, GLsizei, const void *); - void (*TexCoordPointerEXT)(GLint, GLenum, GLsizei, GLsizei, const void *); - void (*VertexPointerEXT)(GLint, GLenum, GLsizei, GLsizei, const void *); - - /* 31. GL_EXT_misc_attribute - no functions */ - - /* 32. GL_SGIS_generate_mipmap - no functions */ - - /* 33. GL_SGIX_clipmap - no functions */ - - /* 34. GL_SGIX_shadow - no functions */ - - /* 35. GL_SGIS_texture_edge_clamp - no functions */ - - /* 36. GL_SGIS_texture_border_clamp - no functions */ - - /* 37. GL_EXT_blend_minmax */ - void (*BlendEquationEXT)(GLenum); - - /* 38. GL_EXT_blend_subtract - no functions */ - - /* 39. GL_EXT_blend_logic_op - no functions */ - - /* 40. GLX_SGI_swap_control - GLX functions */ - - /* 41. GLX_SGI_video_sync - GLX functions */ - - /* 42. GLX_SGI_make_current_read - GLX functions */ - - /* 43. GLX_SGIX_video_source - GLX functions */ - - /* 44. GLX_EXT_visual_rating - no functions */ - - /* 45. GL_SGIX_interlace - no functions */ - - /* 46. ??? */ - - /* 47. GLX_EXT_import_context - GLX functions */ - - /* 48. ??? */ - - /* 49. GLX_SGIX_fbconfig - GLX functions */ - - /* 50. GLX_SGIX_pbuffer - GLX functions */ - - /* 51. GL_SGIS_texture_select - no functions */ - - /* 52. GL_SGIX_sprite */ - void (*SpriteParameterfSGIX)(GLenum, GLfloat); - void (*SpriteParameterfvSGIX)(GLenum, const GLfloat *); - void (*SpriteParameteriSGIX)(GLenum, GLint); - void (*SpriteParameterivSGIX)(GLenum, const GLint *); - - /* 53. ??? */ - - /* 54. GL_EXT_point_parameters */ - void (*PointParameterfEXT)(GLenum, GLfloat); - void (*PointParameterfvEXT)(GLenum, const GLfloat *); - - /* 55. GL_SGIX_instruments */ - GLint (*GetInstrumentsSGIX)(void); - void (*InstrumentsBufferSGIX)(GLsizei, GLint *); - GLint (*PollInstrumentsSGIX)(GLint *); - void (*ReadInstrumentsSGIX)(GLint); - void (*StartInstrumentsSGIX)(void); - void (*StopInstrumentsSGIX)(GLint); - - /* 56. GL_SGIX_texture_scale_bias - no functions */ - - /* 57. GL_SGIX_framezoom */ - void (*FrameZoomSGIX)(GLint); - - /* 58. GL_SGIX_tag_sample_buffer - no functions */ - - /* 59. ??? */ - - /* 60. GL_SGIX_reference_plane */ - void (*ReferencePlaneSGIX)(const GLdouble *); - - /* 61. GL_SGIX_flush_raster */ - void (*FlushRasterSGIX)(void); - - /* 62. GLX_SGI_cushion - GLX functions */ - - /* 63. GL_SGIX_depth_texture - no functions */ - - /* 64. ??? */ - - /* 65. GL_SGIX_fog_offset - no functions */ - - /* 66. GL_HP_image_transform */ -#ifdef VMS -#define glGetImageTransformParameterfvHP glGetImageTransformParameterfvH -#define glGetImageTransformParameterivHP glGetImageTransformParameterivH -#endif - void (*GetImageTransformParameterfvHP)(GLenum, GLenum, GLfloat *); - void (*GetImageTransformParameterivHP)(GLenum, GLenum, GLint *); - void (*ImageTransformParameterfHP)(GLenum, GLenum, const GLfloat); - void (*ImageTransformParameterfvHP)(GLenum, GLenum, const GLfloat *); - void (*ImageTransformParameteriHP)(GLenum, GLenum, const GLint); - void (*ImageTransformParameterivHP)(GLenum, GLenum, const GLint *); - - /* 67. GL_HP_convolution_border_modes - no functions */ - - /* 68. ??? */ - - /* 69. GL_SGIX_texture_add_env - no functions */ - - /* 70. ??? */ - - /* 71. ??? */ - - /* 72. ??? */ - - /* 73. ??? */ - - /* 74. GL_EXT_color_subtable */ - void (*ColorSubTableEXT)(GLenum, GLsizei, GLsizei, GLenum, GLenum, const void *); - void (*CopyColorSubTableEXT)(GLenum, GLsizei, GLint, GLint, GLsizei); - - /* 75. GLU_EXT_object_space_tess - GLU functions */ - - /* 76. GL_PGI_vertex_hints - no functions */ - - /* 77. GL_PGI_misc_hints */ - void (*HintPGI)(GLenum, GLint); - - /* 78. GL_EXT_paletted_texture */ - /* ColorSubTableEXT already defined */ - void (*ColorTableEXT)(GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); - void (*GetColorTableEXT)(GLenum, GLenum, GLenum, GLvoid *); - void (*GetColorTableParameterfvEXT)(GLenum, GLenum, GLfloat *); - void (*GetColorTableParameterivEXT)(GLenum, GLenum, GLint *); - - /* 79. GL_EXT_clip_volume_hint - no functions */ - - /* 80. GL_SGIX_list_priority */ - void (*GetListParameterfvSGIX)(GLuint, GLenum, GLfloat *); - void (*GetListParameterivSGIX)(GLuint, GLenum, GLint *); - void (*ListParameterfSGIX)(GLuint, GLenum, GLfloat); - void (*ListParameterfvSGIX)(GLuint, GLenum, const GLfloat *); - void (*ListParameteriSGIX)(GLuint, GLenum, GLint); - void (*ListParameterivSGIX)(GLuint, GLenum, const GLint *); - - /* 81. GL_SGIX_ir_instrument1 - no functions */ - - /* 82. ??? */ - - /* 83. GLX_SGIX_video_resize - GLX functions */ - - /* 84. GL_SGIX_texture_lod_bias - no functions */ - - /* 85. GLU_SGI_filter4_parameters - GLU functions */ - - /* 86. GLX_SGIX_dm_buffer - GLX functions */ - - /* 87. ??? */ - - /* 88. ??? */ - - /* 89. ??? */ - - /* 90. ??? */ - - /* 91. GLX_SGIX_swap_group - GLX functions */ - - /* 92. GLX_SGIX_swap_barrier - GLX functions */ - - /* 93. GL_EXT_index_texture - no functions */ - - /* 94. GL_EXT_index_material */ - void (*IndexMaterialEXT)(GLenum, GLenum); - - /* 95. GL_EXT_index_func */ - void (*IndexFuncEXT)(GLenum, GLfloat); - - /* 96. GL_EXT_index_array_formats - no functions */ - - /* 97. GL_EXT_compiled_vertex_array */ - void (*LockArraysEXT)(GLint, GLsizei); - void (*UnlockArraysEXT)(void); - - /* 98. GL_EXT_cull_vertex */ - void (*CullParameterfvEXT)(GLenum, const GLfloat *); - void (*CullParameterdvEXT)(GLenum, const GLdouble *); - - /* 99. ??? */ - - /* 100. GLU_EXT_nurbs_tessellator - GLU functions */ - - /* 173. GL_EXT/INGR_blend_func_separate */ - void (*BlendFuncSeparateINGR)(GLenum, GLenum, GLenum, GLenum); - - /* GL_MESA_window_pos */ - void (*WindowPos2dMESA)(GLdouble, GLdouble); - void (*WindowPos2dvMESA)(const GLdouble *); - void (*WindowPos2fMESA)(GLfloat, GLfloat); - void (*WindowPos2fvMESA)(const GLfloat *); - void (*WindowPos2iMESA)(GLint, GLint); - void (*WindowPos2ivMESA)(const GLint *); - void (*WindowPos2sMESA)(GLshort, GLshort); - void (*WindowPos2svMESA)(const GLshort *); - void (*WindowPos3dMESA)(GLdouble, GLdouble, GLdouble); - void (*WindowPos3dvMESA)(const GLdouble *); - void (*WindowPos3fMESA)(GLfloat, GLfloat, GLfloat); - void (*WindowPos3fvMESA)(const GLfloat *); - void (*WindowPos3iMESA)(GLint, GLint, GLint); - void (*WindowPos3ivMESA)(const GLint *); - void (*WindowPos3sMESA)(GLshort, GLshort, GLshort); - void (*WindowPos3svMESA)(const GLshort *); - void (*WindowPos4dMESA)(GLdouble, GLdouble, GLdouble, GLdouble); - void (*WindowPos4dvMESA)(const GLdouble *); - void (*WindowPos4fMESA)(GLfloat, GLfloat, GLfloat, GLfloat); - void (*WindowPos4fvMESA)(const GLfloat *); - void (*WindowPos4iMESA)(GLint, GLint, GLint, GLint); - void (*WindowPos4ivMESA)(const GLint *); - void (*WindowPos4sMESA)(GLshort, GLshort, GLshort, GLshort); - void (*WindowPos4svMESA)(const GLshort *); - - /* GL_MESA_resize_buffers */ - void (*ResizeBuffersMESA)(void); - - /* GL_ARB_transpose_matrix */ - void (*LoadTransposeMatrixdARB)(const GLdouble m[16]); - void (*LoadTransposeMatrixfARB)(const GLfloat m[16]); - void (*MultTransposeMatrixdARB)(const GLdouble m[16]); - void (*MultTransposeMatrixfARB)(const GLfloat m[16]); - + void (*NewList)(GLuint list, GLenum mode); /* 0 */ + void (*EndList)(void); /* 1 */ + void (*CallList)(GLuint list); /* 2 */ + void (*CallLists)(GLsizei n, GLenum type, const GLvoid * lists); /* 3 */ + void (*DeleteLists)(GLuint list, GLsizei range); /* 4 */ + GLuint (*GenLists)(GLsizei range); /* 5 */ + void (*ListBase)(GLuint base); /* 6 */ + void (*Begin)(GLenum mode); /* 7 */ + void (*Bitmap)(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte * bitmap); /* 8 */ + void (*Color3b)(GLbyte red, GLbyte green, GLbyte blue); /* 9 */ + void (*Color3bv)(const GLbyte * v); /* 10 */ + void (*Color3d)(GLdouble red, GLdouble green, GLdouble blue); /* 11 */ + void (*Color3dv)(const GLdouble * v); /* 12 */ + void (*Color3f)(GLfloat red, GLfloat green, GLfloat blue); /* 13 */ + void (*Color3fv)(const GLfloat * v); /* 14 */ + void (*Color3i)(GLint red, GLint green, GLint blue); /* 15 */ + void (*Color3iv)(const GLint * v); /* 16 */ + void (*Color3s)(GLshort red, GLshort green, GLshort blue); /* 17 */ + void (*Color3sv)(const GLshort * v); /* 18 */ + void (*Color3ub)(GLubyte red, GLubyte green, GLubyte blue); /* 19 */ + void (*Color3ubv)(const GLubyte * v); /* 20 */ + void (*Color3ui)(GLuint red, GLuint green, GLuint blue); /* 21 */ + void (*Color3uiv)(const GLuint * v); /* 22 */ + void (*Color3us)(GLushort red, GLushort green, GLushort blue); /* 23 */ + void (*Color3usv)(const GLushort * v); /* 24 */ + void (*Color4b)(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); /* 25 */ + void (*Color4bv)(const GLbyte * v); /* 26 */ + void (*Color4d)(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); /* 27 */ + void (*Color4dv)(const GLdouble * v); /* 28 */ + void (*Color4f)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); /* 29 */ + void (*Color4fv)(const GLfloat * v); /* 30 */ + void (*Color4i)(GLint red, GLint green, GLint blue, GLint alpha); /* 31 */ + void (*Color4iv)(const GLint * v); /* 32 */ + void (*Color4s)(GLshort red, GLshort green, GLshort blue, GLshort alpha); /* 33 */ + void (*Color4sv)(const GLshort * v); /* 34 */ + void (*Color4ub)(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); /* 35 */ + void (*Color4ubv)(const GLubyte * v); /* 36 */ + void (*Color4ui)(GLuint red, GLuint green, GLuint blue, GLuint alpha); /* 37 */ + void (*Color4uiv)(const GLuint * v); /* 38 */ + void (*Color4us)(GLushort red, GLushort green, GLushort blue, GLushort alpha); /* 39 */ + void (*Color4usv)(const GLushort * v); /* 40 */ + void (*EdgeFlag)(GLboolean flag); /* 41 */ + void (*EdgeFlagv)(const GLboolean * flag); /* 42 */ + void (*End)(void); /* 43 */ + void (*Indexd)(GLdouble c); /* 44 */ + void (*Indexdv)(const GLdouble * c); /* 45 */ + void (*Indexf)(GLfloat c); /* 46 */ + void (*Indexfv)(const GLfloat * c); /* 47 */ + void (*Indexi)(GLint c); /* 48 */ + void (*Indexiv)(const GLint * c); /* 49 */ + void (*Indexs)(GLshort c); /* 50 */ + void (*Indexsv)(const GLshort * c); /* 51 */ + void (*Normal3b)(GLbyte nx, GLbyte ny, GLbyte nz); /* 52 */ + void (*Normal3bv)(const GLbyte * v); /* 53 */ + void (*Normal3d)(GLdouble nx, GLdouble ny, GLdouble nz); /* 54 */ + void (*Normal3dv)(const GLdouble * v); /* 55 */ + void (*Normal3f)(GLfloat nx, GLfloat ny, GLfloat nz); /* 56 */ + void (*Normal3fv)(const GLfloat * v); /* 57 */ + void (*Normal3i)(GLint nx, GLint ny, GLint nz); /* 58 */ + void (*Normal3iv)(const GLint * v); /* 59 */ + void (*Normal3s)(GLshort nx, GLshort ny, GLshort nz); /* 60 */ + void (*Normal3sv)(const GLshort * v); /* 61 */ + void (*RasterPos2d)(GLdouble x, GLdouble y); /* 62 */ + void (*RasterPos2dv)(const GLdouble * v); /* 63 */ + void (*RasterPos2f)(GLfloat x, GLfloat y); /* 64 */ + void (*RasterPos2fv)(const GLfloat * v); /* 65 */ + void (*RasterPos2i)(GLint x, GLint y); /* 66 */ + void (*RasterPos2iv)(const GLint * v); /* 67 */ + void (*RasterPos2s)(GLshort x, GLshort y); /* 68 */ + void (*RasterPos2sv)(const GLshort * v); /* 69 */ + void (*RasterPos3d)(GLdouble x, GLdouble y, GLdouble z); /* 70 */ + void (*RasterPos3dv)(const GLdouble * v); /* 71 */ + void (*RasterPos3f)(GLfloat x, GLfloat y, GLfloat z); /* 72 */ + void (*RasterPos3fv)(const GLfloat * v); /* 73 */ + void (*RasterPos3i)(GLint x, GLint y, GLint z); /* 74 */ + void (*RasterPos3iv)(const GLint * v); /* 75 */ + void (*RasterPos3s)(GLshort x, GLshort y, GLshort z); /* 76 */ + void (*RasterPos3sv)(const GLshort * v); /* 77 */ + void (*RasterPos4d)(GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 78 */ + void (*RasterPos4dv)(const GLdouble * v); /* 79 */ + void (*RasterPos4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 80 */ + void (*RasterPos4fv)(const GLfloat * v); /* 81 */ + void (*RasterPos4i)(GLint x, GLint y, GLint z, GLint w); /* 82 */ + void (*RasterPos4iv)(const GLint * v); /* 83 */ + void (*RasterPos4s)(GLshort x, GLshort y, GLshort z, GLshort w); /* 84 */ + void (*RasterPos4sv)(const GLshort * v); /* 85 */ + void (*Rectd)(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); /* 86 */ + void (*Rectdv)(const GLdouble * v1, const GLdouble * v2); /* 87 */ + void (*Rectf)(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); /* 88 */ + void (*Rectfv)(const GLfloat * v1, const GLfloat * v2); /* 89 */ + void (*Recti)(GLint x1, GLint y1, GLint x2, GLint y2); /* 90 */ + void (*Rectiv)(const GLint * v1, const GLint * v2); /* 91 */ + void (*Rects)(GLshort x1, GLshort y1, GLshort x2, GLshort y2); /* 92 */ + void (*Rectsv)(const GLshort * v1, const GLshort * v2); /* 93 */ + void (*TexCoord1d)(GLdouble s); /* 94 */ + void (*TexCoord1dv)(const GLdouble * v); /* 95 */ + void (*TexCoord1f)(GLfloat s); /* 96 */ + void (*TexCoord1fv)(const GLfloat * v); /* 97 */ + void (*TexCoord1i)(GLint s); /* 98 */ + void (*TexCoord1iv)(const GLint * v); /* 99 */ + void (*TexCoord1s)(GLshort s); /* 100 */ + void (*TexCoord1sv)(const GLshort * v); /* 101 */ + void (*TexCoord2d)(GLdouble s, GLdouble t); /* 102 */ + void (*TexCoord2dv)(const GLdouble * v); /* 103 */ + void (*TexCoord2f)(GLfloat s, GLfloat t); /* 104 */ + void (*TexCoord2fv)(const GLfloat * v); /* 105 */ + void (*TexCoord2i)(GLint s, GLint t); /* 106 */ + void (*TexCoord2iv)(const GLint * v); /* 107 */ + void (*TexCoord2s)(GLshort s, GLshort t); /* 108 */ + void (*TexCoord2sv)(const GLshort * v); /* 109 */ + void (*TexCoord3d)(GLdouble s, GLdouble t, GLdouble r); /* 110 */ + void (*TexCoord3dv)(const GLdouble * v); /* 111 */ + void (*TexCoord3f)(GLfloat s, GLfloat t, GLfloat r); /* 112 */ + void (*TexCoord3fv)(const GLfloat * v); /* 113 */ + void (*TexCoord3i)(GLint s, GLint t, GLint r); /* 114 */ + void (*TexCoord3iv)(const GLint * v); /* 115 */ + void (*TexCoord3s)(GLshort s, GLshort t, GLshort r); /* 116 */ + void (*TexCoord3sv)(const GLshort * v); /* 117 */ + void (*TexCoord4d)(GLdouble s, GLdouble t, GLdouble r, GLdouble q); /* 118 */ + void (*TexCoord4dv)(const GLdouble * v); /* 119 */ + void (*TexCoord4f)(GLfloat s, GLfloat t, GLfloat r, GLfloat q); /* 120 */ + void (*TexCoord4fv)(const GLfloat * v); /* 121 */ + void (*TexCoord4i)(GLint s, GLint t, GLint r, GLint q); /* 122 */ + void (*TexCoord4iv)(const GLint * v); /* 123 */ + void (*TexCoord4s)(GLshort s, GLshort t, GLshort r, GLshort q); /* 124 */ + void (*TexCoord4sv)(const GLshort * v); /* 125 */ + void (*Vertex2d)(GLdouble x, GLdouble y); /* 126 */ + void (*Vertex2dv)(const GLdouble * v); /* 127 */ + void (*Vertex2f)(GLfloat x, GLfloat y); /* 128 */ + void (*Vertex2fv)(const GLfloat * v); /* 129 */ + void (*Vertex2i)(GLint x, GLint y); /* 130 */ + void (*Vertex2iv)(const GLint * v); /* 131 */ + void (*Vertex2s)(GLshort x, GLshort y); /* 132 */ + void (*Vertex2sv)(const GLshort * v); /* 133 */ + void (*Vertex3d)(GLdouble x, GLdouble y, GLdouble z); /* 134 */ + void (*Vertex3dv)(const GLdouble * v); /* 135 */ + void (*Vertex3f)(GLfloat x, GLfloat y, GLfloat z); /* 136 */ + void (*Vertex3fv)(const GLfloat * v); /* 137 */ + void (*Vertex3i)(GLint x, GLint y, GLint z); /* 138 */ + void (*Vertex3iv)(const GLint * v); /* 139 */ + void (*Vertex3s)(GLshort x, GLshort y, GLshort z); /* 140 */ + void (*Vertex3sv)(const GLshort * v); /* 141 */ + void (*Vertex4d)(GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 142 */ + void (*Vertex4dv)(const GLdouble * v); /* 143 */ + void (*Vertex4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 144 */ + void (*Vertex4fv)(const GLfloat * v); /* 145 */ + void (*Vertex4i)(GLint x, GLint y, GLint z, GLint w); /* 146 */ + void (*Vertex4iv)(const GLint * v); /* 147 */ + void (*Vertex4s)(GLshort x, GLshort y, GLshort z, GLshort w); /* 148 */ + void (*Vertex4sv)(const GLshort * v); /* 149 */ + void (*ClipPlane)(GLenum plane, const GLdouble * equation); /* 150 */ + void (*ColorMaterial)(GLenum face, GLenum mode); /* 151 */ + void (*CullFace)(GLenum mode); /* 152 */ + void (*Fogf)(GLenum pname, GLfloat param); /* 153 */ + void (*Fogfv)(GLenum pname, const GLfloat * params); /* 154 */ + void (*Fogi)(GLenum pname, GLint param); /* 155 */ + void (*Fogiv)(GLenum pname, const GLint * params); /* 156 */ + void (*FrontFace)(GLenum mode); /* 157 */ + void (*Hint)(GLenum target, GLenum mode); /* 158 */ + void (*Lightf)(GLenum light, GLenum pname, GLfloat param); /* 159 */ + void (*Lightfv)(GLenum light, GLenum pname, const GLfloat * params); /* 160 */ + void (*Lighti)(GLenum light, GLenum pname, GLint param); /* 161 */ + void (*Lightiv)(GLenum light, GLenum pname, const GLint * params); /* 162 */ + void (*LightModelf)(GLenum pname, GLfloat param); /* 163 */ + void (*LightModelfv)(GLenum pname, const GLfloat * params); /* 164 */ + void (*LightModeli)(GLenum pname, GLint param); /* 165 */ + void (*LightModeliv)(GLenum pname, const GLint * params); /* 166 */ + void (*LineStipple)(GLint factor, GLushort pattern); /* 167 */ + void (*LineWidth)(GLfloat width); /* 168 */ + void (*Materialf)(GLenum face, GLenum pname, GLfloat param); /* 169 */ + void (*Materialfv)(GLenum face, GLenum pname, const GLfloat * params); /* 170 */ + void (*Materiali)(GLenum face, GLenum pname, GLint param); /* 171 */ + void (*Materialiv)(GLenum face, GLenum pname, const GLint * params); /* 172 */ + void (*PointSize)(GLfloat size); /* 173 */ + void (*PolygonMode)(GLenum face, GLenum mode); /* 174 */ + void (*PolygonStipple)(const GLubyte * mask); /* 175 */ + void (*Scissor)(GLint x, GLint y, GLsizei width, GLsizei height); /* 176 */ + void (*ShadeModel)(GLenum mode); /* 177 */ + void (*TexParameterf)(GLenum target, GLenum pname, GLfloat param); /* 178 */ + void (*TexParameterfv)(GLenum target, GLenum pname, const GLfloat * params); /* 179 */ + void (*TexParameteri)(GLenum target, GLenum pname, GLint param); /* 180 */ + void (*TexParameteriv)(GLenum target, GLenum pname, const GLint * params); /* 181 */ + void (*TexImage1D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid * pixels); /* 182 */ + void (*TexImage2D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid * pixels); /* 183 */ + void (*TexEnvf)(GLenum target, GLenum pname, GLfloat param); /* 184 */ + void (*TexEnvfv)(GLenum target, GLenum pname, const GLfloat * params); /* 185 */ + void (*TexEnvi)(GLenum target, GLenum pname, GLint param); /* 186 */ + void (*TexEnviv)(GLenum target, GLenum pname, const GLint * params); /* 187 */ + void (*TexGend)(GLenum coord, GLenum pname, GLdouble param); /* 188 */ + void (*TexGendv)(GLenum coord, GLenum pname, const GLdouble * params); /* 189 */ + void (*TexGenf)(GLenum coord, GLenum pname, GLfloat param); /* 190 */ + void (*TexGenfv)(GLenum coord, GLenum pname, const GLfloat * params); /* 191 */ + void (*TexGeni)(GLenum coord, GLenum pname, GLint param); /* 192 */ + void (*TexGeniv)(GLenum coord, GLenum pname, const GLint * params); /* 193 */ + void (*FeedbackBuffer)(GLsizei size, GLenum type, GLfloat * buffer); /* 194 */ + void (*SelectBuffer)(GLsizei size, GLuint * buffer); /* 195 */ + GLint (*RenderMode)(GLenum mode); /* 196 */ + void (*InitNames)(void); /* 197 */ + void (*LoadName)(GLuint name); /* 198 */ + void (*PassThrough)(GLfloat token); /* 199 */ + void (*PopName)(void); /* 200 */ + void (*PushName)(GLuint name); /* 201 */ + void (*DrawBuffer)(GLenum mode); /* 202 */ + void (*Clear)(GLbitfield mask); /* 203 */ + void (*ClearAccum)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); /* 204 */ + void (*ClearIndex)(GLfloat c); /* 205 */ + void (*ClearColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); /* 206 */ + void (*ClearStencil)(GLint s); /* 207 */ + void (*ClearDepth)(GLclampd depth); /* 208 */ + void (*StencilMask)(GLuint mask); /* 209 */ + void (*ColorMask)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); /* 210 */ + void (*DepthMask)(GLboolean flag); /* 211 */ + void (*IndexMask)(GLuint mask); /* 212 */ + void (*Accum)(GLenum op, GLfloat value); /* 213 */ + void (*Disable)(GLenum cap); /* 214 */ + void (*Enable)(GLenum cap); /* 215 */ + void (*Finish)(void); /* 216 */ + void (*Flush)(void); /* 217 */ + void (*PopAttrib)(void); /* 218 */ + void (*PushAttrib)(GLbitfield mask); /* 219 */ + void (*Map1d)(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble * points); /* 220 */ + void (*Map1f)(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat * points); /* 221 */ + void (*Map2d)(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble * points); /* 222 */ + void (*Map2f)(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat * points); /* 223 */ + void (*MapGrid1d)(GLint un, GLdouble u1, GLdouble u2); /* 224 */ + void (*MapGrid1f)(GLint un, GLfloat u1, GLfloat u2); /* 225 */ + void (*MapGrid2d)(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); /* 226 */ + void (*MapGrid2f)(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); /* 227 */ + void (*EvalCoord1d)(GLdouble u); /* 228 */ + void (*EvalCoord1dv)(const GLdouble * u); /* 229 */ + void (*EvalCoord1f)(GLfloat u); /* 230 */ + void (*EvalCoord1fv)(const GLfloat * u); /* 231 */ + void (*EvalCoord2d)(GLdouble u, GLdouble v); /* 232 */ + void (*EvalCoord2dv)(const GLdouble * u); /* 233 */ + void (*EvalCoord2f)(GLfloat u, GLfloat v); /* 234 */ + void (*EvalCoord2fv)(const GLfloat * u); /* 235 */ + void (*EvalMesh1)(GLenum mode, GLint i1, GLint i2); /* 236 */ + void (*EvalPoint1)(GLint i); /* 237 */ + void (*EvalMesh2)(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); /* 238 */ + void (*EvalPoint2)(GLint i, GLint j); /* 239 */ + void (*AlphaFunc)(GLenum func, GLclampf ref); /* 240 */ + void (*BlendFunc)(GLenum sfactor, GLenum dfactor); /* 241 */ + void (*LogicOp)(GLenum opcode); /* 242 */ + void (*StencilFunc)(GLenum func, GLint ref, GLuint mask); /* 243 */ + void (*StencilOp)(GLenum fail, GLenum zfail, GLenum zpass); /* 244 */ + void (*DepthFunc)(GLenum func); /* 245 */ + void (*PixelZoom)(GLfloat xfactor, GLfloat yfactor); /* 246 */ + void (*PixelTransferf)(GLenum pname, GLfloat param); /* 247 */ + void (*PixelTransferi)(GLenum pname, GLint param); /* 248 */ + void (*PixelStoref)(GLenum pname, GLfloat param); /* 249 */ + void (*PixelStorei)(GLenum pname, GLint param); /* 250 */ + void (*PixelMapfv)(GLenum map, GLint mapsize, const GLfloat * values); /* 251 */ + void (*PixelMapuiv)(GLenum map, GLint mapsize, const GLuint * values); /* 252 */ + void (*PixelMapusv)(GLenum map, GLint mapsize, const GLushort * values); /* 253 */ + void (*ReadBuffer)(GLenum mode); /* 254 */ + void (*CopyPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); /* 255 */ + void (*ReadPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid * pixels); /* 256 */ + void (*DrawPixels)(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels); /* 257 */ + void (*GetBooleanv)(GLenum pname, GLboolean * params); /* 258 */ + void (*GetClipPlane)(GLenum plane, GLdouble * equation); /* 259 */ + void (*GetDoublev)(GLenum pname, GLdouble * params); /* 260 */ + GLenum (*GetError)(void); /* 261 */ + void (*GetFloatv)(GLenum pname, GLfloat * params); /* 262 */ + void (*GetIntegerv)(GLenum pname, GLint * params); /* 263 */ + void (*GetLightfv)(GLenum light, GLenum pname, GLfloat * params); /* 264 */ + void (*GetLightiv)(GLenum light, GLenum pname, GLint * params); /* 265 */ + void (*GetMapdv)(GLenum target, GLenum query, GLdouble * v); /* 266 */ + void (*GetMapfv)(GLenum target, GLenum query, GLfloat * v); /* 267 */ + void (*GetMapiv)(GLenum target, GLenum query, GLint * v); /* 268 */ + void (*GetMaterialfv)(GLenum face, GLenum pname, GLfloat * params); /* 269 */ + void (*GetMaterialiv)(GLenum face, GLenum pname, GLint * params); /* 270 */ + void (*GetPixelMapfv)(GLenum map, GLfloat * values); /* 271 */ + void (*GetPixelMapuiv)(GLenum map, GLuint * values); /* 272 */ + void (*GetPixelMapusv)(GLenum map, GLushort * values); /* 273 */ + void (*GetPolygonStipple)(GLubyte * mask); /* 274 */ + const GLubyte * (*GetString)(GLenum name); /* 275 */ + void (*GetTexEnvfv)(GLenum target, GLenum pname, GLfloat * params); /* 276 */ + void (*GetTexEnviv)(GLenum target, GLenum pname, GLint * params); /* 277 */ + void (*GetTexGendv)(GLenum coord, GLenum pname, GLdouble * params); /* 278 */ + void (*GetTexGenfv)(GLenum coord, GLenum pname, GLfloat * params); /* 279 */ + void (*GetTexGeniv)(GLenum coord, GLenum pname, GLint * params); /* 280 */ + void (*GetTexImage)(GLenum target, GLint level, GLenum format, GLenum type, GLvoid * pixels); /* 281 */ + void (*GetTexParameterfv)(GLenum target, GLenum pname, GLfloat * params); /* 282 */ + void (*GetTexParameteriv)(GLenum target, GLenum pname, GLint * params); /* 283 */ + void (*GetTexLevelParameterfv)(GLenum target, GLint level, GLenum pname, GLfloat * params); /* 284 */ + void (*GetTexLevelParameteriv)(GLenum target, GLint level, GLenum pname, GLint * params); /* 285 */ + GLboolean (*IsEnabled)(GLenum cap); /* 286 */ + GLboolean (*IsList)(GLuint list); /* 287 */ + void (*DepthRange)(GLclampd near, GLclampd far); /* 288 */ + void (*Frustum)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); /* 289 */ + void (*LoadIdentity)(void); /* 290 */ + void (*LoadMatrixf)(const GLfloat * m); /* 291 */ + void (*LoadMatrixd)(const GLdouble * m); /* 292 */ + void (*MatrixMode)(GLenum mode); /* 293 */ + void (*MultMatrixf)(const GLfloat * m); /* 294 */ + void (*MultMatrixd)(const GLdouble * m); /* 295 */ + void (*Ortho)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); /* 296 */ + void (*PopMatrix)(void); /* 297 */ + void (*PushMatrix)(void); /* 298 */ + void (*Rotated)(GLdouble angle, GLdouble x, GLdouble y, GLdouble z); /* 299 */ + void (*Rotatef)(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); /* 300 */ + void (*Scaled)(GLdouble x, GLdouble y, GLdouble z); /* 301 */ + void (*Scalef)(GLfloat x, GLfloat y, GLfloat z); /* 302 */ + void (*Translated)(GLdouble x, GLdouble y, GLdouble z); /* 303 */ + void (*Translatef)(GLfloat x, GLfloat y, GLfloat z); /* 304 */ + void (*Viewport)(GLint x, GLint y, GLsizei width, GLsizei height); /* 305 */ + void (*ArrayElement)(GLint i); /* 306 */ + void (*BindTexture)(GLenum target, GLenum texture); /* 307 */ + void (*ColorPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 308 */ + void (*DisableClientState)(GLenum array); /* 309 */ + void (*DrawArrays)(GLenum mode, GLint first, GLsizei count); /* 310 */ + void (*DrawElements)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices); /* 311 */ + void (*EdgeFlagPointer)(GLsizei stride, const GLvoid * pointer); /* 312 */ + void (*EnableClientState)(GLenum array); /* 313 */ + void (*IndexPointer)(GLenum type, GLsizei stride, const GLvoid * pointer); /* 314 */ + void (*Indexub)(GLubyte c); /* 315 */ + void (*Indexubv)(const GLubyte * c); /* 316 */ + void (*InterleavedArrays)(GLenum format, GLsizei stride, const GLvoid * pointer); /* 317 */ + void (*NormalPointer)(GLenum type, GLsizei stride, const GLvoid * pointer); /* 318 */ + void (*PolygonOffset)(GLfloat factor, GLfloat units); /* 319 */ + void (*TexCoordPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 320 */ + void (*VertexPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 321 */ + GLboolean (*AreTexturesResident)(GLsizei n, const GLenum * textures, GLboolean * residences); /* 322 */ + void (*CopyTexImage1D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); /* 323 */ + void (*CopyTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); /* 324 */ + void (*CopyTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); /* 325 */ + void (*CopyTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); /* 326 */ + void (*DeleteTextures)(GLsizei n, const GLenum * textures); /* 327 */ + void (*GenTextures)(GLsizei n, GLenum * textures); /* 328 */ + void (*GetPointerv)(GLenum pname, GLvoid * * params); /* 329 */ + GLboolean (*IsTexture)(GLenum texture); /* 330 */ + void (*PrioritizeTextures)(GLsizei n, const GLenum * textures, const GLclampf * priorities); /* 331 */ + void (*TexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid * pixels); /* 332 */ + void (*TexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels); /* 333 */ + void (*PopClientAttrib)(void); /* 334 */ + void (*PushClientAttrib)(GLbitfield mask); /* 335 */ + void (*BlendColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); /* 336 */ + void (*BlendEquation)(GLenum mode); /* 337 */ + void (*DrawRangeElements)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices); /* 338 */ + void (*ColorTable)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * table); /* 339 */ + void (*ColorTableParameterfv)(GLenum target, GLenum pname, const GLfloat * params); /* 340 */ + void (*ColorTableParameteriv)(GLenum target, GLenum pname, const GLint * params); /* 341 */ + void (*CopyColorTable)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); /* 342 */ + void (*GetColorTable)(GLenum target, GLenum format, GLenum type, GLvoid * table); /* 343 */ + void (*GetColorTableParameterfv)(GLenum target, GLenum pname, GLfloat * params); /* 344 */ + void (*GetColorTableParameteriv)(GLenum target, GLenum pname, GLint * params); /* 345 */ + void (*ColorSubTable)(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid * data); /* 346 */ + void (*CopyColorSubTable)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); /* 347 */ + void (*ConvolutionFilter1D)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * image); /* 348 */ + void (*ConvolutionFilter2D)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * image); /* 349 */ + void (*ConvolutionParameterf)(GLenum target, GLenum pname, GLfloat params); /* 350 */ + void (*ConvolutionParameterfv)(GLenum target, GLenum pname, const GLfloat * params); /* 351 */ + void (*ConvolutionParameteri)(GLenum target, GLenum pname, GLint params); /* 352 */ + void (*ConvolutionParameteriv)(GLenum target, GLenum pname, const GLint * params); /* 353 */ + void (*CopyConvolutionFilter1D)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); /* 354 */ + void (*CopyConvolutionFilter2D)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); /* 355 */ + void (*GetConvolutionFilter)(GLenum target, GLenum format, GLenum type, GLvoid * image); /* 356 */ + void (*GetConvolutionParameterfv)(GLenum target, GLenum pname, GLfloat * params); /* 357 */ + void (*GetConvolutionParameteriv)(GLenum target, GLenum pname, GLint * params); /* 358 */ + void (*GetSeparableFilter)(GLenum target, GLenum format, GLenum type, GLvoid * row, GLvoid * column, GLvoid * span); /* 359 */ + void (*SeparableFilter2D)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * row, const GLvoid * column); /* 360 */ + void (*GetHistogram)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values); /* 361 */ + void (*GetHistogramParameterfv)(GLenum target, GLenum pname, GLfloat * params); /* 362 */ + void (*GetHistogramParameteriv)(GLenum target, GLenum pname, GLint * params); /* 363 */ + void (*GetMinmax)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values); /* 364 */ + void (*GetMinmaxParameterfv)(GLenum target, GLenum pname, GLfloat * params); /* 365 */ + void (*GetMinmaxParameteriv)(GLenum target, GLenum pname, GLint * params); /* 366 */ + void (*Histogram)(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); /* 367 */ + void (*Minmax)(GLenum target, GLenum internalformat, GLboolean sink); /* 368 */ + void (*ResetHistogram)(GLenum target); /* 369 */ + void (*ResetMinmax)(GLenum target); /* 370 */ + void (*TexImage3D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * pixels); /* 371 */ + void (*TexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid * pixels); /* 372 */ + void (*CopyTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); /* 373 */ + void (*ActiveTextureARB)(GLenum texture); /* 374 */ + void (*ClientActiveTextureARB)(GLenum texture); /* 375 */ + void (*MultiTexCoord1dARB)(GLenum target, GLdouble s); /* 376 */ + void (*MultiTexCoord1dvARB)(GLenum target, const GLdouble * v); /* 377 */ + void (*MultiTexCoord1fARB)(GLenum target, GLfloat s); /* 378 */ + void (*MultiTexCoord1fvARB)(GLenum target, const GLfloat * v); /* 379 */ + void (*MultiTexCoord1iARB)(GLenum target, GLint s); /* 380 */ + void (*MultiTexCoord1ivARB)(GLenum target, const GLint * v); /* 381 */ + void (*MultiTexCoord1sARB)(GLenum target, GLshort s); /* 382 */ + void (*MultiTexCoord1svARB)(GLenum target, const GLshort * v); /* 383 */ + void (*MultiTexCoord2dARB)(GLenum target, GLdouble s, GLdouble t); /* 384 */ + void (*MultiTexCoord2dvARB)(GLenum target, const GLdouble * v); /* 385 */ + void (*MultiTexCoord2fARB)(GLenum target, GLfloat s, GLfloat t); /* 386 */ + void (*MultiTexCoord2fvARB)(GLenum target, const GLfloat * v); /* 387 */ + void (*MultiTexCoord2iARB)(GLenum target, GLint s, GLint t); /* 388 */ + void (*MultiTexCoord2ivARB)(GLenum target, const GLint * v); /* 389 */ + void (*MultiTexCoord2sARB)(GLenum target, GLshort s, GLshort t); /* 390 */ + void (*MultiTexCoord2svARB)(GLenum target, const GLshort * v); /* 391 */ + void (*MultiTexCoord3dARB)(GLenum target, GLdouble s, GLdouble t, GLdouble r); /* 392 */ + void (*MultiTexCoord3dvARB)(GLenum target, const GLdouble * v); /* 393 */ + void (*MultiTexCoord3fARB)(GLenum target, GLfloat s, GLfloat t, GLfloat r); /* 394 */ + void (*MultiTexCoord3fvARB)(GLenum target, const GLfloat * v); /* 395 */ + void (*MultiTexCoord3iARB)(GLenum target, GLint s, GLint t, GLint r); /* 396 */ + void (*MultiTexCoord3ivARB)(GLenum target, const GLint * v); /* 397 */ + void (*MultiTexCoord3sARB)(GLenum target, GLshort s, GLshort t, GLshort r); /* 398 */ + void (*MultiTexCoord3svARB)(GLenum target, const GLshort * v); /* 399 */ + void (*MultiTexCoord4dARB)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); /* 400 */ + void (*MultiTexCoord4dvARB)(GLenum target, const GLdouble * v); /* 401 */ + void (*MultiTexCoord4fARB)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); /* 402 */ + void (*MultiTexCoord4fvARB)(GLenum target, const GLfloat * v); /* 403 */ + void (*MultiTexCoord4iARB)(GLenum target, GLint s, GLint t, GLint r, GLint q); /* 404 */ + void (*MultiTexCoord4ivARB)(GLenum target, const GLint * v); /* 405 */ + void (*MultiTexCoord4sARB)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); /* 406 */ + void (*MultiTexCoord4svARB)(GLenum target, const GLshort * v); /* 407 */ + void (*LoadTransposeMatrixfARB)(const GLfloat * m); /* 408 */ + void (*LoadTransposeMatrixdARB)(const GLdouble * m); /* 409 */ + void (*MultTransposeMatrixfARB)(const GLfloat * m); /* 410 */ + void (*MultTransposeMatrixdARB)(const GLdouble * m); /* 411 */ + void (*SampleCoverageARB)(GLclampf value, GLboolean invert); /* 412 */ + void (*SamplePassARB)(GLenum pass); /* 413 */ + void (*PolygonOffsetEXT)(GLfloat factor, GLfloat bias); /* 414 */ + void (*GetTexFilterFuncSGIS)(GLenum target, GLenum filter, GLfloat * weights); /* 415 */ + void (*TexFilterFuncSGIS)(GLenum target, GLenum filter, GLsizei n, const GLfloat * weights); /* 416 */ + void (*GetHistogramEXT)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values); /* 417 */ + void (*GetHistogramParameterfvEXT)(GLenum target, GLenum pname, GLfloat * params); /* 418 */ + void (*GetHistogramParameterivEXT)(GLenum target, GLenum pname, GLint * params); /* 419 */ + void (*GetMinmaxEXT)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values); /* 420 */ + void (*GetMinmaxParameterfvEXT)(GLenum target, GLenum pname, GLfloat * params); /* 421 */ + void (*GetMinmaxParameterivEXT)(GLenum target, GLenum pname, GLint * params); /* 422 */ + void (*GetConvolutionFilterEXT)(GLenum target, GLenum format, GLenum type, GLvoid * image); /* 423 */ + void (*GetConvolutionParameterfvEXT)(GLenum target, GLenum pname, GLfloat * params); /* 424 */ + void (*GetConvolutionParameterivEXT)(GLenum target, GLenum pname, GLint * params); /* 425 */ + void (*GetSeparableFilterEXT)(GLenum target, GLenum format, GLenum type, GLvoid * row, GLvoid * column, GLvoid * span); /* 426 */ + void (*GetColorTableSGI)(GLenum target, GLenum format, GLenum type, GLvoid * table); /* 427 */ + void (*GetColorTableParameterfvSGI)(GLenum target, GLenum pname, GLfloat * params); /* 428 */ + void (*GetColorTableParameterivSGI)(GLenum target, GLenum pname, GLint * params); /* 429 */ + void (*PixelTexGenSGIX)(GLenum mode); /* 430 */ + void (*PixelTexGenParameteriSGIS)(GLenum pname, GLint param); /* 431 */ + void (*PixelTexGenParameterivSGIS)(GLenum pname, const GLint * params); /* 432 */ + void (*PixelTexGenParameterfSGIS)(GLenum pname, GLfloat param); /* 433 */ + void (*PixelTexGenParameterfvSGIS)(GLenum pname, const GLfloat * params); /* 434 */ + void (*GetPixelTexGenParameterivSGIS)(GLenum pname, GLint * params); /* 435 */ + void (*GetPixelTexGenParameterfvSGIS)(GLenum pname, GLfloat * params); /* 436 */ + void (*TexImage4DSGIS)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const GLvoid * pixels); /* 437 */ + void (*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); /* 438 */ + GLboolean (*AreTexturesResidentEXT)(GLsizei n, const GLenum * textures, GLboolean * residences); /* 439 */ + void (*GenTexturesEXT)(GLsizei n, GLenum * textures); /* 440 */ + GLboolean (*IsTextureEXT)(GLenum texture); /* 441 */ + void (*DetailTexFuncSGIS)(GLenum target, GLsizei n, const GLfloat * points); /* 442 */ + void (*GetDetailTexFuncSGIS)(GLenum target, GLfloat * points); /* 443 */ + void (*SharpenTexFuncSGIS)(GLenum target, GLsizei n, const GLfloat * points); /* 444 */ + void (*GetSharpenTexFuncSGIS)(GLenum target, GLfloat * points); /* 445 */ + void (*SampleMaskSGIS)(GLclampf value, GLboolean invert); /* 446 */ + void (*SamplePatternSGIS)(GLenum pattern); /* 447 */ + void (*ColorPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 448 */ + void (*EdgeFlagPointerEXT)(GLsizei stride, GLsizei count, const GLboolean * pointer); /* 449 */ + void (*IndexPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 450 */ + void (*NormalPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 451 */ + void (*TexCoordPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 452 */ + void (*VertexPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 453 */ + void (*SpriteParameterfSGIX)(GLenum pname, GLfloat param); /* 454 */ + void (*SpriteParameterfvSGIX)(GLenum pname, const GLfloat * params); /* 455 */ + void (*SpriteParameteriSGIX)(GLenum pname, GLint param); /* 456 */ + void (*SpriteParameterivSGIX)(GLenum pname, const GLint * params); /* 457 */ + void (*PointParameterfEXT)(GLenum pname, GLfloat param); /* 458 */ + void (*PointParameterfvEXT)(GLenum pname, const GLfloat * params); /* 459 */ + GLint (*GetInstrumentsSGIX)(void); /* 460 */ + void (*InstrumentsBufferSGIX)(GLsizei size, GLint * buffer); /* 461 */ + GLint (*PollInstrumentsSGIX)(GLint * marker_p); /* 462 */ + void (*ReadInstrumentsSGIX)(GLint marker); /* 463 */ + void (*StartInstrumentsSGIX)(void); /* 464 */ + void (*StopInstrumentsSGIX)(GLint marker); /* 465 */ + void (*FrameZoomSGIX)(GLint factor); /* 466 */ + void (*TagSampleBufferSGIX)(void); /* 467 */ + void (*ReferencePlaneSGIX)(const GLdouble * equation); /* 468 */ + void (*FlushRasterSGIX)(void); /* 469 */ + void (*GetListParameterfvSGIX)(GLuint list, GLenum pname, GLfloat * params); /* 470 */ + void (*GetListParameterivSGIX)(GLuint list, GLenum pname, GLint * params); /* 471 */ + void (*ListParameterfSGIX)(GLuint list, GLenum pname, GLfloat param); /* 472 */ + void (*ListParameterfvSGIX)(GLuint list, GLenum pname, const GLfloat * params); /* 473 */ + void (*ListParameteriSGIX)(GLuint list, GLenum pname, GLint param); /* 474 */ + void (*ListParameterivSGIX)(GLuint list, GLenum pname, const GLint * params); /* 475 */ + void (*FragmentColorMaterialSGIX)(GLenum face, GLenum mode); /* 476 */ + void (*FragmentLightfSGIX)(GLenum light, GLenum pname, GLfloat param); /* 477 */ + void (*FragmentLightfvSGIX)(GLenum light, GLenum pname, const GLfloat * params); /* 478 */ + void (*FragmentLightiSGIX)(GLenum light, GLenum pname, GLint param); /* 479 */ + void (*FragmentLightivSGIX)(GLenum light, GLenum pname, const GLint * params); /* 480 */ + void (*FragmentLightModelfSGIX)(GLenum pname, GLfloat param); /* 481 */ + void (*FragmentLightModelfvSGIX)(GLenum pname, const GLfloat * params); /* 482 */ + void (*FragmentLightModeliSGIX)(GLenum pname, GLint param); /* 483 */ + void (*FragmentLightModelivSGIX)(GLenum pname, const GLint * params); /* 484 */ + void (*FragmentMaterialfSGIX)(GLenum face, GLenum pname, GLfloat param); /* 485 */ + void (*FragmentMaterialfvSGIX)(GLenum face, GLenum pname, const GLfloat * params); /* 486 */ + void (*FragmentMaterialiSGIX)(GLenum face, GLenum pname, GLint param); /* 487 */ + void (*FragmentMaterialivSGIX)(GLenum face, GLenum pname, const GLint * params); /* 488 */ + void (*GetFragmentLightfvSGIX)(GLenum light, GLenum pname, GLfloat * params); /* 489 */ + void (*GetFragmentLightivSGIX)(GLenum light, GLenum pname, GLint * params); /* 490 */ + void (*GetFragmentMaterialfvSGIX)(GLenum face, GLenum pname, GLfloat * params); /* 491 */ + void (*GetFragmentMaterialivSGIX)(GLenum face, GLenum pname, GLint * params); /* 492 */ + void (*LightEnviSGIX)(GLenum pname, GLint param); /* 493 */ + void (*VertexWeightfEXT)(GLfloat weight); /* 494 */ + void (*VertexWeightfvEXT)(const GLfloat * weight); /* 495 */ + void (*VertexWeightPointerEXT)(GLsizei size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 496 */ + void (*FlushVertexArrayRangeNV)(void); /* 497 */ + void (*VertexArrayRangeNV)(GLsizei size, const GLvoid * pointer); /* 498 */ + void (*CombinerParameterfvNV)(GLenum pname, const GLfloat * params); /* 499 */ + void (*CombinerParameterfNV)(GLenum pname, GLfloat param); /* 500 */ + void (*CombinerParameterivNV)(GLenum pname, const GLint * params); /* 501 */ + void (*CombinerParameteriNV)(GLenum pname, GLint param); /* 502 */ + void (*CombinerInputNV)(GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); /* 503 */ + void (*CombinerOutputNV)(GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); /* 504 */ + void (*FinalCombinerInputNV)(GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); /* 505 */ + void (*GetCombinerInputParameterfvNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat * params); /* 506 */ + void (*GetCombinerInputParameterivNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint * params); /* 507 */ + void (*GetCombinerOutputParameterfvNV)(GLenum stage, GLenum portion, GLenum pname, GLfloat * params); /* 508 */ + void (*GetCombinerOutputParameterivNV)(GLenum stage, GLenum portion, GLenum pname, GLint * params); /* 509 */ + void (*GetFinalCombinerInputParameterfvNV)(GLenum variable, GLenum pname, GLfloat * params); /* 510 */ + void (*GetFinalCombinerInputParameterivNV)(GLenum variable, GLenum pname, GLint * params); /* 511 */ + void (*ResizeBuffersMESA)(void); /* 512 */ + void (*WindowPos2dMESA)(GLdouble x, GLdouble y); /* 513 */ + void (*WindowPos2dvMESA)(const GLdouble * v); /* 514 */ + void (*WindowPos2fMESA)(GLfloat x, GLfloat y); /* 515 */ + void (*WindowPos2fvMESA)(const GLfloat * v); /* 516 */ + void (*WindowPos2iMESA)(GLint x, GLint y); /* 517 */ + void (*WindowPos2ivMESA)(const GLint * v); /* 518 */ + void (*WindowPos2sMESA)(GLshort x, GLshort y); /* 519 */ + void (*WindowPos2svMESA)(const GLshort * v); /* 520 */ + void (*WindowPos3dMESA)(GLdouble x, GLdouble y, GLdouble z); /* 521 */ + void (*WindowPos3dvMESA)(const GLdouble * v); /* 522 */ + void (*WindowPos3fMESA)(GLfloat x, GLfloat y, GLfloat z); /* 523 */ + void (*WindowPos3fvMESA)(const GLfloat * v); /* 524 */ + void (*WindowPos3iMESA)(GLint x, GLint y, GLint z); /* 525 */ + void (*WindowPos3ivMESA)(const GLint * v); /* 526 */ + void (*WindowPos3sMESA)(GLshort x, GLshort y, GLshort z); /* 527 */ + void (*WindowPos3svMESA)(const GLshort * v); /* 528 */ + void (*WindowPos4dMESA)(GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 529 */ + void (*WindowPos4dvMESA)(const GLdouble * v); /* 530 */ + void (*WindowPos4fMESA)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 531 */ + void (*WindowPos4fvMESA)(const GLfloat * v); /* 532 */ + void (*WindowPos4iMESA)(GLint x, GLint y, GLint z, GLint w); /* 533 */ + void (*WindowPos4ivMESA)(const GLint * v); /* 534 */ + void (*WindowPos4sMESA)(GLshort x, GLshort y, GLshort z, GLshort w); /* 535 */ + void (*WindowPos4svMESA)(const GLshort * v); /* 536 */ + void (*BlendFuncSeparateEXT)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); /* 537 */ + void (*IndexMaterialEXT)(GLenum face, GLenum mode); /* 538 */ + void (*IndexFuncEXT)(GLenum func, GLclampf ref); /* 539 */ + void (*LockArraysEXT)(GLint first, GLsizei count); /* 540 */ + void (*UnlockArraysEXT)(void); /* 541 */ + void (*CullParameterdvEXT)(GLenum pname, const GLdouble * params); /* 542 */ + void (*CullParameterfvEXT)(GLenum pname, const GLfloat * params); /* 543 */ + void (*HintPGI)(GLenum target, GLint mode); /* 544 */ + void (*FogCoordfEXT)(GLfloat coord); /* 545 */ + void (*FogCoordfvEXT)(const GLfloat * coord); /* 546 */ + void (*FogCoorddEXT)(GLdouble coord); /* 547 */ + void (*FogCoorddvEXT)(const GLdouble * coord); /* 548 */ + void (*FogCoordPointerEXT)(GLenum type, GLsizei stride, const GLvoid * pointer); /* 549 */ + void (*GetColorTableEXT)(GLenum target, GLenum format, GLenum type, GLvoid * data); /* 550 */ + void (*GetColorTableParameterivEXT)(GLenum target, GLenum pname, GLint * params); /* 551 */ + void (*GetColorTableParameterfvEXT)(GLenum target, GLenum pname, GLfloat * params); /* 552 */ }; - #endif Index: xc/extras/Mesa/src/glapitemp.h diff -u xc/extras/Mesa/src/glapitemp.h:1.2 xc/extras/Mesa/src/glapitemp.h:1.3 --- xc/extras/Mesa/src/glapitemp.h:1.2 Wed Mar 8 16:39:51 2000 +++ xc/extras/Mesa/src/glapitemp.h Wed Mar 8 16:39:51 2000 @@ -1978,7 +1978,7 @@ -/* GL_ARB_multitexture */ +/* ARB 0. GL_ARB_multitexture */ KEYWORD1 void KEYWORD2 NAME(ActiveTextureARB)(GLenum texture) { @@ -2160,7 +2160,7 @@ /* 2. GL_EXT_blend_color */ KEYWORD1 void KEYWORD2 NAME(BlendColorEXT)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) { - DISPATCH(BlendColorEXT, (red, green, blue, alpha), (F, ";")); + DISPATCH(BlendColor, (red, green, blue, alpha), (F, ";")); } @@ -2177,31 +2177,31 @@ KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage3DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) { - DISPATCH(CopyTexSubImage3DEXT, (target, level, xoffset, yoffset, zoffset, x, y, width, height), (F, ";")); + DISPATCH(CopyTexSubImage3D, (target, level, xoffset, yoffset, zoffset, x, y, width, height), (F, ";")); } 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(TexImage3DEXT, (target, level, internalFormat, width, height, depth, border, format, type, pixels), (F, ";")); + DISPATCH(TexImage3D, (target, level, internalFormat, width, height, depth, border, format, type, pixels), (F, ";")); } 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(TexSubImage3DEXT, (target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels), (F, ";")); + DISPATCH(TexSubImage3D, (target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels), (F, ";")); } /* 7. GL_SGI_texture_filter4 */ -KEYWORD1 void KEYWORD2 NAME(GetTexFilterFuncSGIS)(GLenum target, GLenum filter, GLsizei n, const GLfloat *weights) +KEYWORD1 void KEYWORD2 NAME(GetTexFilterFuncSGIS)(GLenum target, GLenum filter, GLfloat *weights) { - DISPATCH(GetTexFilterFuncSGIS, (target, filter, n, weights), (F, ";")); + DISPATCH(GetTexFilterFuncSGIS, (target, filter, weights), (F, ";")); } -KEYWORD1 void KEYWORD2 NAME(TexFilterFuncSGIS)(GLenum target, GLenum filter, GLfloat *weights) +KEYWORD1 void KEYWORD2 NAME(TexFilterFuncSGIS)(GLenum target, GLenum filter, GLsizei n, const GLfloat *weights) { - DISPATCH(TexFilterFuncSGIS, (target, filter, weights), (F, ";")); + DISPATCH(TexFilterFuncSGIS, (target, filter, n, weights), (F, ";")); } @@ -2210,17 +2210,17 @@ KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage1DEXT)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) { - DISPATCH(CopyTexSubImage1DEXT, (target, level, xoffset, x, y, width), (F, ";")); + DISPATCH(CopyTexSubImage1D, (target, level, xoffset, x, y, width), (F, ";")); } KEYWORD1 void KEYWORD2 NAME(TexSubImage1DEXT)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels) { - DISPATCH(TexSubImage1DEXT, (target, level, xoffset, width, format, type, pixels), (F, ";")); + DISPATCH(TexSubImage1D, (target, level, xoffset, width, format, type, pixels), (F, ";")); } 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(TexSubImage2DEXT, (target, level, xoffset, yoffset, width, height, format, type, pixels), (F, ";")); + DISPATCH(TexSubImage2D, (target, level, xoffset, yoffset, width, height, format, type, pixels), (F, ";")); } @@ -2228,18 +2228,18 @@ KEYWORD1 void KEYWORD2 NAME(CopyTexImage1DEXT)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) { - DISPATCH(CopyTexImage1DEXT, (target, level, internalformat, x, y, width, border), (F, ";")); + DISPATCH(CopyTexImage1D, (target, level, internalformat, x, y, width, border), (F, ";")); } KEYWORD1 void KEYWORD2 NAME(CopyTexImage2DEXT)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) { - DISPATCH(CopyTexImage2DEXT, (target, level, internalformat, x, y, width, height, border), (F, ";")); + DISPATCH(CopyTexImage2D, (target, level, internalformat, x, y, width, height, border), (F, ";")); } KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage2DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) { - DISPATCH(CopyTexSubImage2DEXT, (target, level, xoffset, yoffset, x, y, width, height), (F, ";")); + DISPATCH(CopyTexSubImage2D, (target, level, xoffset, yoffset, x, y, width, height), (F, ";")); } @@ -2277,22 +2277,22 @@ KEYWORD1 void KEYWORD2 NAME(HistogramEXT)(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink) { - DISPATCH(HistogramEXT, (target, width, internalformat, sink), (F, ";")); + DISPATCH(Histogram, (target, width, internalformat, sink), (F, ";")); } KEYWORD1 void KEYWORD2 NAME(MinmaxEXT)(GLenum target, GLenum internalformat, GLboolean sink) { - DISPATCH(MinmaxEXT, (target, internalformat, sink), (F, ";")); + DISPATCH(Minmax, (target, internalformat, sink), (F, ";")); } KEYWORD1 void KEYWORD2 NAME(ResetHistogramEXT)(GLenum target) { - DISPATCH(ResetHistogramEXT, (target), (F, ";")); + DISPATCH(ResetHistogram, (target), (F, ";")); } KEYWORD1 void KEYWORD2 NAME(ResetMinmaxEXT)(GLenum target) { - DISPATCH(ResetMinmaxEXT, (target), (F, ";")); + DISPATCH(ResetMinmax, (target), (F, ";")); } @@ -2301,42 +2301,42 @@ KEYWORD1 void KEYWORD2 NAME(ConvolutionFilter1DEXT)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image) { - DISPATCH(ConvolutionFilter1DEXT, (target, internalformat, width, format, type, image), (F, ";")); + DISPATCH(ConvolutionFilter1D, (target, internalformat, width, format, type, image), (F, ";")); } KEYWORD1 void KEYWORD2 NAME(ConvolutionFilter2DEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image) { - DISPATCH(ConvolutionFilter2DEXT, (target, internalformat, width, height, format, type, image), (F, ";")); + DISPATCH(ConvolutionFilter2D, (target, internalformat, width, height, format, type, image), (F, ";")); } KEYWORD1 void KEYWORD2 NAME(ConvolutionParameterfEXT)(GLenum target, GLenum pname, GLfloat params) { - DISPATCH(ConvolutionParameterfEXT, (target, pname, params), (F, ";")); + DISPATCH(ConvolutionParameterf, (target, pname, params), (F, ";")); } KEYWORD1 void KEYWORD2 NAME(ConvolutionParameterfvEXT)(GLenum target, GLenum pname, const GLfloat *params) { - DISPATCH(ConvolutionParameterfvEXT, (target, pname, params), (F, ";")); + DISPATCH(ConvolutionParameterfv, (target, pname, params), (F, ";")); } KEYWORD1 void KEYWORD2 NAME(ConvolutionParameteriEXT)(GLenum target, GLenum pname, GLint params) { - DISPATCH(ConvolutionParameteriEXT, (target, pname, params), (F, ";")); + DISPATCH(ConvolutionParameteri, (target, pname, params), (F, ";")); } KEYWORD1 void KEYWORD2 NAME(ConvolutionParameterivEXT)(GLenum target, GLenum pname, const GLint *params) { - DISPATCH(ConvolutionParameterivEXT, (target, pname, params), (F, ";")); + DISPATCH(ConvolutionParameteriv, (target, pname, params), (F, ";")); } KEYWORD1 void KEYWORD2 NAME(CopyConvolutionFilter1DEXT)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) { - DISPATCH(CopyConvolutionFilter1DEXT, (target, internalformat, x, y, width), (F, ";")); + DISPATCH(CopyConvolutionFilter1D, (target, internalformat, x, y, width), (F, ";")); } KEYWORD1 void KEYWORD2 NAME(CopyConvolutionFilter2DEXT)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height) { - DISPATCH(CopyConvolutionFilter2DEXT, (target, internalformat, x, y, width, height), (F, ";")); + DISPATCH(CopyConvolutionFilter2D, (target, internalformat, x, y, width, height), (F, ";")); } KEYWORD1 void KEYWORD2 NAME(GetConvolutionFilterEXT)(GLenum target, GLenum format, GLenum type, GLvoid *image) @@ -2361,7 +2361,7 @@ KEYWORD1 void KEYWORD2 NAME(SeparableFilter2DEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column) { - DISPATCH(SeparableFilter2DEXT, (target, internalformat, width, height, format, type, row, column), (F, ";")); + DISPATCH(SeparableFilter2D, (target, internalformat, width, height, format, type, row, column), (F, ";")); } @@ -2370,22 +2370,22 @@ KEYWORD1 void KEYWORD2 NAME(ColorTableParameterfvSGI)(GLenum target, GLenum pname, const GLfloat *params) { - DISPATCH(ColorTableParameterfvSGI, (target, pname, params), (F, ";")); + DISPATCH(ColorTableParameterfv, (target, pname, params), (F, ";")); } KEYWORD1 void KEYWORD2 NAME(ColorTableParameterivSGI)(GLenum target, GLenum pname, const GLint *params) { - DISPATCH(ColorTableParameterivSGI, (target, pname, params), (F, ";")); + DISPATCH(ColorTableParameteriv, (target, pname, params), (F, ";")); } KEYWORD1 void KEYWORD2 NAME(ColorTableSGI)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table) { - DISPATCH(ColorTableSGI, (target, internalformat, width, format, type, table), (F, ";")); + DISPATCH(ColorTable, (target, internalformat, width, format, type, table), (F, ";")); } KEYWORD1 void KEYWORD2 NAME(CopyColorTableSGI)(GLenum target, GLenum internalFormat, GLint x, GLint y, GLsizei width) { - DISPATCH(CopyColorTableSGI, (target, internalFormat, x, y, width), (F, ";")); + DISPATCH(CopyColorTable, (target, internalFormat, x, y, width), (F, ";")); } KEYWORD1 void KEYWORD2 NAME(GetColorTableSGI)(GLenum target, GLenum format, GLenum type, GLvoid *table) @@ -2404,6 +2404,14 @@ +/* ??. GL_SGIX_pixel_texture */ + +KEYWORD1 void KEYWORD2 NAME(PixelTexGenSGIX)(GLenum mode) +{ + DISPATCH(PixelTexGenSGIX, (mode), (F, ";")); +} + + /* 15. GL_SGIS_pixel_texture */ KEYWORD1 void KEYWORD2 NAME(PixelTexGenParameterfSGIS)(GLenum target, GLfloat value) @@ -2411,11 +2419,21 @@ DISPATCH(PixelTexGenParameterfSGIS, (target, value), (F, ";")); } +KEYWORD1 void KEYWORD2 NAME(PixelTexGenParameterfvSGIS)(GLenum target, const GLfloat *value) +{ + DISPATCH(PixelTexGenParameterfvSGIS, (target, value), (F, ";")); +} + KEYWORD1 void KEYWORD2 NAME(PixelTexGenParameteriSGIS)(GLenum target, GLint value) { DISPATCH(PixelTexGenParameteriSGIS, (target, value), (F, ";")); } +KEYWORD1 void KEYWORD2 NAME(PixelTexGenParameterivSGIS)(GLenum target, const GLint *value) +{ + DISPATCH(PixelTexGenParameterivSGIS, (target, value), (F, ";")); +} + KEYWORD1 void KEYWORD2 NAME(GetPixelTexGenParameterfvSGIS)(GLenum target, GLfloat *value) { DISPATCH(GetPixelTexGenParameterfvSGIS, (target, value), (F, ";")); @@ -2430,7 +2448,7 @@ /* 16. GL_SGIS_texture4D */ -KEYWORD1 void KEYWORD2 NAME(TexImage4DSGIS)(GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei extent, GLint border, GLenum format, GLenum type, const void *pixels) +KEYWORD1 void KEYWORD2 NAME(TexImage4DSGIS)(GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei extent, GLint border, GLenum format, GLenum type, const void *pixels) { DISPATCH(TexImage4DSGIS, (target, level, internalFormat, width, height, depth, extent, border, format, type, pixels), (F, ";")); } @@ -2566,7 +2584,7 @@ /* 37. GL_EXT_blend_minmax */ KEYWORD1 void KEYWORD2 NAME(BlendEquationEXT)(GLenum mode) { - DISPATCH(BlendEquationEXT, (mode), (F, "glBlendEquationEXT(0x%x);", mode)); + DISPATCH(BlendEquation, (mode), (F, "glBlendEquationEXT(0x%x);", mode)); } @@ -2648,6 +2666,13 @@ } +/* 58. GL_SGIX_tag_sample_buffer */ +KEYWORD1 void KEYWORD2 NAME(TagSampleBufferSGIX)(void) +{ + DISPATCH(TagSampleBufferSGIX, (), (F, ";")); +} + + /* 60. GL_SGIX_reference_plane */ KEYWORD1 void KEYWORD2 NAME(ReferencePlaneSGIX)(const GLdouble *plane) { @@ -2664,6 +2689,7 @@ /* 66. GL_HP_image_transform */ +#if 0 KEYWORD1 void KEYWORD2 NAME(GetImageTransformParameterfvHP)(GLenum target, GLenum pname, GLfloat *param) { DISPATCH(GetImageTransformParameterfvHP, (target, pname, param), (F, ";")); @@ -2693,21 +2719,22 @@ { DISPATCH(ImageTransformParameterivHP, (target, pname, param), (F, ";")); } +#endif + /* 74. GL_EXT_color_subtable */ KEYWORD1 void KEYWORD2 NAME(ColorSubTableEXT)(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data) { - DISPATCH(ColorSubTableEXT, (target, start, count, format, type, data), (F, ";")); + DISPATCH(ColorSubTable, (target, start, count, format, type, data), (F, ";")); } KEYWORD1 void KEYWORD2 NAME(CopyColorSubTableEXT)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width) { - DISPATCH(CopyColorSubTableEXT, (target, start, x, y, width), (F, ";")); + DISPATCH(CopyColorSubTable, (target, start, x, y, width), (F, ";")); } - /* 77. GL_PGI_misc_hints */ KEYWORD1 void KEYWORD2 NAME(HintPGI)(GLenum target, GLint mode) { @@ -2715,12 +2742,11 @@ } - /* 78. GL_EXT_paletted_texture */ KEYWORD1 void KEYWORD2 NAME(ColorTableEXT)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table) { - DISPATCH(ColorTableEXT, (target, internalformat, width, format, type, table), (F, ";")); + DISPATCH(ColorTable, (target, internalformat, width, format, type, table), (F, ";")); } KEYWORD1 void KEYWORD2 NAME(GetColorTableEXT)(GLenum target, GLenum format, GLenum type, GLvoid *table) @@ -2740,8 +2766,8 @@ - /* 80. GL_SGIX_list_priority */ + KEYWORD1 void KEYWORD2 NAME(GetListParameterfvSGIX)(GLuint list, GLenum name, GLfloat *param) { DISPATCH(GetListParameterfvSGIX, (list, name, param), (F, ";")); @@ -2815,15 +2841,245 @@ +/* 102. GL_SGIX_fragment_lighting */ +KEYWORD1 void KEYWORD2 NAME(FragmentColorMaterialSGIX)(GLenum face, GLenum mode) +{ + DISPATCH(FragmentColorMaterialSGIX, (face, mode), (F, ";")); +} + +KEYWORD1 void KEYWORD2 NAME(FragmentLightfSGIX)(GLenum light, GLenum pname, GLfloat param) +{ + DISPATCH(FragmentLightfSGIX, (light, pname, param), (F, ";")); +} + +KEYWORD1 void KEYWORD2 NAME(FragmentLightfvSGIX)(GLenum light, GLenum pname, const GLfloat * params) +{ + DISPATCH(FragmentLightfvSGIX, (light, pname, params), (F, ";")); +} + +KEYWORD1 void KEYWORD2 NAME(FragmentLightiSGIX)(GLenum light, GLenum pname, GLint param) +{ + DISPATCH(FragmentLightiSGIX, (light, pname, param), (F, ";")); +} + +KEYWORD1 void KEYWORD2 NAME(FragmentLightivSGIX)(GLenum light, GLenum pname, const GLint * params) +{ + DISPATCH(FragmentLightivSGIX, (light, pname, params), (F, ";")); +} + +KEYWORD1 void KEYWORD2 NAME(FragmentLightModelfSGIX)(GLenum pname, GLfloat param) +{ + DISPATCH(FragmentLightModelfSGIX, (pname, param), (F, ";")); +} + +KEYWORD1 void KEYWORD2 NAME(FragmentLightModelfvSGIX)(GLenum pname, const GLfloat * params) +{ + DISPATCH(FragmentLightModelfvSGIX, (pname, params), (F, ";")); +} + +KEYWORD1 void KEYWORD2 NAME(FragmentLightModeliSGIX)(GLenum pname, GLint param) +{ + DISPATCH(FragmentLightModeliSGIX, (pname, param), (F, ";")); +} + +KEYWORD1 void KEYWORD2 NAME(FragmentLightModelivSGIX)(GLenum pname, const GLint * params) +{ + DISPATCH(FragmentLightModelivSGIX, (pname, params), (F, ";")); +} + +KEYWORD1 void KEYWORD2 NAME(FragmentMaterialfSGIX)(GLenum face, GLenum pname, GLfloat param) +{ + DISPATCH(FragmentMaterialfSGIX, (face, pname, param), (F, ";")); +} + +KEYWORD1 void KEYWORD2 NAME(FragmentMaterialfvSGIX)(GLenum face, GLenum pname, const GLfloat * params) +{ + DISPATCH(FragmentMaterialfvSGIX, (face, pname, params), (F, ";")); +} + +KEYWORD1 void KEYWORD2 NAME(FragmentMaterialiSGIX)(GLenum face, GLenum pname, GLint param) +{ + DISPATCH(FragmentMaterialiSGIX, (face, pname, param), (F, ";")); +} + +KEYWORD1 void KEYWORD2 NAME(FragmentMaterialivSGIX)(GLenum face, GLenum pname, const GLint * params) +{ + DISPATCH(FragmentMaterialivSGIX, (face, pname, params), (F, ";")); +} + +KEYWORD1 void KEYWORD2 NAME(GetFragmentLightfvSGIX)(GLenum light, GLenum pname, GLfloat * params) +{ + DISPATCH(FragmentLightfvSGIX, (light, pname, params), (F, ";")); +} + +KEYWORD1 void KEYWORD2 NAME(GetFragmentLightivSGIX)(GLenum light, GLenum pname, GLint * params) +{ + DISPATCH(FragmentLightivSGIX, (light, pname, params), (F, ";")); +} + +KEYWORD1 void KEYWORD2 NAME(GetFragmentMaterialfvSGIX)(GLenum face, GLenum pname, GLfloat * params) +{ + DISPATCH(FragmentMaterialfvSGIX, (face, pname, params), (F, ";")); +} + +KEYWORD1 void KEYWORD2 NAME(GetFragmentMaterialivSGIX)(GLenum face, GLenum pname, GLint * params) +{ + DISPATCH(FragmentMaterialivSGIX, (face, pname, params), (F, ";")); +} + +KEYWORD1 void KEYWORD2 NAME(LightEnviSGIX)(GLenum pname, GLint param) +{ + DISPATCH(LightEnviSGIX, (pname, param), (F, ";")); +} + + +/* 149. GL_EXT_fog_coord */ +KEYWORD1 void KEYWORD2 NAME(FogCoordfEXT)(GLfloat coord) +{ + DISPATCH(FogCoordfEXT, (coord), (F, "glFogCoordfEXT(%g);", coord)); +} + +KEYWORD1 void KEYWORD2 NAME(FogCoordfvEXT)(const GLfloat * coord) +{ + DISPATCH(FogCoordfvEXT, (coord), (F, "glFogCoordfvEXT(%p);", coord)); +} + +KEYWORD1 void KEYWORD2 NAME(FogCoorddEXT)(GLdouble coord) +{ + DISPATCH(FogCoorddEXT, (coord), (F, "glFogCoorddEXT(%g);", coord)); +} + +KEYWORD1 void KEYWORD2 NAME(FogCoorddvEXT)(const GLdouble * coord) +{ + DISPATCH(FogCoorddvEXT, (coord), (F, "glFogCoorddvEXT(%p);", coord)); +} + +KEYWORD1 void KEYWORD2 NAME(FogCoordPointerEXT)(GLenum type, GLsizei stride, const GLvoid * pointer) +{ + DISPATCH(FogCoordPointerEXT, (type, stride, pointer), (F, "glFogCoordPointerEXT(0x%x, %d, %p);", type, stride, pointer)); +} + + + /* 173. GL_EXT/INGR_blend_func_separate */ +KEYWORD1 void KEYWORD2 NAME(BlendFuncSeparateEXT)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + DISPATCH(BlendFuncSeparateEXT, (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), (F, ";")); +} + KEYWORD1 void KEYWORD2 NAME(BlendFuncSeparateINGR)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) { - DISPATCH(BlendFuncSeparateINGR, (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), (F, ";")); + DISPATCH(BlendFuncSeparateEXT, (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), (F, ";")); +} + + +/* 190. GL_NV_vertex_array_range */ +KEYWORD1 void KEYWORD2 NAME(FlushVertexArrayRangeNV)(void) +{ + DISPATCH(FlushVertexArrayRangeNV, (), (F, ";")); +} + +KEYWORD1 void KEYWORD2 NAME(VertexArrayRangeNV)(GLsizei size, const GLvoid * pointer) +{ + DISPATCH(VertexArrayRangeNV, (size, pointer), (F, ";")); +} + + +/* 191. GL_NV_register_combiners */ +KEYWORD1 void KEYWORD2 NAME(CombinerParameterfvNV)(GLenum pname, const GLfloat * params) +{ + DISPATCH(CombinerParameterfvNV, (pname, params), (F, ";")); +} + +KEYWORD1 void KEYWORD2 NAME(CombinerParameterfNV)(GLenum pname, GLfloat param) +{ + DISPATCH(CombinerParameterfNV, (pname, param), (F, ";")); +} + +KEYWORD1 void KEYWORD2 NAME(CombinerParameterivNV)(GLenum pname, const GLint * params) +{ + DISPATCH(CombinerParameterivNV, (pname, params), (F, ";")); +} + +KEYWORD1 void KEYWORD2 NAME(CombinerParameteriNV)(GLenum pname, GLint param) +{ + DISPATCH(CombinerParameteriNV, (pname, param), (F, ";")); +} + +KEYWORD1 void KEYWORD2 NAME(CombinerInputNV)(GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage) +{ + DISPATCH(CombinerInputNV, (stage, portion, variable, input, mapping, componentUsage), (F, ";")); +} + +KEYWORD1 void KEYWORD2 NAME(CombinerOutputNV)(GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum) +{ + DISPATCH(CombinerOutputNV, (stage, portion, abOutput, cdOutput, sumOutput, scale, bias, abDotProduct, cdDotProduct, muxSum), (F, ";")); } +KEYWORD1 void KEYWORD2 NAME(FinalCombinerInputNV)(GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage) +{ + DISPATCH(FinalCombinerInputNV, (variable, input, mapping, componentUsage), (F, ";")); +} +KEYWORD1 void KEYWORD2 NAME(GetCombinerInputParameterfvNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat * params) +{ + DISPATCH(GetCombinerInputParameterfvNV, (stage, portion, variable, pname, params), (F, ";")); +} -/* GL_MESA_window_pos */ +KEYWORD1 void KEYWORD2 NAME(GetCombinerInputParameterivNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint * params) +{ + DISPATCH(GetCombinerInputParameterivNV, (stage, portion, variable, pname, params), (F, ";")); +} + +KEYWORD1 void KEYWORD2 NAME(GetCombinerOutputParameterfvNV)(GLenum stage, GLenum portion, GLenum pname, GLfloat * params) +{ + DISPATCH(GetCombinerOutputParameterfvNV, (stage, portion, pname, params), (F, ";")); +} + +KEYWORD1 void KEYWORD2 NAME(GetCombinerOutputParameterivNV)(GLenum stage, GLenum portion, GLenum pname, GLint * params) +{ + DISPATCH(GetCombinerOutputParameterivNV, (stage, portion, pname, params), (F, ";")); +} + +KEYWORD1 void KEYWORD2 NAME(GetFinalCombinerInputParameterfvNV)(GLenum variable, GLenum pname, GLfloat * params) +{ +DISPATCH(GetFinalCombinerInputParameterfvNV, (variable, pname, params), (F, ";")); +} + +KEYWORD1 void KEYWORD2 NAME(GetFinalCombinerInputParameterivNV)(GLenum variable, GLenum pname, GLint * params) +{ +DISPATCH(GetFinalCombinerInputParameterivNV, (variable, pname, params), (F, ";")); +} + + + +/* 194. GL_EXT_vertex_weighting */ +KEYWORD1 void KEYWORD2 NAME(VertexWeightfEXT)(GLfloat weight) +{ + DISPATCH(VertexWeightfEXT, (weight), (F, ";")); +} + +KEYWORD1 void KEYWORD2 NAME(VertexWeightfvEXT)(const GLfloat * weight) +{ + DISPATCH(VertexWeightfvEXT, (weight), (F, ";")); +} + +KEYWORD1 void KEYWORD2 NAME(VertexWeightPointerEXT)(GLsizei size, GLenum type, GLsizei stride, const GLvoid * pointer) +{ + DISPATCH(VertexWeightPointerEXT, (size, type, stride, pointer), (F, ";")); +} + + + +/* 196. GL_MESA_resize_buffers */ +KEYWORD1 void KEYWORD2 NAME(ResizeBuffersMESA)(void) +{ + DISPATCH(ResizeBuffersMESA, (), (F, "glResizeBuffersMESA();")); +} + + + +/* 197. GL_MESA_window_pos */ KEYWORD1 void KEYWORD2 NAME(WindowPos2iMESA)(GLint x, GLint y) { @@ -2947,15 +3203,7 @@ -/* GL_MESA_resize_buffers */ -KEYWORD1 void KEYWORD2 NAME(ResizeBuffersMESA)(void) -{ - DISPATCH(ResizeBuffersMESA, (), (F, "glResizeBuffersMESA();")); -} - - - -/* GL_ARB_transpose_matrix */ +/* ARB 2. GL_ARB_transpose_matrix */ KEYWORD1 void KEYWORD2 NAME(LoadTransposeMatrixdARB)(const GLdouble m[16]) { DISPATCH(LoadTransposeMatrixdARB, (m), (F, "glLoadTransposeMatrixARB(%p);", m)); @@ -2974,6 +3222,19 @@ KEYWORD1 void KEYWORD2 NAME(MultTransposeMatrixfARB)(const GLfloat m[16]) { DISPATCH(MultTransposeMatrixfARB, (m), (F, "glLoadTransposeMatrixfARB(%p)", m)); +} + + +/* ARB 4. GL_ARB_multisample */ +KEYWORD1 void KEYWORD2 NAME(SampleCoverageARB)(GLclampf value, GLboolean invert) +{ + DISPATCH(SampleCoverageARB, (value, invert), (F, "glSampleCoverageARB(%f, %d);", value, invert)); +} + + +KEYWORD1 void KEYWORD2 NAME(SamplePassARB)(GLenum pass) +{ + DISPATCH(SamplePassARB, (pass), (F, "glSamplePassARB(0x%x);", pass)); } Index: xc/extras/Mesa/src/glheader.h diff -u xc/extras/Mesa/src/glheader.h:1.3 xc/extras/Mesa/src/glheader.h:1.4 --- xc/extras/Mesa/src/glheader.h:1.3 Wed Mar 8 16:39:51 2000 +++ xc/extras/Mesa/src/glheader.h Wed Mar 8 16:39:51 2000 @@ -59,7 +59,8 @@ #include "conf.h" #endif -#include <GL/gl.h> +#include "GL/gl.h" +#include "GL/glext.h" /* Index: xc/extras/Mesa/src/image.c diff -u xc/extras/Mesa/src/image.c:1.3 xc/extras/Mesa/src/image.c:1.4 --- xc/extras/Mesa/src/image.c:1.3 Wed Mar 8 16:39:51 2000 +++ xc/extras/Mesa/src/image.c Wed Mar 8 16:39:51 2000 @@ -1578,10 +1578,17 @@ srcType == GL_INT || srcType == GL_FLOAT || srcType == GL_UNSIGNED_BYTE_3_3_2 || + srcType == GL_UNSIGNED_BYTE_2_3_3_REV || + srcType == GL_UNSIGNED_SHORT_5_6_5 || + srcType == GL_UNSIGNED_SHORT_5_6_5_REV || srcType == GL_UNSIGNED_SHORT_4_4_4_4 || + srcType == GL_UNSIGNED_SHORT_4_4_4_4_REV || srcType == GL_UNSIGNED_SHORT_5_5_5_1 || + srcType == GL_UNSIGNED_SHORT_1_5_5_5_REV || srcType == GL_UNSIGNED_INT_8_8_8_8 || - srcType == GL_UNSIGNED_INT_10_10_10_2); + srcType == GL_UNSIGNED_INT_8_8_8_8_REV || + srcType == GL_UNSIGNED_INT_10_10_10_2 || + srcType == GL_UNSIGNED_INT_2_10_10_10_REV); rComp = gComp = bComp = aComp = -1; @@ -1979,10 +1986,10 @@ for (i = 0; i < n; i ++) { GLuint p = uisrc[i]; SWAP4BYTE(p); - rgba[i][rComp] = ((p ) & 0x3 ) * (1.0F / 3.0F); - rgba[i][gComp] = ((p >> 2) & 0x3ff) * (1.0F / 1023.0F); - rgba[i][bComp] = ((p >> 12) & 0x3ff) * (1.0F / 1023.0F); - rgba[i][aComp] = ((p >> 22) ) * (1.0F / 1023.0F); + rgba[i][rComp] = ((p >> 22) ) * (1.0F / 1023.0F); + rgba[i][gComp] = ((p >> 12) & 0x3ff) * (1.0F / 1023.0F); + rgba[i][bComp] = ((p >> 2) & 0x3ff) * (1.0F / 1023.0F); + rgba[i][aComp] = ((p ) & 0x3 ) * (1.0F / 3.0F); } } else { @@ -1990,10 +1997,10 @@ GLuint i; for (i = 0; i < n; i ++) { GLuint p = uisrc[i]; - rgba[i][rComp] = ((p ) & 0x3 ) * (1.0F / 3.0F); - rgba[i][gComp] = ((p >> 2) & 0x3ff) * (1.0F / 1023.0F); - rgba[i][bComp] = ((p >> 12) & 0x3ff) * (1.0F / 1023.0F); - rgba[i][aComp] = ((p >> 22) ) * (1.0F / 1023.0F); + rgba[i][rComp] = ((p >> 22) ) * (1.0F / 1023.0F); + rgba[i][gComp] = ((p >> 12) & 0x3ff) * (1.0F / 1023.0F); + rgba[i][bComp] = ((p >> 2) & 0x3ff) * (1.0F / 1023.0F); + rgba[i][aComp] = ((p ) & 0x3 ) * (1.0F / 3.0F); } } break; @@ -2087,10 +2094,17 @@ srcType == GL_INT || srcType == GL_FLOAT || srcType == GL_UNSIGNED_BYTE_3_3_2 || + srcType == GL_UNSIGNED_BYTE_2_3_3_REV || + srcType == GL_UNSIGNED_SHORT_5_6_5 || + srcType == GL_UNSIGNED_SHORT_5_6_5_REV || srcType == GL_UNSIGNED_SHORT_4_4_4_4 || + srcType == GL_UNSIGNED_SHORT_4_4_4_4_REV || srcType == GL_UNSIGNED_SHORT_5_5_5_1 || + srcType == GL_UNSIGNED_SHORT_1_5_5_5_REV || srcType == GL_UNSIGNED_INT_8_8_8_8 || - srcType == GL_UNSIGNED_INT_10_10_10_2); + srcType == GL_UNSIGNED_INT_8_8_8_8_REV || + srcType == GL_UNSIGNED_INT_10_10_10_2 || + srcType == GL_UNSIGNED_INT_2_10_10_10_REV); /* this is intended for RGBA mode */ assert(ctx->Visual->RGBAflag); Index: xc/extras/Mesa/src/imaging.c diff -u xc/extras/Mesa/src/imaging.c:1.2 xc/extras/Mesa/src/imaging.c:1.3 --- xc/extras/Mesa/src/imaging.c:1.2 Wed Mar 8 16:39:51 2000 +++ xc/extras/Mesa/src/imaging.c Wed Mar 8 16:39:51 2000 @@ -40,6 +40,7 @@ +#if 0 void _mesa_BlendColor(GLclampf r, GLclampf g, GLclampf b, GLclampf a) { (void) r; @@ -76,6 +77,7 @@ (void) table; WARNING("glColorTable"); } +#endif void _mesa_ColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params) { @@ -190,6 +192,7 @@ WARNING("glCopyConvolutionFilter2D"); } +#if 0 void _mesa_GetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table) { (void) target; @@ -214,6 +217,7 @@ (void) params; WARNING("glGetColorTableParameteriv"); } +#endif void _mesa_GetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image) { Index: xc/extras/Mesa/src/imaging.h diff -u xc/extras/Mesa/src/imaging.h:1.2 xc/extras/Mesa/src/imaging.h:1.3 --- xc/extras/Mesa/src/imaging.h:1.2 Wed Mar 8 16:39:51 2000 +++ xc/extras/Mesa/src/imaging.h Wed Mar 8 16:39:51 2000 @@ -3,7 +3,7 @@ * Mesa 3-D graphics library * Version: 3.3 * - * Copyright (C) 1999 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2000 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"), @@ -36,6 +36,7 @@ +#if 0 extern void _mesa_BlendColor(GLclampf r, GLclampf g, GLclampf b, GLclampf a); extern void _mesa_BlendEquation(GLenum eq); @@ -43,11 +44,13 @@ extern void _mesa_ColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); extern void _mesa_ColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); +#endif extern void _mesa_ColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params); extern void _mesa_ColorTableParameteriv(GLenum target, GLenum pname, const GLint *params); + extern void _mesa_ConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); extern void _mesa_ConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); @@ -68,11 +71,13 @@ extern void _mesa_CopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); +#if 0 extern void _mesa_GetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table); extern void _mesa_GetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params); extern void _mesa_GetColorTableParameteriv(GLenum target, GLenum pname, GLint *params); +#endif extern void _mesa_GetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image); Index: xc/extras/Mesa/src/matrix.c diff -u xc/extras/Mesa/src/matrix.c:1.3 xc/extras/Mesa/src/matrix.c:1.4 --- xc/extras/Mesa/src/matrix.c:1.3 Wed Mar 8 16:39:51 2000 +++ xc/extras/Mesa/src/matrix.c Wed Mar 8 16:39:51 2000 @@ -1057,7 +1057,7 @@ switch (ctx->Transform.MatrixMode) { case GL_MODELVIEW: - if (ctx->ModelViewStackDepth>=MAX_MODELVIEW_STACK_DEPTH-1) { + if (ctx->ModelViewStackDepth >= MAX_MODELVIEW_STACK_DEPTH - 1) { gl_error( ctx, GL_STACK_OVERFLOW, "glPushMatrix"); return; } @@ -1065,7 +1065,7 @@ &ctx->ModelView ); break; case GL_PROJECTION: - if (ctx->ProjectionStackDepth>=MAX_PROJECTION_STACK_DEPTH) { + if (ctx->ProjectionStackDepth >= MAX_PROJECTION_STACK_DEPTH - 1) { gl_error( ctx, GL_STACK_OVERFLOW, "glPushMatrix"); return; } @@ -1081,7 +1081,7 @@ case GL_TEXTURE: { GLuint t = ctx->Texture.CurrentTransformUnit; - if (ctx->TextureStackDepth[t] >= MAX_TEXTURE_STACK_DEPTH) { + if (ctx->TextureStackDepth[t] >= MAX_TEXTURE_STACK_DEPTH - 1) { gl_error( ctx, GL_STACK_OVERFLOW, "glPushMatrix"); return; } Index: xc/extras/Mesa/src/mmath.h diff -u xc/extras/Mesa/src/mmath.h:1.3 xc/extras/Mesa/src/mmath.h:1.4 --- xc/extras/Mesa/src/mmath.h:1.3 Wed Mar 8 16:39:52 2000 +++ xc/extras/Mesa/src/mmath.h Wed Mar 8 16:39:52 2000 @@ -22,7 +22,7 @@ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - +/* $XFree86: xc/extras/Mesa/src/mmath.h,v 1.4 2000/03/03 18:30:08 tsi Exp $ */ /* * Faster arithmetic functions. If the FAST_MATH preprocessor symbol is @@ -47,7 +47,10 @@ * In the worst case, we force the compiler to use a memory access to * truncate the float, by specifying the 'volatile' keyword. */ -#if defined(__linux__) && defined(__i386__) +#if defined(__linux__) && defined(__i386__) && !defined(IN_MODULE) +/* + * A libc interface is needed for this... + */ #include <fpu_control.h> #if !defined(_FPU_SETCW) Index: xc/extras/Mesa/src/span.c diff -u xc/extras/Mesa/src/span.c:1.3 xc/extras/Mesa/src/span.c:1.4 --- xc/extras/Mesa/src/span.c:1.3 Wed Mar 8 16:39:52 2000 +++ xc/extras/Mesa/src/span.c Wed Mar 8 16:39:52 2000 @@ -816,15 +816,17 @@ * As above but perform multiple stages of texture application. * Input: texUnits - number of texture units to apply */ -void gl_write_multitexture_span( GLcontext *ctx, GLuint texUnits, - GLuint n, GLint x, GLint y, - const GLdepth z[], - CONST GLfloat s[][MAX_WIDTH], - CONST GLfloat t[][MAX_WIDTH], - CONST GLfloat u[][MAX_WIDTH], - GLfloat lambda[][MAX_WIDTH], - GLubyte rgbaIn[][4], CONST GLubyte spec[][4], - GLenum primitive ) +void +gl_write_multitexture_span( GLcontext *ctx, GLuint texUnits, + GLuint n, GLint x, GLint y, + const GLdepth z[], + CONST GLfloat s[MAX_TEXTURE_UNITS][MAX_WIDTH], + CONST GLfloat t[MAX_TEXTURE_UNITS][MAX_WIDTH], + CONST GLfloat u[MAX_TEXTURE_UNITS][MAX_WIDTH], + GLfloat lambda[][MAX_WIDTH], + GLubyte rgbaIn[MAX_TEXTURE_UNITS][4], + CONST GLubyte spec[MAX_TEXTURE_UNITS][4], + GLenum primitive ) { GLubyte mask[MAX_WIDTH]; GLboolean write_all = GL_TRUE; Index: xc/extras/Mesa/src/span.h diff -u xc/extras/Mesa/src/span.h:1.3 xc/extras/Mesa/src/span.h:1.4 --- xc/extras/Mesa/src/span.h:1.3 Wed Mar 8 16:39:52 2000 +++ xc/extras/Mesa/src/span.h Wed Mar 8 16:39:52 2000 @@ -65,16 +65,17 @@ GLenum primitive ); -extern void gl_write_multitexture_span( GLcontext *ctx, GLuint texSets, - GLuint n, GLint x, GLint y, - const GLdepth z[], - CONST GLfloat s[][MAX_WIDTH], - CONST GLfloat t[][MAX_WIDTH], - CONST GLfloat u[][MAX_WIDTH], - GLfloat lambda[][MAX_WIDTH], - GLubyte rgba[][4], - CONST GLubyte spec[][4], - GLenum primitive ); +extern void +gl_write_multitexture_span( GLcontext *ctx, GLuint texSets, + GLuint n, GLint x, GLint y, + const GLdepth z[], + CONST GLfloat s[MAX_TEXTURE_UNITS][MAX_WIDTH], + CONST GLfloat t[MAX_TEXTURE_UNITS][MAX_WIDTH], + CONST GLfloat u[MAX_TEXTURE_UNITS][MAX_WIDTH], + GLfloat lambda[MAX_TEXTURE_UNITS][MAX_WIDTH], + GLubyte rgba[][4], + CONST GLubyte spec[][4], + GLenum primitive ); extern void gl_read_rgba_span( GLcontext *ctx, GLframebuffer *buffer, Index: xc/extras/Mesa/src/state.c diff -u xc/extras/Mesa/src/state.c:1.1 xc/extras/Mesa/src/state.c:1.2 --- xc/extras/Mesa/src/state.c:1.1 Wed Mar 8 16:39:52 2000 +++ xc/extras/Mesa/src/state.c Wed Mar 8 16:39:52 2000 @@ -87,8 +87,6 @@ - - static int generic_noop(void) { @@ -510,17 +508,21 @@ exec->ResetMinmax = _mesa_ResetMinmax; exec->SeparableFilter2D = _mesa_SeparableFilter2D; - /* 6. GL_EXT_texture3d */ + /* GL_EXT_texture3d */ +#if 0 exec->CopyTexSubImage3DEXT = _mesa_CopyTexSubImage3D; exec->TexImage3DEXT = _mesa_TexImage3DEXT; exec->TexSubImage3DEXT = _mesa_TexSubImage3D; +#endif /* GL_EXT_paletted_texture */ +#if 0 exec->ColorTableEXT = _mesa_ColorTableEXT; exec->ColorSubTableEXT = _mesa_ColorSubTableEXT; - exec->GetColorTableEXT = _mesa_GetColorTableEXT; - exec->GetColorTableParameterfvEXT = _mesa_GetColorTableParameterfvEXT; - exec->GetColorTableParameterivEXT = _mesa_GetColorTableParameterivEXT; +#endif + exec->GetColorTableEXT = _mesa_GetColorTable; + exec->GetColorTableParameterfvEXT = _mesa_GetColorTableParameterfv; + exec->GetColorTableParameterivEXT = _mesa_GetColorTableParameteriv; /* GL_EXT_compiled_vertex_array */ exec->LockArraysEXT = _mesa_LockArraysEXT; @@ -530,17 +532,21 @@ exec->PointParameterfEXT = _mesa_PointParameterfEXT; exec->PointParameterfvEXT = _mesa_PointParameterfvEXT; - /* 77. GL_PGI_misc_hints */ + /* GL_PGI_misc_hints */ exec->HintPGI = _mesa_HintPGI; /* GL_EXT_polygon_offset */ exec->PolygonOffsetEXT = _mesa_PolygonOffsetEXT; /* GL_EXT_blend_minmax */ +#if 0 exec->BlendEquationEXT = _mesa_BlendEquationEXT; +#endif /* GL_EXT_blend_color */ +#if 0 exec->BlendColorEXT = _mesa_BlendColorEXT; +#endif /* GL_ARB_multitexture */ exec->ActiveTextureARB = _mesa_ActiveTextureARB; @@ -579,7 +585,7 @@ exec->MultiTexCoord4svARB = _mesa_MultiTexCoord4svARB; /* GL_INGR_blend_func_separate */ - exec->BlendFuncSeparateINGR = _mesa_BlendFuncSeparateINGR; + exec->BlendFuncSeparateEXT = _mesa_BlendFuncSeparateEXT; /* GL_MESA_window_pos */ exec->WindowPos2dMESA = _mesa_WindowPos2dMESA; Index: xc/extras/Mesa/src/teximage.c diff -u xc/extras/Mesa/src/teximage.c:1.3 xc/extras/Mesa/src/teximage.c:1.5 --- xc/extras/Mesa/src/teximage.c:1.3 Wed Mar 8 16:39:52 2000 +++ xc/extras/Mesa/src/teximage.c Wed Mar 8 16:39:52 2000 @@ -584,7 +584,7 @@ * interesting instead of leaving it indeterminate. */ if (texImage->Data) { - char message[8][32] = { + static const char message[8][32] = { " X X XXXXX XXX X ", " XX XX X X X X X ", " X X X X X X X ", @@ -966,7 +966,7 @@ return GL_TRUE; } - teximage = texUnit->CurrentD[3]->Image[level]; + teximage = texUnit->CurrentD[dimensions]->Image[level]; if (!teximage) { char message[100]; sprintf(message, "glCopyTexSubImage%dD(undefined texture)", dimensions); Index: xc/extras/Mesa/src/triangle.c diff -u xc/extras/Mesa/src/triangle.c:1.3 xc/extras/Mesa/src/triangle.c:1.4 --- xc/extras/Mesa/src/triangle.c:1.3 Wed Mar 8 16:39:52 2000 +++ xc/extras/Mesa/src/triangle.c Wed Mar 8 16:39:52 2000 @@ -3,7 +3,7 @@ * Mesa 3-D graphics library * Version: 3.3 * - * Copyright (C) 1999 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2000 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"), @@ -1019,29 +1019,19 @@ /* - * Compute the lambda value (texture level value) for a fragment. + * Compute the lambda value for a fragment. (texture level of detail) */ -static GLfloat compute_lambda( GLfloat s, GLfloat dsdx, GLfloat dsdy, - GLfloat t, GLfloat dtdx, GLfloat dtdy, - GLfloat invQ, GLfloat dqdx, GLfloat dqdy, - GLfloat width, GLfloat height ) +static GLfloat +compute_lambda( GLfloat dsdx, GLfloat dsdy, GLfloat dtdx, GLfloat dtdy, + GLfloat invQ, GLfloat width, GLfloat height ) { - GLfloat dudx, dudy, dvdx, dvdy; - GLfloat r1, r2, rho2; - GLfloat invQ_width = invQ * width; - GLfloat invQ_height = invQ * height; - - dudx = (dsdx - s*dqdx) * invQ_width; - dudy = (dsdy - s*dqdy) * invQ_width; - dvdx = (dtdx - t*dqdx) * invQ_height; - dvdy = (dtdy - t*dqdy) * invQ_height; - - r1 = dudx * dudx + dudy * dudy; - r2 = dvdx * dvdx + dvdy * dvdy; - - rho2 = r1 + r2; /* used to be: rho2 = MAX2(r1,r2); */ - ASSERT( rho2 >= 0.0 ); - + GLfloat dudx = dsdx * invQ * width; + GLfloat dudy = dsdy * invQ * width; + GLfloat dvdx = dtdx * invQ * height; + GLfloat dvdy = dtdy * invQ * height; + GLfloat r1 = dudx * dudx + dudy * dudy; + GLfloat r2 = dvdx * dvdx + dvdy * dvdy; + GLfloat rho2 = r1 + r2; /* used to be: rho2 = MAX2(r1,r2); */ /* return log base 2 of rho */ return log(rho2) * 1.442695 * 0.5; /* 1.442695 = 1/log(2) */ } @@ -1098,10 +1088,8 @@ s[i] = ss*invQ; \ t[i] = tt*invQ; \ u[i] = uu*invQ; \ - lambda[i] = compute_lambda( s[i], dsdx, dsdy, \ - t[i], dtdx, dtdy, \ - invQ, dvdx, dvdy, \ - twidth, theight ); \ + lambda[i] = compute_lambda( dsdx, dsdy, dtdx, dtdy, \ + invQ, twidth, theight );\ ffz += fdzdx; \ ss += dsdx; \ tt += dtdx; \ @@ -1120,10 +1108,8 @@ s[i] = ss*invQ; \ t[i] = tt*invQ; \ u[i] = uu*invQ; \ - lambda[i] = compute_lambda( s[i], dsdx, dsdy, \ - t[i], dtdx, dtdy, \ - invQ, dvdx, dvdy, \ - twidth, theight ); \ + lambda[i] = compute_lambda( dsdx, dsdy, dtdx, dtdy, \ + invQ, twidth, theight );\ ffz += fdzdx; \ ffr += fdrdx; \ ffg += fdgdx; \ @@ -1205,10 +1191,8 @@ s[i] = ss*invQ; \ t[i] = tt*invQ; \ u[i] = uu*invQ; \ - lambda[i] = compute_lambda( s[i], dsdx, dsdy, \ - t[i], dtdx, dtdy, \ - invQ, dvdx, dvdy, \ - twidth, theight ); \ + lambda[i] = compute_lambda( dsdx, dsdy, dtdx, dtdy, \ + invQ, twidth, theight );\ ffz += fdzdx; \ ss += dsdx; \ tt += dtdx; \ @@ -1230,10 +1214,8 @@ s[i] = ss*invQ; \ t[i] = tt*invQ; \ u[i] = uu*invQ; \ - lambda[i] = compute_lambda( s[i], dsdx, dsdy, \ - t[i], dtdx, dtdy, \ - invQ, dvdx, dvdy, \ - twidth, theight ); \ + lambda[i] = compute_lambda( dsdx, dsdy, dtdx, dtdy, \ + invQ, twidth, theight );\ ffz += fdzdx; \ ffr += fdrdx; \ ffg += fdgdx; \ @@ -1316,16 +1298,16 @@ s[0][i] = ss*invQ; \ t[0][i] = tt*invQ; \ u[0][i] = uu*invQ; \ - lambda[0][i] = compute_lambda( s[0][i], dsdx, dsdy, \ - t[0][i], dtdx, dtdy, \ - invQ, dvdx, dvdy, \ + lambda[0][i] = compute_lambda( dsdx, dsdy, \ + dtdx, dtdy, \ + invQ, \ twidth0, theight0 ); \ s[1][i] = ss1*invQ1; \ t[1][i] = tt1*invQ1; \ u[1][i] = uu1*invQ1; \ - lambda[1][i] = compute_lambda( s[1][i], ds1dx, ds1dy, \ - t[1][i], dt1dx, dt1dy, \ - invQ1, dvdx, dvdy, \ + lambda[1][i] = compute_lambda( ds1dx, ds1dy, \ + dt1dx, dt1dy, \ + invQ1, \ twidth1, theight1 ); \ ffz += fdzdx; \ ss += dsdx; \ @@ -1350,16 +1332,16 @@ s[0][i] = ss*invQ; \ t[0][i] = tt*invQ; \ u[0][i] = uu*invQ; \ - lambda[0][i] = compute_lambda( s[0][i], dsdx, dsdy, \ - t[0][i], dtdx, dtdy, \ - invQ, dvdx, dvdy, \ + lambda[0][i] = compute_lambda( dsdx, dsdy, \ + dtdx, dtdy, \ + invQ, \ twidth0, theight0 ); \ s[1][i] = ss1*invQ1; \ t[1][i] = tt1*invQ1; \ u[1][i] = uu1*invQ1; \ - lambda[1][i] = compute_lambda( s[1][i], ds1dx, ds1dy, \ - t[1][i], dt1dx, dt1dy, \ - invQ1, dvdx, dvdy, \ + lambda[1][i] = compute_lambda( ds1dx, ds1dy, \ + dt1dx, dt1dy, \ + invQ1, \ twidth1, theight1 ); \ ffz += fdzdx; \ ffr += fdrdx; \ @@ -1453,6 +1435,8 @@ #else # define dputs(s) #endif + + /* * Determine which triangle rendering function to use given the current Index: xc/extras/Mesa/src/types.h diff -u xc/extras/Mesa/src/types.h:1.3 xc/extras/Mesa/src/types.h:1.4 --- xc/extras/Mesa/src/types.h:1.3 Wed Mar 8 16:39:52 2000 +++ xc/extras/Mesa/src/types.h Wed Mar 8 16:39:52 2000 @@ -1654,15 +1654,15 @@ struct gl_constants Const; /* Modelview matrix and stack */ - GLmatrix ModelView; + GLmatrix ModelView; /* current matrix, not stored on stack */ GLuint ModelViewStackDepth; - GLmatrix ModelViewStack[MAX_MODELVIEW_STACK_DEPTH]; + GLmatrix ModelViewStack[MAX_MODELVIEW_STACK_DEPTH - 1]; /* Projection matrix and stack */ - GLmatrix ProjectionMatrix; + GLmatrix ProjectionMatrix; /* current matrix, not stored on stack */ GLuint ProjectionStackDepth; - GLmatrix ProjectionStack[MAX_PROJECTION_STACK_DEPTH]; - GLfloat NearFarStack[MAX_PROJECTION_STACK_DEPTH][2]; + GLmatrix ProjectionStack[MAX_PROJECTION_STACK_DEPTH - 1]; + GLfloat NearFarStack[MAX_PROJECTION_STACK_DEPTH - 1][2]; /* Combined modelview and projection matrix */ GLmatrix ModelProjectMatrix; @@ -1674,7 +1674,7 @@ /* Texture matrix and stack */ GLmatrix TextureMatrix[MAX_TEXTURE_UNITS]; GLuint TextureStackDepth[MAX_TEXTURE_UNITS]; - GLmatrix TextureStack[MAX_TEXTURE_UNITS][MAX_TEXTURE_STACK_DEPTH]; + GLmatrix TextureStack[MAX_TEXTURE_UNITS][MAX_TEXTURE_STACK_DEPTH - 1]; /* Display lists */ GLuint CallDepth; /* Current recursion calling depth */ Index: xc/extras/Mesa/src/winpos.c diff -u xc/extras/Mesa/src/winpos.c:1.3 xc/extras/Mesa/src/winpos.c:1.4 --- xc/extras/Mesa/src/winpos.c:1.3 Wed Mar 8 16:39:53 2000 +++ xc/extras/Mesa/src/winpos.c Wed Mar 8 16:39:53 2000 @@ -65,8 +65,6 @@ void _mesa_WindowPos4fMESA( GLfloat x, GLfloat y, GLfloat z, GLfloat w ) { - /* KW: Assume that like rasterpos, this must be outside begin/end. - */ GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH( ctx, "glWindowPosMESA" ); @@ -77,41 +75,18 @@ ctx->Current.RasterPos[3] = w; ctx->Current.RasterPosValid = GL_TRUE; + ctx->Current.RasterDistance = 0.0F; - /* raster color */ - if (0 && ctx->Light.Enabled) { - - /* KW: I don't see how this can work - would have to take the - * inverse of the projection matrix or the combined - * modelProjection matrix, transform point and normal, and - * do the lighting. Those inverses are not used for - * anything else. This is not an object-space lighting - * issue - what this is trying to do is something like - * clip-space or window-space lighting... - * - * Anyway, since the implementation was never correct, I'm - * not fixing it now - just use the unlit color. - */ - - /* KW: As a reprise, we now *do* keep the inverse of the projection - * matrix, so it is not infeasible to try to swim up stream - * in this manner. I still don't want to implement it, - * however. - */ + /* raster color = current color or index */ + if (ctx->Visual->RGBAflag) { + UBYTE_RGBA_TO_FLOAT_RGBA(ctx->Current.RasterColor, + ctx->Current.ByteColor); } else { - /* use current color or index */ - if (ctx->Visual->RGBAflag) { - UBYTE_RGBA_TO_FLOAT_RGBA(ctx->Current.RasterColor, - ctx->Current.ByteColor); - } - else { - ctx->Current.RasterIndex = ctx->Current.Index; - } + ctx->Current.RasterIndex = ctx->Current.Index; } - ctx->Current.RasterDistance = 0.0; - + /* raster texcoord = current texcoord */ { GLuint texSet; for (texSet=0; texSet<MAX_TEXTURE_UNITS; texSet++) { Index: xc/extras/Mesa/src/FX/fxdd.c diff -u xc/extras/Mesa/src/FX/fxdd.c:1.3 xc/extras/Mesa/src/FX/fxdd.c:1.4 --- xc/extras/Mesa/src/FX/fxdd.c:1.3 Wed Mar 8 16:39:53 2000 +++ xc/extras/Mesa/src/FX/fxdd.c Wed Mar 8 16:39:53 2000 @@ -52,6 +52,7 @@ #if defined(FX) +#include "image.h" #include "types.h" #include "fxdrv.h" #include "enums.h" @@ -169,95 +170,110 @@ fxMesa->clearA=alpha; } + /* Clear the color and/or depth buffers */ static GLbitfield fxDDClear(GLcontext *ctx, GLbitfield mask, GLboolean all, GLint x, GLint y, GLint width, GLint height ) { fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx; const GLuint colorMask = *((GLuint *) &ctx->Color.ColorMask); + const FxU16 clearD = (FxU16) (ctx->Depth.Clear * 0xffff); GLbitfield softwareMask = mask & (DD_STENCIL_BIT | DD_ACCUM_BIT); - GLbitfield newMask = mask & ~(DD_STENCIL_BIT | DD_ACCUM_BIT); - if (MESA_VERBOSE&VERBOSE_DRIVER) { + if (MESA_VERBOSE & VERBOSE_DRIVER) { fprintf(stderr,"fxmesa: fxDDClear(%d,%d,%d,%d)\n", (int) x, (int) y, (int) width, (int) height); } - if (mask == (DD_BACK_LEFT_BIT | DD_DEPTH_BIT) - && colorMask == 0xffffffff) { - /* common case: clear back color buffer and depth buffer */ - FX_grRenderBuffer(GR_BUFFER_BACKBUFFER); - FX_grBufferClear(fxMesa->clearC, fxMesa->clearA, - (FxU16)(ctx->Depth.Clear*0xffff)); - return 0; - } - - /* depth masking */ - if (newMask & DD_DEPTH_BIT) { - FX_grDepthMask(FXTRUE); - CLEAR_BITS(newMask, DD_DEPTH_BIT); - } - else { - FX_grDepthMask(FXFALSE); + if (colorMask != 0xffffffff) { + /* do color buffer clears in software */ + softwareMask |= (mask & (DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT)); + mask &= ~(DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT); } - if (colorMask != 0xffffffff) { - /* do masked color clear in software */ - softwareMask |= (newMask & (DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT)); - CLEAR_BITS(newMask, (DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT)); - } - - if (newMask & (DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT)) { - if (newMask & DD_FRONT_LEFT_BIT) { - if (mask & DD_DEPTH_BIT) { - /* XXX it appears that the depth buffer isn't cleared when - * glRenderBuffer(GR_BUFFER_FRONTBUFFER) is set. - * This is a work-around/ - */ - FX_grRenderBuffer(GR_BUFFER_BACKBUFFER); - FX_grColorMask(FXFALSE,FXFALSE); - FX_grBufferClear(fxMesa->clearC, fxMesa->clearA, - (FxU16)(ctx->Depth.Clear*0xffff)); - FX_grColorMask(ctx->Color.ColorMask[RCOMP] || - ctx->Color.ColorMask[GCOMP] || - ctx->Color.ColorMask[BCOMP], - ctx->Color.ColorMask[ACOMP] && fxMesa->haveAlphaBuffer); + /* + * This could probably be done fancier but doing each possible case + * explicitly is less error prone. + */ + switch (mask) { + case DD_BACK_LEFT_BIT | DD_DEPTH_BIT: + /* back buffer & depth */ + FX_grDepthMask(FXTRUE); + FX_grRenderBuffer(GR_BUFFER_BACKBUFFER); + FX_grBufferClear(fxMesa->clearC, fxMesa->clearA, clearD); + if (!ctx->Depth.Mask) { + FX_grDepthMask(FXFALSE); } + break; + case DD_FRONT_LEFT_BIT | DD_DEPTH_BIT: + /* XXX it appears that the depth buffer isn't cleared when + * glRenderBuffer(GR_BUFFER_FRONTBUFFER) is set. + * This is a work-around/ + */ + /* clear depth */ + FX_grRenderBuffer(GR_BUFFER_BACKBUFFER); + FX_grColorMask(FXFALSE,FXFALSE); + FX_grBufferClear(fxMesa->clearC, fxMesa->clearA, clearD); + /* clear front */ + FX_grColorMask(FXTRUE, ctx->Color.ColorMask[ACOMP] && fxMesa->haveAlphaBuffer); FX_grRenderBuffer(GR_BUFFER_FRONTBUFFER); - FX_grBufferClear(fxMesa->clearC, fxMesa->clearA, - (FxU16)(ctx->Depth.Clear*0xffff)); - } - - if (newMask & DD_BACK_LEFT_BIT) { + FX_grBufferClear(fxMesa->clearC, fxMesa->clearA, clearD); + break; + case DD_BACK_LEFT_BIT: + /* back buffer only */ + FX_grDepthMask(FXFALSE); FX_grRenderBuffer(GR_BUFFER_BACKBUFFER); + FX_grBufferClear(fxMesa->clearC, fxMesa->clearA, clearD); + if (!ctx->Depth.Mask) { + FX_grDepthMask(FXFALSE); + } + break; + case DD_FRONT_LEFT_BIT: + /* front buffer only */ + FX_grDepthMask(FXFALSE); + FX_grRenderBuffer(GR_BUFFER_FRONTBUFFER); + FX_grBufferClear(fxMesa->clearC, fxMesa->clearA, clearD); + if (!ctx->Depth.Mask) { + FX_grDepthMask(FXFALSE); + } + break; + case DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT: + /* front and back */ + FX_grDepthMask(FXFALSE); + FX_grRenderBuffer(GR_BUFFER_BACKBUFFER); + FX_grBufferClear(fxMesa->clearC, fxMesa->clearA, clearD); + FX_grRenderBuffer(GR_BUFFER_FRONTBUFFER); + FX_grBufferClear(fxMesa->clearC, fxMesa->clearA, clearD); + if (!ctx->Depth.Mask) { + FX_grDepthMask(FXFALSE); + } + break; + case DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT | DD_DEPTH_BIT: + /* clear front */ + FX_grDepthMask(FXFALSE); + FX_grRenderBuffer(GR_BUFFER_FRONTBUFFER); + FX_grBufferClear(fxMesa->clearC, fxMesa->clearA, clearD); + /* clear back and depth */ + FX_grDepthMask(FXTRUE); + FX_grRenderBuffer(GR_BUFFER_BACKBUFFER); + FX_grBufferClear(fxMesa->clearC, fxMesa->clearA, clearD); + if (!ctx->Depth.Mask) { + FX_grDepthMask(FXFALSE); + } + break; + case DD_DEPTH_BIT: + /* just the depth buffer */ + FX_grColorMask(FXFALSE,FXFALSE); FX_grBufferClear(fxMesa->clearC, fxMesa->clearA, (FxU16)(ctx->Depth.Clear*0xffff)); - } - - CLEAR_BITS(newMask, (DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT)); - } - else if (mask & DD_DEPTH_BIT) { - /* clear depth but not color */ - FX_grColorMask(FXFALSE,FXFALSE); - FX_grBufferClear(fxMesa->clearC, fxMesa->clearA, - (FxU16)(ctx->Depth.Clear*0xffff)); - FX_grColorMask(ctx->Color.ColorMask[RCOMP] || - ctx->Color.ColorMask[GCOMP] || - ctx->Color.ColorMask[BCOMP], - ctx->Color.ColorMask[ACOMP] && fxMesa->haveAlphaBuffer); - } - - /* Restore depth mask state */ - if (mask & DD_DEPTH_BIT) { - if (ctx->Depth.Mask) { - FX_grDepthMask(FXTRUE); - } - else { - FX_grDepthMask(FXFALSE); - } + FX_grColorMask(FXTRUE, ctx->Color.ColorMask[ACOMP] && fxMesa->haveAlphaBuffer); + break; + default: + /* error */ + ; } - return newMask | softwareMask; + return softwareMask; } @@ -311,11 +327,10 @@ #ifdef XF86DRI +/* test if window coord (px,py) is visible */ static GLboolean inClipRects(fxMesaContext fxMesa, int px, int py) { int i; - - py=fxMesa->height+fxMesa->y_offset-py; for (i=0; i<fxMesa->numClipRects; i++) { if ((px>=fxMesa->pClipRects[i].x1) && (px<fxMesa->pClipRects[i].x2) && @@ -333,127 +348,170 @@ const GLubyte *bitmap) { fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx; - FxU16 *p; GrLfbInfo_t info; - const GLubyte *pb; - int x,y,xmin,xmax,ymin,ymax; - GLint r,g,b,a,scrwidth,scrheight,stride; FxU16 color; + const struct gl_pixelstore_attrib *finalUnpack; + struct gl_pixelstore_attrib scissoredUnpack; - /* TODO: with a little work, these bitmap unpacking parameter restrictions - * could be removed. - */ - if((unpack->Alignment!=1) || - (unpack->RowLength!=0) || - (unpack->SkipPixels!=0) || - (unpack->SkipRows!=0) || - (unpack->SwapBytes) || - (unpack->LsbFirst)) + /* check if there's any raster operations enabled which we can't handle */ + if (ctx->RasterMask & (ALPHATEST_BIT | + BLEND_BIT | + DEPTH_BIT | + FOG_BIT | + LOGIC_OP_BIT | + SCISSOR_BIT | + STENCIL_BIT | + MASKING_BIT | + ALPHABUF_BIT | + MULTI_DRAW_BIT)) return GL_FALSE; if (ctx->Scissor.Enabled) { - xmin=ctx->Scissor.X; - xmax=ctx->Scissor.X+ctx->Scissor.Width; - ymin=ctx->Scissor.Y; - ymax=ctx->Scissor.Y+ctx->Scissor.Height; - } else { - xmin=0; - xmax=fxMesa->width; - ymin=0; - ymax=fxMesa->height; - } - - xmin+=fxMesa->x_offset; - xmax+=fxMesa->x_offset; - -#ifdef XF86DRI -#define ISCLIPPED(rx, ry) ( ((rx)<xmin) || ((rx)>=xmax) || !inClipRects(fxMesa, rx, ry)) -#else -#define ISCLIPPED(rx, ry) ( ((rx)<xmin) || ((rx)>=xmax) ) -#endif -#define DRAWBIT(i) { \ - if(!ISCLIPPED(x+px, y)) \ - if( (*pb) & (1<<(i)) ) \ - (*p)=color; \ - p++; \ - x++; \ - if(x>=width) { \ - pb++; \ - break; \ - } \ -} - - scrwidth=fxMesa->width; - scrheight=fxMesa->height; - - if ((px>=scrwidth) || (px+width<=0) || (py>=scrheight) || (py+height<=0)) - return GL_TRUE; + /* This is a bit tricky, but by carefully adjusting the px, py, + * width, height, skipPixels and skipRows values we can do + * scissoring without special code in the rendering loop. + */ + + /* we'll construct a new pixelstore struct */ + finalUnpack = &scissoredUnpack; + scissoredUnpack = *unpack; + if (scissoredUnpack.RowLength == 0) + scissoredUnpack.RowLength = width; + + /* clip left */ + if (px < ctx->Scissor.X) { + scissoredUnpack.SkipPixels += (ctx->Scissor.X - px); + width -= (ctx->Scissor.X - px); + px = ctx->Scissor.X; + } + /* clip right */ + if (px + width >= ctx->Scissor.X + ctx->Scissor.Width) { + width -= (px + width - (ctx->Scissor.X + ctx->Scissor.Width)); + } + /* clip bottom */ + if (py < ctx->Scissor.Y) { + scissoredUnpack.SkipRows += (ctx->Scissor.Y - py); + height -= (ctx->Scissor.Y - py); + py = ctx->Scissor.Y; + } + /* clip top */ + if (py + height >= ctx->Scissor.Y + ctx->Scissor.Height) { + height -= (py + height - (ctx->Scissor.Y + ctx->Scissor.Height)); + } - pb=bitmap; + if (width <= 0 || height <= 0) + return GL_TRUE; /* totally scissored away */ + } + else { + finalUnpack = unpack; + } - if(py<0) { - pb+=(height*(-py)) >> (3+1); - height+=py; - py=0; - } - - if (py+height>=scrheight) - height-=(py+height)-scrheight; - - info.size=sizeof(info); - if(!FX_grLfbLock(GR_LFB_WRITE_ONLY, - fxMesa->currentFB, - GR_LFBWRITEMODE_565, - GR_ORIGIN_UPPER_LEFT, - FXFALSE, - &info)) { + /* compute pixel value */ + { + GLint r = (GLint) (ctx->Current.RasterColor[0] * 255.0f); + GLint g = (GLint) (ctx->Current.RasterColor[1] * 255.0f); + GLint b = (GLint) (ctx->Current.RasterColor[2] * 255.0f); + /*GLint a = (GLint)(ctx->Current.RasterColor[3]*255.0f);*/ + if (fxMesa->bgrOrder) + color = (FxU16) + ( ((FxU16)0xf8 & b) << (11-3)) | + ( ((FxU16)0xfc & g) << (5-3+1)) | + ( ((FxU16)0xf8 & r) >> 3); + else + color = (FxU16) + ( ((FxU16)0xf8 & r) << (11-3)) | + ( ((FxU16)0xfc & g) << (5-3+1)) | + ( ((FxU16)0xf8 & b) >> 3); + } + + info.size = sizeof(info); + if (!FX_grLfbLock(GR_LFB_WRITE_ONLY, + fxMesa->currentFB, + GR_LFBWRITEMODE_565, + GR_ORIGIN_UPPER_LEFT, + FXFALSE, + &info)) { #ifndef FX_SILENT fprintf(stderr,"fx Driver: error locking the linear frame buffer\n"); #endif return GL_TRUE; } - r=(GLint)(ctx->Current.RasterColor[0]*255.0f); - g=(GLint)(ctx->Current.RasterColor[1]*255.0f); - b=(GLint)(ctx->Current.RasterColor[2]*255.0f); - a=(GLint)(ctx->Current.RasterColor[3]*255.0f); - if (fxMesa->bgrOrder) - color=(FxU16) - ( ((FxU16)0xf8 & b) <<(11-3)) | - ( ((FxU16)0xfc & g) <<(5-3+1)) | - ( ((FxU16)0xf8 & r) >> 3); - else - color=(FxU16) - ( ((FxU16)0xf8 & r) <<(11-3)) | - ( ((FxU16)0xfc & g) <<(5-3+1)) | - ( ((FxU16)0xf8 & b) >> 3); - - stride=info.strideInBytes>>1; - - /* This code is a bit slow... */ - - if (py>ymin) ymin=py; - if (py+height<ymax) ymax=py+height; - - px+=fxMesa->x_offset; - scrheight=fxMesa->height+fxMesa->y_offset; - - for(y=ymin; y<ymax; y++) { - - p=((FxU16 *)info.lfbPtr)+px+((scrheight-y)*stride); - - for(x=0;;) { - DRAWBIT(7); DRAWBIT(6); DRAWBIT(5); DRAWBIT(4); - DRAWBIT(3); DRAWBIT(2); DRAWBIT(1); DRAWBIT(0); - pb++; +#ifdef XF86DRI +#define INSIDE(c, x, y) inClipRects((c), (x), (y)) +#else +#define INSIDE(c, x, y) (1) +#endif + + { + const GLint winX = fxMesa->x_offset; + const GLint winY = fxMesa->y_offset + fxMesa->height - 1; + /* The dest stride depends on the hardware and whether we're drawing + * to the front or back buffer. This compile-time test seems to do + * the job for now. + */ +#ifdef XF86DRI + const GLint dstStride = (fxMesa->glCtx->Color.DrawBuffer == GL_FRONT) + ? (fxMesa->screen_width) : (info.strideInBytes / 2); +#else + const GLint dstStride = info.strideInBytes / 2; /* stride in GLushorts */ +#endif + GLint row; + /* compute dest address of bottom-left pixel in bitmap */ + GLushort *dst = (GLushort *) info.lfbPtr + + (winY - py) * dstStride + + (winX + px); + + for (row = 0; row < height; row++) { + const GLubyte *src = (const GLubyte *) gl_pixel_addr_in_image( finalUnpack, + bitmap, width, height, GL_COLOR_INDEX, GL_BITMAP, 0, row, 0 ); + if (finalUnpack->LsbFirst) { + /* least significan bit first */ + GLubyte mask = 1U << (finalUnpack->SkipPixels & 0x7); + GLint col; + for (col=0; col<width; col++) { + if (*src & mask) { + if (INSIDE(fxMesa, winX + px + col, winY - py - row)) + dst[col] = color; + } + if (mask == 128U) { + src++; + mask = 1U; + } + else { + mask = mask << 1; + } + } + if (mask != 1) + src++; + } + else { + /* most significan bit first */ + GLubyte mask = 128U >> (finalUnpack->SkipPixels & 0x7); + GLint col; + for (col=0; col<width; col++) { + if (*src & mask) { + if (INSIDE(fxMesa, winX + px + col, winY - py - row)) + dst[col] = color; + } + if (mask == 1U) { + src++; + mask = 128U; + } + else { + mask = mask >> 1; + } + } + if (mask != 128) + src++; + } + dst -= dstStride; } } - FX_grLfbUnlock(GR_LFB_WRITE_ONLY,fxMesa->currentFB); - -#undef ISCLIPPED -#undef DRAWBIT +#undef INSIDE + FX_grLfbUnlock(GR_LFB_WRITE_ONLY,fxMesa->currentFB); return GL_TRUE; } @@ -510,7 +568,7 @@ } } /* now make the GL_RENDERER string */ - sprintf(buffer, "Mesa DRI %s 20000208", hardware); + sprintf(buffer, "Mesa DRI %s 20000224", hardware); return buffer; } case GL_VENDOR: @@ -650,6 +708,7 @@ FX_grLfbWriteColorFormat(GR_COLORFORMAT_ABGR); /* Not every Glide has this */ #endif + fxMesa->textureAlign=FX_grGetInteger(FX_TEXTURE_ALIGN); fxMesa->glCtx->Const.MaxTextureLevels=9; fxMesa->glCtx->Const.MaxTextureSize=256; fxMesa->glCtx->Const.MaxTextureUnits=fxMesa->emulateTwoTMUs ? 2 : 1; @@ -692,28 +751,55 @@ } - +#if 0 +/* Example extension function */ +static void fxFooBarEXT(GLint i) +{ + printf("You called glFooBarEXT(%d)\n", i); +} +#endif void fxDDInitExtensions( GLcontext *ctx ) { fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx; - gl_extensions_add( ctx, DEFAULT_ON, "3DFX_set_global_palette", 0 ); - gl_extensions_add( ctx, DEFAULT_ON, "GL_FXMESA_global_texture_lod_bias", 0); + gl_extensions_disable(ctx, "GL_EXT_blend_logic_op"); + gl_extensions_disable(ctx, "GL_EXT_blend_minmax"); + gl_extensions_disable(ctx, "GL_EXT_blend_subtract"); + gl_extensions_disable(ctx, "GL_EXT_blend_color"); + gl_extensions_disable(ctx, "GL_EXT_paletted_texture"); + + gl_extensions_add(ctx, DEFAULT_ON, "3DFX_set_global_palette", 0); + gl_extensions_add(ctx, DEFAULT_ON, "GL_FXMESA_global_texture_lod_bias", 0); - if(fxMesa->haveTwoTMUs) - gl_extensions_add( ctx, DEFAULT_ON, "GL_EXT_texture_env_add", 0); + if (!fxMesa->haveTwoTMUs) + gl_extensions_disable(ctx, "GL_EXT_texture_env_add"); if (!fxMesa->emulateTwoTMUs) - gl_extensions_disable( ctx, "GL_ARB_multitexture" ); + gl_extensions_disable(ctx, "GL_ARB_multitexture"); + + + /* Example of hooking in an extension function. + * For DRI-based drivers, also see __driRegisterExtensions in the + * tdfx_xmesa.c file. + */ +#if 0 + { + void **dispatchTable = (void **) ctx->Exec; + const int _gloffset_FooBarEXT = 555; /* just an example number! */ + const int tabSize = _glapi_get_dispatch_table_size(); + assert(_gloffset_FooBarEXT < tabSize); + dispatchTable[_gloffset_FooBarEXT] = (void *) fxFooBarEXT; + /* XXX You would also need to hook into the display list dispatch + * table. Really, the implementation of extensions might as well + * be in the core of Mesa since core Mesa and the device driver + * is one big shared lib. + */ + } +#endif } -/* - This driver may need to move the drawing operations to a different sub - window. This modifies the viewport command to add our X,Y offset to all - drawn objects that go through the viewport transformation. -*/ /************************************************************************/ /************************************************************************/ Index: xc/extras/Mesa/src/FX/fxdrv.h diff -u xc/extras/Mesa/src/FX/fxdrv.h:1.3 xc/extras/Mesa/src/FX/fxdrv.h:1.4 --- xc/extras/Mesa/src/FX/fxdrv.h:1.3 Wed Mar 8 16:39:53 2000 +++ xc/extras/Mesa/src/FX/fxdrv.h Wed Mar 8 16:39:53 2000 @@ -478,7 +478,9 @@ GLenum fogTableMode; GLfloat fogDensity; + GLfloat fogStart, fogEnd; GrFog_t *fogTable; + GLint textureAlign; /* Acc. functions */ Index: xc/extras/Mesa/src/FX/fxfasttmp.h diff -u xc/extras/Mesa/src/FX/fxfasttmp.h:1.2 xc/extras/Mesa/src/FX/fxfasttmp.h:1.3 --- xc/extras/Mesa/src/FX/fxfasttmp.h:1.2 Wed Mar 8 16:39:53 2000 +++ xc/extras/Mesa/src/FX/fxfasttmp.h Wed Mar 8 16:39:53 2000 @@ -145,7 +145,7 @@ for ( f = first ; f != last ; STRIDE_F(f, stride)) { - GLfloat oow = 1.0f/f[3]; /* urp! */ + GLfloat oow = 1.0f/f[CLIP_WCOORD]; /* urp! */ #if FX_USE_PARGB if (TYPE & SETUP_RGBA) { @@ -184,7 +184,7 @@ for ( f = first ; f != last ; STRIDE_F(f, stride), mask++) { if (!*mask) { - GLfloat oow = 1.0f / f[3]; + GLfloat oow = 1.0f / f[CLIP_WCOORD]; #if FX_USE_PARGB if (TYPE & SETUP_RGBA) { const GLuint r = f[CLIP_R]; Index: xc/extras/Mesa/src/FX/fxglidew.c diff -u xc/extras/Mesa/src/FX/fxglidew.c:1.2 xc/extras/Mesa/src/FX/fxglidew.c:1.3 --- xc/extras/Mesa/src/FX/fxglidew.c:1.2 Wed Mar 8 16:39:53 2000 +++ xc/extras/Mesa/src/FX/fxglidew.c Wed Mar 8 16:39:53 2000 @@ -68,6 +68,9 @@ return FXFALSE; case FX_PENDING_BUFFERSWAPS: return grBufferNumPending(); + case FX_TEXTURE_ALIGN: + /* This is a guess from reading the glide3 docs */ + return 8; default: if (MESA_VERBOSE&VERBOSE_DRIVER) { fprintf(stderr,"Wrong parameter in FX_grGetInteger!\n"); @@ -84,6 +87,7 @@ case FX_GLIDE_STATE_SIZE: case FX_LFB_PIXEL_PIPE: case FX_PENDING_BUFFERSWAPS: + case FX_TEXTURE_ALIGN: grname = pname; break; default: Index: xc/extras/Mesa/src/FX/fxglidew.h diff -u xc/extras/Mesa/src/FX/fxglidew.h:1.2 xc/extras/Mesa/src/FX/fxglidew.h:1.3 --- xc/extras/Mesa/src/FX/fxglidew.h:1.2 Wed Mar 8 16:39:53 2000 +++ xc/extras/Mesa/src/FX/fxglidew.h Wed Mar 8 16:39:53 2000 @@ -66,11 +66,13 @@ #define FX_GLIDE_STATE_SIZE 0x0006 /* Size of buffer, in bytes, needed to save Glide state. */ #define FX_LFB_PIXEL_PIPE 0x0009 /* 1 if LFB writes can go through the 3D pixel pipe. */ #define FX_PENDING_BUFFERSWAPS 0x0014 /* The number of buffer swaps pending. */ + #define FX_TEXTURE_ALIGN 0x0024 /* The required alignment for textures */ #else - #define FX_FOG_TABLE_ENTRIES GR_FOG_TABLE_ENTRIES + #define FX_FOG_TABLE_ENTRIES GR_FOG_TABLE_ENTRIES #define FX_GLIDE_STATE_SIZE GR_GLIDE_STATE_SIZE - #define FX_LFB_PIXEL_PIPE GR_LFB_PIXEL_PIPE - #define FX_PENDING_BUFFERSWAPS GR_PENDING_BUFFERSWAPS + #define FX_LFB_PIXEL_PIPE GR_LFB_PIXEL_PIPE + #define FX_PENDING_BUFFERSWAPS GR_PENDING_BUFFERSWAPS + #define FX_TEXTURE_ALIGN GR_TEXTURE_ALIGN #endif /* Index: xc/extras/Mesa/src/FX/fxsetup.c diff -u xc/extras/Mesa/src/FX/fxsetup.c:1.3 xc/extras/Mesa/src/FX/fxsetup.c:1.4 --- xc/extras/Mesa/src/FX/fxsetup.c:1.3 Wed Mar 8 16:39:53 2000 +++ xc/extras/Mesa/src/FX/fxsetup.c Wed Mar 8 16:39:53 2000 @@ -66,8 +66,6 @@ static void fxSetupTexture(GLcontext *ctx); static void fxSetupBlend(GLcontext *ctx); static void fxSetupDepthTest(GLcontext *ctx); -static void fxFogTableGenerate(GLcontext *ctx); -static void fxSetupFog(GLcontext *ctx, GLboolean forceTableRebuild); static void fxSetupScissor(GLcontext *ctx); static void fxSetupCull(GLcontext *ctx); static void gl_print_fx_state_flags( const char *msg, GLuint flags); @@ -1424,67 +1422,58 @@ /**************************** Fog Mode SetUp ****************************/ /************************************************************************/ -static void fxFogTableGenerate(GLcontext *ctx) +/* + * This is called during state update in order to update the Glide fog state. + */ +static void fxSetupFog(GLcontext *ctx) { - int i; - float f,eyez; - fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx; - - for(i=0;i<FX_grGetInteger(FX_FOG_TABLE_ENTRIES);i++) { - eyez=guFogTableIndexToW(i); - - switch(ctx->Fog.Mode) { - case GL_LINEAR: - f=(ctx->Fog.End-eyez)/(ctx->Fog.End-ctx->Fog.Start); - break; - case GL_EXP: - f=exp(-ctx->Fog.Density*eyez); - break; - case GL_EXP2: - f=exp(-ctx->Fog.Density*ctx->Fog.Density*eyez*eyez); - break; - default: /* That should never happen */ - f=0.0f; - break; - } + if (ctx->Fog.Enabled && ctx->FogMode==FOG_FRAGMENT) { + fxMesaContext fxMesa = FX_CONTEXT(ctx); - fxMesa->fogTable[i]=(GrFog_t)((1.0f-CLAMP(f,0.0f,1.0f))*255.0f); - } -} - -static void fxSetupFog(GLcontext *ctx, GLboolean forceTableRebuild) -{ - fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx; - - if(ctx->Fog.Enabled && ctx->FogMode==FOG_FRAGMENT) { + /* update fog color */ GLubyte col[4]; - FX_grFogMode(GR_FOG_WITH_TABLE); - col[0]=(unsigned int)(255*ctx->Fog.Color[0]); col[1]=(unsigned int)(255*ctx->Fog.Color[1]); col[2]=(unsigned int)(255*ctx->Fog.Color[2]); col[3]=(unsigned int)(255*ctx->Fog.Color[3]); - FX_grFogColorValue(FXCOLOR4(col)); - if(forceTableRebuild || - (fxMesa->fogTableMode!=ctx->Fog.Mode) || - (fxMesa->fogDensity!=ctx->Fog.Density)) { - fxFogTableGenerate(ctx); - - fxMesa->fogTableMode=ctx->Fog.Mode; - fxMesa->fogDensity=ctx->Fog.Density; + if(fxMesa->fogTableMode != ctx->Fog.Mode || + fxMesa->fogDensity != ctx->Fog.Density || + fxMesa->fogStart != ctx->Fog.Start || + fxMesa->fogEnd != ctx->Fog.End) { + /* reload the fog table */ + switch (ctx->Fog.Mode) { + case GL_LINEAR: + guFogGenerateLinear(fxMesa->fogTable, ctx->Fog.Start, ctx->Fog.End); + break; + case GL_EXP: + guFogGenerateExp(fxMesa->fogTable, ctx->Fog.Density); + break; + case GL_EXP2: + guFogGenerateExp2(fxMesa->fogTable, ctx->Fog.Density); + break; + default: + ; + } + fxMesa->fogTableMode = ctx->Fog.Mode; + fxMesa->fogDensity = ctx->Fog.Density; + fxMesa->fogStart = ctx->Fog.Start; + fxMesa->fogEnd = ctx->Fog.End; } - + FX_grFogTable(fxMesa->fogTable); - } else + FX_grFogMode(GR_FOG_WITH_TABLE); + } + else { FX_grFogMode(GR_FOG_DISABLE); + } } void fxDDFogfv( GLcontext *ctx, GLenum pname, const GLfloat *params ) { FX_CONTEXT(ctx)->new_state |= FX_NEW_FOG; - ctx->Driver.RenderStart = fxSetupFXUnits; + ctx->Driver.RenderStart = fxSetupFXUnits; /* XXX why is this here? */ } /************************************************************************/ @@ -1823,7 +1812,7 @@ fxSetupDepthTest(ctx); if (newstate & FX_NEW_FOG) - fxSetupFog(ctx,GL_FALSE); + fxSetupFog(ctx); if (newstate & FX_NEW_SCISSOR) fxSetupScissor(ctx); Index: xc/extras/Mesa/src/X/fakeglx.c diff -u xc/extras/Mesa/src/X/fakeglx.c:1.3 xc/extras/Mesa/src/X/fakeglx.c:1.4 --- xc/extras/Mesa/src/X/fakeglx.c:1.3 Wed Mar 8 16:39:53 2000 +++ xc/extras/Mesa/src/X/fakeglx.c Wed Mar 8 16:39:53 2000 @@ -1206,12 +1206,12 @@ static void Fake_glXCopyContext( Display *dpy, GLXContext src, GLXContext dst, - GLuint mask ) + unsigned long mask ) { XMesaContext xm_src = (XMesaContext) src; XMesaContext xm_dst = (XMesaContext) dst; (void) dpy; - gl_copy_context( xm_src->gl_ctx, xm_dst->gl_ctx, mask ); + gl_copy_context( xm_src->gl_ctx, xm_dst->gl_ctx, (GLuint) mask ); } Index: xc/extras/Mesa/src/X/glxapi.c diff -u xc/extras/Mesa/src/X/glxapi.c:1.3 xc/extras/Mesa/src/X/glxapi.c:1.4 --- xc/extras/Mesa/src/X/glxapi.c:1.3 Wed Mar 8 16:39:53 2000 +++ xc/extras/Mesa/src/X/glxapi.c Wed Mar 8 16:39:53 2000 @@ -168,7 +168,8 @@ } -void glXCopyContext(Display *dpy, GLXContext src, GLXContext dst, GLuint mask) +void glXCopyContext(Display *dpy, GLXContext src, GLXContext dst, + unsigned long mask) { struct _glxapi_table *t = get_dispatch(dpy); if (!t) Index: xc/extras/Mesa/src/X/glxapi.h diff -u xc/extras/Mesa/src/X/glxapi.h:1.2 xc/extras/Mesa/src/X/glxapi.h:1.3 --- xc/extras/Mesa/src/X/glxapi.h:1.2 Wed Mar 8 16:39:53 2000 +++ xc/extras/Mesa/src/X/glxapi.h Wed Mar 8 16:39:53 2000 @@ -55,7 +55,7 @@ struct _glxapi_table { /* GLX 1.0 functions */ XVisualInfo *(*ChooseVisual)(Display *dpy, int screen, int *list); - void (*CopyContext)(Display *dpy, GLXContext src, GLXContext dst, GLuint mask); + void (*CopyContext)(Display *dpy, GLXContext src, GLXContext dst, unsigned long mask); GLXContext (*CreateContext)(Display *dpy, XVisualInfo *visinfo, GLXContext shareList, Bool direct); GLXPixmap (*CreateGLXPixmap)(Display *dpy, XVisualInfo *visinfo, Pixmap pixmap); void (*DestroyContext)(Display *dpy, GLXContext ctx); Index: xc/extras/Mesa/src/X/xmesa1.c diff -u xc/extras/Mesa/src/X/xmesa1.c:1.3 xc/extras/Mesa/src/X/xmesa1.c:1.4 --- xc/extras/Mesa/src/X/xmesa1.c:1.3 Wed Mar 8 16:39:53 2000 +++ xc/extras/Mesa/src/X/xmesa1.c Wed Mar 8 16:39:54 2000 @@ -255,15 +255,34 @@ /* * Return the true number of bits per pixel for XImages. - * For example, if we request a 24-bit deep visual we may actually - * get a 32-bit per pixel XImage. This function gives us this information. + * For example, if we request a 24-bit deep visual we may actually need/get + * 32bpp XImages. This function returns the appropriate bpp. * Input: dpy - the X display * visinfo - desribes the visual to be used for XImages * Return: true number of bits per pixel for XImages */ -#ifndef XFree86Server -static int bits_per_pixel( XMesaDisplay *dpy, XVisualInfo *visinfo ) +#define GET_BITS_PER_PIXEL(xmv) bits_per_pixel(xmv) + +#ifdef XFree86Server + +static int bits_per_pixel( XMesaVisual xmv ) +{ + XMesaVisualInfo visinfo = xmv->visinfo; + const int depth = visinfo->nplanes; + int i; + for (i = 0; i < screenInfo.numPixmapFormats; i++) { + if (screenInfo.formats[i].depth == depth) + return screenInfo.formats[i].bitsPerPixel; + } + return depth; /* should never get here, but this should be safe */ +} + +#else + +static int bits_per_pixel( XMesaVisual xmv ) { + XMesaDisplay *dpy = xmv->display; + XMesaVisualInfo visinfo = xmv->visinfo; XMesaImage *img; int bitsPerPixel; /* Create a temporary XImage */ @@ -527,6 +546,26 @@ return GL_FALSE; } + if (b->backimage) { + int height = b->backimage->height; + /* Needed by PIXELADDR1 macro */ + b->ximage_width1 = b->backimage->bytes_per_line; + b->ximage_origin1 = (GLubyte *) b->backimage->data + + b->ximage_width1 * (height-1); + /* Needed by PIXELADDR2 macro */ + b->ximage_width2 = b->backimage->bytes_per_line / 2; + b->ximage_origin2 = (GLushort *) b->backimage->data + + b->ximage_width2 * (height-1); + /* Needed by PIXELADDR3 macro */ + b->ximage_width3 = b->backimage->bytes_per_line; + b->ximage_origin3 = (GLubyte *) b->backimage->data + + b->ximage_width3 * (height-1); + /* Needed by PIXELADDR4 macro */ + b->ximage_width4 = b->backimage->width; + b->ximage_origin4 = (GLuint *) b->backimage->data + + b->ximage_width4 * (height-1); + } + return GL_TRUE; #else /* Can't compile XSHM support */ @@ -560,9 +599,9 @@ /* Allocate new back buffer */ #ifdef XFree86Server - { + { /* Allocate a regular XImage for the back buffer. */ - b->backimage = XMesaCreateImage(GET_VISUAL_DEPTH(b->xm_visual), + b->backimage = XMesaCreateImage(b->xm_visual->BitsPerPixel, b->width, b->height, NULL); #else if (b->shm==0 @@ -971,7 +1010,6 @@ XMesaWindow window, XMesaColormap cmap ) { unsigned long rmask, gmask, bmask; - int bitsPerPixel; (void) buffer; (void) window; (void) cmap; @@ -1056,14 +1094,11 @@ /* * Now check for TrueColor visuals which we can optimize. */ - - bitsPerPixel = GET_BITS_PER_PIXEL(v); - if ( GET_REDMASK(v) ==0x0000ff && GET_GREENMASK(v)==0x00ff00 && GET_BLUEMASK(v) ==0xff0000 && CHECK_BYTE_ORDER(v) - && bitsPerPixel==32 + && v->BitsPerPixel==32 && sizeof(GLuint)==4 && v->RedGamma==1.0 && v->GreenGamma==1.0 && v->BlueGamma==1.0) { /* common 32 bpp config used on SGI, Sun */ @@ -1073,7 +1108,7 @@ && GET_GREENMASK(v)==0x00ff00 && GET_BLUEMASK(v) ==0x0000ff && CHECK_BYTE_ORDER(v) - && bitsPerPixel==32 + && v->BitsPerPixel==32 && sizeof(GLuint)==4 && v->RedGamma==1.0 && v->GreenGamma==1.0 && v->BlueGamma==1.0) { /* common 32 bpp config used on Linux, HP, IBM */ @@ -1083,7 +1118,7 @@ && GET_GREENMASK(v)==0x00ff00 && GET_BLUEMASK(v) ==0x0000ff && CHECK_BYTE_ORDER(v) - && bitsPerPixel==24 + && v->BitsPerPixel==24 && sizeof(GLuint)==4 && v->RedGamma==1.0 && v->GreenGamma==1.0 && v->BlueGamma==1.0) { /* common packed 24 bpp config used on Linux */ @@ -1093,7 +1128,7 @@ && GET_GREENMASK(v)==0x07e0 && GET_BLUEMASK(v) ==0x001f && CHECK_BYTE_ORDER(v) - && bitsPerPixel==16 + && v->BitsPerPixel==16 && sizeof(GLushort)==2 && v->RedGamma==1.0 && v->GreenGamma==1.0 && v->BlueGamma==1.0) { /* 5-6-5 color weight on common PC VGA boards */ @@ -1149,6 +1184,11 @@ assert(b->xm_visual == v); } + /* Save true bits/pixel */ + v->BitsPerPixel = GET_BITS_PER_PIXEL(v); + assert(v->BitsPerPixel > 0); + + if (rgb_flag==GL_FALSE) { /* COLOR-INDEXED WINDOW: * Even if the visual is TrueColor or DirectColor we treat it as @@ -1192,10 +1232,6 @@ } - /* Save true bits/pixel */ - v->BitsPerPixel = GET_BITS_PER_PIXEL(v); - assert(v->BitsPerPixel > 0); - /* * If MESA_INFO env var is set print out some debugging info * which can help Brian figure out what's going on when a user @@ -1207,7 +1243,7 @@ fprintf(stderr, "X/Mesa undithered pf = %u\n", v->undithered_pf); fprintf(stderr, "X/Mesa level = %d\n", v->level); fprintf(stderr, "X/Mesa depth = %d\n", GET_VISUAL_DEPTH(v)); - fprintf(stderr, "X/Mesa bits per pixel = %d\n", GET_BITS_PER_PIXEL(v)); + fprintf(stderr, "X/Mesa bits per pixel = %d\n", v->BitsPerPixel); } if (b && window) { @@ -1665,7 +1701,7 @@ assert(v); #ifdef XFree86Server - if (GET_VISUAL_DEPTH(v) != ((XMesaDrawable)w)->bitsPerPixel) { + if (GET_VISUAL_DEPTH(v) != ((XMesaDrawable)w)->depth) { #else XGetWindowAttributes( v->display, w, &attr ); @@ -1780,14 +1816,18 @@ b->FXisHackUsable = GL_FALSE; b->FXwindowHack = GL_FALSE; } - fprintf(stderr, "voodoo %d, wid %d height %d hack: usable %d active %d\n", - hw, b->width, b->height, b->FXisHackUsable, b->FXwindowHack); + /* + fprintf(stderr, + "voodoo %d, wid %d height %d hack: usable %d active %d\n", + hw, b->width, b->height, b->FXisHackUsable, b->FXwindowHack); + */ } - } else { - fprintf(stderr,"WARNING: This Mesa Library includes the Glide driver but\n"); - fprintf(stderr," you have not defined the MESA_GLX_FX env. var.\n"); - fprintf(stderr," (check the README.3DFX file for more information).\n\n"); - fprintf(stderr," you can disable this message with a 'export MESA_GLX_FX=disable'.\n"); + } + else { + fprintf(stderr,"WARNING: This Mesa Library includes the Glide driver but\n"); + fprintf(stderr," you have not defined the MESA_GLX_FX env. var.\n"); + fprintf(stderr," (check the README.3DFX file for more information).\n\n"); + fprintf(stderr," you can disable this message with a 'export MESA_GLX_FX=disable'.\n"); } #endif @@ -2028,7 +2068,8 @@ */ GLboolean XMesaUnbindContext( XMesaContext c ) { - return GL_TRUE; + /* A no-op for XFree86 integration purposes */ + return GL_TRUE; } @@ -2096,11 +2137,11 @@ if (fx && fx[0] != 'd') { GrHwConfiguration hw; if (!grSstQueryHardware(&hw)) { - fprintf(stderr, "!grSstQueryHardware\n"); + /*fprintf(stderr, "!grSstQueryHardware\n");*/ return GL_FALSE; } if (hw.num_sst < 1) { - fprintf(stderr, "hw.num_sst < 1\n"); + /*fprintf(stderr, "hw.num_sst < 1\n");*/ return GL_FALSE; } if (XMesa) { @@ -2121,7 +2162,7 @@ } } } - fprintf(stderr, "fallthrough\n"); + /*fprintf(stderr, "fallthrough\n");*/ #else (void) mode; #endif Index: xc/extras/Mesa/src/X/xmesa2.c diff -u xc/extras/Mesa/src/X/xmesa2.c:1.3 xc/extras/Mesa/src/X/xmesa2.c:1.4 --- xc/extras/Mesa/src/X/xmesa2.c:1.3 Wed Mar 8 16:39:54 2000 +++ xc/extras/Mesa/src/X/xmesa2.c Wed Mar 8 16:39:54 2000 @@ -184,9 +184,9 @@ /* Needed by PIXELADDR3 macro */ xmesa->xm_buffer->ximage_width3 - = xmesa->xm_buffer->backimage->bytes_per_line / 3; + = xmesa->xm_buffer->backimage->bytes_per_line; xmesa->xm_buffer->ximage_origin3 - = (bgr_t *) xmesa->xm_buffer->backimage->data + = (GLubyte *) xmesa->xm_buffer->backimage->data + xmesa->xm_buffer->ximage_width3 * (winheight-1); /* Needed by PIXELADDR4 macro */ @@ -550,21 +550,41 @@ /**********************************************************************/ -/* Clear a pixmap color buffer, may be the front or back buffer */ static void -clear_pixmap( GLcontext *ctx, GLboolean all, - GLint x, GLint y, GLint width, GLint height ) +clear_front_pixmap( GLcontext *ctx, GLboolean all, + GLint x, GLint y, GLint width, GLint height ) +{ + const XMesaContext xmesa = (XMesaContext) ctx->DriverCtx; + if (all) { + XMesaFillRectangle( xmesa->display, xmesa->xm_buffer->frontbuffer, + xmesa->xm_buffer->cleargc, + 0, 0, + xmesa->xm_buffer->width+1, + xmesa->xm_buffer->height+1 ); + } + else { + XMesaFillRectangle( xmesa->display, xmesa->xm_buffer->frontbuffer, + xmesa->xm_buffer->cleargc, + x, xmesa->xm_buffer->height - y - height, + width, height ); + } +} + + +static void +clear_back_pixmap( GLcontext *ctx, GLboolean all, + GLint x, GLint y, GLint width, GLint height ) { const XMesaContext xmesa = (XMesaContext) ctx->DriverCtx; if (all) { - XMesaFillRectangle( xmesa->display, xmesa->xm_buffer->buffer, + XMesaFillRectangle( xmesa->display, xmesa->xm_buffer->backpixmap, xmesa->xm_buffer->cleargc, 0, 0, xmesa->xm_buffer->width+1, xmesa->xm_buffer->height+1 ); } else { - XMesaFillRectangle( xmesa->display, xmesa->xm_buffer->buffer, + XMesaFillRectangle( xmesa->display, xmesa->xm_buffer->backpixmap, xmesa->xm_buffer->cleargc, x, xmesa->xm_buffer->height - y - height, width, height ); @@ -4473,7 +4493,6 @@ rgba[i][GCOMP] = ptr3[i].g; rgba[i][BCOMP] = ptr3[i].b; rgba[i][ACOMP] = 255; - ptr3++; } } break; @@ -5219,8 +5238,12 @@ /* setup pointers to front and back buffer clear functions */ /* XXX this bit of code could be moved to a one-time init */ - xmesa->xm_buffer->front_clear_func = clear_pixmap; - if (sizeof(GLushort)!=2 || sizeof(GLuint)!=4) { + xmesa->xm_buffer->front_clear_func = clear_front_pixmap; + if (xmesa->xm_buffer->backpixmap != XIMAGE) { + /* back buffer is a pixmap */ + xmesa->xm_buffer->back_clear_func = clear_back_pixmap; + } + else if (sizeof(GLushort)!=2 || sizeof(GLuint)!=4) { /* Do this on Crays */ xmesa->xm_buffer->back_clear_func = clear_nbit_ximage; } Index: xc/extras/Mesa/src/X/xmesaP.h diff -u xc/extras/Mesa/src/X/xmesaP.h:1.3 xc/extras/Mesa/src/X/xmesaP.h:1.4 --- xc/extras/Mesa/src/X/xmesaP.h:1.3 Wed Mar 8 16:39:54 2000 +++ xc/extras/Mesa/src/X/xmesaP.h Wed Mar 8 16:39:54 2000 @@ -77,7 +77,7 @@ GLvisual *gl_visual; /* Device independent visual parameters */ XMesaDisplay *display; /* The X11 display */ #ifdef XFree86Server - GLint screen_depth; /* The depth of the screen */ + GLint screen_depth; /* The depth of the screen */ #else XVisualInfo *vishandle; /* The pointer returned by glXChooseVisual */ #endif @@ -196,7 +196,7 @@ GLint ximage_width1; GLushort *ximage_origin2; /* used for PIXELADDR2 macro */ GLint ximage_width2; - bgr_t *ximage_origin3; /* used for PIXELADDR3 macro */ + GLubyte *ximage_origin3; /* used for PIXELADDR3 macro */ GLint ximage_width3; GLuint *ximage_origin4; /* used for PIXELADDR4 macro */ GLint ximage_width4; @@ -499,7 +499,7 @@ ( (BUFFER)->ximage_origin2 - (Y) * (BUFFER)->ximage_width2 + (X) ) #define PIXELADDR3( BUFFER, X, Y ) \ - ( (BUFFER)->ximage_origin3 - (Y) * (BUFFER)->ximage_width3 + (X) ) + ( (bgr_t *) ( (BUFFER)->ximage_origin3 - (Y) * (BUFFER)->ximage_width3 + 3 * (X) )) #define PIXELADDR4( BUFFER, X, Y ) \ ( (BUFFER)->ximage_origin4 - (Y) * (BUFFER)->ximage_width4 + (X) ) Index: xc/extras/Mesa/src/X86/assyntax.h diff -u xc/extras/Mesa/src/X86/assyntax.h:1.3 xc/extras/Mesa/src/X86/assyntax.h:1.4 --- xc/extras/Mesa/src/X86/assyntax.h:1.3 Wed Mar 8 16:39:54 2000 +++ xc/extras/Mesa/src/X86/assyntax.h Wed Mar 8 16:39:54 2000 @@ -243,9 +243,10 @@ #endif /* ACK_ASSEMBLER */ -#if defined(Lynx) || (defined(SYSV) || defined(SVR4)) && !defined(ACK_ASSEMBLER) \ +#if (defined(Lynx) || (defined(SYSV) || defined(SVR4)) && !defined(ACK_ASSEMBLER) \ || (defined(linux) || defined(__OS2ELF__)) && defined(__ELF__) \ - || defined(__FreeBSD__) && __FreeBSD__ >= 3 + || defined(__FreeBSD__) && __FreeBSD__ >= 3) \ + || (defined(__NetBSD__) && defined(__ELF__)) #define GLNAME(a) a #else #define GLNAME(a) CONCAT(_,a) Index: xc/extras/Mesa/src/X86/glapi_x86.S diff -u xc/extras/Mesa/src/X86/glapi_x86.S:1.2 xc/extras/Mesa/src/X86/glapi_x86.S:1.3 --- xc/extras/Mesa/src/X86/glapi_x86.S:1.2 Wed Mar 8 16:39:54 2000 +++ xc/extras/Mesa/src/X86/glapi_x86.S Wed Mar 8 16:39:54 2000 @@ -26,6 +26,9 @@ /* * X86-optimized dispatch code contibuted by Josh Vanderhoof + * + * This file will be machine-generated from the gl.spec file at some point + * in the future. */ @@ -3317,8 +3320,8 @@ GL_PREFIX(BlendColorEXT): MOV_L(GLNAME(_glapi_Dispatch), EAX) TEST_L(EAX, EAX) - JZ(GLNAME(_glapi_fallback_BlendColorEXT)) - JMP(GL_OFFSET(_gloffset_BlendColorEXT)) + JZ(GLNAME(_glapi_fallback_BlendColor)) + JMP(GL_OFFSET(_gloffset_BlendColor)) ALIGNTEXT16 GLOBL_FN(GL_PREFIX(PolygonOffsetEXT)) @@ -3333,24 +3336,24 @@ GL_PREFIX(TexImage3DEXT): MOV_L(GLNAME(_glapi_Dispatch), EAX) TEST_L(EAX, EAX) - JZ(GLNAME(_glapi_fallback_TexImage3DEXT)) - JMP(GL_OFFSET(_gloffset_TexImage3DEXT)) + JZ(GLNAME(_glapi_fallback_TexImage3D)) + JMP(GL_OFFSET(_gloffset_TexImage3D)) ALIGNTEXT16 GLOBL_FN(GL_PREFIX(TexSubImage3DEXT)) GL_PREFIX(TexSubImage3DEXT): MOV_L(GLNAME(_glapi_Dispatch), EAX) TEST_L(EAX, EAX) - JZ(GLNAME(_glapi_fallback_TexSubImage3DEXT)) - JMP(GL_OFFSET(_gloffset_TexSubImage3DEXT)) + JZ(GLNAME(_glapi_fallback_TexSubImage3D)) + JMP(GL_OFFSET(_gloffset_TexSubImage3D)) ALIGNTEXT16 GLOBL_FN(GL_PREFIX(CopyTexSubImage3DEXT)) GL_PREFIX(CopyTexSubImage3DEXT): MOV_L(GLNAME(_glapi_Dispatch), EAX) TEST_L(EAX, EAX) - JZ(GLNAME(_glapi_fallback_CopyTexSubImage3DEXT)) - JMP(GL_OFFSET(_gloffset_CopyTexSubImage3DEXT)) + JZ(GLNAME(_glapi_fallback_CopyTexSubImage3D)) + JMP(GL_OFFSET(_gloffset_CopyTexSubImage3D)) ALIGNTEXT16 GLOBL_FN(GL_PREFIX(GetTexFilterFuncSGIS)) @@ -3373,48 +3376,48 @@ GL_PREFIX(CopyTexSubImage1DEXT): MOV_L(GLNAME(_glapi_Dispatch), EAX) TEST_L(EAX, EAX) - JZ(GLNAME(_glapi_fallback_CopyTexSubImage1DEXT)) - JMP(GL_OFFSET(_gloffset_CopyTexSubImage1DEXT)) + JZ(GLNAME(_glapi_fallback_CopyTexSubImage1D)) + JMP(GL_OFFSET(_gloffset_CopyTexSubImage1D)) ALIGNTEXT16 GLOBL_FN(GL_PREFIX(TexSubImage1DEXT)) GL_PREFIX(TexSubImage1DEXT): MOV_L(GLNAME(_glapi_Dispatch), EAX) TEST_L(EAX, EAX) - JZ(GLNAME(_glapi_fallback_TexSubImage1DEXT)) - JMP(GL_OFFSET(_gloffset_TexSubImage1DEXT)) + JZ(GLNAME(_glapi_fallback_TexSubImage1D)) + JMP(GL_OFFSET(_gloffset_TexSubImage1D)) ALIGNTEXT16 GLOBL_FN(GL_PREFIX(TexSubImage2DEXT)) GL_PREFIX(TexSubImage2DEXT): MOV_L(GLNAME(_glapi_Dispatch), EAX) TEST_L(EAX, EAX) - JZ(GLNAME(_glapi_fallback_TexSubImage2DEXT)) - JMP(GL_OFFSET(_gloffset_TexSubImage2DEXT)) + JZ(GLNAME(_glapi_fallback_TexSubImage2D)) + JMP(GL_OFFSET(_gloffset_TexSubImage2D)) ALIGNTEXT16 GLOBL_FN(GL_PREFIX(CopyTexImage1DEXT)) GL_PREFIX(CopyTexImage1DEXT): MOV_L(GLNAME(_glapi_Dispatch), EAX) TEST_L(EAX, EAX) - JZ(GLNAME(_glapi_fallback_CopyTexImage1DEXT)) - JMP(GL_OFFSET(_gloffset_CopyTexImage1DEXT)) + JZ(GLNAME(_glapi_fallback_CopyTexImage1D)) + JMP(GL_OFFSET(_gloffset_CopyTexImage1D)) ALIGNTEXT16 GLOBL_FN(GL_PREFIX(CopyTexImage2DEXT)) GL_PREFIX(CopyTexImage2DEXT): MOV_L(GLNAME(_glapi_Dispatch), EAX) TEST_L(EAX, EAX) - JZ(GLNAME(_glapi_fallback_CopyTexImage2DEXT)) - JMP(GL_OFFSET(_gloffset_CopyTexImage2DEXT)) + JZ(GLNAME(_glapi_fallback_CopyTexImage2D)) + JMP(GL_OFFSET(_gloffset_CopyTexImage2D)) ALIGNTEXT16 GLOBL_FN(GL_PREFIX(CopyTexSubImage2DEXT)) GL_PREFIX(CopyTexSubImage2DEXT): MOV_L(GLNAME(_glapi_Dispatch), EAX) TEST_L(EAX, EAX) - JZ(GLNAME(_glapi_fallback_CopyTexSubImage2DEXT)) - JMP(GL_OFFSET(_gloffset_CopyTexSubImage2DEXT)) + JZ(GLNAME(_glapi_fallback_CopyTexSubImage2D)) + JMP(GL_OFFSET(_gloffset_CopyTexSubImage2D)) ALIGNTEXT16 GLOBL_FN(GL_PREFIX(GetHistogramEXT)) @@ -3469,96 +3472,96 @@ GL_PREFIX(HistogramEXT): MOV_L(GLNAME(_glapi_Dispatch), EAX) TEST_L(EAX, EAX) - JZ(GLNAME(_glapi_fallback_HistogramEXT)) - JMP(GL_OFFSET(_gloffset_HistogramEXT)) + JZ(GLNAME(_glapi_fallback_Histogram)) + JMP(GL_OFFSET(_gloffset_Histogram)) ALIGNTEXT16 GLOBL_FN(GL_PREFIX(MinmaxEXT)) GL_PREFIX(MinmaxEXT): MOV_L(GLNAME(_glapi_Dispatch), EAX) TEST_L(EAX, EAX) - JZ(GLNAME(_glapi_fallback_MinmaxEXT)) - JMP(GL_OFFSET(_gloffset_MinmaxEXT)) + JZ(GLNAME(_glapi_fallback_Minmax)) + JMP(GL_OFFSET(_gloffset_Minmax)) ALIGNTEXT16 GLOBL_FN(GL_PREFIX(ResetHistogramEXT)) GL_PREFIX(ResetHistogramEXT): MOV_L(GLNAME(_glapi_Dispatch), EAX) TEST_L(EAX, EAX) - JZ(GLNAME(_glapi_fallback_ResetHistogramEXT)) - JMP(GL_OFFSET(_gloffset_ResetHistogramEXT)) + JZ(GLNAME(_glapi_fallback_ResetHistogram)) + JMP(GL_OFFSET(_gloffset_ResetHistogram)) ALIGNTEXT16 GLOBL_FN(GL_PREFIX(ResetMinmaxEXT)) GL_PREFIX(ResetMinmaxEXT): MOV_L(GLNAME(_glapi_Dispatch), EAX) TEST_L(EAX, EAX) - JZ(GLNAME(_glapi_fallback_ResetMinmaxEXT)) - JMP(GL_OFFSET(_gloffset_ResetMinmaxEXT)) + JZ(GLNAME(_glapi_fallback_ResetMinmax)) + JMP(GL_OFFSET(_gloffset_ResetMinmax)) ALIGNTEXT16 GLOBL_FN(GL_PREFIX(ConvolutionFilter1DEXT)) GL_PREFIX(ConvolutionFilter1DEXT): MOV_L(GLNAME(_glapi_Dispatch), EAX) TEST_L(EAX, EAX) - JZ(GLNAME(_glapi_fallback_ConvolutionFilter1DEXT)) - JMP(GL_OFFSET(_gloffset_ConvolutionFilter1DEXT)) + JZ(GLNAME(_glapi_fallback_ConvolutionFilter1D)) + JMP(GL_OFFSET(_gloffset_ConvolutionFilter1D)) ALIGNTEXT16 GLOBL_FN(GL_PREFIX(ConvolutionFilter2DEXT)) GL_PREFIX(ConvolutionFilter2DEXT): MOV_L(GLNAME(_glapi_Dispatch), EAX) TEST_L(EAX, EAX) - JZ(GLNAME(_glapi_fallback_ConvolutionFilter2DEXT)) - JMP(GL_OFFSET(_gloffset_ConvolutionFilter2DEXT)) + JZ(GLNAME(_glapi_fallback_ConvolutionFilter2D)) + JMP(GL_OFFSET(_gloffset_ConvolutionFilter2D)) ALIGNTEXT16 GLOBL_FN(GL_PREFIX(ConvolutionParameterfEXT)) GL_PREFIX(ConvolutionParameterfEXT): MOV_L(GLNAME(_glapi_Dispatch), EAX) TEST_L(EAX, EAX) - JZ(GLNAME(_glapi_fallback_ConvolutionParameterfEXT)) - JMP(GL_OFFSET(_gloffset_ConvolutionParameterfEXT)) + JZ(GLNAME(_glapi_fallback_ConvolutionParameterf)) + JMP(GL_OFFSET(_gloffset_ConvolutionParameterf)) ALIGNTEXT16 GLOBL_FN(GL_PREFIX(ConvolutionParameterfvEXT)) GL_PREFIX(ConvolutionParameterfvEXT): MOV_L(GLNAME(_glapi_Dispatch), EAX) TEST_L(EAX, EAX) - JZ(GLNAME(_glapi_fallback_ConvolutionParameterfvEXT)) - JMP(GL_OFFSET(_gloffset_ConvolutionParameterfvEXT)) + JZ(GLNAME(_glapi_fallback_ConvolutionParameterfv)) + JMP(GL_OFFSET(_gloffset_ConvolutionParameterfv)) ALIGNTEXT16 GLOBL_FN(GL_PREFIX(ConvolutionParameteriEXT)) GL_PREFIX(ConvolutionParameteriEXT): MOV_L(GLNAME(_glapi_Dispatch), EAX) TEST_L(EAX, EAX) - JZ(GLNAME(_glapi_fallback_ConvolutionParameteriEXT)) - JMP(GL_OFFSET(_gloffset_ConvolutionParameteriEXT)) + JZ(GLNAME(_glapi_fallback_ConvolutionParameteri)) + JMP(GL_OFFSET(_gloffset_ConvolutionParameteri)) ALIGNTEXT16 GLOBL_FN(GL_PREFIX(ConvolutionParameterivEXT)) GL_PREFIX(ConvolutionParameterivEXT): MOV_L(GLNAME(_glapi_Dispatch), EAX) TEST_L(EAX, EAX) - JZ(GLNAME(_glapi_fallback_ConvolutionParameterivEXT)) - JMP(GL_OFFSET(_gloffset_ConvolutionParameterivEXT)) + JZ(GLNAME(_glapi_fallback_ConvolutionParameteriv)) + JMP(GL_OFFSET(_gloffset_ConvolutionParameteriv)) ALIGNTEXT16 GLOBL_FN(GL_PREFIX(CopyConvolutionFilter1DEXT)) GL_PREFIX(CopyConvolutionFilter1DEXT): MOV_L(GLNAME(_glapi_Dispatch), EAX) TEST_L(EAX, EAX) - JZ(GLNAME(_glapi_fallback_CopyConvolutionFilter1DEXT)) - JMP(GL_OFFSET(_gloffset_CopyConvolutionFilter1DEXT)) + JZ(GLNAME(_glapi_fallback_CopyConvolutionFilter1D)) + JMP(GL_OFFSET(_gloffset_CopyConvolutionFilter1D)) ALIGNTEXT16 GLOBL_FN(GL_PREFIX(CopyConvolutionFilter2DEXT)) GL_PREFIX(CopyConvolutionFilter2DEXT): MOV_L(GLNAME(_glapi_Dispatch), EAX) TEST_L(EAX, EAX) - JZ(GLNAME(_glapi_fallback_CopyConvolutionFilter2DEXT)) - JMP(GL_OFFSET(_gloffset_CopyConvolutionFilter2DEXT)) + JZ(GLNAME(_glapi_fallback_CopyConvolutionFilter2D)) + JMP(GL_OFFSET(_gloffset_CopyConvolutionFilter2D)) ALIGNTEXT16 GLOBL_FN(GL_PREFIX(GetConvolutionFilterEXT)) @@ -3597,40 +3600,40 @@ GL_PREFIX(SeparableFilter2DEXT): MOV_L(GLNAME(_glapi_Dispatch), EAX) TEST_L(EAX, EAX) - JZ(GLNAME(_glapi_fallback_SeparableFilter2DEXT)) - JMP(GL_OFFSET(_gloffset_SeparableFilter2DEXT)) + JZ(GLNAME(_glapi_fallback_SeparableFilter2D)) + JMP(GL_OFFSET(_gloffset_SeparableFilter2D)) ALIGNTEXT16 GLOBL_FN(GL_PREFIX(ColorTableParameterfvSGI)) GL_PREFIX(ColorTableParameterfvSGI): MOV_L(GLNAME(_glapi_Dispatch), EAX) TEST_L(EAX, EAX) - JZ(GLNAME(_glapi_fallback_ColorTableParameterfvSGI)) - JMP(GL_OFFSET(_gloffset_ColorTableParameterfvSGI)) + JZ(GLNAME(_glapi_fallback_ColorTableParameterfv)) + JMP(GL_OFFSET(_gloffset_ColorTableParameterfv)) ALIGNTEXT16 GLOBL_FN(GL_PREFIX(ColorTableParameterivSGI)) GL_PREFIX(ColorTableParameterivSGI): MOV_L(GLNAME(_glapi_Dispatch), EAX) TEST_L(EAX, EAX) - JZ(GLNAME(_glapi_fallback_ColorTableParameterivSGI)) - JMP(GL_OFFSET(_gloffset_ColorTableParameterivSGI)) + JZ(GLNAME(_glapi_fallback_ColorTableParameteriv)) + JMP(GL_OFFSET(_gloffset_ColorTableParameteriv)) ALIGNTEXT16 GLOBL_FN(GL_PREFIX(ColorTableSGI)) GL_PREFIX(ColorTableSGI): MOV_L(GLNAME(_glapi_Dispatch), EAX) TEST_L(EAX, EAX) - JZ(GLNAME(_glapi_fallback_ColorTableSGI)) - JMP(GL_OFFSET(_gloffset_ColorTableSGI)) + JZ(GLNAME(_glapi_fallback_ColorTable)) + JMP(GL_OFFSET(_gloffset_ColorTable)) ALIGNTEXT16 GLOBL_FN(GL_PREFIX(CopyColorTableSGI)) GL_PREFIX(CopyColorTableSGI): MOV_L(GLNAME(_glapi_Dispatch), EAX) TEST_L(EAX, EAX) - JZ(GLNAME(_glapi_fallback_CopyColorTableSGI)) - JMP(GL_OFFSET(_gloffset_CopyColorTableSGI)) + JZ(GLNAME(_glapi_fallback_CopyColorTable)) + JMP(GL_OFFSET(_gloffset_CopyColorTable)) ALIGNTEXT16 GLOBL_FN(GL_PREFIX(GetColorTableSGI)) @@ -3669,24 +3672,24 @@ GL_PREFIX(DeleteTexturesEXT): MOV_L(GLNAME(_glapi_Dispatch), EAX) TEST_L(EAX, EAX) - JZ(GLNAME(_glapi_fallback_DeleteTexturesEXT)) - JMP(GL_OFFSET(_gloffset_DeleteTexturesEXT)) + JZ(GLNAME(_glapi_fallback_DeleteTextures)) + JMP(GL_OFFSET(_gloffset_DeleteTextures)) ALIGNTEXT16 GLOBL_FN(GL_PREFIX(BindTextureEXT)) GL_PREFIX(BindTextureEXT): MOV_L(GLNAME(_glapi_Dispatch), EAX) TEST_L(EAX, EAX) - JZ(GLNAME(_glapi_fallback_BindTextureEXT)) - JMP(GL_OFFSET(_gloffset_BindTextureEXT)) + JZ(GLNAME(_glapi_fallback_BindTexture)) + JMP(GL_OFFSET(_gloffset_BindTexture)) ALIGNTEXT16 GLOBL_FN(GL_PREFIX(PrioritizeTexturesEXT)) GL_PREFIX(PrioritizeTexturesEXT): MOV_L(GLNAME(_glapi_Dispatch), EAX) TEST_L(EAX, EAX) - JZ(GLNAME(_glapi_fallback_PrioritizeTexturesEXT)) - JMP(GL_OFFSET(_gloffset_PrioritizeTexturesEXT)) + JZ(GLNAME(_glapi_fallback_PrioritizeTextures)) + JMP(GL_OFFSET(_gloffset_PrioritizeTextures)) ALIGNTEXT16 GLOBL_FN(GL_PREFIX(AreTexturesResidentEXT)) @@ -3709,8 +3712,8 @@ GL_PREFIX(BlendEquationEXT): MOV_L(GLNAME(_glapi_Dispatch), EAX) TEST_L(EAX, EAX) - JZ(GLNAME(_glapi_fallback_BlendEquationEXT)) - JMP(GL_OFFSET(_gloffset_BlendEquationEXT)) + JZ(GLNAME(_glapi_fallback_BlendEquation)) + JMP(GL_OFFSET(_gloffset_BlendEquation)) ALIGNTEXT16 GLOBL_FN(GL_PREFIX(VertexPointerEXT)) @@ -3747,24 +3750,24 @@ GL_PREFIX(GetPointervEXT): MOV_L(GLNAME(_glapi_Dispatch), EAX) TEST_L(EAX, EAX) - JZ(GLNAME(_glapi_fallback_GetPointervEXT)) - JMP(GL_OFFSET(_gloffset_GetPointervEXT)) + JZ(GLNAME(_glapi_fallback_GetPointerv)) + JMP(GL_OFFSET(_gloffset_GetPointerv)) ALIGNTEXT16 GLOBL_FN(GL_PREFIX(ArrayElementEXT)) GL_PREFIX(ArrayElementEXT): MOV_L(GLNAME(_glapi_Dispatch), EAX) TEST_L(EAX, EAX) - JZ(GLNAME(_glapi_fallback_ArrayElementEXT)) - JMP(GL_OFFSET(_gloffset_ArrayElementEXT)) + JZ(GLNAME(_glapi_fallback_ArrayElement)) + JMP(GL_OFFSET(_gloffset_ArrayElement)) ALIGNTEXT16 GLOBL_FN(GL_PREFIX(DrawArraysEXT)) GL_PREFIX(DrawArraysEXT): MOV_L(GLNAME(_glapi_Dispatch), EAX) TEST_L(EAX, EAX) - JZ(GLNAME(_glapi_fallback_DrawArraysEXT)) - JMP(GL_OFFSET(_gloffset_DrawArraysEXT)) + JZ(GLNAME(_glapi_fallback_DrawArrays)) + JMP(GL_OFFSET(_gloffset_DrawArrays)) ALIGNTEXT16 GLOBL_FN(GL_PREFIX(PointParameterfEXT)) @@ -3795,16 +3798,16 @@ GL_PREFIX(ColorTableEXT): MOV_L(GLNAME(_glapi_Dispatch), EAX) TEST_L(EAX, EAX) - JZ(GLNAME(_glapi_fallback_ColorTableEXT)) - JMP(GL_OFFSET(_gloffset_ColorTableEXT)) + JZ(GLNAME(_glapi_fallback_ColorTable)) + JMP(GL_OFFSET(_gloffset_ColorTable)) ALIGNTEXT16 GLOBL_FN(GL_PREFIX(ColorSubTableEXT)) GL_PREFIX(ColorSubTableEXT): MOV_L(GLNAME(_glapi_Dispatch), EAX) TEST_L(EAX, EAX) - JZ(GLNAME(_glapi_fallback_ColorSubTableEXT)) - JMP(GL_OFFSET(_gloffset_ColorSubTableEXT)) + JZ(GLNAME(_glapi_fallback_ColorSubTable)) + JMP(GL_OFFSET(_gloffset_ColorSubTable)) ALIGNTEXT16 GLOBL_FN(GL_PREFIX(GetColorTableEXT)) @@ -3851,8 +3854,8 @@ GL_PREFIX(BlendFuncSeparateINGR): MOV_L(GLNAME(_glapi_Dispatch), EAX) TEST_L(EAX, EAX) - JZ(GLNAME(_glapi_fallback_BlendFuncSeparateINGR)) - JMP(GL_OFFSET(_gloffset_BlendFuncSeparateINGR)) + JZ(GLNAME(_glapi_fallback_BlendFuncSeparateEXT)) + JMP(GL_OFFSET(_gloffset_BlendFuncSeparateEXT)) ALIGNTEXT16 GLOBL_FN(GL_PREFIX(WindowPos2iMESA)) @@ -4016,5 +4019,653 @@ TEST_L(EAX, EAX) JZ(GLNAME(_glapi_fallback_MultTransposeMatrixfARB)) JMP(GL_OFFSET(_gloffset_MultTransposeMatrixfARB)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(PixelTexGenParameterfSGIS)) +GL_PREFIX(PixelTexGenParameterfSGIS): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_PixelTexGenParameterfSGIS)) + JMP(GL_OFFSET(_gloffset_PixelTexGenParameterfSGIS)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(PixelTexGenParameteriSGIS)) +GL_PREFIX(PixelTexGenParameteriSGIS): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_PixelTexGenParameteriSGIS)) + JMP(GL_OFFSET(_gloffset_PixelTexGenParameteriSGIS)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(GetPixelTexGenParameterfvSGIS)) +GL_PREFIX(GetPixelTexGenParameterfvSGIS): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_GetPixelTexGenParameterfvSGIS)) + JMP(GL_OFFSET(_gloffset_GetPixelTexGenParameterfvSGIS)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(GetPixelTexGenParameterivSGIS)) +GL_PREFIX(GetPixelTexGenParameterivSGIS): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_GetPixelTexGenParameterivSGIS)) + JMP(GL_OFFSET(_gloffset_GetPixelTexGenParameterivSGIS)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(TexImage4DSGIS)) +GL_PREFIX(TexImage4DSGIS): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_TexImage4DSGIS)) + JMP(GL_OFFSET(_gloffset_TexImage4DSGIS)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(TexSubImage4DSGIS)) +GL_PREFIX(TexSubImage4DSGIS): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_TexSubImage4DSGIS)) + JMP(GL_OFFSET(_gloffset_TexSubImage4DSGIS)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(DetailTexFuncSGIS)) +GL_PREFIX(DetailTexFuncSGIS): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_DetailTexFuncSGIS)) + JMP(GL_OFFSET(_gloffset_DetailTexFuncSGIS)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(GetDetailTexFuncSGIS)) +GL_PREFIX(GetDetailTexFuncSGIS): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_GetDetailTexFuncSGIS)) + JMP(GL_OFFSET(_gloffset_GetDetailTexFuncSGIS)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(GetSharpenTexFuncSGIS)) +GL_PREFIX(GetSharpenTexFuncSGIS): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_GetSharpenTexFuncSGIS)) + JMP(GL_OFFSET(_gloffset_GetSharpenTexFuncSGIS)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(SharpenTexFuncSGIS)) +GL_PREFIX(SharpenTexFuncSGIS): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_SharpenTexFuncSGIS)) + JMP(GL_OFFSET(_gloffset_SharpenTexFuncSGIS)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(SampleMaskSGIS)) +GL_PREFIX(SampleMaskSGIS): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_SampleMaskSGIS)) + JMP(GL_OFFSET(_gloffset_SampleMaskSGIS)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(SamplePatternSGIS)) +GL_PREFIX(SamplePatternSGIS): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_SamplePatternSGIS)) + JMP(GL_OFFSET(_gloffset_SamplePatternSGIS)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(SpriteParameterfSGIX)) +GL_PREFIX(SpriteParameterfSGIX): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_SpriteParameterfSGIX)) + JMP(GL_OFFSET(_gloffset_SpriteParameterfSGIX)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(SpriteParameteriSGIX)) +GL_PREFIX(SpriteParameteriSGIX): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_SpriteParameteriSGIX)) + JMP(GL_OFFSET(_gloffset_SpriteParameteriSGIX)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(SpriteParameterfvSGIX)) +GL_PREFIX(SpriteParameterfvSGIX): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_SpriteParameterfvSGIX)) + JMP(GL_OFFSET(_gloffset_SpriteParameterfvSGIX)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(SpriteParameterivSGIX)) +GL_PREFIX(SpriteParameterivSGIX): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_SpriteParameterivSGIX)) + JMP(GL_OFFSET(_gloffset_SpriteParameterivSGIX)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(InstrumentsBufferSGIX)) +GL_PREFIX(InstrumentsBufferSGIX): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_InstrumentsBufferSGIX)) + JMP(GL_OFFSET(_gloffset_InstrumentsBufferSGIX)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(StartInstrumentsSGIX)) +GL_PREFIX(StartInstrumentsSGIX): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_StartInstrumentsSGIX)) + JMP(GL_OFFSET(_gloffset_StartInstrumentsSGIX)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(StopInstrumentsSGIX)) +GL_PREFIX(StopInstrumentsSGIX): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_StopInstrumentsSGIX)) + JMP(GL_OFFSET(_gloffset_StopInstrumentsSGIX)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(ReadInstrumentsSGIX)) +GL_PREFIX(ReadInstrumentsSGIX): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_ReadInstrumentsSGIX)) + JMP(GL_OFFSET(_gloffset_ReadInstrumentsSGIX)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(PollInstrumentsSGIX)) +GL_PREFIX(PollInstrumentsSGIX): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_PollInstrumentsSGIX)) + JMP(GL_OFFSET(_gloffset_PollInstrumentsSGIX)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(GetInstrumentsSGIX)) +GL_PREFIX(GetInstrumentsSGIX): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_GetInstrumentsSGIX)) + JMP(GL_OFFSET(_gloffset_GetInstrumentsSGIX)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(FrameZoomSGIX)) +GL_PREFIX(FrameZoomSGIX): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_FrameZoomSGIX)) + JMP(GL_OFFSET(_gloffset_FrameZoomSGIX)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(ReferencePlaneSGIX)) +GL_PREFIX(ReferencePlaneSGIX): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_ReferencePlaneSGIX)) + JMP(GL_OFFSET(_gloffset_ReferencePlaneSGIX)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(FlushRasterSGIX)) +GL_PREFIX(FlushRasterSGIX): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_FlushRasterSGIX)) + JMP(GL_OFFSET(_gloffset_FlushRasterSGIX)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(CopyColorSubTableEXT)) +GL_PREFIX(CopyColorSubTableEXT): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_CopyColorSubTable)) + JMP(GL_OFFSET(_gloffset_CopyColorSubTable)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(GetListParameterfvSGIX)) +GL_PREFIX(GetListParameterfvSGIX): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_GetListParameterfvSGIX)) + JMP(GL_OFFSET(_gloffset_GetListParameterfvSGIX)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(GetListParameterivSGIX)) +GL_PREFIX(GetListParameterivSGIX): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_GetListParameterivSGIX)) + JMP(GL_OFFSET(_gloffset_GetListParameterivSGIX)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(ListParameterfSGIX)) +GL_PREFIX(ListParameterfSGIX): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_ListParameterfSGIX)) + JMP(GL_OFFSET(_gloffset_ListParameterfSGIX)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(ListParameterfvSGIX)) +GL_PREFIX(ListParameterfvSGIX): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_ListParameterfvSGIX)) + JMP(GL_OFFSET(_gloffset_ListParameterfvSGIX)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(ListParameteriSGIX)) +GL_PREFIX(ListParameteriSGIX): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_ListParameteriSGIX)) + JMP(GL_OFFSET(_gloffset_ListParameteriSGIX)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(ListParameterivSGIX)) +GL_PREFIX(ListParameterivSGIX): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_ListParameterivSGIX)) + JMP(GL_OFFSET(_gloffset_ListParameterivSGIX)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(IndexMaterialEXT)) +GL_PREFIX(IndexMaterialEXT): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_IndexMaterialEXT)) + JMP(GL_OFFSET(_gloffset_IndexMaterialEXT)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(IndexFuncEXT)) +GL_PREFIX(IndexFuncEXT): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_IndexFuncEXT)) + JMP(GL_OFFSET(_gloffset_IndexFuncEXT)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(CullParameterdvEXT)) +GL_PREFIX(CullParameterdvEXT): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_CullParameterdvEXT)) + JMP(GL_OFFSET(_gloffset_CullParameterdvEXT)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(CullParameterfvEXT)) +GL_PREFIX(CullParameterfvEXT): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_CullParameterfvEXT)) + JMP(GL_OFFSET(_gloffset_CullParameterfvEXT)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(SampleCoverageARB)) +GL_PREFIX(SampleCoverageARB): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_SampleCoverageARB)) + JMP(GL_OFFSET(_gloffset_SampleCoverageARB)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(SamplePassARB)) +GL_PREFIX(SamplePassARB): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_SamplePassARB)) + JMP(GL_OFFSET(_gloffset_SamplePassARB)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(TagSampleBufferSGIX)) +GL_PREFIX(TagSampleBufferSGIX): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_TagSampleBufferSGIX)) + JMP(GL_OFFSET(_gloffset_TagSampleBufferSGIX)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(FragmentColorMaterialSGIX)) +GL_PREFIX(FragmentColorMaterialSGIX): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_FragmentColorMaterialSGIX)) + JMP(GL_OFFSET(_gloffset_FragmentColorMaterialSGIX)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(FragmentLightfSGIX)) +GL_PREFIX(FragmentLightfSGIX): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_FragmentLightfSGIX)) + JMP(GL_OFFSET(_gloffset_FragmentLightfSGIX)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(FragmentLightfvSGIX)) +GL_PREFIX(FragmentLightfvSGIX): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_FragmentLightfvSGIX)) + JMP(GL_OFFSET(_gloffset_FragmentLightfvSGIX)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(FragmentLightiSGIX)) +GL_PREFIX(FragmentLightiSGIX): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_FragmentLightiSGIX)) + JMP(GL_OFFSET(_gloffset_FragmentLightiSGIX)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(FragmentLightivSGIX)) +GL_PREFIX(FragmentLightivSGIX): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_FragmentLightivSGIX)) + JMP(GL_OFFSET(_gloffset_FragmentLightivSGIX)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(FragmentLightModelfSGIX)) +GL_PREFIX(FragmentLightModelfSGIX): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_FragmentLightModelfSGIX)) + JMP(GL_OFFSET(_gloffset_FragmentLightModelfSGIX)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(FragmentLightModelfvSGIX)) +GL_PREFIX(FragmentLightModelfvSGIX): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_FragmentLightModelfvSGIX)) + JMP(GL_OFFSET(_gloffset_FragmentLightModelfvSGIX)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(FragmentLightModeliSGIX)) +GL_PREFIX(FragmentLightModeliSGIX): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_FragmentLightModeliSGIX)) + JMP(GL_OFFSET(_gloffset_FragmentLightModeliSGIX)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(FragmentLightModelivSGIX)) +GL_PREFIX(FragmentLightModelivSGIX): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_FragmentLightModelivSGIX)) + JMP(GL_OFFSET(_gloffset_FragmentLightModelivSGIX)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(FragmentMaterialfSGIX)) +GL_PREFIX(FragmentMaterialfSGIX): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_FragmentMaterialfSGIX)) + JMP(GL_OFFSET(_gloffset_FragmentMaterialfSGIX)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(FragmentMaterialfvSGIX)) +GL_PREFIX(FragmentMaterialfvSGIX): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_FragmentMaterialfvSGIX)) + JMP(GL_OFFSET(_gloffset_FragmentMaterialfvSGIX)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(FragmentMaterialiSGIX)) +GL_PREFIX(FragmentMaterialiSGIX): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_FragmentMaterialiSGIX)) + JMP(GL_OFFSET(_gloffset_FragmentMaterialiSGIX)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(FragmentMaterialivSGIX)) +GL_PREFIX(FragmentMaterialivSGIX): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_FragmentMaterialivSGIX)) + JMP(GL_OFFSET(_gloffset_FragmentMaterialivSGIX)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(GetFragmentLightfvSGIX)) +GL_PREFIX(GetFragmentLightfvSGIX): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_GetFragmentLightfvSGIX)) + JMP(GL_OFFSET(_gloffset_GetFragmentLightfvSGIX)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(GetFragmentLightivSGIX)) +GL_PREFIX(GetFragmentLightivSGIX): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_GetFragmentLightivSGIX)) + JMP(GL_OFFSET(_gloffset_GetFragmentLightivSGIX)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(GetFragmentMaterialfvSGIX)) +GL_PREFIX(GetFragmentMaterialfvSGIX): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_GetFragmentMaterialfvSGIX)) + JMP(GL_OFFSET(_gloffset_GetFragmentMaterialfvSGIX)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(GetFragmentMaterialivSGIX)) +GL_PREFIX(GetFragmentMaterialivSGIX): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_GetFragmentMaterialivSGIX)) + JMP(GL_OFFSET(_gloffset_GetFragmentMaterialivSGIX)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(LightEnviSGIX)) +GL_PREFIX(LightEnviSGIX): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_LightEnviSGIX)) + JMP(GL_OFFSET(_gloffset_LightEnviSGIX)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(FogCoordfEXT)) +GL_PREFIX(FogCoordfEXT): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_FogCoordfEXT)) + JMP(GL_OFFSET(_gloffset_FogCoordfEXT)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(FogCoordfvEXT)) +GL_PREFIX(FogCoordfvEXT): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_FogCoordfvEXT)) + JMP(GL_OFFSET(_gloffset_FogCoordfvEXT)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(FogCoorddEXT)) +GL_PREFIX(FogCoorddEXT): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_FogCoorddEXT)) + JMP(GL_OFFSET(_gloffset_FogCoorddEXT)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(FogCoorddvEXT)) +GL_PREFIX(FogCoorddvEXT): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_FogCoorddvEXT)) + JMP(GL_OFFSET(_gloffset_FogCoorddvEXT)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(FogCoordPointerEXT)) +GL_PREFIX(FogCoordPointerEXT): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_FogCoordPointerEXT)) + JMP(GL_OFFSET(_gloffset_FogCoordPointerEXT)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(BlendFuncSeparateEXT)) +GL_PREFIX(BlendFuncSeparateEXT): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_BlendFuncSeparateEXT)) + JMP(GL_OFFSET(_gloffset_BlendFuncSeparateEXT)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(VertexWeightfEXT)) +GL_PREFIX(VertexWeightfEXT): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_VertexWeightfEXT)) + JMP(GL_OFFSET(_gloffset_VertexWeightfEXT)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(VertexWeightfvEXT)) +GL_PREFIX(VertexWeightfvEXT): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_VertexWeightfvEXT)) + JMP(GL_OFFSET(_gloffset_VertexWeightfvEXT)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(VertexWeightPointerEXT)) +GL_PREFIX(VertexWeightPointerEXT): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_VertexWeightPointerEXT)) + JMP(GL_OFFSET(_gloffset_VertexWeightPointerEXT)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(VertexArrayRangeNV)) +GL_PREFIX(VertexArrayRangeNV): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_VertexArrayRangeNV)) + JMP(GL_OFFSET(_gloffset_VertexArrayRangeNV)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(FlushVertexArrayRangeNV)) +GL_PREFIX(FlushVertexArrayRangeNV): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_FlushVertexArrayRangeNV)) + JMP(GL_OFFSET(_gloffset_FlushVertexArrayRangeNV)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(CombinerParameterfvNV)) +GL_PREFIX(CombinerParameterfvNV): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_CombinerParameterfvNV)) + JMP(GL_OFFSET(_gloffset_CombinerParameterfvNV)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(CombinerParameterfNV)) +GL_PREFIX(CombinerParameterfNV): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_CombinerParameterfNV)) + JMP(GL_OFFSET(_gloffset_CombinerParameterfNV)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(CombinerParameterivNV)) +GL_PREFIX(CombinerParameterivNV): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_CombinerParameterivNV)) + JMP(GL_OFFSET(_gloffset_CombinerParameterivNV)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(CombinerParameteriNV)) +GL_PREFIX(CombinerParameteriNV): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_CombinerParameteriNV)) + JMP(GL_OFFSET(_gloffset_CombinerParameteriNV)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(CombinerInputNV)) +GL_PREFIX(CombinerInputNV): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_CombinerInputNV)) + JMP(GL_OFFSET(_gloffset_CombinerInputNV)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(CombinerOutputNV)) +GL_PREFIX(CombinerOutputNV): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_CombinerOutputNV)) + JMP(GL_OFFSET(_gloffset_CombinerOutputNV)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(FinalCombinerInputNV)) +GL_PREFIX(FinalCombinerInputNV): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_FinalCombinerInputNV)) + JMP(GL_OFFSET(_gloffset_FinalCombinerInputNV)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(GetCombinerInputParameterfvNV)) +GL_PREFIX(GetCombinerInputParameterfvNV): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_GetCombinerInputParameterfvNV)) + JMP(GL_OFFSET(_gloffset_GetCombinerInputParameterfvNV)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(GetCombinerInputParameterivNV)) +GL_PREFIX(GetCombinerInputParameterivNV): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_GetCombinerInputParameterivNV)) + JMP(GL_OFFSET(_gloffset_GetCombinerInputParameterivNV)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(GetCombinerOutputParameterfvNV)) +GL_PREFIX(GetCombinerOutputParameterfvNV): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_GetCombinerOutputParameterfvNV)) + JMP(GL_OFFSET(_gloffset_GetCombinerOutputParameterfvNV)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(GetCombinerOutputParameterivNV)) +GL_PREFIX(GetCombinerOutputParameterivNV): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_GetCombinerOutputParameterivNV)) + JMP(GL_OFFSET(_gloffset_GetCombinerOutputParameterivNV)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(GetFinalCombinerInputParameterfvNV)) +GL_PREFIX(GetFinalCombinerInputParameterfvNV): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_GetFinalCombinerInputParameterfvNV)) + JMP(GL_OFFSET(_gloffset_GetFinalCombinerInputParameterfvNV)) + +ALIGNTEXT16 +GLOBL_FN(GL_PREFIX(GetFinalCombinerInputParameterivNV)) +GL_PREFIX(GetFinalCombinerInputParameterivNV): + MOV_L(GLNAME(_glapi_Dispatch), EAX) + TEST_L(EAX, EAX) + JZ(GLNAME(_glapi_fallback_GetFinalCombinerInputParameterivNV)) + JMP(GL_OFFSET(_gloffset_GetFinalCombinerInputParameterivNV)) #endif /* __WIN32__ */ Index: xc/extras/X-TrueType/xttcconv.c diff -u xc/extras/X-TrueType/xttcconv.c:1.6 xc/extras/X-TrueType/xttcconv.c:1.7 --- xc/extras/X-TrueType/xttcconv.c:1.6 Wed Mar 8 16:39:55 2000 +++ xc/extras/X-TrueType/xttcconv.c Wed Mar 8 16:39:55 2000 @@ -30,7 +30,7 @@ Notice=== */ -/* $XFree86: xc/extras/X-TrueType/xttcconv.c,v 1.6 2000/02/18 12:18:48 tsi Exp $ */ +/* $XFree86: xc/extras/X-TrueType/xttcconv.c,v 1.7 2000/02/29 16:07:13 tsi Exp $ */ #include "xttversion.h" @@ -110,11 +110,11 @@ # endif /* CCONV_MODULE_SUBDIR */ # ifndef CCONV_MODULE_EXTENTION -# if !defined(MakeDllModules) +# ifndef DLOPEN_HACK # define CCONV_MODULE_EXTENTION ".a" # else # define CCONV_MODULE_EXTENTION ".so" -# endif /* defined(FONTMODULE) && ! MakeDllModules */ +# endif /* DLOPEN_HACK */ # endif /* CCONV_MODULE_EXTENTION */ # define LEN_CCONV_MODULE_EXTENTION (sizeof(CCONV_MODULE_EXTENTION)-1) # ifndef CCONV_ENTRYPOINT_POSTFIX Index: xc/extras/Xpm/lib/data.c diff -u xc/extras/Xpm/lib/data.c:1.1.1.1 xc/extras/Xpm/lib/data.c:1.2 --- xc/extras/Xpm/lib/data.c:1.1.1.1 Mon Jan 11 08:23:11 1999 +++ xc/extras/Xpm/lib/data.c Wed Mar 8 16:39:58 2000 @@ -37,7 +37,7 @@ static char *RCS_Version = "$XpmVersion: 3.4k $"; /* Internal version number */ -static char *RCS_Id = "$Id: xpm.shar,v 3.71 1998/03/19 19:47:14 lehors Exp $"; +static char *RCS_Id = "Id: xpm.shar,v 3.71 1998/03/19 19:47:14 lehors Exp $"; #include "XpmI.h" #endif