skia2/samplecode
Yuqian Li 89a0e72287 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>
2017-01-12 17:17:32 +00:00
..
ClockFaceView.cpp Revert "Revert "make it illegal to include SkXfermode.h"" 2016-11-23 22:17:17 +00:00
DecodeFile.h Remove SkAutoTDelete. 2016-11-03 19:03:40 +00:00
GMSampleView.cpp add helpers for using SkData with picture serialization 2016-09-15 07:19:35 -07:00
GMSampleView.h C++11 override should now be supported by all of {bots,Chrome,Android,Mozilla} 2015-03-25 18:17:32 -07:00
OverView.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
OverView.h Add a header for OverView.cpp as well. 2012-09-18 01:52:20 +00:00
PerlinPatch.cpp remove xfermode from public api 2016-10-28 20:06:17 +00:00
Sample2PtRadial.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
SampleAAClip.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
SampleAAGeometry.cpp simplify bug 2016-12-08 20:29:37 +00:00
SampleAARectModes.cpp Revert[8] "replace SkXfermode obj with SkBlendMode enum in paints" 2016-10-05 17:33:03 -07:00
SampleAARects.cpp Rein in the use of SkDevice.h 2016-04-20 05:29:51 -07:00
SampleAll.cpp hide emboss from everyone (except android for now) 2016-12-07 19:13:32 +00:00
SampleAndroidShadows.cpp Add shadowrrect geometry processor 2016-11-21 21:44:20 +00:00
SampleAnimatedText.cpp Remove getDevice_just_for_deprecated_compatibility_test() 2016-12-20 14:39:45 +00:00
SampleAnimator.cpp SkFontData to use smart pointers. 2016-09-16 06:24:20 -07:00
SampleAnimBlur.cpp switch maskfilters to sk_sp 2016-04-04 10:02:58 -07:00
SampleApp.cpp Implement Analytic AA for General Paths (with Guard against Chrome) 2017-01-12 17:17:32 +00:00
SampleApp.h Remove SkAutoTDelete. 2016-11-03 19:03:40 +00:00
SampleArc.cpp return pictures as sk_sp 2016-03-18 07:25:55 -07:00
SampleAtlas.cpp remove xfermode from public api 2016-10-28 20:06:17 +00:00
SampleBevel.cpp Viewer builds (for Windows) with GN 2016-10-18 18:53:30 +00:00
SampleBigBlur.cpp switch maskfilters to sk_sp 2016-04-04 10:02:58 -07:00
SampleBigGradient.cpp fix clipping in rasterhandleallocator 2017-01-12 17:05:15 +00:00
SampleBitmapRect.cpp Revert "Revert "make it illegal to include SkXfermode.h"" 2016-11-23 22:17:17 +00:00
SampleBlur.cpp switch maskfilters to sk_sp 2016-04-04 10:02:58 -07:00
SampleCamera.cpp move setshader to sk_sp, re-using SK_SUPPORT_LEGACY_CREATESHADER_PTR 2016-03-25 09:08:00 -07:00
SampleChart.cpp Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
SampleCircle.cpp Factor code to rotate a canvas about a point. 2016-07-12 15:01:19 -07:00
SampleClamp.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
SampleClip.cpp change SkClipOp to a class enum 2016-12-12 15:38:31 +00:00
SampleClipDrawMatch.cpp allow clip calls w/o op param, remove unnecessary kReplace ops 2016-09-21 11:15:07 -07:00
SampleClock.cpp Add samples to Viewer. 2016-06-16 09:52:35 -07:00
SampleCode.cpp Misc batch->op cleanup Part 1 of 2 2016-12-21 16:45:40 +00:00
SampleCode.h Add samples to Viewer. 2016-06-16 09:52:35 -07:00
SampleColorFilter.cpp remove xfermode from public api 2016-10-28 20:06:17 +00:00
SampleComplexClip.cpp change SkClipOp to a class enum 2016-12-12 15:38:31 +00:00
SampleConcavePaths.cpp Revert "Revert "make it illegal to include SkXfermode.h"" 2016-11-23 22:17:17 +00:00
SampleDash.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
SampleDegenerateTwoPtRadials.cpp use Make instead of Create to return a shared shader 2016-03-08 18:50:00 -08:00
SampleDither.cpp Factor code to rotate a canvas about a point. 2016-07-12 15:01:19 -07:00
SampleDitherBitmap.cpp use Make instead of Create to return a shared shader 2016-03-08 18:50:00 -08:00
SampleEffects.cpp hide emboss from everyone (except android for now) 2016-12-07 19:13:32 +00:00
SampleEmboss.cpp Revert "Revert "make it illegal to include SkXfermode.h"" 2016-11-23 22:17:17 +00:00
SampleFatBits.cpp change SkClipOp to a class enum 2016-12-12 15:38:31 +00:00
SampleFillType.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
SampleFilter2.cpp Revert "Revert "make it illegal to include SkXfermode.h"" 2016-11-23 22:17:17 +00:00
SampleFilter.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
SampleFilterFuzz.cpp make SkXfermode.h go away 2016-11-16 15:38:11 +00:00
SampleFilterQuality.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
SampleFontCache.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
SampleFontScalerTest.cpp Factor code to rotate a canvas about a point. 2016-07-12 15:01:19 -07:00
SampleFuzz.cpp Revert "Revert "make it illegal to include SkXfermode.h"" 2016-11-23 22:17:17 +00:00
SampleGradients.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
SampleHairCurves.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
SampleHairline.cpp Revert "Revert "make it illegal to include SkXfermode.h"" 2016-11-23 22:17:17 +00:00
SampleHairModes.cpp Revert[8] "replace SkXfermode obj with SkBlendMode enum in paints" 2016-10-05 17:33:03 -07:00
SampleHT.cpp Factor code to rotate a canvas about a point. 2016-07-12 15:01:19 -07:00
SampleIdentityScale.cpp change SkClipOp to a class enum 2016-12-12 15:38:31 +00:00
SampleLayerMask.cpp Revert[8] "replace SkXfermode obj with SkBlendMode enum in paints" 2016-10-05 17:33:03 -07:00
SampleLayers.cpp change SkClipOp to a class enum 2016-12-12 15:38:31 +00:00
SampleLCD.cpp Rein in the use of SkDevice.h 2016-04-20 05:29:51 -07:00
SampleLighting.cpp chmod -x *.cpp *.h 2016-10-27 16:41:14 +00:00
SampleLines.cpp Revert "Revert "make it illegal to include SkXfermode.h"" 2016-11-23 22:17:17 +00:00
SampleLitAtlas.cpp bench, samples, etc: s/SkAutoTUnref/sk_sp/ 2016-11-07 15:17:32 +00:00
SampleLua.cpp Move off SK_SUPPORT_LEGACY_DATA_FACTORIES. 2016-08-02 14:40:46 -07:00
SampleManyRects.cpp Misc batch->op cleanup Part 1 of 2 2016-12-21 16:45:40 +00:00
SampleMeasure.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
SampleMegaStroke.cpp add new tests 2016-01-30 10:11:21 -08:00
SamplePatch.cpp Revert "Revert "make it illegal to include SkXfermode.h"" 2016-11-23 22:17:17 +00:00
SamplePath.cpp add fatstroke sample 2016-12-15 16:28:57 +00:00
SamplePathClip.cpp Revert "Revert "make it illegal to include SkXfermode.h"" 2016-11-23 22:17:17 +00:00
SamplePathEffects.cpp guard rasterizer and drawlooper setters 2016-03-21 13:25:16 -07:00
SamplePathFill.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
SamplePathFuzz.cpp Revert[2] "Change SkCanvas to *not* inherit from SkRefCnt" 2016-11-13 18:31:13 +00:00
SamplePathOverstroke.cpp Add cubic example and draw original path 2016-06-30 10:04:21 -07:00
SamplePdfFileViewer.cpp Revert "Revert "make it illegal to include SkXfermode.h"" 2016-11-23 22:17:17 +00:00
SamplePictFile.cpp Revert "Revert "make it illegal to include SkXfermode.h"" 2016-11-23 22:17:17 +00:00
SamplePoints.cpp Revert "Revert "make it illegal to include SkXfermode.h"" 2016-11-23 22:17:17 +00:00
SamplePolyToPoly.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
SampleQuadStroker.cpp Revert[8] "replace SkXfermode obj with SkBlendMode enum in paints" 2016-10-05 17:33:03 -07:00
SampleRectanizer.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
SampleRegion.cpp Revert[8] "replace SkXfermode obj with SkBlendMode enum in paints" 2016-10-05 17:33:03 -07:00
SampleRepeatTile.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
SampleShaders.cpp Revert "Revert "make it illegal to include SkXfermode.h"" 2016-11-23 22:17:17 +00:00
SampleShaderText.cpp use Make instead of Create to return a shared shader 2016-03-08 18:50:00 -08:00
SampleShadowing.cpp made point lights linear attenuation; also fixed point light depth bug 2016-09-09 11:58:19 -07:00
SampleShip.cpp remove xfermode from public api 2016-10-28 20:06:17 +00:00
SampleSkLayer.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
SampleSlides.cpp SkImageEncoder: simplify API 2016-11-23 16:40:32 +00:00
SampleStringArt.cpp Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
SampleStrokePath.cpp switch maskfilters to sk_sp 2016-04-04 10:02:58 -07:00
SampleStrokeRect.cpp Rein in the use of SkDevice.h 2016-04-20 05:29:51 -07:00
SampleSubpixelTranslate.cpp Remove uses of SkImageDecoder from samplecode 2016-03-18 15:48:49 -07:00
SampleSVGFile.cpp Move SkOSPath out of include/core. 2016-11-08 20:20:15 +00:00
SampleSVGPong.cpp [SVGDom] Expose intrinsic size info 2016-09-14 12:04:30 -07:00
SampleText.cpp Revert "Revert "make it illegal to include SkXfermode.h"" 2016-11-23 22:17:17 +00:00
SampleTextAlpha.cpp Revert "Revert "make it illegal to include SkXfermode.h"" 2016-11-23 22:17:17 +00:00
SampleTextBox.cpp Revert "Revert "make it illegal to include SkXfermode.h"" 2016-11-23 22:17:17 +00:00
SampleTextOnPath.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
SampleTextureDomain.cpp switch maskfilters to sk_sp 2016-04-04 10:02:58 -07:00
SampleTiling.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
SampleTinyBitmap.cpp use Make instead of Create to return a shared shader 2016-03-08 18:50:00 -08:00
SampleUnpremul.cpp Move SkOSPath out of include/core. 2016-11-08 20:20:15 +00:00
SampleVertices.cpp Revert "Revert "make it illegal to include SkXfermode.h"" 2016-11-23 22:17:17 +00:00
SampleWritePixels.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
SampleXfer.cpp bench, samples, etc: s/SkAutoTUnref/sk_sp/ 2016-11-07 15:17:32 +00:00
SampleXfermodesBlur.cpp Revert "Revert "make it illegal to include SkXfermode.h"" 2016-11-23 22:17:17 +00:00
vertexdump.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00