Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(659)

Side by Side Diff: bench/XfermodeBench.cpp

Issue 22918012: Add luminance mask transfer modes. (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Dropped background texture handling, updated docs. Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | gm/lumamode.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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")
OLDNEW
« no previous file with comments | « no previous file | gm/lumamode.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698