skia2/modules/canvaskit
Bryce Thomas 1fa54044ef rm CanvasKit.HEAPU8.buffer caching (fix UAF bug).
Cached references to the WASM heap buffer are invalid following memory growth:
https://github.com/emscripten-core/emscripten/issues/6747#issuecomment-400081465.
This change replaces references to the cached CanvasKit.buffer with direct
references to CanvasKit.HEAPU8.buffer.  The symptom of this bug is a Javascript
error thrown in the Chrome console: "Uncaught TypeError: Cannot perform
Construct on a neutered ArrayBuffer", causing the operation in question to fail.

Bug: NONE
Change-Id: I27462e80db1d33e0e77ee7295b25039c9036d2e2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264477
Reviewed-by: Kevin Lubick <kjlubick@google.com>
2020-01-15 14:48:36 +00:00
..
canvaskit Add support for reading .skp files in CanvasKit. 2020-01-15 14:46:37 +00:00
fonts [canvaskit] Clean up embedded fonts 2019-10-09 14:51:39 +00:00
htmlcanvas [canvaskit] Add various ImageFilters 2019-10-29 14:48:33 +00:00
perf [canvaskit] Roll chrome version for testing 2019-10-18 17:37:52 +00:00
tests Add support for reading .skp files in CanvasKit. 2020-01-15 14:46:37 +00:00
.gitignore [canvaskit] Move from experimental to modules 2019-03-11 21:09:52 +00:00
canvaskit_bindings.cpp Add support for reading .skp files in CanvasKit. 2020-01-15 14:46:37 +00:00
CHANGELOG.md Add support for reading .skp files in CanvasKit. 2020-01-15 14:46:37 +00:00
compile.sh Add support for reading .skp files in CanvasKit. 2020-01-15 14:46:37 +00:00
cpu.js rm CanvasKit.HEAPU8.buffer caching (fix UAF bug). 2020-01-15 14:48:36 +00:00
debug.js [canvaskit] Move from experimental to modules 2019-03-11 21:09:52 +00:00
externs.js Add support for reading .skp files in CanvasKit. 2020-01-15 14:46:37 +00:00
font.js rm CanvasKit.HEAPU8.buffer caching (fix UAF bug). 2020-01-15 14:48:36 +00:00
gpu.js [canvaskit] Request an 8 bit stencil buffer from the WebGL 1/2 context 2019-11-15 17:21:48 +00:00
helper.js rm CanvasKit.HEAPU8.buffer caching (fix UAF bug). 2020-01-15 14:48:36 +00:00
interface.js rm CanvasKit.HEAPU8.buffer caching (fix UAF bug). 2020-01-15 14:48:36 +00:00
karma.bench.conf.js [canvaskit] Try some things to reduce GPU test flakiness 2019-11-21 20:56:42 +00:00
karma.conf.js [canvaskit] Try some things to reduce GPU test flakiness 2019-11-21 20:56:42 +00:00
Makefile Add support for reading .skp files in CanvasKit. 2020-01-15 14:46:37 +00:00
package.json [canvaskit] Move from experimental to modules 2019-03-11 21:09:52 +00:00
paragraph_bindings.cpp [canvaskit] Include direction from getRects 2019-11-20 13:27:22 +00:00
paragraph.js [canvaskit] Include direction from getRects 2019-11-20 13:27:22 +00:00
particles_bindings.cpp Particles: Better integration for ResourceProvider 2019-12-03 14:12:50 +00:00
particles.js Use ResourceProvider in particles 2019-11-27 16:45:23 +00:00
pathops.js [canvaskit] Add build flag for pathops 2020-01-06 13:10:43 +00:00
postamble.js [canvaskit] Move from experimental to modules 2019-03-11 21:09:52 +00:00
preamble.js [canvaskit] Move from experimental to modules 2019-03-11 21:09:52 +00:00
README.md Add instructions for compiling CanvasKit and viewing example page. 2020-01-02 13:04:27 +00:00
ready.js [canvaskit] Move from experimental to modules 2019-03-11 21:09:52 +00:00
release.js [canvaskit] Move from experimental to modules 2019-03-11 21:09:52 +00:00
rt_shader.js [canvaskit] Add npm release target to ship smaller binaries 2020-01-06 13:13:06 +00:00
serve.py [canvaskit] Move from experimental to modules 2019-03-11 21:09:52 +00:00
skottie_bindings.cpp use std::make_unique 2019-12-12 22:32:45 +00:00
skottie.js Use ResourceProvider in particles 2019-11-27 16:45:23 +00:00
skp.js Add support for reading .skp files in CanvasKit. 2020-01-15 14:46:37 +00:00
WasmAliases.h [canvaskit] Initial addition of SkParagraph 2019-10-03 18:04:55 +00:00

Prerequisites

To compile CanvasKit, you will first need to install emscripten. This will set the environment EMSDK (among others) which is required for compilation.

Compile and Test Locally

make release
make local-example

This will print a local endpoint for viewing the example. You can experiment with the CanvasKit API by modifying ./canvaskit/example.html and refreshing the page. For some more experimental APIs, there's also ./canvaskit/extra.html.

For other available build targets, see Makefile and compile.sh. For example, building a stripped-down version of CanvasKit with no text support or any of the "extras", one might run:

./compile.sh no_skottie no_particles no_font

Such a stripped-down version is about half the size of the default release build.