aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkScan_AntiPath.cpp
Commit message (Collapse)AuthorAge
* Mark overridden destructors with 'override' and remove 'virtual'Gravatar Brian Salomon2017-03-22
| | | | | | | | | 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>
* 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>
* 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>
* Simplify the signature of sk/aaa_fill_pathGravatar Yuqian Li2016-11-16
| | | | | | | | | | | | | | | 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>
* Make global use-analytic-AA bit threadsafe.Gravatar Mike Klein2016-10-04
| | | | | | | | | | | | | | | | 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>
* 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
* Remove some useless declarationsGravatar sylvestre.ledru2016-09-01
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2270613003 Review-Url: https://codereview.chromium.org/2270613003
* Style bikeshed - remove extraneous whitespaceGravatar halcanary2016-03-29
| | | | | | GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1842753002 Review URL: https://codereview.chromium.org/1842753002
* use left-shift macro to fix/avoid undefined behvarior warningsGravatar reed2016-02-03
| | | | | | | | | motivated by https://codereview.chromium.org/1657333002/ BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1661873003 Review URL: https://codereview.chromium.org/1661873003
* Another undefined shift caught by -fsanitize=shift.Gravatar mtklein2015-12-09
| | | | | | | | | | left was -16 I didn't see any warning about fTop, but seems simplest to fix that too. BUG=skia: Review URL: https://codereview.chromium.org/1505993007
* ubsan shift fixesGravatar caryclark2015-12-09
| | | | | | | | | | | Use an inline function that does a normal shift. When built for the sanitizer, add casts so that the shift is unsigned. Also make a few fixes to do unsigned shifts or avoid the shift altogether; and add an argument spec to some macros. R=reed@google.com,mtklein@google.com BUG=skia:4633 Review URL: https://codereview.chromium.org/1503423003
* Style Change: NULL->nullptrGravatar halcanary2015-08-27
| | | | | | DOCS_PREVIEW= https://skia.org/?cl=1316233002 Review URL: https://codereview.chromium.org/1316233002
* C++11 override should now be supported by all of {bots,Chrome,Android,Mozilla}Gravatar mtklein2015-03-25
| | | | | | | | | NOPRESUBMIT=true BUG=skia: DOCS_PREVIEW= https://skia.org/?cl=1037793002 Review URL: https://codereview.chromium.org/1037793002
* Remove SK_USE_LEGACY_AA_COVERAGE guarded code.Gravatar bungeman2015-02-25
| | | | | | It doesn't appear anyone uses this flag anymore. Review URL: https://codereview.chromium.org/943053004
* Fix up all the easy virtual ... SK_OVERRIDE cases.Gravatar mtklein2015-01-09
| | | | | | | | | | | | This fixes every case where virtual and SK_OVERRIDE were on the same line, which should be the bulk of cases. We'll have to manually clean up the rest over time unless I level up in regexes. for f in (find . -type f); perl -p -i -e 's/virtual (.*)SK_OVERRIDE/\1SK_OVERRIDE/g' $f; end BUG=skia: Review URL: https://codereview.chromium.org/806653007
* It is dangerous to ignore SkRect::intersect's return valueGravatar robertphillips2015-01-07
| | | | | | Committed: https://skia.googlesource.com/skia/+/152f524fd325b7776b01f84afbfe2fa071648a05 Review URL: https://codereview.chromium.org/833943002
* Revert of It is dangerous to ignore SkRect::intersect's return value ↵Gravatar robertphillips2015-01-07
| | | | | | | | | | | | | | | | | | (patchset #6 id:100001 of https://codereview.chromium.org/833943002/) Reason for revert: Still more Chromium clean up to do Original issue's description: > It is dangerous to ignore SkRect::intersect's return value > > Committed: https://skia.googlesource.com/skia/+/152f524fd325b7776b01f84afbfe2fa071648a05 TBR=reed@google.com NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/825983005
* It is dangerous to ignore SkRect::intersect's return valueGravatar robertphillips2015-01-07
| | | | Review URL: https://codereview.chromium.org/833943002
* update dox for bounds in supersamplerGravatar reed2014-10-15
| | | | | | | | BUG=skia: TBR=caryclark@google.com NOTRY=True Review URL: https://codereview.chromium.org/657793003
* interesct path bounds with clip bounds before initializing supersamplerGravatar reed2014-10-15
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/656473004
* Let blitters be notified when they're done being usedGravatar krajcevski2014-07-21
| | | | | | | | R=reed@google.com, robertphillips@google.com Author: krajcevski@google.com Review URL: https://codereview.chromium.org/399593007
* Buffer four scanlines prior to blitting. We will eventually use thisGravatar krajcevski2014-07-16
| | | | | | | | | | | | to blit four scanlines in a row in order to aggressively compress alpha masks as the information comes in. This CL is only to introduce the API and to make sure that nothing breaks in the general case. R=reed@google.com, robertphillips@google.com Author: krajcevski@google.com Review URL: https://codereview.chromium.org/387953005
* remove SK_SCALAR_IS_[FLOAT,FIXED] and assume floatsGravatar reed@google.com2013-12-17
| | | | | | | | | | | | | To keep the CL (slightly) managable, this does not make any changes to existing macros (e.g. SkScalarMul). Just tackling #ifdef constructs this time around. BUG= R=bsalomon@google.com, caryclark@google.com Review URL: https://codereview.chromium.org/117053002 git-svn-id: http://skia.googlecode.com/svn/trunk@12712 2bbb7eff-a529-9590-31e7-b0007b416f81
* Sanitizing source files in Skia_Periodic_House_KeepingGravatar skia.committer@gmail.com2013-01-26
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@7406 2bbb7eff-a529-9590-31e7-b0007b416f81
* Result of running tools/sanitize_source_files.py (which was added in ↵Gravatar rmistry@google.com2012-08-23
| | | | | | | | | https://codereview.appspot.com/6465078/) This CL is part I of IV (I broke down the 1280 files into 4 CLs). Review URL: https://codereview.appspot.com/6485054 git-svn-id: http://skia.googlecode.com/svn/trunk@5262 2bbb7eff-a529-9590-31e7-b0007b416f81
* fix warnings on Mac in src/coreGravatar caryclark@google.com2012-06-06
| | | | | | | | | | | | | | | | | | Fix these class of warnings: - unused functions - unused locals - sign mismatch - missing function prototypes - missing newline at end of file - 64 to 32 bit truncation The changes prefer to link in dead code in the debug build with 'if (false)' than to comment it out, but trivial cases are commented out or sometimes deleted if it appears to be a copy/paste error. Review URL: https://codereview.appspot.com/6301046 git-svn-id: http://skia.googlecode.com/svn/trunk@4182 2bbb7eff-a529-9590-31e7-b0007b416f81
* don't define SK_USE_LEGACY_AA_COVERAGE, so that we can get the more exactGravatar reed@google.com2012-05-09
| | | | | | | | | | | | | coverage values (which also unifies our RLE and MASK supersampler results). Chrome will want to define SK_USE_LEGACY_AA_COVERAGE for now, until it can rebaseline its affected images. A rebaseline of skia gm images will follow. git-svn-id: http://skia.googlecode.com/svn/trunk@3877 2bbb7eff-a529-9590-31e7-b0007b416f81
* invert sense of conditional EXACT_COVERAGE, renaming to LEGACY_AA_COVERAGEGravatar reed@google.com2012-05-09
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@3876 2bbb7eff-a529-9590-31e7-b0007b416f81
* remove obsolete commentsGravatar reed@google.com2012-05-09
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@3875 2bbb7eff-a529-9590-31e7-b0007b416f81
* remove dead conditionalGravatar reed@google.com2012-05-09
| | | | | | Review URL: https://codereview.appspot.com/6197065 git-svn-id: http://skia.googlecode.com/svn/trunk@3873 2bbb7eff-a529-9590-31e7-b0007b416f81
* Reinstate early out from antialiased path rendering if we anticipateGravatar tomhudson@google.com2012-04-12
| | | | | | | | | | | overflow (or if the path is completely clipped out). Fixes http://code.google.com/p/chromium/issues/detail?id=121405 Reviewed at http://codereview.appspot.com/5989070/ git-svn-id: http://skia.googlecode.com/svn/trunk@3658 2bbb7eff-a529-9590-31e7-b0007b416f81
* detect all masks, and don't use masksuperblitter with thoseGravatar reed@google.com2012-03-12
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@3364 2bbb7eff-a529-9590-31e7-b0007b416f81
* handle checking for large bounds correctly when SkScalar is fixedGravatar reed@google.com2012-02-28
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@3274 2bbb7eff-a529-9590-31e7-b0007b416f81
* since SkScalarCeil/Floor do not explicitly detect overflows from float->int,Gravatar reed@google.com2012-02-28
| | | | | | | | | | create special version of roundOut that checks if the result can fit, and if not we abort the draw. 32bits (or 30 for antialiasing) should be enough for anyone... git-svn-id: http://skia.googlecode.com/svn/trunk@3271 2bbb7eff-a529-9590-31e7-b0007b416f81
* Disable check for large bounds in antipathGravatar reed@google.com2012-02-27
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@3267 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fix math in coverage_to_alpha() (renamed coverage_to_partial_alpha()), behindGravatar tomhudson@google.com2012-02-23
| | | | | | | | | | | a #define so that we can stage coping with the huge amount of rebaselining necessary. http://codereview.appspot.com/5696049/ git-svn-id: http://skia.googlecode.com/svn/trunk@3243 2bbb7eff-a529-9590-31e7-b0007b416f81
* always allocate (only) the width of the clip for the AA row, since it willGravatar reed@google.com2012-02-23
| | | | | | | | | | already be clamped to 32K (our impl limit at the moment.) add unittest to confirm this fix git-svn-id: http://skia.googlecode.com/svn/trunk@3242 2bbb7eff-a529-9590-31e7-b0007b416f81
* inject a 32767 bounded cliprect before using SuperSampler blitter, to avoidGravatar reed@google.com2012-01-30
| | | | | | | | | | crash/assert when our run-array is larger than int16_t. Better fix may be to "tile" the drawing, so we never see a clip that's too wide, and perhaps this technique can help us avoid disabling AA for large parths (not sure tho). git-svn-id: http://skia.googlecode.com/svn/trunk@3104 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fix off-by-one error in assertion; improve coverage_to_exact_alpha()Gravatar tomhudson@google.com2012-01-03
| | | | | | | | | | implementation. http://codereview.appspot.com/5504116/ git-svn-id: http://skia.googlecode.com/svn/trunk@2947 2bbb7eff-a529-9590-31e7-b0007b416f81
* Bugfixes to antialiased blitting.Gravatar tomhudson@google.com2011-12-28
| | | | | | | | | More details of blitter contracts in function headers. New precautionary assert in one high-level default blitter. git-svn-id: http://skia.googlecode.com/svn/trunk@2928 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add SkDEBUGFAIL to clean up use of SkASSERT(!"text");Gravatar tomhudson@google.com2011-12-28
| | | | | | | | | | catch a couple of latent SkASSERT("text") bugs. http://codereview.appspot.com/5504090/ git-svn-id: http://skia.googlecode.com/svn/trunk@2926 2bbb7eff-a529-9590-31e7-b0007b416f81
* New 'blitAntiRect' entry point for blitters, specialized in supersamplingGravatar tomhudson@google.com2011-12-27
| | | | | | | | | | | | | | code to avoid quarter-scanline-at-a-time building of large rectangular clips. Speeds up aa_clip_build_path_AA benchmark 2x, aa_clip_build_rect_AA benchmark 10x or more. This is a sufficient performance gain to let Chromium reenable WebKit's soft clipping code. Rolling into Chromium will require ~18 rebaselines. git-svn-id: http://skia.googlecode.com/svn/trunk@2924 2bbb7eff-a529-9590-31e7-b0007b416f81
* add unittest for invariants for empty paths, still need to think aboutGravatar reed@google.com2011-12-21
| | | | | | | | hairlines in those cases git-svn-id: http://skia.googlecode.com/svn/trunk@2919 2bbb7eff-a529-9590-31e7-b0007b416f81
* revert 2783 -- broke debug gmGravatar reed@google.com2011-12-01
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@2784 2bbb7eff-a529-9590-31e7-b0007b416f81