aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar jam <jam@chromium.org>2014-12-03 15:56:36 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2014-12-03 15:56:36 -0800
commit9da051ad417c13eb562c91ef6286f92dba2ae232 (patch)
treeb5b2ccbbb0f3c84d2a7de58b076b22df506f5d43 /src
parentc3a6eb23483e5d28073b509a5f637f41660de294 (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
Diffstat (limited to 'src')
-rw-r--r--src/core/SkBitmapProcState.h2
-rw-r--r--src/opts/SkBitmapProcState_opts_SSSE3.cpp34
-rw-r--r--src/opts/SkBitmapProcState_opts_SSSE3.h4
-rw-r--r--src/opts/opts_check_x86.cpp11
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 */