| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2011 Google Inc. | 3 * Copyright 2011 Google Inc. |
| 4 * | 4 * |
| 5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
| 6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
| 7 */ | 7 */ |
| 8 #include "SkBenchmark.h" | 8 #include "SkBenchmark.h" |
| 9 #include "SkBitmap.h" | 9 #include "SkBitmap.h" |
| 10 #include "SkPaint.h" | 10 #include "SkPaint.h" |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 77 SkBitmap fBitmap; | 77 SkBitmap fBitmap; |
| 78 SkPaint fPaint; | 78 SkPaint fPaint; |
| 79 bool fIsOpaque; | 79 bool fIsOpaque; |
| 80 bool fForceUpdate; //bitmap marked as dirty before each draw. forces
bitmap to be updated on device cache | 80 bool fForceUpdate; //bitmap marked as dirty before each draw. forces
bitmap to be updated on device cache |
| 81 bool fIsVolatile; | 81 bool fIsVolatile; |
| 82 SkBitmap::Config fConfig; | 82 SkBitmap::Config fConfig; |
| 83 SkString fName; | 83 SkString fName; |
| 84 enum { W = 128 }; | 84 enum { W = 128 }; |
| 85 enum { H = 128 }; | 85 enum { H = 128 }; |
| 86 public: | 86 public: |
| 87 BitmapBench(void* param, bool isOpaque, SkBitmap::Config c, | 87 BitmapBench(bool isOpaque, SkBitmap::Config c, |
| 88 bool forceUpdate = false, bool bitmapVolatile = false) | 88 bool forceUpdate = false, bool bitmapVolatile = false) |
| 89 : INHERITED(param) | 89 : fIsOpaque(isOpaque) |
| 90 , fIsOpaque(isOpaque) | |
| 91 , fForceUpdate(forceUpdate) | 90 , fForceUpdate(forceUpdate) |
| 92 , fIsVolatile(bitmapVolatile) | 91 , fIsVolatile(bitmapVolatile) |
| 93 , fConfig(c) { | 92 , fConfig(c) { |
| 94 } | 93 } |
| 95 | 94 |
| 96 protected: | 95 protected: |
| 97 virtual const char* onGetName() { | 96 virtual const char* onGetName() { |
| 98 fName.set("bitmap"); | 97 fName.set("bitmap"); |
| 99 fName.appendf("_%s%s", gConfigName[fConfig], | 98 fName.appendf("_%s%s", gConfigName[fConfig], |
| 100 fIsOpaque ? "" : "_A"); | 99 fIsOpaque ? "" : "_A"); |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 193 } | 192 } |
| 194 | 193 |
| 195 static bool isBicubic(uint32_t flags) { | 194 static bool isBicubic(uint32_t flags) { |
| 196 return (flags & (kBilerp_Flag | kBicubic_Flag)) == (kBilerp_Flag | kBicubic_
Flag); | 195 return (flags & (kBilerp_Flag | kBicubic_Flag)) == (kBilerp_Flag | kBicubic_
Flag); |
| 197 } | 196 } |
| 198 | 197 |
| 199 class FilterBitmapBench : public BitmapBench { | 198 class FilterBitmapBench : public BitmapBench { |
| 200 uint32_t fFlags; | 199 uint32_t fFlags; |
| 201 SkString fFullName; | 200 SkString fFullName; |
| 202 public: | 201 public: |
| 203 FilterBitmapBench(void* param, bool isOpaque, SkBitmap::Config c, | 202 FilterBitmapBench(bool isOpaque, SkBitmap::Config c, |
| 204 bool forceUpdate, bool isVolitile, uint32_t flags) | 203 bool forceUpdate, bool isVolitile, uint32_t flags) |
| 205 : INHERITED(param, isOpaque, c, forceUpdate, isVolitile) | 204 : INHERITED(isOpaque, c, forceUpdate, isVolitile) |
| 206 , fFlags(flags) { | 205 , fFlags(flags) { |
| 207 } | 206 } |
| 208 | 207 |
| 209 protected: | 208 protected: |
| 210 virtual const char* onGetName() { | 209 virtual const char* onGetName() { |
| 211 fFullName.set(INHERITED::onGetName()); | 210 fFullName.set(INHERITED::onGetName()); |
| 212 if (fFlags & kScale_Flag) { | 211 if (fFlags & kScale_Flag) { |
| 213 fFullName.append("_scale"); | 212 fFullName.append("_scale"); |
| 214 } | 213 } |
| 215 if (fFlags & kRotate_Flag) { | 214 if (fFlags & kRotate_Flag) { |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 272 /** Verify optimizations that test source alpha values. */ | 271 /** Verify optimizations that test source alpha values. */ |
| 273 | 272 |
| 274 class SourceAlphaBitmapBench : public BitmapBench { | 273 class SourceAlphaBitmapBench : public BitmapBench { |
| 275 public: | 274 public: |
| 276 enum SourceAlpha { kOpaque_SourceAlpha, kTransparent_SourceAlpha, | 275 enum SourceAlpha { kOpaque_SourceAlpha, kTransparent_SourceAlpha, |
| 277 kTwoStripes_SourceAlpha, kThreeStripes_SourceAlpha}; | 276 kTwoStripes_SourceAlpha, kThreeStripes_SourceAlpha}; |
| 278 private: | 277 private: |
| 279 SkString fFullName; | 278 SkString fFullName; |
| 280 SourceAlpha fSourceAlpha; | 279 SourceAlpha fSourceAlpha; |
| 281 public: | 280 public: |
| 282 SourceAlphaBitmapBench(void* param, SourceAlpha alpha, SkBitmap::Config c, | 281 SourceAlphaBitmapBench(SourceAlpha alpha, SkBitmap::Config c, |
| 283 bool forceUpdate = false, bool bitmapVolatile = false) | 282 bool forceUpdate = false, bool bitmapVolatile = false) |
| 284 : INHERITED(param, false, c, forceUpdate, bitmapVolatile) | 283 : INHERITED(false, c, forceUpdate, bitmapVolatile) |
| 285 , fSourceAlpha(alpha) { | 284 , fSourceAlpha(alpha) { |
| 286 } | 285 } |
| 287 | 286 |
| 288 protected: | 287 protected: |
| 289 virtual const char* onGetName() { | 288 virtual const char* onGetName() { |
| 290 fFullName.set(INHERITED::onGetName()); | 289 fFullName.set(INHERITED::onGetName()); |
| 291 | 290 |
| 292 if (fSourceAlpha == kOpaque_SourceAlpha) { | 291 if (fSourceAlpha == kOpaque_SourceAlpha) { |
| 293 fFullName.append("_source_opaque"); | 292 fFullName.append("_source_opaque"); |
| 294 } else if (fSourceAlpha == kTransparent_SourceAlpha) { | 293 } else if (fSourceAlpha == kTransparent_SourceAlpha) { |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 351 r.set(SkIntToScalar(x), 0, SkIntToScalar(x+1), SkIntToScalar(h))
; | 350 r.set(SkIntToScalar(x), 0, SkIntToScalar(x+1), SkIntToScalar(h))
; |
| 352 canvas.drawRect(r, p); | 351 canvas.drawRect(r, p); |
| 353 } | 352 } |
| 354 } | 353 } |
| 355 } | 354 } |
| 356 | 355 |
| 357 private: | 356 private: |
| 358 typedef BitmapBench INHERITED; | 357 typedef BitmapBench INHERITED; |
| 359 }; | 358 }; |
| 360 | 359 |
| 361 DEF_BENCH( return new BitmapBench(p, false, SkBitmap::kARGB_8888_Config); ) | 360 DEF_BENCH( return new BitmapBench(false, SkBitmap::kARGB_8888_Config); ) |
| 362 DEF_BENCH( return new BitmapBench(p, true, SkBitmap::kARGB_8888_Config); ) | 361 DEF_BENCH( return new BitmapBench(true, SkBitmap::kARGB_8888_Config); ) |
| 363 DEF_BENCH( return new BitmapBench(p, true, SkBitmap::kRGB_565_Config); ) | 362 DEF_BENCH( return new BitmapBench(true, SkBitmap::kRGB_565_Config); ) |
| 364 DEF_BENCH( return new BitmapBench(p, false, SkBitmap::kIndex8_Config); ) | 363 DEF_BENCH( return new BitmapBench(false, SkBitmap::kIndex8_Config); ) |
| 365 DEF_BENCH( return new BitmapBench(p, true, SkBitmap::kIndex8_Config); ) | 364 DEF_BENCH( return new BitmapBench(true, SkBitmap::kIndex8_Config); ) |
| 366 DEF_BENCH( return new BitmapBench(p, true, SkBitmap::kARGB_8888_Config, true, tr
ue); ) | 365 DEF_BENCH( return new BitmapBench(true, SkBitmap::kARGB_8888_Config, true, true)
; ) |
| 367 DEF_BENCH( return new BitmapBench(p, true, SkBitmap::kARGB_8888_Config, true, fa
lse); ) | 366 DEF_BENCH( return new BitmapBench(true, SkBitmap::kARGB_8888_Config, true, false
); ) |
| 368 | 367 |
| 369 // scale filter -> S32_opaque_D32_filter_DX_{SSE2,SSSE3} and Fact9 is also for S
32_D16_filter_DX_SSE2 | 368 // scale filter -> S32_opaque_D32_filter_DX_{SSE2,SSSE3} and Fact9 is also for S
32_D16_filter_DX_SSE2 |
| 370 DEF_BENCH( return new FilterBitmapBench(p, false, SkBitmap::kARGB_8888_Config, f
alse, false, kScale_Flag | kBilerp_Flag); ) | 369 DEF_BENCH( return new FilterBitmapBench(false, SkBitmap::kARGB_8888_Config, fals
e, false, kScale_Flag | kBilerp_Flag); ) |
| 371 DEF_BENCH( return new FilterBitmapBench(p, true, SkBitmap::kARGB_8888_Config, fa
lse, false, kScale_Flag | kBilerp_Flag); ) | 370 DEF_BENCH( return new FilterBitmapBench(true, SkBitmap::kARGB_8888_Config, false
, false, kScale_Flag | kBilerp_Flag); ) |
| 372 DEF_BENCH( return new FilterBitmapBench(p, true, SkBitmap::kARGB_8888_Config, tr
ue, true, kScale_Flag | kBilerp_Flag); ) | 371 DEF_BENCH( return new FilterBitmapBench(true, SkBitmap::kARGB_8888_Config, true,
true, kScale_Flag | kBilerp_Flag); ) |
| 373 DEF_BENCH( return new FilterBitmapBench(p, true, SkBitmap::kARGB_8888_Config, tr
ue, false, kScale_Flag | kBilerp_Flag); ) | 372 DEF_BENCH( return new FilterBitmapBench(true, SkBitmap::kARGB_8888_Config, true,
false, kScale_Flag | kBilerp_Flag); ) |
| 374 | 373 |
| 375 // scale rotate filter -> S32_opaque_D32_filter_DXDY_{SSE2,SSSE3} | 374 // scale rotate filter -> S32_opaque_D32_filter_DXDY_{SSE2,SSSE3} |
| 376 DEF_BENCH( return new FilterBitmapBench(p, false, SkBitmap::kARGB_8888_Config, f
alse, false, kScale_Flag | kRotate_Flag | kBilerp_Flag); ) | 375 DEF_BENCH( return new FilterBitmapBench(false, SkBitmap::kARGB_8888_Config, fals
e, false, kScale_Flag | kRotate_Flag | kBilerp_Flag); ) |
| 377 DEF_BENCH( return new FilterBitmapBench(p, true, SkBitmap::kARGB_8888_Config, fa
lse, false, kScale_Flag | kRotate_Flag | kBilerp_Flag); ) | 376 DEF_BENCH( return new FilterBitmapBench(true, SkBitmap::kARGB_8888_Config, false
, false, kScale_Flag | kRotate_Flag | kBilerp_Flag); ) |
| 378 DEF_BENCH( return new FilterBitmapBench(p, true, SkBitmap::kARGB_8888_Config, tr
ue, true, kScale_Flag | kRotate_Flag | kBilerp_Flag); ) | 377 DEF_BENCH( return new FilterBitmapBench(true, SkBitmap::kARGB_8888_Config, true,
true, kScale_Flag | kRotate_Flag | kBilerp_Flag); ) |
| 379 DEF_BENCH( return new FilterBitmapBench(p, true, SkBitmap::kARGB_8888_Config, tr
ue, false, kScale_Flag | kRotate_Flag | kBilerp_Flag); ) | 378 DEF_BENCH( return new FilterBitmapBench(true, SkBitmap::kARGB_8888_Config, true,
false, kScale_Flag | kRotate_Flag | kBilerp_Flag); ) |
| 380 | 379 |
| 381 DEF_BENCH( return new FilterBitmapBench(p, false, SkBitmap::kARGB_8888_Config, f
alse, false, kScale_Flag | kBilerp_Flag | kBicubic_Flag); ) | 380 DEF_BENCH( return new FilterBitmapBench(false, SkBitmap::kARGB_8888_Config, fals
e, false, kScale_Flag | kBilerp_Flag | kBicubic_Flag); ) |
| 382 DEF_BENCH( return new FilterBitmapBench(p, false, SkBitmap::kARGB_8888_Config, f
alse, false, kScale_Flag | kRotate_Flag | kBilerp_Flag | kBicubic_Flag); ) | 381 DEF_BENCH( return new FilterBitmapBench(false, SkBitmap::kARGB_8888_Config, fals
e, false, kScale_Flag | kRotate_Flag | kBilerp_Flag | kBicubic_Flag); ) |
| 383 | 382 |
| 384 // source alpha tests -> S32A_Opaque_BlitRow32_{arm,neon} | 383 // source alpha tests -> S32A_Opaque_BlitRow32_{arm,neon} |
| 385 DEF_BENCH( return new SourceAlphaBitmapBench(p, SourceAlphaBitmapBench::kOpaque_
SourceAlpha, SkBitmap::kARGB_8888_Config); ) | 384 DEF_BENCH( return new SourceAlphaBitmapBench(SourceAlphaBitmapBench::kOpaque_Sou
rceAlpha, SkBitmap::kARGB_8888_Config); ) |
| 386 DEF_BENCH( return new SourceAlphaBitmapBench(p, SourceAlphaBitmapBench::kTranspa
rent_SourceAlpha, SkBitmap::kARGB_8888_Config); ) | 385 DEF_BENCH( return new SourceAlphaBitmapBench(SourceAlphaBitmapBench::kTransparen
t_SourceAlpha, SkBitmap::kARGB_8888_Config); ) |
| 387 DEF_BENCH( return new SourceAlphaBitmapBench(p, SourceAlphaBitmapBench::kTwoStri
pes_SourceAlpha, SkBitmap::kARGB_8888_Config); ) | 386 DEF_BENCH( return new SourceAlphaBitmapBench(SourceAlphaBitmapBench::kTwoStripes
_SourceAlpha, SkBitmap::kARGB_8888_Config); ) |
| 388 DEF_BENCH( return new SourceAlphaBitmapBench(p, SourceAlphaBitmapBench::kThreeSt
ripes_SourceAlpha, SkBitmap::kARGB_8888_Config); ) | 387 DEF_BENCH( return new SourceAlphaBitmapBench(SourceAlphaBitmapBench::kThreeStrip
es_SourceAlpha, SkBitmap::kARGB_8888_Config); ) |
| OLD | NEW |