зеркало из https://github.com/mozilla/moz-skia.git
Make all gradient benchs use the same repeat count.
R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/25306003 git-svn-id: http://skia.googlecode.com/svn/trunk@11634 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
Родитель
de09af3fd8
Коммит
b120bd986e
|
@ -109,13 +109,12 @@ typedef SkShader* (*GradMaker)(const SkPoint pts[2], const GradData& data,
|
|||
static const struct {
|
||||
GradMaker fMaker;
|
||||
const char* fName;
|
||||
int fRepeat;
|
||||
} gGrads[] = {
|
||||
{ MakeLinear, "linear", 15 },
|
||||
{ MakeRadial, "radial1", 10 },
|
||||
{ MakeSweep, "sweep", 1 },
|
||||
{ Make2Radial, "radial2", 5 },
|
||||
{ MakeConical, "conical", 5 },
|
||||
{ MakeLinear, "linear" },
|
||||
{ MakeRadial, "radial1" },
|
||||
{ MakeSweep, "sweep" },
|
||||
{ Make2Radial, "radial2" },
|
||||
{ MakeConical, "conical" },
|
||||
};
|
||||
|
||||
enum GradType { // these must match the order in gGrads
|
||||
|
@ -162,10 +161,10 @@ static const char* geomtypename(GeomType gt) {
|
|||
class GradientBench : public SkBenchmark {
|
||||
SkString fName;
|
||||
SkShader* fShader;
|
||||
int fRepeat;
|
||||
enum {
|
||||
W = 400,
|
||||
H = 400,
|
||||
kRepeat = 15,
|
||||
};
|
||||
public:
|
||||
GradientBench(GradType gradType,
|
||||
|
@ -191,7 +190,6 @@ public:
|
|||
{ SkIntToScalar(W), SkIntToScalar(H) }
|
||||
};
|
||||
|
||||
fRepeat = gGrads[gradType].fRepeat;
|
||||
fShader = gGrads[gradType].fMaker(pts, data, tm, NULL, scale);
|
||||
fGeomType = geomType;
|
||||
}
|
||||
|
@ -212,7 +210,7 @@ protected:
|
|||
paint.setShader(fShader);
|
||||
|
||||
SkRect r = { 0, 0, SkIntToScalar(W), SkIntToScalar(H) };
|
||||
for (int i = 0; i < this->getLoops() * fRepeat; i++) {
|
||||
for (int i = 0; i < this->getLoops() * kRepeat; i++) {
|
||||
switch (fGeomType) {
|
||||
case kRect_GeomType:
|
||||
canvas->drawRect(r, paint);
|
||||
|
@ -230,6 +228,35 @@ private:
|
|||
GeomType fGeomType;
|
||||
};
|
||||
|
||||
DEF_BENCH( return new GradientBench(kLinear_GradType); )
|
||||
DEF_BENCH( return new GradientBench(kLinear_GradType, gGradData[1]); )
|
||||
DEF_BENCH( return new GradientBench(kLinear_GradType, gGradData[2]); )
|
||||
DEF_BENCH( return new GradientBench(kLinear_GradType, gGradData[0], SkShader::kMirror_TileMode); )
|
||||
|
||||
DEF_BENCH( return new GradientBench(kRadial_GradType, gGradData[0]); )
|
||||
DEF_BENCH( return new GradientBench(kRadial_GradType, gGradData[1]); )
|
||||
DEF_BENCH( return new GradientBench(kRadial_GradType, gGradData[2]); )
|
||||
// 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(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(kRadial_GradType, gGradData[0], SkShader::kClamp_TileMode, kOval_GeomType); )
|
||||
|
||||
DEF_BENCH( return new GradientBench(kRadial_GradType, gGradData[0], SkShader::kMirror_TileMode); )
|
||||
DEF_BENCH( return new GradientBench(kSweep_GradType); )
|
||||
DEF_BENCH( return new GradientBench(kSweep_GradType, gGradData[1]); )
|
||||
DEF_BENCH( return new GradientBench(kSweep_GradType, gGradData[2]); )
|
||||
DEF_BENCH( return new GradientBench(kRadial2_GradType); )
|
||||
DEF_BENCH( return new GradientBench(kRadial2_GradType, gGradData[1]); )
|
||||
DEF_BENCH( return new GradientBench(kRadial2_GradType, gGradData[0], SkShader::kMirror_TileMode); )
|
||||
DEF_BENCH( return new GradientBench(kConical_GradType); )
|
||||
DEF_BENCH( return new GradientBench(kConical_GradType, gGradData[1]); )
|
||||
DEF_BENCH( return new GradientBench(kConical_GradType, gGradData[2]); )
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
class Gradient2Bench : public SkBenchmark {
|
||||
SkString fName;
|
||||
bool fHasAlpha;
|
||||
|
@ -274,33 +301,5 @@ private:
|
|||
typedef SkBenchmark INHERITED;
|
||||
};
|
||||
|
||||
DEF_BENCH( return new GradientBench(kLinear_GradType); )
|
||||
DEF_BENCH( return new GradientBench(kLinear_GradType, gGradData[1]); )
|
||||
DEF_BENCH( return new GradientBench(kLinear_GradType, gGradData[2]); )
|
||||
DEF_BENCH( return new GradientBench(kLinear_GradType, gGradData[0], SkShader::kMirror_TileMode); )
|
||||
|
||||
|
||||
DEF_BENCH( return new GradientBench(kRadial_GradType, gGradData[0]); )
|
||||
DEF_BENCH( return new GradientBench(kRadial_GradType, gGradData[1]); )
|
||||
DEF_BENCH( return new GradientBench(kRadial_GradType, gGradData[2]); )
|
||||
// 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(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(kRadial_GradType, gGradData[0], SkShader::kClamp_TileMode, kOval_GeomType); )
|
||||
|
||||
DEF_BENCH( return new GradientBench(kRadial_GradType, gGradData[0], SkShader::kMirror_TileMode); )
|
||||
DEF_BENCH( return new GradientBench(kSweep_GradType); )
|
||||
DEF_BENCH( return new GradientBench(kSweep_GradType, gGradData[1]); )
|
||||
DEF_BENCH( return new GradientBench(kSweep_GradType, gGradData[2]); )
|
||||
DEF_BENCH( return new GradientBench(kRadial2_GradType); )
|
||||
DEF_BENCH( return new GradientBench(kRadial2_GradType, gGradData[1]); )
|
||||
DEF_BENCH( return new GradientBench(kRadial2_GradType, gGradData[0], SkShader::kMirror_TileMode); )
|
||||
DEF_BENCH( return new GradientBench(kConical_GradType); )
|
||||
DEF_BENCH( return new GradientBench(kConical_GradType, gGradData[1]); )
|
||||
DEF_BENCH( return new GradientBench(kConical_GradType, gGradData[2]); )
|
||||
|
||||
DEF_BENCH( return new Gradient2Bench(false); )
|
||||
DEF_BENCH( return new Gradient2Bench(true); )
|
||||
|
|
Загрузка…
Ссылка в новой задаче