xserver/hw/kdrive/src Makefile.am, 1.9, 1.10 kaa.c, 1.35, 1.36 kaa.h, 1.8, 1.9 kaapict.c, 1.14, 1.15 kasync.c, 1.15, 1.16 kdrive.c, 1.42, 1.43 kdrive.h, 1.59, 1.60 kpict.c, 1.9, NONE kxv.c, 1.10, 1.11 kxv.h, 1.5, 1.6

Eric Anholt <xserver-commit-u7BhqnqprCWvj1b/[email protected]> Thu, 9 Jun 2005 03:44:48 -0700 (PDT)
Newsgroups gmane.comp.freedesktop.xserver.cvs
Message-ID <[email protected]>
Committed by: anholt

Update of /cvs/xserver/xserver/hw/kdrive/src
In directory gabe:/tmp/cvs-serv30863/hw/kdrive/src

Modified Files:
	Makefile.am kaa.c kaa.h kaapict.c kasync.c kdrive.c kdrive.h 
	kxv.c kxv.h 
Removed Files:
	kpict.c 
Log Message:
- Replace the syncAccel hook in the kdrive structure with a pair of
  hooks in the kaa structure: markSync and waitMarker.  The first, if
  set, returns a hardware-dependent marker number which can then be
  waited for with waitMarker.  If markSync is absent (which is the case
  on all drivers currently), waitMarker must wait for idle on any given
  marker number.  The intention is to allow for more parallelism when
  we get downloading from framebuffer, or more fine-grained idling.
- Replace the KdMarkSync/KdCheckSync functions with kaaMarkSync and
  kaaWaitSync.  These will need to be refined when KAA starts being
  smart about using them.  Merge kpict.c into kasync.c since kasyn.c has
  all the rest of these fallback funcs.
- Restructure all drivers to initialize a KaaInfo structure by hand
  rather than statically in dubious order.
- Whack the i810 driver into shape in hopes that it'll work after this
  change (it certainly wouldn't have before this).  Doesn't support my
  i845 though.
- Make a new KXV helper to avoid duplicated code to fill the region
  with the necessary color key.  Use it in i810 and mach64 (tested).


Index: Makefile.am
===================================================================
RCS file: /cvs/xserver/xserver/hw/kdrive/src/Makefile.am,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- Makefile.am	13 May 2004 21:41:47 -0000	1.9
+++ Makefile.am	9 Jun 2005 10:44:45 -0000	1.10
@@ -21,7 +21,6 @@
 	kmode.c		\
 	knoop.c		\
 	koffscreen.c	\
-	kpict.c		\
 	kshadow.c	\
 	ktest.c		\
 	kxv.c		\

Index: kaa.c
===================================================================
RCS file: /cvs/xserver/xserver/hw/kdrive/src/kaa.c,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -d -r1.35 -r1.36
--- kaa.c	8 Feb 2005 22:43:54 -0000	1.35
+++ kaa.c	9 Jun 2005 10:44:45 -0000	1.36
@@ -104,7 +104,7 @@
 	return;
 #endif
 
-    KdCheckSync (pPixmap->drawable.pScreen);
+    kaaWaitSync (pPixmap->drawable.pScreen);
 
     bytes = src_pitch < dst_pitch ? src_pitch : dst_pitch;
 
@@ -142,13 +142,13 @@
 
     if (pKaaScr->info->flags & KAA_OFFSCREEN_ALIGN_POT && w != 1)
 	w = 1 << (kaaLog2(w - 1) + 1);
-    pitch = (w * bpp / 8 + pKaaScr->info->offscreenPitch - 1) &
-            ~(pKaaScr->info->offscreenPitch - 1);
+    pitch = (w * bpp / 8 + pKaaScr->info->pitchAlign - 1) &
+            ~(pKaaScr->info->pitchAlign - 1);
     
     pKaaPixmap->devKind = pPixmap->devKind;
     pKaaPixmap->devPrivate = pPixmap->devPrivate;
     pKaaPixmap->area = KdOffscreenAlloc (pScreen, pitch * h,
-					 pKaaScr->info->offscreenByteAlign,
+					 pKaaScr->info->offsetAlign,
 					 FALSE, 
 					 kaaPixmapSave, (pointer) pPixmap);
     if (!pKaaPixmap->area)
@@ -202,7 +202,7 @@
     
     bytes = src_pitch < dst_pitch ? src_pitch : dst_pitch;
 
-    KdCheckSync (pPixmap->drawable.pScreen);
+    kaaWaitSync (pPixmap->drawable.pScreen);
 
     i = pPixmap->drawable.height;
     while (i--) {
@@ -513,7 +513,7 @@
     }
     (*pKaaScr->info->DoneSolid) ();
     kaaDrawableDirty (pDrawable);
-    KdMarkSync(pDrawable->pScreen);
+    kaaMarkSync (pDrawable->pScreen);
 }
 
 void
@@ -563,11 +563,11 @@
 	    pbox++;
 	}
 	(*pKaaScr->info->DoneCopy) ();
-	KdMarkSync(pDstDrawable->pScreen);
+	kaaMarkSync (pDstDrawable->pScreen);
     }
     else
     {
-	KdCheckSync (pDstDrawable->pScreen);
+	kaaWaitSync (pDstDrawable->pScreen);
 	fbCopyNtoN (pSrcDrawable, pDstDrawable, pGC, 
 		    pbox, nbox, dx, dy, reverse, upsidedown, 
 		    bitplane, closure);
@@ -683,7 +683,7 @@
     }
     (*pKaaScr->info->DoneSolid) ();
     kaaDrawableDirty (pDrawable);
-    KdMarkSync(pDrawable->pScreen);
+    kaaMarkSync (pDrawable->pScreen);
 }
     
 static void
@@ -708,7 +708,7 @@
 	!(pPixmap = kaaGetOffscreenPixmap (pDrawable, &xoff, &yoff)) ||
 	!(*pKaaScr->info->PrepareSolid) (pPixmap, GXcopy, pm, fg))
     {
-	KdCheckSync (pDrawable->pScreen);
+	kaaWaitSync (pDrawable->pScreen);
 	fg = fbReplicatePixel (fg, pDrawable->bitsPerPixel);
 	fbSolidBoxClipped (pDrawable, pClip, x1, y1, x2, y2,
 			   fbAnd (GXcopy, fg, pm),
@@ -747,7 +747,7 @@
     }
     (*pKaaScr->info->DoneSolid) ();
     kaaDrawableDirty (pDrawable);
-    KdMarkSync(pDrawable->pScreen);
+    kaaMarkSync (pDrawable->pScreen);
 }
 
 static void
@@ -833,7 +833,7 @@
 	opaque = FALSE;
     }
 
-    KdCheckSync (pDrawable->pScreen);
+    kaaWaitSync (pDrawable->pScreen);
     kaaDrawableDirty (pDrawable);
     
     ppci = ppciInit;
@@ -992,11 +992,11 @@
 	    pBox++;
 	}
 	(*pKaaScr->info->DoneSolid) ();
-	KdMarkSync(pDrawable->pScreen);
+	kaaMarkSync (pDrawable->pScreen);
     }
     else
     {
-	KdCheckSync (pDrawable->pScreen);
+	kaaWaitSync (pDrawable->pScreen);
 	fbFillRegionSolid (pDrawable, pRegion, 0,
 			   fbReplicatePixel (pixel, pDrawable->bitsPerPixel));
     }
@@ -1011,7 +1011,7 @@
 {
     else
     {
-	KdCheckSync
+	kaaWaitSync
 }
 #endif
 
@@ -1134,3 +1134,28 @@
 
     xfree (pKaaScr);
 }
+
+void
+kaaMarkSync (ScreenPtr pScreen)
+{
+    KdScreenPriv(pScreen);
+    KaaScreenPriv(pScreen);
+
+    pScreenPriv->card->needSync = TRUE;
+    if (pKaaScr->info->markSync != NULL) {
+	pScreenPriv->card->lastMarker = (*pKaaScr->info->markSync) (pScreen);
+    }
+}
+
+void
+kaaWaitSync (ScreenPtr pScreen)
+{
+    KdScreenPriv(pScreen);
+    KaaScreenPriv(pScreen);
+    KdCardInfo *card = pScreenPriv->card;
+
+    if (card->needSync) {
+	(*pKaaScr->info->waitMarker) (pScreen, card->lastMarker);
+	card->needSync = FALSE;
+    }
+}

Index: kaa.h
===================================================================
RCS file: /cvs/xserver/xserver/hw/kdrive/src/kaa.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- kaa.h	8 Feb 2005 22:43:54 -0000	1.8
+++ kaa.h	9 Jun 2005 10:44:45 -0000	1.9
@@ -27,6 +27,8 @@
 #ifndef _KAA_H_
 #define _KAA_H_
 
+#include "picturestr.h"
+
 #define KaaGetScreenPriv(s)	((KaaScreenPrivPtr)(s)->devPrivates[kaaScreenPrivateIndex].ptr)
 #define KaaScreenPriv(s)	KaaScreenPrivPtr    pKaaScr = KaaGetScreenPriv(s)
 
@@ -72,6 +74,12 @@
 kaaMoveInPixmap (PixmapPtr pPixmap);
 
 void
+kaaMarkSync (ScreenPtr pScreen);
+
+void
+kaaWaitSync (ScreenPtr pScreen);
+
+void
 kaaCopyNtoN (DrawablePtr    pSrcDrawable,
 	     DrawablePtr    pDstDrawable,
 	     GCPtr	    pGC,

Index: kaapict.c
===================================================================
RCS file: /cvs/xserver/xserver/hw/kdrive/src/kaapict.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- kaapict.c	25 Jan 2005 01:40:18 -0000	1.14
+++ kaapict.c	9 Jun 2005 10:44:45 -0000	1.15
@@ -279,7 +279,7 @@
      * before accessing it.  We'd prefer for it to be in memory.
      */
     if (kaaPixmapIsOffscreen(pSrcPix)) {
-	KdCheckSync(pDst->pDrawable->pScreen);
+	kaaWaitSync(pDst->pDrawable->pScreen);
     }
 
     pixel = *(CARD32 *)(pSrcPix->devPrivate.ptr);
@@ -310,7 +310,7 @@
     }
 
     (*pKaaScr->info->DoneSolid) ();
-    KdMarkSync(pDst->pDrawable->pScreen);
+    kaaMarkSync (pDst->pDrawable->pScreen);
     kaaDrawableDirty (pDst->pDrawable);
 
     REGION_UNINIT(pDst->pDrawable->pScreen, &region);
@@ -397,7 +397,7 @@
     }
     
     (*pKaaScr->info->DoneBlend) ();
-    KdMarkSync(pDst->pDrawable->pScreen);
+    kaaMarkSync (pDst->pDrawable->pScreen);
     kaaDrawableDirty (pDst->pDrawable);
 
     REGION_UNINIT(pDst->pDrawable->pScreen, &region);
@@ -520,7 +520,7 @@
     }
 
     (*pKaaScr->info->DoneComposite) ();
-    KdMarkSync(pDst->pDrawable->pScreen);
+    kaaMarkSync (pDst->pDrawable->pScreen);
     kaaDrawableDirty (pDst->pDrawable);
 
     REGION_UNINIT(pDst->pDrawable->pScreen, &region);

Index: kasync.c
===================================================================
RCS file: /cvs/xserver/xserver/hw/kdrive/src/kasync.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- kasync.c	8 Jul 2004 08:21:25 -0000	1.15
+++ kasync.c	9 Jun 2005 10:44:45 -0000	1.16
@@ -28,6 +28,9 @@
 #endif
 #include "kdrive.h"
 #include "kaa.h"
+#include "picturestr.h"
+#include "mipict.h"
+#include "fbpict.h"
 
 /*
  * These functions wrap the low-level fb rendering functions and
@@ -39,7 +42,7 @@
 KdCheckFillSpans  (DrawablePtr pDrawable, GCPtr pGC, int nspans,
 		   DDXPointPtr ppt, int *pwidth, int fSorted)
 {
-    KdCheckSync (pDrawable->pScreen);
+    kaaWaitSync (pDrawable->pScreen);
     kaaDrawableDirty (pDrawable);
     fbFillSpans (pDrawable, pGC, nspans, ppt, pwidth, fSorted);
 }
@@ -48,7 +51,7 @@
 KdCheckSetSpans (DrawablePtr pDrawable, GCPtr pGC, char *psrc,
 		 DDXPointPtr ppt, int *pwidth, int nspans, int fSorted)
 {
-    KdCheckSync (pDrawable->pScreen);
+    kaaWaitSync (pDrawable->pScreen);
     kaaDrawableDirty (pDrawable);
     fbSetSpans (pDrawable, pGC, psrc, ppt, pwidth, nspans, fSorted);
 }
@@ -58,7 +61,7 @@
 		 int x, int y, int w, int h, int leftPad, int format,
 		 char *bits)
 {
-    KdCheckSync (pDrawable->pScreen);
+    kaaWaitSync (pDrawable->pScreen);
     kaaDrawableDirty (pDrawable);
     fbPutImage (pDrawable, pGC, depth, x, y, w, h, leftPad, format, bits);
 }
@@ -67,7 +70,7 @@
 KdCheckCopyArea (DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC,
 		 int srcx, int srcy, int w, int h, int dstx, int dsty)
 {
-    KdCheckSync (pSrc->pScreen);
+    kaaWaitSync (pSrc->pScreen);
     kaaDrawableDirty (pDst);
     return fbCopyArea (pSrc, pDst, pGC, srcx, srcy, w, h, dstx, dsty);
 }
@@ -77,7 +80,7 @@
 		  int srcx, int srcy, int w, int h, int dstx, int dsty,
 		  unsigned long bitPlane)
 {
-    KdCheckSync (pSrc->pScreen);
+    kaaWaitSync (pSrc->pScreen);
     kaaDrawableDirty (pDst);
     return fbCopyPlane (pSrc, pDst, pGC, srcx, srcy, w, h, dstx, dsty,
 			bitPlane);
@@ -87,7 +90,7 @@
 KdCheckPolyPoint (DrawablePtr pDrawable, GCPtr pGC, int mode, int npt,
 		  DDXPointPtr pptInit)
 {
-    KdCheckSync (pDrawable->pScreen);
+    kaaWaitSync (pDrawable->pScreen);
     kaaDrawableDirty (pDrawable);
     fbPolyPoint (pDrawable, pGC, mode, npt, pptInit);
 }
@@ -98,7 +101,7 @@
 {
 
     if (pGC->lineWidth == 0) {
-	KdCheckSync(pDrawable->pScreen);
+	kaaWaitSync(pDrawable->pScreen);
 	kaaDrawableDirty (pDrawable);
     }
     kaaDrawableDirty (pDrawable);
@@ -110,7 +113,7 @@
 		    int nsegInit, xSegment *pSegInit)
 {
     if (pGC->lineWidth == 0) {
-	KdCheckSync(pDrawable->pScreen);
+	kaaWaitSync(pDrawable->pScreen);
 	kaaDrawableDirty (pDrawable);
     }
     kaaDrawableDirty (pDrawable);
@@ -122,7 +125,7 @@
 		      int nrects, xRectangle *prect)
 {
     if (pGC->lineWidth == 0) {
-	KdCheckSync(pDrawable->pScreen);
+	kaaWaitSync(pDrawable->pScreen);
 	kaaDrawableDirty (pDrawable);
     }
     fbPolyRectangle (pDrawable, pGC, nrects, prect);
@@ -134,7 +137,7 @@
 {
     if (pGC->lineWidth == 0)
     {
-	KdCheckSync(pDrawable->pScreen);
+	kaaWaitSync(pDrawable->pScreen);
 	kaaDrawableDirty (pDrawable);
 	fbPolyArc (pDrawable, pGC, narcs, pArcs);
     }
@@ -147,7 +150,7 @@
 KdCheckFillPolygon (DrawablePtr pDrawable, GCPtr pGC, 
 		    int shape, int mode, int count, DDXPointPtr pPts)
 {
-    KdCheckSync(pDrawable->pScreen);
+    kaaWaitSync(pDrawable->pScreen);
     kaaDrawableDirty (pDrawable);
     fbFillPolygon (pDrawable, pGC, mode, count, pPts);
 }
@@ -157,7 +160,7 @@
 KdCheckPolyFillRect (DrawablePtr pDrawable, GCPtr pGC,
 		     int nrect, xRectangle *prect)
 {
-    KdCheckSync(pDrawable->pScreen);
+    kaaWaitSync(pDrawable->pScreen);
     kaaDrawableDirty (pDrawable);
     fbPolyFillRect (pDrawable, pGC, nrect, prect);
 }
@@ -166,7 +169,7 @@
 KdCheckPolyFillArc (DrawablePtr pDrawable, GCPtr pGC, 
 		    int narcs, xArc *pArcs)
 {
-    KdCheckSync(pDrawable->pScreen);
+    kaaWaitSync(pDrawable->pScreen);
     kaaDrawableDirty (pDrawable);
     fbPolyFillArc (pDrawable, pGC, narcs, pArcs);
 }
@@ -176,7 +179,7 @@
 		      int x, int y, unsigned int nglyph,
 		      CharInfoPtr *ppci, pointer pglyphBase)
 {
-    KdCheckSync(pDrawable->pScreen);
+    kaaWaitSync(pDrawable->pScreen);
     kaaDrawableDirty (pDrawable);
     fbImageGlyphBlt (pDrawable, pGC, x, y, nglyph, ppci, pglyphBase);
 }
@@ -186,7 +189,7 @@
 		     int x, int y, unsigned int nglyph,
 		     CharInfoPtr *ppci, pointer pglyphBase)
 {
-    KdCheckSync(pDrawable->pScreen);
+    kaaWaitSync(pDrawable->pScreen);
     kaaDrawableDirty (pDrawable);
     fbPolyGlyphBlt (pDrawable, pGC, x, y, nglyph, ppci, pglyphBase);
 }
@@ -196,7 +199,7 @@
 		   DrawablePtr pDrawable,
 		   int w, int h, int x, int y)
 {
-    KdCheckSync(pDrawable->pScreen);
+    kaaWaitSync(pDrawable->pScreen);
     kaaDrawableDirty (pDrawable);
     fbPushPixels (pGC, pBitmap, pDrawable, w, h, x, y);
 }
@@ -207,7 +210,7 @@
 		 unsigned int format, unsigned long planeMask,
 		 char *d)
 {
-    KdCheckSync(pDrawable->pScreen);
+    kaaWaitSync(pDrawable->pScreen);
     fbGetImage (pDrawable, x, y, w, h, format, planeMask, d);
 }
 
@@ -219,7 +222,7 @@
 		 int nspans,
 		 char *pdstStart)
 {
-    KdCheckSync(pDrawable->pScreen);
+    kaaWaitSync(pDrawable->pScreen);
     fbGetSpans (pDrawable, wMax, ppt, pwidth, nspans, pdstStart);
 }
 
@@ -230,7 +233,7 @@
 		  int		yorg,
 		  WindowPtr	pWin)
 {
-    KdCheckSync(pWin->drawable.pScreen);
+    kaaWaitSync(pWin->drawable.pScreen);
     kaaDrawableDirty (&pPixmap->drawable);
     fbSaveAreas (pPixmap, prgnSave, xorg, yorg, pWin);
 }
@@ -242,7 +245,7 @@
 		     int    	yorg,
 		     WindowPtr	pWin)
 {
-    KdCheckSync(pWin->drawable.pScreen);
+    kaaWaitSync(pWin->drawable.pScreen);
     kaaDrawableDirty ((DrawablePtr)pWin);
     fbRestoreAreas (pPixmap, prgnSave, xorg, yorg, pWin);
 }
@@ -250,7 +253,7 @@
 void
 KdCheckPaintWindow (WindowPtr pWin, RegionPtr pRegion, int what)
 {
-    KdCheckSync (pWin->drawable.pScreen);
+    kaaWaitSync (pWin->drawable.pScreen);
     kaaDrawableDirty ((DrawablePtr)pWin);
     fbPaintWindow (pWin, pRegion, what);
 }
@@ -258,7 +261,7 @@
 void
 KdCheckCopyWindow (WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc)
 {
-    KdCheckSync (pWin->drawable.pScreen);
+    kaaWaitSync (pWin->drawable.pScreen);
     kaaDrawableDirty ((DrawablePtr)pWin);
     fbCopyWindow (pWin, ptOldOrg, prgnSrc);
 }
@@ -270,7 +273,7 @@
 		CARD32       pixel,
 		int          layer)
 {
-    KdCheckSync (pDrawable->pScreen);
+    kaaWaitSync (pDrawable->pScreen);
     kaaDrawableDirty (pDrawable);
     fbOverlayPaintKey (pDrawable,  pRegion, pixel, layer);
 }
@@ -278,7 +281,7 @@
 void
 KdCheckOverlayCopyWindow  (WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc)
 {
-    KdCheckSync (pWin->drawable.pScreen);
+    kaaWaitSync (pWin->drawable.pScreen);
     kaaDrawableDirty ((DrawablePtr)pWin);
     fbOverlayCopyWindow (pWin, ptOldOrg, prgnSrc);
 }
@@ -305,6 +308,47 @@
 #endif
 }
 
+void
+KdCheckComposite (CARD8      op,
+		  PicturePtr pSrc,
+		  PicturePtr pMask,
+		  PicturePtr pDst,
+		  INT16      xSrc,
+		  INT16      ySrc,
+		  INT16      xMask,
+		  INT16      yMask,
+		  INT16      xDst,
+		  INT16      yDst,
+		  CARD16     width,
+		  CARD16     height)
+{
+    kaaWaitSync (pDst->pDrawable->pScreen);
+    kaaDrawableDirty (pDst->pDrawable);
+    fbComposite (op,
+		 pSrc,
+		 pMask,
+		 pDst,
+		 xSrc,
+		 ySrc,
+		 xMask,
+		 yMask,
+		 xDst,
+		 yDst,
+		 width,
+		 height);
+}
+
+void
+KdCheckRasterizeTrapezoid(PicturePtr	pMask,
+			  xTrapezoid	*trap,
+			  int		x_off,
+			  int		y_off)
+{
+    kaaWaitSync (pMask->pDrawable->pScreen);
+    kaaDrawableDirty (pMask->pDrawable);
+    fbRasterizeTrapezoid (pMask, trap, x_off, y_off);
+}
+
 /*
  * Only need to stall for copyarea/copyplane
  */
@@ -333,3 +377,13 @@
     ,NULL
 #endif
 };
+
+void
+KdPictureInitAsync (ScreenPtr pScreen)
+{
+    PictureScreenPtr    ps;
+
+    ps = GetPictureScreen(pScreen);
+    ps->Composite = KdCheckComposite;
+    ps->RasterizeTrapezoid = KdCheckRasterizeTrapezoid;
+}

Index: kdrive.c
===================================================================
RCS file: /cvs/xserver/xserver/hw/kdrive/src/kdrive.c,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -d -r1.42 -r1.43
--- kdrive.c	28 Feb 2005 20:45:15 -0000	1.42
+++ kdrive.c	9 Jun 2005 10:44:45 -0000	1.43
@@ -224,7 +224,7 @@
     
     if (!pScreenPriv->enabled)
 	return;
-    KdCheckSync (pScreen);
+    kaaWaitSync (pScreen);
     if (!pScreenPriv->closed)
 	KdSetRootClip (pScreen, FALSE);
     KdDisableColormap (pScreen);

Index: kdrive.h
===================================================================
RCS file: /cvs/xserver/xserver/hw/kdrive/src/kdrive.h,v
retrieving revision 1.59
retrieving revision 1.60
diff -u -d -r1.59 -r1.60
--- kdrive.h	8 Feb 2005 22:43:54 -0000	1.59
+++ kdrive.h	9 Jun 2005 10:44:45 -0000	1.60
@@ -89,7 +89,9 @@
     struct _KdScreenInfo    *screenList;
     int			    selected;
     struct _KdCardInfo	    *next;
+
     Bool		    needSync;
+    int			    lastMarker;
 } KdCardInfo;
 
 extern KdCardInfo	*kdCardInfo;
@@ -180,7 +182,6 @@
 
     Bool        (*initAccel) (ScreenPtr);
     void        (*enableAccel) (ScreenPtr);
-    void	(*syncAccel) (ScreenPtr);
     void        (*disableAccel) (ScreenPtr);
     void        (*finiAccel) (ScreenPtr);
 
@@ -316,6 +317,13 @@
 } KaaTrapezoid;
 
 typedef struct _KaaScreenInfo {
+    int	        offsetAlign;
+    int         pitchAlign;
+    int		flags;
+
+    int		(*markSync) (ScreenPtr pScreen);
+    void	(*waitMarker) (ScreenPtr pScreen, int marker);
+
     Bool	(*PrepareSolid) (PixmapPtr	pPixmap,
 				 int		alu,
 				 Pixel		planemask,
@@ -337,10 +345,6 @@
 			 int	height);
     void	(*DoneCopy) (void);
 
-    int	        offscreenByteAlign;
-    int         offscreenPitch;
-    int		flags;
-
     Bool        (*PrepareBlend) (int		op,
 				 PicturePtr	pSrcPicture,
 				 PicturePtr	pDstPicture,
@@ -421,17 +425,6 @@
 				    (pointer) v)
 #define KdScreenPriv(pScreen) KdPrivScreenPtr pScreenPriv = KdGetScreenPriv(pScreen)
 
-#define KdCheckSync(s)	{ \
-    KdScreenPriv(s); \
-    KdCardInfo	*card = pScreenPriv->card; \
-    if (card->needSync) { \
-	card->needSync = FALSE; \
-	(*card->cfuncs->syncAccel) (s); \
-    } \
-}
-
-#define KdMarkSync(s)	(KdGetScreenPriv(s)->card->needSync = TRUE)
-
 /* kaa.c */
 Bool
 kaaDrawInit (ScreenPtr	        pScreen,

--- kpict.c DELETED ---

Index: kxv.c
===================================================================
RCS file: /cvs/xserver/xserver/hw/kdrive/src/kxv.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- kxv.c	13 May 2004 22:57:15 -0000	1.10
+++ kxv.c	9 Jun 2005 10:44:45 -0000	1.11
@@ -1919,3 +1919,46 @@
 	}
     }
 }
+
+void
+KXVPaintRegion (DrawablePtr pDraw, RegionPtr pRgn, Pixel fg)
+{
+    GCPtr	pGC;
+    CARD32    	val[2];
+    xRectangle	*rects, *r;
+    BoxPtr	pBox = REGION_RECTS (pRgn);
+    int		nBox = REGION_NUM_RECTS (pRgn);
+    
+    rects = ALLOCATE_LOCAL (nBox * sizeof (xRectangle));
+    if (!rects)
+	goto bail0;
+    r = rects;
+    while (nBox--)
+    {
+	r->x = pBox->x1 - pDraw->x;
+	r->y = pBox->y1 - pDraw->y;
+	r->width = pBox->x2 - pBox->x1;
+	r->height = pBox->y2 - pBox->y1;
+	r++;
+	pBox++;
+    }
+    
+    pGC = GetScratchGC (pDraw->depth, pDraw->pScreen);
+    if (!pGC)
+	goto bail1;
+    
+    val[0] = fg;
+    val[1] = IncludeInferiors;
+    ChangeGC (pGC, GCForeground|GCSubwindowMode, val);
+    
+    ValidateGC (pDraw, pGC);
+    
+    (*pGC->ops->PolyFillRect) (pDraw, pGC, 
+			       REGION_NUM_RECTS (pRgn), rects);
+
+    FreeScratchGC (pGC);
+bail1:
+    DEALLOCATE_LOCAL (rects);
+bail0:
+    ;
+}

Index: kxv.h
===================================================================
RCS file: /cvs/xserver/xserver/hw/kdrive/src/kxv.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- kxv.h	13 May 2004 22:57:15 -0000	1.5
+++ kxv.h	9 Jun 2005 10:44:45 -0000	1.6
@@ -256,6 +256,9 @@
    int srcPitch, int srcPitch2, int dstPitch, int srcW, int srcH, int height,
    int top, int left, int h, int w, int id);
 
+void
+KXVPaintRegion (DrawablePtr pDraw, RegionPtr pRgn, Pixel fg);
+
 KdVideoAdaptorPtr KdXVAllocateVideoAdaptorRec(KdScreenInfo * screen);
 
 void KdXVFreeVideoAdaptorRec(KdVideoAdaptorPtr ptr);