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 |