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:
|
case FillSolid:
|
||||||
#ifdef USE_MMX
|
#ifdef USE_MMX
|
||||||
if (!pPriv->and && fbHaveMMX())
|
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);
|
fbFinishAccess (pDrawable);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
fbSolid (dst + (y + dstYoff) * dstStride,
|
fbSolid (dst + (y + dstYoff) * dstStride,
|
||||||
dstStride,
|
dstStride,
|
||||||
|
|
48
fb/fbmmx.c
48
fb/fbmmx.c
|
@ -74,29 +74,23 @@ typedef __m64 mmxdatafield;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Bool
|
Bool
|
||||||
fbSolidFillmmx (DrawablePtr pDraw,
|
fbFillmmx (FbBits *bits,
|
||||||
int x,
|
FbStride stride,
|
||||||
int y,
|
int bpp,
|
||||||
int width,
|
int x,
|
||||||
int height,
|
int y,
|
||||||
FbBits xor)
|
int width,
|
||||||
{
|
int height,
|
||||||
FbStride stride;
|
FbBits xor)
|
||||||
int bpp;
|
{
|
||||||
ullong fill;
|
ullong fill;
|
||||||
__m64 vfill;
|
__m64 vfill;
|
||||||
CARD32 byte_width;
|
CARD32 byte_width;
|
||||||
CARD8 *byte_line;
|
CARD8 *byte_line;
|
||||||
FbBits *bits;
|
|
||||||
int xoff, yoff;
|
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
__m64 v1, v2, v3, v4, v5, v6, v7;
|
__m64 v1, v2, v3, v4, v5, v6, v7;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
CHECKPOINT();
|
|
||||||
|
|
||||||
fbGetDrawable(pDraw, bits, stride, bpp, xoff, yoff);
|
|
||||||
|
|
||||||
if (bpp == 16 && (xor >> 16 != (xor & 0xffff)))
|
if (bpp == 16 && (xor >> 16 != (xor & 0xffff)))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
@ -106,14 +100,14 @@ fbSolidFillmmx (DrawablePtr pDraw,
|
||||||
if (bpp == 16)
|
if (bpp == 16)
|
||||||
{
|
{
|
||||||
stride = stride * sizeof (FbBits) / 2;
|
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;
|
byte_width = 2 * width;
|
||||||
stride *= 2;
|
stride *= 2;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
stride = stride * sizeof (FbBits) / 4;
|
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;
|
byte_width = 4 * width;
|
||||||
stride *= 4;
|
stride *= 4;
|
||||||
}
|
}
|
||||||
|
@ -207,6 +201,26 @@ fbSolidFillmmx (DrawablePtr pDraw,
|
||||||
return TRUE;
|
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
|
Bool
|
||||||
fbBltmmx (FbBits *src_bits,
|
fbBltmmx (FbBits *src_bits,
|
||||||
FbBits *dst_bits,
|
FbBits *dst_bits,
|
||||||
|
|
|
@ -61,6 +61,14 @@ Bool fbCopyAreammx (DrawablePtr pSrc,
|
||||||
int dst_y,
|
int dst_y,
|
||||||
int width,
|
int width,
|
||||||
int height);
|
int height);
|
||||||
|
Bool fbFillmmx (FbBits *bits,
|
||||||
|
FbStride stride,
|
||||||
|
int bpp,
|
||||||
|
int x,
|
||||||
|
int y,
|
||||||
|
int width,
|
||||||
|
int height,
|
||||||
|
FbBits xor);
|
||||||
Bool fbSolidFillmmx (DrawablePtr pDraw,
|
Bool fbSolidFillmmx (DrawablePtr pDraw,
|
||||||
int x,
|
int x,
|
||||||
int y,
|
int y,
|
||||||
|
|
Loading…
Reference in New Issue