On Oct 25, 2010, at 6:52 PM, Jesse Barnes wrote:

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, &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

I agree with Jesse, as a debug message at -verbose it would be fine.

-mario

_______________________________________________
[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