Revert of Enable the SSSE3 compile time check on all platforms. (https://codereview.chromium.org/403583002/)
Reason for revert:
This is blocking the roll. Chromium Windows trybots (like win_chromium_x64_rel) are crashing in the SSSE3 code (for example SkCanvasVideoRenderTest.CroppedFrame).
Original issue's description:
> Enable the SSSE3 compile time check on all platforms (3rd attempt)
>
> BUG=skia:2746
>
> Committed: https://skia.googlesource.com/skia/+/933834851f9d48fbd85b728cc92e1f0134bfaa4e
R=halcanary@google.com, mtklein@google.com, djsollen@google.com
TBR=djsollen@google.com, halcanary@google.com, mtklein@google.com
NOTREECHECKS=true
NOTRY=true
BUG=skia:2746
Author: bungeman@google.com
Review URL: https://codereview.chromium.org/418523002
diff --git a/gyp/common_conditions.gypi b/gyp/common_conditions.gypi
index abb4750..69f1ddb 100644
--- a/gyp/common_conditions.gypi
+++ b/gyp/common_conditions.gypi
@@ -646,11 +646,6 @@
'-fuse-ld=gold',
],
'conditions': [
- [ 'skia_arch_type == "x86"', {
- 'cflags': [
- '-mssse3',
- ],
- }],
[ 'skia_android_framework', {
'libraries!': [
'-lstdc++',
diff --git a/gyp/opts.gyp b/gyp/opts.gyp
index 55306e4..0c1bc0a 100644
--- a/gyp/opts.gyp
+++ b/gyp/opts.gyp
@@ -188,20 +188,19 @@
'../src/core',
'../src/utils',
],
- 'sources': [
- '../src/opts/SkBitmapProcState_opts_SSSE3.cpp',
- ],
'conditions': [
- [ 'skia_os == "win"', {
- 'defines' : [ 'SK_CPU_SSE_LEVEL=31' ],
- }],
- # (Mac has -mssse3 globally.)
[ 'skia_os in ["linux", "freebsd", "openbsd", "solaris", "nacl", "chromeos", "android"] \
and not skia_android_framework', {
'cflags': [
'-mssse3',
],
}],
+ # (Mac has -mssse3 globally.)
+ [ 'skia_arch_type == "x86"', {
+ 'sources': [
+ '../src/opts/SkBitmapProcState_opts_SSSE3.cpp',
+ ],
+ }],
],
},
# For the same lame reasons as what is done for skia_opts, we also have to
@@ -221,27 +220,11 @@
'../src/core',
'../src/utils',
],
- 'sources': [
- '../src/opts/SkBlurImage_opts_SSE4.cpp',
- ],
'conditions': [
- [ 'skia_arch_width == 64', {
- 'sources': [
- '../src/opts/SkBlitRow_opts_SSE4_x64_asm.S',
- ],
- }],
- [ 'skia_arch_width == 32', {
- 'sources': [
- '../src/opts/SkBlitRow_opts_SSE4_asm.S',
- ],
- }],
- [ 'skia_os == "win"', {
- 'defines' : [ 'SK_CPU_SSE_LEVEL=41' ],
- }],
[ 'skia_os in ["linux", "freebsd", "openbsd", "solaris", "nacl", "chromeos", "android"] \
and not skia_android_framework', {
'cflags': [
- '-msse4.1',
+ '-msse4',
],
}],
[ 'skia_os == "mac"', {
@@ -250,10 +233,27 @@
'-mssse3',
],
'OTHER_CPLUSPLUSFLAGS': [
- '-msse4.1',
+ '-msse4',
],
},
}],
+ [ 'skia_arch_type == "x86"', {
+ 'sources': [
+ '../src/opts/SkBlurImage_opts_SSE4.cpp',
+ ],
+ 'conditions': [
+ [ 'skia_arch_width == 64', {
+ 'sources': [
+ '../src/opts/SkBlitRow_opts_SSE4_x64_asm.S',
+ ],
+ }],
+ [ 'skia_arch_width == 32', {
+ 'sources': [
+ '../src/opts/SkBlitRow_opts_SSE4_asm.S',
+ ],
+ }],
+ ],
+ }],
],
},
# NEON code must be compiled with -mfpu=neon which also affects scalar
diff --git a/src/opts/SkBitmapProcState_opts_SSSE3.cpp b/src/opts/SkBitmapProcState_opts_SSSE3.cpp
index 165f1f5..5b97215 100644
--- a/src/opts/SkBitmapProcState_opts_SSSE3.cpp
+++ b/src/opts/SkBitmapProcState_opts_SSSE3.cpp
@@ -9,11 +9,12 @@
#include "SkPaint.h"
#include "SkUtils.h"
-/* With the exception of the compilers that don't support it, we always build the
- * SSSE3 functions and enable the caller to determine SSSE3 support. However for
- * compilers that do not support SSSE3 we provide a stub implementation.
+/* With the exception of the Android framework we always build the SSSE3 functions
+ * and enable the caller to determine SSSE3 support. However for the Android framework
+ * if the device does not support SSSE3 then the compiler will not supply the required
+ * -mssse3 option needed to build this file, so instead we provide a stub implementation.
*/
-#if SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSSE3
+#if !defined(SK_BUILD_FOR_ANDROID_FRAMEWORK) || SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSSE3
#include <tmmintrin.h> // SSSE3
@@ -731,7 +732,7 @@
S32_generic_D32_filter_DXDY_SSSE3<true>(s, xy, count, colors);
}
-#else // SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSSE3
+#else // !defined(SK_BUILD_FOR_ANDROID_FRAMEWORK) || SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSSE3
void S32_opaque_D32_filter_DX_SSSE3(const SkBitmapProcState& s,
const uint32_t* xy,
diff --git a/src/opts/SkBlurImage_opts_SSE4.cpp b/src/opts/SkBlurImage_opts_SSE4.cpp
index 81748af..1b99038 100644
--- a/src/opts/SkBlurImage_opts_SSE4.cpp
+++ b/src/opts/SkBlurImage_opts_SSE4.cpp
@@ -10,11 +10,12 @@
#include "SkColorPriv.h"
#include "SkRect.h"
-/* With the exception of the compilers that don't support it, we always build the
- * SSE4 functions and enable the caller to determine SSE4 support. However for
- * compilers that do not support SSE4x we provide a stub implementation.
+/* With the exception of the Android framework we always build the SSE4 functions
+ * and enable the caller to determine SSE4 support. However, for the Android framework,
+ * if the device does not support SSE4x then the compiler will not supply the required
+ * -msse4* option needed to build this file, so instead we provide a stub implementation.
*/
-#if SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE41
+#if !defined(SK_BUILD_FOR_ANDROID_FRAMEWORK) || SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE41
#include <smmintrin.h>
@@ -109,7 +110,7 @@
return true;
}
-#else // SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE41
+#else // !defined(SK_BUILD_FOR_ANDROID_FRAMEWORK) || SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE41
bool SkBoxBlurGetPlatformProcs_SSE4(SkBoxBlurProc* boxBlurX,
SkBoxBlurProc* boxBlurY,