f3242c44cf
The new loader works by checking for a "slide" flag, and if it ends in ".skp", then we treat the slide name as a URL and try to pull it in with an HTTP request and parse it as an SkPicture. It is the user's responsibility to copy or link skps into their canvaskit server directory. Change-Id: Iaafa84300d36d2d5a0bb29c47761ec67076c0f50 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/292204 Commit-Queue: Chris Dalton <csmartdalton@google.com> Reviewed-by: Kevin Lubick <kjlubick@google.com> Reviewed-by: Florin Malita <fmalita@chromium.org> |
||
---|---|---|
.. | ||
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.