Again only tested against 1.9.2.901.

On Mon, Dec 13, 2010 at 7:42 PM, Maarten Maathuis <[email protected]> wrote:
> - Apps like xterm can trigger a lot of fallback rendering.
> - This can lead to (annoyingly) high latencies, because you
>  have to wait for the block handler.
> - You need a driver that doesn't directly access the front
>  buffer to trigger this (NV50+ nouveau for example).
> - Repeatingly doing dmesg on an xterm with a bitmap font
>  will reveal that you never see part of the text.
> - I have recieved at least one complaint in the past of slow
>  terminal performance, which was related to core font
>  rendering.
> - This does sacrifice some throughput, not sure how much,
>  but users tend to respond poorly to unexpected latency IMO.
>
> Signed-off-by: Maarten Maathuis <[email protected]>
> ---
>  exa/exa_migration_mixed.c |   17 +++++++++++++----
>  1 files changed, 13 insertions(+), 4 deletions(-)
>
> diff --git a/exa/exa_migration_mixed.c b/exa/exa_migration_mixed.c
> index fb47151..4f49905 100644
> --- a/exa/exa_migration_mixed.c
> +++ b/exa/exa_migration_mixed.c
> @@ -138,6 +138,7 @@ void
>  exaDamageReport_mixed(DamagePtr pDamage, RegionPtr pRegion, void *closure)
>  {
>     PixmapPtr pPixmap = closure;
> +    ScreenPtr pScreen = pPixmap->drawable.pScreen;
>     ExaPixmapPriv(pPixmap);
>
>     /* Move back results of software rendering on system memory copy of mixed 
> driver
> @@ -149,10 +150,18 @@ exaDamageReport_mixed(DamagePtr pDamage, RegionPtr 
> pRegion, void *closure)
>     if (!pExaPixmap->use_gpu_copy && exaPixmapHasGpuCopy(pPixmap)) {
>        ExaScreenPriv(pPixmap->drawable.pScreen);
>
> -       if (pExaScr->deferred_mixed_pixmap &&
> -           pExaScr->deferred_mixed_pixmap != pPixmap)
> -           exaMoveInPixmap_mixed(pExaScr->deferred_mixed_pixmap);
> -       pExaScr->deferred_mixed_pixmap = pPixmap;
> +       /* Front buffer: Don't wait for the block handler to copy back the 
> data.
> +        * This avoids annoying latency if you encounter a lot of software 
> rendering.
> +        */
> +       if (pPixmap == pScreen->GetScreenPixmap(pScreen))
> +               exaMoveInPixmap_mixed(pPixmap);
> +       else {
> +               if (pExaScr->deferred_mixed_pixmap &&
> +                   pExaScr->deferred_mixed_pixmap != pPixmap)
> +                   exaMoveInPixmap_mixed(pExaScr->deferred_mixed_pixmap);
> +
> +               pExaScr->deferred_mixed_pixmap = pPixmap;
> +       }
>     }
>  }
>
> --
> 1.7.3.2
>
>



-- 
Far away from the primal instinct, the song seems to fade away, the
river get wider between your thoughts and the things we do and say.
_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to