• Home
Name Date Size #Lines LOC

..--

canvaskit/03-May-2024-2,0891,706

fonts/03-May-2024-42

htmlcanvas/03-May-2024-2,0751,700

perf/03-May-2024-157118

tests/03-May-2024-3,2892,697

.gitignoreD03-May-202429 22

CHANGELOG.mdD03-May-202413.2 KiB301236

MakefileD03-May-20242.7 KiB7759

README.mdD03-May-20243.1 KiB6450

WasmAliases.hD03-May-2024531 2512

canvaskit_bindings.cppD03-May-202476.6 KiB1,7471,428

compile.shD03-May-20249.5 KiB323269

cpu.jsD03-May-20243.2 KiB8760

debug.jsD03-May-202446 33

externs.jsD03-May-202423.5 KiB937724

font.jsD03-May-20246.9 KiB202149

gpu.jsD03-May-20244.7 KiB11482

helper.jsD03-May-202415 KiB495286

interface.jsD03-May-202432.1 KiB1,001756

karma.bench.conf.jsD03-May-20243 KiB9856

karma.conf.jsD03-May-20242.6 KiB8343

package.jsonD03-May-2024449 2221

paragraph.jsD03-May-20244.3 KiB11387

paragraph_bindings.cppD03-May-202412.2 KiB297236

particles.jsD03-May-20242.8 KiB7653

particles_bindings.cppD03-May-20247.8 KiB212170

pathops.jsD03-May-2024444 1715

postamble.jsD03-May-2024127 31

preamble.jsD03-May-2024376 91

ready.jsD03-May-2024486 1613

release.jsD03-May-2024171 42

rt_shader.jsD03-May-2024551 1210

serve.pyD03-May-2024508 219

skottie.jsD03-May-20242 KiB5534

skottie_bindings.cppD03-May-20249.7 KiB256197

skp.jsD03-May-20241 KiB3024

README.md

1# Prerequisites
2
3To compile CanvasKit, you will first need to [install `emscripten`][1].  This
4will set the environment `EMSDK` (among others) which is required for
5compilation.
6
7# Compile and Test Locally
8
9```
10make release  # make debug is much faster and has better error messages
11make local-example
12```
13
14This will print a local endpoint for viewing the example.  You can experiment
15with the CanvasKit API by modifying `./canvaskit/example.html` and refreshing
16the page. For some more experimental APIs, there's also `./canvaskit/extra.html`.
17
18For other available build targets, see `Makefile` and `compile.sh`.
19For example, building a stripped-down version of CanvasKit with no text support or
20any of the "extras", one might run:
21
22    ./compile.sh no_skottie no_particles no_font
23
24Such a stripped-down version is about half the size of the default release build.
25
26[1]: https://emscripten.org/docs/getting_started/downloads.html
27
28
29# Infrastructure Playbook
30
31When dealing with CanvasKit (or PathKit) on our bots, we use Docker. Check out
32$SKIA_ROOT/infra/wasm-common/docker/README.md for more on building/editing the
33images used for building and testing.
34
35## Updating the version of Emscripten we build/test with
36
37This presumes you have updated emscripten locally to a newer version of the
38sdk and verified/fixed any build issues that have arisen.
39
40  1. Edit `$SKIA_ROOT/infra/wasm-common/docker/emsdk-base/Dockerfile` to install
41     and activate the desired version of Emscripten.
42  2. Edit `$SKIA_ROOT/infra/wasm-common/docker/Makefile` to have `EMSDK_VERSION` be
43     set to that desired version. If there is a suffix that is not `_v1`, reset
44     it to be `_v1`. If testing the image later does not work and edits are made
45     to the emsdk-base Dockerfile to correct that, increment to `_v2`,`_v3`, etc
46     to force the bots to pick up the new image.
47  3. In `$SKIA_ROOT/infra/wasm-common/docker/`, run `make publish_emsdk_base`
48  4. Edit `$SKIA_ROOT/infra/canvaskit/docker/canvaskit-emsdk/Dockerfile` to be based
49     off the new version from step 2. CanvasKit has its own docker image because
50     it needs a few extra dependencies to build with font support.
51  5. Edit `$SKIA_ROOT/infra/canvaskit/docker/Makefile` to have the same version
52     from step 2. It's easiest to keep the `emsdk-base` and `canvaskit-emsdk` versions
53     be in lock-step.
54  6. In `$SKIA_ROOT/infra/canvaskit/docker/`, make `publish_canvaskit_emsdk`.
55  7. In `$SKIA_ROOT/infra/bots/recipe_modules/build/`, update `canvaskit.py`
56     and `pathkit.py` to have `DOCKER_IMAAGE` point to the desired tagged Docker
57     containers from steps 2 and 5 (which should be the same).
58  9. In `$SKIA_ROOT/infra/bots/`, run `make train` to re-train the recipes.
59  10. Optional: Run something like `git grep 1\\.38\\.` in `$SKIA_ROOT` to see if
60     there are any other references that need updating.
61  11. Upload a CL with all the changes. Run all Test.+CanvasKit, Perf.+CanvasKit,
62      Test.+PathKit, Perf.+PathKit jobs to make sure the new builds pass all
63      tests and don't crash the perf harnesses.
64  12. Send out CL for review. Feel free to point the reviewer at these steps.