i would like to ask you for some hints regarding my little problem. I'm using hildon Qt 4.6 tech preview in Fremantle, my target device is nokia n900.
I noticed that simple redrawing on the screen full size(800x480) QImage using QPainter (QPainter.drawImage()) is quite slow(n900). I went through all possible image formats from QImage::Format enum. The best performance has ARGB32 format, but it is only 14fps.
The same task using QPixmap and QPainter.drawPixmap() method gives me up to 60fps.
I understand that QImage is optimized for manipulating the data, and QPixmap for displaying it on the screen. But anyway, what if someone needs to have access to the pixel data and after some processing display it on the screen? With 14fps redrawing static image after some time spent on pixel data manipulations(and only that) i have about 7fps which is definitely too slow for me.
In my case would be really great just to put some piece of memory with pixel data on the screen as fast as possible(that memory could be the pointer given by bits() method from QImage or even QByteArray without using QImage at all).
I'm wondering about possible solutions, what i have in mind is:
1) OpenGl+QGLWidget: create a texture for every frame from pixel data and display it on the screen, i'm not sure how would it work with such a big texture to create every frame, maybe someone of you already tried smt like that?
2) QPixmap: convert pixel data to QPixmap and render it using QPainter, the problem is it will require a conversion which is not really fast... because there is no way to "fill up" existing QPixmap with other data (QPixmap::loadFromData can not read from raw pixel data) for now the solution is to create QPixmap and convert pixel data for every frame(with QPixmap::fromImage method)
3) directFB<->framebuffer: more or less similar to dsa in symbian, known to people that have used QtEmbedded before(unfortunately i have not...), using some examples from the web i was able to display what i wanted in QWidget, anyway there was a problem with hildon desktop background events during (for example) changing battery level indicator screen was flickering, i heard about directfb driver for QtEmbedded that we can use simply by -gfx option, but anyone has already tried it on maemo?
All comments to above ideas will be really appreciated, new advices will be even more.
Thanks in advance