Update: this is no longer needed with the latest Qt shipping with QtSDK 1.1 TP.
First of all the title is purposefully misleading. I just want to get a good Google pagerank and help people find this page The title is misleading, because this is not QtQuick/QML specific, but applies to any drawing done with QPainter.
So all you have to do to supercharge the drawing of your Qt/QtQuick app is call QApplication::setGraphicsSystem() before constructing your QApplication. After doing so all painting done via QPainter will be automagically executed on the GPU.
The latest Symbian hardware (N8, C7, C6-01, X7, E7 and what have you) has OpenVG support. If the device you’re targeting doesn’t support the graphics system you’re asking for Qt will just use the default software rendering.
It’s kind of sad that all this doesn’t somehow “come out of the box”. When a new developer starts with Qt, compiles some examples and tries them out, is it really reasonable to expect him to be aware of all this? First impression is so important and the difference between CPU vs GPU can be this is so lame vs wow, this is so nice! I hope at some point the Symbian port will use OpenVG by default (not sure if this will have some implications though – think 10 apps running at the same time competing for the same limited amount of GPU memory). Meanwhile I guess the only thing to do is to raise awareness. Go tell your friends!
The difference is huuuge when building animated UIs and using the GPU naturally wins hands down. Maybe in some cases when there’s lots of items to paint that require tons of painter state changes (which are poison for efficient use of the GPU) CPU rendering might be faster. Luckily for this problem too there will be a Qt solution which is called Scenegraph. Mark my words: when it gets out, it will be “teh shit” (the good kind) in UI rendering.
If you’re using the Qt 4.7 Symbian^3 developer package note that the OpenVG graphics system has got a few bugs that sometimes cause items to be painted as black rectangles and BorderImage elements have gaps. The bugs have been fixed since, so don’t worry about them.