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__); + } } /* -- 1.7.0.4
_______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
