On Mon, 25 Oct 2010 17:13:58 +0300 Pauli Nieminen <[email protected]> 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 <[email protected]> > CC: Kristian Høgsberg <[email protected]> > --- > 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, ¤t_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 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
