diff options
Diffstat (limited to 'src/opts/opts_check_x86.cpp')
-rw-r--r-- | src/opts/opts_check_x86.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/opts/opts_check_x86.cpp b/src/opts/opts_check_x86.cpp index 603458ba26..5bab17aa00 100644 --- a/src/opts/opts_check_x86.cpp +++ b/src/opts/opts_check_x86.cpp @@ -15,6 +15,7 @@ #include "SkBlitRow_opts_SSE2.h" #include "SkBlitRow_opts_SSE4.h" #include "SkBlurImage_opts_SSE2.h" +#include "SkBlurImage_opts_SSE4.h" #include "SkMorphology_opts.h" #include "SkMorphology_opts_SSE2.h" #include "SkRTConf.h" @@ -358,10 +359,13 @@ bool SkBoxBlurGetPlatformProcs(SkBoxBlurProc* boxBlurX, #ifdef SK_DISABLE_BLUR_DIVISION_OPTIMIZATION return false; #else - if (!supports_simd(SK_CPU_SSE_LEVEL_SSE2)) { - return false; + if (supports_simd(SK_CPU_SSE_LEVEL_SSE41)) { + return SkBoxBlurGetPlatformProcs_SSE4(boxBlurX, boxBlurY, boxBlurXY, boxBlurYX); } - return SkBoxBlurGetPlatformProcs_SSE2(boxBlurX, boxBlurY, boxBlurXY, boxBlurYX); + else if (supports_simd(SK_CPU_SSE_LEVEL_SSE2)) { + return SkBoxBlurGetPlatformProcs_SSE2(boxBlurX, boxBlurY, boxBlurXY, boxBlurYX); + } + return false; #endif } |