xf86VGAarbiterPriv.h revision 65fea56f17cd614bc8908264df980a62e1931468
65fea56f17cd614bc8908264df980a62e1931468vboxsync * Copyright (c) 2009 Tiago Vignatti
65fea56f17cd614bc8908264df980a62e1931468vboxsync * Permission is hereby granted, free of charge, to any person
65fea56f17cd614bc8908264df980a62e1931468vboxsync * obtaining a copy of this software and associated documentation
65fea56f17cd614bc8908264df980a62e1931468vboxsync * files (the "Software"), to deal in the Software without
65fea56f17cd614bc8908264df980a62e1931468vboxsync * restriction, including without limitation the rights to use,
65fea56f17cd614bc8908264df980a62e1931468vboxsync * copy, modify, merge, publish, distribute, sublicense, and/or sell
65fea56f17cd614bc8908264df980a62e1931468vboxsync * copies of the Software, and to permit persons to whom the
65fea56f17cd614bc8908264df980a62e1931468vboxsync * Software is furnished to do so, subject to the following
65fea56f17cd614bc8908264df980a62e1931468vboxsync * conditions:
65fea56f17cd614bc8908264df980a62e1931468vboxsync * The above copyright notice and this permission notice shall be
65fea56f17cd614bc8908264df980a62e1931468vboxsync * included in all copies or substantial portions of the Software.
65fea56f17cd614bc8908264df980a62e1931468vboxsync * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
65fea56f17cd614bc8908264df980a62e1931468vboxsync * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
65fea56f17cd614bc8908264df980a62e1931468vboxsync * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
65fea56f17cd614bc8908264df980a62e1931468vboxsync * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
65fea56f17cd614bc8908264df980a62e1931468vboxsync * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
65fea56f17cd614bc8908264df980a62e1931468vboxsync * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
65fea56f17cd614bc8908264df980a62e1931468vboxsync * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
65fea56f17cd614bc8908264df980a62e1931468vboxsync * OTHER DEALINGS IN THE SOFTWARE.
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define WRAP_SCREEN(x,y) {pScreenPriv->x = pScreen->x; pScreen->x = y;}
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define UNWRAP_SCREEN(x) pScreen->x = pScreenPriv->x
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define SCREEN_PROLOG(x) pScreen->x = ((VGAarbiterScreenPtr) \
65fea56f17cd614bc8908264df980a62e1931468vboxsync dixLookupPrivate(&(pScreen)->devPrivates, VGAarbiterScreenKey))->x
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define WRAP_PICT(x,y) if (ps) {pScreenPriv->x = ps->x;\
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define UNWRAP_PICT(x) if (ps) {ps->x = pScreenPriv->x;}
65fea56f17cd614bc8908264df980a62e1931468vboxsync ((VGAarbiterScreenPtr)dixLookupPrivate(&(pScreen)->devPrivates, \
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define PICTURE_EPILOGUE(field, wrap) ps->field = wrap
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define WRAP_SCREEN_INFO(x,y) do {pScreenPriv->x = pScrn->x; pScrn->x = y;} while(0)
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define UNWRAP_SCREEN_INFO(x) pScrn->x = pScreenPriv->x
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define SPRITE_PROLOG miPointerScreenPtr PointPriv = \
65fea56f17cd614bc8908264df980a62e1931468vboxsync (miPointerScreenPtr)dixLookupPrivate(&pScreen->devPrivates, \
65fea56f17cd614bc8908264df980a62e1931468vboxsync miPointerScreenKey); VGAarbiterScreenPtr pScreenPriv = \
65fea56f17cd614bc8908264df980a62e1931468vboxsync ((VGAarbiterScreenPtr)dixLookupPrivate(&(pScreen)->devPrivates, \
65fea56f17cd614bc8908264df980a62e1931468vboxsync VGAarbiterScreenKey)); PointPriv->spriteFuncs = pScreenPriv->miSprite;
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define SPRITE_EPILOG pScreenPriv->miSprite = PointPriv->spriteFuncs;\
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define WRAP_SPRITE do { pScreenPriv->miSprite = PointPriv->spriteFuncs;\
65fea56f17cd614bc8908264df980a62e1931468vboxsync } while (0)
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define UNWRAP_SPRITE PointPriv->spriteFuncs = pScreenPriv->miSprite
65fea56f17cd614bc8908264df980a62e1931468vboxsync pGCPriv->wrapFuncs = (x)->funcs; (x)->ops = &VGAarbiterGCOps;\
65fea56f17cd614bc8908264df980a62e1931468vboxsync (VGAarbiterGCPtr)dixLookupPrivate(&(x)->devPrivates, VGAarbiterGCKey);\
65fea56f17cd614bc8908264df980a62e1931468vboxsync (x)->ops = pGCPriv->wrapOps; (x)->funcs = pGCPriv->wrapFuncs;
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic inline void
65fea56f17cd614bc8908264df980a62e1931468vboxsync pci_device_vgaarb_set_target(xf86ScreenToScrn(pScreen)->vgaDev);
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic inline void
65fea56f17cd614bc8908264df980a62e1931468vboxsynctypedef struct _VGAarbiterScreen {
65fea56f17cd614bc8908264df980a62e1931468vboxsync /* Colormap */
65fea56f17cd614bc8908264df980a62e1931468vboxsync /* Cursor */
65fea56f17cd614bc8908264df980a62e1931468vboxsynctypedef struct _VGAarbiterGC {
65fea56f17cd614bc8908264df980a62e1931468vboxsync/* Screen funcs */
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic void VGAarbiterBlockHandler(ScreenPtr pScreen, pointer pTimeout,
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic void VGAarbiterWakeupHandler(ScreenPtr pScreen,
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic Bool VGAarbiterCloseScreen(ScreenPtr pScreen);
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic void VGAarbiterGetImage(DrawablePtr pDrawable, int sx, int sy, int w,
65fea56f17cd614bc8908264df980a62e1931468vboxsync int h, unsigned int format,
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic void VGAarbiterGetSpans(DrawablePtr pDrawable, int wMax, DDXPointPtr ppt,
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic void VGAarbiterSourceValidate(DrawablePtr pDrawable, int x, int y,
65fea56f17cd614bc8908264df980a62e1931468vboxsync unsigned int subWindowMode);
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic void VGAarbiterCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg,
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic void VGAarbiterClearToBackground(WindowPtr pWin, int x, int y, int w,
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic PixmapPtr VGAarbiterCreatePixmap(ScreenPtr pScreen, int w, int h,
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic Bool VGAarbiterSaveScreen(ScreenPtr pScreen, Bool unblank);
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic void VGAarbiterStoreColors(ColormapPtr pmap, int ndef, xColorItem
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic void VGAarbiterRecolorCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic Bool VGAarbiterRealizeCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic Bool VGAarbiterUnrealizeCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic Bool VGAarbiterDisplayCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic Bool VGAarbiterSetCursorPosition(DeviceIntPtr pDev, ScreenPtr
65fea56f17cd614bc8908264df980a62e1931468vboxsync pScreen, int x, int y,
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic void VGAarbiterAdjustFrame(ScrnInfoPtr pScrn, int x, int y);
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic Bool VGAarbiterSwitchMode(ScrnInfoPtr pScrn, DisplayModePtr mode);
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic void VGAarbiterFreeScreen(ScrnInfoPtr pScrn);
65fea56f17cd614bc8908264df980a62e1931468vboxsync/* GC funcs */
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic void VGAarbiterValidateGC(GCPtr pGC, unsigned long changes,
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic void VGAarbiterChangeGC(GCPtr pGC, unsigned long mask);
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic void VGAarbiterCopyGC(GCPtr pGCSrc, unsigned long mask, GCPtr pGCDst);
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic void VGAarbiterChangeClip(GCPtr pGC, int type, pointer pvalue,
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic void VGAarbiterCopyClip(GCPtr pgcDst, GCPtr pgcSrc);
65fea56f17cd614bc8908264df980a62e1931468vboxsync/* GC ops */
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic void VGAarbiterFillSpans(DrawablePtr pDraw, GC * pGC, int nInit,
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic void VGAarbiterSetSpans(DrawablePtr pDraw, GCPtr pGC, char *pcharsrc,
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic void VGAarbiterPutImage(DrawablePtr pDraw, GCPtr pGC, int depth, int x,
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic RegionPtr VGAarbiterCopyArea(DrawablePtr pSrc, DrawablePtr pDst,
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic RegionPtr VGAarbiterCopyPlane(DrawablePtr pSrc, DrawablePtr pDst,
65fea56f17cd614bc8908264df980a62e1931468vboxsync unsigned long bitPlane);
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic void VGAarbiterPolyPoint(DrawablePtr pDraw, GCPtr pGC, int mode, int npt,
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic void VGAarbiterPolylines(DrawablePtr pDraw, GCPtr pGC, int mode, int npt,
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic void VGAarbiterPolySegment(DrawablePtr pDraw, GCPtr pGC, int nseg,
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic void VGAarbiterPolyRectangle(DrawablePtr pDraw, GCPtr pGC,
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic void VGAarbiterPolyArc(DrawablePtr pDraw, GCPtr pGC, int narcs,
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic void VGAarbiterFillPolygon(DrawablePtr pDraw, GCPtr pGC, int shape,
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic void VGAarbiterPolyFillRect(DrawablePtr pDraw, GCPtr pGC, int nrectFill,
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic void VGAarbiterPolyFillArc(DrawablePtr pDraw, GCPtr pGC, int narcs,
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic int VGAarbiterPolyText8(DrawablePtr pDraw, GCPtr pGC, int x, int y,
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic int VGAarbiterPolyText16(DrawablePtr pDraw, GCPtr pGC, int x, int y,
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic void VGAarbiterImageText8(DrawablePtr pDraw, GCPtr pGC, int x, int y,
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic void VGAarbiterImageText16(DrawablePtr pDraw, GCPtr pGC, int x, int y,
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic void VGAarbiterImageGlyphBlt(DrawablePtr pDraw, GCPtr pGC, int xInit,
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic void VGAarbiterPolyGlyphBlt(DrawablePtr pDraw, GCPtr pGC, int xInit,
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic void VGAarbiterPushPixels(GCPtr pGC, PixmapPtr pBitMap, DrawablePtr
65fea56f17cd614bc8908264df980a62e1931468vboxsync/* miSpriteFuncs */
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic Bool VGAarbiterSpriteRealizeCursor(DeviceIntPtr pDev, ScreenPtr
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic Bool VGAarbiterSpriteUnrealizeCursor(DeviceIntPtr pDev, ScreenPtr
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic void VGAarbiterSpriteSetCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic void VGAarbiterSpriteMoveCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
65fea56f17cd614bc8908264df980a62e1931468vboxsync int x, int y);
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic Bool VGAarbiterDeviceCursorInitialize(DeviceIntPtr pDev,
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic void VGAarbiterDeviceCursorCleanup(DeviceIntPtr pDev, ScreenPtr pScreen);
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic void VGAarbiterComposite(CARD8 op, PicturePtr pSrc, PicturePtr pMask,
65fea56f17cd614bc8908264df980a62e1931468vboxsyncstatic void VGAarbiterGlyphs(CARD8 op, PicturePtr pSrc, PicturePtr pDst,