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, ®ion);
@@ -397,7 +397,7 @@
}
(*pKaaScr->info->DoneBlend) ();
- KdMarkSync(pDst->pDrawable->pScreen);
+ kaaMarkSync (pDst->pDrawable->pScreen);
kaaDrawableDirty (pDst->pDrawable);
REGION_UNINIT(pDst->pDrawable->pScreen, ®ion);
@@ -520,7 +520,7 @@
}
(*pKaaScr->info->DoneComposite) ();
- KdMarkSync(pDst->pDrawable->pScreen);
+ kaaMarkSync (pDst->pDrawable->pScreen);
kaaDrawableDirty (pDst->pDrawable);
REGION_UNINIT(pDst->pDrawable->pScreen, ®ion);
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);