Mir

[regression] Multi-monitor frame sync no longer works (not synchronized), and frames skip/jump/stutter

Bug #1288570 reported by Daniel van Vugt
12
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mir
Fix Released
High
Alan Griffiths
mir (Ubuntu)
Fix Released
High
Unassigned

Bug Description

[regression] Multi-monitor frame sync no longer works (not synchronized).

Test case:
  1. Start a multi-monitor server:
       mir_demo_server_shell --display-config sidebyside
  2. Start a client:
       mir_demo_client_egltriangle
  3. Move the client (Alt+drag) so it overlaps both monitors simultaneously.

Expected: Client keeps reporting 60 FPS and renders smoothly
Observed: Client speeds up to 120 FPS and judders/skips frames

Related branches

Changed in mir:
milestone: none → 0.1.7
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

I guess now might be a good time to implement that parameterless frame sync algorithm I had in mind and abolish "frameno".

Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Bisected. The regression happened here:

------------------------------------------------------------
revno: 1398 [merge]
author: Alan Griffiths <email address hidden>
committer: Tarmac
branch nick: development-branch
timestamp: Fri 2014-02-14 19:14:15 +0000
message:
  compositor: non-blocking implementation of SwitchingBundle::client_acquire. Fixes: https://bugs.launchpad.net/bugs/1267323.

  Approved by PS Jenkins bot, Alexandros Frantzis, Andreas Pokorny, Kevin DuBois.
------------------------------------------------------------

Revision history for this message
Alan Griffiths (alan-griffiths) wrote :

Symptoms are fixed by lp:~raof/mir/nested-one-surface-per-crtc - am still investigating the exact mechanism.

Revision history for this message
Alan Griffiths (alan-griffiths) wrote :

Weird - as soon as I conclude there's no good reason for nested-one-surface-per-crtc to fix it I can reproduce the problem using it.

Changed in mir:
status: Triaged → Confirmed
assignee: nobody → Alan Griffiths (alan-griffiths)
Changed in mir:
status: Confirmed → In Progress
Revision history for this message
Alexandros Frantzis (afrantzis) wrote :

Note that this bug affects screencasting, i.e., the rendering speeds up beyond ~60FPS and becomes jumpy.

I guess this is to be expected, since our current implementation of screencasting works by recompositing the specified region, it's essentially like having an extra offscreen display.

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

Fix committed into lp:mir/devel at revision None, scheduled for release in mir, milestone Unknown

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

This wasn't just a sync bug, but caused bad frame ordering too. You could see bad frame ordering in mir_demo_client_egltriangle when it straddled multiple monitors. And today I saw the same scary frame ordering glitches in XMir --> bug 1291755

Changed in mir (Ubuntu):
status: New → Triaged
importance: Undecided → High
summary: - [regression] Multi-monitor frame sync no longer works (not synchronized)
+ [regression] Multi-monitor frame sync no longer works (not
+ synchronized), and frames skip/jump/stutter
description: updated
Changed in mir:
status: Fix Committed → Fix Released
Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (3.3 KiB)

This bug was fixed in the package mir - 0.1.7+14.04.20140317.1-0ubuntu1

---------------
mir (0.1.7+14.04.20140317.1-0ubuntu1) trusty; urgency=medium

  [ Daniel van Vugt ]
  * New upstream release 0.1.7 (https://launchpad.net/mir/+milestone/0.1.7)
    - mirserver ABI bumped to 17
    - mirclient ABI unchanged, still at 7. Clients do not need rebuilding.
    - Server API changes (AKA why doesn't my code build any more?):
      . Class "CompositingCriteria" has been removed. It's replaced by the more
        flexible "Renderable" interface. This also resulted in parameter
        changes for the Renderer and scene filtering classes.
      . The function "DisplayConfiguration::configure_output()" has been
        removed. Instead, please use the new mutable version of
        "DisplayConfiguration::for_each_output()" with which you can modify
        the output structure passed in on each iteration.
      . Exposed formerly private class "GLRenderer" and demonstrated how
        to override its behaviour in demo-shell. This area is under
        construction and may experience further major changes.
    - Added initial support for hardware (HWC) overlays to accelerate
      rendering and reduce power consumption. Not complete yet.
    - Screen rotation: Added mouse cursor rotation support, so you can now
      still control things on a rotated screen. Still missing rotation of
      the cursor bitmap itself.
    - Lots of fixes to support nested Mir servers (see below).
    - Major simplification to how surface size/position/transformation
      interact, making transformations much easier to manage and work with.
    - Bugs fixed:
      . ./cross-compile-chroot.sh: line 83: popd: build-android-arm: invalid
        argument popd: usage: popd [-n] [+N | -N] (LP: #1287600)
      . Key events sent to the wrong client (and delayed) (LP: #1213804)
      . Nested servers never receive input events (in their filters)
        (LP: #1260612)
      . Software clients crash immediately on nested servers - what(): Failed
        to mmap buffer (LP: #1261286)
      . MirMotionEvent lacks local coordinates. Reports only screen
        coordinates. (LP: #1268819)
      . Nested Mir crashes with - what():
        MesaNativePlatform::create_internal_client is not implemented yet!
        (LP: #1279092)
      . clients fail to find some libraries if mir installed via "make install"
        (LP: #1285566)
      . Nested server hangs with multimonitor and internal clients.
        (LP: #1287282)
      . [regression] Multi-monitor frame sync no longer works (not
        synchronized), and frames skip/jump/stutter (LP: #1288570)
      . Mir FTBFS: /usr/bin/ld: cannot find -lmirtestdraw (when cmake ..
        -DMIR_ENABLE_TESTS=OFF) (LP: #1283951)
      . nested Mir library calls next_buffer() during startup (LP: #1284739)
      . Building Mir produces lots of warnings from GLM headers about
        deprecated degrees values vs radians (LP: #1286010)
      . [enhancement] screencast of a single window (LP: #1288478)
      . Nexus4 + mir_demo_client_eglplasma starts to stutter after a while
        (LP: #1189753)
      . --host-socket documented default argument isn't...

Read more...

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

Duplicates of this bug

Other bug subscribers

Remote bug watches

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