os/ossrv/genericopenlibs/liboil/src/fb/fbpict.h
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
     1 /*
     2  * $XFree86: xc/programs/Xserver/fb/fbpict.h,v 1.7 2001/07/18 10:15:02 keithp Exp $
     3  *
     4  * Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc.
     5  *
     6  * Permission to use, copy, modify, distribute, and sell this software and its
     7  * documentation for any purpose is hereby granted without fee, provided that
     8  * the above copyright notice appear in all copies and that both that
     9  * copyright notice and this permission notice appear in supporting
    10  * documentation, and that the name of Keith Packard not be used in
    11  * advertising or publicity pertaining to distribution of the software without
    12  * specific, written prior permission.  Keith Packard makes no
    13  * representations about the suitability of this software for any purpose.  It
    14  * is provided "as is" without express or implied warranty.
    15  *
    16  * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
    17  * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
    18  * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
    19  * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
    20  * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
    21  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
    22  * PERFORMANCE OF THIS SOFTWARE.
    23  */
    24 
    25 #ifdef HAVE_DIX_CONFIG_H
    26 #include <dix-config.h>
    27 #endif
    28 
    29 #ifndef _FBPICT_H_
    30 #define _FBPICT_H_
    31 
    32 //#include "renderedge.h"
    33 
    34 #define FbIntMult(a,b,t) ( (t) = (a) * (b) + 0x80, ( ( ( (t)>>8 ) + (t) )>>8 ) )
    35 #define FbIntDiv(a,b)	 (((CARD16) (a) * 255) / (b))
    36 
    37 #define FbGet8(v,i)   ((CARD16) (CARD8) ((v) >> i))
    38 
    39 /*
    40  * There are two ways of handling alpha -- either as a single unified value or
    41  * a separate value for each component, hence each macro must have two
    42  * versions.  The unified alpha version has a 'U' at the end of the name,
    43  * the component version has a 'C'.  Similarly, functions which deal with
    44  * this difference will have two versions using the same convention.
    45  */
    46 
    47 #define FbOverU(x,y,i,a,t) ((t) = FbIntMult(FbGet8(y,i),(a),(t)) + FbGet8(x,i),\
    48 			   (CARD32) ((CARD8) ((t) | (0 - ((t) >> 8)))) << (i))
    49 
    50 #define FbOverC(x,y,i,a,t) ((t) = FbIntMult(FbGet8(y,i),FbGet8(a,i),(t)) + FbGet8(x,i),\
    51 			    (CARD32) ((CARD8) ((t) | (0 - ((t) >> 8)))) << (i))
    52 
    53 #define FbInU(x,i,a,t) ((CARD32) FbIntMult(FbGet8(x,i),(a),(t)) << (i))
    54 
    55 #define FbInC(x,i,a,t) ((CARD32) FbIntMult(FbGet8(x,i),FbGet8(a,i),(t)) << (i))
    56 
    57 #define FbGen(x,y,i,ax,ay,t,u,v) ((t) = (FbIntMult(FbGet8(y,i),ay,(u)) + \
    58 					 FbIntMult(FbGet8(x,i),ax,(v))),\
    59 				  (CARD32) ((CARD8) ((t) | \
    60 						     (0 - ((t) >> 8)))) << (i))
    61 
    62 #define FbAdd(x,y,i,t)	((t) = FbGet8(x,i) + FbGet8(y,i), \
    63 			 (CARD32) ((CARD8) ((t) | (0 - ((t) >> 8)))) << (i))
    64 
    65 
    66 #define Alpha(x) ((x) >> 24)
    67 #define Red(x) (((x) >> 16) & 0xff)
    68 #define Green(x) (((x) >> 8) & 0xff)
    69 #define Blue(x) ((x) & 0xff)
    70 
    71 #define fbComposeGetSolid(pict, bits, fmt) { \
    72     FbBits	*__bits__; \
    73     FbStride	__stride__; \
    74     int		__bpp__; \
    75     int		__xoff__,__yoff__; \
    76 \
    77     fbGetDrawable((pict)->pDrawable,__bits__,__stride__,__bpp__,__xoff__,__yoff__); \
    78     switch (__bpp__) { \
    79     case 32: \
    80 	(bits) = *(CARD32 *) __bits__; \
    81 	break; \
    82     case 24: \
    83 	(bits) = Fetch24 ((CARD8 *) __bits__); \
    84 	break; \
    85     case 16: \
    86 	(bits) = *(CARD16 *) __bits__; \
    87 	(bits) = cvt0565to8888(bits); \
    88 	break; \
    89     default: \
    90 	return; \
    91     } \
    92     /* If necessary, convert RGB <--> BGR. */ \
    93     if (PICT_FORMAT_TYPE((pict)->format) != PICT_FORMAT_TYPE(fmt)) \
    94     { \
    95 	(bits) = (((bits) & 0xff000000) | \
    96 		  (((bits) & 0x00ff0000) >> 16) | \
    97 		  (((bits) & 0x0000ff00) >>  0) | \
    98 		  (((bits) & 0x000000ff) << 16)); \
    99     } \
   100     /* manage missing src alpha */ \
   101     if ((pict)->pFormat->direct.alphaMask == 0) \
   102 	(bits) |= 0xff000000; \
   103 }
   104 
   105 #define fbComposeGetStart(pict,x,y,type,stride,line,mul) {\
   106     FbBits	*__bits__; \
   107     FbStride	__stride__; \
   108     int		__bpp__; \
   109     int		__xoff__,__yoff__; \
   110 \
   111     fbGetDrawable((pict)->pDrawable,__bits__,__stride__,__bpp__,__xoff__,__yoff__); \
   112     (stride) = __stride__ * sizeof (FbBits) / sizeof (type); \
   113     (line) = ((type *) __bits__) + (stride) * ((y) - __yoff__) + (mul) * ((x) - __xoff__); \
   114 }
   115 #define cvt8888to0565(s)    ((((s) >> 3) & 0x001f) | \
   116 			     (((s) >> 5) & 0x07e0) | \
   117 			     (((s) >> 8) & 0xf800))
   118 #define cvt0565to8888(s)    (((((s) << 3) & 0xf8) | (((s) >> 2) & 0x7)) | \
   119 			     ((((s) << 5) & 0xfc00) | (((s) >> 1) & 0x300)) | \
   120 			     ((((s) << 8) & 0xf80000) | (((s) << 3) & 0x70000)))
   121 
   122 #if IMAGE_BYTE_ORDER == MSBFirst
   123 #define Fetch24(a)  ((unsigned long) (a) & 1 ? \
   124 		     ((*(a) << 16) | *((CARD16 *) ((a)+1))) : \
   125 		     ((*((CARD16 *) (a)) << 8) | *((a)+2)))
   126 #define Store24(a,v) ((unsigned long) (a) & 1 ? \
   127 		      ((*(a) = (CARD8) ((v) >> 16)), \
   128 		       (*((CARD16 *) ((a)+1)) = (CARD16) (v))) : \
   129 		      ((*((CARD16 *) (a)) = (CARD16) ((v) >> 8)), \
   130 		       (*((a)+2) = (CARD8) (v))))
   131 #else
   132 #define Fetch24(a)  ((unsigned long) (a) & 1 ? \
   133 		     ((*(a)) | (*((CARD16 *) ((a)+1)) << 8)) : \
   134 		     ((*((CARD16 *) (a))) | (*((a)+2) << 16)))
   135 #define Store24(a,v) ((unsigned long) (a) & 1 ? \
   136 		      ((*(a) = (CARD8) (v)), \
   137 		       (*((CARD16 *) ((a)+1)) = (CARD16) ((v) >> 8))) : \
   138 		      ((*((CARD16 *) (a)) = (CARD16) (v)),\
   139 		       (*((a)+2) = (CARD8) ((v) >> 16))))
   140 #endif
   141 		      
   142 /*
   143    The methods below use some tricks to be able to do two color
   144    components at the same time.
   145 */
   146 
   147 /*
   148   x_c = (x_c * a) / 255
   149 */
   150 #define FbByteMul(x, a) do {                                      \
   151         CARD32 t = (x & 0xff00ff) *a;                           \
   152         t = (t + ((t >> 8) & 0xff00ff) + 0x800080) >> 8;          \
   153         t &= 0xff00ff;                                            \
   154                                                                   \
   155         x = ((x >> 8) & 0xff00ff) * a;                            \
   156         x = (x + ((x >> 8) & 0xff00ff) + 0x800080);               \
   157         x &= 0xff00ff00;                                          \
   158         x += t;                                                   \
   159     } while (0)
   160 
   161 /*
   162   x_c = (x_c * a) / 255 + y
   163 */
   164 #define FbByteMulAdd(x, a, y) do {                                \
   165         CARD32 t = (x & 0xff00ff) * a;                            \
   166         t = (t + ((t >> 8) & 0xff00ff) + 0x800080) >> 8;          \
   167         t &= 0xff00ff;                                            \
   168         t += y & 0xff00ff;                                        \
   169         t |= 0x1000100 - ((t >> 8) & 0xff00ff);                   \
   170         t &= 0xff00ff;                                            \
   171                                                                   \
   172         x = ((x >> 8) & 0xff00ff) * a;                              \
   173         x = (x + ((x >> 8) & 0xff00ff) + 0x800080) >> 8;            \
   174         x &= 0xff00ff;                                              \
   175         x += (y >> 8) & 0xff00ff;                                   \
   176         x |= 0x1000100 - ((t >> 8) & 0xff00ff);                     \
   177         x &= 0xff00ff;                                              \
   178         x <<= 8;                                                    \
   179         x += t;                                                     \
   180     } while (0)
   181 
   182 /*
   183   x_c = (x_c * a + y_c * b) / 255
   184 */
   185 #define FbByteAddMul(x, a, y, b) do {                                   \
   186         CARD32 t;                                                       \
   187         CARD32 r = (x >> 24) * a + (y >> 24) * b;                       \
   188         r += (r >> 8) + 0x80;                                           \
   189         r >>= 8;                                                        \
   190                                                                         \
   191         t = (x & 0xff00) * a + (y & 0xff00) * b;                        \
   192         t += (t >> 8) + 0x8000;                                         \
   193         t >>= 16;                                                       \
   194                                                                         \
   195         t |= r << 16;                                                   \
   196         t |= 0x1000100 - ((t >> 8) & 0xff00ff);                         \
   197         t &= 0xff00ff;                                                  \
   198         t <<= 8;                                                        \
   199                                                                         \
   200         r = ((x >> 16) & 0xff) * a + ((y >> 16) & 0xff) * b;            \
   201         r += (r >> 8) + 0x80;                                           \
   202         r >>= 8;                                                        \
   203                                                                         \
   204         x = (x & 0xff) * a + (y & 0xff) * b;                            \
   205         x += (x >> 8) + 0x80;                                           \
   206         x >>= 8;                                                        \
   207         x |= r << 16;                                                   \
   208         x |= 0x1000100 - ((x >> 8) & 0xff00ff);                         \
   209         x &= 0xff00ff;                                                  \
   210         x |= t;                                                         \
   211 } while (0)
   212 
   213 /*
   214   x_c = (x_c * a + y_c *b) / 256
   215 */
   216 #define FbByteAddMul_256(x, a, y, b) do {                               \
   217         CARD32 t = (x & 0xff00ff) * a + (y & 0xff00ff) * b;             \
   218         t >>= 8;                                                        \
   219         t &= 0xff00ff;                                                  \
   220                                                                         \
   221         x = ((x >> 8) & 0xff00ff) * a + ((y >> 8) & 0xff00ff) * b;      \
   222         x &= 0xff00ff00;                                                \
   223         x += t;                                                         \
   224 } while (0)
   225 /*
   226   x_c = (x_c * a_c) / 255
   227 */
   228 #define FbByteMulC(x, a) do {                           \
   229         CARD32 t;                                       \
   230         CARD32 r = (x & 0xff) * (a & 0xff);             \
   231         r |= (x & 0xff0000) * ((a >> 16) & 0xff);       \
   232         r = (r + ((r >> 8) & 0xff00ff) + 0x800080) >> 8;        \
   233         r &= 0xff00ff;                                  \
   234                                                         \
   235         x >>= 8;                                        \
   236         t = (x & 0xff) * ((a >> 8) & 0xff);             \
   237         t |= (x & 0xff0000) * (a >> 24);                \
   238         t = (t + ((t >> 8) & 0xff00ff) + 0x800080);     \
   239         x = r | (t & 0xff00ff00);                       \
   240                                                         \
   241     } while (0)
   242 
   243 /*
   244   x_c = (x_c * a) / 255 + y
   245 */
   246 #define FbByteMulAddC(x, a, y) do {                                 \
   247         CARD32 t;                                                   \
   248         CARD32 r = (x & 0xff) * (a & 0xff);                         \
   249         r |= (x & 0xff0000) * ((a >> 16) & 0xff);                   \
   250         r = (r + ((r >> 8) & 0xff00ff) + 0x800080) >> 8;            \
   251         r &= 0xff00ff;                                              \
   252         r += y & 0xff00ff;                                          \
   253         r |= 0x1000100 - ((r >> 8) & 0xff00ff);                     \
   254         r &= 0xff00ff;                                              \
   255                                                                     \
   256         x >>= 8;                                                       \
   257         t = (x & 0xff) * ((a >> 8) & 0xff);                            \
   258         t |= (x & 0xff0000) * (a >> 24);                               \
   259         t = (t + ((t >> 8) & 0xff00ff) + 0x800080) >> 8;               \
   260         t &= 0xff00ff;                                                 \
   261         t += (y >> 8) & 0xff00ff;                                      \
   262         t |= 0x1000100 - ((t >> 8) & 0xff00ff);                        \
   263         t &= 0xff00ff;                                                 \
   264         x = r | (t << 8);                                              \
   265     } while (0)
   266 
   267 /*
   268   x_c = (x_c * a_c + y_c * b) / 255
   269 */
   270 #define FbByteAddMulC(x, a, y, b) do {                                  \
   271         CARD32 t;                                                       \
   272         CARD32 r = (x >> 24) * (a >> 24) + (y >> 24) * b;               \
   273         r += (r >> 8) + 0x80;                                           \
   274         r >>= 8;                                                        \
   275                                                                         \
   276         t = (x & 0xff00) * ((a >> 8) & 0xff) + (y & 0xff00) * b;        \
   277         t += (t >> 8) + 0x8000;                                         \
   278         t >>= 16;                                                       \
   279                                                                         \
   280         t |= r << 16;                                                   \
   281         t |= 0x1000100 - ((t >> 8) & 0xff00ff);                         \
   282         t &= 0xff00ff;                                                  \
   283         t <<= 8;                                                        \
   284                                                                         \
   285         r = ((x >> 16) & 0xff) * ((a >> 16) & 0xff) + ((y >> 16) & 0xff) * b; \
   286         r += (r >> 8) + 0x80;                                           \
   287         r >>= 8;                                                        \
   288                                                                         \
   289         x = (x & 0xff) * (a & 0xff) + (y & 0xff) * b;                   \
   290         x += (x >> 8) + 0x80;                                           \
   291         x >>= 8;                                                        \
   292         x |= r << 16;                                                   \
   293         x |= 0x1000100 - ((x >> 8) & 0xff00ff);                         \
   294         x &= 0xff00ff;                                                  \
   295         x |= t;                                                         \
   296     } while (0)
   297  
   298 /*
   299   x_c = min(x_c + y_c, 255)
   300 */
   301 #define FbByteAdd(x, y) do {                                            \
   302         CARD32 t;                                                       \
   303         CARD32 r = (x & 0xff00ff) + (y & 0xff00ff);                     \
   304         r |= 0x1000100 - ((r >> 8) & 0xff00ff);                         \
   305         r &= 0xff00ff;                                                  \
   306                                                                         \
   307         t = ((x >> 8) & 0xff00ff) + ((y >> 8) & 0xff00ff);              \
   308         t |= 0x1000100 - ((t >> 8) & 0xff00ff);                         \
   309         r |= (t & 0xff00ff) << 8;                                       \
   310         x = r;                                                          \
   311     } while (0)
   312 
   313 #define div_255(x) (((x) + ((x) >> 8) + 0x80) >> 8)
   314 
   315 #if defined(__i386__) && defined(__GNUC__)
   316 #define FASTCALL __attribute__((regparm(3)))
   317 #else
   318 #define FASTCALL
   319 #endif
   320 
   321 #if defined(__GNUC__)
   322 #define INLINE __inline__
   323 #else
   324 #define INLINE
   325 #endif
   326 
   327 typedef struct _FbComposeData {
   328     CARD8	op;
   329     PicturePtr	src;
   330     PicturePtr	mask;
   331     PicturePtr	dest;
   332     INT16	xSrc;
   333     INT16	ySrc;
   334     INT16	xMask;
   335     INT16	yMask;
   336     INT16	xDest;
   337     INT16	yDest;
   338     CARD16	width;
   339     CARD16	height;
   340 } FbComposeData;
   341 
   342 #if 0
   343 typedef FASTCALL void (*CombineMaskU) (CARD32 *src, const CARD32 *mask, int width);
   344 typedef FASTCALL void (*CombineFuncU) (CARD32 *dest, const CARD32 *src, int width);
   345 typedef FASTCALL void (*CombineFuncC) (CARD32 *dest, CARD32 *src, CARD32 *mask, int width);
   346 
   347 typedef struct _FbComposeFunctions {
   348     CombineFuncU *combineU;
   349     CombineFuncC *combineC;
   350     CombineMaskU combineMaskU;
   351 } FbComposeFunctions;
   352 
   353 /* fbcompose.c */
   354 
   355 void
   356 fbCompositeGeneral (CARD8	op,
   357 		    PicturePtr	pSrc,
   358 		    PicturePtr	pMask,
   359 		    PicturePtr	pDst,
   360 		    INT16	xSrc,
   361 		    INT16	ySrc,
   362 		    INT16	xMask,
   363 		    INT16	yMask,
   364 		    INT16	xDst,
   365 		    INT16	yDst,
   366 		    CARD16	width,
   367 		    CARD16	height);
   368 
   369 
   370 /* fbedge.c */
   371 void
   372 fbRasterizeEdges (FbBits	*buf,
   373 		  int		bpp,
   374 		  int		width,
   375 		  int		stride,
   376 		  RenderEdge	*l,
   377 		  RenderEdge	*r,
   378 		  xFixed	t,
   379 		  xFixed	b);
   380 
   381 /* fbpict.c */
   382 CARD32
   383 fbOver (CARD32 x, CARD32 y);
   384 
   385 CARD32
   386 fbOver24 (CARD32 x, CARD32 y);
   387 
   388 CARD32
   389 fbIn (CARD32 x, CARD8 y);
   390 
   391 void
   392 fbCompositeSolidMask_nx8x8888 (CARD8      op,
   393 			       PicturePtr pSrc,
   394 			       PicturePtr pMask,
   395 			       PicturePtr pDst,
   396 			       INT16      xSrc,
   397 			       INT16      ySrc,
   398 			       INT16      xMask,
   399 			       INT16      yMask,
   400 			       INT16      xDst,
   401 			       INT16      yDst,
   402 			       CARD16     width,
   403 			       CARD16     height);
   404 
   405 void
   406 fbCompositeSolidMask_nx8x0888 (CARD8      op,
   407 			       PicturePtr pSrc,
   408 			       PicturePtr pMask,
   409 			       PicturePtr pDst,
   410 			       INT16      xSrc,
   411 			       INT16      ySrc,
   412 			       INT16      xMask,
   413 			       INT16      yMask,
   414 			       INT16      xDst,
   415 			       INT16      yDst,
   416 			       CARD16     width,
   417 			       CARD16     height);
   418 
   419 void
   420 fbCompositeSolidMask_nx8888x8888C (CARD8      op,
   421 				   PicturePtr pSrc,
   422 				   PicturePtr pMask,
   423 				   PicturePtr pDst,
   424 				   INT16      xSrc,
   425 				   INT16      ySrc,
   426 				   INT16      xMask,
   427 				   INT16      yMask,
   428 				   INT16      xDst,
   429 				   INT16      yDst,
   430 				   CARD16     width,
   431 				   CARD16     height);
   432 
   433 void
   434 fbCompositeSolidMask_nx8x0565 (CARD8      op,
   435 			       PicturePtr pSrc,
   436 			       PicturePtr pMask,
   437 			       PicturePtr pDst,
   438 			       INT16      xSrc,
   439 			       INT16      ySrc,
   440 			       INT16      xMask,
   441 			       INT16      yMask,
   442 			       INT16      xDst,
   443 			       INT16      yDst,
   444 			       CARD16     width,
   445 			       CARD16     height);
   446 
   447 void
   448 fbCompositeSolidMask_nx8888x0565C (CARD8      op,
   449 				   PicturePtr pSrc,
   450 				   PicturePtr pMask,
   451 				   PicturePtr pDst,
   452 				   INT16      xSrc,
   453 				   INT16      ySrc,
   454 				   INT16      xMask,
   455 				   INT16      yMask,
   456 				   INT16      xDst,
   457 				   INT16      yDst,
   458 				   CARD16     width,
   459 				   CARD16     height);
   460 
   461 void
   462 fbCompositeSrc_8888x8888 (CARD8      op,
   463 			  PicturePtr pSrc,
   464 			  PicturePtr pMask,
   465 			  PicturePtr pDst,
   466 			  INT16      xSrc,
   467 			  INT16      ySrc,
   468 			  INT16      xMask,
   469 			  INT16      yMask,
   470 			  INT16      xDst,
   471 			  INT16      yDst,
   472 			  CARD16     width,
   473 			  CARD16     height);
   474 
   475 void
   476 fbCompositeSrc_8888x0888 (CARD8      op,
   477 			 PicturePtr pSrc,
   478 			 PicturePtr pMask,
   479 			 PicturePtr pDst,
   480 			 INT16      xSrc,
   481 			 INT16      ySrc,
   482 			 INT16      xMask,
   483 			 INT16      yMask,
   484 			 INT16      xDst,
   485 			 INT16      yDst,
   486 			 CARD16     width,
   487 			 CARD16     height);
   488 
   489 void
   490 fbCompositeSrc_8888x0565 (CARD8      op,
   491 			  PicturePtr pSrc,
   492 			  PicturePtr pMask,
   493 			  PicturePtr pDst,
   494 			  INT16      xSrc,
   495 			  INT16      ySrc,
   496 			  INT16      xMask,
   497 			  INT16      yMask,
   498 			  INT16      xDst,
   499 			  INT16      yDst,
   500 			  CARD16     width,
   501 			  CARD16     height);
   502 
   503 void
   504 fbCompositeSrc_0565x0565 (CARD8      op,
   505 			  PicturePtr pSrc,
   506 			  PicturePtr pMask,
   507 			  PicturePtr pDst,
   508 			  INT16      xSrc,
   509 			  INT16      ySrc,
   510 			  INT16      xMask,
   511 			  INT16      yMask,
   512 			  INT16      xDst,
   513 			  INT16      yDst,
   514 			  CARD16     width,
   515 			  CARD16     height);
   516 
   517 void
   518 fbCompositeSrcAdd_8000x8000 (CARD8	op,
   519 			     PicturePtr pSrc,
   520 			     PicturePtr pMask,
   521 			     PicturePtr pDst,
   522 			     INT16      xSrc,
   523 			     INT16      ySrc,
   524 			     INT16      xMask,
   525 			     INT16      yMask,
   526 			     INT16      xDst,
   527 			     INT16      yDst,
   528 			     CARD16     width,
   529 			     CARD16     height);
   530 
   531 void
   532 fbCompositeSrcAdd_8888x8888 (CARD8	op,
   533 			     PicturePtr pSrc,
   534 			     PicturePtr pMask,
   535 			     PicturePtr pDst,
   536 			     INT16      xSrc,
   537 			     INT16      ySrc,
   538 			     INT16      xMask,
   539 			     INT16      yMask,
   540 			     INT16      xDst,
   541 			     INT16      yDst,
   542 			     CARD16     width,
   543 			     CARD16     height);
   544 
   545 void
   546 fbCompositeSrcAdd_1000x1000 (CARD8	op,
   547 			     PicturePtr pSrc,
   548 			     PicturePtr pMask,
   549 			     PicturePtr pDst,
   550 			     INT16      xSrc,
   551 			     INT16      ySrc,
   552 			     INT16      xMask,
   553 			     INT16      yMask,
   554 			     INT16      xDst,
   555 			     INT16      yDst,
   556 			     CARD16     width,
   557 			     CARD16     height);
   558 
   559 void
   560 fbCompositeSolidMask_nx1xn (CARD8      op,
   561 			    PicturePtr pSrc,
   562 			    PicturePtr pMask,
   563 			    PicturePtr pDst,
   564 			    INT16      xSrc,
   565 			    INT16      ySrc,
   566 			    INT16      xMask,
   567 			    INT16      yMask,
   568 			    INT16      xDst,
   569 			    INT16      yDst,
   570 			    CARD16     width,
   571 			    CARD16     height);
   572 
   573 void
   574 fbComposite (CARD8      op,
   575 	     PicturePtr pSrc,
   576 	     PicturePtr pMask,
   577 	     PicturePtr pDst,
   578 	     INT16      xSrc,
   579 	     INT16      ySrc,
   580 	     INT16      xMask,
   581 	     INT16      yMask,
   582 	     INT16      xDst,
   583 	     INT16      yDst,
   584 	     CARD16     width,
   585 	     CARD16     height);
   586 
   587 /* fbtrap.c */
   588 
   589 void
   590 fbAddTraps (PicturePtr	pPicture,
   591 	    INT16	xOff,
   592 	    INT16	yOff,
   593 	    int		ntrap,
   594 	    xTrap	*traps);
   595 
   596 void
   597 fbRasterizeTrapezoid (PicturePtr    alpha,
   598 		      xTrapezoid    *trap,
   599 		      int	    x_off,
   600 		      int	    y_off);
   601 
   602 void
   603 fbAddTriangles (PicturePtr  pPicture,
   604 		INT16	    xOff,
   605 		INT16	    yOff,
   606 		int	    ntri,
   607 		xTriangle   *tris);
   608 #endif
   609 
   610 #endif /* _FBPICT_H_ */