Improve quad edges' smoothness in non-AA cases
authorYuqian Li <liyuqian@google.com>
Fri, 6 Jan 2017 21:31:46 +0000 (16:31 -0500)
committerSkia Commit-Bot <skia-commit-bot@chromium.org>
Mon, 9 Jan 2017 18:53:06 +0000 (18:53 +0000)
commitd4ed326d6f3704995b0e91292bf2c87e9d36bb14
tree7ccc23d15e6162acfcb2ef7d192eeaebdb8d9dfe
parent2e2cb9bc768bd13e1beeafc9acf8b8f19bea3215
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>
bench/PathBench.cpp
src/core/SkEdge.cpp