Split fbSolidFillmmx() into a new FbFillmmx() function. Call that from fbFill().
This commit is contained in:
parent
3210902a73
commit
d4a034370c
|
@ -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,
|
||||
|
|
46
fb/fbmmx.c
46
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)
|
||||
fbFillmmx (FbBits *bits,
|
||||
FbStride stride,
|
||||
int bpp,
|
||||
int x,
|
||||
int y,
|
||||
int width,
|
||||
int height,
|
||||
FbBits xor)
|
||||
{
|
||||
FbStride stride;
|
||||
int bpp;
|
||||
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;
|
||||
}
|
||||
|
@ -207,6 +201,26 @@ fbSolidFillmmx (DrawablePtr pDraw,
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
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,
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue