Subject: Qt Scenegraph and Mir

From: Gerry Boland <[email-masked]>
Date: Wed, 30 Oct 2013 17:01:22 +0100

Hi folks,
as many of you know, on the current phone/tablet, all the application
switching animations are not done with live surfaces, but instead with
screenshots. This obviously is not ideal, so I want to fix that.

I've been researching ways to more tightly combine Mir surfaces with
Qt/QML, so that a Mir surface integrates nicely with QML, so they can be
transformed and animated with the usual QML syntax. It also discusses
non-GL hardware acceleration, and input handling.

I've written up the results of my research, and several proposed
solutions in this document:
https://docs.google.com/a/canonical.com/document/d/12tzE3Ha7ZJR_U4FZsAqKTgqDkWawXFSxY4Q-6PifgD4/edit?usp=sharing

Anything unclear or vague, please comment and I'll address it as best I can.

I want to open discussions on the topic ASAP, so that we can decide the
best strategy forward, and let me get to work on this!

Thanks
-Gerry

---

From: Daniel van Vugt <[email-masked]>
Date: Fri, 01 Nov 2013 14:08:55 +0800

Comments added to the doc. And now some high-level thoughts:

1. To make communication of requirements between Unity and Mir teams 
more clear, we should avoid using any Q-words. This is simply because 
Mir is not toolkit specific and any Mir work is not toolkit specific. 
The Mir team will better understand what you mean and want if it's 
expressed in a way that also does not sound toolkit specific (even if it 
comes from toolkit-specific requirements, which are fine).

2. As with any siginificant Google doc, we should ensure all comments 
are agreed upon and marked as resolved. Then the comments will no longer 
be visible. If something important is in a comment and not in the 
document, it needs to be moved into the document.

3. I got a bit of a surprise to find the document is much about work 
I've already implemented. We have optimizations in place to dynamically 
switch between hardware non-GL compositing and GL compositing (and 
dynamic optimizations to GL compositing). The most relevant code is in:
   src/server/compositor/bypass.cpp
   src/server/compositor/occlusion.cpp
   src/server/compositor/default_display_buffer_compositor.cpp

Despite already being implemented, I fully support changes to the Scene 
classes and composition algorithms. And I would be happy to see the 
aforementioned source files replaced with a cleaner Scene model. So long 
as we don't lose any functionality or performance already established.

- Daniel