Since the fix for bug 1557962 landed, NBS allocates four buffers to the client surface even when not required:
$ env MIR_CLIENT_PERF_REPORT=log glmark2-mir -b texture [2016-04-04 11:15:11.894754] perf: glmark2 2014.03+git20150611.fa71af2d: 9051.00 FPS, render time 0.06ms, buffer lag 0.26ms (4 buffers) [2016-04-04 11:15:12.894807] perf: glmark2 2014.03+git20150611.fa71af2d: 8706.00 FPS, render time 0.06ms, buffer lag 0.28ms (4 buffers) [2016-04-04 11:15:13.895012] perf: glmark2 2014.03+git20150611.fa71af2d: 8806.00 FPS, render time 0.06ms, buffer lag 0.27ms (4 buffers) FPS: 8817 FrameTime: 0.113 ms
Compare to BufferQueue: [2016-04-04 11:17:12.611400] perf: glmark2 2014.03+git20150611.fa71af2d: 8789.00 FPS, render time 0.06ms, buffer lag 0.27ms (3 buffers) [2016-04-04 11:17:13.611470] perf: glmark2 2014.03+git20150611.fa71af2d: 8707.00 FPS, render time 0.06ms, buffer lag 0.28ms (3 buffers) [2016-04-04 11:17:14.611555] perf: glmark2 2014.03+git20150611.fa71af2d: 8462.00 FPS, render time 0.06ms, buffer lag 0.28ms (3 buffers)
The fourth buffer is technically only required when using framedropping with bypass/overlays simultaneously.
Since the fix for bug 1557962 landed, NBS allocates four buffers to the client surface even when not required:
$ env MIR_CLIENT_ PERF_REPORT= log glmark2-mir -b texture git20150611. fa71af2d: 9051.00 FPS, render time 0.06ms, buffer lag 0.26ms (4 buffers) git20150611. fa71af2d: 8706.00 FPS, render time 0.06ms, buffer lag 0.28ms (4 buffers) git20150611. fa71af2d: 8806.00 FPS, render time 0.06ms, buffer lag 0.27ms (4 buffers)
[2016-04-04 11:15:11.894754] perf: glmark2 2014.03+
[2016-04-04 11:15:12.894807] perf: glmark2 2014.03+
[2016-04-04 11:15:13.895012] perf: glmark2 2014.03+
FPS: 8817 FrameTime: 0.113 ms
Compare to BufferQueue: git20150611. fa71af2d: 8789.00 FPS, render time 0.06ms, buffer lag 0.27ms (3 buffers) git20150611. fa71af2d: 8707.00 FPS, render time 0.06ms, buffer lag 0.28ms (3 buffers) git20150611. fa71af2d: 8462.00 FPS, render time 0.06ms, buffer lag 0.28ms (3 buffers)
[2016-04-04 11:17:12.611400] perf: glmark2 2014.03+
[2016-04-04 11:17:13.611470] perf: glmark2 2014.03+
[2016-04-04 11:17:14.611555] perf: glmark2 2014.03+
The fourth buffer is technically only required when using framedropping with bypass/overlays simultaneously.