| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2013 Google Inc. | 3 * Copyright 2013 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 | 8 |
| 9 #include "SkBenchmark.h" | 9 #include "SkBenchmark.h" |
| 10 #include "SkCanvas.h" | 10 #include "SkCanvas.h" |
| 11 #include "SkPaint.h" | 11 #include "SkPaint.h" |
| 12 #include "SkRandom.h" | 12 #include "SkRandom.h" |
| 13 #include "SkString.h" | 13 #include "SkString.h" |
| 14 #include "SkXfermode.h" | 14 #include "SkXfermode.h" |
| 15 #include "SkLumaXfermode.h" |
| 15 | 16 |
| 16 // Benchmark that draws non-AA rects with an SkXfermode::Mode | 17 // Benchmark that draws non-AA rects with an SkXfermode::Mode |
| 17 class XfermodeBench : public SkBenchmark { | 18 class XfermodeBench : public SkBenchmark { |
| 18 public: | 19 public: |
| 19 XfermodeBench(void* param, SkXfermode::Mode mode) : SkBenchmark(param) { | 20 XfermodeBench(void* param, SkXfermode::Mode mode) : SkBenchmark(param) { |
| 20 fXfermode.reset(SkXfermode::Create(mode)); | 21 fXfermode.reset(SkXfermode::Create(mode)); |
| 21 SkASSERT(NULL != fXfermode.get() || SkXfermode::kSrcOver_Mode == mode); | 22 SkASSERT(NULL != fXfermode.get() || SkXfermode::kSrcOver_Mode == mode); |
| 22 fName.printf("Xfermode_%s", SkXfermode::ModeName(mode)); | 23 fName.printf("Xfermode_%s", SkXfermode::ModeName(mode)); |
| 23 } | 24 } |
| 24 | 25 |
| 26 XfermodeBench(void* param, SkXfermode* xferMode, const char* name) |
| 27 : SkBenchmark(param) { |
| 28 SkASSERT(NULL != xferMode); |
| 29 fXfermode.reset(xferMode); |
| 30 fName.printf("Xfermode_%s", name); |
| 31 } |
| 32 |
| 25 protected: | 33 protected: |
| 26 virtual const char* onGetName() SK_OVERRIDE { return fName.c_str(); } | 34 virtual const char* onGetName() SK_OVERRIDE { return fName.c_str(); } |
| 27 | 35 |
| 28 virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE { | 36 virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE { |
| 29 SkISize size = canvas->getDeviceSize(); | 37 SkISize size = canvas->getDeviceSize(); |
| 30 SkMWCRandom random; | 38 SkMWCRandom random; |
| 31 for (int i = 0; i < kNumRects; ++i) { | 39 for (int i = 0; i < kNumRects; ++i) { |
| 32 SkPaint paint; | 40 SkPaint paint; |
| 33 paint.setXfermode(fXfermode.get()); | 41 paint.setXfermode(fXfermode.get()); |
| 34 paint.setColor(random.nextU()); | 42 paint.setColor(random.nextU()); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 51 kMaxSize = 100, | 59 kMaxSize = 100, |
| 52 }; | 60 }; |
| 53 SkAutoTUnref<SkXfermode> fXfermode; | 61 SkAutoTUnref<SkXfermode> fXfermode; |
| 54 SkString fName; | 62 SkString fName; |
| 55 | 63 |
| 56 typedef SkBenchmark INHERITED; | 64 typedef SkBenchmark INHERITED; |
| 57 }; | 65 }; |
| 58 | 66 |
| 59 ////////////////////////////////////////////////////////////////////////////// | 67 ////////////////////////////////////////////////////////////////////////////// |
| 60 | 68 |
| 61 static SkBenchmark* Fact00(void* p) { return new XfermodeBench(p, SkXfermode::kC
lear_Mode); } | 69 #define CONCAT_I(x, y) x ## y |
| 62 static SkBenchmark* Fact01(void* p) { return new XfermodeBench(p, SkXfermode::kS
rc_Mode); } | 70 #define CONCAT(x, y) CONCAT_I(x, y) // allow for macro expansion |
| 63 static SkBenchmark* Fact02(void* p) { return new XfermodeBench(p, SkXfermode::kD
st_Mode); } | 71 #define BENCH(...) \ |
| 64 static SkBenchmark* Fact03(void* p) { return new XfermodeBench(p, SkXfermode::kS
rcOver_Mode); } | 72 static SkBenchmark* CONCAT(Fact, __LINE__)(void *p) { return new XfermodeBen
ch(p, __VA_ARGS__); };\ |
| 65 static SkBenchmark* Fact04(void* p) { return new XfermodeBench(p, SkXfermode::kD
stOver_Mode); } | 73 static BenchRegistry CONCAT(gReg, __LINE__)(CONCAT(Fact, __LINE__)); |
| 66 static SkBenchmark* Fact05(void* p) { return new XfermodeBench(p, SkXfermode::kS
rcIn_Mode); } | |
| 67 static SkBenchmark* Fact06(void* p) { return new XfermodeBench(p, SkXfermode::kD
stIn_Mode); } | |
| 68 static SkBenchmark* Fact07(void* p) { return new XfermodeBench(p, SkXfermode::kS
rcOut_Mode); } | |
| 69 static SkBenchmark* Fact08(void* p) { return new XfermodeBench(p, SkXfermode::kD
stOut_Mode); } | |
| 70 static SkBenchmark* Fact09(void* p) { return new XfermodeBench(p, SkXfermode::kS
rcATop_Mode); } | |
| 71 static SkBenchmark* Fact10(void* p) { return new XfermodeBench(p, SkXfermode::kD
stATop_Mode); } | |
| 72 static SkBenchmark* Fact11(void* p) { return new XfermodeBench(p, SkXfermode::kX
or_Mode); } | |
| 73 static SkBenchmark* Fact12(void* p) { return new XfermodeBench(p, SkXfermode::kP
lus_Mode); } | |
| 74 static SkBenchmark* Fact13(void* p) { return new XfermodeBench(p, SkXfermode::kM
odulate_Mode); } | |
| 75 static SkBenchmark* Fact14(void* p) { return new XfermodeBench(p, SkXfermode::kS
creen_Mode); } | |
| 76 static SkBenchmark* Fact15(void* p) { return new XfermodeBench(p, SkXfermode::kO
verlay_Mode); } | |
| 77 static SkBenchmark* Fact16(void* p) { return new XfermodeBench(p, SkXfermode::kD
arken_Mode); } | |
| 78 static SkBenchmark* Fact17(void* p) { return new XfermodeBench(p, SkXfermode::kL
ighten_Mode); } | |
| 79 static SkBenchmark* Fact18(void* p) { return new XfermodeBench(p, SkXfermode::kC
olorDodge_Mode); } | |
| 80 static SkBenchmark* Fact19(void* p) { return new XfermodeBench(p, SkXfermode::kC
olorBurn_Mode); } | |
| 81 static SkBenchmark* Fact20(void* p) { return new XfermodeBench(p, SkXfermode::kH
ardLight_Mode); } | |
| 82 static SkBenchmark* Fact21(void* p) { return new XfermodeBench(p, SkXfermode::kS
oftLight_Mode); } | |
| 83 static SkBenchmark* Fact22(void* p) { return new XfermodeBench(p, SkXfermode::kD
ifference_Mode); } | |
| 84 static SkBenchmark* Fact23(void* p) { return new XfermodeBench(p, SkXfermode::kE
xclusion_Mode); } | |
| 85 static SkBenchmark* Fact24(void* p) { return new XfermodeBench(p, SkXfermode::kM
ultiply_Mode); } | |
| 86 static SkBenchmark* Fact25(void* p) { return new XfermodeBench(p, SkXfermode::kH
ue_Mode); } | |
| 87 static SkBenchmark* Fact26(void* p) { return new XfermodeBench(p, SkXfermode::kS
aturation_Mode); } | |
| 88 static SkBenchmark* Fact27(void* p) { return new XfermodeBench(p, SkXfermode::kC
olor_Mode); } | |
| 89 static SkBenchmark* Fact28(void* p) { return new XfermodeBench(p, SkXfermode::kL
uminosity_Mode); } | |
| 90 | 74 |
| 91 static BenchRegistry gReg00(Fact00); | 75 BENCH(SkXfermode::kClear_Mode) |
| 92 static BenchRegistry gReg01(Fact01); | 76 BENCH(SkXfermode::kSrc_Mode) |
| 93 static BenchRegistry gReg02(Fact02); | 77 BENCH(SkXfermode::kDst_Mode) |
| 94 static BenchRegistry gReg03(Fact03); | 78 BENCH(SkXfermode::kSrcOver_Mode) |
| 95 static BenchRegistry gReg04(Fact04); | 79 BENCH(SkXfermode::kDstOver_Mode) |
| 96 static BenchRegistry gReg05(Fact05); | 80 BENCH(SkXfermode::kSrcIn_Mode) |
| 97 static BenchRegistry gReg06(Fact06); | 81 BENCH(SkXfermode::kDstIn_Mode) |
| 98 static BenchRegistry gReg07(Fact07); | 82 BENCH(SkXfermode::kSrcOut_Mode) |
| 99 static BenchRegistry gReg08(Fact08); | 83 BENCH(SkXfermode::kDstOut_Mode) |
| 100 static BenchRegistry gReg09(Fact09); | 84 BENCH(SkXfermode::kSrcATop_Mode) |
| 101 static BenchRegistry gReg10(Fact10); | 85 BENCH(SkXfermode::kDstATop_Mode) |
| 102 static BenchRegistry gReg11(Fact11); | 86 BENCH(SkXfermode::kXor_Mode) |
| 103 static BenchRegistry gReg12(Fact12); | 87 |
| 104 static BenchRegistry gReg13(Fact13); | 88 BENCH(SkXfermode::kPlus_Mode) |
| 105 static BenchRegistry gReg14(Fact14); | 89 BENCH(SkXfermode::kModulate_Mode) |
| 106 static BenchRegistry gReg15(Fact15); | 90 BENCH(SkXfermode::kScreen_Mode) |
| 107 static BenchRegistry gReg16(Fact16); | 91 |
| 108 static BenchRegistry gReg17(Fact17); | 92 BENCH(SkXfermode::kOverlay_Mode) |
| 109 static BenchRegistry gReg18(Fact18); | 93 BENCH(SkXfermode::kDarken_Mode) |
| 110 static BenchRegistry gReg19(Fact19); | 94 BENCH(SkXfermode::kLighten_Mode) |
| 111 static BenchRegistry gReg20(Fact20); | 95 BENCH(SkXfermode::kColorDodge_Mode) |
| 112 static BenchRegistry gReg21(Fact21); | 96 BENCH(SkXfermode::kColorBurn_Mode) |
| 113 static BenchRegistry gReg22(Fact22); | 97 BENCH(SkXfermode::kHardLight_Mode) |
| 114 static BenchRegistry gReg23(Fact23); | 98 BENCH(SkXfermode::kSoftLight_Mode) |
| 115 static BenchRegistry gReg24(Fact24); | 99 BENCH(SkXfermode::kDifference_Mode) |
| 116 static BenchRegistry gReg25(Fact25); | 100 BENCH(SkXfermode::kExclusion_Mode) |
| 117 static BenchRegistry gReg26(Fact26); | 101 BENCH(SkXfermode::kMultiply_Mode) |
| 118 static BenchRegistry gReg27(Fact27); | 102 |
| 119 static BenchRegistry gReg28(Fact28); | 103 BENCH(SkXfermode::kHue_Mode) |
| 104 BENCH(SkXfermode::kSaturation_Mode) |
| 105 BENCH(SkXfermode::kColor_Mode) |
| 106 BENCH(SkXfermode::kLuminosity_Mode) |
| 107 |
| 108 BENCH(SkLumaMaskXfermode::Create(SkXfermode::kSrcIn_Mode), "SrcInLuma") |
| 109 BENCH(SkLumaMaskXfermode::Create(SkXfermode::kDstIn_Mode), "DstInLuma") |
| OLD | NEW |