Lines 13-21
Link Here
|
13 |
#include "SkBlitRect_opts_SSE2.h" |
13 |
#include "SkBlitRect_opts_SSE2.h" |
14 |
#include "SkBlitRow.h" |
14 |
#include "SkBlitRow.h" |
15 |
#include "SkBlitRow_opts_SSE2.h" |
15 |
#include "SkBlitRow_opts_SSE2.h" |
16 |
#include "SkBlitRow_opts_SSE4.h" |
|
|
17 |
#include "SkBlurImage_opts_SSE2.h" |
16 |
#include "SkBlurImage_opts_SSE2.h" |
|
|
17 |
#ifdef __x86_64__ |
18 |
#include "SkBlitRow_opts_SSE4.h" |
18 |
#include "SkBlurImage_opts_SSE4.h" |
19 |
#include "SkBlurImage_opts_SSE4.h" |
|
|
20 |
#endif |
19 |
#include "SkMorphology_opts.h" |
21 |
#include "SkMorphology_opts.h" |
20 |
#include "SkMorphology_opts_SSE2.h" |
22 |
#include "SkMorphology_opts_SSE2.h" |
21 |
#include "SkRTConf.h" |
23 |
#include "SkRTConf.h" |
Lines 83-93
Link Here
|
83 |
int cpu_info[4] = { 0 }; |
85 |
int cpu_info[4] = { 0 }; |
84 |
|
86 |
|
85 |
getcpuid(1, cpu_info); |
87 |
getcpuid(1, cpu_info); |
|
|
88 |
#ifdef __x86_64__ |
86 |
if ((cpu_info[2] & (1<<20)) != 0) { |
89 |
if ((cpu_info[2] & (1<<20)) != 0) { |
87 |
return SK_CPU_SSE_LEVEL_SSE42; |
90 |
return SK_CPU_SSE_LEVEL_SSE42; |
88 |
} else if ((cpu_info[2] & (1<<19)) != 0) { |
91 |
} else if ((cpu_info[2] & (1<<19)) != 0) { |
89 |
return SK_CPU_SSE_LEVEL_SSE41; |
92 |
return SK_CPU_SSE_LEVEL_SSE41; |
90 |
} else if ((cpu_info[2] & (1<<9)) != 0) { |
93 |
} else |
|
|
94 |
#endif |
95 |
if ((cpu_info[2] & (1<<9)) != 0) { |
91 |
return SK_CPU_SSE_LEVEL_SSSE3; |
96 |
return SK_CPU_SSE_LEVEL_SSSE3; |
92 |
} else if ((cpu_info[3] & (1<<26)) != 0) { |
97 |
} else if ((cpu_info[3] & (1<<26)) != 0) { |
93 |
return SK_CPU_SSE_LEVEL_SSE2; |
98 |
return SK_CPU_SSE_LEVEL_SSE2; |
Lines 218-224
Link Here
|
218 |
S32A_Blend_BlitRow32_SSE2, // S32A_Blend, |
223 |
S32A_Blend_BlitRow32_SSE2, // S32A_Blend, |
219 |
}; |
224 |
}; |
220 |
|
225 |
|
221 |
#if defined(SK_ATT_ASM_SUPPORTED) |
226 |
#if defined(SK_ATT_ASM_SUPPORTED) && defined (__x86_64__) |
222 |
static SkBlitRow::Proc32 platform_32_procs_SSE4[] = { |
227 |
static SkBlitRow::Proc32 platform_32_procs_SSE4[] = { |
223 |
NULL, // S32_Opaque, |
228 |
NULL, // S32_Opaque, |
224 |
S32_Blend_BlitRow32_SSE2, // S32_Blend, |
229 |
S32_Blend_BlitRow32_SSE2, // S32_Blend, |
Lines 228-234
Link Here
|
228 |
#endif |
233 |
#endif |
229 |
|
234 |
|
230 |
SkBlitRow::Proc32 SkBlitRow::PlatformProcs32(unsigned flags) { |
235 |
SkBlitRow::Proc32 SkBlitRow::PlatformProcs32(unsigned flags) { |
231 |
#if defined(SK_ATT_ASM_SUPPORTED) |
236 |
#if defined(SK_ATT_ASM_SUPPORTED) && defined (__x86_64__) |
232 |
if (supports_simd(SK_CPU_SSE_LEVEL_SSE41)) { |
237 |
if (supports_simd(SK_CPU_SSE_LEVEL_SSE41)) { |
233 |
return platform_32_procs_SSE4[flags]; |
238 |
return platform_32_procs_SSE4[flags]; |
234 |
} else |
239 |
} else |
Lines 359-368
Link Here
|
359 |
#ifdef SK_DISABLE_BLUR_DIVISION_OPTIMIZATION |
364 |
#ifdef SK_DISABLE_BLUR_DIVISION_OPTIMIZATION |
360 |
return false; |
365 |
return false; |
361 |
#else |
366 |
#else |
|
|
367 |
#ifdef __x86_64__ |
362 |
if (supports_simd(SK_CPU_SSE_LEVEL_SSE41)) { |
368 |
if (supports_simd(SK_CPU_SSE_LEVEL_SSE41)) { |
363 |
return SkBoxBlurGetPlatformProcs_SSE4(boxBlurX, boxBlurY, boxBlurXY, boxBlurYX); |
369 |
return SkBoxBlurGetPlatformProcs_SSE4(boxBlurX, boxBlurY, boxBlurXY, boxBlurYX); |
364 |
} |
370 |
} |
365 |
else if (supports_simd(SK_CPU_SSE_LEVEL_SSE2)) { |
371 |
else |
|
|
372 |
#endif |
373 |
if (supports_simd(SK_CPU_SSE_LEVEL_SSE2)) { |
366 |
return SkBoxBlurGetPlatformProcs_SSE2(boxBlurX, boxBlurY, boxBlurXY, boxBlurYX); |
374 |
return SkBoxBlurGetPlatformProcs_SSE2(boxBlurX, boxBlurY, boxBlurXY, boxBlurYX); |
367 |
} |
375 |
} |
368 |
return false; |
376 |
return false; |