| Index: bench/GradientBench.cpp
|
| diff --git a/bench/GradientBench.cpp b/bench/GradientBench.cpp
|
| index 02df14825be6ff81977d41d05b45c9faeb8f143a..b20fc9a65d036f0a4920aabe24f749e84303e845 100644
|
| --- a/bench/GradientBench.cpp
|
| +++ b/bench/GradientBench.cpp
|
| @@ -19,14 +19,25 @@ struct GradData {
|
| int fCount;
|
| const SkColor* fColors;
|
| const SkScalar* fPos;
|
| + const char* fName;
|
| };
|
|
|
| static const SkColor gColors[] = {
|
| SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE, SK_ColorWHITE, SK_ColorBLACK,
|
| + SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE, SK_ColorWHITE, SK_ColorBLACK,
|
| + SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE, SK_ColorWHITE, SK_ColorBLACK,
|
| + SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE, SK_ColorWHITE, SK_ColorBLACK,
|
| + SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE, SK_ColorWHITE, SK_ColorBLACK,
|
| + SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE, SK_ColorWHITE, SK_ColorBLACK,
|
| + SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE, SK_ColorWHITE, SK_ColorBLACK,
|
| + SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE, SK_ColorWHITE, SK_ColorBLACK,
|
| + SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE, SK_ColorWHITE, SK_ColorBLACK,
|
| + SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE, SK_ColorWHITE, SK_ColorBLACK, // 10 lines, 50 colors
|
| };
|
|
|
| static const GradData gGradData[] = {
|
| - { 2, gColors, NULL },
|
| + { 2, gColors, NULL, "" },
|
| + { 50, gColors, NULL, "_hicolor" }, // many color gradient
|
| };
|
|
|
| /// Ignores scale
|
| @@ -156,9 +167,11 @@ class GradientBench : public SkBenchmark {
|
| };
|
| public:
|
| GradientBench(void* param, GradType gradType,
|
| + GradData data = gGradData[0],
|
| SkShader::TileMode tm = SkShader::kClamp_TileMode,
|
| GeomType geomType = kRect_GeomType,
|
| - float scale = 1.0f)
|
| + float scale = 1.0f
|
| + )
|
| : INHERITED(param) {
|
| fName.printf("gradient_%s_%s", gGrads[gradType].fName,
|
| tilemodename(tm));
|
| @@ -167,13 +180,15 @@ public:
|
| fName.append(geomtypename(geomType));
|
| }
|
|
|
| + fName.append(data.fName);
|
| +
|
| const SkPoint pts[2] = {
|
| { 0, 0 },
|
| { SkIntToScalar(W), SkIntToScalar(H) }
|
| };
|
|
|
| fCount = SkBENCHLOOP(N * gGrads[gradType].fRepeat);
|
| - fShader = gGrads[gradType].fMaker(pts, gGradData[0], tm, NULL, scale);
|
| + fShader = gGrads[gradType].fMaker(pts, data, tm, NULL, scale);
|
| fGeomType = geomType;
|
| }
|
|
|
| @@ -256,21 +271,25 @@ private:
|
| };
|
|
|
| DEF_BENCH( return new GradientBench(p, kLinear_GradType); )
|
| -DEF_BENCH( return new GradientBench(p, kLinear_GradType, SkShader::kMirror_TileMode); )
|
| +DEF_BENCH( return new GradientBench(p, kLinear_GradType, gGradData[1]); )
|
| +DEF_BENCH( return new GradientBench(p, kLinear_GradType, gGradData[0], SkShader::kMirror_TileMode); )
|
|
|
| // Draw a radial gradient of radius 1/2 on a rectangle; half the lines should
|
| // be completely pinned, the other half should pe partially pinned
|
| -DEF_BENCH( return new GradientBench(p, kRadial_GradType, SkShader::kClamp_TileMode, kRect_GeomType, 0.5f); )
|
| +DEF_BENCH( return new GradientBench(p, kRadial_GradType, gGradData[0], SkShader::kClamp_TileMode, kRect_GeomType, 0.5f); )
|
|
|
| // Draw a radial gradient on a circle of equal size; all the lines should
|
| // hit the unpinned fast path (so long as GradientBench.W == H)
|
| -DEF_BENCH( return new GradientBench(p, kRadial_GradType, SkShader::kClamp_TileMode, kOval_GeomType); )
|
| +DEF_BENCH( return new GradientBench(p, kRadial_GradType, gGradData[0], SkShader::kClamp_TileMode, kOval_GeomType); )
|
|
|
| -DEF_BENCH( return new GradientBench(p, kRadial_GradType, SkShader::kMirror_TileMode); )
|
| +DEF_BENCH( return new GradientBench(p, kRadial_GradType, gGradData[0], SkShader::kMirror_TileMode); )
|
| DEF_BENCH( return new GradientBench(p, kSweep_GradType); )
|
| +DEF_BENCH( return new GradientBench(p, kSweep_GradType, gGradData[1]); )
|
| DEF_BENCH( return new GradientBench(p, kRadial2_GradType); )
|
| -DEF_BENCH( return new GradientBench(p, kRadial2_GradType, SkShader::kMirror_TileMode); )
|
| +DEF_BENCH( return new GradientBench(p, kRadial2_GradType, gGradData[1]); )
|
| +DEF_BENCH( return new GradientBench(p, kRadial2_GradType, gGradData[0], SkShader::kMirror_TileMode); )
|
| DEF_BENCH( return new GradientBench(p, kConical_GradType); )
|
| +DEF_BENCH( return new GradientBench(p, kConical_GradType, gGradData[1]); )
|
|
|
| DEF_BENCH( return new Gradient2Bench(p, false); )
|
| DEF_BENCH( return new Gradient2Bench(p, true); )
|
|
|