aboutsummaryrefslogtreecommitdiffhomepage
path: root/bench/PathBench.cpp
diff options
context:
space:
mode:
authorGravatar Yuqian Li <liyuqian@google.com>2017-01-06 16:31:46 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-01-09 18:53:06 +0000
commitd4ed326d6f3704995b0e91292bf2c87e9d36bb14 (patch)
tree7ccc23d15e6162acfcb2ef7d192eeaebdb8d9dfe /bench/PathBench.cpp
parent2e2cb9bc768bd13e1beeafc9acf8b8f19bea3215 (diff)
Improve quad edges' smoothness in non-AA cases
Previously, non-AA quad edges only have an accuracy about 1/2 pixel (while the AA quad edges have an accuracy about 1/8 pixel). Now, we increase non-AA quad edges' accuracy to 1/8 pixel as well. The difference is very significant for rotating non-AA filled circles. For example, run `./out/Debug/SampleApp --slide GM:fillcircle` with AA turned off (by pressing b). The benchmark added reveals that increasing quad accuracy from 1/2 to 1/8 doesn't affect the performance significantly. The following is the 1/2-accuracy performance versus 1/8-accuracy performance: curr/maxrss loops min median mean max stddev samples config bench 7/17 MB 19 2.43µs 2.57µs 2.81µs 10.5µs 22% 16119 8888 path_fill_big_nonaacircle 7/17 MB 17 1.38µs 1.42µs 1.52µs 13µs 20% 21409 8888 path_fill_small_nonaacircle curr/maxrss loops min median mean max stddev samples config bench 7/17 MB 71 2.52µs 2.59µs 2.79µs 7.67µs 19% 7557 8888 path_fill_big_nonaacircle 7/17 MB 64 1.45µs 1.49µs 1.51µs 2.39µs 5% 12704 8888 path_fill_small_nonaacircle BUG=skia: Change-Id: I3482098aeafcc6f2ec9aa3382977c0dc1b650964 Reviewed-on: https://skia-review.googlesource.com/6699 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Yuqian Li <liyuqian@google.com>
Diffstat (limited to 'bench/PathBench.cpp')
-rw-r--r--bench/PathBench.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/bench/PathBench.cpp b/bench/PathBench.cpp
index 4ca4401163..449d30558e 100644
--- a/bench/PathBench.cpp
+++ b/bench/PathBench.cpp
@@ -173,6 +173,23 @@ private:
typedef PathBench INHERITED;
};
+class NonAACirclePathBench: public CirclePathBench {
+public:
+ NonAACirclePathBench(Flags flags) : INHERITED(flags) {}
+
+ void appendName(SkString* name) override {
+ name->append("nonaacircle");
+ }
+
+ void setupPaint(SkPaint* paint) override {
+ CirclePathBench::setupPaint(paint);
+ paint->setAntiAlias(false);
+ }
+
+private:
+ typedef CirclePathBench INHERITED;
+};
+
// Test max speedup of Analytic AA for concave paths
class AAAConcavePathBench : public PathBench {
public:
@@ -1090,6 +1107,9 @@ DEF_BENCH( return new CirclePathBench(FLAGS01); )
DEF_BENCH( return new CirclePathBench(FLAGS10); )
DEF_BENCH( return new CirclePathBench(FLAGS11); )
+DEF_BENCH( return new NonAACirclePathBench(FLAGS00); )
+DEF_BENCH( return new NonAACirclePathBench(FLAGS10); )
+
DEF_BENCH( return new AAAConcavePathBench(FLAGS00); )
DEF_BENCH( return new AAAConcavePathBench(FLAGS10); )
DEF_BENCH( return new AAAConvexPathBench(FLAGS00); )