cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define XAA_SCREEN_PROLOGUE(pScreen, field)\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync ((pScreen)->field = \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync ((XAAScreenPtr)dixLookupPrivate(&(pScreen)->devPrivates, XAAGetScreenKey()))->field)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define XAA_SCREEN_EPILOGUE(pScreen, field, wrapper)\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync ((pScreen)->field = wrapper)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define XAA_GC_FUNC_PROLOGUE(pGC)\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync XAAGCPtr pGCPriv = (XAAGCPtr)dixLookupPrivate(&(pGC)->devPrivates, XAAGetGCKey()); \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync (pGC)->funcs = pGCPriv->wrapFuncs;\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync if(pGCPriv->flags)\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync (pGC)->ops = pGCPriv->wrapOps
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define XAA_GC_FUNC_EPILOGUE(pGC)\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync pGCPriv->wrapFuncs = (pGC)->funcs;\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync (pGC)->funcs = &XAAGCFuncs;\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync if(pGCPriv->flags) {\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync pGCPriv->wrapOps = (pGC)->ops;\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync (pGC)->ops = (pGCPriv->flags & OPS_ARE_ACCEL) ? pGCPriv->XAAOps :\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync &XAAPixmapOps;\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync }
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define XAA_GC_OP_PROLOGUE(pGC)\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync XAAGCPtr pGCPriv = (XAAGCPtr)dixLookupPrivate(&(pGC)->devPrivates, XAAGetGCKey()); \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GCFuncs *oldFuncs = pGC->funcs;\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync pGC->funcs = pGCPriv->wrapFuncs;\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync pGC->ops = pGCPriv->wrapOps
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define XAA_GC_OP_PROLOGUE_WITH_RETURN(pGC)\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync XAAGCPtr pGCPriv = (XAAGCPtr)dixLookupPrivate(&(pGC)->devPrivates, XAAGetGCKey()); \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GCFuncs *oldFuncs = pGC->funcs;\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync if(!RegionNumRects(pGC->pCompositeClip)) return; \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync pGC->funcs = pGCPriv->wrapFuncs;\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync pGC->ops = pGCPriv->wrapOps
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define XAA_GC_OP_EPILOGUE(pGC)\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync pGCPriv->wrapOps = pGC->ops;\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync pGC->funcs = oldFuncs;\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync pGC->ops = pGCPriv->XAAOps
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define XAA_PIXMAP_OP_PROLOGUE(pGC, pDraw)\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync XAAGCPtr pGCPriv = (XAAGCPtr)dixLookupPrivate(&(pGC)->devPrivates, XAAGetGCKey()); \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync XAAPixmapPtr pixPriv = XAA_GET_PIXMAP_PRIVATE((PixmapPtr)(pDraw));\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GCFuncs *oldFuncs = pGC->funcs;\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync pGC->funcs = pGCPriv->wrapFuncs;\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync pGC->ops = pGCPriv->wrapOps; \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync SYNC_CHECK(pGC)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define XAA_PIXMAP_OP_EPILOGUE(pGC)\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync pGCPriv->wrapOps = pGC->ops;\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync pGC->funcs = oldFuncs;\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync pGC->ops = &XAAPixmapOps;\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync pixPriv->flags |= DIRTY
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#ifdef HAVE_XORG_CONFIG_H
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#include <xorg-config.h>
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define XAA_RENDER_PROLOGUE(pScreen,field)\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync (GetPictureScreen(pScreen)->field = \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync ((XAAScreenPtr)dixLookupPrivate(&(pScreen)->devPrivates, XAAGetScreenKey()))->field)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define XAA_RENDER_EPILOGUE(pScreen, field, wrapper)\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync (GetPictureScreen(pScreen)->field = wrapper)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/* This also works fine for drawables */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define SYNC_CHECK(pGC) {\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync XAAInfoRecPtr infoRec =\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync((XAAScreenPtr)dixLookupPrivate(&(pGC)->pScreen->devPrivates, XAAGetScreenKey()))->AccelInfoRec; \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync if(infoRec->NeedToSync) {\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync (*infoRec->Sync)(infoRec->pScrn);\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync infoRec->NeedToSync = FALSE;\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync }}