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 = trueautoninja -C out/... gfx_unittests blink_platform_unittests chromeout/.../gfx_unittests --gtest_filter=RustEnabled*out/.../blink_platform_unittests --gtest_filter=RustEnabled*out/.../chrome --enable-features=RustyPngTo 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 = truegn gen out/RustPngautoninja -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