Hi Mario, Thanks for your feedback.
I've not been able to make a significant improvement by optimizing the graphics driver; the underlying memory is system memory rather than video memory so the GDU can't help. I am currently experimenting with a rather unpleasant, WinCE specific change to QNativeImage that uses VirtualAlloc()/VirtualCopy() calls that go via a proxy in the kernel (as CE 6.0 applications can't make these calls directly). The idea is to map a ~6MB region of video memory into the application. Then I have extensions in the display driver to allow me to find the physical address allocated for the last CreateCompatibleBitmap() call (which uses video memory). Using these techniques I can then pass a pointer to the QImage constructor that actually points at video memory. Subsequent calls to BitBlt() can then go via the GPU. A lot of hacking but there is a lot of potential for an increase in performance. Regards, Neil -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Gruber Mario Sent: 19 October 2009 07:54 To: [email protected] Subject: Re: [Qt-wince-interest] Qt/WinCE GPU hardware acceleration Hi Neil, We're using a PXA320 design as well and we have had similar performance issues with our screen device. We noticed as well, that Qt internally uses slow DIBs instead of the faster DDBs. We already gave the Qt Developers a hint on this via the Qt-Support, but I think it would be good if someone else would dig deeper on this. Furthermore, Qt does not distinguish between 24 bpp and 32 bpp. It uses a 32 bpp format, even if the system is configured for 24 bpp. Under 16 bpp, it uses the standard 565 format. In the end, we did the same as you did: We optimized or graphics device driver and we were able to increase the blitts by factor 10-20 depending on the pixel-format. We can live with that for the moment. Cheers, Mario ________________________________ Von: [email protected] [mailto:[email protected]] Im Auftrag von Neil Haran Gesendet: Mittwoch, 14. Oktober 2009 14:41 An: [email protected] Betreff: [Qt-wince-interest] Qt/WinCE GPU hardware acceleration Hi, We are developing a fairly 'rich' UI using Qt for a WinCE target of our own design. The implementation makes use of opaque sections, scrolling areas and generally lots of calls to the GDI BitBlt() function. I am also developing the display driver for our device (a Marvel PXA320 design). I have optimized most of the GDI calls to go via the GPU which has made a huge improvement to some apps; my profiling tools and the Windows CE desktop. However, Qt apps see little improvement. I have discovered this seems to be due to the constructor of QNativeImage which creates it's surface via a call to CreateDIBSection(). This GDI call allocates system memory rather than video memory - a requirement of Qt as your Qimage constructor takes a bitmap pointer as a parameter. Using system memory means the GPU can't help though..... Has anyone ever looked in this area before? Do you have any ideas? Regards, Neil Haran Senior Software Developer _______________________________________________ Qt-wince-interest mailing list [email protected] http://lists.trolltech.com/mailman/listinfo/qt-wince-interest _______________________________________________ Qt-wince-interest mailing list [email protected] http://lists.trolltech.com/mailman/listinfo/qt-wince-interest
