Infrastructure improvements for QML-based present windows
There are a couple of things that are worth looking at:
Allow directly scanning out internal windows
If an internal window covers the entire screen, scan out its client buffer and avoid performing compositing. This should lead to better performance.
Better input management
If a QML script operates with multiple windows, it should be able to toss around the input focus between them. For now, we use a heuristic that will pass input focus to the top most window on the current screen.
Rendering on a different thread
QtQuick supports rendering on a separate thread. It would be nice to render on a different thread, however it's somewhat tricky as the threaded renderer wants the buffer swap operation block until vsync. To make things even more worse, on the first exposure event, the threaded renderer will block the gui (main) thread until the first buffer swap completes.