#ifndef IMPED_H #define IMPED_H #include "drv_types.h" #include "scrnintstr.h" #include "pixmapstr.h" #include "gcstruct.h" #include "picturestr.h" /* * XFree86 empties the root BorderClip when the VT is inactive, * here's a macro which uses that to disable GetImage and GetSpans */ #define MAX_GPU 4 typedef struct _impedScreenPriv { DrvScreenPtr gpu[MAX_GPU]; int num_gpu; } impedScreenPrivRec, *impedScreenPrivPtr; typedef struct _impedPixmapPriv { DrvPixmapPtr gpu[MAX_GPU]; Bool shattered; /* the root pixmap is shattered */ } impedPixmapPrivRec, *impedPixmapPrivPtr; typedef struct _impedGCPriv { DrvGCPtr gpu[MAX_GPU]; } impedGCPrivRec, *impedGCPrivPtr; typedef struct _impedPicturePriv { DrvPicturePtr gpu[MAX_GPU]; } impedPictPrivRec, *impedPictPrivPtr; DevPrivateKey impedGetScreenPrivKey(void); DevPrivateKey impedGetPixmapPrivKey(void); DevPrivateKey impedGetGCPrivKey(void); DevPrivateKey impedGetPictPrivKey(void); static inline impedScreenPrivPtr impedGetScreen(ScreenPtr pScreen) { return dixLookupPrivate(&pScreen->devPrivates, impedGetScreenPrivKey()); } static inline impedPixmapPrivPtr impedGetPixmap(PixmapPtr pPixmap) { return dixLookupPrivate(&pPixmap->devPrivates, impedGetPixmapPrivKey()); } static inline impedGCPrivPtr impedGetGC(GCPtr pGC) { return dixLookupPrivate(&pGC->devPrivates, impedGetGCPrivKey()); } static inline impedGCPrivPtr impedGetPict(PicturePtr pPicture) { return dixLookupPrivate(&pPicture->devPrivates, impedGetPictPrivKey()); } #define impedWindowEnabled(pWin) \ RegionNotEmpty(&(pWin)->drawable.pScreen->root->borderClip) #define impedDrawableEnabled(pDrawable) \ ((pDrawable)->type == DRAWABLE_PIXMAP ? \ TRUE : impedWindowEnabled((WindowPtr) pDrawable)) static inline void impedGetDrawableDeltas(DrawablePtr pDrawable, PixmapPtr pPixmap, int *x_off, int *y_off) { *x_off = pDrawable->x; *y_off = pDrawable->y; #ifdef COMPOSITE if (pDrawable->type == DRAWABLE_WINDOW) { *x_off -= pPixmap->screen_x; *y_off -= pPixmap->screen_x; } #endif } extern _X_EXPORT void impedSetGCOps(GCPtr pGC); extern _X_EXPORT void impedCopyNtoN (DrawablePtr pSrcDrawable, DrawablePtr pDstDrawable, GCPtr pGC, BoxPtr pbox, int nbox, int dx, int dy, Bool reverse, Bool upsidedown, Pixel bitplane, void *closure); extern _X_EXPORT Bool impedCreateGC(GCPtr pGC); extern _X_EXPORT void impedScreenSetPixmapSize(ScreenPtr pScreen); extern _X_EXPORT void impedAttachDrvScreen(ScreenPtr pScreen, DrvScreenPtr pDrvScreen); extern _X_EXPORT Bool impedSetupScreen(int index, ScreenPtr pScreen); extern _X_EXPORT Bool impedFinishScreenInit(ScreenPtr pScreen, pointer pbits, int xsize, int ysize, int dpix, int dpiy, int width, int bpp); extern _X_EXPORT void impedInit(void); #endif