aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkEdge.cpp
Commit message (Collapse)AuthorAge
* 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>
* Revert "Revert "Improve quad edges' smoothness in non-AA cases""Gravatar Yuqian Li2017-01-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 1e74cad9b4ed8079433d4e62ab3198d97436f5ec. Reason for revert: the guard flag has now been confirmed to be landed on chromium/src. We should now be able to pass the layout tests. Original change's description: > Revert "Improve quad edges' smoothness in non-AA cases" > > This reverts commit d4ed326d6f3704995b0e91292bf2c87e9d36bb14. > > Reason for revert: reverting temporarily to get us rolling into Chrome again. > > Must be this CL right? > https://storage.googleapis.com/chromium-layout-test-archives/linux_trusty_blink_rel/3364/layout-test-results/results.html > > Original change's description: > > 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> > > > > TBR=caryclark@google.com,liyuqian@google.com,reed@google.com,djsollen@google.com,bungeman@google.com,reviews@skia.org,fmalita@chromium.org > BUG=skia: > NOPRESUBMIT=true > NOTREECHECKS=true > NOTRY=true > > Change-Id: I5bc4596ab506f6f61ac2da91a07cf51d61114f31 > Reviewed-on: https://skia-review.googlesource.com/6829 > Commit-Queue: Mike Klein <mtklein@google.com> > Reviewed-by: Mike Klein <mtklein@google.com> > TBR=djsollen@google.com,mtklein@google.com,bungeman@google.com,reviews@skia.org,caryclark@google.com,fmalita@chromium.org,liyuqian@google.com,reed@google.com BUG=skia: NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Change-Id: I0ec2ea8dc0c6ad0ebdcb48878fb301c32443a09e Reviewed-on: https://skia-review.googlesource.com/6858 Commit-Queue: Yuqian Li <liyuqian@google.com> Reviewed-by: Yuqian Li <liyuqian@google.com>
* Revert "Improve quad edges' smoothness in non-AA cases"Gravatar Mike Klein2017-01-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit d4ed326d6f3704995b0e91292bf2c87e9d36bb14. Reason for revert: reverting temporarily to get us rolling into Chrome again. Must be this CL right? https://storage.googleapis.com/chromium-layout-test-archives/linux_trusty_blink_rel/3364/layout-test-results/results.html Original change's description: > 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> > TBR=caryclark@google.com,liyuqian@google.com,reed@google.com,djsollen@google.com,bungeman@google.com,reviews@skia.org,fmalita@chromium.org BUG=skia: NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Change-Id: I5bc4596ab506f6f61ac2da91a07cf51d61114f31 Reviewed-on: https://skia-review.googlesource.com/6829 Commit-Queue: Mike Klein <mtklein@google.com> Reviewed-by: Mike Klein <mtklein@google.com>
* Improve quad edges' smoothness in non-AA casesGravatar Yuqian Li2017-01-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* 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
* SkLeanWindows.h: #include "Windows.h" fewer placesGravatar halcanary2016-06-07
| | | | | | | | | | | | | | | | | | | | | | | | $ git grep -l '<windows.h>' include src include/private/SkLeanWindows.h $ git grep -l SkLeanWindows.h | grep '\.h$' include/ports/SkTypeface_win.h include/utils/win/SkHRESULT.h include/utils/win/SkTScopedComPtr.h include/views/SkEvent.h src/core/SkMathPriv.h src/ports/SkTypeface_win_dw.h src/utils/SkThreadUtils_win.h src/utils/win/SkWGL.h The same for `#include <intrin.h>` that was found in SkMath.h. Those functions that needed it are moved to SkMathPriv.h. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2041943002 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_chromium_compile_dbg_ng,win_chromium_compile_rel_ng Review-Url: https://codereview.chromium.org/2041943002
* 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
* work around leftshift for negative valuesGravatar reed2016-03-08
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1774963002 Review URL: https://codereview.chromium.org/1774963002
* 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
* remove unused clip parameter to SkEdge::setClipGravatar reed2015-03-19
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/1019183002
* Use proper SkFDot6 instead of intGravatar qiankun.miao2015-03-11
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/960353005
* "NULL !=" = NULLGravatar bsalomon2014-09-05
| | | | | | | | R=reed@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/544233002
* Use even rounding for better results when converting from scalar to fdot6Gravatar george2014-08-29
| | | | | | | | | | | Originally from https://bugzilla.mozilla.org/show_bug.cgi?id=996108, patch by Jeff Muizelaar R=reed@google.com, reed1 BUG=skia: Author: george@mozilla.com Review URL: https://codereview.chromium.org/270263005
* 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
* factor out computation for dy in SkEdge lines, so we can later try a fix.Gravatar reed@google.com2012-10-30
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@6198 2bbb7eff-a529-9590-31e7-b0007b416f81
* Sanitizing source files in Skia_Periodic_House_KeepingGravatar skia.committer@gmail.com2012-09-15
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@5561 2bbb7eff-a529-9590-31e7-b0007b416f81
* fix fragile cubic stepper, where we want to assert that each tesselated segmentGravatar reed@google.com2012-09-14
| | | | | | | | | | | is monotonically going down, but the finite math we use cannot ensure that... so we explicitly pin the y-value after it is calculated. add unittest that exercises the bug/assert that was found on an SVG site git-svn-id: http://skia.googlecode.com/svn/trunk@5544 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
* Even when the pts are restricted to 32K values, we can still overflow computingGravatar reed@google.com2012-08-06
| | | | | | | | | | | a fixed-point coefficient for quadratics. To avoid this, we bias these coefficients, storing 1/2 of their actual value, and then apply the 2x unbias in updateQuadratic(). Fixes http://code.google.com/p/chromium/issues/detail?id=140803 Review URL: https://codereview.appspot.com/6450099 git-svn-id: http://skia.googlecode.com/svn/trunk@4960 2bbb7eff-a529-9590-31e7-b0007b416f81
* Make SkMath.h less visible in public header files.Gravatar tomhudson@google.com2011-09-27
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@2340 2bbb7eff-a529-9590-31e7-b0007b416f81
* Automatic update of all copyright notices to reflect new license terms.Gravatar epoger@google.com2011-07-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I have manually examined all of these diffs and restored a few files that seem to require manual adjustment. The following files still need to be modified manually, in a separate CL: android_sample/SampleApp/AndroidManifest.xml android_sample/SampleApp/res/layout/layout.xml android_sample/SampleApp/res/menu/sample.xml android_sample/SampleApp/res/values/strings.xml android_sample/SampleApp/src/com/skia/sampleapp/SampleApp.java android_sample/SampleApp/src/com/skia/sampleapp/SampleView.java experimental/CiCarbonSampleMain.c experimental/CocoaDebugger/main.m experimental/FileReaderApp/main.m experimental/SimpleCocoaApp/main.m experimental/iOSSampleApp/Shared/SkAlertPrompt.h experimental/iOSSampleApp/Shared/SkAlertPrompt.m experimental/iOSSampleApp/SkiOSSampleApp-Base.xcconfig experimental/iOSSampleApp/SkiOSSampleApp-Debug.xcconfig experimental/iOSSampleApp/SkiOSSampleApp-Release.xcconfig gpu/src/android/GrGLDefaultInterface_android.cpp gyp/common.gypi gyp_skia include/ports/SkHarfBuzzFont.h include/views/SkOSWindow_wxwidgets.h make.bat make.py src/opts/memset.arm.S src/opts/memset16_neon.S src/opts/memset32_neon.S src/opts/opts_check_arm.cpp src/ports/SkDebug_brew.cpp src/ports/SkMemory_brew.cpp src/ports/SkOSFile_brew.cpp src/ports/SkXMLParser_empty.cpp src/utils/ios/SkImageDecoder_iOS.mm src/utils/ios/SkOSFile_iOS.mm src/utils/ios/SkStream_NSData.mm tests/FillPathTest.cpp Review URL: http://codereview.appspot.com/4816058 git-svn-id: http://skia.googlecode.com/svn/trunk@1982 2bbb7eff-a529-9590-31e7-b0007b416f81
* initial checkin for visualstudio build supportGravatar reed@android.com2009-12-16
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@460 2bbb7eff-a529-9590-31e7-b0007b416f81
* fix NaN in path iteratorGravatar reed@android.com2009-07-22
| | | | | | | | fix case where cubic is big/degenerate, and never returns a valid edge git-svn-id: http://skia.googlecode.com/svn/trunk@280 2bbb7eff-a529-9590-31e7-b0007b416f81
* Chop quads exactly on the clip bounds, so we don't spend CPU cycles walking themGravatar reed@android.com2009-02-06
| | | | | | | | | | | | when we're above or below the clip. Still to do: - chop in X to avoid 16.16. overflow in the edgelist - apply the same logic for cubics (tho much harder math) git-svn-id: http://skia.googlecode.com/svn/trunk@88 2bbb7eff-a529-9590-31e7-b0007b416f81
* grab from latest androidGravatar reed@android.com2008-12-17
git-svn-id: http://skia.googlecode.com/svn/trunk@27 2bbb7eff-a529-9590-31e7-b0007b416f81