Remove the files building AVX code
This feature was never completely implemented. Sure, it's nice to build the SSE2 + SSSE3 code with the VEX prefix, which results in better code. But the leap isn't that big anyway. This is the first step to removing the runtime detection for the drawhelpers. They create timebombs when we use inline functions. Task-number: QTBUG-30440 Change-Id: Ic53b2cf5261106a1c940d4a36eb6111b7d998be1 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
This commit is contained in:
parent
bfe0db6fbe
commit
5e519b31dc
@ -77,4 +77,3 @@ contains(QT_CONFIG, gif):include($$PWD/qgifhandler.pri)
|
||||
NEON_SOURCES += image/qimage_neon.cpp
|
||||
SSE2_SOURCES += image/qimage_sse2.cpp
|
||||
SSSE3_SOURCES += image/qimage_ssse3.cpp
|
||||
AVX_SOURCES += image/qimage_avx.cpp
|
||||
|
@ -3922,20 +3922,7 @@ static InPlace_Image_Converter inplace_converter_map[QImage::NImageFormats][QIma
|
||||
|
||||
void qInitImageConversions()
|
||||
{
|
||||
#ifdef QT_COMPILER_SUPPORTS_AVX
|
||||
if (qCpuHasFeature(AVX)) {
|
||||
extern bool convert_ARGB_to_ARGB_PM_inplace_avx(QImageData *data, Qt::ImageConversionFlags);
|
||||
inplace_converter_map[QImage::Format_ARGB32][QImage::Format_ARGB32_Premultiplied] = convert_ARGB_to_ARGB_PM_inplace_avx;
|
||||
|
||||
extern void convert_RGB888_to_RGB32_avx(QImageData *dest, const QImageData *src, Qt::ImageConversionFlags);
|
||||
converter_map[QImage::Format_RGB888][QImage::Format_RGB32] = convert_RGB888_to_RGB32_avx;
|
||||
converter_map[QImage::Format_RGB888][QImage::Format_ARGB32] = convert_RGB888_to_RGB32_avx;
|
||||
converter_map[QImage::Format_RGB888][QImage::Format_ARGB32_Premultiplied] = convert_RGB888_to_RGB32_avx;
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(QT_COMPILER_SUPPORTS_SSE2) && !defined(__AVX__)
|
||||
#if defined(QT_COMPILER_SUPPORTS_SSE2)
|
||||
if (qCpuHasFeature(SSE2)) {
|
||||
extern bool convert_ARGB_to_ARGB_PM_inplace_sse2(QImageData *data, Qt::ImageConversionFlags);
|
||||
inplace_converter_map[QImage::Format_ARGB32][QImage::Format_ARGB32_Premultiplied] = convert_ARGB_to_ARGB_PM_inplace_sse2;
|
||||
|
@ -1,57 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2012 Intel Corporation
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of the QtGui module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and Digia. For licensing terms and
|
||||
** conditions see http://qt.digia.com/licensing. For further information
|
||||
** use the contact form at http://qt.digia.com/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 2.1 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Digia gives you certain additional
|
||||
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 3.0 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU General Public License version 3.0 requirements will be
|
||||
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||
**
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#include <private/qsimd_p.h>
|
||||
|
||||
#ifdef QT_COMPILER_SUPPORTS_AVX
|
||||
|
||||
#ifndef __AVX__
|
||||
#error "AVX not enabled in this file, cannot proceed"
|
||||
#endif
|
||||
|
||||
#define convert_ARGB_to_ARGB_PM_inplace_sse2 convert_ARGB_to_ARGB_PM_inplace_avx
|
||||
#include "qimage_sse2.cpp"
|
||||
|
||||
#define qt_convert_rgb888_to_rgb32_ssse3 qt_convert_rgb888_to_rgb32_avx
|
||||
#define convert_RGB888_to_RGB32_ssse3 convert_RGB888_to_RGB32_avx
|
||||
#include "qimage_ssse3.cpp"
|
||||
|
||||
#endif
|
@ -871,14 +871,8 @@ QJpegHandler::QJpegHandler()
|
||||
// from qimage_ssse3.cpp
|
||||
|
||||
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
|
||||
}
|
||||
|
@ -90,7 +90,6 @@ SOURCES += \
|
||||
SSE2_SOURCES += painting/qdrawhelper_sse2.cpp
|
||||
SSSE3_SOURCES += painting/qdrawhelper_ssse3.cpp
|
||||
IWMMXT_SOURCES += painting/qdrawhelper_iwmmxt.cpp
|
||||
AVX_SOURCES += painting/qdrawhelper_avx.cpp
|
||||
|
||||
!ios {
|
||||
NEON_SOURCES += painting/qdrawhelper_neon.cpp
|
||||
|
@ -6203,31 +6203,6 @@ void qInitDrawhelperAsm()
|
||||
const uint features = qCpuFeatures();
|
||||
if (false) {
|
||||
Q_UNUSED(features);
|
||||
#ifdef QT_COMPILER_SUPPORTS_AVX
|
||||
} else if (features & AVX) {
|
||||
qt_memfill32 = qt_memfill32_avx;
|
||||
qt_memfill16 = qt_memfill16_avx;
|
||||
qDrawHelper[QImage::Format_RGB32].bitmapBlit = qt_bitmapblit32_avx;
|
||||
qDrawHelper[QImage::Format_ARGB32].bitmapBlit = qt_bitmapblit32_avx;
|
||||
qDrawHelper[QImage::Format_ARGB32_Premultiplied].bitmapBlit = qt_bitmapblit32_avx;
|
||||
qDrawHelper[QImage::Format_RGB16].bitmapBlit = qt_bitmapblit16_avx;
|
||||
qDrawHelper[QImage::Format_RGBX8888].bitmapBlit = qt_bitmapblit32_avx;
|
||||
qDrawHelper[QImage::Format_RGBA8888].bitmapBlit = qt_bitmapblit32_avx;
|
||||
qDrawHelper[QImage::Format_RGBA8888_Premultiplied].bitmapBlit = qt_bitmapblit32_avx;
|
||||
|
||||
extern void qt_scale_image_argb32_on_argb32_avx(uchar *destPixels, int dbpl,
|
||||
const uchar *srcPixels, int sbpl,
|
||||
const QRectF &targetRect,
|
||||
const QRectF &sourceRect,
|
||||
const QRect &clip,
|
||||
int const_alpha);
|
||||
qScaleFunctions[QImage::Format_ARGB32_Premultiplied][QImage::Format_ARGB32_Premultiplied] = qt_scale_image_argb32_on_argb32_avx;
|
||||
qScaleFunctions[QImage::Format_RGB32][QImage::Format_ARGB32_Premultiplied] = qt_scale_image_argb32_on_argb32_avx;
|
||||
#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN
|
||||
qScaleFunctions[QImage::Format_RGBA8888_Premultiplied][QImage::Format_RGBA8888_Premultiplied] = qt_scale_image_argb32_on_argb32_avx;
|
||||
qScaleFunctions[QImage::Format_RGBX8888][QImage::Format_RGBA8888_Premultiplied] = qt_scale_image_argb32_on_argb32_avx;
|
||||
#endif
|
||||
#endif
|
||||
#ifdef QT_COMPILER_SUPPORTS_SSE2
|
||||
} else if (features & SSE2) {
|
||||
qt_memfill32 = qt_memfill32_sse2;
|
||||
@ -6299,35 +6274,6 @@ void qInitDrawhelperAsm()
|
||||
}
|
||||
#endif // SSSE3
|
||||
|
||||
#ifdef QT_COMPILER_SUPPORTS_AVX
|
||||
if (features & AVX) {
|
||||
extern void qt_blend_rgb32_on_rgb32_avx(uchar *destPixels, int dbpl,
|
||||
const uchar *srcPixels, int sbpl,
|
||||
int w, int h,
|
||||
int const_alpha);
|
||||
extern void qt_blend_argb32_on_argb32_avx(uchar *destPixels, int dbpl,
|
||||
const uchar *srcPixels, int sbpl,
|
||||
int w, int h,
|
||||
int const_alpha);
|
||||
|
||||
qBlendFunctions[QImage::Format_RGB32][QImage::Format_RGB32] = qt_blend_rgb32_on_rgb32_avx;
|
||||
qBlendFunctions[QImage::Format_ARGB32_Premultiplied][QImage::Format_RGB32] = qt_blend_rgb32_on_rgb32_avx;
|
||||
qBlendFunctions[QImage::Format_RGB32][QImage::Format_ARGB32_Premultiplied] = qt_blend_argb32_on_argb32_avx;
|
||||
qBlendFunctions[QImage::Format_ARGB32_Premultiplied][QImage::Format_ARGB32_Premultiplied] = qt_blend_argb32_on_argb32_avx;
|
||||
#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN
|
||||
qBlendFunctions[QImage::Format_RGBX8888][QImage::Format_RGBX8888] = qt_blend_rgb32_on_rgb32_avx;
|
||||
qBlendFunctions[QImage::Format_RGBA8888_Premultiplied][QImage::Format_RGBX8888] = qt_blend_rgb32_on_rgb32_avx;
|
||||
qBlendFunctions[QImage::Format_RGBX8888][QImage::Format_RGBA8888_Premultiplied] = qt_blend_argb32_on_argb32_avx;
|
||||
qBlendFunctions[QImage::Format_RGBA8888_Premultiplied][QImage::Format_RGBA8888_Premultiplied] = qt_blend_argb32_on_argb32_avx;
|
||||
#endif
|
||||
|
||||
extern const uint * QT_FASTCALL qt_fetch_radial_gradient_avx(uint *buffer, const Operator *op, const QSpanData *data,
|
||||
int y, int x, int length);
|
||||
|
||||
qt_fetch_radial_gradient = qt_fetch_radial_gradient_avx;
|
||||
}
|
||||
#endif // AVX
|
||||
|
||||
#endif // SSE2
|
||||
|
||||
#ifdef QT_COMPILER_SUPPORTS_SSE2
|
||||
@ -6336,22 +6282,6 @@ void qInitDrawhelperAsm()
|
||||
functionForModeSolidAsm = qt_functionForModeSolid_SSE2;
|
||||
}
|
||||
#endif
|
||||
#ifdef QT_COMPILER_SUPPORTS_AVX
|
||||
if (features & AVX) {
|
||||
extern void QT_FASTCALL comp_func_SourceOver_avx(uint *destPixels,
|
||||
const uint *srcPixels,
|
||||
int length,
|
||||
uint const_alpha);
|
||||
extern void QT_FASTCALL comp_func_solid_SourceOver_avx(uint *destPixels, int length, uint color, uint const_alpha);
|
||||
extern void QT_FASTCALL comp_func_Plus_avx(uint *dst, const uint *src, int length, uint const_alpha);
|
||||
extern void QT_FASTCALL comp_func_Source_avx(uint *dst, const uint *src, int length, uint const_alpha);
|
||||
|
||||
functionForModeAsm[0] = comp_func_SourceOver_avx;
|
||||
functionForModeAsm[QPainter::CompositionMode_Source] = comp_func_Source_avx;
|
||||
functionForModeAsm[QPainter::CompositionMode_Plus] = comp_func_Plus_avx;
|
||||
functionForModeSolidAsm[0] = comp_func_solid_SourceOver_avx;
|
||||
}
|
||||
#endif // SSE2
|
||||
|
||||
#ifdef QT_COMPILER_SUPPORTS_IWMMXT
|
||||
if (features & IWMMXT) {
|
||||
|
@ -1,70 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2012 Intel Corporation
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of the QtGui module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and Digia. For licensing terms and
|
||||
** conditions see http://qt.digia.com/licensing. For further information
|
||||
** use the contact form at http://qt.digia.com/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 2.1 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Digia gives you certain additional
|
||||
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 3.0 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU General Public License version 3.0 requirements will be
|
||||
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||
**
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#include <private/qsimd_p.h>
|
||||
|
||||
#ifdef QT_COMPILER_SUPPORTS_AVX
|
||||
#define QDRAWHELPER_AVX
|
||||
|
||||
#ifndef __AVX__
|
||||
#error "AVX not enabled in this file, cannot proceed"
|
||||
#endif
|
||||
|
||||
#define qt_blend_argb32_on_argb32_ssse3 qt_blend_argb32_on_argb32_avx
|
||||
#include "qdrawhelper_ssse3.cpp"
|
||||
|
||||
//#define qt_blend_argb32_on_argb32_sse2 qt_blend_argb32_on_argb32_avx
|
||||
#define qt_blend_rgb32_on_rgb32_sse2 qt_blend_rgb32_on_rgb32_avx
|
||||
#define comp_func_SourceOver_sse2 comp_func_SourceOver_avx
|
||||
#define comp_func_Plus_sse2 comp_func_Plus_avx
|
||||
#define comp_func_Source_sse2 comp_func_Source_avx
|
||||
#define comp_func_solid_SourceOver_sse2 comp_func_solid_SourceOver_avx
|
||||
#define qt_memfill32_sse2 qt_memfill32_avx
|
||||
#define qt_memfill16_sse2 qt_memfill16_avx
|
||||
#define qt_bitmapblit32_sse2 qt_bitmapblit32_avx
|
||||
#define qt_bitmapblit16_sse2 qt_bitmapblit16_avx
|
||||
#define QSimdSse2 QSimdAvx
|
||||
#define qt_fetch_radial_gradient_sse2 qt_fetch_radial_gradient_avx
|
||||
#define qt_scale_image_argb32_on_argb32_sse2 qt_scale_image_argb32_on_argb32_avx
|
||||
|
||||
#include "qdrawhelper_sse2.cpp"
|
||||
|
||||
#endif
|
@ -79,25 +79,6 @@ extern CompositionFunction qt_functionForMode_SSE2[];
|
||||
extern CompositionFunctionSolid qt_functionForModeSolid_SSE2[];
|
||||
#endif // QT_COMPILER_SUPPORTS_SSE2
|
||||
|
||||
#ifdef QT_COMPILER_SUPPORTS_AVX
|
||||
void qt_memfill32_avx(quint32 *dest, quint32 value, int count);
|
||||
void qt_memfill16_avx(quint16 *dest, quint16 value, int count);
|
||||
void qt_bitmapblit32_avx(QRasterBuffer *rasterBuffer, int x, int y,
|
||||
quint32 color,
|
||||
const uchar *src, int width, int height, int stride);
|
||||
void qt_bitmapblit16_avx(QRasterBuffer *rasterBuffer, int x, int y,
|
||||
quint32 color,
|
||||
const uchar *src, int width, int height, int stride);
|
||||
void qt_blend_argb32_on_argb32_avx(uchar *destPixels, int dbpl,
|
||||
const uchar *srcPixels, int sbpl,
|
||||
int w, int h,
|
||||
int const_alpha);
|
||||
void qt_blend_rgb32_on_rgb32_avx(uchar *destPixels, int dbpl,
|
||||
const uchar *srcPixels, int sbpl,
|
||||
int w, int h,
|
||||
int const_alpha);
|
||||
#endif // QT_COMPILER_SUPPORTS_AVX
|
||||
|
||||
#ifdef QT_COMPILER_SUPPORTS_IWMMXT
|
||||
void qt_blend_color_argb_iwmmxt(int count, const QSpan *spans, void *userData);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user