History log of /external/skia/src/core/SkScan_AAAPath.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
ca50b874039e326858e38bc67457369532a9c4dd 12-Jun-2017 Yuqian Li <liyuqian@google.com> Combine duplicate code in preparing clipRgn for fill_path

Bug: skia:
Change-Id: I52ed98491457aa426e2bb74a29131f4a20330017
Reviewed-on: https://skia-review.googlesource.com/19341
Commit-Queue: Yuqian Li <liyuqian@google.com>
Reviewed-by: Cary Clark <caryclark@google.com>
/external/skia/src/core/SkScan_AAAPath.cpp
1c8408847cc626a34fc885b1c6313533d030e192 26-May-2017 Yuqian Li <liyuqian@google.com> Explicitly check edge count >= 2 in non-debug build

We also preserve the check in debug mode that the
count should never be 1 when the path is convex.

Bug: skia:6684
Change-Id: I4d4c9ad9f9d704e94bbe51f10a96f8b3066afaa1
Reviewed-on: https://skia-review.googlesource.com/17983
Commit-Queue: Yuqian Li <liyuqian@google.com>
Reviewed-by: Mike Reed <reed@google.com>
/external/skia/src/core/SkScan_AAAPath.cpp
d3b65972aad96453ff4510caa3e25a2b847c6d1e 22-Mar-2017 Brian Salomon <bsalomon@google.com> Mark overridden destructors with 'override' and remove 'virtual'

This silences a new warning in clang 5.0

Change-Id: Ieb5b75a6ffed60107c3fd16075d2ecfd515b55e8
Reviewed-on: https://skia-review.googlesource.com/10006
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
/external/skia/src/core/SkScan_AAAPath.cpp
a33b43d796f03e2f4b5abd8060272f4f775d7390 17-Mar-2017 Yuqian Li <liyuqian@google.com> Combine some duplicate code in AA using template

BUG=skia:

Change-Id: Id048425e8199167feba0268f89f526bbf5b7242b
Reviewed-on: https://skia-review.googlesource.com/9832
Reviewed-by: Cary Clark <caryclark@google.com>
Commit-Queue: Yuqian Li <liyuqian@google.com>
/external/skia/src/core/SkScan_AAAPath.cpp
8de05ffcb26c757a6169e217ef46105286811dd9 06-Mar-2017 Yuqian Li <liyuqian@google.com> Remove SK_SUPPORT_LEGACY_AAA flag as chromium now turns it off

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>
/external/skia/src/core/SkScan_AAAPath.cpp
6987b00fae08ef0731042bb341b4e002a2da72c2 19-Jan-2017 Yuqian Li <liyuqian@google.com> Fix performance issue and compute intersections more often.

(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>
/external/skia/src/core/SkScan_AAAPath.cpp
98cf99b3ae4cc956158d1fd843fc8a84059ae132 17-Jan-2017 Yuqian Li <liyuqian@google.com> Turn on concave analytic AA

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>
/external/skia/src/core/SkScan_AAAPath.cpp
550148ba572acc75e73d3c7d600ea7fa43db55f2 13-Jan-2017 Yuqian Li <liyuqian@google.com> Reland https://skia-review.googlesource.com/c/6091/

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>
/external/skia/src/core/SkScan_AAAPath.cpp
aeef5610d7a3fe4a53fc27b20486da79bf7a949a 13-Jan-2017 Yuqian Li <liyuqian@google.com> Revert "Reland https://skia-review.googlesource.com/c/6091/"

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>
/external/skia/src/core/SkScan_AAAPath.cpp
b46fff60bc82fe6f0c64b2241d854a121f7cb5f9 12-Jan-2017 Yuqian Li <liyuqian@google.com> Reland https://skia-review.googlesource.com/c/6091/

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>
/external/skia/src/core/SkScan_AAAPath.cpp
90ee03b0d1778f37448dfd82d1f5cfbbec9f798f 12-Jan-2017 Yuqian Li <liyuqian@google.com> Revert "Implement Analytic AA for General Paths (with Guard against Chrome)"

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>
/external/skia/src/core/SkScan_AAAPath.cpp
89a0e72287e991cfa2f860f92fad545ca59defe1 11-Jan-2017 Yuqian Li <liyuqian@google.com> 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>
/external/skia/src/core/SkScan_AAAPath.cpp
95e3c058ef633782f7549e9e1c2727d60dbc8ee5 11-Jan-2017 Hal Canary <halcanary@google.com> SkTypes.h : move SkAutoMalloc into SkAutoMalloc.h

* SkAutoFree moved to SkTemplates.h (now implmented with unique_ptr).

* SkAutoMalloc and SkAutoSMalloc moved to SkAutoMalloc.h

* "SkAutoFree X(sk_malloc_throw(N));" --> "SkAutoMalloc X(N);"

Revert "Revert 'SkTypes.h : move SkAutoMalloc into SkAutoMalloc.h'"
This reverts commit c456b73fef9589bbdc5eb83eaa83e53c357bb3da.

Change-Id: Ie2c1a17c20134b8ceab85a68b3ae3e61c24fbaab
Reviewed-on: https://skia-review.googlesource.com/6886
Reviewed-by: Hal Canary <halcanary@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
/external/skia/src/core/SkScan_AAAPath.cpp
c456b73fef9589bbdc5eb83eaa83e53c357bb3da 11-Jan-2017 Kevin Lubick <kjlubick@google.com> Revert "SkTypes.h : move SkAutoMalloc into SkAutoMalloc.h"

This reverts commit a5494f117086d712855e4b6289c58c92d1549bcf.

Reason for revert: Broke Google3

Original change's description:
> SkTypes.h : move SkAutoMalloc into SkAutoMalloc.h
>
> * SkAutoFree moved to SkTemplates.h (now implmented with unique_ptr).
>
> * SkAutoMalloc and SkAutoSMalloc moved to SkAutoMalloc.h
>
> * "SkAutoFree X(sk_malloc_throw(N));" --> "SkAutoMalloc X(N);"
>
> Change-Id: Idacd86ca09e22bf092422228599ae0d9bedded88
> Reviewed-on: https://skia-review.googlesource.com/4543
> Reviewed-by: Ben Wagner <bungeman@google.com>
> Reviewed-by: Mike Reed <reed@google.com>
> Commit-Queue: Hal Canary <halcanary@google.com>
>

TBR=halcanary@google.com,bungeman@google.com,reed@google.com,reviews@skia.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Change-Id: Ie8bd176121c3ee83c110d66c0d0ac65e09bfc9c5
Reviewed-on: https://skia-review.googlesource.com/6884
Commit-Queue: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
/external/skia/src/core/SkScan_AAAPath.cpp
a5494f117086d712855e4b6289c58c92d1549bcf 10-Jan-2017 Hal Canary <halcanary@google.com> SkTypes.h : move SkAutoMalloc into SkAutoMalloc.h

* SkAutoFree moved to SkTemplates.h (now implmented with unique_ptr).

* SkAutoMalloc and SkAutoSMalloc moved to SkAutoMalloc.h

* "SkAutoFree X(sk_malloc_throw(N));" --> "SkAutoMalloc X(N);"

Change-Id: Idacd86ca09e22bf092422228599ae0d9bedded88
Reviewed-on: https://skia-review.googlesource.com/4543
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
/external/skia/src/core/SkScan_AAAPath.cpp
dba05384e1a21015b7df72d1006ee7054b1906f7 02-Dec-2016 Yuqian Li <liyuqian@google.com> Remove SK_ANALYTIC_AA_GUARD flag

BUG=skia:

Change-Id: I4e10ba7afc76ed41c6c41275f9b6a5dde3a2a4be
Reviewed-on: https://skia-review.googlesource.com/5502
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Yuqian Li <liyuqian@google.com>
/external/skia/src/core/SkScan_AAAPath.cpp
db13a093bec6ac1c06bb7c2ec1bde99c42130280 29-Nov-2016 Yuqian Li <liyuqian@google.com> Use AdditiveBlitter for partial rows

Previously, we forgot to use AdditiveBlitter in two places where partial
rows are blitterred. That causes SkAAClip to complain as in skia:6003.

BUG=skia:6003

Change-Id: I4f4a896072448bdb3f287a2eb61cb64b1256ea78
Reviewed-on: https://skia-review.googlesource.com/5273
Reviewed-by: Cary Clark <caryclark@google.com>
Commit-Queue: Yuqian Li <liyuqian@google.com>
/external/skia/src/core/SkScan_AAAPath.cpp
4eb35bb7d72d0e87f1546e822909929e1eef12bb 17-Nov-2016 Yuqian Li <liyuqian@google.com> Use SkFixedMul instead of SkFixedMul_lowprec

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>
/external/skia/src/core/SkScan_AAAPath.cpp
d930752957aaa26077870ebc7fb1c05307f4c27e 16-Nov-2016 Yuqian Li <liyuqian@google.com> Turn off all SkDebugfs in SkScan_AAAPath.cpp

TBR=mtklein@google.com

BUG=skia:

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

Change-Id: Ia69f2932936e34bc487c9c468bba176de0b2b0df
Reviewed-on: https://skia-review.googlesource.com/4912
Reviewed-by: Yuqian Li <liyuqian@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
/external/skia/src/core/SkScan_AAAPath.cpp
8de17f75982efe643c0f34afa685b99c05a5f9d7 16-Nov-2016 Yuqian Li <liyuqian@google.com> No SkDebugf for approximate intersection

TBR=mtklein@google.com

BUG=skia:

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

Change-Id: I23bc298186f93c1a97a15d00b34f65cd72f964e7
Reviewed-on: https://skia-review.googlesource.com/4911
Reviewed-by: Yuqian Li <liyuqian@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Yuqian Li <liyuqian@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
/external/skia/src/core/SkScan_AAAPath.cpp
20079a94e82fd7345dfb119a8777e5ba482a041c 16-Nov-2016 Yuqian Li <liyuqian@google.com> Fix mask overflow caused by edge drift

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>
/external/skia/src/core/SkScan_AAAPath.cpp
721625b25e3e99d23b7765c75ba0b2ae5a351f7e 16-Nov-2016 Yuqian Li <liyuqian@google.com> Drop forceRLE to simplify aaa_walk_convex_edges

The virtual flush function doesn't seem to affect the performance much.
Maybe there's a 1% drop in performance in nanobench against
fill_big_triangle and fill_big_circle, but that's too small a change for
nanobench to reliabily diffrentiate.

The smooth jump (ignore fractional y if edges don't change their
directions significantly) no longer needs to be guarded against SkAAClip
because our recent CL (https://skia-review.googlesource.com/c/4636/)
make left/rightBound much tighter.

BUG=skia:

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

Change-Id: If323013b810cc1ff5f6dbb868a8981354ee6f9b5
Reviewed-on: https://skia-review.googlesource.com/4899
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Stan Iliev <stani@google.com>
Commit-Queue: Yuqian Li <liyuqian@google.com>
Commit-Queue: Stan Iliev <stani@google.com>
/external/skia/src/core/SkScan_AAAPath.cpp
e4b8b5283f45cff6a490ee73677f75b641c22bd1 16-Nov-2016 Yuqian Li <liyuqian@google.com> Simplify the signature of sk/aaa_fill_path

Previously, the clipRect is either equal to nullptr or clipRgn's bound
(after necessary supersampling shift). Hence we drop one of them to make
the signature simpler.

BUG=skia:

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

Change-Id: Ied8d5313809d6cf90374365b01f2b8d52f2236e2
Reviewed-on: https://skia-review.googlesource.com/4874
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Yuqian Li <liyuqian@google.com>
/external/skia/src/core/SkScan_AAAPath.cpp
06196411cb3e06bd041b7ec12e69d0a7a790d5b7 14-Nov-2016 Yuqian Li <liyuqian@google.com> Catch width overflow in ASAN using int64

This is related with our previous CL:
https://skia-review.googlesource.com/c/4628/

That previous CL fix won't pass the ASAN test (../../../include/core/SkRect.h:72:39: runtime error: signed integer overflow: 1 - -2147483648 cannot be represented in type 'int') so we use int64 in this CL.

BUG=skia:

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

Change-Id: I39f7329c427d49f4be07588f37120722ac9892c2
Reviewed-on: https://skia-review.googlesource.com/4785
Reviewed-by: Mike Reed <reed@google.com>
/external/skia/src/core/SkScan_AAAPath.cpp
bfebe22ed54d1e3a00888292f10ed8b9714135d3 14-Nov-2016 liyuqian <liyuqian@google.com> Set analytic AA as default.

We'll use https://codereview.chromium.org/2471123002/ to keep Chrome from using
analytic AA until we fix all the Chrome tests.

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

Committed: https://skia.googlesource.com/skia/+/dca4f6530013cf43a2557ccb07f5cb4fd916b8e8
Review-Url: https://codereview.chromium.org/2471133002
/external/skia/src/core/SkScan_AAAPath.cpp
06dd5c77a6ca6c484c683f1006a7bb6742f8917e 11-Nov-2016 liyuqian <liyuqian@google.com> Revert of Set analytic AA as default. (patchset #8 id:140001 of https://codereview.chromium.org/2471133002/ )

Reason for revert:
SkASSERT triggered in some perf tests. Roll back.

Original issue's description:
> Set analytic AA as default.
>
> We'll use https://codereview.chromium.org/2471123002/ to keep Chrome from using
> analytic AA until we fix all the Chrome tests.
>
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2471133002
>
> Committed: https://skia.googlesource.com/skia/+/dca4f6530013cf43a2557ccb07f5cb4fd916b8e8

TBR=fmalita@chromium.org,msarett@google.com,mtklein@google.com,reed@google.com,mtklein@chromium.org
# 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/2499723002
/external/skia/src/core/SkScan_AAAPath.cpp
dca4f6530013cf43a2557ccb07f5cb4fd916b8e8 11-Nov-2016 liyuqian <liyuqian@google.com> Set analytic AA as default.

We'll use https://codereview.chromium.org/2471123002/ to keep Chrome from using
analytic AA until we fix all the Chrome tests.

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

Review-Url: https://codereview.chromium.org/2471133002
/external/skia/src/core/SkScan_AAAPath.cpp
041da389dd923689041ba5e45cda34901ba4fe8a 11-Nov-2016 liyuqian <liyuqian@google.com> Tighten SkAAClip Bounds by Path Bounds

This bug chromium:662780 exists after our original fix (https://codereview.chromium.org/2477393002/) because this path (added in unit test) is calling blitAntiRect rather than blitAntiH when the path is drifted across the boundary. (The quadratic edge drifts across the boundary after an update and sets a dX=0 line segment which triggers blitAntiRect.)

Note that I didn't assert for the dLeft = dRite = 0 case because the left/right there won't drift after the SkTMin/SkTMax in line 964/966.

Theoretically we can revert the relaxation in https://codereview.chromium.org/2477393002/ (that's only a relaxation for analytic AA, not supersampled AA). However, consider that the initial landing of analytic AA is so painful, I decide to revert that relaxation only after our successful landing...

BUG=chromium:662780, chromium:662862
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2482193004

Review-Url: https://codereview.chromium.org/2482193004
/external/skia/src/core/SkScan_AAAPath.cpp
c4f66af20e3a58a09554eb3db2bf45c6291fe3a8 11-Nov-2016 Yuqian Li <liyuqian@google.com> Catch width overflow

BUG=chromium:662730

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

Change-Id: Iaf3a30d39fda3166a6f8fc62a30580629418dc88
Reviewed-on: https://skia-review.googlesource.com/4628
Reviewed-by: Cary Clark <caryclark@google.com>
Commit-Queue: Yuqian Li <liyuqian@google.com>
/external/skia/src/core/SkScan_AAAPath.cpp
c78eff97549e8e346394d3e228395ceb8a467b35 09-Nov-2016 liyuqian <liyuqian@google.com> Do not call blitV with 0 height

This is causing SkAAClipBlitter to crash.

BUG=chromium:662952
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2485243002

Review-Url: https://codereview.chromium.org/2485243002
/external/skia/src/core/SkScan_AAAPath.cpp
3ce89dad5bc324dad9c4b77393e16f3bcb7396a7 09-Nov-2016 liyuqian <liyuqian@google.com> Fix the meaning of stop_y

stop_y means that we should stop exactly at stop_y, so the last row should be
[stop_y - 1, stop_y], not [stop_y, stop_y + 1].

Somehow this misunderstanding didn't trigger any issue until Chrome exercises
SkAAClip with some websites (e.g.,
http://www.lemonde.fr/elections-americaines/article/2016/11/07/deux-programmes-deux-visions-de-l-amerique_5026444_829254.html).
When we blitter the extra row [stop_y, stop_y + 1], the SkAAClip will return
nullptr by findRow. Later when that nullptr row is used to findX, the crash
happened.

BUG=chromium:662925, chromium:662776
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2481703004

Review-Url: https://codereview.chromium.org/2481703004
/external/skia/src/core/SkScan_AAAPath.cpp
f6bddfd33daeade5418a2ccb36b7945fac703f40 08-Nov-2016 liyuqian <liyuqian@google.com> Do not call blitAntiRect for empty rect

BUG=chromium:662800
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2490673002

Review-Url: https://codereview.chromium.org/2490673002
/external/skia/src/core/SkScan_AAAPath.cpp
525e13c1d318b067e679d7ca540fc1436c38385b 05-Nov-2016 liyuqian <liyuqian@google.com> Fix the sum of alpha = 254 instead of 255 by rounding

This patch is a subpatch from https://codereview.chromium.org/2471133002/

I created this CL mainly for Florin to land before he rebaseline the Chrome
layout tests. (Landing the whole patch of 2471133002 would be nice but most
people already left for the weekend so I'd rather not take the risk to break
the Skia during the weekend.)

BUG=skia:

TBR=reed@google.com, mtklein@google.com, fmalita@chromium.org
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2483523002

Review-Url: https://codereview.chromium.org/2483523002
/external/skia/src/core/SkScan_AAAPath.cpp
5de9afc8526fe266cee4f32e1cdf652622fa1e3d 31-Oct-2016 liyuqian <liyuqian@google.com> Disable some SkDebugfs for dbg bots debugging

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

Review-Url: https://codereview.chromium.org/2464893002
/external/skia/src/core/SkScan_AAAPath.cpp
a3316adf63ca168c9125df965cfa85bdd7b50a1c 29-Oct-2016 liyuqian <liyuqian@google.com> Prevent overflow by falling back to non-AA

This piece of code is directly copied from our old supersampling AA
code. I didn not preserve this code because it's not triggered by any Skia
tests. However, this will be critical to Chromium's tests as some
websites will generate huge paths!

I'm not so sure whether the long_running_idle_gmail_background_tbmv2 test
failed because of this. But I'm sure that www.nationalgeographic.com from
page_cycler_v2.typical_25 failed because of this.

BUG=chromium:660394

TBR=reed@google.com,caryclark@google.com

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

Review-Url: https://codereview.chromium.org/2461133002
/external/skia/src/core/SkScan_AAAPath.cpp
552889ea44baaa50368fc4aec5c304c83698040f 27-Oct-2016 liyuqian <liyuqian@google.com> Do not skip fractional y for SkAAClip

This should fix the following bugs:
https://bugs.chromium.org/p/chromium/issues/detail?id=659883
https://bugs.chromium.org/p/chromium/issues/detail?id=659972

BUG=chromium:659883,chromium:659972
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2452393002

Review-Url: https://codereview.chromium.org/2452393002
/external/skia/src/core/SkScan_AAAPath.cpp
7a86423c42433ab8a7df2b06bd954b2427217bb9 21-Oct-2016 liyuqian <liyuqian@google.com> Fall back from analytic to sampling earlier

This magically fixes some strange js unit tests in Chrome. Those tests
only fail in virtual/gpu which somehow interacts with my cpu rasterizer?

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

Review-Url: https://chromiumcodereview.appspot.com/2439973004
/external/skia/src/core/SkScan_AAAPath.cpp
6a7287c14ba39784d66bb299a1340c0d7ca7b683 21-Oct-2016 liyuqian <liyuqian@google.com> Another forgotten forceRLE

BUG=skia:
TBR=reed@google.com,caryclark@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2438163003

Review-Url: https://chromiumcodereview.appspot.com/2438163003
/external/skia/src/core/SkScan_AAAPath.cpp
c83ada98e2e60be75ae03e228c4d35eb45357add 20-Oct-2016 liyuqian <liyuqian@google.com> Quickly fix the forgotten forceRLE

BUG=skia:
TBR=reed@google.com,caryclark@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2436593004

Review-Url: https://chromiumcodereview.appspot.com/2436593004
/external/skia/src/core/SkScan_AAAPath.cpp
2add0ffdaab4c33ca6702c81533c88c7b5ca7294 20-Oct-2016 liyuqian <liyuqian@google.com> Use Analytic AA in SkAAClip.

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
/external/skia/src/core/SkScan_AAAPath.cpp
ebcb8aadae70b25d4ac023b4f987a469b6d91f41 11-Oct-2016 liyuqian <liyuqian@google.com> Add AA Analytic Compile Flag (and small fixes)

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

Review-Url: https://codereview.chromium.org/2410303002
/external/skia/src/core/SkScan_AAAPath.cpp
511f2d79bf6ea0ee858a3468d3aa8dcbfca58648 04-Oct-2016 Mike Klein <mtklein@chromium.org> Make global use-analytic-AA bit threadsafe.

I also had to cut it down to just a global atomic bool... as a field in a global singleton accessed through instance(), it's very hard to make threadsafe.

CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Release-TSAN-Trybot

BUG=skia:

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

Change-Id: If80be987906dd521fbe644d1d0d577009f06d0e3
Reviewed-on: https://skia-review.googlesource.com/2937
Reviewed-by: Yuqian Li <liyuqian@google.com>
Commit-Queue: Yuqian Li <liyuqian@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
/external/skia/src/core/SkScan_AAAPath.cpp
38911a7cb53474575e1cd1cb545902b50ee00889 04-Oct-2016 liyuqian <liyuqian@google.com> Resubmit issue 2221103002 to fix the iOS build by declaring the flag in
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
/external/skia/src/core/SkScan_AAAPath.cpp
d36baa7a4a5ae3cc94cc4a45379f55658f80c0a6 04-Oct-2016 stephana <stephana@google.com> Revert of Analytic AntiAlias for Convex Shapes (patchset #14 id:260001 of 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
/external/skia/src/core/SkScan_AAAPath.cpp
7795822807478143120c33228b68d2ab3918af2c 04-Oct-2016 liyuqian <liyuqian@google.com> 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
/external/skia/src/core/SkScan_AAAPath.cpp