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