aboutsummaryrefslogtreecommitdiffhomepage
path: root/bench/GradientBench.cpp
diff options
context:
space:
mode:
authorGravatar commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-07-10 16:13:14 +0000
committerGravatar commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-07-10 16:13:14 +0000
commit5396a048d2f9f32fd3977d44f580c86028f4b1b9 (patch)
tree68614d561816aa54b734109a0af26f9c73c487a0 /bench/GradientBench.cpp
parent262ff953a7f7e9e07b8fa9a792ade920aa5dd926 (diff)
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
Diffstat (limited to 'bench/GradientBench.cpp')
-rw-r--r--bench/GradientBench.cpp35
1 files changed, 27 insertions, 8 deletions
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); )