Index: fb/fbfill.c =================================================================== RCS file: /cvs/xorg/xserver/xorg/fb/fbfill.c,v retrieving revision 1.7 diff -u -p -r1.7 fbfill.c --- fb/fbfill.c 2 Oct 2005 08:28:26 -0000 1.7 +++ fb/fbfill.c 2 Jan 2006 14:01:50 -0000 @@ -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, Index: fb/fbwindow.c =================================================================== RCS file: /cvs/xorg/xserver/xorg/fb/fbwindow.c,v retrieving revision 1.9 diff -u -p -r1.9 fbwindow.c --- fb/fbwindow.c 2 Oct 2005 08:28:26 -0000 1.9 +++ fb/fbwindow.c 2 Jan 2006 14:01:50 -0000 @@ -218,10 +218,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, @@ -229,6 +242,9 @@ fbFillRegionSolid (DrawablePtr pDrawable (pbox->x2 - pbox->x1) * dstBpp, pbox->y2 - pbox->y1, and, xor); +#ifdef USE_MMX + } +#endif fbValidateDrawable (pDrawable); pbox++; }