Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8004)

Unified Diff: bench/GradientBench.cpp

Issue 18655012: Added a high-color (50 colors) gradient for each gradient type. (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Fixed parameter type for method (from int -> enum) Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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); )
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698