b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaawrap.h,v 1.3 1998/10/25 07:12:14 dawes Exp $ */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define XAA_SCREEN_PROLOGUE(pScreen, field)\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync ((pScreen)->field = \
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync ((XAAScreenPtr) (pScreen)->devPrivates[XAAGetScreenIndex()].ptr)->field)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define XAA_SCREEN_EPILOGUE(pScreen, field, wrapper)\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync ((pScreen)->field = wrapper)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define XAA_GC_FUNC_PROLOGUE(pGC)\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync XAAGCPtr pGCPriv = (XAAGCPtr) (pGC)->devPrivates[XAAGetGCIndex()].ptr;\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync (pGC)->funcs = pGCPriv->wrapFuncs;\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync if(pGCPriv->flags)\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync (pGC)->ops = pGCPriv->wrapOps
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define XAA_GC_FUNC_EPILOGUE(pGC)\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync pGCPriv->wrapFuncs = (pGC)->funcs;\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync (pGC)->funcs = &XAAGCFuncs;\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync if(pGCPriv->flags) {\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync pGCPriv->wrapOps = (pGC)->ops;\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync (pGC)->ops = (pGCPriv->flags & OPS_ARE_ACCEL) ? pGCPriv->XAAOps :\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync &XAAPixmapOps;\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync }
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define XAA_GC_OP_PROLOGUE(pGC)\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync XAAGCPtr pGCPriv = (XAAGCPtr)(pGC->devPrivates[XAAGetGCIndex()].ptr);\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync GCFuncs *oldFuncs = pGC->funcs;\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync pGC->funcs = pGCPriv->wrapFuncs;\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync pGC->ops = pGCPriv->wrapOps
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define XAA_GC_OP_PROLOGUE_WITH_RETURN(pGC)\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync XAAGCPtr pGCPriv = (XAAGCPtr)(pGC->devPrivates[XAAGetGCIndex()].ptr);\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync GCFuncs *oldFuncs = pGC->funcs;\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync if(!REGION_NUM_RECTS(pGC->pCompositeClip)) return; \
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync pGC->funcs = pGCPriv->wrapFuncs;\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync pGC->ops = pGCPriv->wrapOps
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define XAA_GC_OP_EPILOGUE(pGC)\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync pGCPriv->wrapOps = pGC->ops;\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync pGC->funcs = oldFuncs;\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync pGC->ops = pGCPriv->XAAOps
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define XAA_PIXMAP_OP_PROLOGUE(pGC, pDraw)\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync XAAGCPtr pGCPriv = (XAAGCPtr)(pGC->devPrivates[XAAGetGCIndex()].ptr);\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync XAAPixmapPtr pixPriv = XAA_GET_PIXMAP_PRIVATE((PixmapPtr)(pDraw));\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync GCFuncs *oldFuncs = pGC->funcs;\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync pGC->funcs = pGCPriv->wrapFuncs;\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync pGC->ops = pGCPriv->wrapOps
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define XAA_PIXMAP_OP_EPILOGUE(pGC)\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync pGCPriv->wrapOps = pGC->ops;\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync pGC->funcs = oldFuncs;\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync pGC->ops = &XAAPixmapOps;\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync pixPriv->flags |= DIRTY
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#ifdef HAVE_XORG_CONFIG_H
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#include <xorg-config.h>
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#endif
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#ifdef RENDER
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define XAA_RENDER_PROLOGUE(pScreen,field)\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync (GetPictureScreen(pScreen)->field = \
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync ((XAAScreenPtr) (pScreen)->devPrivates[XAAGetScreenIndex()].ptr)->field)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define XAA_RENDER_EPILOGUE(pScreen, field, wrapper)\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync (GetPictureScreen(pScreen)->field = wrapper)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#endif
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* This also works fine for drawables */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define SYNC_CHECK(pGC) {\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync XAAInfoRecPtr infoRec =\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync((XAAScreenPtr)((pGC)->pScreen->devPrivates[XAAGetScreenIndex()].ptr))->AccelInfoRec;\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync if(infoRec->NeedToSync) {\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync (*infoRec->Sync)(infoRec->pScrn);\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync infoRec->NeedToSync = FALSE;\
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync }}