[Mesa-dev] [PATCH 3/5] glx/dri3: Request non-vsynced Present for swapinterval zero. (v2)

Eric Anholt eric at anholt.net
Thu Dec 4 18:38:14 PST 2014


Mario Kleiner <mario.kleiner.de at gmail.com> writes:

> Restores proper immediate tearing swap behaviour for
> OpenGL bufferswap under DRI3/Present.
>
> Cc: "10.3 10.4" <mesa-stable at lists.freedesktop.org>
>
> v2: Add Frank Binns signed off by for his original earlier
> patch from April 2014, which is identical to this one, and
> Chris Wilsons reviewed tag from May 2014 for that patch, ergo
> also for this one.
>
> Signed-off-by: Frank Binns <frank.binns at imgtec.com>
> Signed-off-by: Mario Kleiner <mario.kleiner.de at gmail.com>
> Reviewed-by: Chris Wilson <chris at chris-wilson.co.uk>
> ---
>  src/glx/dri3_glx.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/src/glx/dri3_glx.c b/src/glx/dri3_glx.c
> index 5796491..c53be1b 100644
> --- a/src/glx/dri3_glx.c
> +++ b/src/glx/dri3_glx.c
> @@ -1518,6 +1518,7 @@ dri3_swap_buffers(__GLXDRIdrawable *pdraw, int64_t target_msc, int64_t divisor,
>     xcb_connection_t *c = XGetXCBConnection(dpy);
>     struct dri3_buffer *back;
>     int64_t ret = 0;
> +   uint32_t options = XCB_PRESENT_OPTION_NONE;
>  
>     unsigned flags = __DRI2_FLUSH_DRAWABLE;
>     if (flush)
> @@ -1557,6 +1558,9 @@ dri3_swap_buffers(__GLXDRIdrawable *pdraw, int64_t target_msc, int64_t divisor,
>        if (target_msc == 0)
>           target_msc = priv->msc + priv->swap_interval * (priv->send_sbc - priv->recv_sbc);
>  

I'd add:

/* From the GLX_EXT_swap_control spec:
 *
 *     "If <interval> is set to a value of 0, buffer swaps are not
 *      synchronized to a video frame."
 */

Other than that,

Reviewed-by: Eric Anholt <eric at anholt.net>

> +      if (priv->swap_interval == 0)
> +          options |= XCB_PRESENT_OPTION_ASYNC;
> +
>        back->busy = 1;
>        back->last_swap = priv->send_sbc;
>        xcb_present_pixmap(c,
> @@ -1570,7 +1574,7 @@ dri3_swap_buffers(__GLXDRIdrawable *pdraw, int64_t target_msc, int64_t divisor,
>                           None,                                 /* target_crtc */
>                           None,
>                           back->sync_fence,
> -                         XCB_PRESENT_OPTION_NONE,
> +                         options,
>                           target_msc,
>                           divisor,
>                           remainder, 0, NULL);
> -- 
> 1.9.1
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 818 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20141204/8a670759/attachment.sig>


More information about the mesa-dev mailing list