From 5396a048d2f9f32fd3977d44f580c86028f4b1b9 Mon Sep 17 00:00:00 2001 From: "commit-bot@chromium.org" Date: Wed, 10 Jul 2013 16:13:14 +0000 Subject: Added a high-color (50 colors) gradient for each gradient type. To do so I added an enumerated type called ColorType that can toggle between kColors_2 and kColors_50 to swap between 2 and 50 color gradients. Added hicolor bench for each gradient type. BUG= R=reed@google.com, bsalomon@google.com Author: dierk@google.com Review URL: https://chromiumcodereview.appspot.com/18655012 git-svn-id: http://skia.googlecode.com/svn/trunk@9960 2bbb7eff-a529-9590-31e7-b0007b416f81 --- bench/GradientBench.cpp | 35 +++++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) (limited to 'bench/GradientBench.cpp') diff --git a/bench/GradientBench.cpp b/bench/GradientBench.cpp index 02df14825b..b20fc9a65d 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); ) -- cgit v1.2.3