19ffa683a1
One immediate use-case for this is running tests when SSH'd into a remote machine. In theory, X11 forwarding could be used to forward the remote Chrome UI. In practice, Chrome is difficult to forward correctly, and the options for doing so are empirically quite slow. In testing, forwarding from Ubuntu to Mac required passing --use-gl=swiftshader to Chromium, and rendering was slow enough to timeout tests. Bug: NONE Change-Id: Ibfaa406a73d293ea212d7983d487ea0de9722da5 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/291196 Reviewed-by: Kevin Lubick <kjlubick@google.com> |
||
---|---|---|
.. | ||
canvaskit | ||
fonts | ||
htmlcanvas | ||
perf | ||
tests | ||
.gitignore | ||
BUILD.gn | ||
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 | ||
release.js | ||
rt_shader.js | ||
serve.py | ||
skottie_bindings.cpp | ||
skottie.js | ||
skp.js | ||
viewer_bindings.cpp | ||
WasmCommon.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/
, runmake publish_canvaskit_emsdk
. - In
$SKIA_ROOT/infra/bots/recipe_modules/build/
, updatecanvaskit.py
andpathkit.py
to haveDOCKER_IMAGE
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.