Index: bench/GradientBench.cpp |
diff --git a/bench/GradientBench.cpp b/bench/GradientBench.cpp |
index 02df14825be6ff81977d41d05b45c9faeb8f143a..8f30dc674b16403cdfd7cc160b1bf67f300f666c 100644 |
--- a/bench/GradientBench.cpp |
+++ b/bench/GradientBench.cpp |
@@ -23,10 +23,20 @@ struct GradData { |
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 }, |
+ { 50, gColors, NULL }, // many color gradient |
}; |
/// Ignores scale |
@@ -117,6 +127,11 @@ enum GeomType { |
kOval_GeomType |
}; |
+enum ColorType { |
+ kColors_2, |
+ kColors_50 |
+}; |
+ |
static const char* tilemodename(SkShader::TileMode tm) { |
switch (tm) { |
case SkShader::kClamp_TileMode: |
@@ -156,9 +171,11 @@ class GradientBench : public SkBenchmark { |
}; |
public: |
GradientBench(void* param, GradType gradType, |
+ ColorType colors = kColors_2, |
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 +184,17 @@ public: |
fName.append(geomtypename(geomType)); |
} |
+ if (colors == kColors_50) { |
+ fName.append("_hicolor"); |
+ } |
+ |
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, gGradData[colors], tm, NULL, scale); |
fGeomType = geomType; |
} |
@@ -256,21 +277,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, kColors_50); ) |
+DEF_BENCH( return new GradientBench(p, kLinear_GradType, kColors_2, 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, kColors_2, 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, kColors_2, SkShader::kClamp_TileMode, kOval_GeomType); ) |
-DEF_BENCH( return new GradientBench(p, kRadial_GradType, SkShader::kMirror_TileMode); ) |
+DEF_BENCH( return new GradientBench(p, kRadial_GradType, kColors_2, SkShader::kMirror_TileMode); ) |
DEF_BENCH( return new GradientBench(p, kSweep_GradType); ) |
+DEF_BENCH( return new GradientBench(p, kSweep_GradType, kColors_50); ) |
bsalomon
2013/07/09 21:29:45
Maybe just pass the GradData instance that you wan
dierk
2013/07/10 15:01:26
I used enums to match the style of the existing co
bsalomon
2013/07/10 15:21:21
You could have:
struct GradData {
int
dierk
2013/07/10 15:41:12
Done.
|
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, kColors_50); ) |
+DEF_BENCH( return new GradientBench(p, kRadial2_GradType, kColors_2, SkShader::kMirror_TileMode); ) |
DEF_BENCH( return new GradientBench(p, kConical_GradType); ) |
+DEF_BENCH( return new GradientBench(p, kConical_GradType, kColors_50); ) |
DEF_BENCH( return new Gradient2Bench(p, false); ) |
DEF_BENCH( return new Gradient2Bench(p, true); ) |