Add some optional (disabled) fallback debugging code to the async code, for

better tracking of when we're hitting software.
This commit is contained in:
Eric Anholt 2005-09-11 21:38:41 +00:00
parent 1c003ccf5d
commit b0f6fe1f38
3 changed files with 102 additions and 0 deletions

View File

@ -23,6 +23,17 @@
#include "exaPriv.h" #include "exaPriv.h"
#define EXA_TRACE_FALL 0
#if EXA_TRACE_FALL
#define EXA_FALLBACK(x) \
do { \
ErrorF("EXA fallback at %s: ", __FUNCTION__); \
ErrorF x; \
} while (0)
#else
#define EXA_FALLBACK(x)
#endif
/* /*
* These functions wrap the low-level fb rendering functions and * These functions wrap the low-level fb rendering functions and
* synchronize framebuffer/accelerated drawing by stalling until * synchronize framebuffer/accelerated drawing by stalling until
@ -33,6 +44,7 @@ void
ExaCheckFillSpans (DrawablePtr pDrawable, GCPtr pGC, int nspans, ExaCheckFillSpans (DrawablePtr pDrawable, GCPtr pGC, int nspans,
DDXPointPtr ppt, int *pwidth, int fSorted) DDXPointPtr ppt, int *pwidth, int fSorted)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
fbFillSpans (pDrawable, pGC, nspans, ppt, pwidth, fSorted); fbFillSpans (pDrawable, pGC, nspans, ppt, pwidth, fSorted);
exaFinishAccess (pDrawable, EXA_PREPARE_DEST); exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
@ -42,6 +54,7 @@ void
ExaCheckSetSpans (DrawablePtr pDrawable, GCPtr pGC, char *psrc, ExaCheckSetSpans (DrawablePtr pDrawable, GCPtr pGC, char *psrc,
DDXPointPtr ppt, int *pwidth, int nspans, int fSorted) DDXPointPtr ppt, int *pwidth, int nspans, int fSorted)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
fbSetSpans (pDrawable, pGC, psrc, ppt, pwidth, nspans, fSorted); fbSetSpans (pDrawable, pGC, psrc, ppt, pwidth, nspans, fSorted);
exaFinishAccess (pDrawable, EXA_PREPARE_DEST); exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
@ -52,6 +65,7 @@ ExaCheckPutImage (DrawablePtr pDrawable, GCPtr pGC, int depth,
int x, int y, int w, int h, int leftPad, int format, int x, int y, int w, int h, int leftPad, int format,
char *bits) char *bits)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
fbPutImage (pDrawable, pGC, depth, x, y, w, h, leftPad, format, bits); fbPutImage (pDrawable, pGC, depth, x, y, w, h, leftPad, format, bits);
exaFinishAccess (pDrawable, EXA_PREPARE_DEST); exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
@ -63,6 +77,7 @@ ExaCheckCopyArea (DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC,
{ {
RegionPtr ret; RegionPtr ret;
EXA_FALLBACK(("from 0x%lx to 0x%lx\n", (long)pSrc, (long)pDst));
exaPrepareAccess (pDst, EXA_PREPARE_DEST); exaPrepareAccess (pDst, EXA_PREPARE_DEST);
exaPrepareAccess (pSrc, EXA_PREPARE_SRC); exaPrepareAccess (pSrc, EXA_PREPARE_SRC);
ret = fbCopyArea (pSrc, pDst, pGC, srcx, srcy, w, h, dstx, dsty); ret = fbCopyArea (pSrc, pDst, pGC, srcx, srcy, w, h, dstx, dsty);
@ -79,6 +94,7 @@ ExaCheckCopyPlane (DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC,
{ {
RegionPtr ret; RegionPtr ret;
EXA_FALLBACK(("from 0x%lx to 0x%lx\n", (long)pSrc, (long)pDst));
exaPrepareAccess (pDst, EXA_PREPARE_DEST); exaPrepareAccess (pDst, EXA_PREPARE_DEST);
exaPrepareAccess (pSrc, EXA_PREPARE_SRC); exaPrepareAccess (pSrc, EXA_PREPARE_SRC);
ret = fbCopyPlane (pSrc, pDst, pGC, srcx, srcy, w, h, dstx, dsty, ret = fbCopyPlane (pSrc, pDst, pGC, srcx, srcy, w, h, dstx, dsty,
@ -93,6 +109,7 @@ void
ExaCheckPolyPoint (DrawablePtr pDrawable, GCPtr pGC, int mode, int npt, ExaCheckPolyPoint (DrawablePtr pDrawable, GCPtr pGC, int mode, int npt,
DDXPointPtr pptInit) DDXPointPtr pptInit)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
fbPolyPoint (pDrawable, pGC, mode, npt, pptInit); fbPolyPoint (pDrawable, pGC, mode, npt, pptInit);
exaFinishAccess (pDrawable, EXA_PREPARE_DEST); exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
@ -102,6 +119,7 @@ void
ExaCheckPolylines (DrawablePtr pDrawable, GCPtr pGC, ExaCheckPolylines (DrawablePtr pDrawable, GCPtr pGC,
int mode, int npt, DDXPointPtr ppt) int mode, int npt, DDXPointPtr ppt)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
if (pGC->lineWidth == 0) { if (pGC->lineWidth == 0) {
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
@ -116,6 +134,7 @@ void
ExaCheckPolySegment (DrawablePtr pDrawable, GCPtr pGC, ExaCheckPolySegment (DrawablePtr pDrawable, GCPtr pGC,
int nsegInit, xSegment *pSegInit) int nsegInit, xSegment *pSegInit)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
if (pGC->lineWidth == 0) { if (pGC->lineWidth == 0) {
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
fbPolySegment (pDrawable, pGC, nsegInit, pSegInit); fbPolySegment (pDrawable, pGC, nsegInit, pSegInit);
@ -129,6 +148,7 @@ void
ExaCheckPolyRectangle (DrawablePtr pDrawable, GCPtr pGC, ExaCheckPolyRectangle (DrawablePtr pDrawable, GCPtr pGC,
int nrects, xRectangle *prect) int nrects, xRectangle *prect)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
if (pGC->lineWidth == 0) { if (pGC->lineWidth == 0) {
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
fbPolyRectangle (pDrawable, pGC, nrects, prect); fbPolyRectangle (pDrawable, pGC, nrects, prect);
@ -142,6 +162,7 @@ void
ExaCheckPolyArc (DrawablePtr pDrawable, GCPtr pGC, ExaCheckPolyArc (DrawablePtr pDrawable, GCPtr pGC,
int narcs, xArc *pArcs) int narcs, xArc *pArcs)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
if (pGC->lineWidth == 0) if (pGC->lineWidth == 0)
{ {
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
@ -157,6 +178,7 @@ void
ExaCheckFillPolygon (DrawablePtr pDrawable, GCPtr pGC, ExaCheckFillPolygon (DrawablePtr pDrawable, GCPtr pGC,
int shape, int mode, int count, DDXPointPtr pPts) int shape, int mode, int count, DDXPointPtr pPts)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
fbFillPolygon (pDrawable, pGC, mode, count, pPts); fbFillPolygon (pDrawable, pGC, mode, count, pPts);
exaFinishAccess (pDrawable, EXA_PREPARE_DEST); exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
@ -167,6 +189,7 @@ void
ExaCheckPolyFillRect (DrawablePtr pDrawable, GCPtr pGC, ExaCheckPolyFillRect (DrawablePtr pDrawable, GCPtr pGC,
int nrect, xRectangle *prect) int nrect, xRectangle *prect)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
fbPolyFillRect (pDrawable, pGC, nrect, prect); fbPolyFillRect (pDrawable, pGC, nrect, prect);
exaFinishAccess (pDrawable, EXA_PREPARE_DEST); exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
@ -176,6 +199,7 @@ void
ExaCheckPolyFillArc (DrawablePtr pDrawable, GCPtr pGC, ExaCheckPolyFillArc (DrawablePtr pDrawable, GCPtr pGC,
int narcs, xArc *pArcs) int narcs, xArc *pArcs)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
fbPolyFillArc (pDrawable, pGC, narcs, pArcs); fbPolyFillArc (pDrawable, pGC, narcs, pArcs);
exaFinishAccess (pDrawable, EXA_PREPARE_DEST); exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
@ -186,6 +210,7 @@ ExaCheckImageGlyphBlt (DrawablePtr pDrawable, GCPtr pGC,
int x, int y, unsigned int nglyph, int x, int y, unsigned int nglyph,
CharInfoPtr *ppci, pointer pglyphBase) CharInfoPtr *ppci, pointer pglyphBase)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
fbImageGlyphBlt (pDrawable, pGC, x, y, nglyph, ppci, pglyphBase); fbImageGlyphBlt (pDrawable, pGC, x, y, nglyph, ppci, pglyphBase);
exaFinishAccess (pDrawable, EXA_PREPARE_DEST); exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
@ -196,6 +221,7 @@ ExaCheckPolyGlyphBlt (DrawablePtr pDrawable, GCPtr pGC,
int x, int y, unsigned int nglyph, int x, int y, unsigned int nglyph,
CharInfoPtr *ppci, pointer pglyphBase) CharInfoPtr *ppci, pointer pglyphBase)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
fbPolyGlyphBlt (pDrawable, pGC, x, y, nglyph, ppci, pglyphBase); fbPolyGlyphBlt (pDrawable, pGC, x, y, nglyph, ppci, pglyphBase);
exaFinishAccess (pDrawable, EXA_PREPARE_DEST); exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
@ -206,6 +232,7 @@ ExaCheckPushPixels (GCPtr pGC, PixmapPtr pBitmap,
DrawablePtr pDrawable, DrawablePtr pDrawable,
int w, int h, int x, int y) int w, int h, int x, int y)
{ {
EXA_FALLBACK(("from 0x%lx to 0x%lx\n", (long)pBitmap, (long)pDrawable));
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
fbPushPixels (pGC, pBitmap, pDrawable, w, h, x, y); fbPushPixels (pGC, pBitmap, pDrawable, w, h, x, y);
exaFinishAccess (pDrawable, EXA_PREPARE_DEST); exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
@ -217,6 +244,7 @@ ExaCheckGetImage (DrawablePtr pDrawable,
unsigned int format, unsigned long planeMask, unsigned int format, unsigned long planeMask,
char *d) char *d)
{ {
EXA_FALLBACK(("from 0x%lx\n", (long)pDrawable));
exaPrepareAccess (pDrawable, EXA_PREPARE_SRC); exaPrepareAccess (pDrawable, EXA_PREPARE_SRC);
fbGetImage (pDrawable, x, y, w, h, format, planeMask, d); fbGetImage (pDrawable, x, y, w, h, format, planeMask, d);
exaFinishAccess (pDrawable, EXA_PREPARE_SRC); exaFinishAccess (pDrawable, EXA_PREPARE_SRC);
@ -230,6 +258,7 @@ ExaCheckGetSpans (DrawablePtr pDrawable,
int nspans, int nspans,
char *pdstStart) char *pdstStart)
{ {
EXA_FALLBACK(("from 0x%lx\n", (long)pDrawable));
exaPrepareAccess (pDrawable, EXA_PREPARE_SRC); exaPrepareAccess (pDrawable, EXA_PREPARE_SRC);
fbGetSpans (pDrawable, wMax, ppt, pwidth, nspans, pdstStart); fbGetSpans (pDrawable, wMax, ppt, pwidth, nspans, pdstStart);
exaFinishAccess (pDrawable, EXA_PREPARE_SRC); exaFinishAccess (pDrawable, EXA_PREPARE_SRC);
@ -242,6 +271,7 @@ ExaCheckSaveAreas (PixmapPtr pPixmap,
int yorg, int yorg,
WindowPtr pWin) WindowPtr pWin)
{ {
EXA_FALLBACK(("from 0x%lx\n", (long)&pPixmap->drawable));
exaPrepareAccess ((DrawablePtr)pPixmap, EXA_PREPARE_DEST); exaPrepareAccess ((DrawablePtr)pPixmap, EXA_PREPARE_DEST);
fbSaveAreas (pPixmap, prgnSave, xorg, yorg, pWin); fbSaveAreas (pPixmap, prgnSave, xorg, yorg, pWin);
exaFinishAccess ((DrawablePtr)pPixmap, EXA_PREPARE_DEST); exaFinishAccess ((DrawablePtr)pPixmap, EXA_PREPARE_DEST);
@ -254,6 +284,7 @@ ExaCheckRestoreAreas (PixmapPtr pPixmap,
int yorg, int yorg,
WindowPtr pWin) WindowPtr pWin)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)&pPixmap->drawable));
exaPrepareAccess ((DrawablePtr)pPixmap, EXA_PREPARE_DEST); exaPrepareAccess ((DrawablePtr)pPixmap, EXA_PREPARE_DEST);
fbRestoreAreas (pPixmap, prgnSave, xorg, yorg, pWin); fbRestoreAreas (pPixmap, prgnSave, xorg, yorg, pWin);
exaFinishAccess ((DrawablePtr)pPixmap, EXA_PREPARE_DEST); exaFinishAccess ((DrawablePtr)pPixmap, EXA_PREPARE_DEST);
@ -262,6 +293,7 @@ ExaCheckRestoreAreas (PixmapPtr pPixmap,
void void
ExaCheckPaintWindow (WindowPtr pWin, RegionPtr pRegion, int what) ExaCheckPaintWindow (WindowPtr pWin, RegionPtr pRegion, int what)
{ {
EXA_FALLBACK(("from 0x%lx\n", (long)pWin));
exaPrepareAccess (&pWin->drawable, EXA_PREPARE_DEST); exaPrepareAccess (&pWin->drawable, EXA_PREPARE_DEST);
fbPaintWindow (pWin, pRegion, what); fbPaintWindow (pWin, pRegion, what);
exaFinishAccess (&pWin->drawable, EXA_PREPARE_DEST); exaFinishAccess (&pWin->drawable, EXA_PREPARE_DEST);
@ -281,6 +313,8 @@ ExaCheckComposite (CARD8 op,
CARD16 width, CARD16 width,
CARD16 height) CARD16 height)
{ {
EXA_FALLBACK(("from picts 0x%lx/0x%lx to pict 0x%lx\n",
(long)pSrc, (long)pMask, (long)pDst));
exaPrepareAccess (pDst->pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDst->pDrawable, EXA_PREPARE_DEST);
exaPrepareAccess (pSrc->pDrawable, EXA_PREPARE_SRC); exaPrepareAccess (pSrc->pDrawable, EXA_PREPARE_SRC);
if (pMask) if (pMask)

View File

@ -23,6 +23,17 @@
#include "exaPriv.h" #include "exaPriv.h"
#define EXA_TRACE_FALL 0
#if EXA_TRACE_FALL
#define EXA_FALLBACK(x) \
do { \
ErrorF("EXA fallback at %s: ", __FUNCTION__); \
ErrorF x; \
} while (0)
#else
#define EXA_FALLBACK(x)
#endif
/* /*
* These functions wrap the low-level fb rendering functions and * These functions wrap the low-level fb rendering functions and
* synchronize framebuffer/accelerated drawing by stalling until * synchronize framebuffer/accelerated drawing by stalling until
@ -33,6 +44,7 @@ void
ExaCheckFillSpans (DrawablePtr pDrawable, GCPtr pGC, int nspans, ExaCheckFillSpans (DrawablePtr pDrawable, GCPtr pGC, int nspans,
DDXPointPtr ppt, int *pwidth, int fSorted) DDXPointPtr ppt, int *pwidth, int fSorted)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
fbFillSpans (pDrawable, pGC, nspans, ppt, pwidth, fSorted); fbFillSpans (pDrawable, pGC, nspans, ppt, pwidth, fSorted);
exaFinishAccess (pDrawable, EXA_PREPARE_DEST); exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
@ -42,6 +54,7 @@ void
ExaCheckSetSpans (DrawablePtr pDrawable, GCPtr pGC, char *psrc, ExaCheckSetSpans (DrawablePtr pDrawable, GCPtr pGC, char *psrc,
DDXPointPtr ppt, int *pwidth, int nspans, int fSorted) DDXPointPtr ppt, int *pwidth, int nspans, int fSorted)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
fbSetSpans (pDrawable, pGC, psrc, ppt, pwidth, nspans, fSorted); fbSetSpans (pDrawable, pGC, psrc, ppt, pwidth, nspans, fSorted);
exaFinishAccess (pDrawable, EXA_PREPARE_DEST); exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
@ -52,6 +65,7 @@ ExaCheckPutImage (DrawablePtr pDrawable, GCPtr pGC, int depth,
int x, int y, int w, int h, int leftPad, int format, int x, int y, int w, int h, int leftPad, int format,
char *bits) char *bits)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
fbPutImage (pDrawable, pGC, depth, x, y, w, h, leftPad, format, bits); fbPutImage (pDrawable, pGC, depth, x, y, w, h, leftPad, format, bits);
exaFinishAccess (pDrawable, EXA_PREPARE_DEST); exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
@ -63,6 +77,7 @@ ExaCheckCopyArea (DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC,
{ {
RegionPtr ret; RegionPtr ret;
EXA_FALLBACK(("from 0x%lx to 0x%lx\n", (long)pSrc, (long)pDst));
exaPrepareAccess (pDst, EXA_PREPARE_DEST); exaPrepareAccess (pDst, EXA_PREPARE_DEST);
exaPrepareAccess (pSrc, EXA_PREPARE_SRC); exaPrepareAccess (pSrc, EXA_PREPARE_SRC);
ret = fbCopyArea (pSrc, pDst, pGC, srcx, srcy, w, h, dstx, dsty); ret = fbCopyArea (pSrc, pDst, pGC, srcx, srcy, w, h, dstx, dsty);
@ -79,6 +94,7 @@ ExaCheckCopyPlane (DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC,
{ {
RegionPtr ret; RegionPtr ret;
EXA_FALLBACK(("from 0x%lx to 0x%lx\n", (long)pSrc, (long)pDst));
exaPrepareAccess (pDst, EXA_PREPARE_DEST); exaPrepareAccess (pDst, EXA_PREPARE_DEST);
exaPrepareAccess (pSrc, EXA_PREPARE_SRC); exaPrepareAccess (pSrc, EXA_PREPARE_SRC);
ret = fbCopyPlane (pSrc, pDst, pGC, srcx, srcy, w, h, dstx, dsty, ret = fbCopyPlane (pSrc, pDst, pGC, srcx, srcy, w, h, dstx, dsty,
@ -93,6 +109,7 @@ void
ExaCheckPolyPoint (DrawablePtr pDrawable, GCPtr pGC, int mode, int npt, ExaCheckPolyPoint (DrawablePtr pDrawable, GCPtr pGC, int mode, int npt,
DDXPointPtr pptInit) DDXPointPtr pptInit)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
fbPolyPoint (pDrawable, pGC, mode, npt, pptInit); fbPolyPoint (pDrawable, pGC, mode, npt, pptInit);
exaFinishAccess (pDrawable, EXA_PREPARE_DEST); exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
@ -102,6 +119,7 @@ void
ExaCheckPolylines (DrawablePtr pDrawable, GCPtr pGC, ExaCheckPolylines (DrawablePtr pDrawable, GCPtr pGC,
int mode, int npt, DDXPointPtr ppt) int mode, int npt, DDXPointPtr ppt)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
if (pGC->lineWidth == 0) { if (pGC->lineWidth == 0) {
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
@ -116,6 +134,7 @@ void
ExaCheckPolySegment (DrawablePtr pDrawable, GCPtr pGC, ExaCheckPolySegment (DrawablePtr pDrawable, GCPtr pGC,
int nsegInit, xSegment *pSegInit) int nsegInit, xSegment *pSegInit)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
if (pGC->lineWidth == 0) { if (pGC->lineWidth == 0) {
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
fbPolySegment (pDrawable, pGC, nsegInit, pSegInit); fbPolySegment (pDrawable, pGC, nsegInit, pSegInit);
@ -129,6 +148,7 @@ void
ExaCheckPolyRectangle (DrawablePtr pDrawable, GCPtr pGC, ExaCheckPolyRectangle (DrawablePtr pDrawable, GCPtr pGC,
int nrects, xRectangle *prect) int nrects, xRectangle *prect)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
if (pGC->lineWidth == 0) { if (pGC->lineWidth == 0) {
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
fbPolyRectangle (pDrawable, pGC, nrects, prect); fbPolyRectangle (pDrawable, pGC, nrects, prect);
@ -142,6 +162,7 @@ void
ExaCheckPolyArc (DrawablePtr pDrawable, GCPtr pGC, ExaCheckPolyArc (DrawablePtr pDrawable, GCPtr pGC,
int narcs, xArc *pArcs) int narcs, xArc *pArcs)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
if (pGC->lineWidth == 0) if (pGC->lineWidth == 0)
{ {
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
@ -157,6 +178,7 @@ void
ExaCheckFillPolygon (DrawablePtr pDrawable, GCPtr pGC, ExaCheckFillPolygon (DrawablePtr pDrawable, GCPtr pGC,
int shape, int mode, int count, DDXPointPtr pPts) int shape, int mode, int count, DDXPointPtr pPts)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
fbFillPolygon (pDrawable, pGC, mode, count, pPts); fbFillPolygon (pDrawable, pGC, mode, count, pPts);
exaFinishAccess (pDrawable, EXA_PREPARE_DEST); exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
@ -167,6 +189,7 @@ void
ExaCheckPolyFillRect (DrawablePtr pDrawable, GCPtr pGC, ExaCheckPolyFillRect (DrawablePtr pDrawable, GCPtr pGC,
int nrect, xRectangle *prect) int nrect, xRectangle *prect)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
fbPolyFillRect (pDrawable, pGC, nrect, prect); fbPolyFillRect (pDrawable, pGC, nrect, prect);
exaFinishAccess (pDrawable, EXA_PREPARE_DEST); exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
@ -176,6 +199,7 @@ void
ExaCheckPolyFillArc (DrawablePtr pDrawable, GCPtr pGC, ExaCheckPolyFillArc (DrawablePtr pDrawable, GCPtr pGC,
int narcs, xArc *pArcs) int narcs, xArc *pArcs)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
fbPolyFillArc (pDrawable, pGC, narcs, pArcs); fbPolyFillArc (pDrawable, pGC, narcs, pArcs);
exaFinishAccess (pDrawable, EXA_PREPARE_DEST); exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
@ -186,6 +210,7 @@ ExaCheckImageGlyphBlt (DrawablePtr pDrawable, GCPtr pGC,
int x, int y, unsigned int nglyph, int x, int y, unsigned int nglyph,
CharInfoPtr *ppci, pointer pglyphBase) CharInfoPtr *ppci, pointer pglyphBase)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
fbImageGlyphBlt (pDrawable, pGC, x, y, nglyph, ppci, pglyphBase); fbImageGlyphBlt (pDrawable, pGC, x, y, nglyph, ppci, pglyphBase);
exaFinishAccess (pDrawable, EXA_PREPARE_DEST); exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
@ -196,6 +221,7 @@ ExaCheckPolyGlyphBlt (DrawablePtr pDrawable, GCPtr pGC,
int x, int y, unsigned int nglyph, int x, int y, unsigned int nglyph,
CharInfoPtr *ppci, pointer pglyphBase) CharInfoPtr *ppci, pointer pglyphBase)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
fbPolyGlyphBlt (pDrawable, pGC, x, y, nglyph, ppci, pglyphBase); fbPolyGlyphBlt (pDrawable, pGC, x, y, nglyph, ppci, pglyphBase);
exaFinishAccess (pDrawable, EXA_PREPARE_DEST); exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
@ -206,6 +232,7 @@ ExaCheckPushPixels (GCPtr pGC, PixmapPtr pBitmap,
DrawablePtr pDrawable, DrawablePtr pDrawable,
int w, int h, int x, int y) int w, int h, int x, int y)
{ {
EXA_FALLBACK(("from 0x%lx to 0x%lx\n", (long)pBitmap, (long)pDrawable));
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
fbPushPixels (pGC, pBitmap, pDrawable, w, h, x, y); fbPushPixels (pGC, pBitmap, pDrawable, w, h, x, y);
exaFinishAccess (pDrawable, EXA_PREPARE_DEST); exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
@ -217,6 +244,7 @@ ExaCheckGetImage (DrawablePtr pDrawable,
unsigned int format, unsigned long planeMask, unsigned int format, unsigned long planeMask,
char *d) char *d)
{ {
EXA_FALLBACK(("from 0x%lx\n", (long)pDrawable));
exaPrepareAccess (pDrawable, EXA_PREPARE_SRC); exaPrepareAccess (pDrawable, EXA_PREPARE_SRC);
fbGetImage (pDrawable, x, y, w, h, format, planeMask, d); fbGetImage (pDrawable, x, y, w, h, format, planeMask, d);
exaFinishAccess (pDrawable, EXA_PREPARE_SRC); exaFinishAccess (pDrawable, EXA_PREPARE_SRC);
@ -230,6 +258,7 @@ ExaCheckGetSpans (DrawablePtr pDrawable,
int nspans, int nspans,
char *pdstStart) char *pdstStart)
{ {
EXA_FALLBACK(("from 0x%lx\n", (long)pDrawable));
exaPrepareAccess (pDrawable, EXA_PREPARE_SRC); exaPrepareAccess (pDrawable, EXA_PREPARE_SRC);
fbGetSpans (pDrawable, wMax, ppt, pwidth, nspans, pdstStart); fbGetSpans (pDrawable, wMax, ppt, pwidth, nspans, pdstStart);
exaFinishAccess (pDrawable, EXA_PREPARE_SRC); exaFinishAccess (pDrawable, EXA_PREPARE_SRC);
@ -242,6 +271,7 @@ ExaCheckSaveAreas (PixmapPtr pPixmap,
int yorg, int yorg,
WindowPtr pWin) WindowPtr pWin)
{ {
EXA_FALLBACK(("from 0x%lx\n", (long)&pPixmap->drawable));
exaPrepareAccess ((DrawablePtr)pPixmap, EXA_PREPARE_DEST); exaPrepareAccess ((DrawablePtr)pPixmap, EXA_PREPARE_DEST);
fbSaveAreas (pPixmap, prgnSave, xorg, yorg, pWin); fbSaveAreas (pPixmap, prgnSave, xorg, yorg, pWin);
exaFinishAccess ((DrawablePtr)pPixmap, EXA_PREPARE_DEST); exaFinishAccess ((DrawablePtr)pPixmap, EXA_PREPARE_DEST);
@ -254,6 +284,7 @@ ExaCheckRestoreAreas (PixmapPtr pPixmap,
int yorg, int yorg,
WindowPtr pWin) WindowPtr pWin)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)&pPixmap->drawable));
exaPrepareAccess ((DrawablePtr)pPixmap, EXA_PREPARE_DEST); exaPrepareAccess ((DrawablePtr)pPixmap, EXA_PREPARE_DEST);
fbRestoreAreas (pPixmap, prgnSave, xorg, yorg, pWin); fbRestoreAreas (pPixmap, prgnSave, xorg, yorg, pWin);
exaFinishAccess ((DrawablePtr)pPixmap, EXA_PREPARE_DEST); exaFinishAccess ((DrawablePtr)pPixmap, EXA_PREPARE_DEST);
@ -262,6 +293,7 @@ ExaCheckRestoreAreas (PixmapPtr pPixmap,
void void
ExaCheckPaintWindow (WindowPtr pWin, RegionPtr pRegion, int what) ExaCheckPaintWindow (WindowPtr pWin, RegionPtr pRegion, int what)
{ {
EXA_FALLBACK(("from 0x%lx\n", (long)pWin));
exaPrepareAccess (&pWin->drawable, EXA_PREPARE_DEST); exaPrepareAccess (&pWin->drawable, EXA_PREPARE_DEST);
fbPaintWindow (pWin, pRegion, what); fbPaintWindow (pWin, pRegion, what);
exaFinishAccess (&pWin->drawable, EXA_PREPARE_DEST); exaFinishAccess (&pWin->drawable, EXA_PREPARE_DEST);
@ -281,6 +313,8 @@ ExaCheckComposite (CARD8 op,
CARD16 width, CARD16 width,
CARD16 height) CARD16 height)
{ {
EXA_FALLBACK(("from picts 0x%lx/0x%lx to pict 0x%lx\n",
(long)pSrc, (long)pMask, (long)pDst));
exaPrepareAccess (pDst->pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDst->pDrawable, EXA_PREPARE_DEST);
exaPrepareAccess (pSrc->pDrawable, EXA_PREPARE_SRC); exaPrepareAccess (pSrc->pDrawable, EXA_PREPARE_SRC);
if (pMask) if (pMask)

View File

@ -23,6 +23,17 @@
#include "exaPriv.h" #include "exaPriv.h"
#define EXA_TRACE_FALL 0
#if EXA_TRACE_FALL
#define EXA_FALLBACK(x) \
do { \
ErrorF("EXA fallback at %s: ", __FUNCTION__); \
ErrorF x; \
} while (0)
#else
#define EXA_FALLBACK(x)
#endif
/* /*
* These functions wrap the low-level fb rendering functions and * These functions wrap the low-level fb rendering functions and
* synchronize framebuffer/accelerated drawing by stalling until * synchronize framebuffer/accelerated drawing by stalling until
@ -33,6 +44,7 @@ void
ExaCheckFillSpans (DrawablePtr pDrawable, GCPtr pGC, int nspans, ExaCheckFillSpans (DrawablePtr pDrawable, GCPtr pGC, int nspans,
DDXPointPtr ppt, int *pwidth, int fSorted) DDXPointPtr ppt, int *pwidth, int fSorted)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
fbFillSpans (pDrawable, pGC, nspans, ppt, pwidth, fSorted); fbFillSpans (pDrawable, pGC, nspans, ppt, pwidth, fSorted);
exaFinishAccess (pDrawable, EXA_PREPARE_DEST); exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
@ -42,6 +54,7 @@ void
ExaCheckSetSpans (DrawablePtr pDrawable, GCPtr pGC, char *psrc, ExaCheckSetSpans (DrawablePtr pDrawable, GCPtr pGC, char *psrc,
DDXPointPtr ppt, int *pwidth, int nspans, int fSorted) DDXPointPtr ppt, int *pwidth, int nspans, int fSorted)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
fbSetSpans (pDrawable, pGC, psrc, ppt, pwidth, nspans, fSorted); fbSetSpans (pDrawable, pGC, psrc, ppt, pwidth, nspans, fSorted);
exaFinishAccess (pDrawable, EXA_PREPARE_DEST); exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
@ -52,6 +65,7 @@ ExaCheckPutImage (DrawablePtr pDrawable, GCPtr pGC, int depth,
int x, int y, int w, int h, int leftPad, int format, int x, int y, int w, int h, int leftPad, int format,
char *bits) char *bits)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
fbPutImage (pDrawable, pGC, depth, x, y, w, h, leftPad, format, bits); fbPutImage (pDrawable, pGC, depth, x, y, w, h, leftPad, format, bits);
exaFinishAccess (pDrawable, EXA_PREPARE_DEST); exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
@ -63,6 +77,7 @@ ExaCheckCopyArea (DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC,
{ {
RegionPtr ret; RegionPtr ret;
EXA_FALLBACK(("from 0x%lx to 0x%lx\n", (long)pSrc, (long)pDst));
exaPrepareAccess (pDst, EXA_PREPARE_DEST); exaPrepareAccess (pDst, EXA_PREPARE_DEST);
exaPrepareAccess (pSrc, EXA_PREPARE_SRC); exaPrepareAccess (pSrc, EXA_PREPARE_SRC);
ret = fbCopyArea (pSrc, pDst, pGC, srcx, srcy, w, h, dstx, dsty); ret = fbCopyArea (pSrc, pDst, pGC, srcx, srcy, w, h, dstx, dsty);
@ -79,6 +94,7 @@ ExaCheckCopyPlane (DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC,
{ {
RegionPtr ret; RegionPtr ret;
EXA_FALLBACK(("from 0x%lx to 0x%lx\n", (long)pSrc, (long)pDst));
exaPrepareAccess (pDst, EXA_PREPARE_DEST); exaPrepareAccess (pDst, EXA_PREPARE_DEST);
exaPrepareAccess (pSrc, EXA_PREPARE_SRC); exaPrepareAccess (pSrc, EXA_PREPARE_SRC);
ret = fbCopyPlane (pSrc, pDst, pGC, srcx, srcy, w, h, dstx, dsty, ret = fbCopyPlane (pSrc, pDst, pGC, srcx, srcy, w, h, dstx, dsty,
@ -93,6 +109,7 @@ void
ExaCheckPolyPoint (DrawablePtr pDrawable, GCPtr pGC, int mode, int npt, ExaCheckPolyPoint (DrawablePtr pDrawable, GCPtr pGC, int mode, int npt,
DDXPointPtr pptInit) DDXPointPtr pptInit)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
fbPolyPoint (pDrawable, pGC, mode, npt, pptInit); fbPolyPoint (pDrawable, pGC, mode, npt, pptInit);
exaFinishAccess (pDrawable, EXA_PREPARE_DEST); exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
@ -102,6 +119,7 @@ void
ExaCheckPolylines (DrawablePtr pDrawable, GCPtr pGC, ExaCheckPolylines (DrawablePtr pDrawable, GCPtr pGC,
int mode, int npt, DDXPointPtr ppt) int mode, int npt, DDXPointPtr ppt)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
if (pGC->lineWidth == 0) { if (pGC->lineWidth == 0) {
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
@ -116,6 +134,7 @@ void
ExaCheckPolySegment (DrawablePtr pDrawable, GCPtr pGC, ExaCheckPolySegment (DrawablePtr pDrawable, GCPtr pGC,
int nsegInit, xSegment *pSegInit) int nsegInit, xSegment *pSegInit)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
if (pGC->lineWidth == 0) { if (pGC->lineWidth == 0) {
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
fbPolySegment (pDrawable, pGC, nsegInit, pSegInit); fbPolySegment (pDrawable, pGC, nsegInit, pSegInit);
@ -129,6 +148,7 @@ void
ExaCheckPolyRectangle (DrawablePtr pDrawable, GCPtr pGC, ExaCheckPolyRectangle (DrawablePtr pDrawable, GCPtr pGC,
int nrects, xRectangle *prect) int nrects, xRectangle *prect)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
if (pGC->lineWidth == 0) { if (pGC->lineWidth == 0) {
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
fbPolyRectangle (pDrawable, pGC, nrects, prect); fbPolyRectangle (pDrawable, pGC, nrects, prect);
@ -142,6 +162,7 @@ void
ExaCheckPolyArc (DrawablePtr pDrawable, GCPtr pGC, ExaCheckPolyArc (DrawablePtr pDrawable, GCPtr pGC,
int narcs, xArc *pArcs) int narcs, xArc *pArcs)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
if (pGC->lineWidth == 0) if (pGC->lineWidth == 0)
{ {
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
@ -157,6 +178,7 @@ void
ExaCheckFillPolygon (DrawablePtr pDrawable, GCPtr pGC, ExaCheckFillPolygon (DrawablePtr pDrawable, GCPtr pGC,
int shape, int mode, int count, DDXPointPtr pPts) int shape, int mode, int count, DDXPointPtr pPts)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
fbFillPolygon (pDrawable, pGC, mode, count, pPts); fbFillPolygon (pDrawable, pGC, mode, count, pPts);
exaFinishAccess (pDrawable, EXA_PREPARE_DEST); exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
@ -167,6 +189,7 @@ void
ExaCheckPolyFillRect (DrawablePtr pDrawable, GCPtr pGC, ExaCheckPolyFillRect (DrawablePtr pDrawable, GCPtr pGC,
int nrect, xRectangle *prect) int nrect, xRectangle *prect)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
fbPolyFillRect (pDrawable, pGC, nrect, prect); fbPolyFillRect (pDrawable, pGC, nrect, prect);
exaFinishAccess (pDrawable, EXA_PREPARE_DEST); exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
@ -176,6 +199,7 @@ void
ExaCheckPolyFillArc (DrawablePtr pDrawable, GCPtr pGC, ExaCheckPolyFillArc (DrawablePtr pDrawable, GCPtr pGC,
int narcs, xArc *pArcs) int narcs, xArc *pArcs)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
fbPolyFillArc (pDrawable, pGC, narcs, pArcs); fbPolyFillArc (pDrawable, pGC, narcs, pArcs);
exaFinishAccess (pDrawable, EXA_PREPARE_DEST); exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
@ -186,6 +210,7 @@ ExaCheckImageGlyphBlt (DrawablePtr pDrawable, GCPtr pGC,
int x, int y, unsigned int nglyph, int x, int y, unsigned int nglyph,
CharInfoPtr *ppci, pointer pglyphBase) CharInfoPtr *ppci, pointer pglyphBase)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
fbImageGlyphBlt (pDrawable, pGC, x, y, nglyph, ppci, pglyphBase); fbImageGlyphBlt (pDrawable, pGC, x, y, nglyph, ppci, pglyphBase);
exaFinishAccess (pDrawable, EXA_PREPARE_DEST); exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
@ -196,6 +221,7 @@ ExaCheckPolyGlyphBlt (DrawablePtr pDrawable, GCPtr pGC,
int x, int y, unsigned int nglyph, int x, int y, unsigned int nglyph,
CharInfoPtr *ppci, pointer pglyphBase) CharInfoPtr *ppci, pointer pglyphBase)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)pDrawable));
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
fbPolyGlyphBlt (pDrawable, pGC, x, y, nglyph, ppci, pglyphBase); fbPolyGlyphBlt (pDrawable, pGC, x, y, nglyph, ppci, pglyphBase);
exaFinishAccess (pDrawable, EXA_PREPARE_DEST); exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
@ -206,6 +232,7 @@ ExaCheckPushPixels (GCPtr pGC, PixmapPtr pBitmap,
DrawablePtr pDrawable, DrawablePtr pDrawable,
int w, int h, int x, int y) int w, int h, int x, int y)
{ {
EXA_FALLBACK(("from 0x%lx to 0x%lx\n", (long)pBitmap, (long)pDrawable));
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
fbPushPixels (pGC, pBitmap, pDrawable, w, h, x, y); fbPushPixels (pGC, pBitmap, pDrawable, w, h, x, y);
exaFinishAccess (pDrawable, EXA_PREPARE_DEST); exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
@ -217,6 +244,7 @@ ExaCheckGetImage (DrawablePtr pDrawable,
unsigned int format, unsigned long planeMask, unsigned int format, unsigned long planeMask,
char *d) char *d)
{ {
EXA_FALLBACK(("from 0x%lx\n", (long)pDrawable));
exaPrepareAccess (pDrawable, EXA_PREPARE_SRC); exaPrepareAccess (pDrawable, EXA_PREPARE_SRC);
fbGetImage (pDrawable, x, y, w, h, format, planeMask, d); fbGetImage (pDrawable, x, y, w, h, format, planeMask, d);
exaFinishAccess (pDrawable, EXA_PREPARE_SRC); exaFinishAccess (pDrawable, EXA_PREPARE_SRC);
@ -230,6 +258,7 @@ ExaCheckGetSpans (DrawablePtr pDrawable,
int nspans, int nspans,
char *pdstStart) char *pdstStart)
{ {
EXA_FALLBACK(("from 0x%lx\n", (long)pDrawable));
exaPrepareAccess (pDrawable, EXA_PREPARE_SRC); exaPrepareAccess (pDrawable, EXA_PREPARE_SRC);
fbGetSpans (pDrawable, wMax, ppt, pwidth, nspans, pdstStart); fbGetSpans (pDrawable, wMax, ppt, pwidth, nspans, pdstStart);
exaFinishAccess (pDrawable, EXA_PREPARE_SRC); exaFinishAccess (pDrawable, EXA_PREPARE_SRC);
@ -242,6 +271,7 @@ ExaCheckSaveAreas (PixmapPtr pPixmap,
int yorg, int yorg,
WindowPtr pWin) WindowPtr pWin)
{ {
EXA_FALLBACK(("from 0x%lx\n", (long)&pPixmap->drawable));
exaPrepareAccess ((DrawablePtr)pPixmap, EXA_PREPARE_DEST); exaPrepareAccess ((DrawablePtr)pPixmap, EXA_PREPARE_DEST);
fbSaveAreas (pPixmap, prgnSave, xorg, yorg, pWin); fbSaveAreas (pPixmap, prgnSave, xorg, yorg, pWin);
exaFinishAccess ((DrawablePtr)pPixmap, EXA_PREPARE_DEST); exaFinishAccess ((DrawablePtr)pPixmap, EXA_PREPARE_DEST);
@ -254,6 +284,7 @@ ExaCheckRestoreAreas (PixmapPtr pPixmap,
int yorg, int yorg,
WindowPtr pWin) WindowPtr pWin)
{ {
EXA_FALLBACK(("to 0x%lx\n", (long)&pPixmap->drawable));
exaPrepareAccess ((DrawablePtr)pPixmap, EXA_PREPARE_DEST); exaPrepareAccess ((DrawablePtr)pPixmap, EXA_PREPARE_DEST);
fbRestoreAreas (pPixmap, prgnSave, xorg, yorg, pWin); fbRestoreAreas (pPixmap, prgnSave, xorg, yorg, pWin);
exaFinishAccess ((DrawablePtr)pPixmap, EXA_PREPARE_DEST); exaFinishAccess ((DrawablePtr)pPixmap, EXA_PREPARE_DEST);
@ -262,6 +293,7 @@ ExaCheckRestoreAreas (PixmapPtr pPixmap,
void void
ExaCheckPaintWindow (WindowPtr pWin, RegionPtr pRegion, int what) ExaCheckPaintWindow (WindowPtr pWin, RegionPtr pRegion, int what)
{ {
EXA_FALLBACK(("from 0x%lx\n", (long)pWin));
exaPrepareAccess (&pWin->drawable, EXA_PREPARE_DEST); exaPrepareAccess (&pWin->drawable, EXA_PREPARE_DEST);
fbPaintWindow (pWin, pRegion, what); fbPaintWindow (pWin, pRegion, what);
exaFinishAccess (&pWin->drawable, EXA_PREPARE_DEST); exaFinishAccess (&pWin->drawable, EXA_PREPARE_DEST);
@ -281,6 +313,8 @@ ExaCheckComposite (CARD8 op,
CARD16 width, CARD16 width,
CARD16 height) CARD16 height)
{ {
EXA_FALLBACK(("from picts 0x%lx/0x%lx to pict 0x%lx\n",
(long)pSrc, (long)pMask, (long)pDst));
exaPrepareAccess (pDst->pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDst->pDrawable, EXA_PREPARE_DEST);
exaPrepareAccess (pSrc->pDrawable, EXA_PREPARE_SRC); exaPrepareAccess (pSrc->pDrawable, EXA_PREPARE_SRC);
if (pMask) if (pMask)