[PATCH 2/4] EXA: Use relevant source region to minimize migration on CopyWindow fallbacks.
Maarten Maathuis
madman2003 at gmail.com
Mon Dec 28 04:41:04 PST 2009
Acked-by: Maarten Maathuis <madman2003 at gmail.com>
2009/12/28 Michel Dänzer <michel at daenzer.net>:
> From: Michel Dänzer <daenzer at vmware.com>
>
> Signed-off-by: Michel Dänzer <daenzer at vmware.com>
> ---
> exa/exa_unaccel.c | 14 ++++++++++++--
> 1 files changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/exa/exa_unaccel.c b/exa/exa_unaccel.c
> index 0dbcd53..f077fc8 100644
> --- a/exa/exa_unaccel.c
> +++ b/exa/exa_unaccel.c
> @@ -313,8 +313,18 @@ ExaCheckCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc)
> EXA_PRE_FALLBACK(pScreen);
> EXA_FALLBACK(("from %p\n", pWin));
>
> - /* being both src and dest, src is safest. */
> - exaPrepareAccess(pDrawable, EXA_PREPARE_SRC);
> + /* Only need the source bits, the destination region will be overwritten */
> + if (pExaScr->prepare_access_reg) {
> + PixmapPtr pPixmap = pScreen->GetWindowPixmap(pWin);
> + int xoff, yoff;
> +
> + exaGetDrawableDeltas(&pWin->drawable, pPixmap, &xoff, &yoff);
> + REGION_TRANSLATE(pScreen, prgnSrc, xoff, yoff);
> + pExaScr->prepare_access_reg(pPixmap, EXA_PREPARE_SRC, prgnSrc);
> + REGION_TRANSLATE(pScreen, prgnSrc, -xoff, -yoff);
> + } else
> + exaPrepareAccess(pDrawable, EXA_PREPARE_SRC);
> +
> swap(pExaScr, pScreen, CopyWindow);
> pScreen->CopyWindow (pWin, ptOldOrg, prgnSrc);
> swap(pExaScr, pScreen, CopyWindow);
> --
> 1.6.5.7
>
> _______________________________________________
> xorg-devel mailing list
> xorg-devel at lists.x.org
> http://lists.x.org/mailman/listinfo/xorg-devel
>
More information about the xorg-devel
mailing list