merge of '79b90d4ef7df69035b001466908501f67f8aac76'
[vuplus_openembedded] / packages / xorg-lib / pixman / pixman-x888-565.patch
1 commit 8507756d8868b8d8c7a149bd2427a04262638156
2 Author: Vladimir Vukicevic <vladimir@slide.(none)>
3 Date:   Sat Sep 6 17:46:52 2008 -0700
4
5     Add SRC x888x0565 C fast path
6
7 diff --git a/pixman/pixman-pict.c b/pixman/pixman-pict.c
8 index eeefa33..b5fb0ff 100644
9 --- a/pixman/pixman-pict.c
10 +++ b/pixman/pixman-pict.c
11 @@ -759,6 +759,46 @@ fbCompositeSrc_8888x0565 (pixman_op_t op,
12      }
13  }
14  
15 +
16 +void
17 +fbCompositeSrc_x888x0565 (pixman_op_t op,
18 +                          pixman_image_t * pSrc,
19 +                          pixman_image_t * pMask,
20 +                          pixman_image_t * pDst,
21 +                          int16_t      xSrc,
22 +                          int16_t      ySrc,
23 +                          int16_t      xMask,
24 +                          int16_t      yMask,
25 +                          int16_t      xDst,
26 +                          int16_t      yDst,
27 +                          uint16_t     width,
28 +                          uint16_t     height)
29 +{
30 +    uint16_t   *dstLine, *dst;
31 +    uint32_t   *srcLine, *src, s;
32 +    int        dstStride, srcStride;
33 +    uint16_t   w;
34 +
35 +    fbComposeGetStart (pSrc, xSrc, ySrc, uint32_t, srcStride, srcLine, 1);
36 +    fbComposeGetStart (pDst, xDst, yDst, uint16_t, dstStride, dstLine, 1);
37 +
38 +    while (height--)
39 +    {
40 +       dst = dstLine;
41 +       dstLine += dstStride;
42 +       src = srcLine;
43 +       srcLine += srcStride;
44 +       w = width;
45 +
46 +       while (w--)
47 +       {
48 +           s = READ(pSrc, src++);
49 +           WRITE(pDst, dst, cvt8888to0565(s));
50 +           dst++;
51 +       }
52 +    }
53 +}
54 +
55  void
56  fbCompositeSrcAdd_8000x8000 (pixman_op_t       op,
57                              pixman_image_t * pSrc,
58 @@ -1568,6 +1608,10 @@ static const FastPathInfo c_fast_paths[] =
59      { PIXMAN_OP_SRC, PIXMAN_r5g6b5,    PIXMAN_null,     PIXMAN_r5g6b5,   fbCompositeSrcSrc_nxn, 0 },
60      { PIXMAN_OP_SRC, PIXMAN_b5g6r5,    PIXMAN_null,     PIXMAN_b5g6r5,   fbCompositeSrcSrc_nxn, 0 },
61  #endif
62 +    { PIXMAN_OP_SRC, PIXMAN_a8r8g8b8,  PIXMAN_null,     PIXMAN_r5g6b5,   fbCompositeSrc_x888x0565, 0 },
63 +    { PIXMAN_OP_SRC, PIXMAN_x8r8g8b8,  PIXMAN_null,     PIXMAN_r5g6b5,   fbCompositeSrc_x888x0565, 0 },
64 +    { PIXMAN_OP_SRC, PIXMAN_a8b8g8r8,  PIXMAN_null,     PIXMAN_b5g6r5,   fbCompositeSrc_x888x0565, 0 },
65 +    { PIXMAN_OP_SRC, PIXMAN_x8b8g8r8,  PIXMAN_null,     PIXMAN_b5g6r5,   fbCompositeSrc_x888x0565, 0 },
66      { PIXMAN_OP_IN,  PIXMAN_a8,        PIXMAN_null,     PIXMAN_a8,       fbCompositeSrcIn_8x8,   0 },
67      { PIXMAN_OP_IN,  PIXMAN_solid,     PIXMAN_a8,      PIXMAN_a8,       fbCompositeSolidMaskIn_nx8x8, 0 },
68      { PIXMAN_OP_NONE },