Mir

lp:~vanvugt/mir/clarify-ClientLatency

Created by Daniel van Vugt and last modified
Get this branch:
bzr branch lp:~vanvugt/mir/clarify-ClientLatency
Only Daniel van Vugt can upload to this branch. If you are Daniel van Vugt please log in for upload directions.

Branch merges

Related bugs

Related blueprints

Branch information

Owner:
Daniel van Vugt
Project:
Mir
Status:
Development

Recent revisions

3444. By Daniel van Vugt

ClientLatency tests: Clarify results to avoid reporting a latency of
zero, which is misleading.

The granularity of our measurements is only a frame counter, so we're
unable to show the subtleties of the exact timing. However it's more
accurate to report that any frame rendered in the 16ms prior to being
displayed has a latency of 1 frame and not 0. Particularly if you
consider that render times aim to be as low as possible, the exact
latency is really much closer to 1 than 0 frames.

3443. By Alan Griffiths

examples: make it easy to launch SDL clients.

Approved by mir-ci-bot, Brandon Schaefer.

3442. By Alan Griffiths

examples: provide better support for launching GTK apps from demo_server.

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

3441. By Daniel van Vugt

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.

3440. By Kevin DuBois

Activate the new buffer swapping system, capable of supporting the new buffer semantics. Changes MIR_SERVER_NBUFFERS default from 3 to 0.

Approved by mir-ci-bot, Cemil Azizoglu, Alan Griffiths, Chris Halse Rogers.

3439. By Chris Halse Rogers

Make mt::Alarm own the LockableCallback its going to dispatch.

This makes it easier to implement some forms of mt::Alarm.

Approved by mir-ci-bot, Cemil Azizoglu, Alberto Aguirre, Kevin DuBois, Brandon Schaefer.

3438. By Kevin DuBois

compositor: change the buffer accounting in the NBS system from being per-BufferMap to being per-Stream to prepare for connection-allocated buffers (instead of stream allocated buffers).

Approved by Alan Griffiths, mir-ci-bot, Cemil Azizoglu.

3437. By Kevin DuBois

Deprecate next_buffer rpc call. Last used in mir 0.7.3, replaced by exchange_buffer in 0.8.0, so nothing out there should be using it.

The reason I'm interested in this is I'm trying to cleanly split our Surface/Stream abstraction, and get rid of primary_buffer_stream() for general hygiene and to fix lp: #1563278. next_buffer() assumes a one-to-one stream-to-surface mapping as it was developed before the Surface/Stream conceptual split that happened when we added 'cursor streams' way back when.

Approved by Cemil Azizoglu, mir-ci-bot, Daniel van Vugt.

3436. By Brandon Schaefer

Class-ify the mir event structure.

Approved by mir-ci-bot, Andreas Pokorny, Alberto Aguirre, Cemil Azizoglu.

3435. By Kevin DuBois

have mcl::BufferVault use the mcl::Buffer types directly, instead of mcl::ClientBuffer (the platform abstraction). This better prepares this class for when the client side call chain is rpc->buffer->stream (as opposed to rpc->stream->buffer, as it is now). Remove the BufferEntry/BufferInfo structs from buffer_vault.h as a result of the cleanup.

Approved by mir-ci-bot, Andreas Pokorny, Alan Griffiths, Cemil Azizoglu.

Branch metadata

Branch format:
Branch format 7
Repository format:
Bazaar repository format 2a (needs bzr 1.16 or later)
Stacked on:
lp:mir
This branch contains Public information 
Everyone can see this information.

Subscribers