xserver: Branch 'master' - 3 commits
Søren Sandmann Pedersen
sandmann at kemper.freedesktop.org
Mon Jun 11 11:19:47 PDT 2007
fb/fbcopy.c | 18 ++++++---------
fb/fbfill.c | 5 +++-
fb/fbmmx.c | 69 +++++++++++++++++++++---------------------------------------
fb/fbmmx.h | 32 ++++++++++++++-------------
4 files changed, 53 insertions(+), 71 deletions(-)
New commits:
diff-tree d06099b38e8445e6e31f5178ffefcc31a71080ef (from d4a034370c8ae71b2cc4fe824ceee58b19624f35)
Author: Søren Sandmann Pedersen <sandmann at redhat.com>
Date: Mon Jun 11 13:28:24 2007 -0400
Remove fbCopyAreammx() and fbSolidFillmmx()
diff --git a/fb/fbmmx.c b/fb/fbmmx.c
index 6a593ff..3522a00 100644
--- a/fb/fbmmx.c
+++ b/fb/fbmmx.c
@@ -202,26 +202,6 @@ fbFillmmx (FbBits *bits,
}
Bool
-fbSolidFillmmx (DrawablePtr pDraw,
- int x,
- int y,
- int width,
- int height,
- FbBits xor)
-{
- FbStride stride;
- int bpp;
- FbBits *bits;
- int xoff, yoff;
-
- CHECKPOINT();
-
- fbGetDrawable(pDraw, bits, stride, bpp, xoff, yoff);
-
- return fbFillmmx (bits, stride, bpp, x + xoff, y + yoff, width, height, xor);
-}
-
-Bool
fbBltmmx (FbBits *src_bits,
FbBits *dst_bits,
FbStride src_stride,
@@ -357,36 +337,5 @@ fbBltmmx (FbBits *src_bits,
return TRUE;
}
-Bool
-fbCopyAreammx (DrawablePtr pSrc,
- DrawablePtr pDst,
- int src_x,
- int src_y,
- int dst_x,
- int dst_y,
- int width,
- int height)
-{
- FbBits * src_bits;
- FbStride src_stride;
- int src_bpp;
- int src_xoff;
- int src_yoff;
-
- FbBits * dst_bits;
- FbStride dst_stride;
- int dst_bpp;
- int dst_xoff;
- int dst_yoff;
-
- fbGetDrawable(pSrc, src_bits, src_stride, src_bpp, src_xoff, src_yoff);
- fbGetDrawable(pDst, dst_bits, dst_stride, dst_bpp, dst_xoff, dst_yoff);
-
- return fbBltmmx (src_bits, dst_bits, src_stride, dst_stride, src_bpp, dst_bpp,
- src_x + src_xoff, src_y + src_yoff,
- dst_x + dst_xoff, dst_y + dst_yoff,
- width, height);
-}
-
#endif /* RENDER */
#endif /* USE_MMX */
diff --git a/fb/fbmmx.h b/fb/fbmmx.h
index dda395a..7d32a38 100644
--- a/fb/fbmmx.h
+++ b/fb/fbmmx.h
@@ -53,14 +53,6 @@ Bool fbBltmmx (FbBits *src_bits,
int src_x, int src_y,
int dst_x, int dst_y,
int width, int height);
-Bool fbCopyAreammx (DrawablePtr pSrc,
- DrawablePtr pDst,
- int src_x,
- int src_y,
- int dst_x,
- int dst_y,
- int width,
- int height);
Bool fbFillmmx (FbBits *bits,
FbStride stride,
int bpp,
@@ -69,11 +61,4 @@ Bool fbFillmmx (FbBits *bits,
int width,
int height,
FbBits xor);
-Bool fbSolidFillmmx (DrawablePtr pDraw,
- int x,
- int y,
- int width,
- int height,
- FbBits xor);
-
#endif /* USE_MMX */
diff-tree d4a034370c8ae71b2cc4fe824ceee58b19624f35 (from 3210902a7334f3d8d6c18a34a3cb3f55803b0043)
Author: Søren Sandmann Pedersen <sandmann at redhat.com>
Date: Mon Jun 11 13:26:24 2007 -0400
Split fbSolidFillmmx() into a new FbFillmmx() function. Call that from fbFill().
diff --git a/fb/fbfill.c b/fb/fbfill.c
index 7ef3a70..35e4427 100644
--- a/fb/fbfill.c
+++ b/fb/fbfill.c
@@ -49,10 +49,13 @@ fbFill (DrawablePtr pDrawable,
case FillSolid:
#ifdef USE_MMX
if (!pPriv->and && fbHaveMMX())
- if (fbSolidFillmmx (pDrawable, x, y, width, height, pPriv->xor)) {
+ {
+ if (fbFillmmx (dst, dstStride, dstBpp, x + dstXoff, y + dstYoff, width, height, pPriv->xor))
+ {
fbFinishAccess (pDrawable);
return;
}
+ }
#endif
fbSolid (dst + (y + dstYoff) * dstStride,
dstStride,
diff --git a/fb/fbmmx.c b/fb/fbmmx.c
index 7fb4b15..6a593ff 100644
--- a/fb/fbmmx.c
+++ b/fb/fbmmx.c
@@ -74,29 +74,23 @@ typedef __m64 mmxdatafield;
#endif
Bool
-fbSolidFillmmx (DrawablePtr pDraw,
- int x,
- int y,
- int width,
- int height,
- FbBits xor)
-{
- FbStride stride;
- int bpp;
+fbFillmmx (FbBits *bits,
+ FbStride stride,
+ int bpp,
+ int x,
+ int y,
+ int width,
+ int height,
+ FbBits xor)
+{
ullong fill;
__m64 vfill;
CARD32 byte_width;
CARD8 *byte_line;
- FbBits *bits;
- int xoff, yoff;
#ifdef __GNUC__
__m64 v1, v2, v3, v4, v5, v6, v7;
#endif
- CHECKPOINT();
-
- fbGetDrawable(pDraw, bits, stride, bpp, xoff, yoff);
-
if (bpp == 16 && (xor >> 16 != (xor & 0xffff)))
return FALSE;
@@ -106,14 +100,14 @@ fbSolidFillmmx (DrawablePtr pDraw,
if (bpp == 16)
{
stride = stride * sizeof (FbBits) / 2;
- byte_line = (CARD8 *)(((CARD16 *)bits) + stride * (y + yoff) + (x + xoff));
+ byte_line = (CARD8 *)(((CARD16 *)bits) + stride * y + x);
byte_width = 2 * width;
stride *= 2;
}
else
{
stride = stride * sizeof (FbBits) / 4;
- byte_line = (CARD8 *)(((CARD32 *)bits) + stride * (y + yoff) + (x + xoff));
+ byte_line = (CARD8 *)(((CARD32 *)bits) + stride * y + x);
byte_width = 4 * width;
stride *= 4;
}
@@ -208,6 +202,26 @@ fbSolidFillmmx (DrawablePtr pDraw,
}
Bool
+fbSolidFillmmx (DrawablePtr pDraw,
+ int x,
+ int y,
+ int width,
+ int height,
+ FbBits xor)
+{
+ FbStride stride;
+ int bpp;
+ FbBits *bits;
+ int xoff, yoff;
+
+ CHECKPOINT();
+
+ fbGetDrawable(pDraw, bits, stride, bpp, xoff, yoff);
+
+ return fbFillmmx (bits, stride, bpp, x + xoff, y + yoff, width, height, xor);
+}
+
+Bool
fbBltmmx (FbBits *src_bits,
FbBits *dst_bits,
FbStride src_stride,
diff --git a/fb/fbmmx.h b/fb/fbmmx.h
index a529526..dda395a 100644
--- a/fb/fbmmx.h
+++ b/fb/fbmmx.h
@@ -61,6 +61,14 @@ Bool fbCopyAreammx (DrawablePtr pSrc,
int dst_y,
int width,
int height);
+Bool fbFillmmx (FbBits *bits,
+ FbStride stride,
+ int bpp,
+ int x,
+ int y,
+ int width,
+ int height,
+ FbBits xor);
Bool fbSolidFillmmx (DrawablePtr pDraw,
int x,
int y,
diff-tree 3210902a7334f3d8d6c18a34a3cb3f55803b0043 (from 8d5f4368eac1b259db3e61f877a4cc10f04efa2f)
Author: Søren Sandmann Pedersen <sandmann at redhat.com>
Date: Mon Jun 11 13:14:50 2007 -0400
Split fbCopyAreammx() into a new fbBltmmx() function; call this
function from fbCopyNToN().
diff --git a/fb/fbcopy.c b/fb/fbcopy.c
index 164cd3d..74ff358 100644
--- a/fb/fbcopy.c
+++ b/fb/fbcopy.c
@@ -64,17 +64,13 @@ fbCopyNtoN (DrawablePtr pSrcDrawable,
if (pm == FB_ALLONES && alu == GXcopy && !reverse &&
!upsidedown && fbHaveMMX())
{
- if (!fbCopyAreammx (pSrcDrawable,
- pDstDrawable,
-
- (pbox->x1 + dx),
- (pbox->y1 + dy),
-
- (pbox->x1),
- (pbox->y1),
-
- (pbox->x2 - pbox->x1),
- (pbox->y2 - pbox->y1)))
+ if (!fbBltmmx (src, dst, srcStride, dstStride, srcBpp, dstBpp,
+ (pbox->x1 + dx + srcXoff),
+ (pbox->y1 + dy + srcYoff),
+ (pbox->x1 + srcXoff),
+ (pbox->y1 + srcYoff),
+ (pbox->x2 - pbox->x1),
+ (pbox->y2 - pbox->y1)))
goto fallback;
else
goto next;
diff --git a/fb/fbmmx.c b/fb/fbmmx.c
index b2fe94b..7fb4b15 100644
--- a/fb/fbmmx.c
+++ b/fb/fbmmx.c
@@ -208,34 +208,20 @@ fbSolidFillmmx (DrawablePtr pDraw,
}
Bool
-fbCopyAreammx (DrawablePtr pSrc,
- DrawablePtr pDst,
- int src_x,
- int src_y,
- int dst_x,
- int dst_y,
- int width,
- int height)
+fbBltmmx (FbBits *src_bits,
+ FbBits *dst_bits,
+ FbStride src_stride,
+ FbStride dst_stride,
+ int src_bpp,
+ int dst_bpp,
+ int src_x, int src_y,
+ int dst_x, int dst_y,
+ int width, int height)
{
- FbBits * src_bits;
- FbStride src_stride;
- int src_bpp;
- int src_xoff;
- int src_yoff;
-
- FbBits * dst_bits;
- FbStride dst_stride;
- int dst_bpp;
- int dst_xoff;
- int dst_yoff;
-
CARD8 * src_bytes;
CARD8 * 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;
@@ -243,16 +229,16 @@ fbCopyAreammx (DrawablePtr pSrc,
{
src_stride = src_stride * sizeof (FbBits) / 2;
dst_stride = dst_stride * sizeof (FbBits) / 2;
- src_bytes = (CARD8 *)(((CARD16 *)src_bits) + src_stride * (src_y + src_yoff) + (src_x + src_xoff));
- dst_bytes = (CARD8 *)(((CARD16 *)dst_bits) + dst_stride * (dst_y + dst_yoff) + (dst_x + dst_xoff));
+ src_bytes = (CARD8 *)(((CARD16 *)src_bits) + src_stride * (src_y) + (src_x));
+ dst_bytes = (CARD8 *)(((CARD16 *)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 (FbBits) / 4;
dst_stride = dst_stride * sizeof (FbBits) / 4;
- src_bytes = (CARD8 *)(((CARD32 *)src_bits) + src_stride * (src_y + src_yoff) + (src_x + src_xoff));
- dst_bytes = (CARD8 *)(((CARD32 *)dst_bits) + dst_stride * (dst_y + dst_yoff) + (dst_x + dst_xoff));
+ src_bytes = (CARD8 *)(((CARD32 *)src_bits) + src_stride * (src_y) + (src_x));
+ dst_bytes = (CARD8 *)(((CARD32 *)dst_bits) + dst_stride * (dst_y) + (dst_x));
byte_width = 4 * width;
src_stride *= 4;
dst_stride *= 4;
@@ -353,8 +339,40 @@ fbCopyAreammx (DrawablePtr pSrc,
}
_mm_empty();
+
return TRUE;
}
+Bool
+fbCopyAreammx (DrawablePtr pSrc,
+ DrawablePtr pDst,
+ int src_x,
+ int src_y,
+ int dst_x,
+ int dst_y,
+ int width,
+ int height)
+{
+ FbBits * src_bits;
+ FbStride src_stride;
+ int src_bpp;
+ int src_xoff;
+ int src_yoff;
+
+ FbBits * dst_bits;
+ FbStride dst_stride;
+ int dst_bpp;
+ int dst_xoff;
+ int dst_yoff;
+
+ fbGetDrawable(pSrc, src_bits, src_stride, src_bpp, src_xoff, src_yoff);
+ fbGetDrawable(pDst, dst_bits, dst_stride, dst_bpp, dst_xoff, dst_yoff);
+
+ return fbBltmmx (src_bits, dst_bits, src_stride, dst_stride, src_bpp, dst_bpp,
+ src_x + src_xoff, src_y + src_yoff,
+ dst_x + dst_xoff, dst_y + dst_yoff,
+ width, height);
+}
+
#endif /* RENDER */
#endif /* USE_MMX */
diff --git a/fb/fbmmx.h b/fb/fbmmx.h
index 4796438..a529526 100644
--- a/fb/fbmmx.h
+++ b/fb/fbmmx.h
@@ -44,6 +44,15 @@ Bool fbHaveMMX(void);
#ifdef USE_MMX
+Bool fbBltmmx (FbBits *src_bits,
+ FbBits *dst_bits,
+ FbStride src_stride,
+ FbStride dst_stride,
+ int src_bpp,
+ int dst_bpp,
+ int src_x, int src_y,
+ int dst_x, int dst_y,
+ int width, int height);
Bool fbCopyAreammx (DrawablePtr pSrc,
DrawablePtr pDst,
int src_x,
More information about the xorg-commit
mailing list