land http://codereview.appspot.com/6353063/ by Lei
optimizations for D16 using SSE2
skia_bench -config 565 -match bitmap_8888_scale_filter -forceFilter 1 -repeat
30
The result I got on Android platform was below:
w/o this optimization routine:
D/skia ( 1868): running bench [640 480] bitmap_8888_scale_filter
D/skia ( 1868): 565: cmsecs = 286.50
w/ with optimization:
D/skia ( 1463): running bench [640 480] bitmap_8888_scale_filter
D/skia ( 1463): 565: cmsecs = 186.80
The net gain is 34.80%.
git-svn-id: http://skia.googlecode.com/svn/trunk@4729 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/bench/BitmapBench.cpp b/bench/BitmapBench.cpp
index 51dd47a..40a733d 100644
--- a/bench/BitmapBench.cpp
+++ b/bench/BitmapBench.cpp
@@ -251,7 +251,7 @@
static SkBenchmark* Fact7(void* p) { return new BitmapBench(p, true, SkBitmap::kARGB_8888_Config, true, true); }
static SkBenchmark* Fact8(void* p) { return new BitmapBench(p, true, SkBitmap::kARGB_8888_Config, true, false); }
-// scale filter -> S32_opaque_D32_filter_DX_{SSE2,SSSE3}
+// scale filter -> S32_opaque_D32_filter_DX_{SSE2,SSSE3} and Fact9 is also for S32_D16_filter_DX_SSE2
static SkBenchmark* Fact9(void* p) { return new FilterBitmapBench(p, false, SkBitmap::kARGB_8888_Config, false, false, -1, -1, true, false, true); }
static SkBenchmark* Fact10(void* p) { return new FilterBitmapBench(p, true, SkBitmap::kARGB_8888_Config, false, false, -1, -1, true, false, true); }
static SkBenchmark* Fact11(void* p) { return new FilterBitmapBench(p, true, SkBitmap::kARGB_8888_Config, true, true, -1, -1, true, false, true); }