Mir

Double buffering is only smooth while you're touching it

Bug #1488391 reported by Daniel van Vugt
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mir
New
Undecided
Daniel van Vugt
QtMir
New
Undecided
Unassigned
mir (Ubuntu)
New
Undecided
Unassigned
qtmir (Ubuntu)
New
Undecided
Unassigned

Bug Description

On some devices (mako at least) it's possible to force double buffering and it will often keep up:

   restart unity8 QML_NO_TOUCH_COMPRESSION=1 MIR_SERVER_NBUFFERS=2

Curiously however it only keeps up smoothly (eg. during a dash scroll) while you're touching the screen. If you lift off or fling the dash then it immediately stutters, quite badly.

So the issue is not that the device can't keep up with double buffering. It seems more like we're not keeping the kernel sufficiently awake and it's clocking down prematurely, as soon as we're not touching it. Certainly adjusting the variables in:
   /sys/devices/system/cpu/cpu0/cpufreq
it is possible to raise the performance and minimum frequency to make double buffering smooth.

The challenge of this bug is to find a way in Mir/QtMir to keep the kernel more awake so it doesn't clock down when we need smooth animations and we're not touching the screen.

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

Could be a simple matter of increasing our concurrency. If that's not kept high enough then the delay between context switches likely becomes unacceptably high. And each frame requires at least 4 context switches (USC -> Unity8 -> app -> Unity8 -> USC).

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.