OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2015 Google Inc. | 2 * Copyright 2015 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #include "Benchmark.h" | 8 #include "Benchmark.h" |
9 #include "SkBitmap.h" | 9 #include "SkBitmap.h" |
10 #include "SkMipMap.h" | 10 #include "SkMipMap.h" |
11 | 11 |
12 class MipMapBench: public Benchmark { | 12 class MipMapBench: public Benchmark { |
13 SkBitmap fBitmap; | 13 SkBitmap fBitmap; |
14 SkString fName; | 14 SkString fName; |
15 const int fW, fH; | 15 const int fW, fH; |
| 16 SkMipMap::SrcGammaMode fMode; |
16 | 17 |
17 public: | 18 public: |
18 MipMapBench(int w, int h) : fW(w), fH(h) { | 19 MipMapBench(int w, int h, SkMipMap::SrcGammaMode mode) : fW(w), fH(h), fMode
(mode) { |
19 fName.printf("mipmap_build_%dx%d", w, h); | 20 fName.printf("mipmap_build_%dx%d_%d_gamma", w, h, mode); |
20 } | 21 } |
21 | 22 |
22 protected: | 23 protected: |
23 bool isSuitableFor(Backend backend) override { | 24 bool isSuitableFor(Backend backend) override { |
24 return kNonRendering_Backend == backend; | 25 return kNonRendering_Backend == backend; |
25 } | 26 } |
26 | 27 |
27 const char* onGetName() override { return fName.c_str(); } | 28 const char* onGetName() override { return fName.c_str(); } |
28 | 29 |
29 void onDelayedSetup() override { | 30 void onDelayedSetup() override { |
30 fBitmap.allocN32Pixels(fW, fH, true); | 31 SkImageInfo info = SkImageInfo::MakeS32(fW, fH, kPremul_SkAlphaType); |
| 32 fBitmap.allocPixels(info); |
31 fBitmap.eraseColor(SK_ColorWHITE); // so we don't read uninitialized me
mory | 33 fBitmap.eraseColor(SK_ColorWHITE); // so we don't read uninitialized me
mory |
32 } | 34 } |
33 | 35 |
34 void onDraw(int loops, SkCanvas*) override { | 36 void onDraw(int loops, SkCanvas*) override { |
35 for (int i = 0; i < loops * 4; i++) { | 37 for (int i = 0; i < loops * 4; i++) { |
36 SkMipMap::Build(fBitmap, nullptr)->unref(); | 38 SkMipMap::Build(fBitmap, fMode, nullptr)->unref(); |
37 } | 39 } |
38 } | 40 } |
39 | 41 |
40 private: | 42 private: |
41 typedef Benchmark INHERITED; | 43 typedef Benchmark INHERITED; |
42 }; | 44 }; |
43 | 45 |
44 // Build variants that exercise the width and heights being even or odd at each
level, as the | 46 // Build variants that exercise the width and heights being even or odd at each
level, as the |
45 // impl specializes on each of these. | 47 // impl specializes on each of these. |
46 // | 48 // |
47 DEF_BENCH( return new MipMapBench(511, 511); ) | 49 DEF_BENCH( return new MipMapBench(511, 511, SkMipMap::kIgnore_SrcGammaMode); ) |
48 DEF_BENCH( return new MipMapBench(512, 511); ) | 50 DEF_BENCH( return new MipMapBench(512, 511, SkMipMap::kIgnore_SrcGammaMode); ) |
49 DEF_BENCH( return new MipMapBench(511, 512); ) | 51 DEF_BENCH( return new MipMapBench(511, 512, SkMipMap::kIgnore_SrcGammaMode); ) |
50 DEF_BENCH( return new MipMapBench(512, 512); ) | 52 DEF_BENCH( return new MipMapBench(512, 512, SkMipMap::kIgnore_SrcGammaMode); ) |
| 53 DEF_BENCH( return new MipMapBench(512, 512, SkMipMap::kRespect_SrcGammaMode); ) |
OLD | NEW |