skia2/tools
Yuqian Li df60e369a8 New analytic AA scan converter using delta (I call it DAA for now)
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>
2017-07-25 21:55:19 +00:00
..
copyright
debugger guard references to SkColorTable 2017-07-18 15:50:43 +00:00
fiddle Add Make[backend] calls for creating GrContexts 2017-07-25 14:33:03 +00:00
flags New analytic AA scan converter using delta (I call it DAA for now) 2017-07-25 21:55:19 +00:00
gpu Add Make[backend] calls for creating GrContexts 2017-07-25 14:33:03 +00:00
lua Make iOS main() functions normal. 2017-02-06 18:02:41 +00:00
skdiff use unique_ptr for codec factories 2017-07-25 15:35:23 +00:00
skiaserve deprecate odd variants of SkCanvas::readPixels 2017-04-17 15:22:42 +00:00
skp Do not move over webpage archives, they are needed for capturing SKPs 2017-07-18 17:29:14 +00:00
skpbench Update gpu caps for valid sample counts. 2017-07-19 19:13:25 +00:00
svg Fix Seal_of_Mississippi URL and update version of SVG asset. 2016-09-16 08:26:35 -07:00
timer SkTime::GetNSecs() 2015-10-23 07:02:06 -07:00
trace ok, basic tracing support 2017-07-24 19:22:05 +00:00
viewer Add Make[backend] calls for creating GrContexts 2017-07-25 14:33:03 +00:00
__init__.py
add_codereview_message.py
AndroidSkDebugToStdOut.cpp Change how SkDebugf is sent to stdout on Android. 2014-12-10 10:23:06 -08:00
BigPathBench.inc Factor out VisualBench timing code into a helper class 2015-10-05 07:23:30 -07:00
build_command_buffer.py Improvements to build_command_buffer.py 2016-11-04 10:54:54 -07:00
BUILD_simulator.py Fix Google3 fonts. Use fontconfig rather than custom_directory_factory. Add Google3 font caching. 2015-12-01 11:12:05 -08:00
check-headers-self-sufficient header cleanup 2017-07-05 15:18:52 +00:00
chrome_fuzz.cpp Fix SkFILEStream. 2017-03-10 19:58:46 +00:00
colorspaceinfo.cpp use unique_ptr for codec factories 2017-07-25 15:35:23 +00:00
compare_codereview.py
CrashHandler.cpp SkLeanWindows.h: #include "Windows.h" fewer places 2016-06-07 17:21:10 -07:00
CrashHandler.h rewrite ambiguous comment 2015-02-10 07:47:31 -08:00
create_flutter_test_images.cpp Add tool to create test images with interesting color profiles 2017-05-17 18:15:20 +00:00
create_test_font.cpp Add strikeout font metrics. 2017-07-21 18:59:05 +00:00
doxygen_footer.txt
dump_record.cpp Revert "Revert "Reland: Remove SkLights include from SkCanvas.h"" 2017-05-03 19:17:11 +00:00
DumpRecord.cpp update deferred 2016-10-05 19:25:35 +00:00
DumpRecord.h
embed_resources.py Add option to embed font data into executable. 2015-03-30 12:53:48 -07:00
find_run_binary.py
fix_pythonpath.py
gcov_shim
generate_fir_coeff.py
generate_vk_interface.sh Add vulkan files into skia repo. This is an incomplete backend with only partial functionality at this time. 2016-02-22 09:56:40 -05:00
get_current_monitor_profile.cpp Monitor profile tool, now with Windows support, too! 2016-07-12 15:06:25 -07:00
get_images_from_skps.cpp use unique_ptr for codec factories 2017-07-25 15:35:23 +00:00
git-sync-deps tools/git-sync-deps: less verbose when fetch is needed 2017-02-13 19:53:27 +00:00
gpuveto.cpp Make iOS main() functions normal. 2017-02-06 18:02:41 +00:00
gyp GN 2016-06-23 10:29:30 -07:00
imgblur.cpp Make iOS main() functions normal. 2017-02-06 18:02:41 +00:00
imgslice.cpp Make iOS main() functions normal. 2017-02-06 18:02:41 +00:00
install_dependencies.sh Add some required packages to tools/install_dependencies.sh 2016-09-02 05:21:40 -07:00
ios_utils.h iOS: cd into Documents folder at startup 2017-02-06 15:06:45 +00:00
ios_utils.m iOS: cd into Documents folder at startup 2017-02-06 15:06:45 +00:00
iOSShell.cpp Make SkGraphics::Term a no-op, stop calling it. 2015-09-09 07:35:42 -07:00
iOSShell.h C++11 override should now be supported by all of {bots,Chrome,Android,Mozilla} 2015-03-25 18:17:32 -07:00
jsondiff.py
LsanSuppressions.cpp Build LSAN suppressions into the test binaries. 2016-09-01 07:06:54 -07:00
merge_static_libs.py
milestone.py SkPDF: milestone in metadata, also SkMilestone.h 2016-03-29 09:09:29 -07:00
mirror-dev.sh Land Ben's 32-bit symlink script. 2015-02-03 10:43:28 -05:00
misc_utils.py
monobench.cpp Add sRGB support to monobench. 2017-05-15 20:24:26 +00:00
ok_dsts.cpp ok: add 8888 and rp dsts 2017-06-13 14:25:41 +00:00
ok_srcs.cpp Revert "Revert "Reland: Remove SkLights include from SkCanvas.h"" 2017-05-03 19:17:11 +00:00
ok_test.cpp sprinkle more tracing in GM, tests, and ok, and add TRACE_FUNC 2017-07-24 20:02:07 +00:00
ok_vias.cpp sprinkle more tracing in GM, tests, and ok, and add TRACE_FUNC 2017-07-24 20:02:07 +00:00
ok.cpp Revert "Revert "Reland: Remove SkLights include from SkCanvas.h"" 2017-05-03 19:17:11 +00:00
ok.h ok, most features can be vias 2017-03-31 03:03:18 +00:00
OverwriteLine.h
parse_llvm_coverage.py Walk through files in parse_llvm_coverage.py instead of using 'git ls-files' 2016-04-18 04:18:56 -07:00
pathops_sorter.htm add nonsquare scale to pathops sorter tool 2017-06-02 19:30:07 +00:00
pathops_visualizer.htm keep integral rectangle intersections integral 2017-04-18 16:40:48 +00:00
picture_utils.cpp convert over to 2d-mode 2017-07-20 19:50:32 +00:00
picture_utils.h Move DM png code to picture_utils, for use by other tools. 2016-04-19 09:18:11 -07:00
pinspect.cpp Make iOS main() functions normal. 2017-02-06 18:02:41 +00:00
ProcStats.cpp Fix getMaxResidentSetSizeMB() on iOS. 2017-02-06 17:06:11 +00:00
ProcStats.h DM+nanobench: print both current and max RSS. 2015-04-30 07:11:22 -07:00
public_headers_warnings_check.cpp GN: add public headers warnings check. 2016-11-16 19:27:29 +00:00
random_parse_path.cpp Add unit test to feed valid SVG sequences to make sure that 2016-02-09 10:30:22 -08:00
random_parse_path.h Add unit test to feed valid SVG sequences to make sure that 2016-02-09 10:30:22 -08:00
reformat-json.py
Registry.h move SkTRegister.h into tools 2017-01-11 19:53:36 +00:00
Resources.cpp have resources return unique_ptr for stream 2017-07-23 18:24:24 +00:00
Resources.h have resources return unique_ptr for stream 2017-07-23 18:24:24 +00:00
retrieve_from_googlesource.py
sanitize_source_files.py Clean up more references to GYP. 2017-02-06 17:55:35 +00:00
sk_tool_utils_flags.h
sk_tool_utils_font.cpp tools: s/SkAutoTUnref/sk_sp/ 2016-11-03 21:00:34 +00:00
sk_tool_utils.cpp remove references to kIndex_8_SkColorType from our tools/tests 2017-07-12 20:25:44 +00:00
sk_tool_utils.h add srgb gamma colorfilters 2017-07-05 20:16:27 +00:00
skhello.cpp Make iOS main() functions normal. 2017-02-06 18:02:41 +00:00
SkJSONCPP.h Move SkJSONCPP.h to tools. It tool-only. 2016-07-26 12:41:27 -07:00
skp_parser.cpp Revert[2] "Change SkCanvas to *not* inherit from SkRefCnt" 2016-11-13 18:31:13 +00:00
skpinfo.cpp Make iOS main() functions normal. 2017-02-06 18:02:41 +00:00
skpmaker.cpp Make iOS main() functions normal. 2017-02-06 18:02:41 +00:00
SkShaper_harfbuzz.cpp SkTypes.h : move SkAutoMalloc into SkAutoMalloc.h 2017-01-11 18:55:34 +00:00
SkShaper_primitive.cpp SkPDF: SkShaper_primitive uses new textblob API 2016-09-10 07:01:53 -07:00
SkShaper.h SkShaper: optionally disable harfbuzz 2016-08-03 10:43:55 -07:00
Stats.h Consolidate SK_CRASH and sk_throw into SK_ABORT 2016-01-29 08:51:04 -08:00
test_all.py skimage, die die die 2014-12-15 12:47:52 -08:00
test_font_index.inc Add strikeout font metrics. 2017-07-21 18:59:05 +00:00
test_font_monospace.inc Add strikeout font metrics. 2017-07-21 18:59:05 +00:00
test_font_sans_serif.inc Add strikeout font metrics. 2017-07-21 18:59:05 +00:00
test_font_serif.inc Add strikeout font metrics. 2017-07-21 18:59:05 +00:00
test_gpuveto.py
test_pdfs.py
ThermalManager.cpp Is it just me or is this logging just noise? 2016-09-16 11:50:13 -07:00
ThermalManager.h Move SkTArray to include/private. 2016-02-17 13:13:44 -08:00
UrlDataManager.cpp Create image cache for use by json canvas 2016-02-08 07:08:21 -08:00
UrlDataManager.h Use sse4.2 CRC32 instructions to hash when available. 2016-08-08 09:06:28 -07:00
using_skia_and_harfbuzz.cpp SkTextBlob: Begin implementing Extended TextBlob API 2016-08-30 11:58:33 -07:00
valgrind.supp Valgrind suppressions for new Debian 9 GPU bot 2017-06-30 14:53:38 +00:00
whitelist_typefaces.cpp Make iOS main() functions normal. 2017-02-06 18:02:41 +00:00
win_dbghelp.cpp Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
win_dbghelp.h
win_lcid.cpp Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
xsan.blacklist GN: add sanitize arg 2016-09-08 08:39:34 -07:00