]> git.pld-linux.org Git - packages/XFree86.git/commitdiff
voodoo2, voodoo3 i Riva TNT2
authorJan Rękorajski <baggins@pld-linux.org>
Wed, 16 Jun 1999 16:10:44 +0000 (16:10 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    XFree86-voodoo-Rush.patch -> 1.1

XFree86-voodoo-Rush.patch [new file with mode: 0644]

diff --git a/XFree86-voodoo-Rush.patch b/XFree86-voodoo-Rush.patch
new file mode 100644 (file)
index 0000000..860c833
--- /dev/null
@@ -0,0 +1,1547 @@
+diff -c -N -r xc.old/config/cf/X11.tmpl xc/config/cf/X11.tmpl
+*** xc.old/config/cf/X11.tmpl  Mon Mar  2 03:55:22 1998
+--- xc/config/cf/X11.tmpl      Sat Apr 11 13:56:54 1998
+***************
+*** 202,207 ****
+--- 202,213 ----
+  #ifndef BuildXF86DGALibrary
+  #define BuildXF86DGALibrary  BuildXF86DGA
+  #endif
++ #ifndef BuildXF86RushExt
++ #define BuildXF86RushExt     NO
++ #endif
++ #ifndef BuildXF86RushLibrary
++ #define BuildXF86RushLibrary BuildXF86RushExt
++ #endif
+  #ifndef BuildDPMSExt
+  #define BuildDPMSExt         NO
+  #endif
+***************
+*** 992,997 ****
+--- 998,1019 ----
+  #endif
+  #endif
+  
++ #if BuildXF86RushLibrary
++ #ifndef SharedLibXxf86rush
++ #define SharedLibXxf86rush   YES
++ #endif
++ #ifndef NormalLibXxf86rush
++ #define NormalLibXxf86rush   YES
++ #endif
++ #ifndef DebugLibXxf86rush
++ #define DebugLibXxf86rush    NO
++ #endif
++ #ifndef ProfileLibXxf86rush
++ #define ProfileLibXxf86rush  NO
++ #endif
++ #endif
++ 
++ 
+  #if BuildDPMSLibrary
+  #ifndef SharedLibXdpms
+  #define SharedLibXdpms               NO
+***************
+*** 1078,1083 ****
+--- 1100,1117 ----
+  SharedLibReferences(XXF86DGA,Xxf86dga,$(XXF86DGALIBSRC),SOXXF86DGAREV,SharedXxf86dgaRev)
+  #else
+  ProjectUnsharedLibReferences(XXF86DGA,Xxf86dga,$(XXF86DGALIBSRC),XBuildLibDir)
++ #endif
++ #endif
++ 
++ #if BuildXF86RushLibrary
++    XXF86RUSHLIBSRC = $(LIBSRC)/Xxf86rush
++ #if SharedLibXxf86rush
++ #ifndef SharedXxf86RushRev
++ #define SharedXxf86RushRev 1.0
++ #endif
++ SharedLibReferences(XXF86RUSH,Xxf86rush,$(XXF86RUSHLIBSRC),SOXXF86RUSHREV,SharedXxf86RushRev)
++ #else
++ ProjectUnsharedLibReferences(XXF86RUSH,Xxf86rush,$(XXF86RUSHLIBSRC),XBuildLibDir)
+  #endif
+  #endif
+  
+diff -c -N -r xc.old/config/cf/xfree86.cf xc/config/cf/xfree86.cf
+*** xc.old/config/cf/xfree86.cf        Mon Mar  2 03:55:22 1998
+--- xc/config/cf/xfree86.cf    Sat Apr 11 15:34:02 1998
+***************
+*** 619,624 ****
+--- 619,627 ----
+  #ifndef BuildDPMSLibrary
+  #define BuildDPMSLibrary     YES
+  #endif
++ #ifndef BuildXF86RushLibrary
++ #define BuildXF86RushLibrary YES
++ #endif
+  
+  /*
+   * Build the XFree86-VidMode extension
+***************
+*** 673,678 ****
+--- 676,688 ----
+  #define BuildDPMSExt                 YES
+  #endif
+  
++ /*
++  * Build the Rush extension support
++  */
++ #ifndef BuildXF86RushExt
++ #define BuildXF86RushExt             YES
++ #endif
++ 
+  #if Malloc0ReturnsNull
+  #ifndef XtMalloc0ReturnsNullDefines
+  #define XtMalloc0ReturnsNullDefines  Malloc0ReturnsNullDefines -DXTMALLOC_BC
+***************
+*** 764,769 ****
+--- 774,785 ----
+  #define XFree86DGADefines    /**/
+  #endif
+  
++ #if BuildXF86RushExt
++ #define XFree86RushDefines   -DXFreeXRUSH
++ #else
++ #define XFree86RushDefines   /**/
++ #endif
++ 
+  #ifndef MakeHasPosixVariableSubstitutions
+  #if !HasBsdMake
+  #define MakeHasPosixVariableSubstitutions    NO
+***************
+*** 774,780 ****
+  
+  /* Server defines required for all OSs */
+  #ifndef XFree86ServerDefines
+! #define XFree86ServerDefines -DSTATIC_COLOR -DAVOID_GLYPHBLT -DPIXPRIV LinkKitDefines XFree86DGADefines
+  #endif
+  
+  #ifndef XFree86ServerOSDefines
+--- 790,796 ----
+  
+  /* Server defines required for all OSs */
+  #ifndef XFree86ServerDefines
+! #define XFree86ServerDefines -DSTATIC_COLOR -DAVOID_GLYPHBLT -DPIXPRIV LinkKitDefines XFree86DGADefines XFree86RushDefines
+  #endif
+  
+  #ifndef XFree86ServerOSDefines
+*** xc.old/include/extensions/Imakefile        Sun Jan 12 02:39:14 1997
+--- xc/include/extensions/Imakefile    Sun Apr  5 17:34:16 1998
+***************
+*** 14,19 ****
+--- 14,22 ----
+  #if BuildXF86DGALibrary
+  XF86DGAHEADERS = xf86dga.h xf86dgastr.h
+  #endif
++ #if BuildXF86RushLibrary
++ XF86RUSHHEADERS = xf86rush.h xf86rushstr.h
++ #endif
+  #if BuildLBX
+  LBXHEADERS = lbxbuf.h lbxbufstr.h lbxdeltastr.h lbximage.h lbxopts.h lbxstr.h lbxzlib.h
+  #endif
+***************
+*** 21,27 ****
+  DPMSHEADERS = dpms.h dpmsstr.h
+  #endif
+  
+! EXTRAHEADERS = $(SCREENSAVERHEADERS) $(XF86VIDMODEHEADERS) $(XF86DGAHEADERS) $(XF86MISCHEADERS) $(LBXHEADERS) $(DPMSHEADERS)
+  
+  
+  
+--- 24,30 ----
+  DPMSHEADERS = dpms.h dpmsstr.h
+  #endif
+  
+! EXTRAHEADERS = $(SCREENSAVERHEADERS) $(XF86VIDMODEHEADERS) $(XF86DGAHEADERS) $(XF86RUSHHEADERS) $(XF86MISCHEADERS) $(LBXHEADERS) $(DPMSHEADERS)
+  
+  
+  
+diff -c -N -r xc.old/include/extensions/xf86rush.h xc/include/extensions/xf86rush.h
+*** xc.old/include/extensions/xf86rush.h       Wed Dec 31 16:00:00 1969
+--- xc/include/extensions/xf86rush.h   Sun Apr 19 15:56:23 1998
+***************
+*** 0 ****
+--- 1,70 ----
++ /* $$ */
++ /*
++ 
++ Copyright (c) 1998  Daryll Strauss
++ 
++ */
++ 
++ #ifndef _XF86RUSH_H_
++ #define _XF86RUSH_H_
++ 
++ #include <X11/Xfuncproto.h>
++ 
++ #define X_XF86RushQueryVersion               0
++ #define X_XF86RushLockPixmap         1
++ #define X_XF86RushUnlockPixmap               2
++ #define X_XF86RushUnlockAllPixmaps   3
++ 
++ #define XF86RushNumberEvents         0
++ 
++ #define XF86RushClientNotLocal               0
++ #define XF86RushNumberErrors         (XF86RushClientNotLocal + 1)
++ 
++ #ifndef _XF86RUSH_SERVER_
++ 
++ _XFUNCPROTOBEGIN
++ 
++ Bool XF86RushQueryVersion(
++ #if NeedFunctionPrototypes
++     Display*         /* dpy */,
++     int*             /* majorVersion */,
++     int*             /* minorVersion */
++ #endif
++ );
++ 
++ Bool XF86RushQueryExtension(
++ #if NeedFunctionPrototypes
++     Display*         /* dpy */,
++     int*             /* event_base */,
++     int*             /* error_base */
++ #endif
++ );
++ 
++ Bool XF86RushLockPixmap(
++ #if NeedFunctionPrototypes
++     Display *                /* dpy */,
++     int                      /* screen */,
++     Pixmap           /* Pixmap */,
++     void **          /* Return address */
++ #endif
++ );
++ 
++ Bool XF86RushUnlockPixmap(
++ #if NeedFunctionPrototypes
++     Display *                /* dpy */,
++     int                      /* screen */,
++     Pixmap           /* Pixmap */
++ #endif
++ ); 
++ 
++ Bool XF86RushUnlockAllPixmaps(
++ #if NeedFunctionPrototypes
++     Display *                /* dpy */
++ #endif                           
++ );
++ 
++ _XFUNCPROTOEND
++ 
++ #endif /* _XF86RUSH_SERVER_ */
++ 
++ #endif /* _XF86RUSH_H_ */
+diff -c -N -r xc.old/include/extensions/xf86rushstr.h xc/include/extensions/xf86rushstr.h
+*** xc.old/include/extensions/xf86rushstr.h    Wed Dec 31 16:00:00 1969
+--- xc/include/extensions/xf86rushstr.h        Sun Apr  5 21:44:32 1998
+***************
+*** 0 ****
+--- 1,82 ----
++ /* $$ */
++ /*
++ 
++ Copyright (c) 1998  Daryll Strauss
++ 
++ */
++ 
++ #ifndef _XF86RUSHSTR_H_
++ #define _XF86RUSHSTR_H_
++ 
++ #include "xf86rush.h"
++ 
++ #define XF86RUSHNAME "XFree86-Rush"
++ 
++ #define XF86RUSH_MAJOR_VERSION       1       /* current version numbers */
++ #define XF86RUSH_MINOR_VERSION       0
++ 
++ typedef struct _XF86RushQueryVersion {
++     CARD8    reqType;                /* always RushReqCode */
++     CARD8    rushReqType;            /* always X_RushQueryVersion */
++     CARD16   length B16;
++ } xXF86RushQueryVersionReq;
++ #define sz_xXF86RushQueryVersionReq  4
++ 
++ typedef struct {
++     BYTE     type;                   /* X_Reply */
++     BOOL     pad1;
++     CARD16   sequenceNumber B16;
++     CARD32   length B32;
++     CARD16   majorVersion B16;       /* major version of Rush protocol */
++     CARD16   minorVersion B16;       /* minor version of Rush protocol */
++     CARD32   pad2 B32;
++     CARD32   pad3 B32;
++     CARD32   pad4 B32;
++     CARD32   pad5 B32;
++     CARD32   pad6 B32;
++ } xXF86RushQueryVersionReply;
++ #define sz_xXF86RushQueryVersionReply        32
++ 
++ typedef struct _XF86RushLockPixmap {
++     CARD8    reqType;                /* always RushReqCode */
++     CARD8    rushReqType;            /* always X_RushLockPixmap */
++     CARD16   length B16;
++     CARD16   screen B16;
++     CARD16   pad B16;
++     CARD32   pixmap B32;
++ } xXF86RushLockPixmapReq;
++ #define sz_xXF86RushLockPixmapReq    12
++ 
++ typedef struct {
++     BYTE     type;
++     BOOL     pad1;
++     CARD16   sequenceNumber B16;
++     CARD32   length B32;
++     CARD32   addr B32;
++     CARD32   pad2 B32;
++     CARD32   pad3 B32;
++     CARD32   pad4 B32;
++     CARD32   pad5 B32;
++     CARD32   pad6 B32;
++ } xXF86RushLockPixmapReply;
++ #define sz_xXF86RushLockPixmapReply  32
++ 
++ typedef struct _XF86RushUnlockPixmap {
++     CARD8    reqType;                /* always RushReqCode */
++     CARD8    rushReqType;            /* always X_RushUnlockPixmap */
++     CARD16   length B16;
++     CARD16   screen B16;
++     CARD16   pad B16;
++     CARD32   pixmap B32;
++ } xXF86RushUnlockPixmapReq;
++ #define sz_xXF86RushUnlockPixmapReq  12
++ 
++ typedef struct _XF86RushUnlockAllPixmaps {
++     CARD8    reqType;                /* always RushReqCode */
++     CARD8    rushReqType;            /* always X_RushUnlockAllPixmaps */
++     CARD16      length B16;
++ } xXF86RushUnlockAllPixmapsReq;
++ #define sz_xXF86RushUnlockAllPixmapsReq   4
++ 
++ #endif /* _XF86RUSHSTR_H_ */
++ 
+diff -c -N -r xc.old/lib/Imakefile xc/lib/Imakefile
+*** xc.old/lib/Imakefile       Sat Jul  5 08:55:33 1997
+--- xc/lib/Imakefile   Sat Apr 11 13:24:59 1998
+***************
+*** 39,45 ****
+  XF86DGALIB = Xxf86dga
+  #endif
+  
+! XF86EXTLIBS = $(XF86MISCLIB) $(XF86VMLIB) $(XF86DGALIB)
+  
+  #if BuildDPMSLibrary
+  XDPMSLIBDIR = Xdpms
+--- 39,49 ----
+  XF86DGALIB = Xxf86dga
+  #endif
+  
+! #if BuildXF86RushLibrary
+! XF86RUSHLIB = Xxf86rush
+! #endif
+! 
+! XF86EXTLIBS = $(XF86MISCLIB) $(XF86VMLIB) $(XF86DGALIB) $(XF86RUSHLIB)
+  
+  #if BuildDPMSLibrary
+  XDPMSLIBDIR = Xdpms
+***************
+*** 61,67 ****
+  
+  #if !BuildServersOnly
+  LINTSUBDIRS = Xau Xdmcp $(THRSTUBLIB) X11 oldX ICE SM Xext Xt \
+!           $(SSLIB) $(XF86MISCLIB) $(XF86VMLIB) $(XF86DGALIB) \
+            Xmu Xaw XIE Xi Xtst FS \
+            PEX5 $(XKBLIBDIR) $(XKBUILIBDIR) $(LBXUTILDIR) $(XALIBDIR) \
+            $(XDPMSLIBDIR) \
+--- 65,71 ----
+  
+  #if !BuildServersOnly
+  LINTSUBDIRS = Xau Xdmcp $(THRSTUBLIB) X11 oldX ICE SM Xext Xt \
+!           $(SSLIB) $(XF86MISCLIB) $(XF86VMLIB) $(XF86DGALIB) $(XF86RUSHLIB) \
+            Xmu Xaw XIE Xi Xtst FS \
+            PEX5 $(XKBLIBDIR) $(XKBUILIBDIR) $(LBXUTILDIR) $(XALIBDIR) \
+            $(XDPMSLIBDIR) \
+diff -c -N -r xc.old/lib/Xext/XF86Rush.c xc/lib/Xext/XF86Rush.c
+*** xc.old/lib/Xext/XF86Rush.c Wed Dec 31 16:00:00 1969
+--- xc/lib/Xext/XF86Rush.c     Sun Apr  5 18:01:55 1998
+***************
+*** 0 ****
+--- 1,163 ----
++ /* $$ */
++ /*
++ 
++ Copyright (c) 1998 Daryll Strauss
++ 
++ */
++ 
++ /* THIS IS NOT AN X CONSORTIUM STANDARD */
++ 
++ #define NEED_EVENTS
++ #define NEED_REPLIES
++ #include "Xlibint.h"
++ #include "xf86rushstr.h"
++ #include "Xext.h"
++ #include "extutil.h"
++ 
++ static XExtensionInfo _xf86rush_info_data;
++ static XExtensionInfo *xf86rush_info = &_xf86rush_info_data;
++ static char *xf86rush_extension_name = XF86RUSHNAME;
++ 
++ #define XF86RushCheckExtension(dpy,i,val) \
++   XextCheckExtension (dpy, i, xf86rush_extension_name, val)
++ 
++ /*****************************************************************************
++  *                                                                           *
++  *                      private utility routines                          *
++  *                                                                           *
++  *****************************************************************************/
++ 
++ static int close_display();
++ static /* const */ XExtensionHooks xf86rush_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, xf86rush_info, 
++                                 xf86rush_extension_name, 
++                                 &xf86rush_extension_hooks, 
++                                 0, NULL)
++ 
++ static XEXT_GENERATE_CLOSE_DISPLAY (close_display, xf86rush_info)
++ 
++ 
++ /*****************************************************************************
++  *                                                                           *
++  *               public XFree86-DGA Extension routines                *
++  *                                                                           *
++  *****************************************************************************/
++ 
++ Bool XF86RushQueryExtension (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;
++     }
++ }
++ 
++ Bool XF86RushQueryVersion(dpy, majorVersion, minorVersion)
++     Display* dpy;
++     int* majorVersion; 
++     int* minorVersion;
++ {
++     XExtDisplayInfo *info = find_display (dpy);
++     xXF86RushQueryVersionReply rep;
++     xXF86RushQueryVersionReq *req;
++ 
++     XF86RushCheckExtension (dpy, info, False);
++ 
++     LockDisplay(dpy);
++     GetReq(XF86RushQueryVersion, req);
++     req->reqType = info->codes->major_opcode;
++     req->dgaReqType = X_XF86RushQueryVersion;
++     if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
++      UnlockDisplay(dpy);
++      SyncHandle();
++      return False;
++     }
++     *majorVersion = rep.majorVersion;
++     *minorVersion = rep.minorVersion;
++     UnlockDisplay(dpy);
++     SyncHandle();
++     return True;
++ }
++ 
++ Bool XF86RushLockPixmap(dpy, screen, pixmap, addr)
++      Display *dpy;
++      int screen;
++      Pixmap pixmap;
++      void **addr;
++ {
++   XExtDisplayInfo *info = find_display (dpy);
++   xXF86RushLockPixmapReply rep;
++   xXF86RushLockPixmapReq *req;
++ 
++   XF86RushCheckExtension (dpy, info, False);
++   LockDisplay(dpy);
++   GetReq(XF86RushLockPixmap, req);
++   req->reqType = info->codes->major_opcode;
++   req->dgaReqType = X_XF86RushLockPixmap;
++   req->screen=screen;
++   req->pixmap=pixmap;
++   if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
++     UnlockDisplay(dpy);
++     SyncHandle();
++     return False;
++   }
++   *addr=(void*)rep.addr;
++   UnlockDisplay(dpy);
++   SyncHandle();
++   return True;
++ }
++ 
++ Bool XF86RushUnlockPixmap(dpy, screen, pixmap)
++      Display *dpy;
++      int screen;
++      Pixmap pixmap;
++ {
++   XExtDisplayInfo *info = find_display(dpy);
++   xXF86RushUnlockPixmapReq *req;
++ 
++   XF86RushCheckExtension (dpy, info, False);
++   LockDisplay(dpy);
++   GetReq(XF86RushUnlockPixmap, req);
++   req->reqType = info->codes->major_opcode;
++   req->dgaReqType = X_XF86RushUnlockPixmap;
++   req->screen=screen;
++   req->pixmap=pixmap;
++   UnlockDisplay(dpy);
++   SyncHandle();
++   return True;
++ }
++ 
++ Bool XF86RushUnlockAllPixmaps(dpy)
++      Display *dpy;
++ {
++   XExtDisplayInfo *info = find_display(dpy);
++   xXF86RushUnlockAllPixmapsReq *req;
++ 
++   XF86RushCheckExtension (dpy, info, False);
++   LockDisplay(dpy);
++   GetReq(XF86RushUnlockAllPixmaps, req);
++   req->reqType = info->codes->major_opcode;
++   req->dgaReqType = X_XF86RushUnlockAllPixmaps;
++   UnlockDisplay(dpy);
++   SyncHandle();
++   return True;
++ }
+diff -c -N -r xc.old/lib/Xxf86rush/Imakefile xc/lib/Xxf86rush/Imakefile
+*** xc.old/lib/Xxf86rush/Imakefile     Wed Dec 31 16:00:00 1969
+--- xc/lib/Xxf86rush/Imakefile Sat Apr 11 13:29:38 1998
+***************
+*** 0 ****
+--- 1,33 ----
++ XCOMM $$
++ #define DoNormalLib NormalLibXxf86rush
++ #define DoSharedLib SharedLibXxf86rush
++ #define DoDebugLib DebugLibXxf86rush
++ #define DoProfileLib ProfileLibXxf86rush
++ #define LibName Xxf86rush
++ #define SoRev SOXXF86RUSHREV
++ #define LibHeaders NO
++ 
++ #include <Threads.tmpl>
++ 
++ #ifdef SharedXxf86rushReqs
++ REQUIREDLIBS = SharedXxf86rushReqs
++ #endif
++ 
++ XF86RUSHSRCS = XF86Rush.c
++ XF86RUSHOBJS = XF86Rush.o
++ 
++ #if Malloc0ReturnsNull
++ ALLOC_DEFINES = -DMALLOC_0_RETURNS_NULL
++ #endif
++ 
++       DEFINES = $(ALLOC_DEFINES)
++      INCLUDES = -I$(XLIBSRC) -I$(EXTINCSRC)
++          SRCS = $(XF86RUSHSRCS)
++          OBJS = $(XF86RUSHOBJS)
++      LINTLIBS = $(LINTXLIB)
++ 
++ #include <Library.tmpl>
++ 
++ DependTarget()
++ 
++ 
+diff -c -N -r xc.old/lib/Xxf86rush/XF86Rush.c xc/lib/Xxf86rush/XF86Rush.c
+*** xc.old/lib/Xxf86rush/XF86Rush.c    Wed Dec 31 16:00:00 1969
+--- xc/lib/Xxf86rush/XF86Rush.c        Sat Apr 11 13:55:40 1998
+***************
+*** 0 ****
+--- 1,163 ----
++ /* $$ */
++ /*
++ 
++ Copyright (c) 1998 Daryll Strauss
++ 
++ */
++ 
++ /* THIS IS NOT AN X CONSORTIUM STANDARD */
++ 
++ #define NEED_EVENTS
++ #define NEED_REPLIES
++ #include "Xlibint.h"
++ #include "xf86rushstr.h"
++ #include "Xext.h"
++ #include "extutil.h"
++ 
++ static XExtensionInfo _xf86rush_info_data;
++ static XExtensionInfo *xf86rush_info = &_xf86rush_info_data;
++ static char *xf86rush_extension_name = XF86RUSHNAME;
++ 
++ #define XF86RushCheckExtension(dpy,i,val) \
++   XextCheckExtension (dpy, i, xf86rush_extension_name, val)
++ 
++ /*****************************************************************************
++  *                                                                           *
++  *                      private utility routines                          *
++  *                                                                           *
++  *****************************************************************************/
++ 
++ static int close_display();
++ static /* const */ XExtensionHooks xf86rush_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, xf86rush_info, 
++                                 xf86rush_extension_name, 
++                                 &xf86rush_extension_hooks, 
++                                 0, NULL)
++ 
++ static XEXT_GENERATE_CLOSE_DISPLAY (close_display, xf86rush_info)
++ 
++ 
++ /*****************************************************************************
++  *                                                                           *
++  *               public XFree86-DGA Extension routines                *
++  *                                                                           *
++  *****************************************************************************/
++ 
++ Bool XF86RushQueryExtension (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;
++     }
++ }
++ 
++ Bool XF86RushQueryVersion(dpy, majorVersion, minorVersion)
++     Display* dpy;
++     int* majorVersion; 
++     int* minorVersion;
++ {
++     XExtDisplayInfo *info = find_display (dpy);
++     xXF86RushQueryVersionReply rep;
++     xXF86RushQueryVersionReq *req;
++ 
++     XF86RushCheckExtension (dpy, info, False);
++ 
++     LockDisplay(dpy);
++     GetReq(XF86RushQueryVersion, req);
++     req->reqType = info->codes->major_opcode;
++     req->rushReqType = X_XF86RushQueryVersion;
++     if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
++      UnlockDisplay(dpy);
++      SyncHandle();
++      return False;
++     }
++     *majorVersion = rep.majorVersion;
++     *minorVersion = rep.minorVersion;
++     UnlockDisplay(dpy);
++     SyncHandle();
++     return True;
++ }
++ 
++ Bool XF86RushLockPixmap(dpy, screen, pixmap, addr)
++      Display *dpy;
++      int screen;
++      Pixmap pixmap;
++      void **addr;
++ {
++   XExtDisplayInfo *info = find_display (dpy);
++   xXF86RushLockPixmapReply rep;
++   xXF86RushLockPixmapReq *req;
++ 
++   XF86RushCheckExtension (dpy, info, False);
++   LockDisplay(dpy);
++   GetReq(XF86RushLockPixmap, req);
++   req->reqType = info->codes->major_opcode;
++   req->rushReqType = X_XF86RushLockPixmap;
++   req->screen=screen;
++   req->pixmap=pixmap;
++   if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
++     UnlockDisplay(dpy);
++     SyncHandle();
++     return False;
++   }
++   *addr=(void*)rep.addr;
++   UnlockDisplay(dpy);
++   SyncHandle();
++   return True;
++ }
++ 
++ Bool XF86RushUnlockPixmap(dpy, screen, pixmap)
++      Display *dpy;
++      int screen;
++      Pixmap pixmap;
++ {
++   XExtDisplayInfo *info = find_display(dpy);
++   xXF86RushUnlockPixmapReq *req;
++ 
++   XF86RushCheckExtension (dpy, info, False);
++   LockDisplay(dpy);
++   GetReq(XF86RushUnlockPixmap, req);
++   req->reqType = info->codes->major_opcode;
++   req->rushReqType = X_XF86RushUnlockPixmap;
++   req->screen=screen;
++   req->pixmap=pixmap;
++   UnlockDisplay(dpy);
++   SyncHandle();
++   return True;
++ }
++ 
++ Bool XF86RushUnlockAllPixmaps(dpy)
++      Display *dpy;
++ {
++   XExtDisplayInfo *info = find_display(dpy);
++   xXF86RushUnlockAllPixmapsReq *req;
++ 
++   XF86RushCheckExtension (dpy, info, False);
++   LockDisplay(dpy);
++   GetReq(XF86RushUnlockAllPixmaps, req);
++   req->reqType = info->codes->major_opcode;
++   req->rushReqType = X_XF86RushUnlockAllPixmaps;
++   UnlockDisplay(dpy);
++   SyncHandle();
++   return True;
++ }
+diff -c -N -r xc.old/programs/Xserver/Xext/Imakefile ./Xext/Imakefile
+*** xc.old/programs/Xserver/Xext/Imakefile     Fri Jan 23 04:35:11 1998
+--- xc/programs/Xserver/Xext/Imakefile Sun Apr  4 18:13:41 1999
+***************
+*** 32,37 ****
+--- 32,42 ----
+   DPMSOBJS = dpms.o
+  #endif
+  
++ #if BuildXF86RushExt
++  XF86RRUSHSRCS = xf86Rush.c
++  XF86RUSHOBJS = xf86Rush.o
++ #endif
++ 
+  #if BuildAppgroup
+    APPGROUPSRCS = appgroup.c
+    APPGROUPOBJS = appgroup.o
+***************
+*** 47,59 ****
+                mitmisc.c xtest.c xtest1di.c xtest1dd.c sleepuntil.c \
+             bigreq.c sync.c $(SCRNSAVSRC) xcmisc.c $(VIDMODESRCS) \
+             $(XF86MISCSRCS) $(XF86DGASRCS) $(SECURITYSRCS) \
+!            $(DPMSSRCS) \
+             $(APPGROUPSRCS) xprint.c
+         OBJS = shape.o $(SHMOBJS) mbuf.o \
+                mitmisc.o xtest.o xtest1di.o xtest1dd.o sleepuntil.o \
+                bigreq.o sync.o $(SCRNSAVOBJ) xcmisc.o $(VIDMODEOBJS) \
+             $(XF86MISCOBJS) $(XF86DGAOBJS) $(SECURITYOBJS) \
+!            $(DPMSOBJS) \
+             $(APPGROUPOBJS) xprint.o
+  
+  XF86INCLUDES = -I../hw/xfree86/common -I../hw/xfree86/os-support
+--- 52,64 ----
+                mitmisc.c xtest.c xtest1di.c xtest1dd.c sleepuntil.c \
+             bigreq.c sync.c $(SCRNSAVSRC) xcmisc.c $(VIDMODESRCS) \
+             $(XF86MISCSRCS) $(XF86DGASRCS) $(SECURITYSRCS) \
+!            $(DPMSSRCS) $(XF86RUSHSRCS) \
+             $(APPGROUPSRCS) xprint.c
+         OBJS = shape.o $(SHMOBJS) mbuf.o \
+                mitmisc.o xtest.o xtest1di.o xtest1dd.o sleepuntil.o \
+                bigreq.o sync.o $(SCRNSAVOBJ) xcmisc.o $(VIDMODEOBJS) \
+             $(XF86MISCOBJS) $(XF86DGAOBJS) $(SECURITYOBJS) \
+!            $(DPMSOBJS) $(XF86RUSHOBJS) \
+             $(APPGROUPOBJS) xprint.o
+  
+  XF86INCLUDES = -I../hw/xfree86/common -I../hw/xfree86/os-support
+diff -c -N -r xc.old/programs/Xserver/Xext/xf86Rush.c ./Xext/xf86Rush.c
+*** xc.old/programs/Xserver/Xext/xf86Rush.c    Wed Dec 31 16:00:00 1969
+--- xc/programs/Xserver/Xext/xf86Rush.c        Sun Apr  4 18:13:41 1999
+***************
+*** 0 ****
+--- 1,213 ----
++ /* $XFree86: $ */
++ 
++ /*
++ 
++ Copyright (c) 1998 Daryll Strauss
++ 
++ */
++ 
++ #define NEED_REPLIES
++ #define NEED_EVENTS
++ #include "X.h"
++ #include "Xproto.h"
++ #include "misc.h"
++ #include "dixstruct.h"
++ #include "extnsionst.h"
++ #include "colormapst.h"
++ #include "cursorstr.h"
++ #include "scrnintstr.h"
++ #include "servermd.h"
++ #define _XF86RUSH_SERVER_
++ #include "xf86rushstr.h"
++ #include "swaprep.h"
++ #include "../hw/xfree86/common/xf86.h"
++ #include <dlfcn.h>
++ 
++ #include <X11/Xtrans.h>
++ #include "../os/osdep.h"
++ #include <X11/Xauth.h>
++ #ifndef ESIX
++ #ifndef Lynx
++ #include <sys/socket.h>
++ #else
++ #include <socket.h>
++ #endif
++ #else
++ #include <lan/socket.h>
++ #endif
++ 
++ extern int xf86ScreenIndex;
++ static unsigned char RushReqCode = 0;
++ static int RushErrorBase;
++ 
++ static DISPATCH_PROC(ProcXF86RushDispatch);
++ static DISPATCH_PROC(ProcRushQueryVersion);
++ static DISPATCH_PROC(ProcRushLockPixmap);
++ static DISPATCH_PROC(ProcRushUnlockPixmap);
++ static DISPATCH_PROC(ProcRushUnlockAllPixmaps);
++ 
++ static DISPATCH_PROC(SProcXF86RushDispatch);
++ 
++ static void XF86RushResetProc(
++ #if NeedFunctionPrototypes
++     ExtensionEntry* /* extEntry */
++ #endif
++ );
++ 
++ void
++ XFree86RushExtensionInit()
++ {
++     ExtensionEntry* extEntry;
++ 
++     if (
++      (extEntry = AddExtension(XF86RUSHNAME,
++                              XF86RushNumberEvents,
++                              XF86RushNumberErrors,
++                              ProcXF86RushDispatch,
++                              SProcXF86RushDispatch,
++                              XF86RushResetProc,
++                              StandardMinorOpcode))) {
++      RushReqCode = (unsigned char)extEntry->base;
++      RushErrorBase = extEntry->errorBase;
++     }
++ }
++ 
++ /*ARGSUSED*/
++ static void
++ XF86RushResetProc (extEntry)
++     ExtensionEntry* extEntry;
++ {
++ }
++ 
++ static int
++ ProcRushQueryVersion(client)
++     register ClientPtr client;
++ {
++     xXF86RushQueryVersionReply rep;
++     register int n;
++ 
++     REQUEST_SIZE_MATCH(xXF86RushQueryVersionReq);
++     rep.type = X_Reply;
++     rep.length = 0;
++     rep.sequenceNumber = client->sequence;
++     rep.majorVersion = XF86RUSH_MAJOR_VERSION;
++     rep.minorVersion = XF86RUSH_MINOR_VERSION;
++     if (client->swapped) {
++      swaps(&rep.sequenceNumber, n);
++      swapl(&rep.length, n);
++     }
++     WriteToClient(client, sizeof(xXF86RushQueryVersionReply), (char *)&rep);
++     return (client->noClientException);
++ }
++ 
++ static int
++ ProcXF86RushLockPixmap(client)
++      register ClientPtr client;
++ {
++   REQUEST(xXF86RushLockPixmapReq);
++   xXF86RushLockPixmapReply rep;
++   ScrnInfoPtr vptr;
++   PixmapPtr pix;
++   void *handle;
++   void *(*func)();
++ 
++   if (stuff->screen > screenInfo.numScreens)
++     return BadValue;
++ 
++   vptr = (ScrnInfoPtr) screenInfo.screens[stuff->screen]->devPrivates[xf86ScreenIndex].ptr;
++ 
++   REQUEST_SIZE_MATCH(xXF86RushLockPixmapReq);
++   rep.type = X_Reply;
++   rep.length = 0;
++   rep.sequenceNumber = client->sequence;
++   pix = (PixmapPtr)SecurityLookupIDByType(client,
++                                        stuff->pixmap, RT_PIXMAP, 
++                                        SecurityReadAccess);
++   handle=dlopen(0, 0);
++   if (handle) {
++     func=(void*(*)())dlsym(handle, "xf86LockPixmap");
++     dlclose(handle);
++   }
++   if (handle && func) rep.addr=(int)func(pix);
++   else rep.addr = 0;
++ 
++   WriteToClient(client, SIZEOF(xXF86RushLockPixmapReply), (char*)&rep);
++   return client->noClientException;
++ }
++ 
++ static int
++ ProcXF86RushUnlockPixmap(client)
++      register ClientPtr client;
++ {
++   REQUEST(xXF86RushUnlockPixmapReq);
++   ScrnInfoPtr vptr;
++   PixmapPtr pix;
++   void *handle;
++   void (*func)();
++ 
++   if (stuff->screen > screenInfo.numScreens)
++     return BadValue;
++ 
++   vptr = (ScrnInfoPtr) screenInfo.screens[stuff->screen]->devPrivates[xf86ScreenIndex].ptr;
++   REQUEST_SIZE_MATCH(xXF86RushUnlockPixmapReq);
++   pix = (PixmapPtr)SecurityLookupIDByType(client,
++                                        stuff->pixmap, RT_PIXMAP, 
++                                        SecurityReadAccess);
++   handle=dlopen(0, 0);
++   if (handle) {
++     func=(void(*)())dlsym(handle, "xf86UnlockPixmap");
++     dlclose(handle);
++   }
++   if (handle && func) func(pix);
++   return client->noClientException;
++ }
++ 
++ static int
++ ProcXF86RushUnlockAllPixmaps(client)
++      register ClientPtr client;
++ {
++   void *handle;
++   void (*func)();
++ 
++   REQUEST(xXF86RushUnlockAllPixmapsReq);
++   REQUEST_SIZE_MATCH(xXF86RushUnlockAllPixmapsReq);
++   handle=dlopen(0, 0);
++   if (handle) {
++     func=(void(*)())dlsym(handle, "xf86UnlockAllPixmaps");
++     dlclose(handle);
++   }
++   if (handle && func) func();
++   return client->noClientException;
++ }
++ 
++ ProcXF86RushDispatch (client)
++     register ClientPtr       client;
++ {
++     REQUEST(xReq);
++ 
++     if (!LocalClient(client))
++      return RushErrorBase + XF86RushClientNotLocal;
++ 
++     switch (stuff->data)
++     {
++     case X_XF86RushQueryVersion:
++      return ProcRushQueryVersion(client);
++     case X_XF86RushLockPixmap:
++         return ProcXF86RushLockPixmap(client);
++     case X_XF86RushUnlockPixmap:
++         return ProcXF86RushUnlockPixmap(client);
++     case X_XF86RushUnlockAllPixmaps:
++         return ProcXF86RushUnlockAllPixmaps(client);
++     default:
++      return BadRequest;
++     }
++ }
++ 
++ SProcXF86RushDispatch (client)
++     register ClientPtr       client;
++ {
++     REQUEST(xReq);
++ 
++     return RushErrorBase + XF86RushClientNotLocal;
++ }
++ 
+diff -c -N -r xc.old/programs/Xserver/hw/xfree86/LinkKit/Imakefile ./hw/xfree86/LinkKit/Imakefile
+*** xc.old/programs/Xserver/hw/xfree86/LinkKit/Imakefile       Sun Jan 12 02:41:28 1997
+--- xc/programs/Xserver/hw/xfree86/LinkKit/Imakefile   Sun Apr  4 18:13:41 1999
+***************
+*** 73,78 ****
+--- 73,79 ----
+       LimitBoolean("BuildXF86VidModeExt", NO, BuildXF86VidModeExt) >> $@
+       LimitBoolean("BuildXF86MiscExt", NO, BuildXF86MiscExt) >> $@
+       LimitBoolean("BuildXF86DGA", NO, BuildXF86DGA) >> $@
++      LimitBoolean("BuildXF86RushExt", NO, BuildXF86RushExt) >> $@
+       LimitBoolean("BuildDPMSExt", BuildDPMSExt, BuildDPMSExt) >> $@
+  
+  clean::
+diff -c -N -r xc.old/programs/Xserver/hw/xfree86/common/xf86Cursor.c ./hw/xfree86/common/xf86Cursor.c
+*** xc.old/programs/Xserver/hw/xfree86/common/xf86Cursor.c     Sat Oct 31 12:13:18 1998
+--- xc/programs/Xserver/hw/xfree86/common/xf86Cursor.c Sun Apr  4 18:13:41 1999
+***************
+*** 138,143 ****
+--- 138,150 ----
+    Bool          frameChanged = FALSE;
+    ScrnInfoPtr   pScr = XF86SCRNINFO(pScreen);
+  
++ #ifdef XFreeXDGA
++   /*
++    * Since we're in DGA mode we need to trash this scroll request
++    */
++    if (pScr->directMode&XF86DGADirectGraphics)
++    return;
++ #endif
+    /*
+     * check wether (x,y) belongs to the visual part of the screen
+     * if not, change the base of the displayed frame accoring
+diff -c -N -r xc.old/programs/Xserver/hw/xfree86/vga256/drivers/apm/apm_cursor.c ./hw/xfree86/vga256/drivers/apm/apm_cursor.c
+*** xc.old/programs/Xserver/hw/xfree86/vga256/drivers/apm/apm_cursor.c Sun Jan 18 02:35:30 1998
+--- xc/programs/Xserver/hw/xfree86/vga256/drivers/apm/apm_cursor.c     Sun Apr  4 18:13:42 1999
+***************
+*** 23,29 ****
+  #include "apm.h"
+  
+  static void  ApmShowCursor(void);
+! static void  ApmHideCursor(void);
+  static Bool  ApmRealizeCursor(ScreenPtr pScr, CursorPtr pCurs);
+  static Bool  ApmUnrealizeCursor(ScreenPtr pScr, CursorPtr pCurs);
+  static void  ApmLoadCursorToCard(ScreenPtr pScr, CursorPtr pCurs, int x, int y);
+--- 23,29 ----
+  #include "apm.h"
+  
+  static void  ApmShowCursor(void);
+! void  ApmHideCursor(void);
+  static Bool  ApmRealizeCursor(ScreenPtr pScr, CursorPtr pCurs);
+  static Bool  ApmUnrealizeCursor(ScreenPtr pScr, CursorPtr pCurs);
+  static void  ApmLoadCursorToCard(ScreenPtr pScr, CursorPtr pCurs, int x, int y);
+***************
+*** 108,114 ****
+   * This is also a local function, it's not called from outside.
+   */
+  
+! static void 
+  ApmHideCursor(void) 
+  {
+    ApmCheckMMIO_Init();
+--- 108,114 ----
+   * This is also a local function, it's not called from outside.
+   */
+  
+! void 
+  ApmHideCursor(void) 
+  {
+    ApmCheckMMIO_Init();
+diff -c -N -r xc.old/programs/Xserver/hw/xfree86/vga256/drivers/apm/apm_driver.c ./hw/xfree86/vga256/drivers/apm/apm_driver.c
+*** xc.old/programs/Xserver/hw/xfree86/vga256/drivers/apm/apm_driver.c Sun Feb 15 16:42:15 1998
+--- xc/programs/Xserver/hw/xfree86/vga256/drivers/apm/apm_driver.c     Sun Apr  4 18:13:42 1999
+***************
+*** 610,616 ****
+--- 610,624 ----
+  
+  #ifdef XFreeXDGA
+    if (vga256InfoRec.directMode&XF86DGADirectGraphics && !enter)
++   {
++     if (vgaHWCursor.Initialized == TRUE)
++     {
++       extern void ApmHideCursor(void);
++       ApmHideCursor();
++     }
+      return;
++   }
++ 
+  #endif
+  
+    if (enter)
+***************
+*** 965,970 ****
+--- 973,985 ----
+     */
+    modinx(vgaIOBase + 4, 0x1c, 0x0f, (Base & 0x0f0000) >> 16);
+  
++ #ifdef XFreeXDGA
++         if (vga256InfoRec.directMode & XF86DGADirectGraphics) {
++                 /* Wait until vertical retrace is in progress. */
++                 while (inb(vgaIOBase + 0xA) & 0x08);             
++                 while (!(inb(vgaIOBase + 0xA) & 0x08));             
++         }
++ #endif   
+  }
+  
+  /*
+diff -c -N -r xc.old/programs/Xserver/hw/xfree86/xaa/xf86cparea.c ./hw/xfree86/xaa/xf86cparea.c
+*** xc.old/programs/Xserver/hw/xfree86/xaa/xf86cparea.c        Mon Nov 18 05:22:11 1996
+--- xc/programs/Xserver/hw/xfree86/xaa/xf86cparea.c    Tue Apr  6 23:51:36 1999
+***************
+*** 85,90 ****
+--- 85,92 ----
+  #include     "xf86xaa.h"
+  #include     "xf86local.h"
+  
++ #include     "xf86Priv.h"
++ #include     "xf86pcache.h"
+  
+  RegionPtr
+  xf86CopyArea(pSrcDrawable, pDstDrawable,
+***************
+*** 96,105 ****
+      int width, height;
+      int dstx, dsty;
+  {
+!     if (pSrcDrawable->type == DRAWABLE_WINDOW
+!     && pDstDrawable->type == DRAWABLE_WINDOW) {
+          return (*xf86GCInfoRec.cfbBitBltDispatch)(
+!             pSrcDrawable, pDstDrawable,
+              pGC, srcx, srcy, width, height, dstx, dsty,
+              xf86DoBitBlt, 0L);
+      }
+--- 98,110 ----
+      int width, height;
+      int dstx, dsty;
+  {
+!     if ((pDstDrawable->type == DRAWABLE_WINDOW) &&
+!      ((pSrcDrawable->type == DRAWABLE_WINDOW) ||
+!      ((xf86AccelInfoRec.Flags & PIXMAP_CACHE) &&
+!       (pSrcDrawable->type == DRAWABLE_PIXMAP) &&
+!       xf86CacheIsLocked((PixmapPtr)pSrcDrawable)))) {
+          return (*xf86GCInfoRec.cfbBitBltDispatch)(
+!          pSrcDrawable, pDstDrawable,
+              pGC, srcx, srcy, width, height, dstx, dsty,
+              xf86DoBitBlt, 0L);
+      }
+***************
+*** 132,137 ****
+--- 137,154 ----
+      int xdir;                        /* 1 = left right, -1 = right left/ */
+      int ydir;                        /* 1 = top down, -1 = bottom up */
+      int careful;
++     extern CacheInfoPtr xf86CacheInfo;
++     int i, slot;
++ 
++     /* Handle locked pixmaps just like screen to screen blits */
++     if (pSrc->type==DRAWABLE_PIXMAP) {
++       slot=((xf86PixPrivPtr)((PixmapPtr)pSrc)->devPrivates[xf86PixmapIndex].ptr)->slot;
++       pptTmp=pptSrc;
++       for (i=0; i<REGION_NUM_RECTS(prgnDst); i++, pptTmp++) {
++      pptTmp->x+=xf86CacheInfo[slot].x;
++      pptTmp->y+=xf86CacheInfo[slot].y;
++       }
++     }
+  
+      /* XXX we have to err on the side of safety when both are windows,
+       * because we don't know if IncludeInferiors is being used.
+diff -c -N -r xc.old/programs/Xserver/hw/xfree86/xaa/xf86pcache.c ./hw/xfree86/xaa/xf86pcache.c
+*** xc.old/programs/Xserver/hw/xfree86/xaa/xf86pcache.c        Sun Feb  8 07:36:25 1998
+--- xc/programs/Xserver/hw/xfree86/xaa/xf86pcache.c    Tue Apr 13 12:21:33 1999
+***************
+*** 127,144 ****
+  
+  CacheInfoPtr xf86CacheInfo = NULL;
+  static int MaxSlot;
+  static int MaxWidth;
+  static int MaxHeight;
+  static unsigned int pixmap_cache_clock = 1;
+  static int FirstWideSlot;
+  static int MaxWideSlotHeight;
+  
+  void xf86InitPixmapCacheSlots()
+  {
+      ScrnInfoPtr infoRec;
+      int memoryStart, memoryEnd;
+!     int width_in_bytes, cache_start_y, i;
+!     int height_left, standard_slots, wide_slots, wide_slot_width;
+  
+      infoRec = xf86AccelInfoRec.ServerInfoRec;
+      memoryStart = xf86AccelInfoRec.PixmapCacheMemoryStart;
+--- 127,147 ----
+  
+  CacheInfoPtr xf86CacheInfo = NULL;
+  static int MaxSlot;
++ static int MaxBigSlot;
+  static int MaxWidth;
+  static int MaxHeight;
+  static unsigned int pixmap_cache_clock = 1;
+  static int FirstWideSlot;
++ static int FirstBigSlot;
+  static int MaxWideSlotHeight;
++ static int cache_start_y;
+  
+  void xf86InitPixmapCacheSlots()
+  {
+      ScrnInfoPtr infoRec;
+      int memoryStart, memoryEnd;
+!     int width_in_bytes, i;
+!     int height_left, standard_slots, wide_slots, wide_slot_width, big_slots;
+  
+      infoRec = xf86AccelInfoRec.ServerInfoRec;
+      memoryStart = xf86AccelInfoRec.PixmapCacheMemoryStart;
+***************
+*** 228,236 ****
+          }
+      }
+  
+      MaxSlot = standard_slots + wide_slots - 1;
+!     xf86CacheInfo = (CacheInfoPtr)xcalloc(MaxSlot + 1, sizeof(CacheInfo));
+      FirstWideSlot = standard_slots;
+  
+      ErrorF("%s %s: XAA: Using %d %dx%d ",
+          XCONFIG_PROBED, infoRec->name, standard_slots, MaxWidth, MaxHeight);
+--- 231,243 ----
+          }
+      }
+  
++     /* Arbitrarily say you can have 10 big slots */
++     big_slots = 10;
+      MaxSlot = standard_slots + wide_slots - 1;
+!     MaxBigSlot = MaxSlot + big_slots;
+!     xf86CacheInfo = (CacheInfoPtr)xcalloc(MaxBigSlot + 1, sizeof(CacheInfo));
+      FirstWideSlot = standard_slots;
++     FirstBigSlot = standard_slots + wide_slots;
+  
+      ErrorF("%s %s: XAA: Using %d %dx%d ",
+          XCONFIG_PROBED, infoRec->name, standard_slots, MaxWidth, MaxHeight);
+***************
+*** 255,261 ****
+          xf86CacheInfo[i + standard_slots].cache_height = min(32, height_left);
+      }
+  
+!     for (i = 0; i <= MaxSlot; i++) {
+          xf86CacheInfo[i].id = -1;
+          xf86CacheInfo[i].lru = pixmap_cache_clock;
+          xf86CacheInfo[i].fg_color = 0;
+--- 262,268 ----
+          xf86CacheInfo[i + standard_slots].cache_height = min(32, height_left);
+      }
+  
+!     for (i = 0; i <= MaxBigSlot; i++) {
+          xf86CacheInfo[i].id = -1;
+          xf86CacheInfo[i].lru = pixmap_cache_clock;
+          xf86CacheInfo[i].fg_color = 0;
+***************
+*** 315,321 ****
+  #ifdef PIXPRIV
+      devPriv = (xf86PixPrivPtr)(pix->devPrivates[xf86PixmapIndex].ptr);
+  
+!     if (devPriv->slot == MaxSlot + 1)
+          /*
+           * Special value indicates that this pattern was found to be
+           * non-cachable.
+--- 322,328 ----
+  #ifdef PIXPRIV
+      devPriv = (xf86PixPrivPtr)(pix->devPrivates[xf86PixmapIndex].ptr);
+  
+!     if (devPriv->slot == MaxBigSlot + 1)
+          /*
+           * Special value indicates that this pattern was found to be
+           * non-cachable.
+***************
+*** 344,350 ****
+               * pattern, but can't, and ScreenToScreencopy doesn't have
+               * the required support for transparency.
+               */
+!             devPriv->slot = MaxSlot + 1;
+              return 0;
+          }
+          devPriv->slot = slot;
+--- 351,357 ----
+               * pattern, but can't, and ScreenToScreencopy doesn't have
+               * the required support for transparency.
+               */
+!             devPriv->slot = MaxBigSlot + 1;
+              return 0;
+          }
+          devPriv->slot = slot;
+***************
+*** 893,898 ****
+--- 900,906 ----
+      pci->flags = 0;
+      pci->lru = pixmap_cache_clock;
+      pci->id = pix->drawable.serialNumber;
++     pci->locked = FALSE;
+  
+      reducible_status = TILE_UNKNOWN;
+  
+***************
+*** 1303,1305 ****
+--- 1311,1483 ----
+     return (pix->drawable.width <= MaxWidth &&
+         pix->drawable.height <= MaxHeight);
+  }
++ 
++ /* Rush extension support */
++ 
++ int testOverlap(pcipix)
++      CacheInfoPtr pcipix;
++ {
++   int slot;
++   CacheInfoPtr pcitest;
++ 
++   for (slot=FirstBigSlot; slot<=MaxBigSlot; slot++) {
++     if (xf86CacheInfo[slot].id>0) {
++       pcitest=&xf86CacheInfo[slot];
++       if (!((pcipix->x+pcipix->w<pcitest->x || 
++         pcipix->x>pcitest->x+pcitest->w) &&
++        (pcipix->y+pcipix->h<pcitest->y || 
++         pcipix->y>pcitest->y+pcitest->w)))
++      return 1;
++     }
++   }
++   return 0;
++ }
++      
++ 
++ /*
++   Dividing up the extra memory among X and Glide is difficult.
++   We'll take what we're given and then try to stick up to big_slots
++   pixmaps within it. big_slots should be small to keep this efficient.
++   To fit the pixmap we'll try to put it next to and below each
++   existing pixmap. Then we'll check if it overlaps anything.
++ */
++ static int
++ findPosition(pci, pix)
++      CacheInfoPtr pci;
++      PixmapPtr pix;
++ {
++   int slot, bestx, besty;
++ 
++   bestx=-2;
++   for (slot=FirstBigSlot; slot<=MaxBigSlot; slot++) {
++     if (xf86CacheInfo[slot].id>0) {
++       if (bestx==-2) bestx==-1;
++       /* Check for fit to right */
++       pci->x=xf86CacheInfo[slot].x+xf86CacheInfo[slot].w;
++       pci->y=xf86CacheInfo[slot].y;
++       if (bestx<0 || (bestx+besty>pci->x+pci->y)) {
++      if (!testOverlap(pci, &xf86CacheInfo[slot])) {
++        bestx=pci->x;
++        besty=pci->y;
++      }
++       }
++       /* Check for fit below */
++       pci->x=xf86CacheInfo[slot].x;
++       pci->y=xf86CacheInfo[slot].y+xf86CacheInfo[slot].h;
++       if (bestx<0 || (bestx+besty>pci->x+pci->y)) {
++      if (!testOverlap(pci, &xf86CacheInfo[slot])) {
++        bestx=pci->x;
++        besty=pci->y;
++      }
++       }
++     }
++   }
++   if (bestx==-2) { /* Nothing in the list yet */
++     bestx=0;
++     besty=cache_start_y+MaxHeight;
++   }
++   if (bestx==-1) { /* Doesn't fit */
++     return 0;
++   }
++   pci->x=bestx;
++   pci->y=besty;
++ }
++ 
++ void *
++ xf86LockPixmap(pix)
++      PixmapPtr pix;
++ {
++   xf86PixPrivPtr devPriv =
++     (xf86PixPrivPtr)(pix->devPrivates[xf86PixmapIndex].ptr);
++   int slot, size;
++   ScrnInfoPtr infoRec;
++   CacheInfoPtr pci;
++ 
++   switch (xf86AccelInfoRec.BitsPerPixel) {
++   case 8:
++     size=1;
++     break;
++   case 16:
++     size=2;
++     break;
++   case 24:
++     size=3;
++     break;
++   case 32:
++     size=4;
++     break;
++   case 1:
++   case 4:
++   default:
++     return 0;
++   }
++   for (slot=FirstBigSlot; slot<MaxBigSlot ; slot++) {
++     if (slot==-1) break;
++   }
++   if (slot==MaxBigSlot) return 0;
++   /* Assign the slot */
++   IncrementCacheLRU(slot);
++   devPriv->slot = slot;
++   /* Fill in the cache entry */
++   pci = &xf86CacheInfo[devPriv->slot];
++   pci->pix_w = pix->drawable.width;
++   pci->pix_h = pix->drawable.height;
++   pci->nx = 1;
++   pci->ny = 1;
++   pci->w = pci->pix_w;
++   pci->h = pci->pix_h;
++   pci->fg_color = 0;
++   pci->bg_color = 0;
++   pci->flags = 0;
++   pci->lru = pixmap_cache_clock;
++   pci->locked = TRUE;
++   /* Assign X & Y position */
++   if (!findPosition(pci, pix)) return 0;
++   pci->id = pix->drawable.serialNumber;
++   xf86AccelInfoRec.ImageWrite(pci->x, pci->y, pci->pix_w, pci->pix_h,
++                            pix->devPrivate.ptr, pix->devKind, GXcopy, 
++                            0xFFFFFFFF);
++   infoRec=xf86AccelInfoRec.ServerInfoRec;
++   return (void*)(infoRec->physBase +
++               (xf86CacheInfo[slot].x +
++                xf86CacheInfo[slot].y*infoRec->displayWidth) * size);
++ }
++ 
++ void
++ xf86UnlockPixmap(pix)
++      PixmapPtr pix;
++ {
++   xf86PixPrivPtr devPriv =
++     (xf86PixPrivPtr)(pix->devPrivates[xf86PixmapIndex].ptr);
++   if (devPriv->slot<0) return;
++   xf86CacheInfo[devPriv->slot].locked = FALSE;
++   xf86CacheInfo[devPriv->slot].id = -1;
++   devPriv->slot = 0;
++ }
++ 
++ void
++ xf86UnlockAllPixmaps()
++ {
++   int i;
++ 
++   for (i=FirstBigSlot; i<=MaxBigSlot; i++) {
++     if (xf86CacheInfo[i].id>0 && xf86CacheInfo[i].locked) {
++       xf86CacheInfo[i].locked = FALSE;
++       xf86CacheInfo[i].id = -1;
++     }
++   }
++ }
++ 
++ int
++ xf86CacheIsLocked(pix)
++      PixmapPtr pix;
++ {
++   xf86PixPrivPtr devPriv = 
++     (xf86PixPrivPtr)(pix->devPrivates[xf86PixmapIndex].ptr);
++   int slot;
++ 
++   slot=devPriv->slot;
++   if (slot<FirstBigSlot || slot>MaxBigSlot) return 0;
++   return xf86CacheInfo[slot].locked;
++ }
++ 
+diff -c -N -r xc.old/programs/Xserver/hw/xfree86/xaa/xf86pcache.h ./hw/xfree86/xaa/xf86pcache.h
+*** xc.old/programs/Xserver/hw/xfree86/xaa/xf86pcache.h        Fri Jan 17 22:57:28 1997
+--- xc/programs/Xserver/hw/xfree86/xaa/xf86pcache.h    Sun Apr  4 18:13:42 1999
+***************
+*** 19,24 ****
+--- 19,25 ----
+      int pattern0;       /* if fixed pattern, pattern 0 register contents */
+      int pattern1;       /* if fixed pattern, pattern 1 register contents */
+      unsigned int lru;   /* lru counter */
++     Bool locked;
+  } CacheInfo, *CacheInfoPtr;
+  
+  #ifdef PIXPRIV
+***************
+*** 43,45 ****
+--- 44,47 ----
+  void xf86InitPixmapCacheSlots();
+  
+  void xf86InvalidatePixmapCache();
++ 
+diff -c -N -r xc.old/programs/Xserver/mi/Imakefile ./mi/Imakefile
+*** xc.old/programs/Xserver/mi/Imakefile       Sat May  3 02:50:45 1997
+--- xc/programs/Xserver/mi/Imakefile   Sun Apr  4 18:13:42 1999
+***************
+*** 32,38 ****
+   * Make sure XINPUT, XF86VidTune, etc aren't defined for the miinitext.o 
+   * used by Xnest, Xvfb 
+   */
+! EXT_DEFINES = ExtensionDefines -UXINPUT -UXF86VIDMODE -UXFreeXDGA -UXF86MISC
+  #else
+  EXT_DEFINES = ExtensionDefines
+  #endif
+--- 32,39 ----
+   * Make sure XINPUT, XF86VidTune, etc aren't defined for the miinitext.o 
+   * used by Xnest, Xvfb 
+   */
+! EXT_DEFINES = ExtensionDefines -UXINPUT -UXF86VIDMODE -UXFreeXDGA -UXF86MISC \
+!      -UXFreeXRUSH
+  #else
+  EXT_DEFINES = ExtensionDefines
+  #endif
+diff -c -N -r xc.old/programs/Xserver/mi/miinitext.c ./mi/miinitext.c
+*** xc.old/programs/Xserver/mi/miinitext.c     Thu May 22 07:00:46 1997
+--- xc/programs/Xserver/mi/miinitext.c Sun Apr  4 18:13:42 1999
+***************
+*** 155,160 ****
+--- 155,163 ----
+  #ifdef XFreeXDGA
+  extern void XFree86DGAExtensionInit(INITARGS);
+  #endif
++ #ifdef XFreeXRUSH
++ extern void XFree86RushExtensionInit(INITARGS);
++ #endif
+  #ifdef DPMSExtension
+  extern void DPMSExtensionInit(INITARGS);
+  #endif
+***************
+*** 264,269 ****
+--- 267,275 ----
+  #endif
+  #if defined(XFreeXDGA) && !defined(PRINT_ONLY_SERVER)
+      XFree86DGAExtensionInit();
++ #endif
++ #if defined(XFreeXRUSH) && !defined(PRINT_ONLY_SERVER)
++     XFree86RushExtensionInit();
+  #endif
+  #if defined(DPMSExtension) && !defined(PRINT_ONLY_SERVER)
+      DPMSExtensionInit();
This page took 0.101534 seconds and 4 git commands to generate.