~mir-team/mir/development-branch

Viewing all changes in revision 3441.

  • Committer: Tarmac
  • Author(s): Daniel van Vugt
  • Date: 2016-04-06 07:38:03 UTC
  • mfrom: (3430.2.8 disable-early-release)
  • Revision ID: tarmac-20160406073803-5eutr1cckfxgtrz7
Disable the 'early release optimization' in BufferQueue, and add more
tests to verify it's really disabled (and the equivalent in NBS too).

The purpose of 'early release' (AKA single_monitor_fast in NBS) was to
reduce the chance of frame skipping when the number of buffers is reduced.
However now it seems unlikely we will ever reduce the number of buffers
to two.

'early release' has the side-effect of increasing buffer lag by one
frame. And that would have been canceled out by switching to double
buffering, but now it won't be. So in terms of latency we're one frame
better off not using 'early release'.

NBS's equivalent mode 'single_monitor_fast' is already disabled by
default (LP: #1561418), so no change required there.

The new 'mirvanity' tool also confirms that this branch measurably reduces
latency by about 17ms (one frame).

That all said, Unity8 was never affected by the 'early release' lag
because (a) its QtMir compositor does not early-release; and (b) the
system compositor generally uses bypass/overlays that prevents the
possibility of early release anyway. But at least now BufferQueue and
NBS have the same default mode, and it is the lowest latency mode.

The branch incidentally also provides a basis for fixing LP: #1561418. Fixes: https://bugs.launchpad.net/bugs/1561418.

Approved by Cemil Azizoglu, Kevin DuBois, mir-ci-bot.

expand all expand all

Show diffs side-by-side

added added

removed removed

Lines of Context: