3d52abc846
Color space arguments accepted at surface creation, paint, gradient, and other call sites. Works correctly only when chrome happens to be rendering itself in the same color space the canvaskit user has chosen, there's not yet end to end color management of canvases supported in browsers. readPixels not yet working due to possible chrome bug. Change-Id: I3dea5b16c60a3871cd2a54f86716f4a438a90135 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/289733 Commit-Queue: Nathaniel Nifong <nifong@google.com> 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.