summaryrefslogtreecommitdiff
path: root/fb/fbpict.h
diff options
context:
space:
mode:
Diffstat (limited to 'fb/fbpict.h')
-rw-r--r--fb/fbpict.h976
1 files changed, 976 insertions, 0 deletions
diff --git a/fb/fbpict.h b/fb/fbpict.h
new file mode 100644
index 000000000..fd911b078
--- /dev/null
+++ b/fb/fbpict.h
@@ -0,0 +1,976 @@
+/*
+ * $XFree86: xc/programs/Xserver/fb/fbpict.h,v 1.11 2002/09/26 02:56:48 keithp Exp $
+ *
+ * Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#ifndef _FBPICT_H_
+#define _FBPICT_H_
+
+#define FbIntMult(a,b,t) ( (t) = (a) * (b) + 0x80, ( ( ( (t)>>8 ) + (t) )>>8 ) )
+#define FbIntDiv(a,b) (((CARD16) (a) * 255) / (b))
+
+#define FbGet8(v,i) ((CARD16) (CARD8) ((v) >> i))
+
+/*
+ * There are two ways of handling alpha -- either as a single unified value or
+ * a separate value for each component, hence each macro must have two
+ * versions. The unified alpha version has a 'U' at the end of the name,
+ * the component version has a 'C'. Similarly, functions which deal with
+ * this difference will have two versions using the same convention.
+ */
+
+#define FbOverU(x,y,i,a,t) ((t) = FbIntMult(FbGet8(y,i),(a),(t)) + FbGet8(x,i),\
+ (CARD32) ((CARD8) ((t) | (0 - ((t) >> 8)))) << (i))
+
+#define FbOverC(x,y,i,a,t) ((t) = FbIntMult(FbGet8(y,i),FbGet8(a,i),(t)) + FbGet8(x,i),\
+ (CARD32) ((CARD8) ((t) | (0 - ((t) >> 8)))) << (i))
+
+#define FbInU(x,i,a,t) ((CARD32) FbIntMult(FbGet8(x,i),(a),(t)) << (i))
+
+#define FbInC(x,i,a,t) ((CARD32) FbIntMult(FbGet8(x,i),FbGet8(a,i),(t)) << (i))
+
+#define FbGen(x,y,i,ax,ay,t,u,v) ((t) = (FbIntMult(FbGet8(y,i),ay,(u)) + \
+ FbIntMult(FbGet8(x,i),ax,(v))),\
+ (CARD32) ((CARD8) ((t) | \
+ (0 - ((t) >> 8)))) << (i))
+
+#define FbAdd(x,y,i,t) ((t) = FbGet8(x,i) + FbGet8(y,i), \
+ (CARD32) ((CARD8) ((t) | (0 - ((t) >> 8)))) << (i))
+
+
+typedef void (*CompositeFunc) (CARD8 op,
+ PicturePtr pSrc,
+ PicturePtr pMask,
+ PicturePtr pDst,
+ INT16 xSrc,
+ INT16 ySrc,
+ INT16 xMask,
+ INT16 yMask,
+ INT16 xDst,
+ INT16 yDst,
+ CARD16 width,
+ CARD16 height);
+
+typedef struct _FbCompositeOperand FbCompositeOperand;
+
+typedef CARD32 (*FbCompositeFetch)(FbCompositeOperand *op);
+typedef void (*FbCompositeStore) (FbCompositeOperand *op, CARD32 value);
+
+typedef void (*FbCompositeStep) (FbCompositeOperand *op);
+typedef void (*FbCompositeSet) (FbCompositeOperand *op, int x, int y);
+
+struct _FbCompositeOperand {
+ union {
+ struct {
+ FbBits *top_line;
+ int left_offset;
+
+ int start_offset;
+ FbBits *line;
+ CARD32 offset;
+ FbStride stride;
+ int bpp;
+ } drawable;
+ struct {
+ int alpha_dx;
+ int alpha_dy;
+ } external;
+ struct {
+ int top_y;
+ int left_x;
+ int start_x;
+ int x;
+ int y;
+ PictTransformPtr transform;
+ int filter;
+ } transform;
+ } u;
+ FbCompositeFetch fetch;
+ FbCompositeFetch fetcha;
+ FbCompositeStore store;
+ FbCompositeStep over;
+ FbCompositeStep down;
+ FbCompositeSet set;
+ miIndexedPtr indexed;
+ RegionPtr clip;
+};
+
+typedef void (*FbCombineFunc) (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+/*
+ * indexed by op
+ */
+extern FbCombineFunc fbCombineFunc[];
+
+typedef struct _FbAccessMap {
+ CARD32 format;
+ FbCompositeFetch fetch;
+ FbCompositeFetch fetcha;
+ FbCompositeStore store;
+} FbAccessMap;
+
+/*
+ * search on format
+ */
+extern FbAccessMap fbAccessMap[];
+
+/* fbcompose.c */
+
+typedef struct _fbCompSrc {
+ CARD32 value;
+ CARD32 alpha;
+} FbCompSrc;
+
+/*
+ * All compositing operators *
+ */
+
+CARD32
+fbCombineMaskU (FbCompositeOperand *src,
+ FbCompositeOperand *msk);
+
+FbCompSrc
+fbCombineMaskC (FbCompositeOperand *src,
+ FbCompositeOperand *msk);
+
+CARD32
+fbCombineMaskValueC (FbCompositeOperand *src,
+ FbCompositeOperand *msk);
+
+CARD32
+fbCombineMaskAlphaU (FbCompositeOperand *src,
+ FbCompositeOperand *msk);
+
+CARD32
+fbCombineMaskAlphaC (FbCompositeOperand *src,
+ FbCompositeOperand *msk);
+
+
+#if 0
+CARD32
+FbCombineMask (FbCompositeOperand *src,
+ FbCompositeOperand *msk);
+#endif
+
+void
+fbCombineClear (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineSrcU (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineSrcC (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineDst (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineOverU (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineOverC (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineOverReverseU (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineOverReverseC (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineInU (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineInC (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineInReverseU (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineInReverseC (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineOutU (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineOutC (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineOutReverseU (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineOutReverseC (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineAtopU (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+
+void
+fbCombineAtopC (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineAtopReverseU (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineAtopReverseC (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineXorU (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineXorC (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+
+void
+fbCombineAddU (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineAddC (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineSaturateU (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineSaturateC (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+CARD8
+fbCombineDisjointOutPart (CARD8 a, CARD8 b);
+
+CARD8
+fbCombineDisjointInPart (CARD8 a, CARD8 b);
+
+void
+fbCombineDisjointGeneralU (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst,
+ CARD8 combine);
+
+void
+fbCombineDisjointGeneralC (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst,
+ CARD8 combine);
+
+void
+fbCombineDisjointOverU (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineDisjointOverC (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineDisjointOverReverseU (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineDisjointOverReverseC (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineDisjointInU (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineDisjointInC (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineDisjointInReverseU (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineDisjointInReverseC (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineDisjointOutU (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineDisjointOutC (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+void
+fbCombineDisjointOutReverseU (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineDisjointOutReverseC (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineDisjointAtopU (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineDisjointAtopC (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineDisjointAtopReverseU (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineDisjointAtopReverseC (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineDisjointXorU (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineDisjointXorC (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+CARD8
+fbCombineConjointOutPart (CARD8 a, CARD8 b);
+
+CARD8
+fbCombineConjointInPart (CARD8 a, CARD8 b);
+
+
+void
+fbCombineConjointGeneralU (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst,
+ CARD8 combine);
+
+void
+fbCombineConjointGeneralC (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst,
+ CARD8 combine);
+
+void
+fbCombineConjointOverU (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineConjointOverC (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+void
+fbCombineConjointOverReverseU (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineConjointOverReverseC (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineConjointInU (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineConjointInC (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineConjointInReverseU (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+
+void
+fbCombineConjointInReverseC (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineConjointOutU (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineConjointOutC (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineConjointOutReverseU (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineConjointOutReverseC (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineConjointAtopU (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineConjointAtopC (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineConjointAtopReverseU (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+void
+fbCombineConjointAtopReverseC (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineConjointXorU (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+void
+fbCombineConjointXorC (FbCompositeOperand *src,
+ FbCompositeOperand *msk,
+ FbCompositeOperand *dst);
+
+/*
+ * All fetch functions
+ */
+
+CARD32
+fbFetch_a8r8g8b8 (FbCompositeOperand *op);
+
+CARD32
+fbFetch_x8r8g8b8 (FbCompositeOperand *op);
+
+CARD32
+fbFetch_a8b8g8r8 (FbCompositeOperand *op);
+
+CARD32
+fbFetch_x8b8g8r8 (FbCompositeOperand *op);
+
+CARD32
+fbFetch_r8g8b8 (FbCompositeOperand *op);
+
+CARD32
+fbFetch_b8g8r8 (FbCompositeOperand *op);
+
+CARD32
+fbFetch_r5g6b5 (FbCompositeOperand *op);
+
+CARD32
+fbFetch_b5g6r5 (FbCompositeOperand *op);
+
+CARD32
+fbFetch_a1r5g5b5 (FbCompositeOperand *op);
+
+CARD32
+fbFetch_x1r5g5b5 (FbCompositeOperand *op);
+
+CARD32
+fbFetch_a1b5g5r5 (FbCompositeOperand *op);
+
+CARD32
+fbFetch_x1b5g5r5 (FbCompositeOperand *op);
+
+CARD32
+fbFetch_a4r4g4b4 (FbCompositeOperand *op);
+
+CARD32
+fbFetch_x4r4g4b4 (FbCompositeOperand *op);
+
+CARD32
+fbFetch_a4b4g4r4 (FbCompositeOperand *op);
+
+CARD32
+fbFetch_x4b4g4r4 (FbCompositeOperand *op);
+
+CARD32
+fbFetch_a8 (FbCompositeOperand *op);
+
+CARD32
+fbFetcha_a8 (FbCompositeOperand *op);
+
+CARD32
+fbFetch_r3g3b2 (FbCompositeOperand *op);
+
+CARD32
+fbFetch_b2g3r3 (FbCompositeOperand *op);
+
+CARD32
+fbFetch_a2r2g2b2 (FbCompositeOperand *op);
+
+CARD32
+fbFetch_a2b2g2r2 (FbCompositeOperand *op);
+
+CARD32
+fbFetch_c8 (FbCompositeOperand *op);
+
+CARD32
+fbFetch_a4 (FbCompositeOperand *op);
+
+CARD32
+fbFetcha_a4 (FbCompositeOperand *op);
+
+CARD32
+fbFetch_r1g2b1 (FbCompositeOperand *op);
+
+CARD32
+fbFetch_b1g2r1 (FbCompositeOperand *op);
+
+CARD32
+fbFetch_a1r1g1b1 (FbCompositeOperand *op);
+
+CARD32
+fbFetch_a1b1g1r1 (FbCompositeOperand *op);
+
+CARD32
+fbFetch_c4 (FbCompositeOperand *op);
+
+CARD32
+fbFetch_a1 (FbCompositeOperand *op);
+
+CARD32
+fbFetcha_a1 (FbCompositeOperand *op);
+
+CARD32
+fbFetch_g1 (FbCompositeOperand *op);
+
+void
+fbStore_a8r8g8b8 (FbCompositeOperand *op, CARD32 value);
+
+void
+fbStore_x8r8g8b8 (FbCompositeOperand *op, CARD32 value);
+
+void
+fbStore_a8b8g8r8 (FbCompositeOperand *op, CARD32 value);
+
+void
+fbStore_x8b8g8r8 (FbCompositeOperand *op, CARD32 value);
+
+void
+fbStore_r8g8b8 (FbCompositeOperand *op, CARD32 value);
+
+void
+fbStore_b8g8r8 (FbCompositeOperand *op, CARD32 value);
+
+void
+fbStore_r5g6b5 (FbCompositeOperand *op, CARD32 value);
+
+void
+fbStore_b5g6r5 (FbCompositeOperand *op, CARD32 value);
+
+void
+fbStore_a1r5g5b5 (FbCompositeOperand *op, CARD32 value);
+
+void
+fbStore_x1r5g5b5 (FbCompositeOperand *op, CARD32 value);
+
+void
+fbStore_a1b5g5r5 (FbCompositeOperand *op, CARD32 value);
+
+void
+fbStore_x1b5g5r5 (FbCompositeOperand *op, CARD32 value);
+
+void
+fbStore_a4r4g4b4 (FbCompositeOperand *op, CARD32 value);
+
+void
+fbStore_x4r4g4b4 (FbCompositeOperand *op, CARD32 value);
+
+void
+fbStore_a4b4g4r4 (FbCompositeOperand *op, CARD32 value);
+
+void
+fbStore_x4b4g4r4 (FbCompositeOperand *op, CARD32 value);
+
+void
+fbStore_a8 (FbCompositeOperand *op, CARD32 value);
+
+void
+fbStore_r3g3b2 (FbCompositeOperand *op, CARD32 value);
+
+void
+fbStore_b2g3r3 (FbCompositeOperand *op, CARD32 value);
+
+void
+fbStore_a2r2g2b2 (FbCompositeOperand *op, CARD32 value);
+
+void
+fbStore_c8 (FbCompositeOperand *op, CARD32 value);
+
+void
+fbStore_g8 (FbCompositeOperand *op, CARD32 value);
+
+
+void
+fbStore_a4 (FbCompositeOperand *op, CARD32 value);
+
+void
+fbStore_r1g2b1 (FbCompositeOperand *op, CARD32 value);
+
+void
+fbStore_b1g2r1 (FbCompositeOperand *op, CARD32 value);
+
+void
+fbStore_a1r1g1b1 (FbCompositeOperand *op, CARD32 value);
+
+void
+fbStore_a1b1g1r1 (FbCompositeOperand *op, CARD32 value);
+
+void
+fbStore_c4 (FbCompositeOperand *op, CARD32 value);
+
+void
+fbStore_g4 (FbCompositeOperand *op, CARD32 value);
+
+void
+fbStore_a1 (FbCompositeOperand *op, CARD32 value);
+
+void
+fbStore_g1 (FbCompositeOperand *op, CARD32 value);
+
+CARD32
+fbFetch_external (FbCompositeOperand *op);
+
+CARD32
+fbFetch_transform (FbCompositeOperand *op);
+
+CARD32
+fbFetcha_transform (FbCompositeOperand *op);
+
+CARD32
+fbFetcha_external (FbCompositeOperand *op);
+
+void
+fbStore_external (FbCompositeOperand *op, CARD32 value);
+
+Bool
+fbBuildOneCompositeOperand (PicturePtr pPict,
+ FbCompositeOperand *op,
+ INT16 x,
+ INT16 y);
+
+Bool
+fbBuildCompositeOperand (PicturePtr pPict,
+ FbCompositeOperand *op,
+ INT16 x,
+ INT16 y,
+ Bool transform,
+ Bool alpha);
+void
+fbCompositeGeneral (CARD8 op,
+ PicturePtr pSrc,
+ PicturePtr pMask,
+ PicturePtr pDst,
+ INT16 xSrc,
+ INT16 ySrc,
+ INT16 xMask,
+ INT16 yMask,
+ INT16 xDst,
+ INT16 yDst,
+ CARD16 width,
+ CARD16 height);
+
+
+/* fbpict.c */
+CARD32
+fbOver (CARD32 x, CARD32 y);
+
+CARD32
+fbOver24 (CARD32 x, CARD32 y);
+
+CARD32
+fbIn (CARD32 x, CARD8 y);
+
+void
+fbCompositeSolidMask_nx8x8888 (CARD8 op,
+ PicturePtr pSrc,
+ PicturePtr pMask,
+ PicturePtr pDst,
+ INT16 xSrc,
+ INT16 ySrc,
+ INT16 xMask,
+ INT16 yMask,
+ INT16 xDst,
+ INT16 yDst,
+ CARD16 width,
+ CARD16 height);
+
+void
+fbCompositeSolidMask_nx8x0888 (CARD8 op,
+ PicturePtr pSrc,
+ PicturePtr pMask,
+ PicturePtr pDst,
+ INT16 xSrc,
+ INT16 ySrc,
+ INT16 xMask,
+ INT16 yMask,
+ INT16 xDst,
+ INT16 yDst,
+ CARD16 width,
+ CARD16 height);
+
+void
+fbCompositeSolidMask_nx8888x8888C (CARD8 op,
+ PicturePtr pSrc,
+ PicturePtr pMask,
+ PicturePtr pDst,
+ INT16 xSrc,
+ INT16 ySrc,
+ INT16 xMask,
+ INT16 yMask,
+ INT16 xDst,
+ INT16 yDst,
+ CARD16 width,
+ CARD16 height);
+
+void
+fbCompositeSolidMask_nx8x0565 (CARD8 op,
+ PicturePtr pSrc,
+ PicturePtr pMask,
+ PicturePtr pDst,
+ INT16 xSrc,
+ INT16 ySrc,
+ INT16 xMask,
+ INT16 yMask,
+ INT16 xDst,
+ INT16 yDst,
+ CARD16 width,
+ CARD16 height);
+
+void
+fbCompositeSolidMask_nx8888x0565C (CARD8 op,
+ PicturePtr pSrc,
+ PicturePtr pMask,
+ PicturePtr pDst,
+ INT16 xSrc,
+ INT16 ySrc,
+ INT16 xMask,
+ INT16 yMask,
+ INT16 xDst,
+ INT16 yDst,
+ CARD16 width,
+ CARD16 height);
+
+void
+fbCompositeSrc_8888x8888 (CARD8 op,
+ PicturePtr pSrc,
+ PicturePtr pMask,
+ PicturePtr pDst,
+ INT16 xSrc,
+ INT16 ySrc,
+ INT16 xMask,
+ INT16 yMask,
+ INT16 xDst,
+ INT16 yDst,
+ CARD16 width,
+ CARD16 height);
+
+void
+fbCompositeSrc_8888x0888 (CARD8 op,
+ PicturePtr pSrc,
+ PicturePtr pMask,
+ PicturePtr pDst,
+ INT16 xSrc,
+ INT16 ySrc,
+ INT16 xMask,
+ INT16 yMask,
+ INT16 xDst,
+ INT16 yDst,
+ CARD16 width,
+ CARD16 height);
+
+void
+fbCompositeSrc_8888x0565 (CARD8 op,
+ PicturePtr pSrc,
+ PicturePtr pMask,
+ PicturePtr pDst,
+ INT16 xSrc,
+ INT16 ySrc,
+ INT16 xMask,
+ INT16 yMask,
+ INT16 xDst,
+ INT16 yDst,
+ CARD16 width,
+ CARD16 height);
+
+void
+fbCompositeSrc_0565x0565 (CARD8 op,
+ PicturePtr pSrc,
+ PicturePtr pMask,
+ PicturePtr pDst,
+ INT16 xSrc,
+ INT16 ySrc,
+ INT16 xMask,
+ INT16 yMask,
+ INT16 xDst,
+ INT16 yDst,
+ CARD16 width,
+ CARD16 height);
+
+void
+fbCompositeSrcAdd_8000x8000 (CARD8 op,
+ PicturePtr pSrc,
+ PicturePtr pMask,
+ PicturePtr pDst,
+ INT16 xSrc,
+ INT16 ySrc,
+ INT16 xMask,
+ INT16 yMask,
+ INT16 xDst,
+ INT16 yDst,
+ CARD16 width,
+ CARD16 height);
+
+void
+fbCompositeSrcAdd_8888x8888 (CARD8 op,
+ PicturePtr pSrc,
+ PicturePtr pMask,
+ PicturePtr pDst,
+ INT16 xSrc,
+ INT16 ySrc,
+ INT16 xMask,
+ INT16 yMask,
+ INT16 xDst,
+ INT16 yDst,
+ CARD16 width,
+ CARD16 height);
+
+void
+fbCompositeSrcAdd_1000x1000 (CARD8 op,
+ PicturePtr pSrc,
+ PicturePtr pMask,
+ PicturePtr pDst,
+ INT16 xSrc,
+ INT16 ySrc,
+ INT16 xMask,
+ INT16 yMask,
+ INT16 xDst,
+ INT16 yDst,
+ CARD16 width,
+ CARD16 height);
+
+void
+fbCompositeSolidMask_nx1xn (CARD8 op,
+ PicturePtr pSrc,
+ PicturePtr pMask,
+ PicturePtr pDst,
+ INT16 xSrc,
+ INT16 ySrc,
+ INT16 xMask,
+ INT16 yMask,
+ INT16 xDst,
+ INT16 yDst,
+ CARD16 width,
+ CARD16 height);
+
+void
+fbComposite (CARD8 op,
+ PicturePtr pSrc,
+ PicturePtr pMask,
+ PicturePtr pDst,
+ INT16 xSrc,
+ INT16 ySrc,
+ INT16 xMask,
+ INT16 yMask,
+ INT16 xDst,
+ INT16 yDst,
+ CARD16 width,
+ CARD16 height);
+
+/* fbtrap.c */
+void
+fbRasterizeTrapezoid (PicturePtr alpha,
+ xTrapezoid *trap,
+ int x_off,
+ int y_off);
+
+#endif /* _FBPICT_H_ */