Index: src/opts/SkBitmapProcState_opts_SSSE3.cpp |
diff --git a/src/opts/SkBitmapProcState_opts_SSSE3.cpp b/src/opts/SkBitmapProcState_opts_SSSE3.cpp |
index f8342ecaad5551c0eef8fcca472d3e85bcda1d8d..ddc8ccc5ab5fad5d8411c63df9e81ebae516e5c9 100644 |
--- a/src/opts/SkBitmapProcState_opts_SSSE3.cpp |
+++ b/src/opts/SkBitmapProcState_opts_SSSE3.cpp |
@@ -5,11 +5,19 @@ |
* found in the LICENSE file. |
*/ |
-#include <tmmintrin.h> // SSSE3 |
#include "SkBitmapProcState_opts_SSSE3.h" |
#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. |
+ */ |
+#if !defined(SK_BUILD_FOR_ANDROID_FRAMEWORK) || SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSSE3 |
+ |
+#include <tmmintrin.h> // SSSE3 |
+ |
// adding anonymous namespace seemed to force gcc to inline directly the |
// instantiation, instead of creating the functions |
// S32_generic_D32_filter_DX_SSSE3<true> and |
@@ -722,3 +730,31 @@ void S32_alpha_D32_filter_DXDY_SSSE3(const SkBitmapProcState& s, |
int count, uint32_t* colors) { |
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 |
+ |
+void S32_opaque_D32_filter_DX_SSSE3(const SkBitmapProcState& s, |
+ const uint32_t* xy, |
+ int count, uint32_t* colors) { |
+ sk_throw(); |
+} |
+ |
+void S32_alpha_D32_filter_DX_SSSE3(const SkBitmapProcState& s, |
+ const uint32_t* xy, |
+ int count, uint32_t* colors) { |
+ sk_throw(); |
+} |
+ |
+void S32_opaque_D32_filter_DXDY_SSSE3(const SkBitmapProcState& s, |
+ const uint32_t* xy, |
+ int count, uint32_t* colors) { |
+ sk_throw(); |
+} |
+ |
+void S32_alpha_D32_filter_DXDY_SSSE3(const SkBitmapProcState& s, |
+ const uint32_t* xy, |
+ int count, uint32_t* colors) { |
+ sk_throw(); |
+} |
+ |
+#endif |