Index: src/opts/opts_check_x86.cpp |
diff --git a/src/opts/opts_check_x86.cpp b/src/opts/opts_check_x86.cpp |
index 8fec2ba69c528040cbb02c2bd603bd1e00120a6f..505004c4adad624f585ac8c4afb4bc6336a69732 100644 |
--- a/src/opts/opts_check_x86.cpp |
+++ b/src/opts/opts_check_x86.cpp |
@@ -149,6 +149,7 @@ void SkBitmapProcState::platformProcs() { |
if (!supports_simd(SK_CPU_SSE_LEVEL_SSE2)) { |
return; |
} |
+ const bool ssse3 = supports_simd(SK_CPU_SSE_LEVEL_SSSE3); |
/* Check fSampleProc32 */ |
if (fSampleProc32 == S32_opaque_D32_filter_DX) { |
@@ -176,6 +177,8 @@ void SkBitmapProcState::platformProcs() { |
/* Check fSampleProc16 */ |
if (fSampleProc16 == S32_D16_filter_DX) { |
fSampleProc16 = S32_D16_filter_DX_SSE2; |
+ } else if (ssse3 && fSampleProc16 == S32_D16_filter_DXDY) { |
+ fSampleProc16 = S32_D16_filter_DXDY_SSSE3; |
} |
/* Check fMatrixProc */ |