From: Chris Wilson Date: Thu, 24 Dec 2015 15:42:37 +0000 (+0000) Subject: va/x11: Require synchronisation to vblank with DRI2SwapBuffers X-Git-Tag: android-x86-7.1-r1~64 X-Git-Url: http://git.osdn.net/view?p=android-x86%2Fhardware-intel-common-libva.git;a=commitdiff_plain;h=6b8fbf6ea348bb2970af2df9b8e0b3493e3e86f5 va/x11: Require synchronisation to vblank with DRI2SwapBuffers By passing divisor=0, we imply we do not care about synchronisation of this request to the vertical refresh - the spec says that if we miss the target frame, the swap will be presented as quickly as possible and may forgo waiting until the next vblank. By using divisor=1, we request that the swap be presented upon the vertical refresh immediately following recipe, enforcing the synchronisation to vblank and avoiding tearing. Reported-and-tested-by: Lukas Hejtmanek Signed-off-by: Chris Wilson Reviewed-by: Sean V Kelley --- diff --git a/va/x11/dri2_util.c b/va/x11/dri2_util.c index 1245432..4fddf37 100644 --- a/va/x11/dri2_util.c +++ b/va/x11/dri2_util.c @@ -95,8 +95,9 @@ dri2SwapBuffer(VADriverContextP ctx, struct dri_drawable *dri_drawable) if (dri2_drawable->has_backbuffer) { if (gsDRI2SwapAvailable) { CARD64 ret; - VA_DRI2SwapBuffers(ctx->native_dpy, dri_drawable->x_drawable, 0, 0, - 0, &ret); + VA_DRI2SwapBuffers(ctx->native_dpy, dri_drawable->x_drawable, + 0, 1, 0, + &ret); } else { xrect.x = 0; xrect.y = 0;