mirror of
https://github.com/X11Libre/xserver.git
synced 2026-09-15 19:22:22 +00:00
Thu Jan 13 15:40:29 2005 Søren Sandmann <sandmann@redhat.com>
Add MMX implementation of non-repeating source IN repeating mask, aka
"translucent window".
Add MMX implementation of CopyArea.
Use MMX implementation of CopyArea.
Use the new implementations.
This commit is contained in:
parent
a303670107
commit
433c38f22f
5 changed files with 378 additions and 11 deletions
38
fb/fbcopy.c
38
fb/fbcopy.c
|
|
@ -27,6 +27,7 @@
|
|||
#ifdef IN_MODULE
|
||||
#include "xf86_ansic.h"
|
||||
#endif
|
||||
#include "fbmmx.h"
|
||||
|
||||
void
|
||||
fbCopyNtoN (DrawablePtr pSrcDrawable,
|
||||
|
|
@ -54,28 +55,51 @@ fbCopyNtoN (DrawablePtr pSrcDrawable,
|
|||
|
||||
fbGetDrawable (pSrcDrawable, src, srcStride, srcBpp, srcXoff, srcYoff);
|
||||
fbGetDrawable (pDstDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
|
||||
|
||||
|
||||
while (nbox--)
|
||||
{
|
||||
#ifdef USE_MMX
|
||||
if (!reverse && !upsidedown && fbHaveMMX())
|
||||
{
|
||||
if (!fbCopyAreammx (pSrcDrawable,
|
||||
pDstDrawable,
|
||||
|
||||
(pbox->x1 + dx + srcXoff),
|
||||
(pbox->y1 + dy + srcYoff),
|
||||
|
||||
(pbox->x1 + dstXoff),
|
||||
(pbox->y1 + dstYoff),
|
||||
|
||||
(pbox->x2 - pbox->x1),
|
||||
(pbox->y2 - pbox->y1)))
|
||||
goto fallback;
|
||||
else
|
||||
goto next;
|
||||
}
|
||||
fallback:
|
||||
#endif
|
||||
fbBlt (src + (pbox->y1 + dy + srcYoff) * srcStride,
|
||||
srcStride,
|
||||
(pbox->x1 + dx + srcXoff) * srcBpp,
|
||||
|
||||
|
||||
dst + (pbox->y1 + dstYoff) * dstStride,
|
||||
dstStride,
|
||||
(pbox->x1 + dstXoff) * dstBpp,
|
||||
|
||||
|
||||
(pbox->x2 - pbox->x1) * dstBpp,
|
||||
(pbox->y2 - pbox->y1),
|
||||
|
||||
|
||||
alu,
|
||||
pm,
|
||||
dstBpp,
|
||||
|
||||
|
||||
reverse,
|
||||
upsidedown);
|
||||
#ifdef USE_MMX
|
||||
next:
|
||||
#endif
|
||||
pbox++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -594,7 +618,7 @@ fbCopyArea (DrawablePtr pSrcDrawable,
|
|||
int yOut)
|
||||
{
|
||||
fbCopyProc copy;
|
||||
|
||||
|
||||
#ifdef FB_24_32BIT
|
||||
if (pSrcDrawable->bitsPerPixel != pDstDrawable->bitsPerPixel)
|
||||
copy = fb24_32CopyMtoN;
|
||||
|
|
|
|||
Loading…
Reference in a new issue