Implement AnalyticAA for convex shapes.
authorliyuqian <liyuqian@google.com>
Tue, 4 Oct 2016 16:29:51 +0000 (09:29 -0700)
committerCommit bot <commit-bot@chromium.org>
Tue, 4 Oct 2016 16:29:51 +0000 (09:29 -0700)
commit7795822807478143120c33228b68d2ab3918af2c
tree7b84301091da3dbeba6b7785c46443fe1c6b7612
parentb25c3522446c9f84369dec2327ed9995fdb326de
Implement AnalyticAA for convex shapes.

Design doc: go/analyticAA

A performance test can be found here: https://docs.google.com/a/google.com/spreadsheets/d/1n9LSjFzrQzx0hovFddWey0GSMXNRjl1oFuSypMlHWZk/edit?usp=sharing

Our best case is filling big triangles, which according to our experiment has ~2.9x speedup. Our worst case is filling small ovals/circles, which has a ~1.06x slowdown.

To see how our new algorithm changes the DM images, see: https://x20web.corp.google.com/~liyuqian/dmdiff/index.html
The most significant changes are in convexpaths and analytic_antialias_convex

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2221103002

Review-Url: https://codereview.chromium.org/2221103002
15 files changed:
bench/nanobench.cpp
dm/DM.cpp
gyp/core.gypi
samplecode/SampleApp.cpp
src/core/SkAAAConstants.h [new file with mode: 0644]
src/core/SkAnalyticEdge.cpp [new file with mode: 0644]
src/core/SkAnalyticEdge.h [new file with mode: 0644]
src/core/SkBlitter.cpp
src/core/SkEdge.cpp
src/core/SkEdge.h
src/core/SkEdgeBuilder.cpp
src/core/SkEdgeBuilder.h
src/core/SkScan.h
src/core/SkScan_AAAPath.cpp [new file with mode: 0644]
src/core/SkScan_AntiPath.cpp