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