48514fee3c
framebuffer formats except cfb and the overlay modes should work, and r128 and radeon need to be loaded from the ati driver (both issues to be fixed soon). Tested on i740, s3virge, mach64, tdfx, vesa, and vga drivers. elfloader users shouldn't be affected.
79 lines
2.4 KiB
C
79 lines
2.4 KiB
C
/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaawrap.h,v 1.3 1998/10/25 07:12:14 dawes Exp $ */
|
|
|
|
#define XAA_SCREEN_PROLOGUE(pScreen, field)\
|
|
((pScreen)->field = \
|
|
((XAAScreenPtr) (pScreen)->devPrivates[XAAGetScreenIndex()].ptr)->field)
|
|
|
|
#define XAA_SCREEN_EPILOGUE(pScreen, field, wrapper)\
|
|
((pScreen)->field = wrapper)
|
|
|
|
|
|
#define XAA_GC_FUNC_PROLOGUE(pGC)\
|
|
XAAGCPtr pGCPriv = (XAAGCPtr) (pGC)->devPrivates[XAAGetGCIndex()].ptr;\
|
|
(pGC)->funcs = pGCPriv->wrapFuncs;\
|
|
if(pGCPriv->flags)\
|
|
(pGC)->ops = pGCPriv->wrapOps
|
|
|
|
#define XAA_GC_FUNC_EPILOGUE(pGC)\
|
|
pGCPriv->wrapFuncs = (pGC)->funcs;\
|
|
(pGC)->funcs = &XAAGCFuncs;\
|
|
if(pGCPriv->flags) {\
|
|
pGCPriv->wrapOps = (pGC)->ops;\
|
|
(pGC)->ops = (pGCPriv->flags & OPS_ARE_ACCEL) ? pGCPriv->XAAOps :\
|
|
&XAAPixmapOps;\
|
|
}
|
|
|
|
|
|
#define XAA_GC_OP_PROLOGUE(pGC)\
|
|
XAAGCPtr pGCPriv = (XAAGCPtr)(pGC->devPrivates[XAAGetGCIndex()].ptr);\
|
|
GCFuncs *oldFuncs = pGC->funcs;\
|
|
pGC->funcs = pGCPriv->wrapFuncs;\
|
|
pGC->ops = pGCPriv->wrapOps
|
|
|
|
#define XAA_GC_OP_PROLOGUE_WITH_RETURN(pGC)\
|
|
XAAGCPtr pGCPriv = (XAAGCPtr)(pGC->devPrivates[XAAGetGCIndex()].ptr);\
|
|
GCFuncs *oldFuncs = pGC->funcs;\
|
|
if(!REGION_NUM_RECTS(pGC->pCompositeClip)) return; \
|
|
pGC->funcs = pGCPriv->wrapFuncs;\
|
|
pGC->ops = pGCPriv->wrapOps
|
|
|
|
|
|
#define XAA_GC_OP_EPILOGUE(pGC)\
|
|
pGCPriv->wrapOps = pGC->ops;\
|
|
pGC->funcs = oldFuncs;\
|
|
pGC->ops = pGCPriv->XAAOps
|
|
|
|
|
|
#define XAA_PIXMAP_OP_PROLOGUE(pGC, pDraw)\
|
|
XAAGCPtr pGCPriv = (XAAGCPtr)(pGC->devPrivates[XAAGetGCIndex()].ptr);\
|
|
XAAPixmapPtr pixPriv = XAA_GET_PIXMAP_PRIVATE((PixmapPtr)(pDraw));\
|
|
GCFuncs *oldFuncs = pGC->funcs;\
|
|
pGC->funcs = pGCPriv->wrapFuncs;\
|
|
pGC->ops = pGCPriv->wrapOps
|
|
|
|
|
|
#define XAA_PIXMAP_OP_EPILOGUE(pGC)\
|
|
pGCPriv->wrapOps = pGC->ops;\
|
|
pGC->funcs = oldFuncs;\
|
|
pGC->ops = &XAAPixmapOps;\
|
|
pixPriv->flags |= DIRTY
|
|
|
|
#ifdef RENDER
|
|
#define XAA_RENDER_PROLOGUE(pScreen,field)\
|
|
(GetPictureScreen(pScreen)->field = \
|
|
((XAAScreenPtr) (pScreen)->devPrivates[XAAGetScreenIndex()].ptr)->field)
|
|
|
|
#define XAA_RENDER_EPILOGUE(pScreen, field, wrapper)\
|
|
(GetPictureScreen(pScreen)->field = wrapper)
|
|
#endif
|
|
|
|
/* This also works fine for drawables */
|
|
|
|
#define SYNC_CHECK(pGC) {\
|
|
XAAInfoRecPtr infoRec =\
|
|
((XAAScreenPtr)((pGC)->pScreen->devPrivates[XAAGetScreenIndex()].ptr))->AccelInfoRec;\
|
|
if(infoRec->NeedToSync) {\
|
|
(*infoRec->Sync)(infoRec->pScrn);\
|
|
infoRec->NeedToSync = FALSE;\
|
|
}}
|