Mir

Comment 2 for bug 1379685

Revision history for this message
Daniel van Vugt (vanvugt) wrote : Re: Missing frames/out of order with swap interval 0

And ready_to_composite_queue.size() == 1, because buffers_sent_to_compositor.size() == 2.

And that is because the compositor is holding buffers across frames. Which is because it's full screen -- bypass!

So the answer is BufferQueue is behaving as well as it can. But if you want to avoid out-of-order frames and have bypass support then you need quad buffers :P

Actually, now I remember this is a problem I discovered in lp:~vanvugt/mir/double ... if you had framedropping and bypass then real buffer demand reached 4. If you enable bypass with framedropping and only have 3 buffers then you'll end up dropping your newest frame.

There is an alternative solution to quad-buffering though - Drop the oldest frame which *might* still be bypassed. Worst case is you end up tearing.