deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * Copyright © 1998 Keith Packard
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * Permission to use, copy, modify, distribute, and sell this software and its
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * documentation for any purpose is hereby granted without fee, provided that
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * the above copyright notice appear in all copies and that both that
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * copyright notice and this permission notice appear in supporting
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * documentation, and that the name of Keith Packard not be used in
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * advertising or publicity pertaining to distribution of the software without
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * specific, written prior permission. Keith Packard makes no
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * representations about the suitability of this software for any purpose. It
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * is provided "as is" without express or implied warranty.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * PERFORMANCE OF THIS SOFTWARE.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * This single define controls the basic size of data manipulated
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * by this software; it must be log2(sizeof (FbBits) * 8)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/* whether to bother to include 24bpp support */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * Unless otherwise instructed, fb includes code to advertise 24bpp
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * windows with 32bpp image format for application compatibility
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define FB_STIP_ODDSTRIDE(s) (((s) & (FB_MASK >> FB_STIP_SHIFT)) != 0)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define FB_STIP_ODDPTR(p) ((((long) (p)) & (FB_MASK >> 3)) != 0)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define FbStipStrideToBitsStride(s) (((s) >> (FB_SHIFT - FB_STIP_SHIFT)))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define FbBitsStrideToStipStride(s) (((s) << (FB_SHIFT - FB_STIP_SHIFT)))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define FbFullMask(n) ((n) == FB_UNIT ? FB_ALLONES : ((((FbBits) 1) << n) - 1))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync defined(__s390x__) || \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync defined (__powerpc64__) || \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef unsigned long FbBits;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef unsigned long long FbBits;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern void fbSetBits (FbStip *bits, int stride, FbStip data);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/* #define FbLeftBits(x,n) ((x) & ((((FbBits) 1) << (n)) - 1)) */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define FbLeftStipBits(x,n) ((x) & ((((FbStip) 1) << (n)) - 1))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define FbStipMoveLsb(x,s,n) (FbStipRight (x,(s)-(n)))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/* #define FbLeftBits(x,n) ((x) >> (FB_UNIT - (n))) */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define FbLeftStipBits(x,n) ((x) >> (FB_STIP_UNIT - (n)))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define FbRotLeft(x,n) FbScrLeft(x,n) | (n ? FbScrRight(x,FB_UNIT-n) : 0)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define FbRotRight(x,n) FbScrRight(x,n) | (n ? FbScrLeft(x,FB_UNIT-n) : 0)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define FbRotStipLeft(x,n) FbStipLeft(x,n) | (n ? FbStipRight(x,FB_STIP_UNIT-n) : 0)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define FbRotStipRight(x,n) FbStipRight(x,n) | (n ? FbStipLeft(x,FB_STIP_UNIT-n) : 0)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define FbRightMask(x) ( ((FB_UNIT - (x)) & FB_MASK) ? \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync FbScrLeft(FB_ALLONES,(FB_UNIT - (x)) & FB_MASK) : 0)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define FbLeftStipMask(x) ( ((x) & FB_STIP_MASK) ? \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync FbStipRight(FB_STIP_ALLONES,(x) & FB_STIP_MASK) : 0)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define FbRightStipMask(x) ( ((FB_STIP_UNIT - (x)) & FB_STIP_MASK) ? \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync FbScrLeft(FB_STIP_ALLONES,(FB_STIP_UNIT - (x)) & FB_STIP_MASK) : 0)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define FbBitsMask(x,w) (FbScrRight(FB_ALLONES,(x) & FB_MASK) & \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync FbScrLeft(FB_ALLONES,(FB_UNIT - ((x) + (w))) & FB_MASK))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define FbStipMask(x,w) (FbStipRight(FB_STIP_ALLONES,(x) & FB_STIP_MASK) & \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync FbStipLeft(FB_STIP_ALLONES,(FB_STIP_UNIT - ((x)+(w))) & FB_STIP_MASK))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync r = FbRightMask((x)+n); \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync if (n < 0) { \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define FbMaskBitsBytes(x,w,copy,l,lb,n,r,rb) FbMaskBits(x,w,l,n,r)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define FbPatternOffset(o,t) ((o) ^ (FbPatternOffsetBits & ~(sizeof (t) - 1)))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define FbPtrOffset(p,o,t) ((t *) ((CARD8 *) (p) + (o)))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define FbSelectPatternPart(xor,o,t) ((xor) >> (FbPatternOffset (o,t) << 3))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define FbStorePart(dst,off,t,xor) (*FbPtrOffset(dst,off,t) = \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define FbSelectPart(x,o,t) FbSelectPatternPart(x,o,t)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync r = FbRightMask((x)+n); \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync /* compute right byte length */ \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync /* compute left byte length */ \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync /* subtract out the portion painted by leftMask */ \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync if (n < 0) { \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync } else if (rb) { \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync case (sizeof (FbBits) - 7) | (1 << (FB_SHIFT - 3)): \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync case (sizeof (FbBits) - 7) | (2 << (FB_SHIFT - 3)): \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync case (sizeof (FbBits) - 7) | (3 << (FB_SHIFT - 3)): \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync case (sizeof (FbBits) - 7) | (4 << (FB_SHIFT - 3)): \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync case (sizeof (FbBits) - 7) | (5 << (FB_SHIFT - 3)): \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync case (sizeof (FbBits) - 7) | (6 << (FB_SHIFT - 3)): \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync case (sizeof (FbBits) - 6) | (1 << (FB_SHIFT - 3)): \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync case (sizeof (FbBits) - 6) | (2 << (FB_SHIFT - 3)): \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync case (sizeof (FbBits) - 6) | (3 << (FB_SHIFT - 3)): \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync case (sizeof (FbBits) - 6) | (4 << (FB_SHIFT - 3)): \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync case (sizeof (FbBits) - 6) | (5 << (FB_SHIFT - 3)): \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync case (sizeof (FbBits) - 5) | (1 << (FB_SHIFT - 3)): \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync case (sizeof (FbBits) - 5) | (2 << (FB_SHIFT - 3)): \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync case (sizeof (FbBits) - 5) | (3 << (FB_SHIFT - 3)): \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync case (sizeof (FbBits) - 5) | (4 << (FB_SHIFT - 3)): \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync case (sizeof (FbBits) - 4) | (1 << (FB_SHIFT - 3)): \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync case (sizeof (FbBits) - 4) | (2 << (FB_SHIFT - 3)): \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync case (sizeof (FbBits) - 4) | (3 << (FB_SHIFT - 3)): \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync switch (lb) { \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync case (sizeof (FbBits) - 3) | (1 << (FB_SHIFT - 3)): \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync case (sizeof (FbBits) - 3) | (2 << (FB_SHIFT - 3)): \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync case (sizeof (FbBits) - 2) | (1 << (FB_SHIFT - 3)): \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync switch (rb) { \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync if (n < 0) { \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * These macros are used to transparently stipple
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * in copy mode; the expected usage is with 'n' constant
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * so all of the conditional parts collapse into a minimal
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * sequence of partial word writes
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * 'n' is the bytemask of which bytes to store, 'a' is the address
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * of the FbBits base unit, 'o' is the offset within that unit
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * The term "lane" comes from the hardware term "byte-lane" which
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define FbLaneCase8(n,a,o) ((n) == 0x0ff ? (*(FbBits *) ((a)+(o)) = fgxor) : \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define FbLaneCase(n,a) FbLaneCase8(n,(CARD8 *) (a),0)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define FbLaneCase(n,a) FbLaneCase4(n,(CARD8 *) (a),0)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/* Rotate a filled pixel value to the specified alignement */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define FbRot24(p,b) (FbScrRight(p,b) | FbScrLeft(p,24-(b)))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define FbRot24Stip(p,b) (FbStipRight(p,b) | FbStipLeft(p,24-(b)))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/* step a filled pixel value to the next/previous FB_UNIT alignment */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define FbNext24Stip(p) (FbRot24(p,(24-FB_STIP_UNIT%24)))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define FbPrev24Stip(p) (FbRot24(p,FB_STIP_UNIT%24))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/* step a rotation value to the next/previous rotation value */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define FbNext24RotStip(r) ((r) == 0 ? 16 : (r) - 8)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define FbPrev24RotStip(r) ((r) == 16 ? 0 : (r) + 8)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/* Whether 24-bit specific code is needed for this filled pixel value */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/* Macros for dealing with dashing */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define FbDashInit(pGC,pPriv,dashOffset,dashlen,even) { \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/* as numInDashList is always even, this case can skip a test */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync if (!--(dashlen)) { \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/* XXX fb*PrivateIndex should be static, but it breaks the ABI */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern int fbGetGCPrivateIndex(void);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern int fbGetWinPrivateIndex(void);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync# define FB_OLD_MISCREENINIT /* miScreenInit requires 14 args, not 13 */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern int fbGetScreenPrivateIndex(void);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/* private field of a screen */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef struct {
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned char win32bpp; /* window bpp for 32-bpp images */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned char pix32bpp; /* pixmap bpp for 32-bpp images */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define fbGetScreenPrivate(pScreen) ((FbScreenPrivPtr) \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync (pScreen)->devPrivates[fbGetScreenPrivateIndex()].ptr)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/* private field of GC */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef struct {
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned int dashLength; /* total of all dash elements */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned char oneRect; /* clip list is single rectangle */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define fbGetCompositeClip(pGC) (fbGetGCPrivate(pGC)->pCompositeClip)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define fbGetExpose(pGC) (fbGetGCPrivate(pGC)->fExpose)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define fbGetFreeCompClip(pGC) (fbGetGCPrivate(pGC)->freeCompClip)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define fbGetRotatedPixmap(pGC) (fbGetGCPrivate(pGC)->pRotatedPixmap)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define fbGetCompositeClip(pGC) ((pGC)->pCompositeClip)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define fbGetFreeCompClip(pGC) ((pGC)->freeCompClip)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define fbGetRotatedPixmap(pGC) ((pGC)->pRotatedPixmap)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define fbGetScreenPixmap(s) ((PixmapPtr) (s)->devPrivate)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define fbGetWindowPixmap(d) fbGetScreenPixmap(((DrawablePtr) (d))->pScreen)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ((WindowPtr) (pWin))->devPrivates[fbGetWinPrivateIndex()].ptr)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define __fbPixOffXWin(pPix) (__fbPixDrawableX(pPix) - (pPix)->screen_x)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define __fbPixOffYWin(pPix) (__fbPixDrawableY(pPix) - (pPix)->screen_y)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define __fbPixOffXWin(pPix) (__fbPixDrawableX(pPix))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define __fbPixOffYWin(pPix) (__fbPixDrawableY(pPix))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define __fbPixOffXPix(pPix) (__fbPixDrawableX(pPix))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define __fbPixOffYPix(pPix) (__fbPixDrawableY(pPix))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define fbGetDrawable(pDrawable, pointer, stride, bpp, xoff, yoff) { \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync (stride) = ((int) _pPix->devKind) / sizeof (FbBits); (void)(stride); \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync (bpp) = _pPix->drawable.bitsPerPixel; (void)(bpp); \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define fbGetStipDrawable(pDrawable, pointer, stride, bpp, xoff, yoff) { \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync (stride) = ((int) _pPix->devKind) / sizeof (FbStip); (void)(stride); \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync (bpp) = _pPix->drawable.bitsPerPixel; (void)(bpp); \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * XFree86 empties the root BorderClip when the VT is inactive,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * here's a macro which uses that to disable GetImage and GetSpans
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync &WindowTable[(pWin)->drawable.pScreen->myNum]->borderClip)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ((1 << PixmapWidthPaddingInfo[d].padBytesLog2) * 8 / \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * Accelerated tiles are power of 2 width <= FB_UNIT
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define FbEvenTile(w) ((w) <= FB_UNIT && FbPowerOfTwo(w))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * Accelerated stipples are power of 2 width and <= FB_UNIT/dstBpp
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * with dstBpp a power of 2 as well
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define FbEvenStip(w,bpp) ((w) * (bpp) <= FB_UNIT && FbPowerOfTwo(w) && FbPowerOfTwo(bpp))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned int format,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned long planeMask,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncfb24_32ReformatTile(PixmapPtr pOldTile, int bitsPerPixel);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncfbAllocatePrivates(ScreenPtr pScreen, int *pGCIndex);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync FbStride srcStride, /* in FbStip units, not FbBits units */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync FbStride dstStride, /* in FbStip units, not FbBits units */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync FbStride srcStride, /* FbStip units per scanline */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync FbStride dstStride, /* FbBits units per scanline */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncfbListInstalledColormaps(ScreenPtr pScreen, Colormap *pmaps);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned short *pgreen,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned short *pblue,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncfbSetVisualTypes (int depth, int visuals, int bitsPerRGB);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncfbSetVisualTypesAndMasks (int depth, int visuals, int bitsPerRGB,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned long sizes,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef void (*fbCopyProc) (DrawablePtr pSrcDrawable,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned long bitplane);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncfbValidateGC(GCPtr pGC, unsigned long changes, DrawablePtr pDrawable);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned int nglyph,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned int nglyph,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned int format,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned long planeMask,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncfbCreatePixmapBpp (ScreenPtr pScreen, int width, int height, int depth, int bpp);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncfbCreatePixmap (ScreenPtr pScreen, int width, int height, int depth);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync_fbSetWindowPixmap (WindowPtr pWindow, PixmapPtr pPixmap);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncFbBres fbBresSolid, fbBresDash, fbBresFill, fbBresFillDash;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncfbReduceRasterOp (int rop, FbBits fg, FbBits pm, FbBits *andp, FbBits *xorp);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncfbChangeWindowAttributes(WindowPtr pWin, unsigned long mask);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncfbPaintWindow(WindowPtr pWin, RegionPtr pRegion, int what);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#endif /* _FB_H_ */