aboutsummaryrefslogtreecommitdiffhomepage
path: root/bench/PathBench.cpp
diff options
context:
space:
mode:
authorGravatar liyuqian <liyuqian@google.com>2016-06-20 14:05:27 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-06-20 14:05:27 -0700
commita27f669f460e9186dbb3ebe3e9323acef95d41b8 (patch)
tree477f3024e4bb9b24a4dadb00ca3b61cd818dabc6 /bench/PathBench.cpp
parent70ba047eacd06047a7a7f8e6ea94bce34c3e3cea (diff)
Benchmark rotated rect with AA/noAA
Using this benchmark, we verify that AA is about 4x slower than noAA in path_fill_big_rotated_rect. This is what I aim to improve in the next CL. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2087453003 Review-Url: https://codereview.chromium.org/2087453003
Diffstat (limited to 'bench/PathBench.cpp')
-rw-r--r--bench/PathBench.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/bench/PathBench.cpp b/bench/PathBench.cpp
index d0ede02ab7..67e002ba24 100644
--- a/bench/PathBench.cpp
+++ b/bench/PathBench.cpp
@@ -112,6 +112,37 @@ private:
typedef PathBench INHERITED;
};
+class RotatedRectBench : public PathBench {
+public:
+ RotatedRectBench(Flags flags, bool aa, int degrees) : INHERITED(flags) {
+ fAA = aa;
+ fDegrees = degrees;
+ }
+
+ void appendName(SkString* name) override {
+ SkString suffix;
+ suffix.printf("rotated_rect_%s_%d", fAA ? "aa" : "noaa", fDegrees);
+ name->append(suffix);
+ }
+
+ void makePath(SkPath* path) override {
+ SkRect r = { 10, 10, 20, 20 };
+ path->addRect(r);
+ SkMatrix rotateMatrix;
+ rotateMatrix.setRotate((SkScalar)fDegrees);
+ path->transform(rotateMatrix);
+ }
+
+ virtual void setupPaint(SkPaint* paint) override {
+ PathBench::setupPaint(paint);
+ paint->setAntiAlias(fAA);
+ }
+private:
+ typedef PathBench INHERITED;
+ int fDegrees;
+ bool fAA;
+};
+
class OvalPathBench : public PathBench {
public:
OvalPathBench(Flags flags) : INHERITED(flags) {}
@@ -1003,6 +1034,11 @@ DEF_BENCH( return new RectPathBench(FLAGS01); )
DEF_BENCH( return new RectPathBench(FLAGS10); )
DEF_BENCH( return new RectPathBench(FLAGS11); )
+DEF_BENCH( return new RotatedRectBench(FLAGS00, false, 45));
+DEF_BENCH( return new RotatedRectBench(FLAGS10, false, 45));
+DEF_BENCH( return new RotatedRectBench(FLAGS00, true, 45));
+DEF_BENCH( return new RotatedRectBench(FLAGS10, true, 45));
+
DEF_BENCH( return new OvalPathBench(FLAGS00); )
DEF_BENCH( return new OvalPathBench(FLAGS01); )
DEF_BENCH( return new OvalPathBench(FLAGS10); )