Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright 2016 Google Inc. | 2 * Copyright 2016 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "Benchmark.h" | 8 #include "Benchmark.h" |
| 9 | 9 |
| 10 #include "SkCanvas.h" | 10 #include "SkCanvas.h" |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 21 case SkShader::kRepeat_TileMode: | 21 case SkShader::kRepeat_TileMode: |
| 22 return "repeat"; | 22 return "repeat"; |
| 23 case SkShader::kMirror_TileMode: | 23 case SkShader::kMirror_TileMode: |
| 24 return "mirror"; | 24 return "mirror"; |
| 25 default: | 25 default: |
| 26 SkDEBUGFAIL("Unknown tilemode"); | 26 SkDEBUGFAIL("Unknown tilemode"); |
| 27 return "error"; | 27 return "error"; |
| 28 } | 28 } |
| 29 } | 29 } |
| 30 | 30 |
| 31 class HardStopGradientBench : public Benchmark { | 31 class HardStopGradientBench_ScaleNumColors : public Benchmark { |
| 32 public: | 32 public: |
| 33 HardStopGradientBench(SkShader::TileMode tilemode, int count) { | 33 HardStopGradientBench_ScaleNumColors(SkShader::TileMode tilemode, int count) { |
| 34 fName.printf("hardstop_%s_%03d_colors", get_tilemode_name(tilemode), cou nt); | 34 fName.printf("hardstop_scale_num_colors_%s_%03d_colors", get_tilemode_na me(tilemode), count); |
| 35 | 35 |
| 36 fTileMode = tilemode; | 36 fTileMode = tilemode; |
| 37 fColorCount = count; | 37 fColorCount = count; |
| 38 } | 38 } |
| 39 | 39 |
| 40 const char* onGetName() override { | 40 const char* onGetName() override { |
| 41 return fName.c_str(); | 41 return fName.c_str(); |
| 42 } | 42 } |
| 43 | 43 |
| 44 SkIPoint onGetSize() override { | 44 SkIPoint onGetSize() override { |
| 45 return SkIPoint::Make(kSize, kSize); | 45 return SkIPoint::Make(kSize, kSize); |
| 46 } | 46 } |
| 47 | 47 |
| 48 /* | |
| 49 * Set up a linear gradient from left to right with | |
| 50 * fColorCount "evenly spaced" colors. The positions | |
| 51 * are also evenly spaced, with the exception of the | |
| 52 * first two, which create a hard stop in order to | |
| 53 * trigger the hard stop code. | |
|
tomhudson
2016/07/26 13:25:14
Nit: runon sentence?
| |
| 54 */ | |
| 48 void onPreDraw(SkCanvas* canvas) override { | 55 void onPreDraw(SkCanvas* canvas) override { |
| 49 // Left to right | 56 // Left to right |
| 50 SkPoint points[2] = { | 57 SkPoint points[2] = { |
| 51 SkPoint::Make(0, kSize/2), | 58 SkPoint::Make(0, kSize/2), |
| 52 SkPoint::Make(kSize-1, kSize/2), | 59 SkPoint::Make(kSize-1, kSize/2), |
| 53 }; | 60 }; |
| 54 | 61 |
| 55 // "Evenly spaced" colors | 62 // "Evenly spaced" colors |
| 56 SkColor colors[100]; | 63 SkColor colors[100]; |
| 57 for (int i = 0; i < fColorCount; i++) { | 64 for (int i = 0; i < fColorCount; i++) { |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 90 | 97 |
| 91 SkShader::TileMode fTileMode; | 98 SkShader::TileMode fTileMode; |
| 92 SkString fName; | 99 SkString fName; |
| 93 int fColorCount; | 100 int fColorCount; |
| 94 SkPaint fPaint; | 101 SkPaint fPaint; |
| 95 | 102 |
| 96 typedef Benchmark INHERITED; | 103 typedef Benchmark INHERITED; |
| 97 }; | 104 }; |
| 98 | 105 |
| 99 // Clamp | 106 // Clamp |
| 100 DEF_BENCH(return new HardStopGradientBench(SkShader::kClamp_TileMode, 3);) | 107 DEF_BENCH(return new HardStopGradientBench_ScaleNumColors(SkShader::kClamp_TileM ode, 3);) |
| 101 DEF_BENCH(return new HardStopGradientBench(SkShader::kClamp_TileMode, 4);) | 108 DEF_BENCH(return new HardStopGradientBench_ScaleNumColors(SkShader::kClamp_TileM ode, 4);) |
| 102 DEF_BENCH(return new HardStopGradientBench(SkShader::kClamp_TileMode, 5);) | 109 DEF_BENCH(return new HardStopGradientBench_ScaleNumColors(SkShader::kClamp_TileM ode, 5);) |
| 103 DEF_BENCH(return new HardStopGradientBench(SkShader::kClamp_TileMode, 10);) | 110 DEF_BENCH(return new HardStopGradientBench_ScaleNumColors(SkShader::kClamp_TileM ode, 10);) |
| 104 DEF_BENCH(return new HardStopGradientBench(SkShader::kClamp_TileMode, 25);) | 111 DEF_BENCH(return new HardStopGradientBench_ScaleNumColors(SkShader::kClamp_TileM ode, 25);) |
| 105 DEF_BENCH(return new HardStopGradientBench(SkShader::kClamp_TileMode, 50);) | 112 DEF_BENCH(return new HardStopGradientBench_ScaleNumColors(SkShader::kClamp_TileM ode, 50);) |
| 106 DEF_BENCH(return new HardStopGradientBench(SkShader::kClamp_TileMode, 100);) | 113 DEF_BENCH(return new HardStopGradientBench_ScaleNumColors(SkShader::kClamp_TileM ode, 100);) |
| 107 | 114 |
| 108 // Repeat | 115 // Repeat |
| 109 DEF_BENCH(return new HardStopGradientBench(SkShader::kRepeat_TileMode, 3);) | 116 DEF_BENCH(return new HardStopGradientBench_ScaleNumColors(SkShader::kRepeat_Tile Mode, 3);) |
| 110 DEF_BENCH(return new HardStopGradientBench(SkShader::kRepeat_TileMode, 4);) | 117 DEF_BENCH(return new HardStopGradientBench_ScaleNumColors(SkShader::kRepeat_Tile Mode, 4);) |
| 111 DEF_BENCH(return new HardStopGradientBench(SkShader::kRepeat_TileMode, 5);) | 118 DEF_BENCH(return new HardStopGradientBench_ScaleNumColors(SkShader::kRepeat_Tile Mode, 5);) |
| 112 DEF_BENCH(return new HardStopGradientBench(SkShader::kRepeat_TileMode, 10);) | 119 DEF_BENCH(return new HardStopGradientBench_ScaleNumColors(SkShader::kRepeat_Tile Mode, 10);) |
| 113 DEF_BENCH(return new HardStopGradientBench(SkShader::kRepeat_TileMode, 25);) | 120 DEF_BENCH(return new HardStopGradientBench_ScaleNumColors(SkShader::kRepeat_Tile Mode, 25);) |
| 114 DEF_BENCH(return new HardStopGradientBench(SkShader::kRepeat_TileMode, 50);) | 121 DEF_BENCH(return new HardStopGradientBench_ScaleNumColors(SkShader::kRepeat_Tile Mode, 50);) |
| 115 DEF_BENCH(return new HardStopGradientBench(SkShader::kRepeat_TileMode, 100);) | 122 DEF_BENCH(return new HardStopGradientBench_ScaleNumColors(SkShader::kRepeat_Tile Mode, 100);) |
| 116 | 123 |
| 117 // Mirror | 124 // Mirror |
| 118 DEF_BENCH(return new HardStopGradientBench(SkShader::kMirror_TileMode, 3);) | 125 DEF_BENCH(return new HardStopGradientBench_ScaleNumColors(SkShader::kMirror_Tile Mode, 3);) |
| 119 DEF_BENCH(return new HardStopGradientBench(SkShader::kMirror_TileMode, 4);) | 126 DEF_BENCH(return new HardStopGradientBench_ScaleNumColors(SkShader::kMirror_Tile Mode, 4);) |
| 120 DEF_BENCH(return new HardStopGradientBench(SkShader::kMirror_TileMode, 5);) | 127 DEF_BENCH(return new HardStopGradientBench_ScaleNumColors(SkShader::kMirror_Tile Mode, 5);) |
| 121 DEF_BENCH(return new HardStopGradientBench(SkShader::kMirror_TileMode, 10);) | 128 DEF_BENCH(return new HardStopGradientBench_ScaleNumColors(SkShader::kMirror_Tile Mode, 10);) |
| 122 DEF_BENCH(return new HardStopGradientBench(SkShader::kMirror_TileMode, 25);) | 129 DEF_BENCH(return new HardStopGradientBench_ScaleNumColors(SkShader::kMirror_Tile Mode, 25);) |
| 123 DEF_BENCH(return new HardStopGradientBench(SkShader::kMirror_TileMode, 50);) | 130 DEF_BENCH(return new HardStopGradientBench_ScaleNumColors(SkShader::kMirror_Tile Mode, 50);) |
| 124 DEF_BENCH(return new HardStopGradientBench(SkShader::kMirror_TileMode, 100);) | 131 DEF_BENCH(return new HardStopGradientBench_ScaleNumColors(SkShader::kMirror_Tile Mode, 100);) |
| OLD | NEW |