summaryrefslogtreecommitdiffstats
path: root/src/gui
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2012-08-15 22:50:20 +0200
committerQt by Nokia <qt-info@nokia.com>2012-08-21 11:05:20 +0200
commitadc4a8e42bcb4c40314c7f549bc475ba01957b8d (patch)
treef0c39510579d78d502db5c2ec6482c4ffcd51da5 /src/gui
parent6e8c719e3b8567926de6b88a8ab074c871eb12a0 (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')
-rw-r--r--src/gui/image/qjpeghandler.cpp16
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
}