Comment 0 for bug 1564721

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

Unity8-dash render time is too high, causing frame skipping

On a 60Hz display you have 16.6ms per frame. So to keep things running smoothly your render time should be much lower than 16.6ms.

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

MAKO:

[2016-04-01 11:38:54.086901] perf: : 69.00 FPS, render time 13.96ms, buffer lag 29.76ms (3 buffers)
[2016-04-01 11:38:55.103637] perf: : 73.81 FPS, render time 13.00ms, buffer lag 27.33ms (3 buffers)
[2016-04-01 11:38:56.111953] perf: : 67.46 FPS, render time 14.19ms, buffer lag 30.60ms (3 buffers)

ARALE:

[2016-04-01 11:41:43.467067] perf: : 52.31 FPS, render time 18.54ms, buffer lag 61.60ms (3 buffers)
[2016-04-01 11:41:44.491750] perf: : 53.71 FPS, render time 18.01ms, buffer lag 37.43ms (3 buffers)
[2016-04-01 11:41:45.504621] perf: : 55.33 FPS, render time 17.53ms, buffer lag 37.03ms (3 buffers)

Note(1): I have used MIR_CLIENT_FORCE_SWAP_INTERVAL=0 because it works around a problem with the Android platform's MIR_CLIENT_PERF_REPORT=log being rounded up to the next frame interval. It also has the nice benefit of showing peak frame rate possible on a device (e.g. 69 FPS on mako above).

Note(2): Yes you can use the same benchmark on 'unity8' instead of 'unity8-dash' however the results will be inaccurate -- limited and rounded to whole frames due to bug 1369763.

Note(3): This is all possibly related to bug 1494795.