Enable the SSSE3 files to be built for Android when SSSE3 is not present.
Committed: http://code.google.com/p/skia/source/detail?r=13547 R=reed@google.com, mtklein@google.com Author: djsollen@google.com Review URL: https://codereview.chromium.org/169753004 git-svn-id: http://skia.googlecode.com/svn/trunk@13583 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
parent
b4c5f06c03
commit
88a954335a
@ -116,40 +116,30 @@
|
||||
|
||||
// Are we in GCC?
|
||||
#ifndef SK_CPU_SSE_LEVEL
|
||||
#if defined(__SSE2__)
|
||||
#define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE2
|
||||
// These checks must be done in descending order to ensure we set the highest
|
||||
// available SSE level.
|
||||
#if defined(__SSSE3__)
|
||||
#define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSSE3
|
||||
#elif defined(__SSE3__)
|
||||
#define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE3
|
||||
#elif defined(__SSSE3__)
|
||||
#define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSSE3
|
||||
#elif defined(__SSE2__)
|
||||
#define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE2
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Are we in VisualStudio?
|
||||
#ifndef SK_CPU_SSE_LEVEL
|
||||
// These checks must be done in descending order to ensure we set the highest
|
||||
// available SSE level.
|
||||
#if defined (_M_IX86_FP)
|
||||
#if _M_IX86_FP == 1
|
||||
#define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE1
|
||||
#elif _M_IX86_FP >= 2
|
||||
#if _M_IX86_FP >= 2
|
||||
#define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE2
|
||||
#elif _M_IX86_FP == 1
|
||||
#define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE1
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// 64bit intel guarantees at least SSE2
|
||||
#if defined(__x86_64__) || defined(_WIN64)
|
||||
#if !defined(SK_CPU_SSE_LEVEL) || (SK_CPU_SSE_LEVEL < SK_CPU_SSE_LEVEL_SSE2)
|
||||
#undef SK_CPU_SSE_LEVEL
|
||||
#define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE2
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Android x86 NDK ABI requires SSE3 support
|
||||
#if defined(SK_BUILD_FOR_ANDROID)
|
||||
#undef SK_CPU_SSE_LEVEL
|
||||
#define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE3
|
||||
#endif
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// ARM defines
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user