diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2012-08-15 22:50:20 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-08-21 11:05:20 +0200 |
commit | adc4a8e42bcb4c40314c7f549bc475ba01957b8d (patch) | |
tree | f0c39510579d78d502db5c2ec6482c4ffcd51da5 /src/gui/image/qjpeghandler.cpp | |
parent | 6e8c719e3b8567926de6b88a8ab074c871eb12a0 (diff) |
Add AVX support for the JPEG handler
Apparently I had forgotten about this previously. Use the AVX conversion
function if the compiler could generate AVX code.
Note: the functions need to be declared outside of the function block
so namespace scoping works properly with MSVC. For functions declared
inside, it expects them to be in the global namespace.
Change-Id: I7b7248dbfce3cc7c580dee920407c205049cb746
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
Diffstat (limited to 'src/gui/image/qjpeghandler.cpp')
-rw-r--r-- | src/gui/image/qjpeghandler.cpp | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/gui/image/qjpeghandler.cpp b/src/gui/image/qjpeghandler.cpp index 647ef6bad4..c30404e2c9 100644 --- a/src/gui/image/qjpeghandler.cpp +++ b/src/gui/image/qjpeghandler.cpp @@ -870,22 +870,32 @@ bool QJpegHandlerPrivate::read(QImage *image) } +Q_GUI_EXPORT void QT_FASTCALL qt_convert_rgb888_to_rgb32_neon(quint32 *dst, const uchar *src, int len); +Q_GUI_EXPORT void QT_FASTCALL qt_convert_rgb888_to_rgb32_ssse3(quint32 *dst, const uchar *src, int len); +Q_GUI_EXPORT void QT_FASTCALL qt_convert_rgb888_to_rgb32_avx(quint32 *dst, const uchar *src, int len); + QJpegHandler::QJpegHandler() : d(new QJpegHandlerPrivate(this)) { #if defined(QT_COMPILER_SUPPORTS_NEON) // from qimage_neon.cpp - Q_GUI_EXPORT void QT_FASTCALL qt_convert_rgb888_to_rgb32_neon(quint32 *dst, const uchar *src, int len); if (qCpuHasFeature(NEON)) rgb888ToRgb32ConverterPtr = qt_convert_rgb888_to_rgb32_neon; #endif // QT_COMPILER_SUPPORTS_NEON #if defined(QT_COMPILER_SUPPORTS_SSSE3) // from qimage_ssse3.cpp - Q_GUI_EXPORT void QT_FASTCALL qt_convert_rgb888_to_rgb32_ssse3(quint32 *dst, const uchar *src, int len); - if (qCpuHasFeature(SSSE3)) + if (false) { +# if defined(QT_COMPILER_SUPPORTS_AVX) + } else if (qCpuHasFeature(AVX)) { + rgb888ToRgb32ConverterPtr = qt_convert_rgb888_to_rgb32_avx; +# endif +# ifndef __AVX__ + } else if (qCpuHasFeature(SSSE3)) { rgb888ToRgb32ConverterPtr = qt_convert_rgb888_to_rgb32_ssse3; +# endif + } #endif // QT_COMPILER_SUPPORTS_SSSE3 } |