On Mon, 25 Oct 2010 17:13:58 +0300
Pauli Nieminen <ext-pauli.niemi...@nokia.com> wrote:

> There isn't API that allows application atomically query for msc changes
> and schedule swaps. If msc changes dramatically between query and
> scheduling application would schedule swap to happen at wrong time.
> 
> Because of API limitations driver has to make msc increment for each
> vblank affecting the drawable.
> 
> Signed-off-by: Pauli Nieminen <ext-pauli.niemi...@nokia.com>
> CC: Kristian Høgsberg <k...@bitplanet.net>
> ---
>  hw/xfree86/dri2/dri2.c |    7 +++++--
>  1 files changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/hw/xfree86/dri2/dri2.c b/hw/xfree86/dri2/dri2.c
> index d9b9d57..d70c115 100644
> --- a/hw/xfree86/dri2/dri2.c
> +++ b/hw/xfree86/dri2/dri2.c
> @@ -860,9 +860,12 @@ DRI2SwapBuffers(ClientPtr client, DrawablePtr pDraw, 
> CARD64 target_msc,
>           if (!(*ds->GetMSC)(pDraw, &ust, &current_msc))
>               pPriv->last_swap_target = 0;
>  
> -         if (current_msc < pPriv->last_swap_target)
> +         if (current_msc < pPriv->last_swap_target) {
>               pPriv->last_swap_target = current_msc;
> -
> +             xf86DrvMsg(pScreen->myNum, X_ERROR,
> +                     "[DRI2] %s: GetMSC returned swap count that is in "
> +                     "past. Working around driver bug.\n", __func__);
> +         }
>       }

This one scares me a little.  We added this so we could also catch
drawables moving between screens with different msc bases, so this
patch could cause a lot of false positives (no question that the specs
could use some additions here though).

Making it a debug message that only shows up with -verbose would be
fine though.

-- 
Jesse Barnes, Intel Open Source Technology Center
_______________________________________________
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to