Enable the SSSE3 compile time check on all platforms (3rd attempt)
authordjsollen <djsollen@google.com>
Tue, 22 Jul 2014 14:20:18 +0000 (07:20 -0700)
committerCommit bot <commit-bot@chromium.org>
Tue, 22 Jul 2014 14:20:18 +0000 (07:20 -0700)
BUG=skia:2746
R=halcanary@google.com, mtklein@google.com

Author: djsollen@google.com

Review URL: https://codereview.chromium.org/403583002

gyp/common_conditions.gypi
gyp/opts.gyp
src/opts/SkBitmapProcState_opts_SSSE3.cpp
src/opts/SkBlurImage_opts_SSE4.cpp

index 55651deaf1aa4f1bcc5b207ba2ddb7a57a47559c..254da0a57a3850f6518188ee8473a2f0d751d25b 100644 (file)
           '-fuse-ld=gold',
         ],
         'conditions': [
+          [ 'skia_arch_type == "x86"', {
+            'cflags': [
+              '-mssse3',
+            ],
+          }],
           [ 'skia_android_framework', {
             'libraries!': [
               '-lstdc++',
index 0c1bc0a0c9b07aa20882961fa2732a823715dd8e..55306e4ee106c442c3d8bb547333730de7f72eec 100644 (file)
         '../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
         '../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"', {
               '-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
index 5b97215cc015607ab0ddd7d71598e59481435ed2..165f1f5ce068ffe560fa85ddbbaf80f93ad0ea68 100644 (file)
@@ -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,
index 1b990387c2ae707396459ba6e767eef32ac27438..81748af7b2ecd9f5938101401e6e60a4fcd94411 100644 (file)
 #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,