← Back to team overview

touch-packages team mailing list archive

[Bug 1486341] Re: [performance] Touch scrolling is stuttery under Unity8 (but only while you're touching it)

 

Considering also related bug 1497105 and bug 1488386, I think all three would benefit from us removing input resampling completely from the top-level (unity8 process) via:
   QML_NO_TOUCH_COMPRESSION=1
   MIR_CLIENT_INPUT_RATE=0

That would immediately solve this bug, and bug 1497105, and partially
solve the keep-awake problem of bug 1488386.

The only issue then is to make sure shell elements are still responsive
in the presence of high frequency input events. Apps themselves would
not be affected because they already have their own resampling.

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to unity8 in Ubuntu.
https://bugs.launchpad.net/bugs/1486341

Title:
  [performance] Touch scrolling is stuttery under Unity8 (but only while
  you're touching it)

Status in QtMir:
  New
Status in qtmir package in Ubuntu:
  Confirmed
Status in unity8 package in Ubuntu:
  Confirmed

Bug description:
  Touch scrolling is stuttery under Unity8 (but only while you're
  touching it).

  I noticed that Unity8 is smooth in some parts and stutters in others.
  Turns out the smooth parts of Unity8 like the indicators pull-down and
  app switcher are the parts that don't have to run as clients of the
  nested server. I also noticed that those stuttering clients (like the
  dash) of the nested server only stutter while you're touching them.
  They animate smoothly if you fling them lifting your finger off, but
  stutter while they have to track your finger.

  Turns out the problem is Qt's built-in input resampling introduced in
  Qt 5.4 (commit 6dc8f47bb05a8acb3cbcc697e0dc05356a01d4cf). Turning it
  off in the unity8 process (env QML_NO_TOUCH_COMPRESSION=1) fixes the
  touch scrolling smoothness problem for clients like unity8-dash.

  I suspected this would be the case. It's possible the Qt resampling implementation doesn't work when nested. That would be unsurprising, having implemented Mir's input resampling I know that can be a problem. Although Mir's input resampling is designed in such a way that performance is unaffected by nesting. The below test case and also:
    https://bugreports.qt.io/browse/QTBUG-40167 (maybe unrelated)
  both suggest that the Qt input resampling introduced by Jolla is causing stuttering, particularly when nested in a situation where the incoming touch events are already throttled...

  Measurements from arale:

  restart unity8-dash MIR_CLIENT_PERF_REPORT=log
  tail -f ~/.cache/upstart/unity8-dash.log

  [1439957791.298680] perf: Scopes: 52.42 FPS, render time 17.90ms, buffer lag 39.37ms (3 buffers)
  [1439957792.303939] perf: Scopes: 54.72 FPS, render time 17.07ms, buffer lag 37.57ms (3 buffers)
  [1439957793.316036] perf: Scopes: 55.33 FPS, render time 16.82ms, buffer lag 36.90ms (3 buffers)
  [1439957794.329848] perf: Scopes: 56.26 FPS, render time 16.21ms, buffer lag 37.69ms (3 buffers)
  [1439957795.335884] perf: Scopes: 52.68 FPS, render time 18.05ms, buffer lag 38.87ms (3 buffers)
  [1439957796.343125] perf: Scopes: 51.63 FPS, render time 18.03ms, buffer lag 40.15ms (3 buffers)
  [1439957797.360229] perf: Scopes: 54.08 FPS, render time 17.41ms, buffer lag 38.04ms (3 buffers)
  [1439957798.370706] perf: Scopes: 54.45 FPS, render time 17.18ms, buffer lag 37.99ms (3 buffers)
  [1439957799.401308] perf: Scopes: 53.39 FPS, render time 17.79ms, buffer lag 37.43ms (3 buffers)

  restart unity8 QML_NO_TOUCH_COMPRESSION=1
  restart unity8-dash MIR_CLIENT_PERF_REPORT=log
  tail -f ~/.cache/upstart/unity8-dash.log

  [1439957936.543370] perf: Scopes: 59.64 FPS, render time 15.52ms, buffer lag 34.48ms (3 buffers)
  [1439957937.543547] perf: Scopes: 59.00 FPS, render time 16.36ms, buffer lag 34.26ms (3 buffers)
  [1439957938.571699] perf: Scopes: 59.33 FPS, render time 16.26ms, buffer lag 34.22ms (3 buffers)
  [1439957939.572860] perf: Scopes: 59.94 FPS, render time 15.76ms, buffer lag 34.32ms (3 buffers)
  [1439957940.581339] perf: Scopes: 62.50 FPS, render time 14.68ms, buffer lag 33.75ms (3 buffers)
  [1439957941.594696] perf: Scopes: 59.23 FPS, render time 14.81ms, buffer lag 35.83ms (3 buffers)
  [1439957942.597224] perf: Scopes: 61.87 FPS, render time 14.64ms, buffer lag 33.96ms (3 buffers)
  [1439957943.612315] perf: Scopes: 61.08 FPS, render time 14.59ms, buffer lag 34.39ms (3 buffers)
  [1439957944.625835] perf: Scopes: 60.21 FPS, render time 15.79ms, buffer lag 34.28ms (3 buffers)

To manage notifications about this bug go to:
https://bugs.launchpad.net/qtmir/+bug/1486341/+subscriptions


References