diff options
author | jam <jam@chromium.org> | 2014-12-03 15:56:36 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-12-03 15:56:36 -0800 |
commit | 9da051ad417c13eb562c91ef6286f92dba2ae232 (patch) | |
tree | b5b2ccbbb0f3c84d2a7de58b076b22df506f5d43 | |
parent | c3a6eb23483e5d28073b509a5f637f41660de294 (diff) |
Revert of Add SSSE3 acceleration for S32_D16_filter_DXDY (patchset #3 id:40001 of https://codereview.chromium.org/773753002/)
Reason for revert:
breaks build when not using SSE3, since the two method definitions differ in parameter types (typo)
Original issue's description:
> Add SSSE3 acceleration for S32_D16_filter_DXDY
>
> With this CL, related nanobench can be improved for 565 config.
> bitmap_BGRA_8888_scale_rotate_bilerp 115us -> 70.5us 0.61x
> bitmap_BGRA_8888_update_volatile_scale_rotate_bilerp 115us -> 70.5us 0.61x
> bitmap_BGRA_8888_update_scale_rotate_bilerp 112us -> 68us 0.6x
>
>
> BUG=skia:
>
> Committed: https://skia.googlesource.com/skia/+/45a05780867a06b9f8a8d5240cf6c5d5a2c15a35
TBR=mtklein@google.com,qkmiao@gmail.com,qiankun.miao@intel.com
NOTREECHECKS=true
NOTRY=true
BUG=skia:
Review URL: https://codereview.chromium.org/761103003
-rw-r--r-- | src/core/SkBitmapProcState.h | 2 | ||||
-rw-r--r-- | src/opts/SkBitmapProcState_opts_SSSE3.cpp | 34 | ||||
-rw-r--r-- | src/opts/SkBitmapProcState_opts_SSSE3.h | 4 | ||||
-rw-r--r-- | src/opts/opts_check_x86.cpp | 11 |
4 files changed, 12 insertions, 39 deletions
diff --git a/src/core/SkBitmapProcState.h b/src/core/SkBitmapProcState.h index add5bf4fa9..dd1f0bff45 100644 --- a/src/core/SkBitmapProcState.h +++ b/src/core/SkBitmapProcState.h @@ -204,8 +204,6 @@ void ClampX_ClampY_nofilter_affine(const SkBitmapProcState& s, uint32_t xy[], int count, int x, int y); void S32_D16_filter_DX(const SkBitmapProcState& s, const uint32_t* xy, int count, uint16_t* colors); -void S32_D16_filter_DXDY(const SkBitmapProcState& s, - const uint32_t* xy, int count, uint16_t* colors); void highQualityFilter32(const SkBitmapProcState &s, int x, int y, SkPMColor *SK_RESTRICT colors, int count); diff --git a/src/opts/SkBitmapProcState_opts_SSSE3.cpp b/src/opts/SkBitmapProcState_opts_SSSE3.cpp index 5e7c7b4698..165f1f5ce0 100644 --- a/src/opts/SkBitmapProcState_opts_SSSE3.cpp +++ b/src/opts/SkBitmapProcState_opts_SSSE3.cpp @@ -6,7 +6,6 @@ */ #include "SkBitmapProcState_opts_SSSE3.h" -#include "SkColorPriv.h" #include "SkPaint.h" #include "SkUtils.h" @@ -721,28 +720,17 @@ void S32_alpha_D32_filter_DX_SSSE3(const SkBitmapProcState& s, } void S32_opaque_D32_filter_DXDY_SSSE3(const SkBitmapProcState& s, - const uint32_t* xy, - int count, uint32_t* colors) { + const uint32_t* xy, + int count, uint32_t* colors) { S32_generic_D32_filter_DXDY_SSSE3<false>(s, xy, count, colors); } void S32_alpha_D32_filter_DXDY_SSSE3(const SkBitmapProcState& s, - const uint32_t* xy, - int count, uint32_t* colors) { + const uint32_t* xy, + int count, uint32_t* colors) { S32_generic_D32_filter_DXDY_SSSE3<true>(s, xy, count, colors); } -void S32_D16_filter_DXDY_SSSE3(const SkBitmapProcState& s, - const uint32_t* xy, - int count, uint16_t* colors) { - SkASSERT(64 >= count); - SkAutoSTMalloc<64, uint32_t> colors32(count); - S32_generic_D32_filter_DXDY_SSSE3<false>(s, xy, count, colors32); - for(int i = 0; i < count; i++) { - *colors++ = SkPixel32ToPixel16(colors32[i]); - } -} - #else // SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSSE3 void S32_opaque_D32_filter_DX_SSSE3(const SkBitmapProcState& s, @@ -758,20 +746,14 @@ void S32_alpha_D32_filter_DX_SSSE3(const SkBitmapProcState& s, } void S32_opaque_D32_filter_DXDY_SSSE3(const SkBitmapProcState& s, - const uint32_t* xy, - int count, uint32_t* colors) { + 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(); -} - -void S32_D16_filter_DXDY_SSSE3(const SkBitmapProcState& s, - const uint32_t* xy, - int count, uint32_t* colors) { + const uint32_t* xy, + int count, uint32_t* colors) { sk_throw(); } diff --git a/src/opts/SkBitmapProcState_opts_SSSE3.h b/src/opts/SkBitmapProcState_opts_SSSE3.h index 74504d8bc6..9fd074aacf 100644 --- a/src/opts/SkBitmapProcState_opts_SSSE3.h +++ b/src/opts/SkBitmapProcState_opts_SSSE3.h @@ -23,8 +23,4 @@ void S32_alpha_D32_filter_DXDY_SSSE3(const SkBitmapProcState& s, const uint32_t* xy, int count, uint32_t* colors); -void S32_D16_filter_DXDY_SSSE3(const SkBitmapProcState& s, - const uint32_t* xy, - int count, uint16_t* colors); - #endif diff --git a/src/opts/opts_check_x86.cpp b/src/opts/opts_check_x86.cpp index 34aae928eb..8fec2ba69c 100644 --- a/src/opts/opts_check_x86.cpp +++ b/src/opts/opts_check_x86.cpp @@ -149,27 +149,26 @@ 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) { - if (ssse3) { + if (supports_simd(SK_CPU_SSE_LEVEL_SSSE3)) { fSampleProc32 = S32_opaque_D32_filter_DX_SSSE3; } else { fSampleProc32 = S32_opaque_D32_filter_DX_SSE2; } } else if (fSampleProc32 == S32_opaque_D32_filter_DXDY) { - if (ssse3) { + if (supports_simd(SK_CPU_SSE_LEVEL_SSSE3)) { fSampleProc32 = S32_opaque_D32_filter_DXDY_SSSE3; } } else if (fSampleProc32 == S32_alpha_D32_filter_DX) { - if (ssse3) { + if (supports_simd(SK_CPU_SSE_LEVEL_SSSE3)) { fSampleProc32 = S32_alpha_D32_filter_DX_SSSE3; } else { fSampleProc32 = S32_alpha_D32_filter_DX_SSE2; } } else if (fSampleProc32 == S32_alpha_D32_filter_DXDY) { - if (ssse3) { + if (supports_simd(SK_CPU_SSE_LEVEL_SSSE3)) { fSampleProc32 = S32_alpha_D32_filter_DXDY_SSSE3; } } @@ -177,8 +176,6 @@ 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 */ |