03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync/*
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * Copyright (c) 2009 Tiago Vignatti
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync *
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 *
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * The above copyright notice and this permission notice shall be
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * included in all copies or substantial portions of the Software.
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync *
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 *
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#ifdef HAVE_XORG_CONFIG_H
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#include <xorg-config.h>
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#endif
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#include "misc.h"
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#include "xf86.h"
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#include "xf86_OSproc.h"
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#include <X11/X.h>
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#include "colormapst.h"
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#include "scrnintstr.h"
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#include "screenint.h"
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#include "gcstruct.h"
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#include "pixmapstr.h"
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#include "pixmap.h"
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#include "windowstr.h"
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#include "window.h"
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#include "xf86str.h"
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#include "mipointer.h"
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#include "mipointrst.h"
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#include "picturestr.h"
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define WRAP_SCREEN(x,y) {pScreenPriv->x = pScreen->x; pScreen->x = y;}
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define UNWRAP_SCREEN(x) pScreen->x = pScreenPriv->x
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define SCREEN_PROLOG(x) pScreen->x = ((VGAarbiterScreenPtr) \
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync dixLookupPrivate(&(pScreen)->devPrivates, VGAarbiterScreenKey))->x
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define SCREEN_EPILOG(x,y) pScreen->x = y;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define WRAP_PICT(x,y) if (ps) {pScreenPriv->x = ps->x;\
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync ps->x = y;}
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define UNWRAP_PICT(x) if (ps) {ps->x = pScreenPriv->x;}
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define PICTURE_PROLOGUE(field) ps->field = \
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync ((VGAarbiterScreenPtr)dixLookupPrivate(&(pScreen)->devPrivates, \
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync VGAarbiterScreenKey))->field
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define PICTURE_EPILOGUE(field, wrap) ps->field = wrap
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define WRAP_SCREEN_INFO(x,y) do {pScreenPriv->x = pScrn->x; pScrn->x = y;} while(0)
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define UNWRAP_SCREEN_INFO(x) pScrn->x = pScreenPriv->x
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
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
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define SPRITE_EPILOG pScreenPriv->miSprite = PointPriv->spriteFuncs;\
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync PointPriv->spriteFuncs = &VGAarbiterSpriteFuncs;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define WRAP_SPRITE do { pScreenPriv->miSprite = PointPriv->spriteFuncs;\
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync PointPriv->spriteFuncs = &VGAarbiterSpriteFuncs; \
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync } while (0)
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define UNWRAP_SPRITE PointPriv->spriteFuncs = pScreenPriv->miSprite
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define GC_WRAP(x) pGCPriv->wrapOps = (x)->ops;\
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync pGCPriv->wrapFuncs = (x)->funcs; (x)->ops = &VGAarbiterGCOps;\
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync (x)->funcs = &VGAarbiterGCFuncs;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define GC_UNWRAP(x) VGAarbiterGCPtr pGCPriv = \
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync (VGAarbiterGCPtr)dixLookupPrivate(&(x)->devPrivates, VGAarbiterGCKey);\
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync (x)->ops = pGCPriv->wrapOps; (x)->funcs = pGCPriv->wrapFuncs;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic inline void
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncVGAGet(ScreenPtr pScreen)
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync{
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync pci_device_vgaarb_set_target(xf86ScreenToScrn(pScreen)->vgaDev);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync pci_device_vgaarb_lock();
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync}
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic inline void
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncVGAPut(void)
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync{
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync pci_device_vgaarb_unlock();
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync}
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsynctypedef struct _VGAarbiterScreen {
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync CreateGCProcPtr CreateGC;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync CloseScreenProcPtr CloseScreen;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync ScreenBlockHandlerProcPtr BlockHandler;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync ScreenWakeupHandlerProcPtr WakeupHandler;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GetImageProcPtr GetImage;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GetSpansProcPtr GetSpans;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync SourceValidateProcPtr SourceValidate;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync CopyWindowProcPtr CopyWindow;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync ClearToBackgroundProcPtr ClearToBackground;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync CreatePixmapProcPtr CreatePixmap;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync SaveScreenProcPtr SaveScreen;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync /* Colormap */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync StoreColorsProcPtr StoreColors;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync /* Cursor */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync DisplayCursorProcPtr DisplayCursor;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync RealizeCursorProcPtr RealizeCursor;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync UnrealizeCursorProcPtr UnrealizeCursor;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync RecolorCursorProcPtr RecolorCursor;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync SetCursorPositionProcPtr SetCursorPosition;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync void (*AdjustFrame) (ScrnInfoPtr, int, int);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync Bool (*SwitchMode) (ScrnInfoPtr, DisplayModePtr);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync Bool (*EnterVT) (ScrnInfoPtr);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync void (*LeaveVT) (ScrnInfoPtr);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync void (*FreeScreen) (ScrnInfoPtr);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync miPointerSpriteFuncPtr miSprite;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync CompositeProcPtr Composite;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GlyphsProcPtr Glyphs;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync CompositeRectsProcPtr CompositeRects;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync} VGAarbiterScreenRec, *VGAarbiterScreenPtr;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsynctypedef struct _VGAarbiterGC {
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GCOps *wrapOps;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GCFuncs *wrapFuncs;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync} VGAarbiterGCRec, *VGAarbiterGCPtr;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync/* Screen funcs */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterBlockHandler(ScreenPtr pScreen, pointer pTimeout,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync pointer pReadmask);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterWakeupHandler(ScreenPtr pScreen,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync unsigned long result, pointer pReadmask);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic Bool VGAarbiterCloseScreen(ScreenPtr pScreen);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterGetImage(DrawablePtr pDrawable, int sx, int sy, int w,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int h, unsigned int format,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync unsigned long planemask, char *pdstLine);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterGetSpans(DrawablePtr pDrawable, int wMax, DDXPointPtr ppt,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int *pwidth, int nspans, char *pdstStart);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterSourceValidate(DrawablePtr pDrawable, int x, int y,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int width, int height,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync unsigned int subWindowMode);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync RegionPtr prgnSrc);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterClearToBackground(WindowPtr pWin, int x, int y, int w,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int h, Bool generateExposures);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic PixmapPtr VGAarbiterCreatePixmap(ScreenPtr pScreen, int w, int h,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int depth, unsigned int usage_hint);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic Bool VGAarbiterCreateGC(GCPtr pGC);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic Bool VGAarbiterSaveScreen(ScreenPtr pScreen, Bool unblank);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterStoreColors(ColormapPtr pmap, int ndef, xColorItem
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * pdefs);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterRecolorCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync CursorPtr pCurs, Bool displayed);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic Bool VGAarbiterRealizeCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync CursorPtr pCursor);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic Bool VGAarbiterUnrealizeCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync CursorPtr pCursor);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic Bool VGAarbiterDisplayCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync CursorPtr pCursor);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic Bool VGAarbiterSetCursorPosition(DeviceIntPtr pDev, ScreenPtr
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync pScreen, int x, int y,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync Bool generateEvent);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterAdjustFrame(ScrnInfoPtr pScrn, int x, int y);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic Bool VGAarbiterSwitchMode(ScrnInfoPtr pScrn, DisplayModePtr mode);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic Bool VGAarbiterEnterVT(ScrnInfoPtr pScrn);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterLeaveVT(ScrnInfoPtr pScrn);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterFreeScreen(ScrnInfoPtr pScrn);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync/* GC funcs */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterValidateGC(GCPtr pGC, unsigned long changes,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync DrawablePtr pDraw);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterChangeGC(GCPtr pGC, unsigned long mask);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterCopyGC(GCPtr pGCSrc, unsigned long mask, GCPtr pGCDst);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterDestroyGC(GCPtr pGC);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterChangeClip(GCPtr pGC, int type, pointer pvalue,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int nrects);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterDestroyClip(GCPtr pGC);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterCopyClip(GCPtr pgcDst, GCPtr pgcSrc);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync/* GC ops */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterFillSpans(DrawablePtr pDraw, GC * pGC, int nInit,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync DDXPointPtr pptInit, int *pwidthInit,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int fSorted);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterSetSpans(DrawablePtr pDraw, GCPtr pGC, char *pcharsrc,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync register DDXPointPtr ppt, int *pwidth,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int nspans, int fSorted);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterPutImage(DrawablePtr pDraw, GCPtr pGC, int depth, int x,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int y, int w, int h, int leftPad, int format,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync char *pImage);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic RegionPtr VGAarbiterCopyArea(DrawablePtr pSrc, DrawablePtr pDst,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GC * pGC, int srcx, int srcy, int width,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int height, int dstx, int dsty);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic RegionPtr VGAarbiterCopyPlane(DrawablePtr pSrc, DrawablePtr pDst,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GCPtr pGC, int srcx, int srcy, int width,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int height, int dstx, int dsty,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync unsigned long bitPlane);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterPolyPoint(DrawablePtr pDraw, GCPtr pGC, int mode, int npt,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync xPoint * pptInit);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterPolylines(DrawablePtr pDraw, GCPtr pGC, int mode, int npt,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync DDXPointPtr pptInit);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterPolySegment(DrawablePtr pDraw, GCPtr pGC, int nseg,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync xSegment * pSeg);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterPolyRectangle(DrawablePtr pDraw, GCPtr pGC,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int nRectsInit, xRectangle *pRectsInit);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterPolyArc(DrawablePtr pDraw, GCPtr pGC, int narcs,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync xArc * parcs);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterFillPolygon(DrawablePtr pDraw, GCPtr pGC, int shape,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int mode, int count, DDXPointPtr ptsIn);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterPolyFillRect(DrawablePtr pDraw, GCPtr pGC, int nrectFill,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync xRectangle *prectInit);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterPolyFillArc(DrawablePtr pDraw, GCPtr pGC, int narcs,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync xArc * parcs);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic int VGAarbiterPolyText8(DrawablePtr pDraw, GCPtr pGC, int x, int y,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int count, char *chars);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic int VGAarbiterPolyText16(DrawablePtr pDraw, GCPtr pGC, int x, int y,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int count, unsigned short *chars);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterImageText8(DrawablePtr pDraw, GCPtr pGC, int x, int y,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int count, char *chars);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterImageText16(DrawablePtr pDraw, GCPtr pGC, int x, int y,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int count, unsigned short *chars);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterImageGlyphBlt(DrawablePtr pDraw, GCPtr pGC, int xInit,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int yInit, unsigned int nglyph,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync CharInfoPtr * ppci, pointer pglyphBase);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterPolyGlyphBlt(DrawablePtr pDraw, GCPtr pGC, int xInit,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int yInit, unsigned int nglyph,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync CharInfoPtr * ppci, pointer pglyphBase);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterPushPixels(GCPtr pGC, PixmapPtr pBitMap, DrawablePtr
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync pDraw, int dx, int dy, int xOrg, int yOrg);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync/* miSpriteFuncs */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic Bool VGAarbiterSpriteRealizeCursor(DeviceIntPtr pDev, ScreenPtr
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync pScreen, CursorPtr pCur);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic Bool VGAarbiterSpriteUnrealizeCursor(DeviceIntPtr pDev, ScreenPtr
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync pScreen, CursorPtr pCur);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterSpriteSetCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync CursorPtr pCur, int x, int y);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterSpriteMoveCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int x, int y);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic Bool VGAarbiterDeviceCursorInitialize(DeviceIntPtr pDev,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync ScreenPtr pScreen);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterDeviceCursorCleanup(DeviceIntPtr pDev, ScreenPtr pScreen);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterComposite(CARD8 op, PicturePtr pSrc, PicturePtr pMask,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync PicturePtr pDst, INT16 xSrc, INT16 ySrc,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync INT16 xMask, INT16 yMask, INT16 xDst,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync INT16 yDst, CARD16 width, CARD16 height);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterGlyphs(CARD8 op, PicturePtr pSrc, PicturePtr pDst,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int nlist, GlyphListPtr list, GlyphPtr * glyphs);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstatic void VGAarbiterCompositeRects(CARD8 op, PicturePtr pDst,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync xRenderColor * color, int nRect,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync xRectangle *rects);