skia2/tools
Brian Osman 69fd008199 Added SkJSONWriter
This is a stand-alone helper class for writing properly
structured JSON to an SkWStream. It currently solves two
problems (although this CL only uses it in one context):

1) Performance. Writing out JSON this way is about 10x
faster than using JSONCPP. For the large amounts of data
generated by the tracing system, that's a big win.

2) Makes it easy to emit structured JSON from code that's
not fully centralized. We'd like to spit out JSON that
describes a GrContext, GrGpu, GrCaps, etc... Doing that
with simple string manipulation is complex, and spreads
this logic over all those functions. Using JSONCPP adds
yet another (large) third party library dependency (that
we only build into our own tools right now).

This went through several revisions. I originally planned
it as a stateful SkString wrapper, so the user could just
build their JSON as a string. That's O(N^2), though,
because SkString grows by a (small) constant amount. Even
using a better growth strategy still means needing RAM
for all the resulting text, which is usually pointless.
This version has a constant memory cost, so writing huge
amounts of JSON to disk (tracing a long DM run can emit
100's of MBs) doesn't stress resources.

Bug: skia:
Change-Id: Ia716524b246db0f97d332da60d2ce9903069e748
Reviewed-on: https://skia-review.googlesource.com/31204
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
2017-08-09 13:46:24 +00:00
..
bookmaker fix links and missing constructor 2017-08-04 17:25:24 +00:00
copyright Script to automatically update copyright notices in C/C++ source code. 2011-07-28 14:29:58 +00:00
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 Disable Delta AA for MSVC for now 2017-08-03 17:26:27 +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 Chromium lkgr is no longer updated. Use lkcr 2017-08-03 12:41:36 +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 Added SkJSONWriter 2017-08-09 13:46:24 +00:00
viewer Add AAA and DAA toggles to viewer 2017-08-07 15:09:59 +00: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
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 clang on windows support 2017-07-31 18:39:23 +00:00
compare_codereview.py Further tweak compare_codereview.py. 2014-03-25 18:02:17 +00:00
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 Remove internal use of SkTypeface::Style. 2017-07-27 21:30:45 +00: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 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 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
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
gcov_shim add a way to get code coverage 2013-09-13 19:32:43 +00:00
generate_fir_coeff.py Fix metrics on Windows. 2013-07-27 20:37:56 +00:00
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 tools: Remove reference to svndiff. 2014-10-24 17:21:41 -02:00
LsanSuppressions.cpp Build LSAN suppressions into the test binaries. 2016-09-01 07:06:54 -07:00
merge_static_libs.py Build Skia as a static library 2012-10-10 19:45:51 +00:00
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 Whitespace fixes for Python tools 2014-06-25 08:40:58 -07:00
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_engines.cpp factor Engine out of ok core 2017-07-26 21:36:40 +00:00
ok_srcs.cpp simplify gm matrices 2017-08-08 12:43:19 +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 factor Engine out of ok core 2017-07-26 21:36:40 +00:00
ok.h factor Engine out of ok core 2017-07-26 21:36:40 +00:00
OverwriteLine.h ios fixes 2014-07-11 12:14:51 -07:00
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 add reformat-json.py script 2013-07-19 15:45:22 +00:00
Registry.h move SkTRegister.h into tools 2017-01-11 19:53:36 +00:00
Resources.cpp add Make factory to SkMemoryStream (simplify call-sites) 2017-07-26 15:59:49 +00:00
Resources.h have resources return unique_ptr for stream 2017-07-23 18:24:24 +00:00
retrieve_from_googlesource.py Fix submit_try 2014-06-05 07:32:15 -07:00
sanitize_source_files.py Clean up more references to GYP. 2017-02-06 17:55:35 +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 tools: s/SkAutoTUnref/sk_sp/ 2016-11-03 21:00:34 +00:00
sk_tool_utils.cpp add tool_util to compare images 2017-08-08 20:07:32 +00:00
sk_tool_utils.h add tool_util to compare images 2017-08-08 20:07:32 +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 Remove dashing from gpu veto 2014-06-18 07:34:39 -07: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
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 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.blacklist GN: add sanitize arg 2016-09-08 08:39:34 -07:00