RectBench.cpp revision 2ecead560421447acaf6ef6f1e8ba9da313b29d5
1bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com#include "SkBenchmark.h"
2bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com#include "SkCanvas.h"
3bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com#include "SkPaint.h"
4bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com#include "SkRandom.h"
5d2c37448011f184c38b4650a657904af0a928f7ereed@android.com#include "SkString.h"
6981d4798007b91e2e19c13b171583927a56df63breed@google.com#include "SkShader.h"
7bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com
8bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.comclass RectBench : public SkBenchmark {
9bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.compublic:
102ecead560421447acaf6ef6f1e8ba9da313b29d5mike@reedtribe.org    int fShift, fStroke;
11bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com    enum {
12bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com        W = 640,
13bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com        H = 480,
14d2c37448011f184c38b4650a657904af0a928f7ereed@android.com        N = 300
15bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com    };
16bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com    SkRect  fRects[N];
17bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com    SkColor fColors[N];
18bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com
192ecead560421447acaf6ef6f1e8ba9da313b29d5mike@reedtribe.org    RectBench(void* param, int shift, int stroke = 0) : INHERITED(param), fShift(shift), fStroke(stroke) {
20bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com        SkRandom rand;
212ecead560421447acaf6ef6f1e8ba9da313b29d5mike@reedtribe.org        const SkScalar offset = SK_Scalar1/3;
22bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com        for (int i = 0; i < N; i++) {
23bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com            int x = rand.nextU() % W;
24bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com            int y = rand.nextU() % H;
25bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com            int w = rand.nextU() % W;
26bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com            int h = rand.nextU() % H;
27d2c37448011f184c38b4650a657904af0a928f7ereed@android.com            w >>= shift;
28d2c37448011f184c38b4650a657904af0a928f7ereed@android.com            h >>= shift;
29bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com            x -= w/2;
30bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com            y -= h/2;
31bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com            fRects[i].set(SkIntToScalar(x), SkIntToScalar(y),
32bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com                          SkIntToScalar(x+w), SkIntToScalar(y+h));
332ecead560421447acaf6ef6f1e8ba9da313b29d5mike@reedtribe.org            fRects[i].offset(offset, offset);
34bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com            fColors[i] = rand.nextU() | 0xFF808080;
35bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com        }
36bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com    }
371fcd51e6b2a210a37b9b9c2cfb82e1be7196e42areed@google.com
38d2c37448011f184c38b4650a657904af0a928f7ereed@android.com    SkString fName;
39d2c37448011f184c38b4650a657904af0a928f7ereed@android.com    const char* computeName(const char root[]) {
402ecead560421447acaf6ef6f1e8ba9da313b29d5mike@reedtribe.org        fName.printf("%s_%d", root, fShift);
412ecead560421447acaf6ef6f1e8ba9da313b29d5mike@reedtribe.org        if (fStroke > 0) {
422ecead560421447acaf6ef6f1e8ba9da313b29d5mike@reedtribe.org            fName.appendf("_stroke_%d", fStroke);
432ecead560421447acaf6ef6f1e8ba9da313b29d5mike@reedtribe.org        }
44d2c37448011f184c38b4650a657904af0a928f7ereed@android.com        return fName.c_str();
45d2c37448011f184c38b4650a657904af0a928f7ereed@android.com    }
461fcd51e6b2a210a37b9b9c2cfb82e1be7196e42areed@google.com
47bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.comprotected:
48bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com    virtual void drawThisRect(SkCanvas* c, const SkRect& r, const SkPaint& p) {
49bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com        c->drawRect(r, p);
50bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com    }
51bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com
524bc1983e01d756ae9c91fd380758457f579d26eareed@android.com    virtual const char* onGetName() { return computeName("rects"); }
53bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com    virtual void onDraw(SkCanvas* canvas) {
54bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com        SkPaint paint;
552ecead560421447acaf6ef6f1e8ba9da313b29d5mike@reedtribe.org        if (fStroke > 0) {
562ecead560421447acaf6ef6f1e8ba9da313b29d5mike@reedtribe.org            paint.setStyle(SkPaint::kStroke_Style);
572ecead560421447acaf6ef6f1e8ba9da313b29d5mike@reedtribe.org            paint.setStrokeWidth(SkIntToScalar(fStroke));
582ecead560421447acaf6ef6f1e8ba9da313b29d5mike@reedtribe.org        }
59bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com        for (int i = 0; i < N; i++) {
60bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com            paint.setColor(fColors[i]);
614bc1983e01d756ae9c91fd380758457f579d26eareed@android.com            this->setupPaint(&paint);
62bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com            this->drawThisRect(canvas, fRects[i], paint);
63bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com        }
64bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com    }
65e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.comprivate:
66e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.com    typedef SkBenchmark INHERITED;
67bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com};
68bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com
69bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.comclass OvalBench : public RectBench {
70d2c37448011f184c38b4650a657904af0a928f7ereed@android.compublic:
71e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.com    OvalBench(void* param, int shift) : RectBench(param, shift) {}
72bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.comprotected:
73bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com    virtual void drawThisRect(SkCanvas* c, const SkRect& r, const SkPaint& p) {
74bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com        c->drawOval(r, p);
75bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com    }
76d2c37448011f184c38b4650a657904af0a928f7ereed@android.com    virtual const char* onGetName() { return computeName("ovals"); }
77bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com};
78bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com
79bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.comclass RRectBench : public RectBench {
80d2c37448011f184c38b4650a657904af0a928f7ereed@android.compublic:
81e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.com    RRectBench(void* param, int shift) : RectBench(param, shift) {}
82bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.comprotected:
83bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com    virtual void drawThisRect(SkCanvas* c, const SkRect& r, const SkPaint& p) {
84bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com        c->drawRoundRect(r, r.width() / 4, r.height() / 4, p);
85bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com    }
864bc1983e01d756ae9c91fd380758457f579d26eareed@android.com    virtual const char* onGetName() { return computeName("rrects"); }
87bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com};
88bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com
89bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.comclass PointsBench : public RectBench {
90bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.compublic:
91bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com    SkCanvas::PointMode fMode;
92bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com    const char* fName;
93bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com
941fcd51e6b2a210a37b9b9c2cfb82e1be7196e42areed@google.com    PointsBench(void* param, SkCanvas::PointMode mode, const char* name) :
95e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.com        RectBench(param, 2), fMode(mode) {
96bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com        fName = name;
97bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com    }
98bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com
99bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.comprotected:
100bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com    virtual void onDraw(SkCanvas* canvas) {
101652807bbc8c57e5fa9622126b51fd369f5c67935agl@chromium.org        SkScalar gSizes[] = {
102bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com            SkIntToScalar(7), 0
103bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com        };
104652807bbc8c57e5fa9622126b51fd369f5c67935agl@chromium.org        size_t sizes = SK_ARRAY_COUNT(gSizes);
105652807bbc8c57e5fa9622126b51fd369f5c67935agl@chromium.org
106652807bbc8c57e5fa9622126b51fd369f5c67935agl@chromium.org        if (this->hasStrokeWidth()) {
107652807bbc8c57e5fa9622126b51fd369f5c67935agl@chromium.org            gSizes[0] = this->getStrokeWidth();
108652807bbc8c57e5fa9622126b51fd369f5c67935agl@chromium.org            sizes = 1;
109652807bbc8c57e5fa9622126b51fd369f5c67935agl@chromium.org        }
110bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com
111bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com        SkPaint paint;
112bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com        paint.setStrokeCap(SkPaint::kRound_Cap);
113652807bbc8c57e5fa9622126b51fd369f5c67935agl@chromium.org
114652807bbc8c57e5fa9622126b51fd369f5c67935agl@chromium.org        for (size_t i = 0; i < sizes; i++) {
115bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com            paint.setStrokeWidth(gSizes[i]);
1164bc1983e01d756ae9c91fd380758457f579d26eareed@android.com            this->setupPaint(&paint);
1171fcd51e6b2a210a37b9b9c2cfb82e1be7196e42areed@google.com            canvas->drawPoints(fMode, N * 2, SkTCast<SkPoint*>(fRects), paint);
118bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com            paint.setColor(fColors[i]);
119bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com        }
120bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com    }
121bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com    virtual const char* onGetName() { return fName; }
122bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com};
123bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com
124981d4798007b91e2e19c13b171583927a56df63breed@google.com/*******************************************************************************
125981d4798007b91e2e19c13b171583927a56df63breed@google.com * to bench BlitMask [Opaque, Black, color, shader]
126981d4798007b91e2e19c13b171583927a56df63breed@google.com *******************************************************************************/
127981d4798007b91e2e19c13b171583927a56df63breed@google.com
128981d4798007b91e2e19c13b171583927a56df63breed@google.comclass BlitMaskBench : public RectBench {
129981d4798007b91e2e19c13b171583927a56df63breed@google.compublic:
130981d4798007b91e2e19c13b171583927a56df63breed@google.com    enum kMaskType {
131981d4798007b91e2e19c13b171583927a56df63breed@google.com        kMaskOpaque = 0,
132981d4798007b91e2e19c13b171583927a56df63breed@google.com        kMaskBlack,
133981d4798007b91e2e19c13b171583927a56df63breed@google.com        kMaskColor,
134981d4798007b91e2e19c13b171583927a56df63breed@google.com        KMaskShader
135981d4798007b91e2e19c13b171583927a56df63breed@google.com    };
136981d4798007b91e2e19c13b171583927a56df63breed@google.com    SkCanvas::PointMode fMode;
137981d4798007b91e2e19c13b171583927a56df63breed@google.com    const char* fName;
138981d4798007b91e2e19c13b171583927a56df63breed@google.com
139981d4798007b91e2e19c13b171583927a56df63breed@google.com    BlitMaskBench(void* param, SkCanvas::PointMode mode,
140981d4798007b91e2e19c13b171583927a56df63breed@google.com                  BlitMaskBench::kMaskType type, const char* name) :
141981d4798007b91e2e19c13b171583927a56df63breed@google.com                  RectBench(param, 2), fMode(mode), _type(type) {
142981d4798007b91e2e19c13b171583927a56df63breed@google.com        fName = name;
143981d4798007b91e2e19c13b171583927a56df63breed@google.com    }
144981d4798007b91e2e19c13b171583927a56df63breed@google.com
145981d4798007b91e2e19c13b171583927a56df63breed@google.comprotected:
146981d4798007b91e2e19c13b171583927a56df63breed@google.com    virtual void onDraw(SkCanvas* canvas) {
147981d4798007b91e2e19c13b171583927a56df63breed@google.com        SkScalar gSizes[] = {
148981d4798007b91e2e19c13b171583927a56df63breed@google.com            SkIntToScalar(13), SkIntToScalar(24)
149981d4798007b91e2e19c13b171583927a56df63breed@google.com        };
150981d4798007b91e2e19c13b171583927a56df63breed@google.com        size_t sizes = SK_ARRAY_COUNT(gSizes);
151981d4798007b91e2e19c13b171583927a56df63breed@google.com
152981d4798007b91e2e19c13b171583927a56df63breed@google.com        if (this->hasStrokeWidth()) {
153981d4798007b91e2e19c13b171583927a56df63breed@google.com            gSizes[0] = this->getStrokeWidth();
154981d4798007b91e2e19c13b171583927a56df63breed@google.com            sizes = 1;
155981d4798007b91e2e19c13b171583927a56df63breed@google.com        }
156981d4798007b91e2e19c13b171583927a56df63breed@google.com        SkRandom rand;
157981d4798007b91e2e19c13b171583927a56df63breed@google.com        SkColor color = 0xFF000000;
158981d4798007b91e2e19c13b171583927a56df63breed@google.com        U8CPU alpha = 0xFF;
159981d4798007b91e2e19c13b171583927a56df63breed@google.com        SkPaint paint;
160981d4798007b91e2e19c13b171583927a56df63breed@google.com        paint.setStrokeCap(SkPaint::kRound_Cap);
161981d4798007b91e2e19c13b171583927a56df63breed@google.com        if (_type == KMaskShader) {
162981d4798007b91e2e19c13b171583927a56df63breed@google.com            SkBitmap srcBM;
163981d4798007b91e2e19c13b171583927a56df63breed@google.com            srcBM.setConfig(SkBitmap::kARGB_8888_Config, 10, 1);
164981d4798007b91e2e19c13b171583927a56df63breed@google.com            srcBM.allocPixels();
165981d4798007b91e2e19c13b171583927a56df63breed@google.com            srcBM.eraseColor(0xFF00FF00);
166981d4798007b91e2e19c13b171583927a56df63breed@google.com
167981d4798007b91e2e19c13b171583927a56df63breed@google.com            SkShader* s;
168981d4798007b91e2e19c13b171583927a56df63breed@google.com            s  = SkShader::CreateBitmapShader(srcBM, SkShader::kClamp_TileMode,
169981d4798007b91e2e19c13b171583927a56df63breed@google.com                                              SkShader::kClamp_TileMode);
170981d4798007b91e2e19c13b171583927a56df63breed@google.com            paint.setShader(s)->unref();
171981d4798007b91e2e19c13b171583927a56df63breed@google.com        }
172981d4798007b91e2e19c13b171583927a56df63breed@google.com        for (size_t i = 0; i < sizes; i++) {
173981d4798007b91e2e19c13b171583927a56df63breed@google.com            switch (_type) {
174981d4798007b91e2e19c13b171583927a56df63breed@google.com                case kMaskOpaque:
175981d4798007b91e2e19c13b171583927a56df63breed@google.com                    color = fColors[i];
176981d4798007b91e2e19c13b171583927a56df63breed@google.com                    alpha = 0xFF;
177981d4798007b91e2e19c13b171583927a56df63breed@google.com                    break;
178981d4798007b91e2e19c13b171583927a56df63breed@google.com                case kMaskBlack:
179981d4798007b91e2e19c13b171583927a56df63breed@google.com                    alpha = 0xFF;
180981d4798007b91e2e19c13b171583927a56df63breed@google.com                    color = 0xFF000000;
181981d4798007b91e2e19c13b171583927a56df63breed@google.com                    break;
182981d4798007b91e2e19c13b171583927a56df63breed@google.com                case kMaskColor:
183981d4798007b91e2e19c13b171583927a56df63breed@google.com                    color = fColors[i];
184981d4798007b91e2e19c13b171583927a56df63breed@google.com                    alpha = rand.nextU() & 255;
185981d4798007b91e2e19c13b171583927a56df63breed@google.com                    break;
186981d4798007b91e2e19c13b171583927a56df63breed@google.com                case KMaskShader:
187981d4798007b91e2e19c13b171583927a56df63breed@google.com                    break;
188981d4798007b91e2e19c13b171583927a56df63breed@google.com            }
189981d4798007b91e2e19c13b171583927a56df63breed@google.com            paint.setStrokeWidth(gSizes[i]);
190981d4798007b91e2e19c13b171583927a56df63breed@google.com            this->setupPaint(&paint);
191981d4798007b91e2e19c13b171583927a56df63breed@google.com            paint.setColor(color);
192981d4798007b91e2e19c13b171583927a56df63breed@google.com            paint.setAlpha(alpha);
193981d4798007b91e2e19c13b171583927a56df63breed@google.com            canvas->drawPoints(fMode, N * 2, SkTCast<SkPoint*>(fRects), paint);
194981d4798007b91e2e19c13b171583927a56df63breed@google.com       }
195981d4798007b91e2e19c13b171583927a56df63breed@google.com    }
196981d4798007b91e2e19c13b171583927a56df63breed@google.com    virtual const char* onGetName() { return fName; }
197981d4798007b91e2e19c13b171583927a56df63breed@google.comprivate:
198981d4798007b91e2e19c13b171583927a56df63breed@google.com	typedef RectBench INHERITED;
199981d4798007b91e2e19c13b171583927a56df63breed@google.com	kMaskType _type;
200981d4798007b91e2e19c13b171583927a56df63breed@google.com};
201981d4798007b91e2e19c13b171583927a56df63breed@google.com
202981d4798007b91e2e19c13b171583927a56df63breed@google.com
2032ecead560421447acaf6ef6f1e8ba9da313b29d5mike@reedtribe.orgstatic SkBenchmark* RectFactory1F(void* p) { return SkNEW_ARGS(RectBench, (p, 1)); }
2042ecead560421447acaf6ef6f1e8ba9da313b29d5mike@reedtribe.orgstatic SkBenchmark* RectFactory1S(void* p) { return SkNEW_ARGS(RectBench, (p, 1, 4)); }
2052ecead560421447acaf6ef6f1e8ba9da313b29d5mike@reedtribe.orgstatic SkBenchmark* RectFactory2F(void* p) { return SkNEW_ARGS(RectBench, (p, 3)); }
2062ecead560421447acaf6ef6f1e8ba9da313b29d5mike@reedtribe.orgstatic SkBenchmark* RectFactory2S(void* p) { return SkNEW_ARGS(RectBench, (p, 3, 4)); }
207e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.comstatic SkBenchmark* OvalFactory1(void* p) { return SkNEW_ARGS(OvalBench, (p, 1)); }
208e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.comstatic SkBenchmark* OvalFactory2(void* p) { return SkNEW_ARGS(OvalBench, (p, 3)); }
209e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.comstatic SkBenchmark* RRectFactory1(void* p) { return SkNEW_ARGS(RRectBench, (p, 1)); }
210e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.comstatic SkBenchmark* RRectFactory2(void* p) { return SkNEW_ARGS(RRectBench, (p, 3)); }
211e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.comstatic SkBenchmark* PointsFactory(void* p) {
212e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.com    return SkNEW_ARGS(PointsBench, (p, SkCanvas::kPoints_PointMode, "points"));
213bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com}
214e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.comstatic SkBenchmark* LinesFactory(void* p) {
215e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.com    return SkNEW_ARGS(PointsBench, (p, SkCanvas::kLines_PointMode, "lines"));
216bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com}
217e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.comstatic SkBenchmark* PolygonFactory(void* p) {
218e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.com    return SkNEW_ARGS(PointsBench, (p, SkCanvas::kPolygon_PointMode, "polygon"));
219bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com}
220bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com
221981d4798007b91e2e19c13b171583927a56df63breed@google.com/* init the blitmask bench
222981d4798007b91e2e19c13b171583927a56df63breed@google.com */
223981d4798007b91e2e19c13b171583927a56df63breed@google.comstatic SkBenchmark* BlitMaskOpaqueFactory(void* p) {
224981d4798007b91e2e19c13b171583927a56df63breed@google.com    return SkNEW_ARGS(BlitMaskBench,
225981d4798007b91e2e19c13b171583927a56df63breed@google.com                      (p, SkCanvas::kPoints_PointMode,
226981d4798007b91e2e19c13b171583927a56df63breed@google.com                      BlitMaskBench::kMaskOpaque, "maskopaque")
227981d4798007b91e2e19c13b171583927a56df63breed@google.com                      );
228981d4798007b91e2e19c13b171583927a56df63breed@google.com}
229981d4798007b91e2e19c13b171583927a56df63breed@google.comstatic SkBenchmark* BlitMaskBlackFactory(void* p) {
230981d4798007b91e2e19c13b171583927a56df63breed@google.com    return SkNEW_ARGS(BlitMaskBench,
231981d4798007b91e2e19c13b171583927a56df63breed@google.com                      (p, SkCanvas::kPoints_PointMode,
232981d4798007b91e2e19c13b171583927a56df63breed@google.com                      BlitMaskBench::kMaskBlack, "maskblack")
233981d4798007b91e2e19c13b171583927a56df63breed@google.com                      );
234981d4798007b91e2e19c13b171583927a56df63breed@google.com}
235981d4798007b91e2e19c13b171583927a56df63breed@google.comstatic SkBenchmark* BlitMaskColorFactory(void* p) {
236981d4798007b91e2e19c13b171583927a56df63breed@google.com    return SkNEW_ARGS(BlitMaskBench,
237981d4798007b91e2e19c13b171583927a56df63breed@google.com                      (p, SkCanvas::kPoints_PointMode,
238981d4798007b91e2e19c13b171583927a56df63breed@google.com                      BlitMaskBench::kMaskColor, "maskcolor")
239981d4798007b91e2e19c13b171583927a56df63breed@google.com                      );
240981d4798007b91e2e19c13b171583927a56df63breed@google.com}
241981d4798007b91e2e19c13b171583927a56df63breed@google.comstatic SkBenchmark* BlitMaskShaderFactory(void* p) {
242981d4798007b91e2e19c13b171583927a56df63breed@google.com    return SkNEW_ARGS(BlitMaskBench,
243981d4798007b91e2e19c13b171583927a56df63breed@google.com                     (p, SkCanvas::kPoints_PointMode,
244981d4798007b91e2e19c13b171583927a56df63breed@google.com                     BlitMaskBench::KMaskShader, "maskshader")
245981d4798007b91e2e19c13b171583927a56df63breed@google.com                     );
246981d4798007b91e2e19c13b171583927a56df63breed@google.com}
2472ecead560421447acaf6ef6f1e8ba9da313b29d5mike@reedtribe.org
2482ecead560421447acaf6ef6f1e8ba9da313b29d5mike@reedtribe.orgstatic BenchRegistry gRectReg1F(RectFactory1F);
2492ecead560421447acaf6ef6f1e8ba9da313b29d5mike@reedtribe.orgstatic BenchRegistry gRectReg1S(RectFactory1S);
2502ecead560421447acaf6ef6f1e8ba9da313b29d5mike@reedtribe.orgstatic BenchRegistry gRectReg2F(RectFactory2F);
2512ecead560421447acaf6ef6f1e8ba9da313b29d5mike@reedtribe.orgstatic BenchRegistry gRectReg2S(RectFactory2S);
252f523e25da069e3e1af2cb73d37073a34f3bb9ea2reed@android.comstatic BenchRegistry gOvalReg1(OvalFactory1);
253f523e25da069e3e1af2cb73d37073a34f3bb9ea2reed@android.comstatic BenchRegistry gOvalReg2(OvalFactory2);
254f523e25da069e3e1af2cb73d37073a34f3bb9ea2reed@android.comstatic BenchRegistry gRRectReg1(RRectFactory1);
255f523e25da069e3e1af2cb73d37073a34f3bb9ea2reed@android.comstatic BenchRegistry gRRectReg2(RRectFactory2);
256f523e25da069e3e1af2cb73d37073a34f3bb9ea2reed@android.comstatic BenchRegistry gPointsReg(PointsFactory);
257f523e25da069e3e1af2cb73d37073a34f3bb9ea2reed@android.comstatic BenchRegistry gLinesReg(LinesFactory);
258f523e25da069e3e1af2cb73d37073a34f3bb9ea2reed@android.comstatic BenchRegistry gPolygonReg(PolygonFactory);
259981d4798007b91e2e19c13b171583927a56df63breed@google.comstatic BenchRegistry gRectRegOpaque(BlitMaskOpaqueFactory);
260981d4798007b91e2e19c13b171583927a56df63breed@google.comstatic BenchRegistry gRectRegBlack(BlitMaskBlackFactory);
261981d4798007b91e2e19c13b171583927a56df63breed@google.comstatic BenchRegistry gRectRegColor(BlitMaskColorFactory);
262981d4798007b91e2e19c13b171583927a56df63breed@google.comstatic BenchRegistry gRectRegShader(BlitMaskShaderFactory);
263