Mir

[regression] stale frame on seen on greeter when screen is unblanked and toolkit/apps are laggy/throttled

Bug #1321886 reported by kevin gunn
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mir
Fix Released
Critical
Daniel van Vugt
mir (Ubuntu)
Fix Released
Undecided
Unassigned

Bug Description

With the landing of https://code.launchpad.net/~raof/mir/1hz-rendering-always/+merge/217377
we now have the return of the bug which a "stale" frame of application render is seen on top of greeter

with the 1Hz policy, upon screen blank, lifecycle kicks in at around 3s
so there's only around 3 frames drawn.

also volume key is laggy. b/c the toolkit interrupt service slows down to the same rate as well.

Tags: regression

Related branches

kevin gunn (kgunn72)
Changed in mir:
importance: Undecided → Critical
milestone: none → 0.2.0
tags: added: regression
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Sounds like bug 1321861 actually... ?

Changed in mir:
status: New → Incomplete
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Actually, yes. It sounds just like bug 1321861 so marking as a duplicate for now.

Revision history for this message
Alberto Aguirre (albaguirre) wrote :

Nope unrelated to 1321861

Changed in mir:
status: Incomplete → Triaged
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Revert r1647?

Revision history for this message
Alberto Aguirre (albaguirre) wrote :

This is a combination of the 1Hz rate during display off and the unity8 lifecycle kicking in at 3s - only 2-3 frames which is not enough to draw the greeter.

We need a solution that roughly allows:

- At a display on/compositor start event - optionally allow clients to queue up the content they want - flushing any ready buffers
- Mir should flush out the driver queue possibly by drawing blank frames (though this could probably be done by unity-system-compositor)

Maybe a flush method in the compositor interface? Then server implementations like USC or unity-mir can make use of it and they can synchronize with their clients however they'd like...

Revision history for this message
kevin gunn (kgunn72) wrote :

why wouldn't speeding up the render frequency to something closer to the display solve this (mostly) ?
also, keeping it at 1hz has the knock-on undesired system effect of laggy event servicing from the qt toolkit case.

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

We need to be careful to not rely on timing for anything. Timing is flimsy and lacks the robustness of logical guarantees we had previously depended on till now. I think we need to revisit that and reconsider how all these new problems can be solved without any time-measurement. There's always a way, it just requires more careful thought.

description: updated
summary: - [regression] stale frame on seen on greeter when screen is unblanked
+ [regression] stale frame on seen on greeter when screen is unblanked and
+ toolkit/apps are laggy/throttled
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
Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (7.2 KiB)

This bug was fixed in the package mir - 0.2.0+14.10.20140605-0ubuntu1

---------------
mir (0.2.0+14.10.20140605-0ubuntu1) utopic; urgency=medium

  [ Daniel van Vugt ]
  * New upstream release 0.2.0 (https://launchpad.net/mir/+milestone/0.2.0)
    - mirclient ABI unchanged, still at 7. Clients do not need rebuilding.
    - mirserver ABI bumped to 20. Shells need rebuilding.
      . Cursor::set_image() parameters changed.
      . Display::the_cursor() renamed to Display::create_hardware_cursor()
      . Platform::create_display() requires a new parameter; gl_program_factory
      . Renderable::buffer() no longer accepts any parameter at all. Multi-
        monitor frame sync is guaranteed in other ways now.
      . Scene::generate_renderable_list() renamed to renderable_list_for(id)
        where id is an opaque compositor ID of your choosing.
      . Scene::set_change_callback() replaced by the more generic:
        add_observer() and remove_observer() functions.
      . Added default implementation for SceneObserver.
      . SessionCreator renamed to ConnectionCreator.
      . ConnectedSessions renamed to Connections.
      . ProtobufSessionCreator renamed to ProtobufConnectionCreator.
      . SessionAuthorizer: pid_t parameters replaced by SessionCredentials.
      . Massive architectural changes to Input-everything.
      . Surface no longer implements Renderable, but emits one via
        compositor_snapshot().
      . Pass the full renderable list to Renderer::render().
      . Graceful handling of exceptions thrown from server threads.
      . Clarify size position interfaces in the Surface classes.
      . Plumbing for trusted sessions.
      . Allow posting and managing custom main-loop actions.
      . Timer extension.
      . Identify client process when client connects to Mir not when socket
        connects.
      . Use the ServerActionQueue for display config.
      . Recomposition signal moved to the MultiThreadedCompositor.
      . Make timer service replaceable.
      . Clarify assumptions about how many buffers a client can fill without
        blocking.
      . Introduce EmergencyCleanup interface.
    - Demo shell enhancements:
      . You can now change graphics modes on the fly using Ctrl+Alt+(-/=).
        To reset to the preferred mode use Ctrl+Alt+0.
      . The above mode changing as well as existing screen rotation keys
        (Ctrl+Alt+arrows) are now per-display; only applied to the monitor
        the mouse pointer is on.
      . New shell controls documented.
    - A new testing category, performance test, was introduced. It currently
      runs glmark2-es2 and compares the result to a minimum threshold.
    - MIR_VERSION_MINOR is tied to MIRSERVER_ABI in the sense that a change
      in the former now requires dependent projects that a rebuild is
      necessary.
    - SwitchingBundle was replaced by BufferQueue.
    - Expand credentials to include uid/gid for session authorizer.
    - Bypass control is now Mesa-specific and tied to the command line options.
      So the environment variable MIR_BYPASS has changed to MIR_SERVER_BYPASS.
    - Ongoing architectural changes in the compositor/renderer logic to
   ...

Read more...

Changed in mir (Ubuntu):
status: New → 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.