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