Commit the rest of the dirty optimization from 20040703 and add a missing

header include. I don't know how this happened, but I'm going to blame
    a "few" fscks having happened between testing the code and committing
    (due to other driver changes that made me not blame dirty for the
    failures I saw) for disappearance of kasync.c changes. Fixes a lot of
    corruption.
This commit is contained in:
Eric Anholt 2004-07-08 08:21:25 +00:00
parent b467673528
commit aeb78eaa98
2 changed files with 33 additions and 4 deletions

View File

@ -27,6 +27,7 @@
#include <config.h> #include <config.h>
#endif #endif
#include "kdrive.h" #include "kdrive.h"
#include "kaa.h"
/* /*
* These functions wrap the low-level fb rendering functions and * These functions wrap the low-level fb rendering functions and
@ -39,6 +40,7 @@ KdCheckFillSpans (DrawablePtr pDrawable, GCPtr pGC, int nspans,
DDXPointPtr ppt, int *pwidth, int fSorted) DDXPointPtr ppt, int *pwidth, int fSorted)
{ {
KdCheckSync (pDrawable->pScreen); KdCheckSync (pDrawable->pScreen);
kaaDrawableDirty (pDrawable);
fbFillSpans (pDrawable, pGC, nspans, ppt, pwidth, fSorted); fbFillSpans (pDrawable, pGC, nspans, ppt, pwidth, fSorted);
} }
@ -47,6 +49,7 @@ KdCheckSetSpans (DrawablePtr pDrawable, GCPtr pGC, char *psrc,
DDXPointPtr ppt, int *pwidth, int nspans, int fSorted) DDXPointPtr ppt, int *pwidth, int nspans, int fSorted)
{ {
KdCheckSync (pDrawable->pScreen); KdCheckSync (pDrawable->pScreen);
kaaDrawableDirty (pDrawable);
fbSetSpans (pDrawable, pGC, psrc, ppt, pwidth, nspans, fSorted); fbSetSpans (pDrawable, pGC, psrc, ppt, pwidth, nspans, fSorted);
} }
@ -56,6 +59,7 @@ KdCheckPutImage (DrawablePtr pDrawable, GCPtr pGC, int depth,
char *bits) char *bits)
{ {
KdCheckSync (pDrawable->pScreen); KdCheckSync (pDrawable->pScreen);
kaaDrawableDirty (pDrawable);
fbPutImage (pDrawable, pGC, depth, x, y, w, h, leftPad, format, bits); fbPutImage (pDrawable, pGC, depth, x, y, w, h, leftPad, format, bits);
} }
@ -64,6 +68,7 @@ KdCheckCopyArea (DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC,
int srcx, int srcy, int w, int h, int dstx, int dsty) int srcx, int srcy, int w, int h, int dstx, int dsty)
{ {
KdCheckSync (pSrc->pScreen); KdCheckSync (pSrc->pScreen);
kaaDrawableDirty (pDst);
return fbCopyArea (pSrc, pDst, pGC, srcx, srcy, w, h, dstx, dsty); return fbCopyArea (pSrc, pDst, pGC, srcx, srcy, w, h, dstx, dsty);
} }
@ -73,6 +78,7 @@ KdCheckCopyPlane (DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC,
unsigned long bitPlane) unsigned long bitPlane)
{ {
KdCheckSync (pSrc->pScreen); KdCheckSync (pSrc->pScreen);
kaaDrawableDirty (pDst);
return fbCopyPlane (pSrc, pDst, pGC, srcx, srcy, w, h, dstx, dsty, return fbCopyPlane (pSrc, pDst, pGC, srcx, srcy, w, h, dstx, dsty,
bitPlane); bitPlane);
} }
@ -82,6 +88,7 @@ KdCheckPolyPoint (DrawablePtr pDrawable, GCPtr pGC, int mode, int npt,
DDXPointPtr pptInit) DDXPointPtr pptInit)
{ {
KdCheckSync (pDrawable->pScreen); KdCheckSync (pDrawable->pScreen);
kaaDrawableDirty (pDrawable);
fbPolyPoint (pDrawable, pGC, mode, npt, pptInit); fbPolyPoint (pDrawable, pGC, mode, npt, pptInit);
} }
@ -90,8 +97,11 @@ KdCheckPolylines (DrawablePtr pDrawable, GCPtr pGC,
int mode, int npt, DDXPointPtr ppt) int mode, int npt, DDXPointPtr ppt)
{ {
if (pGC->lineWidth == 0) if (pGC->lineWidth == 0) {
KdCheckSync (pDrawable->pScreen); KdCheckSync(pDrawable->pScreen);
kaaDrawableDirty (pDrawable);
}
kaaDrawableDirty (pDrawable);
fbPolyLine (pDrawable, pGC, mode, npt, ppt); fbPolyLine (pDrawable, pGC, mode, npt, ppt);
} }
@ -99,8 +109,11 @@ void
KdCheckPolySegment (DrawablePtr pDrawable, GCPtr pGC, KdCheckPolySegment (DrawablePtr pDrawable, GCPtr pGC,
int nsegInit, xSegment *pSegInit) int nsegInit, xSegment *pSegInit)
{ {
if (pGC->lineWidth == 0) if (pGC->lineWidth == 0) {
KdCheckSync(pDrawable->pScreen); KdCheckSync(pDrawable->pScreen);
kaaDrawableDirty (pDrawable);
}
kaaDrawableDirty (pDrawable);
fbPolySegment (pDrawable, pGC, nsegInit, pSegInit); fbPolySegment (pDrawable, pGC, nsegInit, pSegInit);
} }
@ -108,8 +121,10 @@ void
KdCheckPolyRectangle (DrawablePtr pDrawable, GCPtr pGC, KdCheckPolyRectangle (DrawablePtr pDrawable, GCPtr pGC,
int nrects, xRectangle *prect) int nrects, xRectangle *prect)
{ {
if (pGC->lineWidth == 0) if (pGC->lineWidth == 0) {
KdCheckSync(pDrawable->pScreen); KdCheckSync(pDrawable->pScreen);
kaaDrawableDirty (pDrawable);
}
fbPolyRectangle (pDrawable, pGC, nrects, prect); fbPolyRectangle (pDrawable, pGC, nrects, prect);
} }
@ -120,6 +135,7 @@ KdCheckPolyArc (DrawablePtr pDrawable, GCPtr pGC,
if (pGC->lineWidth == 0) if (pGC->lineWidth == 0)
{ {
KdCheckSync(pDrawable->pScreen); KdCheckSync(pDrawable->pScreen);
kaaDrawableDirty (pDrawable);
fbPolyArc (pDrawable, pGC, narcs, pArcs); fbPolyArc (pDrawable, pGC, narcs, pArcs);
} }
else else
@ -132,6 +148,7 @@ KdCheckFillPolygon (DrawablePtr pDrawable, GCPtr pGC,
int shape, int mode, int count, DDXPointPtr pPts) int shape, int mode, int count, DDXPointPtr pPts)
{ {
KdCheckSync(pDrawable->pScreen); KdCheckSync(pDrawable->pScreen);
kaaDrawableDirty (pDrawable);
fbFillPolygon (pDrawable, pGC, mode, count, pPts); fbFillPolygon (pDrawable, pGC, mode, count, pPts);
} }
#endif #endif
@ -141,6 +158,7 @@ KdCheckPolyFillRect (DrawablePtr pDrawable, GCPtr pGC,
int nrect, xRectangle *prect) int nrect, xRectangle *prect)
{ {
KdCheckSync(pDrawable->pScreen); KdCheckSync(pDrawable->pScreen);
kaaDrawableDirty (pDrawable);
fbPolyFillRect (pDrawable, pGC, nrect, prect); fbPolyFillRect (pDrawable, pGC, nrect, prect);
} }
@ -149,6 +167,7 @@ KdCheckPolyFillArc (DrawablePtr pDrawable, GCPtr pGC,
int narcs, xArc *pArcs) int narcs, xArc *pArcs)
{ {
KdCheckSync(pDrawable->pScreen); KdCheckSync(pDrawable->pScreen);
kaaDrawableDirty (pDrawable);
fbPolyFillArc (pDrawable, pGC, narcs, pArcs); fbPolyFillArc (pDrawable, pGC, narcs, pArcs);
} }
@ -158,6 +177,7 @@ KdCheckImageGlyphBlt (DrawablePtr pDrawable, GCPtr pGC,
CharInfoPtr *ppci, pointer pglyphBase) CharInfoPtr *ppci, pointer pglyphBase)
{ {
KdCheckSync(pDrawable->pScreen); KdCheckSync(pDrawable->pScreen);
kaaDrawableDirty (pDrawable);
fbImageGlyphBlt (pDrawable, pGC, x, y, nglyph, ppci, pglyphBase); fbImageGlyphBlt (pDrawable, pGC, x, y, nglyph, ppci, pglyphBase);
} }
@ -167,6 +187,7 @@ KdCheckPolyGlyphBlt (DrawablePtr pDrawable, GCPtr pGC,
CharInfoPtr *ppci, pointer pglyphBase) CharInfoPtr *ppci, pointer pglyphBase)
{ {
KdCheckSync(pDrawable->pScreen); KdCheckSync(pDrawable->pScreen);
kaaDrawableDirty (pDrawable);
fbPolyGlyphBlt (pDrawable, pGC, x, y, nglyph, ppci, pglyphBase); fbPolyGlyphBlt (pDrawable, pGC, x, y, nglyph, ppci, pglyphBase);
} }
@ -176,6 +197,7 @@ KdCheckPushPixels (GCPtr pGC, PixmapPtr pBitmap,
int w, int h, int x, int y) int w, int h, int x, int y)
{ {
KdCheckSync(pDrawable->pScreen); KdCheckSync(pDrawable->pScreen);
kaaDrawableDirty (pDrawable);
fbPushPixels (pGC, pBitmap, pDrawable, w, h, x, y); fbPushPixels (pGC, pBitmap, pDrawable, w, h, x, y);
} }
@ -209,6 +231,7 @@ KdCheckSaveAreas (PixmapPtr pPixmap,
WindowPtr pWin) WindowPtr pWin)
{ {
KdCheckSync(pWin->drawable.pScreen); KdCheckSync(pWin->drawable.pScreen);
kaaDrawableDirty (&pPixmap->drawable);
fbSaveAreas (pPixmap, prgnSave, xorg, yorg, pWin); fbSaveAreas (pPixmap, prgnSave, xorg, yorg, pWin);
} }
@ -220,6 +243,7 @@ KdCheckRestoreAreas (PixmapPtr pPixmap,
WindowPtr pWin) WindowPtr pWin)
{ {
KdCheckSync(pWin->drawable.pScreen); KdCheckSync(pWin->drawable.pScreen);
kaaDrawableDirty ((DrawablePtr)pWin);
fbRestoreAreas (pPixmap, prgnSave, xorg, yorg, pWin); fbRestoreAreas (pPixmap, prgnSave, xorg, yorg, pWin);
} }
@ -227,6 +251,7 @@ void
KdCheckPaintWindow (WindowPtr pWin, RegionPtr pRegion, int what) KdCheckPaintWindow (WindowPtr pWin, RegionPtr pRegion, int what)
{ {
KdCheckSync (pWin->drawable.pScreen); KdCheckSync (pWin->drawable.pScreen);
kaaDrawableDirty ((DrawablePtr)pWin);
fbPaintWindow (pWin, pRegion, what); fbPaintWindow (pWin, pRegion, what);
} }
@ -234,6 +259,7 @@ void
KdCheckCopyWindow (WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc) KdCheckCopyWindow (WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc)
{ {
KdCheckSync (pWin->drawable.pScreen); KdCheckSync (pWin->drawable.pScreen);
kaaDrawableDirty ((DrawablePtr)pWin);
fbCopyWindow (pWin, ptOldOrg, prgnSrc); fbCopyWindow (pWin, ptOldOrg, prgnSrc);
} }
@ -245,6 +271,7 @@ KdCheckPaintKey(DrawablePtr pDrawable,
int layer) int layer)
{ {
KdCheckSync (pDrawable->pScreen); KdCheckSync (pDrawable->pScreen);
kaaDrawableDirty (pDrawable);
fbOverlayPaintKey (pDrawable, pRegion, pixel, layer); fbOverlayPaintKey (pDrawable, pRegion, pixel, layer);
} }
@ -252,6 +279,7 @@ void
KdCheckOverlayCopyWindow (WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc) KdCheckOverlayCopyWindow (WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc)
{ {
KdCheckSync (pWin->drawable.pScreen); KdCheckSync (pWin->drawable.pScreen);
kaaDrawableDirty ((DrawablePtr)pWin);
fbOverlayCopyWindow (pWin, ptOldOrg, prgnSrc); fbOverlayCopyWindow (pWin, ptOldOrg, prgnSrc);
} }
#endif #endif

View File

@ -29,6 +29,7 @@
#include <picturestr.h> #include <picturestr.h>
#include <mipict.h> #include <mipict.h>
#include <fbpict.h> #include <fbpict.h>
#include "kaa.h"
void void
KdCheckComposite (CARD8 op, KdCheckComposite (CARD8 op,