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

Reply via email to