diff --git a/ChangeLog b/ChangeLog index 8a5f9951a..fa26a154a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-04-03 Adam Jackson + + * fb/fbfill.c: + * fb/fbwindow.c: + Bug #5478: More use of fbSOlidFillmmx. (Jim Huang) + 2006-04-03 Adam Jackson * fb/fbmmx.c: diff --git a/fb/fbfill.c b/fb/fbfill.c index c61ff3b4c..678c7f927 100644 --- a/fb/fbfill.c +++ b/fb/fbfill.c @@ -209,7 +209,17 @@ fbSolidBoxClipped (DrawablePtr pDrawable, if (partY2 <= partY1) continue; - + +#ifdef USE_MMX + if (!and && fbHaveMMX()) + { + if (fbSolidFillmmx (pDrawable, + partX1, partY1, + (partX2 - partX1), (partY2 - partY1), + xor)) + return; + } +#endif fbSolid (dst + (partY1 + dstYoff) * dstStride, dstStride, (partX1 + dstXoff) * dstBpp, diff --git a/fb/fbwindow.c b/fb/fbwindow.c index d4046b5f1..4c1c5463d 100644 --- a/fb/fbwindow.c +++ b/fb/fbwindow.c @@ -1,4 +1,4 @@ -/* $XdotOrg: xserver/xorg/fb/fbwindow.c,v 1.9 2005/10/02 08:28:26 anholt Exp $ */ +/* $XdotOrg: xserver/xorg/fb/fbwindow.c,v 1.10 2006/02/10 22:00:21 anholt Exp $ */ /* * Id: fbwindow.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * @@ -217,10 +217,23 @@ fbFillRegionSolid (DrawablePtr pDrawable, int n = REGION_NUM_RECTS(pRegion); BoxPtr pbox = REGION_RECTS(pRegion); +#ifdef USE_MMX + int has_mmx = 0; + if (!and && fbHaveMMX()) + has_mmx = 1; +#endif + fbGetDrawable (pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff); while (n--) { +#ifdef USE_MMX + if (!has_mmx || !fbSolidFillmmx (pDrawable, + pbox->x1, + pbox->y1, + (pbox->x2 - pbox->x1), + (pbox->y2 - pbox->y1), xor)) { +#endif fbSolid (dst + (pbox->y1 + dstYoff) * dstStride, dstStride, (pbox->x1 + dstXoff) * dstBpp, @@ -228,6 +241,9 @@ fbFillRegionSolid (DrawablePtr pDrawable, (pbox->x2 - pbox->x1) * dstBpp, pbox->y2 - pbox->y1, and, xor); +#ifdef USE_MMX + } +#endif fbValidateDrawable (pDrawable); pbox++; }