skia2/tools
caryclark 26ad22ab61 Enabling clip stack flattening exercises path ops.
Iterating through the 903K skps that represent the
imagable 1M top web pages triggers a number of
bugs, some of which are addressed here.

Some web pages trigger intersecting cubic
representations of arc with their conic
counterparts. This exposed a flaw in coincident
detection that caused an infinite loop. The loop
alternatively extended the coincident section and,
determining the that the bounds of the curve pairs
did not overlap, deleted the extension.

Track the number of times the coincident detection
is called, and if it exceeds an empirically found
limit, assume that the curves are coincident and
force it to be so.

The loop count limit can be determined by enabling
DEBUG_T_SECT_LOOP_COUNT and running all tests. The
largest count is reported on completion.

Another class of bugs was caused by concident
detection duplicating nearly identical points that
had been merged earlier. To track these bugs, the
'handle coincidence' code was duplicated as a
const debug variety that reported if one of a
dozen or so irregularities are present; then it is
easier to see when a block of code that fixes one
irregularity regresses another.

Creating the debug const code version exposed some
non-debug code that could be const, and some that
was experimental and could be removed. Set
DEBUG_COINCIDENCE to track coincidence health and
handling.

For running on Chrome, DEBUG_VERIFY checks the
result of pathops against the same operation
using SkRegion to verify that the results are
nearly the same.

When visualizing the pathops work using
tools/pathops_visualizer.htm, set
DEBUG_DUMP_ALIGNMENT to see the curves after
they've been aligned for coincidence.

Other bugs fixed include detecting when a
section of a pair of curves have devolved into
lines and are coincident.

TBR=reed@google.com

Review URL: https://codereview.chromium.org/1394503003
2015-10-16 09:03:38 -07:00
..
chromium Cleanup of SSE optimization files. 2014-04-30 14:58:46 +00:00
copyright Script to automatically update copyright notices in C/C++ source code. 2011-07-28 14:29:58 +00:00
flags Add slice tool 2015-09-18 09:04:43 -07:00
lua Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
skp Use AddStory instead of deprecated AddUserStory 2015-06-30 09:20:17 -07:00
skpdiff Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
timer Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
VisualBench Add NVPR to VisualBench 2015-10-15 09:49:31 -07:00
__init__.py Add bench_pictures config 2012-12-12 20:13:26 +00:00
add_codereview_message.py Whitespace fixes for Python tools 2014-06-25 08:40:58 -07:00
AndroidSkDebugToStdOut.cpp Change how SkDebugf is sent to stdout on Android. 2014-12-10 10:23:06 -08:00
bench_pictures_cfg_helper.py Remove SkTileGrid (except for TileGridInfo). 2015-01-09 06:41:48 -08:00
bench_pictures_main.cpp Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
bench_pictures.cfg Removes Record configs from buildbot bench_pictures runs. 2014-06-18 05:59:55 -07:00
BigPathBench.inc Factor out VisualBench timing code into a helper class 2015-10-05 07:23:30 -07:00
BUILD_simulator.py Add dm target to BUILD and refactor BUILD file. The corresponding google3 BUILD file changes are in google3 cl/105413829. 2015-10-15 08:09:45 -07:00
BUILD.public.expected Add dm target to BUILD and refactor BUILD file. The corresponding google3 BUILD file changes are in google3 cl/105413829. 2015-10-15 08:09:45 -07:00
buildbot_spec.json Buildbot specs for Linux ANGLE bot 2015-09-21 08:20:24 -07:00
buildbot_spec.py Buildbot specs for Linux ANGLE bot 2015-09-21 08:20:24 -07:00
builder_name_schema.json Add builder_spec.py 2015-07-29 07:38:49 -07:00
builder_name_schema.py Add builder_spec.py 2015-07-29 07:38:49 -07:00
chrome_fuzz.cpp Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
compare_codereview.py Further tweak compare_codereview.py. 2014-03-25 18:02:17 +00:00
CopyTilesRenderer.cpp Base SkAutoTUnref on skstd::unique_ptr. 2015-10-01 12:28:49 -07:00
CopyTilesRenderer.h Store context options on caps. 2015-05-22 14:01:46 -07:00
coverage.sh increase coverage of SkPath.cpp, remove unused code 2013-11-14 16:53:22 +00:00
CrashHandler.cpp Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
CrashHandler.h rewrite ambiguous comment 2015-02-10 07:47:31 -08:00
create_skia_google3_client.sh Add files added to Skia HEAD in google3 to the Git repo. 2015-08-17 12:58:10 -07:00
create_test_font.cpp Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
dm_flags.json Fill incomplete images in SkCodec parent class 2015-10-09 11:07:34 -07:00
dm_flags.py Fill incomplete images in SkCodec parent class 2015-10-09 11:07:34 -07:00
doxygen_footer.txt Fix update-doxygen, which fails when skia-autogen is reset 2012-09-26 16:09:43 +00:00
dump_record.cpp Remove include of stdlib.h from SkTypes.h. 2015-08-26 05:15:46 -07:00
DumpRecord.cpp Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
DumpRecord.h Factor out DumpRecord method from dump_record tool for later use 2014-05-15 16:10:37 +00:00
embed_resources.py Add option to embed font data into executable. 2015-03-30 12:53:48 -07:00
filtermain.cpp Make SkGraphics::Term a no-op, stop calling it. 2015-09-09 07:35:42 -07:00
find_bad_images_in_skps.py Make image decoding more fault resistant, less verbose. 2013-10-04 12:46:45 +00:00
find_run_binary.py Create a common utility for finding and running binaries in out/ 2014-02-07 18:41:49 +00:00
fix_pythonpath.py Use new common tools in Python scripts 2014-06-25 11:13:27 -04:00
flatten.cpp SkInstallDiscardablePixelRef is deprecated, enforce that 2015-09-25 06:56:57 -07:00
gcov_shim add a way to get code coverage 2013-09-13 19:32:43 +00:00
gen_bench_expectations_from_codereview.py gen_bench_expectations: use subprocess instead of shell_utils due to buildbot-side name collision 2014-07-02 12:52:34 -07:00
generate_fir_coeff.py Fix metrics on Windows. 2013-07-27 20:37:56 +00:00
generate_includes_cpp.py fix for the msvs gyp generator that produces nonposix path separators 2014-11-25 08:25:29 -08:00
get_skia_lkgr.sh Add files added to Skia HEAD in google3 to the Git repo. 2015-08-17 12:58:10 -07:00
git_clone_to_google3.sh Reland of Fix a few bugs in the google3 sync scripts. (patchset #1 id:1 of https://codereview.chromium.org/1295213002/ ) 2015-08-18 06:25:14 -07:00
git-skia-verify Land http://codereview.appspot.com/6117046/ for Guanqun.Lu@gmail.com 2012-04-24 15:19:23 +00:00
git-sync-deps git-sync-deps: handle recursion and deps_os at the same time 2014-08-26 12:06:47 -07:00
gpuveto.cpp Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
image_expectations.cpp Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
image_expectations.h Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
imgconv.cpp version 0 of imgconv tool 2014-12-17 13:08:17 -08:00
imgslice.cpp Add slice tool 2015-09-18 09:04:43 -07:00
install_dependencies.sh doc: add quickstart to linux and macos 2015-04-28 13:06:54 -07: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 tools: Remove reference to svndiff. 2014-10-24 17:21:41 -02:00
LazyDecodeBitmap.cpp SkInstallDiscardablePixelRef is deprecated, enforce that 2015-09-25 06:56:57 -07:00
LazyDecodeBitmap.h Add the lazy decoder from PictureFlags to SkImageDecoder 2013-07-16 18:21:46 +00:00
llvm_coverage_build llvm_coverage_build: Use CC and CXX variables by default 2015-07-17 07:31:07 -07:00
llvm_coverage_run.py Split llvm_coverage_run into two scripts 2015-07-20 09:43:36 -07:00
llvm_coverage.sh Add scripts for running LLVM coverage 2015-07-06 07:43:58 -07:00
lsan.supp Suppress mystery leak. 2014-09-05 10:36:40 -07:00
merge_static_libs.py Build Skia as a static library 2012-10-10 19:45:51 +00:00
mirror-dev.sh Land Ben's 32-bit symlink script. 2015-02-03 10:43:28 -05:00
misc_utils.py Whitespace fixes for Python tools 2014-06-25 08:40:58 -07:00
nanobench_flags.json Renable image benchmarking 2015-10-15 07:51:28 -07:00
nanobench_flags.py Renable image benchmarking 2015-10-15 07:51:28 -07:00
OverwriteLine.h ios fixes 2014-07-11 12:14:51 -07:00
parse_llvm_coverage.py Coverage: add a trace for not_covered_lines per file 2015-07-22 08:19:25 -07:00
pathops_sorter.htm Enabling clip stack flattening exercises path ops. 2015-10-16 09:03:38 -07:00
pathops_visualizer.htm Enabling clip stack flattening exercises path ops. 2015-10-16 09:03:38 -07:00
picture_utils.cpp Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
picture_utils.h Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
PictureBenchmark.cpp Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
PictureBenchmark.h Update old tools to allow MultiPictureDraw rendering 2014-10-09 04:59:19 -07:00
PictureRenderer.cpp Base SkAutoTUnref on skstd::unique_ptr. 2015-10-01 12:28:49 -07:00
PictureRenderer.h skia: add ability to load command_buffer_gles2 2015-08-27 10:38:39 -07:00
PictureRenderingFlags.cpp skia: add ability to load command_buffer_gles2 2015-08-27 10:38:39 -07:00
PictureRenderingFlags.h Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
PictureResultsWriter.h Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
pinspect.cpp Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
ProcStats.cpp Looks like rssPages * pageSize is overflowing on 32-bit Linux... 2015-04-30 07:35:28 -07:00
ProcStats.h DM+nanobench: print both current and max RSS. 2015-04-30 07:11:22 -07:00
reformat-json.py add reformat-json.py script 2013-07-19 15:45:22 +00:00
render_pdfs_main.cpp Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
render_pictures_main.cpp Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
Resources.cpp formalize generate->bitmap 2015-09-13 11:03:32 -07:00
Resources.h GMs: change some GMs to use SkImage over SkBitmap 2015-08-21 07:47:23 -07:00
retrieve_from_googlesource.py Fix submit_try 2014-06-05 07:32:15 -07:00
sanitize_source_files.py Ignore the .git directory in sanitize_source_files, remove .git directory... 2013-09-11 13:01:27 +00:00
sk_tool_utils_flags.h Add standard fonts to all GMs. 2014-07-31 08:58:44 -04:00
sk_tool_utils_font.cpp Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
sk_tool_utils.cpp Factor out VisualBench timing code into a helper class 2015-10-05 07:23:30 -07:00
sk_tool_utils.h Factor out VisualBench timing code into a helper class 2015-10-05 07:23:30 -07:00
SkBitmapRegionCanvas.cpp SkBitmapRegionCanvas bug fix 2015-10-12 13:33:18 -07:00
SkBitmapRegionCanvas.h SkBitmapRegionDecoder clean-up 2015-10-12 10:24:38 -07:00
SkBitmapRegionDecoderInterface.cpp SkBitmapRegionDecoder clean-up 2015-10-12 10:24:38 -07:00
SkBitmapRegionDecoderInterface.h SkBitmapRegionDecoder clean-up 2015-10-12 10:24:38 -07:00
SkBitmapRegionSampler.cpp SkBitmapRegionDecoder clean-up 2015-10-12 10:24:38 -07:00
SkBitmapRegionSampler.h SkBitmapRegionDecoder clean-up 2015-10-12 10:24:38 -07:00
SkCodecTools.h Add nanobench tests for BitmapRegionDecoder 2015-09-22 11:56:16 -07:00
skdiff_html.cpp fix warnings 2013-01-07 22:26:05 +00:00
skdiff_html.h Add newline at end of tools/skdiff_html.h to happify the housekeeping bot 2012-12-05 20:30:00 +00:00
skdiff_image.cpp Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
skdiff_main.cpp Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
skdiff_utils.cpp Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
skdiff_utils.h Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
skdiff.cpp * Extended skdiff to report alpha channel differences. 2013-01-03 19:23:22 +00:00
skdiff.h Fix usage of SK_BUILD_* defines. 2014-10-06 10:46:51 -07:00
skhello.cpp Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
skpinfo.cpp Bump min picture version. 2014-12-01 06:56:38 -08:00
skpmaker.cpp Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
Stats.h Add samplingTime mode to nanobench 2015-06-25 19:17:08 -07:00
sync_google3.sh Reland of Fix a few bugs in the google3 sync scripts. (patchset #1 id:1 of https://codereview.chromium.org/1295213002/ ) 2015-08-18 06:25:14 -07:00
test_all.py skimage, die die die 2014-12-15 12:47:52 -08:00
test_font_data_chars.cpp Add standard fonts to all GMs. 2014-07-31 08:58:44 -04:00
test_font_data.cpp Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
test_font_index.cpp Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
test_font_monospace.cpp PDF expects fonts to map glyph ID 0 to the missing character. 2015-06-11 09:40:44 -07:00
test_font_sans_serif.cpp PDF expects fonts to map glyph ID 0 to the missing character. 2015-06-11 09:40:44 -07:00
test_font_serif.cpp PDF expects fonts to map glyph ID 0 to the missing character. 2015-06-11 09:40:44 -07:00
test_gpuveto.py Remove dashing from gpu veto 2014-06-18 07:34:39 -07:00
test_image_decoder.cpp Runtime configuration setting for suppressing JPEG decoder errors. 2013-10-14 20:08:48 +00:00
test_pdfs.py Add an SKP to PDF rendered. test_pdfs.py will be hooked up in buildbot testing later. 2012-10-10 15:20:34 +00:00
tsan.supp SkPDF: remove suppression 2015-10-02 12:15:55 -07:00
ubsan.supp Add tools/ubsan.supp. 2015-08-05 10:12:33 -04:00
valgrind.supp Fixed valgrind issues with libjpeg-turbo 2015-07-14 14:39:59 -07:00
whitelist_typefaces.cpp Suppress embedding fonts when the skp's fonts match the OS fonts. 2015-08-31 09:22:38 -07:00
win_dbghelp.cpp Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
win_dbghelp.h Collect minidump and print callstack if an app chrashes. 2013-03-08 18:00:16 +00:00
win_lcid.cpp Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
xsan_build simplify tools/xsan_build now that make runs ninja 2014-04-24 18:16:13 +00:00