pixman: Branch 'master' - 3 commits
Søren Sandmann Pedersen
sandmann at kemper.freedesktop.org
Mon Jun 11 12:29:08 PDT 2007
pixman/pixman-mmx.c | 71 ++++++++++++++-------------------------
pixman/pixman-mmx.h | 7 ++-
pixman/pixman-pict.c | 89 ++++++++++++++++++++------------------------------
pixman/pixman-utils.c | 22 ++++++++++++
pixman/pixman.h | 12 ++++++
5 files changed, 99 insertions(+), 102 deletions(-)
New commits:
diff-tree cf6b8f63d4dd2d96efcde673696e1703856a3787 (from 02f6129400eda40167e91e0ff4724d7a5ae5a80d)
Author: Søren Sandmann Pedersen <sandmann at redhat.com>
Date: Mon Jun 11 14:55:31 2007 -0400
Forgotten fbHaveMMX()
diff --git a/pixman/pixman-mmx.c b/pixman/pixman-mmx.c
index 097b021..3986cc8 100644
--- a/pixman/pixman-mmx.c
+++ b/pixman/pixman-mmx.c
@@ -878,7 +878,7 @@ extern FbComposeFunctions pixman_compose
void fbComposeSetupMMX(void)
{
/* check if we have MMX support and initialize accordingly */
- if (fbHaveMMX()) {
+ if (pixman_have_mmx()) {
pixman_composeFunctions.combineU[PIXMAN_OP_OVER] = mmxCombineOverU;
pixman_composeFunctions.combineU[PIXMAN_OP_OVER_REVERSE] = mmxCombineOverReverseU;
pixman_composeFunctions.combineU[PIXMAN_OP_IN] = mmxCombineInU;
diff-tree 02f6129400eda40167e91e0ff4724d7a5ae5a80d (from 105d398c4d061eb102747f824e6c04ab897cb5e1)
Author: Søren Sandmann Pedersen <sandmann at redhat.com>
Date: Mon Jun 11 14:54:44 2007 -0400
Rename fbHaveMMX() pixman_have_mmx()
Guard pixman_blt_mmx() with pixman_have_mmx()
diff --git a/pixman/pixman-mmx.h b/pixman/pixman-mmx.h
index fd888f3..9ea2ad7 100644
--- a/pixman/pixman-mmx.h
+++ b/pixman/pixman-mmx.h
@@ -35,13 +35,13 @@
#ifdef USE_MMX
#if !defined(__amd64__) && !defined(__x86_64__)
-pixman_bool_t fbHaveMMX(void);
+pixman_bool_t pixman_have_mmx(void);
#else
-#define fbHaveMMX() TRUE
+#define pixman_have_mmx() TRUE
#endif
#else
-#define fbHaveMMX() FALSE
+#define pixman_have_mmx() FALSE
#endif
#ifdef USE_MMX
diff --git a/pixman/pixman-pict.c b/pixman/pixman-pict.c
index 96431a3..5d5417c 100644
--- a/pixman/pixman-pict.c
+++ b/pixman/pixman-pict.c
@@ -1137,7 +1137,7 @@ pixman_image_composite (pixman_op_t
case PIXMAN_r5g6b5:
case PIXMAN_b5g6r5:
#ifdef USE_MMX
- if (fbHaveMMX())
+ if (pixman_have_mmx())
func = fbCompositeSolidMask_nx8x0565mmx;
else
#endif
@@ -1152,7 +1152,7 @@ pixman_image_composite (pixman_op_t
case PIXMAN_a8b8g8r8:
case PIXMAN_x8b8g8r8:
#ifdef USE_MMX
- if (fbHaveMMX())
+ if (pixman_have_mmx())
func = fbCompositeSolidMask_nx8x8888mmx;
else
#endif
@@ -1168,7 +1168,7 @@ pixman_image_composite (pixman_op_t
case PIXMAN_a8r8g8b8:
case PIXMAN_x8r8g8b8:
#ifdef USE_MMX
- if (fbHaveMMX())
+ if (pixman_have_mmx())
func = fbCompositeSolidMask_nx8888x8888Cmmx;
else
#endif
@@ -1176,7 +1176,7 @@ pixman_image_composite (pixman_op_t
break;
case PIXMAN_r5g6b5:
#ifdef USE_MMX
- if (fbHaveMMX())
+ if (pixman_have_mmx())
func = fbCompositeSolidMask_nx8888x0565Cmmx;
else
#endif
@@ -1193,7 +1193,7 @@ pixman_image_composite (pixman_op_t
case PIXMAN_a8b8g8r8:
case PIXMAN_x8b8g8r8:
#ifdef USE_MMX
- if (fbHaveMMX())
+ if (pixman_have_mmx())
func = fbCompositeSolidMask_nx8888x8888Cmmx;
else
#endif
@@ -1201,7 +1201,7 @@ pixman_image_composite (pixman_op_t
break;
case PIXMAN_b5g6r5:
#ifdef USE_MMX
- if (fbHaveMMX())
+ if (pixman_have_mmx())
func = fbCompositeSolidMask_nx8888x0565Cmmx;
else
#endif
@@ -1261,13 +1261,13 @@ pixman_image_composite (pixman_op_t
case PIXMAN_a8r8g8b8:
case PIXMAN_x8r8g8b8:
#ifdef USE_MMX
- if (fbHaveMMX())
+ if (pixman_have_mmx())
func = fbCompositeSrc_8888RevNPx8888mmx;
#endif
break;
case PIXMAN_r5g6b5:
#ifdef USE_MMX
- if (fbHaveMMX())
+ if (pixman_have_mmx())
func = fbCompositeSrc_8888RevNPx0565mmx;
#endif
break;
@@ -1287,13 +1287,13 @@ pixman_image_composite (pixman_op_t
case PIXMAN_a8b8g8r8:
case PIXMAN_x8b8g8r8:
#ifdef USE_MMX
- if (fbHaveMMX())
+ if (pixman_have_mmx())
func = fbCompositeSrc_8888RevNPx8888mmx;
#endif
break;
case PIXMAN_r5g6b5:
#ifdef USE_MMX
- if (fbHaveMMX())
+ if (pixman_have_mmx())
func = fbCompositeSrc_8888RevNPx0565mmx;
#endif
break;
@@ -1319,25 +1319,25 @@ pixman_image_composite (pixman_op_t
case PIXMAN_x8r8g8b8:
if ((pDst->bits.format == PIXMAN_a8r8g8b8 ||
pDst->bits.format == PIXMAN_x8r8g8b8) &&
- pMask->bits.format == PIXMAN_a8 && fbHaveMMX())
+ pMask->bits.format == PIXMAN_a8 && pixman_have_mmx())
func = fbCompositeSrc_x888x8x8888mmx;
break;
case PIXMAN_x8b8g8r8:
if ((pDst->bits.format == PIXMAN_a8b8g8r8 ||
pDst->bits.format == PIXMAN_x8b8g8r8) &&
- pMask->bits.format == PIXMAN_a8 && fbHaveMMX())
+ pMask->bits.format == PIXMAN_a8 && pixman_have_mmx())
func = fbCompositeSrc_x888x8x8888mmx;
break;
case PIXMAN_a8r8g8b8:
if ((pDst->bits.format == PIXMAN_a8r8g8b8 ||
pDst->bits.format == PIXMAN_x8r8g8b8) &&
- pMask->bits.format == PIXMAN_a8 && fbHaveMMX())
+ pMask->bits.format == PIXMAN_a8 && pixman_have_mmx())
func = fbCompositeSrc_8888x8x8888mmx;
break;
case PIXMAN_a8b8g8r8:
if ((pDst->bits.format == PIXMAN_a8b8g8r8 ||
pDst->bits.format == PIXMAN_x8b8g8r8) &&
- pMask->bits.format == PIXMAN_a8 && fbHaveMMX())
+ pMask->bits.format == PIXMAN_a8 && pixman_have_mmx())
func = fbCompositeSrc_8888x8x8888mmx;
break;
#endif
@@ -1361,7 +1361,7 @@ pixman_image_composite (pixman_op_t
case PIXMAN_a8r8g8b8:
case PIXMAN_x8r8g8b8:
#ifdef USE_MMX
- if (fbHaveMMX())
+ if (pixman_have_mmx())
{
srcRepeat = FALSE;
func = fbCompositeSolid_nx8888mmx;
@@ -1370,7 +1370,7 @@ pixman_image_composite (pixman_op_t
break;
case PIXMAN_r5g6b5:
#ifdef USE_MMX
- if (fbHaveMMX())
+ if (pixman_have_mmx())
{
srcRepeat = FALSE;
func = fbCompositeSolid_nx0565mmx;
@@ -1393,7 +1393,7 @@ pixman_image_composite (pixman_op_t
if (pSrc->bits.format == pDst->bits.format && !PIXMAN_FORMAT_A(pSrc->bits.format))
{
#ifdef USE_MMX
- if (fbHaveMMX() &&
+ if (pixman_have_mmx() &&
(pSrc->bits.format == PIXMAN_x8r8g8b8 || pSrc->bits.format == PIXMAN_x8b8g8r8))
func = fbCompositeCopyAreammx;
else
@@ -1410,7 +1410,7 @@ pixman_image_composite (pixman_op_t
case PIXMAN_a8r8g8b8:
case PIXMAN_x8r8g8b8:
#ifdef USE_MMX
- if (fbHaveMMX())
+ if (pixman_have_mmx())
func = fbCompositeSrc_8888x8888mmx;
else
#endif
@@ -1421,7 +1421,7 @@ pixman_image_composite (pixman_op_t
break;
case PIXMAN_r5g6b5:
#ifdef USE_MMX
- if (fbHaveMMX())
+ if (pixman_have_mmx())
func = fbCompositeSrc_8888x0565mmx;
else
#endif
@@ -1436,7 +1436,7 @@ pixman_image_composite (pixman_op_t
case PIXMAN_a8r8g8b8:
case PIXMAN_x8r8g8b8:
#ifdef USE_MMX
- if (fbHaveMMX())
+ if (pixman_have_mmx())
func = fbCompositeCopyAreammx;
#endif
break;
@@ -1448,7 +1448,7 @@ pixman_image_composite (pixman_op_t
case PIXMAN_a8b8g8r8:
case PIXMAN_x8b8g8r8:
#ifdef USE_MMX
- if (fbHaveMMX())
+ if (pixman_have_mmx())
func = fbCompositeCopyAreammx;
#endif
break;
@@ -1461,7 +1461,7 @@ pixman_image_composite (pixman_op_t
case PIXMAN_a8b8g8r8:
case PIXMAN_x8b8g8r8:
#ifdef USE_MMX
- if (fbHaveMMX())
+ if (pixman_have_mmx())
func = fbCompositeSrc_8888x8888mmx;
else
#endif
@@ -1472,7 +1472,7 @@ pixman_image_composite (pixman_op_t
break;
case PIXMAN_b5g6r5:
#ifdef USE_MMX
- if (fbHaveMMX())
+ if (pixman_have_mmx())
func = fbCompositeSrc_8888x0565mmx;
else
#endif
@@ -1496,7 +1496,7 @@ pixman_image_composite (pixman_op_t
switch (pDst->bits.format) {
case PIXMAN_a8r8g8b8:
#ifdef USE_MMX
- if (fbHaveMMX())
+ if (pixman_have_mmx())
func = fbCompositeSrcAdd_8888x8888mmx;
else
#endif
@@ -1510,7 +1510,7 @@ pixman_image_composite (pixman_op_t
switch (pDst->bits.format) {
case PIXMAN_a8b8g8r8:
#ifdef USE_MMX
- if (fbHaveMMX())
+ if (pixman_have_mmx())
func = fbCompositeSrcAdd_8888x8888mmx;
else
#endif
@@ -1524,7 +1524,7 @@ pixman_image_composite (pixman_op_t
switch (pDst->bits.format) {
case PIXMAN_a8:
#ifdef USE_MMX
- if (fbHaveMMX())
+ if (pixman_have_mmx())
func = fbCompositeSrcAdd_8000x8000mmx;
else
#endif
@@ -1560,7 +1560,7 @@ pixman_image_composite (pixman_op_t
{
srcRepeat = FALSE;
#ifdef USE_MMX
- if (fbHaveMMX())
+ if (pixman_have_mmx())
func = fbCompositeSrcAdd_8888x8x8mmx;
else
#endif
@@ -1582,7 +1582,7 @@ pixman_image_composite (pixman_op_t
case PIXMAN_x8r8g8b8:
case PIXMAN_a8b8g8r8:
case PIXMAN_x8b8g8r8:
- if (fbHaveMMX())
+ if (pixman_have_mmx())
{
srcRepeat = FALSE;
func = fbCompositeSolidMaskSrc_nx8x8888mmx;
@@ -1600,7 +1600,7 @@ pixman_image_composite (pixman_op_t
if (pSrc->bits.format == pDst->bits.format)
{
#ifdef USE_MMX
- if (pSrc->bits.bits != pDst->bits.bits && fbHaveMMX() &&
+ if (pSrc->bits.bits != pDst->bits.bits && pixman_have_mmx() &&
(PIXMAN_FORMAT_BPP (pSrc->bits.format) == 16 ||
PIXMAN_FORMAT_BPP (pSrc->bits.format) == 32))
func = fbCompositeCopyAreammx;
@@ -1620,7 +1620,7 @@ pixman_image_composite (pixman_op_t
pDst->bits.format == PIXMAN_a8 &&
!pMask)
{
- if (fbHaveMMX())
+ if (pixman_have_mmx())
func = fbCompositeIn_8x8mmx;
}
else if (srcRepeat && pMask && !pMask->common.component_alpha &&
@@ -1629,7 +1629,7 @@ pixman_image_composite (pixman_op_t
(pMask->bits.format == PIXMAN_a8) &&
pDst->bits.format == PIXMAN_a8)
{
- if (fbHaveMMX())
+ if (pixman_have_mmx())
{
srcRepeat = FALSE;
func = fbCompositeIn_nx8x8mmx;
@@ -1842,7 +1842,7 @@ static unsigned int detectCPUFeatures(vo
}
pixman_bool_t
-fbHaveMMX (void)
+pixman_have_mmx (void)
{
static pixman_bool_t initialized = FALSE;
static pixman_bool_t mmx_present;
diff --git a/pixman/pixman-utils.c b/pixman/pixman-utils.c
index dad82f8..ab6a1cd 100644
--- a/pixman/pixman-utils.c
+++ b/pixman/pixman-utils.c
@@ -69,9 +69,12 @@ pixman_blt (uint32_t *src_bits,
int width, int height)
{
#ifdef USE_MMX
- return pixman_blt_mmx (src_bits, dst_bits, src_stride, dst_stride, src_bpp, dst_bpp,
- src_x, src_y, dst_x, dst_y, width, height);
-#else
- return FALSE;
+ if (pixman_have_mmx())
+ {
+ return pixman_blt_mmx (src_bits, dst_bits, src_stride, dst_stride, src_bpp, dst_bpp,
+ src_x, src_y, dst_x, dst_y, width, height);
+ }
+ else
#endif
+ return FALSE;
}
diff-tree 105d398c4d061eb102747f824e6c04ab897cb5e1 (from 6a64eb109449806186164332383be1235ab9c21c)
Author: Søren Sandmann Pedersen <sandmann at redhat.com>
Date: Mon Jun 11 14:41:01 2007 -0400
Add pixman_blt_mmx() based on fbBltmmx() from the X server.
Implement fbCompositeAreammx() in terms of it.
Uncomment calls to fbCompositeAreammx() in pixman-pict.c
Add public pixman_blt() that just returns false if not using mmx.
diff --git a/pixman/pixman-mmx.c b/pixman/pixman-mmx.c
index 7645d2e..097b021 100644
--- a/pixman/pixman-mmx.c
+++ b/pixman/pixman-mmx.c
@@ -2726,38 +2726,21 @@ fbCompositeSrcAdd_8888x8888mmx (pixman_o
_mm_empty();
}
-#if 0
-/* FIXME */
-
-Bool
-fbCopyAreammx (DrawablePtr pSrc,
- DrawablePtr pDst,
- int src_x,
- int src_y,
- int dst_x,
- int dst_y,
- int width,
- int height)
+pixman_bool_t
+pixman_blt_mmx (uint32_t *src_bits,
+ uint32_t *dst_bits,
+ int src_stride,
+ int dst_stride,
+ int src_bpp,
+ int dst_bpp,
+ int src_x, int src_y,
+ int dst_x, int dst_y,
+ int width, int height)
{
- uint32_t * src_bits;
- int src_stride;
- int src_bpp;
- int src_xoff;
- int src_yoff;
-
- uint32_t * dst_bits;
- int dst_stride;
- int dst_bpp;
- int dst_xoff;
- int dst_yoff;
-
uint8_t * src_bytes;
uint8_t * dst_bytes;
int byte_width;
- fbGetDrawable(pSrc, src_bits, src_stride, src_bpp, src_xoff, src_yoff);
- fbGetDrawable(pDst, dst_bits, dst_stride, dst_bpp, dst_xoff, dst_yoff);
-
if (src_bpp != dst_bpp)
return FALSE;
@@ -2765,16 +2748,16 @@ fbCopyAreammx (DrawablePtr pSrc,
{
src_stride = src_stride * sizeof (uint32_t) / 2;
dst_stride = dst_stride * sizeof (uint32_t) / 2;
- src_bytes = (uint8_t *)(((uint16_t *)src_bits) + src_stride * (src_y + src_yoff) + (src_x + src_xoff));
- dst_bytes = (uint8_t *)(((uint16_t *)dst_bits) + dst_stride * (dst_y + dst_yoff) + (dst_x + dst_xoff));
+ src_bytes = (uint8_t *)(((uint16_t *)src_bits) + src_stride * (src_y) + (src_x));
+ dst_bytes = (uint8_t *)(((uint16_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
byte_width = 2 * width;
src_stride *= 2;
dst_stride *= 2;
} else if (src_bpp == 32) {
src_stride = src_stride * sizeof (uint32_t) / 4;
dst_stride = dst_stride * sizeof (uint32_t) / 4;
- src_bytes = (uint8_t *)(((uint32_t *)src_bits) + src_stride * (src_y + src_yoff) + (src_x + src_xoff));
- dst_bytes = (uint8_t *)(((uint32_t *)dst_bits) + dst_stride * (dst_y + dst_yoff) + (dst_x + dst_xoff));
+ src_bytes = (uint8_t *)(((uint32_t *)src_bits) + src_stride * (src_y) + (src_x));
+ dst_bytes = (uint8_t *)(((uint32_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
byte_width = 4 * width;
src_stride *= 4;
dst_stride *= 4;
@@ -2875,14 +2858,12 @@ fbCopyAreammx (DrawablePtr pSrc,
}
_mm_empty();
+
return TRUE;
}
-#endif
-#if 0
-/* FIXME */
void
-fbCompositeCopyAreammx (uint8_t op,
+fbCompositeCopyAreammx (pixman_op_t op,
pixman_image_t * pSrc,
pixman_image_t * pMask,
pixman_image_t * pDst,
@@ -2895,15 +2876,13 @@ fbCompositeCopyAreammx (uint8_t op,
uint16_t width,
uint16_t height)
{
- fbCopyAreammx (pSrc->pDrawable,
- pDst->pDrawable,
- xSrc, ySrc,
- xDst, yDst,
- width, height);
+ pixman_blt_mmx (pSrc->bits.bits,
+ pDst->bits.bits,
+ pSrc->bits.rowstride,
+ pDst->bits.rowstride,
+ PIXMAN_FORMAT_BPP (pSrc->bits.format),
+ PIXMAN_FORMAT_BPP (pDst->bits.format),
+ xSrc, ySrc, xDst, yDst, width, height);
}
-#endif
-
-
-
#endif /* USE_MMX */
diff --git a/pixman/pixman-mmx.h b/pixman/pixman-mmx.h
index 9314329..fd888f3 100644
--- a/pixman/pixman-mmx.h
+++ b/pixman/pixman-mmx.h
@@ -277,6 +277,7 @@ pixman_bool_t fbCopyAreammx (DrawablePtr
int width,
int height);
#endif
+
void fbCompositeCopyAreammx (pixman_op_t op,
pixman_image_t * pSrc,
pixman_image_t * pMask,
diff --git a/pixman/pixman-pict.c b/pixman/pixman-pict.c
index 76793b1..96431a3 100644
--- a/pixman/pixman-pict.c
+++ b/pixman/pixman-pict.c
@@ -1395,12 +1395,7 @@ pixman_image_composite (pixman_op_t
#ifdef USE_MMX
if (fbHaveMMX() &&
(pSrc->bits.format == PIXMAN_x8r8g8b8 || pSrc->bits.format == PIXMAN_x8b8g8r8))
-#if 0
- /* FIXME */
-
- func = fbCompositeCopyAreammx
-#endif
- ;
+ func = fbCompositeCopyAreammx;
else
#endif
#if 0
@@ -1442,11 +1437,7 @@ pixman_image_composite (pixman_op_t
case PIXMAN_x8r8g8b8:
#ifdef USE_MMX
if (fbHaveMMX())
-#if 0
- /* FIXME */
- func = fbCompositeCopyAreammx
-#endif
- ;
+ func = fbCompositeCopyAreammx;
#endif
break;
default:
@@ -1458,11 +1449,7 @@ pixman_image_composite (pixman_op_t
case PIXMAN_x8b8g8r8:
#ifdef USE_MMX
if (fbHaveMMX())
-#if 0
- /* FIXME */
- func = fbCompositeCopyAreammx
-#endif
- ;
+ func = fbCompositeCopyAreammx;
#endif
break;
default:
@@ -1616,11 +1603,7 @@ pixman_image_composite (pixman_op_t
if (pSrc->bits.bits != pDst->bits.bits && fbHaveMMX() &&
(PIXMAN_FORMAT_BPP (pSrc->bits.format) == 16 ||
PIXMAN_FORMAT_BPP (pSrc->bits.format) == 32))
-#if 0
- /* FIXME */
- func = fbCompositeCopyAreammx
-#endif
- ;
+ func = fbCompositeCopyAreammx;
else
#endif
/* FIXME */
diff --git a/pixman/pixman-utils.c b/pixman/pixman-utils.c
index e27d0d6..dad82f8 100644
--- a/pixman/pixman-utils.c
+++ b/pixman/pixman-utils.c
@@ -56,3 +56,22 @@ pixman_transform_point_3d (pixman_transf
*vector = result;
return TRUE;
}
+
+pixman_bool_t
+pixman_blt (uint32_t *src_bits,
+ uint32_t *dst_bits,
+ int src_stride,
+ int dst_stride,
+ int src_bpp,
+ int dst_bpp,
+ int src_x, int src_y,
+ int dst_x, int dst_y,
+ int width, int height)
+{
+#ifdef USE_MMX
+ return pixman_blt_mmx (src_bits, dst_bits, src_stride, dst_stride, src_bpp, dst_bpp,
+ src_x, src_y, dst_x, dst_y, width, height);
+#else
+ return FALSE;
+#endif
+}
diff --git a/pixman/pixman.h b/pixman/pixman.h
index 7f33273..0421723 100644
--- a/pixman/pixman.h
+++ b/pixman/pixman.h
@@ -289,6 +289,18 @@ pixman_bool_t pixman_region_equal (pixm
pixman_bool_t pixman_region_selfcheck (pixman_region16_t *region);
void pixman_region_reset(pixman_region16_t *region, pixman_box16_t *box);
+
+/* Copy / Fill */
+pixman_bool_t pixman_blt (uint32_t *src_bits,
+ uint32_t *dst_bits,
+ int src_stride,
+ int dst_stride,
+ int src_bpp,
+ int dst_bpp,
+ int src_x, int src_y,
+ int dst_x, int dst_y,
+ int width, int height);
+
/*
* Images
*/
More information about the xorg-commit
mailing list