Mir

Comment 16 for bug 1550371

Revision history for this message
Chris Coulson (chrisccoulson) wrote :

I ran the browser with QSG_RENDER_TIMING=1, and I see timings like this:

qt.scenegraph.time.renderloop: Frame rendered with 'threaded' renderloop in 30ms, sync=0, render=2, swap=28 - (on render thread)
qt.scenegraph.time.renderloop: Frame prepared with 'threaded' renderloop, polish=0, lock=0, blockedForSync=14, animations=0 - (on Gui thread) BrowserWindow_QMLTYPE_1_QML_207(0xab14ee20)
qt.scenegraph.time.renderer: time in renderer: total=1ms, preprocess=0, updates=0, binding=0, rendering=1
qt.scenegraph.time.renderloop: Frame rendered with 'threaded' renderloop in 39ms, sync=0, render=1, swap=37 - (on render thread)
qt.scenegraph.time.renderloop: Frame prepared with 'threaded' renderloop, polish=0, lock=0, blockedForSync=27, animations=0 - (on Gui thread) BrowserWindow_QMLTYPE_1_QML_207(0xab14ee20)
qt.scenegraph.time.renderer: time in renderer: total=1ms, preprocess=0, updates=0, binding=0, rendering=1
qt.scenegraph.time.renderloop: Frame rendered with 'threaded' renderloop in 39ms, sync=0, render=1, swap=37 - (on render thread)
qt.scenegraph.time.renderloop: Frame prepared with 'threaded' renderloop, polish=0, lock=0, blockedForSync=25, animations=0 - (on Gui thread) BrowserWindow_QMLTYPE_1_QML_207(0xab14ee20)
qt.scenegraph.time.renderer: time in renderer: total=4ms, preprocess=0, updates=0, binding=2, rendering=1
qt.scenegraph.time.renderloop: Frame rendered with 'threaded' renderloop in 39ms, sync=0, render=5, swap=34 - (on render thread)
qt.scenegraph.time.renderloop: Frame prepared with 'threaded' renderloop, polish=0, lock=0, blockedForSync=26, animations=0 - (on Gui thread) BrowserWindow_QMLTYPE_1_QML_207(0xab14ee20)
qt.scenegraph.time.renderer: time in renderer: total=1ms, preprocess=0, updates=0, binding=0, rendering=1
qt.scenegraph.time.renderloop: Frame rendered with 'threaded' renderloop in 40ms, sync=0, render=1, swap=38 - (on render thread)
qt.scenegraph.time.renderloop: Frame prepared with 'threaded' renderloop, polish=0, lock=0, blockedForSync=29, animations=0 - (on Gui thread) BrowserWindow_QMLTYPE_1_QML_207(0xab14ee20)
qt.scenegraph.time.renderer: time in renderer: total=3ms, preprocess=0, updates=0, binding=0, rendering=3
qt.scenegraph.time.renderloop: Frame rendered with 'threaded' renderloop in 27ms, sync=2, render=4, swap=21 - (on render thread)
qt.scenegraph.time.renderloop: Frame prepared with 'threaded' renderloop, polish=0, lock=0, blockedForSync=10, animations=0 - (on Gui thread) BrowserWindow_QMLTYPE_1_QML_207(0xab14ee20)
qt.scenegraph.time.renderer: time in renderer: total=1ms, preprocess=0, updates=0, binding=0, rendering=1
qt.scenegraph.time.renderloop: Frame rendered with 'threaded' renderloop in 25ms, sync=0, render=2, swap=22 - (on render thread)
qt.scenegraph.time.renderloop: Frame prepared with 'threaded' renderloop, polish=0, lock=0, blockedForSync=10, animations=0 - (on Gui thread) BrowserWindow_QMLTYPE_1_QML_207(0xab14ee20)
qt.scenegraph.time.renderer: time in renderer: total=1ms, preprocess=0, updates=0, binding=0, rendering=1
qt.scenegraph.time.renderloop: Frame rendered with 'threaded' renderloop in 34ms, sync=0, render=1, swap=32 - (on render thread)
qt.scenegraph.time.renderloop: Frame prepared with 'threaded' renderloop, polish=0, lock=0, blockedForSync=19, animations=0 - (on Gui thread) BrowserWindow_QMLTYPE_1_QML_207(0xab14ee20)
qt.scenegraph.time.renderer: time in renderer: total=4ms, preprocess=0, updates=0, binding=0, rendering=4
qt.scenegraph.time.renderloop: Frame rendered with 'threaded' renderloop in 32ms, sync=0, render=5, swap=27 - (on render thread)
qt.scenegraph.time.renderer: time in renderer: total=1ms, preprocess=0, updates=0, binding=0, rendering=1
qt.scenegraph.time.renderloop: Frame prepared with 'threaded' renderloop, polish=0, lock=0, blockedForSync=19, animations=0 - (on Gui thread) BrowserWindow_QMLTYPE_1_QML_207(0xab14ee20)
qt.scenegraph.time.renderloop: Frame rendered with 'threaded' renderloop in 27ms, sync=0, render=1, swap=25 - (on render thread)
qt.scenegraph.time.renderloop: Frame prepared with 'threaded' renderloop, polish=0, lock=0, blockedForSync=12, animations=0 - (on Gui thread) BrowserWindow_QMLTYPE_1_QML_207(0xab14ee20)
qt.scenegraph.time.renderer: time in renderer: total=2ms, preprocess=0, updates=0, binding=0, rendering=2
qt.scenegraph.time.renderloop: Frame rendered with 'threaded' renderloop in 25ms, sync=0, render=3, swap=22 - (on render thread)

It looks like the main thread blocks regularly (see the blockedForSync timings), confirming my suspicion in comment 8. This is probably because the render thread is blocked in eglSwapBuffers (often for more than 16ms), and the main thread is the one that initiates a sync by posting a task to the render thread and then waiting for it to complete.

I think I'm convinced the main issues here aren't Oxide bugs.