ba96256581
Bug: skia:9984 Change-Id: Id8d8d568fb29b006d19079248c579282207279c1 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/275692 Commit-Queue: Mike Reed <reed@google.com> Reviewed-by: Kevin Lubick <kjlubick@google.com> Reviewed-by: Florin Malita <fmalita@chromium.org> |
||
---|---|---|
.. | ||
canvaskit | ||
fonts | ||
htmlcanvas | ||
perf | ||
tests | ||
.gitignore | ||
canvaskit_bindings.cpp | ||
catchExceptionNop.js | ||
CHANGELOG.md | ||
compile.sh | ||
cpu.js | ||
debug.js | ||
externs.js | ||
font.js | ||
gpu.js | ||
helper.js | ||
interface.js | ||
karma.bench.conf.js | ||
karma.conf.js | ||
karma.google3.conf.js | ||
Makefile | ||
package.json | ||
paragraph_bindings.cpp | ||
paragraph.js | ||
particles_bindings.cpp | ||
particles.js | ||
pathops.js | ||
postamble.js | ||
preamble.js | ||
README.md | ||
ready.js | ||
release.js | ||
rt_shader.js | ||
serve.py | ||
skottie_bindings.cpp | ||
skottie.js | ||
skp.js | ||
WasmAliases.h |
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 debug is much faster and has better error messages
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.
Infrastructure Playbook
When dealing with CanvasKit (or PathKit) on our bots, we use Docker. Check out $SKIA_ROOT/infra/wasm-common/docker/README.md for more on building/editing the images used for building and testing.
Updating the version of Emscripten we build/test with
This presumes you have updated emscripten locally to a newer version of the sdk and verified/fixed any build issues that have arisen.
- Edit
$SKIA_ROOT/infra/wasm-common/docker/emsdk-base/Dockerfile
to install and activate the desired version of Emscripten. - Edit
$SKIA_ROOT/infra/wasm-common/docker/Makefile
to haveEMSDK_VERSION
be set to that desired version. If there is a suffix that is not_v1
, reset it to be_v1
. If testing the image later does not work and edits are made to the emsdk-base Dockerfile to correct that, increment to_v2
,_v3
, etc to force the bots to pick up the new image. - In
$SKIA_ROOT/infra/wasm-common/docker/
, runmake publish_emsdk_base
- Edit
$SKIA_ROOT/infra/canvaskit/docker/canvaskit-emsdk/Dockerfile
to be based off the new version from step 2. CanvasKit has its own docker image because it needs a few extra dependencies to build with font support. - Edit
$SKIA_ROOT/infra/canvaskit/docker/Makefile
to have the same version from step 2. It's easiest to keep theemsdk-base
andcanvaskit-emsdk
versions be in lock-step. - In
$SKIA_ROOT/infra/canvaskit/docker/
, makepublish_canvaskit_emsdk
. - In
$SKIA_ROOT/infra/bots/recipe_modules/build/
, updatecanvaskit.py
andpathkit.py
to haveDOCKER_IMAAGE
point to the desired tagged Docker containers from steps 2 and 5 (which should be the same). - In
$SKIA_ROOT/infra/bots/
, runmake train
to re-train the recipes. - Optional: Run something like
git grep 1\\.38\\.
in$SKIA_ROOT
to see if there are any other references that need updating. - Upload a CL with all the changes. Run all Test.+CanvasKit, Perf.+CanvasKit, Test.+PathKit, Perf.+PathKit jobs to make sure the new builds pass all tests and don't crash the perf harnesses.
- Send out CL for review. Feel free to point the reviewer at these steps.