[Mesa-dev] [PATCH] Revert "wayland: Block for the frame callback in get_back_bo not dri2_swap_buffers"
daniel at fooishbar.org
Mon Oct 31 14:30:57 UTC 2016
On 24 October 2016 at 20:42, Daniel Stone <daniels at collabora.com> wrote:
> This reverts commit 25cc889004aad6d1cab9edd76db898658e347b97, though
> since the code has changed, it was applied manually.
> The intent of moving blocking from SwapBuffers to get_back_bo, was to
> avoid unnecessary triple-buffering by ensuring that the compositor had
> fully processed the previous frame before we started rendering. This
> means that the only time we would have to resort to triple-buffering
> would be when the buffer is directly scanned out, thus saving an extra
> buffer for composition anyway.
> The 'repaint window' changes introduced in Weston since then, however,
> have narrowed the window of time between the frame event being sent and
> the repaint loop needing to conclude, to 7ms by default, in order to
> reduce latency. This means however that blocking in get_back_bo gives a
> maximum of 7ms for the entire GL submission to begin and complete.
> Not only this, but if a client is using buffer_age to avoid full
> repaints, the buffer-age request will stall in get_back_bo until the
> frame callback completes, meaning that the client cannot even calculate
> the repaint area before the 7ms window.
> The combination of the two meant that WebKit-GTK+ was failing to
> achieve full framerate on a Minnowboard, due to spending a great deal of
> its time attempting to query the age of the next buffer before redraw.
> Revert to the previous behaviour of allowing rendering to begin but
> delaying SwapBuffers, unless and until we can find a more gentle
Ping - adding a couple more CCs.
More information about the mesa-dev