Bug #1895: Fix fbComposeGetSolid for BGR. (David S. Miller)

This commit is contained in:
Adam Jackson 2005-01-16 01:59:23 +00:00
parent 24cdd188dc
commit 79a7120983
3 changed files with 21 additions and 13 deletions

View File

@ -360,7 +360,7 @@ fbCompositeSolid_nx8888mmx (CARD8 op,
CHECKPOINT();
fbComposeGetSolid(pSrc, src);
fbComposeGetSolid(pSrc, src, pDst->format);
if (src >> 24 == 0)
return;
@ -439,7 +439,7 @@ fbCompositeSolid_nx0565mmx (CARD8 op,
CHECKPOINT();
fbComposeGetSolid(pSrc, src);
fbComposeGetSolid(pSrc, src, pDst->format);
if (src >> 24 == 0)
return;
@ -524,7 +524,7 @@ fbCompositeSolidMask_nx8888x8888Cmmx (CARD8 op,
CHECKPOINT();
fbComposeGetSolid(pSrc, src);
fbComposeGetSolid(pSrc, src, pDst->format);
srca = src >> 24;
if (srca == 0)
@ -755,7 +755,7 @@ fbCompositeSolidMask_nx8x8888mmx (CARD8 op,
CHECKPOINT();
fbComposeGetSolid(pSrc, src);
fbComposeGetSolid(pSrc, src, pDst->format);
srca = src >> 24;
if (srca == 0)
@ -871,7 +871,7 @@ fbCompositeSolidMask_nx8x0565mmx (CARD8 op,
CHECKPOINT();
fbComposeGetSolid(pSrc, src);
fbComposeGetSolid(pSrc, src, pDst->format);
srca = src >> 24;
if (srca == 0)
@ -1212,7 +1212,7 @@ fbCompositeSolidMask_nx8888x0565Cmmx (CARD8 op,
CHECKPOINT();
fbComposeGetSolid(pSrc, src);
fbComposeGetSolid(pSrc, src, pDst->format);
srca = src >> 24;
if (srca == 0)

View File

@ -99,7 +99,7 @@ fbCompositeSolidMask_nx8x8888 (CARD8 op,
FbStride dstStride, maskStride;
CARD16 w;
fbComposeGetSolid(pSrc, src);
fbComposeGetSolid(pSrc, src, pDst->format);
dstMask = FbFullMask (pDst->pDrawable->depth);
srca = src >> 24;
@ -158,7 +158,7 @@ fbCompositeSolidMask_nx8888x8888C (CARD8 op,
CARD16 w;
CARD32 m, n, o, p;
fbComposeGetSolid(pSrc, src);
fbComposeGetSolid(pSrc, src, pDst->format);
dstMask = FbFullMask (pDst->pDrawable->depth);
srca = src >> 24;
@ -231,7 +231,7 @@ fbCompositeSolidMask_nx8x0888 (CARD8 op,
FbStride dstStride, maskStride;
CARD16 w;
fbComposeGetSolid(pSrc, src);
fbComposeGetSolid(pSrc, src, pDst->format);
srca = src >> 24;
if (src == 0)
@ -293,7 +293,7 @@ fbCompositeSolidMask_nx8x0565 (CARD8 op,
FbStride dstStride, maskStride;
CARD16 w;
fbComposeGetSolid(pSrc, src);
fbComposeGetSolid(pSrc, src, pDst->format);
srca = src >> 24;
if (src == 0)
@ -358,7 +358,7 @@ fbCompositeSolidMask_nx8888x0565C (CARD8 op,
CARD16 w;
CARD32 m, n, o;
fbComposeGetSolid(pSrc, src);
fbComposeGetSolid(pSrc, src, pDst->format);
srca = src >> 24;
if (src == 0)
@ -763,7 +763,7 @@ fbCompositeSolidMask_nx1xn (CARD8 op,
int maskXoff, maskYoff;
FbBits src;
fbComposeGetSolid(pSrc, src);
fbComposeGetSolid(pSrc, src, pDst->format);
if ((src & 0xff000000) != 0xff000000)
{

View File

@ -72,7 +72,7 @@ typedef void (*CompositeFunc) (CARD8 op,
CARD16 width,
CARD16 height);
#define fbComposeGetSolid(pict, bits) { \
#define fbComposeGetSolid(pict, bits, fmt) { \
FbBits *__bits__; \
FbStride __stride__; \
int __bpp__; \
@ -93,6 +93,14 @@ typedef void (*CompositeFunc) (CARD8 op,
default: \
return; \
} \
/* If necessary, convert RGB <--> BGR. */ \
if (PICT_FORMAT_TYPE((pict)->format) != PICT_FORMAT_TYPE(fmt)) \
{ \
(bits) = (((bits) & 0xff000000) | \
(((bits) & 0x00ff0000) >> 16) | \
(((bits) & 0x0000ff00) >> 0) | \
(((bits) & 0x000000ff) << 16)); \
} \
/* manage missing src alpha */ \
if ((pict)->pFormat->direct.alphaMask == 0) \
(bits) |= 0xff000000; \