[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