diff options
-rw-r--r-- | gyp/common_conditions.gypi | 5 | ||||
-rw-r--r-- | gyp/opts.gyp | 50 | ||||
-rw-r--r-- | src/opts/SkBitmapProcState_opts_SSSE3.cpp | 11 | ||||
-rw-r--r-- | src/opts/SkBlurImage_opts_SSE4.cpp | 11 |
4 files changed, 40 insertions, 37 deletions
diff --git a/gyp/common_conditions.gypi b/gyp/common_conditions.gypi index 69f1ddbcd4..abb47502b6 100644 --- a/gyp/common_conditions.gypi +++ b/gyp/common_conditions.gypi @@ -646,6 +646,11 @@ '-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 0c1bc0a0c9..55306e4ee1 100644 --- a/gyp/opts.gyp +++ b/gyp/opts.gyp @@ -188,19 +188,20 @@ '../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 @@ -220,11 +221,27 @@ '../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', + '-msse4.1', ], }], [ 'skia_os == "mac"', { @@ -233,27 +250,10 @@ '-mssse3', ], 'OTHER_CPLUSPLUSFLAGS': [ - '-msse4', + '-msse4.1', ], }, }], - [ '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 5b97215cc0..165f1f5ce0 100644 --- a/src/opts/SkBitmapProcState_opts_SSSE3.cpp +++ b/src/opts/SkBitmapProcState_opts_SSSE3.cpp @@ -9,12 +9,11 @@ #include "SkPaint.h" #include "SkUtils.h" -/* 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. +/* 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. */ -#if !defined(SK_BUILD_FOR_ANDROID_FRAMEWORK) || SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSSE3 +#if SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSSE3 #include <tmmintrin.h> // SSSE3 @@ -732,7 +731,7 @@ void S32_alpha_D32_filter_DXDY_SSSE3(const SkBitmapProcState& s, S32_generic_D32_filter_DXDY_SSSE3<true>(s, xy, count, colors); } -#else // !defined(SK_BUILD_FOR_ANDROID_FRAMEWORK) || SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSSE3 +#else // 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 1b990387c2..81748af7b2 100644 --- a/src/opts/SkBlurImage_opts_SSE4.cpp +++ b/src/opts/SkBlurImage_opts_SSE4.cpp @@ -10,12 +10,11 @@ #include "SkColorPriv.h" #include "SkRect.h" -/* 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. +/* 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. */ -#if !defined(SK_BUILD_FOR_ANDROID_FRAMEWORK) || SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE41 +#if SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE41 #include <smmintrin.h> @@ -110,7 +109,7 @@ bool SkBoxBlurGetPlatformProcs_SSE4(SkBoxBlurProc* boxBlurX, return true; } -#else // !defined(SK_BUILD_FOR_ANDROID_FRAMEWORK) || SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE41 +#else // SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE41 bool SkBoxBlurGetPlatformProcs_SSE4(SkBoxBlurProc* boxBlurX, SkBoxBlurProc* boxBlurY, |