This directory contains experimental code for
SkCodec
API for decoding PNG images using Rust png
crate.SkEncoder
API for encoding PNG images using Rust png
crate.See the following document for more details: https://docs.google.com/document/d/1glx5ue5JDlCld5WzWgTOGK3wsMErQFnkY5N5Dsbi91Y/edit?usp=sharing
To build and test the code from this directory from Chromium:
gn args out/...
and set enable_rust_png = true
autoninja -C out/... gfx_unittests blink_platform_unittests chrome
out/.../gfx_unittests --gtest_filter=RustEnabled*
out/.../blink_platform_unittests --gtest_filter=RustEnabled*
out/.../chrome --enable-features=RustyPng
To build the code from this directory from Skia (testing via Bazel is not supported yet):
$ cd skia-repo-root $ bazelisk build experimental/rust_png/...
To build the code from this directory from Skia:
gn args out/RustPng
and set skia_use_rust_png_decode = true
as well as skia_use_rust_png_encode = true
gn gen out/RustPng
autoninja -C out/RustPng dm
To test the code (via `tests/SkPngRustDecoderTest.cpp` and `tests/SkPngRustEncoderTest.cpp`):
$ out/RustPng/dm --src tests --nogpu
--match RustPngCodec
RustEncodePng
TODO(https://crbug.com/356875275): Add support for running older tests (e.g. ones from `tests/CodecTest.cpp`) against `SkPngRustCodec`. ## Differences between `SkPngCodec` and `SkRustPngCodec` * `SkPngCodec`: - No APNG support. - No CICP support. * `SkPngRustCodec` differences - see https://issues.chromium.org/issues?q=parentid:362829876%2B ## Differences between `SkPngEncoder` and `SkPngRustEncoder` * `SkPngRustEncoder` differences - see https://issues.chromium.org/issues?q=parentid:381140294%2B