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