1b3c9d1c33caf325aada244204215eb790c228c12dandov/* 2b3c9d1c33caf325aada244204215eb790c228c12dandov * Copyright 2014 Google Inc. 3b3c9d1c33caf325aada244204215eb790c228c12dandov * 4b3c9d1c33caf325aada244204215eb790c228c12dandov * Use of this source code is governed by a BSD-style license that can be 5b3c9d1c33caf325aada244204215eb790c228c12dandov * found in the LICENSE file. 6b3c9d1c33caf325aada244204215eb790c228c12dandov */ 7b3c9d1c33caf325aada244204215eb790c228c12dandov#include "Benchmark.h" 8b3c9d1c33caf325aada244204215eb790c228c12dandov#include "SkCanvas.h" 9b3c9d1c33caf325aada244204215eb790c228c12dandov#include "SkGradientShader.h" 10b3c9d1c33caf325aada244204215eb790c228c12dandov#include "SkPaint.h" 11b3c9d1c33caf325aada244204215eb790c228c12dandov#include "SkPatchUtils.h" 12b3c9d1c33caf325aada244204215eb790c228c12dandov#include "SkString.h" 137e5598a004d0aceb630707053566bee523feea66dandov 147e5598a004d0aceb630707053566bee523feea66dandov/** 157e5598a004d0aceb630707053566bee523feea66dandov * This bench measures the rendering time of the call SkCanvas::drawPatch with different types of 167e5598a004d0aceb630707053566bee523feea66dandov * input patches (regular case, with loops, a square, with a big difference between "parallel" 177e5598a004d0aceb630707053566bee523feea66dandov * sides). This bench also tests the different combination of optional parameters for the function 187e5598a004d0aceb630707053566bee523feea66dandov * (passing texture coordinates and colors, only textures coordinates, only colors or none). 197e5598a004d0aceb630707053566bee523feea66dandov * Finally, it applies a scale to test if the size affects the rendering time. 207e5598a004d0aceb630707053566bee523feea66dandov */ 21b3c9d1c33caf325aada244204215eb790c228c12dandov 22b3c9d1c33caf325aada244204215eb790c228c12dandovclass PatchBench : public Benchmark { 23e556be7084e43c64ca9d0df1b9c8ce16a988006fmtklein 24b3c9d1c33caf325aada244204215eb790c228c12dandovpublic: 25e556be7084e43c64ca9d0df1b9c8ce16a988006fmtklein 26b3c9d1c33caf325aada244204215eb790c228c12dandov enum VertexMode { 27b3c9d1c33caf325aada244204215eb790c228c12dandov kNone_VertexMode, 28b3c9d1c33caf325aada244204215eb790c228c12dandov kColors_VertexMode, 29b3c9d1c33caf325aada244204215eb790c228c12dandov kTexCoords_VertexMode, 30b3c9d1c33caf325aada244204215eb790c228c12dandov kBoth_VertexMode 31b3c9d1c33caf325aada244204215eb790c228c12dandov }; 32e556be7084e43c64ca9d0df1b9c8ce16a988006fmtklein 33b3c9d1c33caf325aada244204215eb790c228c12dandov PatchBench(SkPoint scale, VertexMode vertexMode) 34b3c9d1c33caf325aada244204215eb790c228c12dandov : fScale(scale) 35b3c9d1c33caf325aada244204215eb790c228c12dandov , fVertexMode(vertexMode) { } 36b3c9d1c33caf325aada244204215eb790c228c12dandov 37b3c9d1c33caf325aada244204215eb790c228c12dandov // to add name of specific class override this method 38b3c9d1c33caf325aada244204215eb790c228c12dandov virtual void appendName(SkString* name) { 39b3c9d1c33caf325aada244204215eb790c228c12dandov name->append("normal"); 40b3c9d1c33caf325aada244204215eb790c228c12dandov } 41e556be7084e43c64ca9d0df1b9c8ce16a988006fmtklein 42b3c9d1c33caf325aada244204215eb790c228c12dandov // to make other type of patches override this method 43b3c9d1c33caf325aada244204215eb790c228c12dandov virtual void setCubics() { 44b3c9d1c33caf325aada244204215eb790c228c12dandov const SkPoint points[SkPatchUtils::kNumCtrlPts] = { 45b3c9d1c33caf325aada244204215eb790c228c12dandov //top points 46b3c9d1c33caf325aada244204215eb790c228c12dandov {100,100},{150,50},{250,150}, {300,100}, 47b3c9d1c33caf325aada244204215eb790c228c12dandov //right points 48b3c9d1c33caf325aada244204215eb790c228c12dandov {350, 150},{250,200}, 49b3c9d1c33caf325aada244204215eb790c228c12dandov //bottom points 50b3c9d1c33caf325aada244204215eb790c228c12dandov {300,300},{250,250},{150,350},{100,300}, 51b3c9d1c33caf325aada244204215eb790c228c12dandov //left points 52b3c9d1c33caf325aada244204215eb790c228c12dandov {50,250},{150,50} 53b3c9d1c33caf325aada244204215eb790c228c12dandov }; 54b3c9d1c33caf325aada244204215eb790c228c12dandov memcpy(fCubics, points, SkPatchUtils::kNumCtrlPts * sizeof(SkPoint)); 55b3c9d1c33caf325aada244204215eb790c228c12dandov } 56e556be7084e43c64ca9d0df1b9c8ce16a988006fmtklein 57b3c9d1c33caf325aada244204215eb790c228c12dandov virtual void setColors() { 58b3c9d1c33caf325aada244204215eb790c228c12dandov const SkColor colors[SkPatchUtils::kNumCorners] = { 59b3c9d1c33caf325aada244204215eb790c228c12dandov SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE, SK_ColorCYAN 60b3c9d1c33caf325aada244204215eb790c228c12dandov }; 61b3c9d1c33caf325aada244204215eb790c228c12dandov memcpy(fColors, colors, SkPatchUtils::kNumCorners * sizeof(SkColor)); 62b3c9d1c33caf325aada244204215eb790c228c12dandov } 63e556be7084e43c64ca9d0df1b9c8ce16a988006fmtklein 64b3c9d1c33caf325aada244204215eb790c228c12dandov virtual void setTexCoords() { 65b3c9d1c33caf325aada244204215eb790c228c12dandov const SkPoint texCoords[SkPatchUtils::kNumCorners] = { 66b3c9d1c33caf325aada244204215eb790c228c12dandov {0.0f, 0.0f}, {1.0f, 0.0f}, {1.0f,1.0f}, {0.0f, 1.0f} 67b3c9d1c33caf325aada244204215eb790c228c12dandov }; 68b3c9d1c33caf325aada244204215eb790c228c12dandov memcpy(fTexCoords, texCoords, SkPatchUtils::kNumCorners * sizeof(SkPoint)); 69b3c9d1c33caf325aada244204215eb790c228c12dandov } 70e556be7084e43c64ca9d0df1b9c8ce16a988006fmtklein 71b3c9d1c33caf325aada244204215eb790c228c12dandov // override this method to change the shader 72e556be7084e43c64ca9d0df1b9c8ce16a988006fmtklein virtual SkShader* createShader() { 73b3c9d1c33caf325aada244204215eb790c228c12dandov const SkColor colors[] = { 74b3c9d1c33caf325aada244204215eb790c228c12dandov SK_ColorRED, SK_ColorCYAN, SK_ColorGREEN, SK_ColorWHITE, 75b3c9d1c33caf325aada244204215eb790c228c12dandov SK_ColorMAGENTA, SK_ColorBLUE, SK_ColorYELLOW, 76b3c9d1c33caf325aada244204215eb790c228c12dandov }; 77b3c9d1c33caf325aada244204215eb790c228c12dandov const SkPoint pts[] = { { 200.f / 4.f, 0.f }, { 3.f * 200.f / 4, 200.f } }; 78e556be7084e43c64ca9d0df1b9c8ce16a988006fmtklein 79b3c9d1c33caf325aada244204215eb790c228c12dandov return SkGradientShader::CreateLinear(pts, colors, NULL, 80b3c9d1c33caf325aada244204215eb790c228c12dandov SK_ARRAY_COUNT(colors), 81b3c9d1c33caf325aada244204215eb790c228c12dandov SkShader::kMirror_TileMode); 82b3c9d1c33caf325aada244204215eb790c228c12dandov } 83b3c9d1c33caf325aada244204215eb790c228c12dandov 84b3c9d1c33caf325aada244204215eb790c228c12dandovprotected: 85b3c9d1c33caf325aada244204215eb790c228c12dandov virtual const char* onGetName() SK_OVERRIDE { 86b3c9d1c33caf325aada244204215eb790c228c12dandov SkString vertexMode; 87b3c9d1c33caf325aada244204215eb790c228c12dandov switch (fVertexMode) { 88b3c9d1c33caf325aada244204215eb790c228c12dandov case kNone_VertexMode: 89b3c9d1c33caf325aada244204215eb790c228c12dandov vertexMode.set("meshlines"); 90b3c9d1c33caf325aada244204215eb790c228c12dandov break; 91b3c9d1c33caf325aada244204215eb790c228c12dandov case kColors_VertexMode: 92b3c9d1c33caf325aada244204215eb790c228c12dandov vertexMode.set("colors"); 93b3c9d1c33caf325aada244204215eb790c228c12dandov break; 94b3c9d1c33caf325aada244204215eb790c228c12dandov case kTexCoords_VertexMode: 95b3c9d1c33caf325aada244204215eb790c228c12dandov vertexMode.set("texs"); 96b3c9d1c33caf325aada244204215eb790c228c12dandov break; 97b3c9d1c33caf325aada244204215eb790c228c12dandov case kBoth_VertexMode: 987e5598a004d0aceb630707053566bee523feea66dandov vertexMode.set("colors_texs"); 99b3c9d1c33caf325aada244204215eb790c228c12dandov break; 100b3c9d1c33caf325aada244204215eb790c228c12dandov default: 101b3c9d1c33caf325aada244204215eb790c228c12dandov break; 102b3c9d1c33caf325aada244204215eb790c228c12dandov } 103b3c9d1c33caf325aada244204215eb790c228c12dandov SkString type; 104b3c9d1c33caf325aada244204215eb790c228c12dandov this->appendName(&type); 105b3c9d1c33caf325aada244204215eb790c228c12dandov fName.printf("patch_%s_%s_[%f,%f]", type.c_str(), vertexMode.c_str(), 106b3c9d1c33caf325aada244204215eb790c228c12dandov fScale.x(), fScale.y()); 107b3c9d1c33caf325aada244204215eb790c228c12dandov return fName.c_str(); 108b3c9d1c33caf325aada244204215eb790c228c12dandov } 109e556be7084e43c64ca9d0df1b9c8ce16a988006fmtklein 1107e5598a004d0aceb630707053566bee523feea66dandov virtual void onPreDraw() SK_OVERRIDE { 111b3c9d1c33caf325aada244204215eb790c228c12dandov this->setCubics(); 112b3c9d1c33caf325aada244204215eb790c228c12dandov this->setColors(); 113b3c9d1c33caf325aada244204215eb790c228c12dandov this->setTexCoords(); 114b3c9d1c33caf325aada244204215eb790c228c12dandov this->setupPaint(&fPaint); 115b3c9d1c33caf325aada244204215eb790c228c12dandov switch (fVertexMode) { 116b3c9d1c33caf325aada244204215eb790c228c12dandov case kTexCoords_VertexMode: 117b3c9d1c33caf325aada244204215eb790c228c12dandov case kBoth_VertexMode: 118e556be7084e43c64ca9d0df1b9c8ce16a988006fmtklein fPaint.setShader(this->createShader())->unref(); 119b3c9d1c33caf325aada244204215eb790c228c12dandov break; 120b3c9d1c33caf325aada244204215eb790c228c12dandov default: 121b3c9d1c33caf325aada244204215eb790c228c12dandov fPaint.setShader(NULL); 122b3c9d1c33caf325aada244204215eb790c228c12dandov break; 123b3c9d1c33caf325aada244204215eb790c228c12dandov } 1247e5598a004d0aceb630707053566bee523feea66dandov } 125e556be7084e43c64ca9d0df1b9c8ce16a988006fmtklein 1267e5598a004d0aceb630707053566bee523feea66dandov virtual void onDraw(const int loops, SkCanvas* canvas) SK_OVERRIDE { 127b3c9d1c33caf325aada244204215eb790c228c12dandov canvas->scale(fScale.x(), fScale.y()); 128b3c9d1c33caf325aada244204215eb790c228c12dandov for (int i = 0; i < loops; i++) { 129b3c9d1c33caf325aada244204215eb790c228c12dandov switch (fVertexMode) { 130b3c9d1c33caf325aada244204215eb790c228c12dandov case kNone_VertexMode: 131b3c9d1c33caf325aada244204215eb790c228c12dandov canvas->drawPatch(fCubics, NULL, NULL, NULL, fPaint); 132b3c9d1c33caf325aada244204215eb790c228c12dandov break; 133b3c9d1c33caf325aada244204215eb790c228c12dandov case kColors_VertexMode: 134b3c9d1c33caf325aada244204215eb790c228c12dandov canvas->drawPatch(fCubics, fColors, NULL, NULL, fPaint); 135b3c9d1c33caf325aada244204215eb790c228c12dandov break; 136b3c9d1c33caf325aada244204215eb790c228c12dandov case kTexCoords_VertexMode: 137b3c9d1c33caf325aada244204215eb790c228c12dandov canvas->drawPatch(fCubics, NULL, fTexCoords, NULL, fPaint); 138b3c9d1c33caf325aada244204215eb790c228c12dandov break; 139b3c9d1c33caf325aada244204215eb790c228c12dandov case kBoth_VertexMode: 140b3c9d1c33caf325aada244204215eb790c228c12dandov canvas->drawPatch(fCubics, fColors, fTexCoords, NULL, fPaint); 141b3c9d1c33caf325aada244204215eb790c228c12dandov break; 142b3c9d1c33caf325aada244204215eb790c228c12dandov default: 143b3c9d1c33caf325aada244204215eb790c228c12dandov break; 144b3c9d1c33caf325aada244204215eb790c228c12dandov } 145b3c9d1c33caf325aada244204215eb790c228c12dandov } 146b3c9d1c33caf325aada244204215eb790c228c12dandov } 147b3c9d1c33caf325aada244204215eb790c228c12dandov 148b3c9d1c33caf325aada244204215eb790c228c12dandov SkPaint fPaint; 149b3c9d1c33caf325aada244204215eb790c228c12dandov SkString fName; 150b3c9d1c33caf325aada244204215eb790c228c12dandov SkVector fScale; 151b3c9d1c33caf325aada244204215eb790c228c12dandov SkPoint fCubics[12]; 152b3c9d1c33caf325aada244204215eb790c228c12dandov SkPoint fTexCoords[4]; 153b3c9d1c33caf325aada244204215eb790c228c12dandov SkColor fColors[4]; 154b3c9d1c33caf325aada244204215eb790c228c12dandov VertexMode fVertexMode; 155e556be7084e43c64ca9d0df1b9c8ce16a988006fmtklein 156b3c9d1c33caf325aada244204215eb790c228c12dandov typedef Benchmark INHERITED; 157b3c9d1c33caf325aada244204215eb790c228c12dandov}; 158b3c9d1c33caf325aada244204215eb790c228c12dandov 159b3c9d1c33caf325aada244204215eb790c228c12dandovclass SquarePatchBench : public PatchBench { 160b3c9d1c33caf325aada244204215eb790c228c12dandovpublic: 161b3c9d1c33caf325aada244204215eb790c228c12dandov SquarePatchBench(SkPoint scale, VertexMode vertexMode) 162b3c9d1c33caf325aada244204215eb790c228c12dandov : INHERITED(scale, vertexMode) { } 163b3c9d1c33caf325aada244204215eb790c228c12dandov 164b3c9d1c33caf325aada244204215eb790c228c12dandov virtual void appendName(SkString* name) SK_OVERRIDE { 165b3c9d1c33caf325aada244204215eb790c228c12dandov name->append("square"); 166b3c9d1c33caf325aada244204215eb790c228c12dandov } 167e556be7084e43c64ca9d0df1b9c8ce16a988006fmtklein 1687e5598a004d0aceb630707053566bee523feea66dandov virtual void setCubics() SK_OVERRIDE { 169b3c9d1c33caf325aada244204215eb790c228c12dandov const SkPoint points[SkPatchUtils::kNumCtrlPts] = { 170b3c9d1c33caf325aada244204215eb790c228c12dandov //top points 171b3c9d1c33caf325aada244204215eb790c228c12dandov {100,100},{150,100},{250,100}, {300,100}, 172b3c9d1c33caf325aada244204215eb790c228c12dandov //right points 173b3c9d1c33caf325aada244204215eb790c228c12dandov {300, 150},{300,250}, 174b3c9d1c33caf325aada244204215eb790c228c12dandov //bottom points 175b3c9d1c33caf325aada244204215eb790c228c12dandov {300,300},{250,300},{150,300},{100,300}, 176b3c9d1c33caf325aada244204215eb790c228c12dandov //left points 177b3c9d1c33caf325aada244204215eb790c228c12dandov {100,250},{100,150} 178b3c9d1c33caf325aada244204215eb790c228c12dandov }; 179b3c9d1c33caf325aada244204215eb790c228c12dandov memcpy(fCubics, points, SkPatchUtils::kNumCtrlPts * sizeof(SkPoint)); 180b3c9d1c33caf325aada244204215eb790c228c12dandov } 181b3c9d1c33caf325aada244204215eb790c228c12dandovprivate: 182b3c9d1c33caf325aada244204215eb790c228c12dandov typedef PatchBench INHERITED; 183b3c9d1c33caf325aada244204215eb790c228c12dandov}; 184b3c9d1c33caf325aada244204215eb790c228c12dandov 185b3c9d1c33caf325aada244204215eb790c228c12dandovclass LODDiffPatchBench : public PatchBench { 186b3c9d1c33caf325aada244204215eb790c228c12dandovpublic: 187b3c9d1c33caf325aada244204215eb790c228c12dandov LODDiffPatchBench(SkPoint scale, VertexMode vertexMode) 188b3c9d1c33caf325aada244204215eb790c228c12dandov : INHERITED(scale, vertexMode) { } 189e556be7084e43c64ca9d0df1b9c8ce16a988006fmtklein 190b3c9d1c33caf325aada244204215eb790c228c12dandov virtual void appendName(SkString* name) SK_OVERRIDE { 191b3c9d1c33caf325aada244204215eb790c228c12dandov name->append("LOD_Diff"); 192b3c9d1c33caf325aada244204215eb790c228c12dandov } 193e556be7084e43c64ca9d0df1b9c8ce16a988006fmtklein 1947e5598a004d0aceb630707053566bee523feea66dandov virtual void setCubics() SK_OVERRIDE { 195b3c9d1c33caf325aada244204215eb790c228c12dandov const SkPoint points[SkPatchUtils::kNumCtrlPts] = { 196b3c9d1c33caf325aada244204215eb790c228c12dandov //top points 197b3c9d1c33caf325aada244204215eb790c228c12dandov {100,175},{150,100},{250,100}, {300,0}, 198b3c9d1c33caf325aada244204215eb790c228c12dandov //right points 199b3c9d1c33caf325aada244204215eb790c228c12dandov {300, 150},{300,250}, 200b3c9d1c33caf325aada244204215eb790c228c12dandov //bottom points 201b3c9d1c33caf325aada244204215eb790c228c12dandov {300,400},{250,300},{150,300},{100,225}, 202b3c9d1c33caf325aada244204215eb790c228c12dandov //left points 203b3c9d1c33caf325aada244204215eb790c228c12dandov {100,215},{100,185} 204b3c9d1c33caf325aada244204215eb790c228c12dandov }; 205b3c9d1c33caf325aada244204215eb790c228c12dandov memcpy(fCubics, points, SkPatchUtils::kNumCtrlPts * sizeof(SkPoint)); 206b3c9d1c33caf325aada244204215eb790c228c12dandov } 207b3c9d1c33caf325aada244204215eb790c228c12dandovprivate: 208b3c9d1c33caf325aada244204215eb790c228c12dandov typedef PatchBench INHERITED; 209b3c9d1c33caf325aada244204215eb790c228c12dandov}; 210b3c9d1c33caf325aada244204215eb790c228c12dandov 211b3c9d1c33caf325aada244204215eb790c228c12dandovclass LoopPatchBench : public PatchBench { 212b3c9d1c33caf325aada244204215eb790c228c12dandovpublic: 213b3c9d1c33caf325aada244204215eb790c228c12dandov LoopPatchBench(SkPoint scale, VertexMode vertexMode) 214b3c9d1c33caf325aada244204215eb790c228c12dandov : INHERITED(scale, vertexMode) { } 215e556be7084e43c64ca9d0df1b9c8ce16a988006fmtklein 216b3c9d1c33caf325aada244204215eb790c228c12dandov virtual void appendName(SkString* name) SK_OVERRIDE { 217b3c9d1c33caf325aada244204215eb790c228c12dandov name->append("loop"); 218b3c9d1c33caf325aada244204215eb790c228c12dandov } 219e556be7084e43c64ca9d0df1b9c8ce16a988006fmtklein 2207e5598a004d0aceb630707053566bee523feea66dandov virtual void setCubics() SK_OVERRIDE { 221b3c9d1c33caf325aada244204215eb790c228c12dandov const SkPoint points[SkPatchUtils::kNumCtrlPts] = { 222b3c9d1c33caf325aada244204215eb790c228c12dandov //top points 223b3c9d1c33caf325aada244204215eb790c228c12dandov {100,100},{300,200},{100,200}, {300,100}, 224b3c9d1c33caf325aada244204215eb790c228c12dandov //right points 225b3c9d1c33caf325aada244204215eb790c228c12dandov {380, 400},{380,0}, 226b3c9d1c33caf325aada244204215eb790c228c12dandov //bottom points 227b3c9d1c33caf325aada244204215eb790c228c12dandov {300,300},{250,250},{30,200},{100,300}, 228b3c9d1c33caf325aada244204215eb790c228c12dandov //left points 229b3c9d1c33caf325aada244204215eb790c228c12dandov {140,325},{150,150} 230b3c9d1c33caf325aada244204215eb790c228c12dandov }; 231b3c9d1c33caf325aada244204215eb790c228c12dandov memcpy(fCubics, points, SkPatchUtils::kNumCtrlPts * sizeof(SkPoint)); 232b3c9d1c33caf325aada244204215eb790c228c12dandov } 233b3c9d1c33caf325aada244204215eb790c228c12dandovprivate: 234b3c9d1c33caf325aada244204215eb790c228c12dandov typedef PatchBench INHERITED; 235b3c9d1c33caf325aada244204215eb790c228c12dandov}; 236b3c9d1c33caf325aada244204215eb790c228c12dandov 237b3c9d1c33caf325aada244204215eb790c228c12dandov/////////////////////////////////////////////////////////////////////////////// 238b3c9d1c33caf325aada244204215eb790c228c12dandov 239b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new PatchBench(SkVector::Make(0.1f, 0.1f), PatchBench::kNone_VertexMode); ) 240b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new PatchBench(SkVector::Make(0.1f, 0.1f), PatchBench::kColors_VertexMode); ) 241b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new PatchBench(SkVector::Make(0.1f, 0.1f), PatchBench::kTexCoords_VertexMode); ) 242b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new PatchBench(SkVector::Make(0.1f, 0.1f), PatchBench::kBoth_VertexMode); ) 243b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new PatchBench(SkVector::Make(1.f, 1.0f), PatchBench::kNone_VertexMode); ) 244b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new PatchBench(SkVector::Make(1.0f, 1.0f), PatchBench::kColors_VertexMode); ) 245b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new PatchBench(SkVector::Make(1.0f, 1.0f), PatchBench::kTexCoords_VertexMode); ) 246b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new PatchBench(SkVector::Make(1.0f, 1.0f), PatchBench::kBoth_VertexMode); ) 247b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new PatchBench(SkVector::Make(3.0f, 3.0f), PatchBench::kNone_VertexMode); ) 248b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new PatchBench(SkVector::Make(3.0f, 3.0f), PatchBench::kColors_VertexMode); ) 249b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new PatchBench(SkVector::Make(3.0f, 3.0f), PatchBench::kTexCoords_VertexMode); ) 250b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new PatchBench(SkVector::Make(3.0f, 3.0f), PatchBench::kBoth_VertexMode); ) 251b3c9d1c33caf325aada244204215eb790c228c12dandov 252b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new SquarePatchBench(SkVector::Make(0.1f, 0.1f), 253b3c9d1c33caf325aada244204215eb790c228c12dandov PatchBench::kNone_VertexMode); ) 254b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new SquarePatchBench(SkVector::Make(0.1f, 0.1f), 255b3c9d1c33caf325aada244204215eb790c228c12dandov PatchBench::kColors_VertexMode); ) 256b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new SquarePatchBench(SkVector::Make(0.1f, 0.1f), 257b3c9d1c33caf325aada244204215eb790c228c12dandov PatchBench::kTexCoords_VertexMode); ) 258b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new SquarePatchBench(SkVector::Make(0.1f, 0.1f), 259b3c9d1c33caf325aada244204215eb790c228c12dandov PatchBench::kBoth_VertexMode); ) 260b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new SquarePatchBench(SkVector::Make(1.f, 1.0f), 261b3c9d1c33caf325aada244204215eb790c228c12dandov PatchBench::kNone_VertexMode); ) 262b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new SquarePatchBench(SkVector::Make(1.0f, 1.0f), 263b3c9d1c33caf325aada244204215eb790c228c12dandov PatchBench::kColors_VertexMode); ) 264b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new SquarePatchBench(SkVector::Make(1.0f, 1.0f), 265b3c9d1c33caf325aada244204215eb790c228c12dandov PatchBench::kTexCoords_VertexMode); ) 266b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new SquarePatchBench(SkVector::Make(1.0f, 1.0f), 267b3c9d1c33caf325aada244204215eb790c228c12dandov PatchBench::kBoth_VertexMode); ) 268b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new SquarePatchBench(SkVector::Make(3.0f, 3.0f), 269b3c9d1c33caf325aada244204215eb790c228c12dandov PatchBench::kNone_VertexMode); ) 270b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new SquarePatchBench(SkVector::Make(3.0f, 3.0f), 271b3c9d1c33caf325aada244204215eb790c228c12dandov PatchBench::kColors_VertexMode); ) 272b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new SquarePatchBench(SkVector::Make(3.0f, 3.0f), 273b3c9d1c33caf325aada244204215eb790c228c12dandov PatchBench::kTexCoords_VertexMode); ) 274b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new SquarePatchBench(SkVector::Make(3.0f, 3.0f), 275b3c9d1c33caf325aada244204215eb790c228c12dandov PatchBench::kBoth_VertexMode); ) 276b3c9d1c33caf325aada244204215eb790c228c12dandov 277b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new LODDiffPatchBench(SkVector::Make(0.1f, 0.1f), 278b3c9d1c33caf325aada244204215eb790c228c12dandov PatchBench::kNone_VertexMode); ) 279b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new LODDiffPatchBench(SkVector::Make(0.1f, 0.1f), 280b3c9d1c33caf325aada244204215eb790c228c12dandov PatchBench::kColors_VertexMode); ) 281b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new LODDiffPatchBench(SkVector::Make(0.1f, 0.1f), 282b3c9d1c33caf325aada244204215eb790c228c12dandov PatchBench::kTexCoords_VertexMode); ) 283b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new LODDiffPatchBench(SkVector::Make(0.1f, 0.1f), 284b3c9d1c33caf325aada244204215eb790c228c12dandov PatchBench::kBoth_VertexMode); ) 285b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new LODDiffPatchBench(SkVector::Make(1.f, 1.0f), 286b3c9d1c33caf325aada244204215eb790c228c12dandov PatchBench::kNone_VertexMode); ) 287b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new LODDiffPatchBench(SkVector::Make(1.0f, 1.0f), 288b3c9d1c33caf325aada244204215eb790c228c12dandov PatchBench::kColors_VertexMode); ) 289b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new LODDiffPatchBench(SkVector::Make(1.0f, 1.0f), 290b3c9d1c33caf325aada244204215eb790c228c12dandov PatchBench::kTexCoords_VertexMode); ) 291b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new LODDiffPatchBench(SkVector::Make(1.0f, 1.0f), 292b3c9d1c33caf325aada244204215eb790c228c12dandov PatchBench::kBoth_VertexMode); ) 293b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new LODDiffPatchBench(SkVector::Make(3.0f, 3.0f), 294b3c9d1c33caf325aada244204215eb790c228c12dandov PatchBench::kNone_VertexMode); ) 295b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new LODDiffPatchBench(SkVector::Make(3.0f, 3.0f), 296b3c9d1c33caf325aada244204215eb790c228c12dandov PatchBench::kColors_VertexMode); ) 297b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new LODDiffPatchBench(SkVector::Make(3.0f, 3.0f), 298b3c9d1c33caf325aada244204215eb790c228c12dandov PatchBench::kTexCoords_VertexMode); ) 299b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new LODDiffPatchBench(SkVector::Make(3.0f, 3.0f), 300b3c9d1c33caf325aada244204215eb790c228c12dandov PatchBench::kBoth_VertexMode); ) 301b3c9d1c33caf325aada244204215eb790c228c12dandov 302b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new LoopPatchBench(SkVector::Make(0.1f, 0.1f), 303b3c9d1c33caf325aada244204215eb790c228c12dandov PatchBench::kNone_VertexMode); ) 304b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new LoopPatchBench(SkVector::Make(0.1f, 0.1f), 305b3c9d1c33caf325aada244204215eb790c228c12dandov PatchBench::kColors_VertexMode); ) 306b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new LoopPatchBench(SkVector::Make(0.1f, 0.1f), 307b3c9d1c33caf325aada244204215eb790c228c12dandov PatchBench::kTexCoords_VertexMode); ) 308b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new LoopPatchBench(SkVector::Make(0.1f, 0.1f), 309b3c9d1c33caf325aada244204215eb790c228c12dandov PatchBench::kBoth_VertexMode); ) 310b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new LoopPatchBench(SkVector::Make(1.f, 1.0f), 311b3c9d1c33caf325aada244204215eb790c228c12dandov PatchBench::kNone_VertexMode); ) 312b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new LoopPatchBench(SkVector::Make(1.0f, 1.0f), 313b3c9d1c33caf325aada244204215eb790c228c12dandov PatchBench::kColors_VertexMode); ) 314b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new LoopPatchBench(SkVector::Make(1.0f, 1.0f), 315b3c9d1c33caf325aada244204215eb790c228c12dandov PatchBench::kTexCoords_VertexMode); ) 316b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new LoopPatchBench(SkVector::Make(1.0f, 1.0f), 317b3c9d1c33caf325aada244204215eb790c228c12dandov PatchBench::kBoth_VertexMode); ) 318b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new LoopPatchBench(SkVector::Make(3.0f, 3.0f), 319b3c9d1c33caf325aada244204215eb790c228c12dandov PatchBench::kNone_VertexMode); ) 320b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new LoopPatchBench(SkVector::Make(3.0f, 3.0f), 321b3c9d1c33caf325aada244204215eb790c228c12dandov PatchBench::kColors_VertexMode); ) 322b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new LoopPatchBench(SkVector::Make(3.0f, 3.0f), 323b3c9d1c33caf325aada244204215eb790c228c12dandov PatchBench::kTexCoords_VertexMode); ) 324b3c9d1c33caf325aada244204215eb790c228c12dandovDEF_BENCH( return new LoopPatchBench(SkVector::Make(3.0f, 3.0f), 325b3c9d1c33caf325aada244204215eb790c228c12dandov PatchBench::kBoth_VertexMode); ) 326