[PATCH 3/3] glx/dri3: Request non-vsynced Present for swapinterval zero.
Mario Kleiner
mario.kleiner.de at gmail.com
Sun Nov 30 03:51:55 PST 2014
On 11/25/2014 09:31 AM, Frank Binns wrote:
> Hi,
>
> I sent exactly the same patch back in April. Despite getting a review-by
> it was never merged. See:
>
> http://lists.freedesktop.org/archives/mesa-dev/2014-April/058347.html
> http://lists.freedesktop.org/archives/mesa-dev/2014-May/060432.html
>
> Thanks
> Frank
>
Indeed, exactly the same patch - minus white-space differences - already
reviewed. So i guess i can add your additional signed-off-by and chris
wilsons reviewed-by to this one?
I have a few more patches coming for this series, which fix two more
mesa bugs related to dri3/present...
thanks,
-mario
> On 25/11/14 03:00, Mario Kleiner wrote:
>> Restores proper immediate tearing swap behaviour for
>> OpenGL bufferswap under DRI3/Present.
>>
>> Cc: "10.3 10.4" <mesa-stable at lists.freedesktop.org>
>> Signed-off-by: Mario Kleiner <mario.kleiner.de at gmail.com>
>> ---
>> 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);
>> + 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);
>
More information about the xorg-devel
mailing list