Mir

[performance] Restore support for better-than-triple buffering by default.

Bug #1240909 reported by Daniel van Vugt
12
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Mir
Fix Released
Medium
Daniel van Vugt
mir (Ubuntu)
Fix Released
Medium
Unassigned

Bug Description

We really should restore support for double-buffering (or better) where possible. Presently we're on triple-buffering all the time.

Related branches

summary: - [feature] Restore support for dynamic switching to double-buffering
+ [enhancement] Restore support for dynamic switching to double-buffering
tags: added: enhancement
removed: feature
Changed in mir:
status: Triaged → In Progress
Changed in mir:
milestone: none → 0.1.0
Changed in mir:
status: In Progress → Triaged
Changed in mir:
milestone: 0.1.0 → none
Changed in mir:
status: Triaged → In Progress
milestone: none → 0.5.0
Changed in mir:
milestone: 0.5.0 → 0.6.0
tags: added: performance
summary: - [enhancement] Restore support for dynamic switching to double-buffering
+ [performance] Restore support for dynamic switching to double-buffering
tags: added: rtm14
Changed in mir:
milestone: 0.6.0 → 0.7.0
Revision history for this message
Daniel van Vugt (vanvugt) wrote : Re: [performance] Restore support for dynamic switching to double-buffering

I'm not happy with the reliability of the heuristic right now. If we get it wrong then performance will get worse, not better. Best to not depend on this enhancement to rtm14. It may make it in still, but not sure.

tags: removed: rtm14
Changed in mir:
milestone: 0.7.0 → 0.8.0
Changed in mir:
milestone: 0.8.0 → none
milestone: none → 0.8.0
Changed in mir:
milestone: 0.8.0 → 0.9.0
Changed in mir:
milestone: 0.9.0 → 0.8.0
Changed in mir:
milestone: 0.8.0 → none
status: In Progress → Triaged
Changed in mir:
status: Triaged → In Progress
milestone: none → 0.10.0
Changed in mir:
milestone: 0.10.0 → 0.11.0
milestone: 0.11.0 → none
status: In Progress → Triaged
summary: - [performance] Restore support for dynamic switching to double-buffering
+ [performance] Restore support for double-buffering by default
Changed in mir:
milestone: none → 0.12.0
status: Triaged → In Progress
description: updated
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote : Re: [performance] Restore support for double-buffering by default

Fix committed into lp:mir at revision 2334, scheduled for release in mir, milestone 0.12.0

Changed in mir:
status: In Progress → Fix Committed
Kevin DuBois (kdub)
Changed in mir:
milestone: 0.12.0 → 0.13.0
Changed in mir (Ubuntu):
importance: Undecided → Medium
status: New → Triaged
Changed in mir:
importance: Medium → High
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

"Won't Fix" for 0.12 because in retesting yesterday we've confirmed too many parts of Unity8 suffer with this on arm devices (I know, it was all looking good a month ago). Needs more investigation but most likely we're blocked on Unity8 (especially the dash) getting optimized to use less render time.

no longer affects: mir/0.12
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Fix reverted from 0.13.0 too. But the ddouble branch is still in progress as an alternate future fix.

Changed in mir:
status: Fix Committed → In Progress
Changed in mir:
milestone: 0.13.0 → 0.14.0
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :

Fix committed into lp:mir at revision None, scheduled for release in mir, milestone 0.14.0

Changed in mir:
status: In Progress → Fix Committed
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Apparently the fix got reverted in the 0.14 branch. It's still present in 0.15 but sounds like it will need fixing.

Changed in mir:
milestone: 0.14.0 → 0.15.0
Changed in mir:
status: Fix Committed → In Progress
Changed in mir:
milestone: 0.15.0 → 0.16.0
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

This has actually landed in 0.15 already. But I'm actively trying to disable it.

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :

Fix committed into lp:mir at revision None, scheduled for release in mir, milestone 0.16.0

Changed in mir:
status: In Progress → Fix Committed
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

The branch that landed was a revert, not a fix. See also bug 1476201.

Changed in mir:
status: Fix Committed → In Progress
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Not in progress right now.

First we need the fix for bug 1476201 to land. But that's still not enough. I find then that our droids tend to exaggerate the frequency and core scale down, making performance stuttery.

So there are at least two prerequisites that need addressing before we can progress on this bug again:
  bug 1476201
  bug 1488386

Changed in mir:
milestone: 0.16.0 → none
status: In Progress → Triaged
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Bug 1494795 may also be a blocking factor.

no longer affects: mir/0.5
Changed in mir:
status: Triaged → In Progress
milestone: none → 0.20.0
summary: - [performance] Restore support for double-buffering by default
+ [performance] Restore support for better-than-triple buffering by
+ default.
Changed in mir:
milestone: 0.20.0 → 0.21.0
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

I'm done with this for now.

The issue is not that it's technically difficult, but that our primary customer is Unity8. And Unity8 is not presently fast enough on mobile devices to keep up a smooth frame rate, either with constant double buffers or with dynamic queue scaling.

Changed in mir:
milestone: 0.21.0 → none
status: In Progress → Won't Fix
Changed in mir (Ubuntu):
status: Triaged → Won't Fix
Changed in mir (Ubuntu):
status: Won't Fix → Triaged
Changed in mir:
importance: High → Medium
milestone: none → 1.0.0
status: Won't Fix → In Progress
description: updated
Revision history for this message
Mir CI Bot (mir-ci-bot) wrote :

Fix committed into lp:mir at revision None, scheduled for release in mir, milestone 1.0.0

Changed in mir:
status: In Progress → Fix Committed
Changed in mir:
milestone: 1.0.0 → 0.26.0
Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (7.2 KiB)

This bug was fixed in the package mir - 0.26.0+17.04.20170126.3-0ubuntu1

---------------
mir (0.26.0+17.04.20170126.3-0ubuntu1) zesty; urgency=medium

  [ Daniel van Vugt ]
  * New upstream release 0.26.0 (https://launchpad.net/mir/+milestone/0.26.0)
    - ABI summary:
      . mirclient ABI unchanged at 9
      . mirserver ABI bumped to 43
      . mircommon ABI unchanged at 7
      . mirplatform ABI unchanged at 14
      . mirprotobuf ABI unchanged at 3
      . mirplatformgraphics ABI unchanged at 11
      . mirclientplatform ABI unchanged at 5
      . mirinputplatform ABI unchanged at 6
      . mircore ABI unchanged at 1
    - Enhancements:
      . New/improved toolkit APIs: MirInputConfig and related functions,
        MirWindow and related functions, DisplayConfig and related functions,
        MirScreencastSpec and related functions,
      . Support for configuring input configuration
      . Introduce toolkit extension mechanism for platform specific APIs.
      . Toolkit extensions for: mesa_drm_auth, set_gbm_device and
        window_coordinate_translation
      . Screencasting to a specific MirBuffer.
      . Add DisplayConfigurationController::base_configuration() so downstreams
        can get the base configuration. (Weirdly they can already set it.).
      . x11 platform: allow adjustable scale parameter.
      . Added EDID support: client API, server logging and in mirout.
      . mirout: Add newer attributes only available in the new display
        config API: scaling factor, subpixel arrangement and form factor.
      . mirout: Log the orientation and logical size of each output too.
      . Replace the mir::Server-overridable Reports with Observers.
      . Add xkbcommon to mirclient.pc Requires.private.
      . Deprecate legacy toolkit APIs that will be removed in Mir 1.0
      . Introduced 'client-side vsync', which dramatically reduces latency
        from the client to the screen (particularly for nested servers like
        Unity8).
    - Bugs fixed:
      . [performance] Restore support for better-than-triple buffering by
        default. (LP: #1240909)
      . Frame rate is artificially low on Diamondville Intel Atom systems due
        to aggressive power management (LP: #1388490)
      . [testsfail] failure in CI in
        AndroidInputReceiverSetup.slow_raw_input_doesnt_cause_frameskipping
        (LP: #1394369)
      . [trusted prompt sessions] Can't open two prompt sessions at the same
        time (LP: #1494197)
      . Changing scale, formFactor or DPI in display configuration causes
        renderer teardown/recreate unnecessarily (LP: #1556142)
      . [testsfail] ApplicationNotRespondingDetection.failure_to_pong_is_
        noticed (LP: #1570327)
      . CI failure in TestClientInput.receives_one_touch_event_per_frame
        (LP: #1570698)
      . Mir-on-X mouse input is jerky/stuttery compared to Mir-on-KMS
        (LP: #1576600)
      . [regression] Two fingers in mir_proving_server now resizes/moves app
        windows (two finger apps unusable) (LP: #1586311)
      . Pointer/cursor input lag in unity8 session (LP: #1591328)
      . PointerConfinement.test_we_update_our_confined_region_on_a_resize
      ...

Read more...

Changed in mir (Ubuntu):
status: Triaged → Fix Released
Changed in mir:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.