[Intel-gfx] [PATCH v2] UXA: Wait until a pageflip actually completes to report it.

Chris Wilson chris at chris-wilson.co.uk
Wed May 21 18:24:18 CEST 2014


On Wed, May 21, 2014 at 08:53:18AM -0700, Jamey Sharp wrote:
> UXA was reporting page-flip completion as soon as the flip was scheduled
> with the kernel, instead of waiting for the kernel to indicate that the
> flip had actually completed.
> 
> Moving the DRI2SwapComplete call to the right place fixes all of our
> Piglit tests for OML_sync_control when run on xf86-video-intel/UXA,
> aside from a bit of difficult-to-reproduce flakiness when using a
> divisor > 1.
> 
> This also eliminates a compile-time and run-time warning when built
> against an xserver with "Warn on DRI2SwapComplete with constant UST/MSC"
> applied.
> 
> v2: The drawable may have disappeared by the time the flip completes.
> Don't try to report swap completion in that case.
> 
> Signed-off-by: Jamey Sharp <jamey at minilop.net>
> Cc: Theo Hill <Theo0x48 at gmail.com>
> Cc: Eric Anholt <eric at anholt.net>
> Cc: Chris Wilson <chris at chris-wilson.co.uk>
> ---
> 
> I can experimentally confirm Chris' claim that this patch causes
> SwapBuffers to block once one swap is already outstanding, giving
> double-buffering behavior rather than the desired triple-buffering.
> 
> However, it only has an effect for full-screen windows, and only when
> not running under a compositor.
> 
> - If the window is not full-screen, UXA is already only double-buffered.
> - If full-screen, UXA is usually triple-buffered, but not reliably.
> - If run under a compositor, either the compositor crashes during my
>   test, or it still appears to be triple-buffered even with this patch.
> 
> If you want triple-buffering, NAK'ing this patch is clearly not the way
> to get it, since the driver already doesn't do it reliably.
> 
> Please merge this patch, which fixes two spec violations that make
> OML_sync_control unusable; and if you're concerned about uncomposited
> triple-buffering in UXA, please find a less awful way to get it.

Why not just change the default to double buffering? Or fix it
correctly?
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre



More information about the Intel-gfx mailing list