diff options
author | Samuel Rødal <sroedal@trolltech.com> | 2010-03-08 12:38:08 (GMT) |
---|---|---|
committer | Samuel Rødal <sroedal@trolltech.com> | 2010-03-26 09:48:59 (GMT) |
commit | 348d22c37611066dc7efc9aac820d77bcf3bbbab (patch) | |
tree | 2def91d28881b2ec809bf1eb4a64a71b08090530 /src/gui/painting/qdrawhelper.cpp | |
parent | 8d5ae9bca2cbe8c5a7f764b8ba325f79c0bbfe62 (diff) | |
download | Qt-348d22c37611066dc7efc9aac820d77bcf3bbbab.zip Qt-348d22c37611066dc7efc9aac820d77bcf3bbbab.tar.gz Qt-348d22c37611066dc7efc9aac820d77bcf3bbbab.tar.bz2 |
Included ARM NEON optimizations from pixman in Qt.
On the N900 16 bit text blending is 30 - 50 % faster, and ARGB32PM
on RGB16 image blending now runs in 1/10th of the time it used to.
We now make ARGB32PM the default pixmap format for alpha pixmaps instead
of ARGB8565PM which is unaligned and bad for performance.
The relevant numbers:
Mostly opaque pixels:
ARGB24 on ARGB24 using QPainter..................: 336,813033
ARGB32 on ARGB32 using QPainter.................: 18,419387
RGB16 on ARGB24 using QPainter..................: 167,301014
RGB16 on ARGB32 using QPainter..................: 17,279372
ARGB24 on RGB16 using QPainter..................: 35,100147
ARGB32PM on RGB16 using QPainter................: 15,924256
No opaque pixels:
ARGB24 on ARGB24 using QPainter..................: 412,190765
ARGB32 on ARGB32 using QPainter.................: 16,818389
RGB16 on ARGB24 using QPainter..................: 170,957878
RGB16 on ARGB32 using QPainter..................: 16,742984
ARGB24 on RGB16 using QPainter..................: 93,600482
ARGB32PM on RGB16 using QPainter................: 15,999310
So switching to ARGB32PM should give a boost in all areas.
Task-number: QTBUG-6684
Reviewed-by: Gunnar Sletta
Diffstat (limited to 'src/gui/painting/qdrawhelper.cpp')
-rw-r--r-- | src/gui/painting/qdrawhelper.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp index 1f75ec7..130270b 100644 --- a/src/gui/painting/qdrawhelper.cpp +++ b/src/gui/painting/qdrawhelper.cpp @@ -7961,6 +7961,10 @@ void qInitDrawhelperAsm() qBlendFunctions[QImage::Format_ARGB32_Premultiplied][QImage::Format_RGB32] = qt_blend_rgb32_on_rgb32_neon; qBlendFunctions[QImage::Format_RGB32][QImage::Format_ARGB32_Premultiplied] = qt_blend_argb32_on_argb32_neon; qBlendFunctions[QImage::Format_ARGB32_Premultiplied][QImage::Format_ARGB32_Premultiplied] = qt_blend_argb32_on_argb32_neon; + qBlendFunctions[QImage::Format_RGB16][QImage::Format_ARGB32_Premultiplied] = qt_blend_argb32_on_rgb16_neon; + qBlendFunctions[QImage::Format_ARGB32_Premultiplied][QImage::Format_RGB16] = qt_blend_rgb16_on_argb32_neon; + + qDrawHelper[QImage::Format_RGB16].alphamapBlit = qt_alphamapblit_quint16_neon; } #endif |