aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkAnalyticEdge.h
Commit message (Collapse)AuthorAge
* Stop using SkTSwap.Gravatar Ben Wagner2018-06-19
| | | | | | | | | | | | | Use std::swap instead. It does not appear that any external user specializes SkTSwap, but some may still use it. This removes all use in Skia so that SkTSwap can later be removed in a smaller CL. After that the <utility> include can be removed from SkTypes.h. Change-Id: If03d4ee07dbecda961aa9f0dc34d171ef5168753 Reviewed-on: https://skia-review.googlesource.com/135578 Reviewed-by: Hal Canary <halcanary@google.com> Reviewed-by: Mike Klein <mtklein@google.com> Commit-Queue: Ben Wagner <bungeman@google.com>
* Revert "Revert "SkTypes: extract SkTo""Gravatar Hal Canary2018-06-14
| | | | | | | | | | | | | | | | This reverts commit fdcfb8b7c23fbf18f872d2c31d27978235033876. > Original change's description: > > SkTypes: extract SkTo > > > > Change-Id: I8de790d5013db2105ad885fa2683303d7c250b09 > > Reviewed-on: https://skia-review.googlesource.com/133620 > > Reviewed-by: Mike Klein <mtklein@google.com> Change-Id: Ida74fbc5c21248a724a5edbf9fae18a33bcb23aa Reviewed-on: https://skia-review.googlesource.com/134506 Reviewed-by: Mike Klein <mtklein@google.com> Commit-Queue: Hal Canary <halcanary@google.com>
* Revert "SkTypes: extract SkTo"Gravatar Hal Canary2018-06-13
| | | | | | | | | | | | | | | | | | | | | | | This reverts commit 2a2f67592602b18527bc3fd449132d420cd5b62e. Reason for revert: this appears to be what is holding up the Chrome roll. Original change's description: > SkTypes: extract SkTo > > Change-Id: I8de790d5013db2105ad885fa2683303d7c250b09 > Reviewed-on: https://skia-review.googlesource.com/133620 > Reviewed-by: Mike Klein <mtklein@google.com> TBR=mtklein@google.com,halcanary@google.com No-Presubmit: true No-Tree-Checks: true No-Try: true Change-Id: Iafd738aedfb679a23c061a51afe4b98a8d4cdfae Reviewed-on: https://skia-review.googlesource.com/134504 Reviewed-by: Hal Canary <halcanary@google.com> Commit-Queue: Hal Canary <halcanary@google.com>
* SkTypes: extract SkToGravatar Hal Canary2018-06-12
| | | | | | Change-Id: I8de790d5013db2105ad885fa2683303d7c250b09 Reviewed-on: https://skia-review.googlesource.com/133620 Reviewed-by: Mike Klein <mtklein@google.com>
* fix analytic AA to work with even roundingGravatar Lee Salzman2017-09-05
| | | | | | | | Bug: skia: Change-Id: I92b19baa06429ef2c0e9cf6928d63528f29943fe Reviewed-on: https://skia-review.googlesource.com/42520 Reviewed-by: Yuqian Li <liyuqian@google.com> Commit-Queue: Yuqian Li <liyuqian@google.com>
* No chop at y extrema for cubicsGravatar Yuqian Li2017-08-09
| | | | | | | | | | | | | | | | | | The new Delta AA scan converter does not need the edge to be updated with monotonic Y so chopping at y extrema is not necessary. Removing such chopping brings ~10% performance increase to chalkboard.svg which has tons of small cubics (the same is true for many svgs I saw). We didn't remove the chopping for quads because that does not bring a significant speedup. Moreover, dropping those y extremas would make our strokecircle animation look a little more wobbly (because we would have fewer divisions for the quads at the top and bottom of the circle). Bug: skia: Change-Id: I3984d2619f9f77269ed24e8cbfa9f1429ebca4a8 Reviewed-on: https://skia-review.googlesource.com/31940 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Yuqian Li <liyuqian@google.com>
* New analytic AA scan converter using delta (I call it DAA for now)Gravatar Yuqian Li2017-07-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | DAA is: 1. Much simpler than AAA. SkScan_AAAPath.cpp is about 1700 lines. SkScan_DAAPath.cpp is about 300 lines. The whole DAA CL is only about 800 lines. 2. Much faster than AAA for complicated paths. The speedup applies to GL backend (including ccpr)! Here's the frame time of 'SampleApp --slide Chart' on macbook pro: AAA-raster: 33ms DAA-raster: 21ms AAA-gl: 30ms DAA-gl: 20ms AAA-ccpr: 18ms DAA-ccpr: 12ms My linux desktop doesn't have SSE3 so the speedup is smaller (~25% for Chart). I believe that DAA is so fast that I can enable it for any paths (AAA is not enabled by default for complicated paths because it is slow; hence our older supersampling scan converter is used for stroking on Chart for AAA-xxx config.) 3. The SkCoverageDelta is suitable for threaded backend with out-of-order concurrent scan conversion as commented in the source code. Maybe we can also just send deltas to GPU. 4. Similar to most analytic path renderers, the quality is on the best ground-truth level, unless there are intersections within a pixel. The intersections look good to my eyes although theoretically that could be arbitrary far from the ground truth (see my AAA slides). 5. For simple paths, such as circle, triangle, rrect, etc., DAA is slower than AAA. But DAA is faster than our older supersampling scan converter in most cases. As those simple paths usually don't constitute the bottleneck of a picture (skp or svg), I strongly recommend use DAA. 6. DAA also heavily favors blitMask so it may work quite well with SkRasterPipeline and SkRasterPipelineBlitter. Finally, please check https://skia-review.googlesource.com/c/22420/ which accelerate DAA by specializing blitCoverageDeltas for SkARGB32_Blitter and SkARGB32_Black_Blitter. It brings a little(<5%) speedup. But I couldn't figure out how to reduce the duplicate code so I don't intend to land it. Bug: skia: Change-Id: I3b7ed6a727447922e645b1acb737a506e7c09a4c Reviewed-on: https://skia-review.googlesource.com/19666 Reviewed-by: Mike Reed <reed@google.com> Reviewed-by: Cary Clark <caryclark@google.com> Commit-Queue: Yuqian Li <liyuqian@google.com>
* Make update_edge as a member function of SkAnalyticEdgeGravatar Yuqian Li2017-07-21
| | | | | | | | | | | This is to prepare for future SkScan_DAAPath.cpp to use this member function (https://skia-review.googlesource.com/c/19666/). Bug: skia: Change-Id: I5fb90ac67b80f8a69a712e7e697d68dcadba5d14 Reviewed-on: https://skia-review.googlesource.com/24180 Reviewed-by: Cary Clark <caryclark@google.com> Commit-Queue: Yuqian Li <liyuqian@google.com>
* Revert "Inject a dsb into SkAnalyticEdge::setLine() to work around ARMv7 CPU ↵Gravatar Mike Klein2017-07-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | erratum." This reverts commit 101806f4526d0ba5d48515c82a28dbf6956aca4d. Reason for revert: no more need. BUG=chromium:740805 Original change's description: > Inject a dsb into SkAnalyticEdge::setLine() to work around ARMv7 CPU erratum. > > BUG=chromium:710131 > > Change-Id: I4568bc24cc8fabb6f9df3b7645b01a98e11791b8 > Reviewed-on: https://skia-review.googlesource.com/14062 > Reviewed-by: Doug Anderson <dianders@google.com> > Commit-Queue: Mike Klein <mtklein@chromium.org> TBR=mtklein@chromium.org,dianders@google.com # Not skipping CQ checks because original CL landed > 1 day ago. Bug: chromium:710131 Change-Id: Ib5b58a951ae56e0f0523cfed27754e0cd150e6ce Reviewed-on: https://skia-review.googlesource.com/23840 Reviewed-by: Mike Klein <mtklein@google.com> Commit-Queue: Mike Klein <mtklein@google.com>
* Inject a dsb into SkAnalyticEdge::setLine() to work around ARMv7 CPU erratum.Gravatar Mike Klein2017-04-25
| | | | | | | | | BUG=chromium:710131 Change-Id: I4568bc24cc8fabb6f9df3b7645b01a98e11791b8 Reviewed-on: https://skia-review.googlesource.com/14062 Reviewed-by: Doug Anderson <dianders@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
* Remove SK_SUPPORT_LEGACY_AAA flag as chromium now turns it offGravatar Yuqian Li2017-03-08
| | | | | | | | | BUG=skia: Change-Id: I3b385b8aeab08f402f4471637bf641cd456c8c56 Reviewed-on: https://skia-review.googlesource.com/9327 Reviewed-by: Cary Clark <caryclark@google.com> Commit-Queue: Yuqian Li <liyuqian@google.com>
* Fix performance issue and compute intersections more often.Gravatar Yuqian Li2017-01-23
| | | | | | | | | | | | | | | | | | | | | | | | | | (This CL also turned on Analytic AA for concave paths by removing SK_SUPPORT_LEGACY_AAA flag.) Performance: The SK_ALWAYS_INLINE was restored because it could bring 30%-50% speedup in certain convex cases (e.g., fill_big_triangle). We also have to reduce the number of branchings in the concave code path to enable such speedup. (Although the speedup is for convex cases. The assembly code is so strange...) Intersection: Previously, the criterion is too loose and that caused some bad pixels (mostly unnoticeable by human eyes without magnifying). For example, pixel (198, 222) of https://gold.skia.org/detail?test=parsedpaths&digest=979e81de6f7b3f9e7e8dc810e31cad8d BUG=skia: Change-Id: I5e8191865c3df625f895cd4588c67c283fcbeaec Reviewed-on: https://skia-review.googlesource.com/7318 Reviewed-by: Cary Clark <caryclark@google.com> Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Yuqian Li <liyuqian@google.com>
* Reject horizontal edges in FDot6 precisionGravatar Yuqian Li2017-01-18
| | | | | | | | | | | | This simplifies the slope computation because we don't have to check dy != 0. BUG=skia: Change-Id: I5c09a9217ceed65f81f9d82cb045e33a70218077 Reviewed-on: https://skia-review.googlesource.com/7180 Commit-Queue: Yuqian Li <liyuqian@google.com> Reviewed-by: Cary Clark <caryclark@google.com>
* Revert concave AAAGravatar Yuqian Li2017-01-18
| | | | | | | | | | BUG=skia:6131 TBR=reed@google.com,caryclark@google.com Change-Id: Ib580a4fb9023f43518a3d89cd70bf2589ad02bb6 Reviewed-on: https://skia-review.googlesource.com/7200 Commit-Queue: Yuqian Li <liyuqian@google.com> Reviewed-by: Yuqian Li <liyuqian@google.com>
* Turn on concave analytic AAGravatar Yuqian Li2017-01-18
| | | | | | | | | | | | | | | | | | This will allow Skia trybots to exercise analytic AA. But there's still a guard flag in Chromium that prevents layout tests failure. Additionally, we 1. fixed nagative shift problem 2. relax the ASSERT when slope is too large: If slope is large, the accuracy of the slope is limited due to conversion to SkFDot6 and division. Hence we have to relax the constraint. 3. handle the special case where dx != 0 while slope == 0 because of very large dy and limited precision. BUG=skia: Change-Id: Ice70164f3f396f0db3896bedc7b96fbd613078dc Reviewed-on: https://skia-review.googlesource.com/7120 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Yuqian Li <liyuqian@google.com>
* Revert "Exercise concave analytic AA"Gravatar Mike Reed2017-01-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 480a1c6a1643ccbe959fa849fb91df6d86d51ec3. Reason for revert: <INSERT REASONING HERE> 2.32m done 8888 skp http___www_yespornplease_com.skp 2.32m start 8888 skp http___www_freepostcodelottery_com.skp 2.32m done 8888 skp http___www_pingwest_com.skp 2.32m start 8888 skp http___www_fbdown_net.skp ../../../../../work/skia/src/core/SkAnalyticEdge.cpp:116: fatal error: "assert(slope == SK_MaxS32 || SkAbs32(fSnappedX + SkFixedMul(slope, newSnappedY - fSnappedY) - newSnappedX) < SK_FixedHalf)" ../../../src/core/SkScan_AAAPath.cpp:746:61: runtime error: left shift of negative value -1 #0 0x30c120a in blit_aaa_trapezoid_row(AdditiveBlitter*, int, int, int, int, int, int, int, unsigned char, unsigned char*, bool, bool, bool) (/b/swarm_slave/w/irNiQodn/out/Debug/dm+0x30c120a) #1 0x30bc557 in aaa_walk_edges(SkAnalyticEdge*, SkAnalyticEdge*, SkPath::FillType, AdditiveBlitter*, int, int, int, int, bool, bool, bool, bool) (/b/swarm_slave/w/irNiQodn/out/Debug/dm+0x30bc557) #2 0x30aed31 in aaa_fill_path(SkPath const&, SkIRect const&, AdditiveBlitter*, int, int, bool, bool, bool) (/b/swarm_slave/w/irNiQodn/out/Debug/dm+0x30aed31) #3 0x30addc5 in SkScan::AAAFillPath(SkPath const&, SkRegion const&, SkBlitter*, bool) (/b/swarm_slave/w/irNiQodn/out/Debug/dm+0x30addc5) #4 0x30af56d in SkScan::AAAFillPath(SkPath const&, SkRasterClip const&, SkBlitter*) (/b/swarm_slave/w/irNiQodn/out/Debug/dm+0x30af56d) #5 0x30dc96b in SkScan::AntiFillPath(SkPath const&, SkRasterClip const&, SkBlitter*) (/b/swarm_slave/w/irNiQodn/out/Debug/dm+0x30dc96b) Original change's description: > Exercise concave analytic AA > > This will allow Skia trybots (e.g., 1M skp) to exercise analytic AA. > There's still a guard flag in Chromium that prevents layout tests failure. > > TBR=reed@google.com,caryclark@google.com > > BUG=skia: > > Change-Id: Ie893c10d34bf969e013ef047c1bbf4b004d584cc > Reviewed-on: https://skia-review.googlesource.com/7091 > Reviewed-by: Yuqian Li <liyuqian@google.com> > Commit-Queue: Yuqian Li <liyuqian@google.com> > TBR=caryclark@google.com,liyuqian@google.com,reed@google.com,reviews@skia.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Change-Id: I9b621f2d0cd143b37a2570a10471d2ad8cb149fd Reviewed-on: https://skia-review.googlesource.com/7092 Commit-Queue: Mike Reed <reed@google.com> Reviewed-by: Mike Reed <reed@google.com>
* Exercise concave analytic AAGravatar Yuqian Li2017-01-14
| | | | | | | | | | | | | | This will allow Skia trybots (e.g., 1M skp) to exercise analytic AA. There's still a guard flag in Chromium that prevents layout tests failure. TBR=reed@google.com,caryclark@google.com BUG=skia: Change-Id: Ie893c10d34bf969e013ef047c1bbf4b004d584cc Reviewed-on: https://skia-review.googlesource.com/7091 Reviewed-by: Yuqian Li <liyuqian@google.com> Commit-Queue: Yuqian Li <liyuqian@google.com>
* Reland https://skia-review.googlesource.com/c/6091/Gravatar Yuqian Li2017-01-13
| | | | | | | | | | | | | | The only difference is that we now also put the guard flag SK_SUPPORT_LEGACY_AAA in SkUserConfig.h. Previously, SkAnalyticEdge.cpp doesn't get that flag from SkScan.h and that caused many problems. BUG=skia: TBR=reed@google.com,caryclark@google.com Change-Id: I134bb76cebd6fffa712f438076668765321bba3b Reviewed-on: https://skia-review.googlesource.com/6992 Reviewed-by: Yuqian Li <liyuqian@google.com> Commit-Queue: Yuqian Li <liyuqian@google.com>
* Revert "Reland https://skia-review.googlesource.com/c/6091/"Gravatar Yuqian Li2017-01-13
| | | | | | | | | | | This reverts commit b46fff60bc82fe6f0c64b2241d854a121f7cb5f9. Reason for revert: possible chromium cc unit tests failure Change-Id: Ie174c55e4d0fc3ae45854b5897ba26b7ad5a9c13 Reviewed-on: https://skia-review.googlesource.com/6981 Commit-Queue: Yuqian Li <liyuqian@google.com> Reviewed-by: Yuqian Li <liyuqian@google.com>
* Reland https://skia-review.googlesource.com/c/6091/Gravatar Yuqian Li2017-01-12
| | | | | | | | | | | | | | The only difference is that we now put the guard flag SK_SUPPORT_LEGACY_AAA in SkUserConfig.h instead of SkScan.h. Previously, SkAnalyticEdge.cpp doesn't get that flag from SkScan.h and that caused many problems. BUG=skia: TBR=reed@google.com,caryclark@google.com Change-Id: I7b89d3cb64ad71715101d2a5e8e77be3a8a6fa16 Reviewed-on: https://skia-review.googlesource.com/6972 Reviewed-by: Yuqian Li <liyuqian@google.com> Commit-Queue: Yuqian Li <liyuqian@google.com>
* Revert "Implement Analytic AA for General Paths (with Guard against Chrome)"Gravatar Yuqian Li2017-01-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 89a0e72287e991cfa2f860f92fad545ca59defe1. Reason for revert: <INSERT REASONING HERE> Original change's description: > Implement Analytic AA for General Paths (with Guard against Chrome) > > I've set up a SK_SUPPORT_LEGACY_AAA flag to guard against Chromium layout tests. I also set that flag in this CL so theoretically this CL won't trigger any GM changes. I'll use this to verify my guard, and remove that flag and actually enables concave AAA in a future CL. > > When enabled, for most simple concave paths (e.g., rectangle stroke, rrect stroke, sawtooth, stars...), the Analytic AA achieves 1.3x-2x speedup, and they look much prettier. And they probably are the majority in our use cases by number. But they probably are not the majority by time cost; a single complicated path may cost 10x-100x more time to render than a rectangle stroke... For those complicated paths, we fall back to supersampling by default as we're likely to be 1.1-1.2x slower and the quality improvement is not visually significant. However, one can use gSkForceAnalyticAA to disable that fallback. > > BUG=skia: > > Change-Id: If9549a3acc4a187cfaf7eb51890c148da3083d31 > Reviewed-on: https://skia-review.googlesource.com/6091 > Reviewed-by: Mike Reed <reed@google.com> > Commit-Queue: Yuqian Li <liyuqian@google.com> > TBR=caryclark@google.com,liyuqian@google.com,reed@google.com BUG=skia: NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Change-Id: I13c05aaa1bcb14956bd0fe01bb404e41be75af22 Reviewed-on: https://skia-review.googlesource.com/6961 Commit-Queue: Yuqian Li <liyuqian@google.com> Reviewed-by: Yuqian Li <liyuqian@google.com>
* Implement Analytic AA for General Paths (with Guard against Chrome)Gravatar Yuqian Li2017-01-12
| | | | | | | | | | | | | I've set up a SK_SUPPORT_LEGACY_AAA flag to guard against Chromium layout tests. I also set that flag in this CL so theoretically this CL won't trigger any GM changes. I'll use this to verify my guard, and remove that flag and actually enables concave AAA in a future CL. When enabled, for most simple concave paths (e.g., rectangle stroke, rrect stroke, sawtooth, stars...), the Analytic AA achieves 1.3x-2x speedup, and they look much prettier. And they probably are the majority in our use cases by number. But they probably are not the majority by time cost; a single complicated path may cost 10x-100x more time to render than a rectangle stroke... For those complicated paths, we fall back to supersampling by default as we're likely to be 1.1-1.2x slower and the quality improvement is not visually significant. However, one can use gSkForceAnalyticAA to disable that fallback. BUG=skia: Change-Id: If9549a3acc4a187cfaf7eb51890c148da3083d31 Reviewed-on: https://skia-review.googlesource.com/6091 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Yuqian Li <liyuqian@google.com>
* Use SkFixedMul instead of SkFixedMul_lowprecGravatar Yuqian Li2016-11-17
| | | | | | | | | | | | | | | | | | | It seems that SkFixedMul_lowprec doesn't have too much performance gain (maybe 1%). But its precision loss is siginificant. No serious issues have been found in convex cases, but things get much trickier for concave shapes. I'm removing it now to improve the stability and reliability of our algorithm, which may potentially benefit our Chrome landing. (Even if we do not remove SkFixedMul_lowprec now, we eventually will remove it when we land concave AAA code.) BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4926 Change-Id: Iae5739a3780bb77ce6237888eee51a502fea5cf2 Reviewed-on: https://skia-review.googlesource.com/4926 Reviewed-by: Cary Clark <caryclark@google.com> Commit-Queue: Yuqian Li <liyuqian@google.com>
* Fix mask overflow caused by edge driftGravatar Yuqian Li2016-11-16
| | | | | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4797 Change-Id: Ica1568b67c1e1ce4aae2bdaba2c5b1f2155d1382 Reviewed-on: https://skia-review.googlesource.com/4797 Reviewed-by: Cary Clark <caryclark@google.com>
* Use Analytic AA in SkAAClip.Gravatar liyuqian2016-10-20
| | | | | | | | | | | | | This will fix some Chrome ref tests. The main issue here is that the SkAAClip requires: (1) we blit in order, and (2) we must forceRLE. Note that this still depends on the global gSkUseAnalyticAA to turn on the Analytic AA. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2430343003 Review-Url: https://chromiumcodereview.appspot.com/2430343003
* Resubmit issue 2221103002 to fix the iOS build by declaring the flag inGravatar liyuqian2016-10-04
| | | | | | | | | | | SkCommonFlags.h TBR=reed@google.com,caryclark@google.com BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2393643002 Review-Url: https://codereview.chromium.org/2393643002
* Revert of Analytic AntiAlias for Convex Shapes (patchset #14 id:260001 of ↵Gravatar stephana2016-10-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/2221103002/ ) Reason for revert: Breaks iOS build. Original issue's description: > 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 > > Committed: https://skia.googlesource.com/skia/+/7795822807478143120c33228b68d2ab3918af2c TBR=reed@google.com,caryclark@google.com,liyuqian@google.com # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review-Url: https://codereview.chromium.org/2388213003
* Implement AnalyticAA for convex shapes.Gravatar liyuqian2016-10-04
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