feat(imaging): add pure-Rust Skia backend (#112)
This commit is contained in:
@@ -18,7 +18,8 @@ and [`MeshFoundry` guide](../crates/libremetaverse-rendering-mesh-foundry/README
|
||||
| Managed images and TGA | enabled | n/a | none |
|
||||
| JPEG 2000 | disabled | `libremetaverse-imaging/jpeg2000` | OpenJPEG 2.5.x |
|
||||
| JPEG 2000 (pure Rust) | disabled | `libremetaverse-imaging/rust-j2k` | none (`j2k` 0.8.1) |
|
||||
| BMP/GIF/ICO/JPEG/PNG/WBMP/WebP | disabled | `libremetaverse-imaging-skia/skia` | Skia |
|
||||
| BMP/GIF/ICO/JPEG/PNG/WBMP/WebP (pure Rust) | disabled | `libremetaverse-imaging-skia/rust-skia` | none (`skia-rs-codec` 0.3.0 plus `image-webp` 0.2.4) |
|
||||
| BMP/GIF/ICO/JPEG/PNG/WBMP/WebP (native) | disabled | `libremetaverse-imaging-skia/skia` | Skia |
|
||||
| Prim and sculpt meshing, OBJ ingestion | enabled | n/a | none |
|
||||
|
||||
OpenJPEG is a non-default workspace member so release tooling can package the
|
||||
@@ -26,10 +27,11 @@ adapter explicitly, and imaging reaches it only through the optional
|
||||
dependency. The independent `rust-j2k` feature reaches only the audited
|
||||
pure-Rust `j2k` graph; enabling both features keeps both explicit codec types
|
||||
available for interoperability testing. Skia is likewise an optional,
|
||||
target-specific dependency. The
|
||||
consolidated required Gitea gate exercises both optional features on
|
||||
`ubuntu-latest` while its minimal-feature check proves that no native codec is
|
||||
needed for the owned Rust and translated compatibility tests.
|
||||
target-specific dependency. The consolidated required Gitea gate exercises the
|
||||
native feature, while a dedicated `ubuntu-latest` job tests `rust-skia`, audits
|
||||
its normal/build graph without installing native codec tools, and compiles the
|
||||
same code for WASM. Minimal-feature checks still prove no codec is needed for
|
||||
the owned Rust and translated compatibility tests.
|
||||
|
||||
## Bounds and rendering contract
|
||||
|
||||
|
||||
@@ -24,6 +24,7 @@ Optional boundaries are explicit:
|
||||
| --- | --- | --- |
|
||||
| `jpeg2000` | J2K/JP2 through the safe OpenJPEG adapter | OpenJPEG 2.5.4 or newer |
|
||||
| `rust-j2k` | J2K/JP2 through `RustJ2kCodec` | none; exact pure-Rust `j2k` 0.8.1 |
|
||||
| `rust-skia` | BMP/GIF/ICO/JPEG/PNG/WBMP/WebP through `RustSkiaTextureCodec` | none; exact pure-Rust `skia-rs-codec` 0.3.0 and `image-webp` 0.2.4 |
|
||||
| `skia` | PNG/JPEG/WebP and other Skia formats | Skia 0.99 target cache or documented source tools |
|
||||
| `vorbis` | PCM to Ogg Vorbis | the locked `vorbis_rs` native build stack |
|
||||
| default WebRTC | native ICE/DTLS/SRTP/RTP/SCTP and Opus | system libopus 1.3 or newer |
|
||||
|
||||
@@ -19,7 +19,7 @@ they use those APIs directly.
|
||||
| `libremetaverse-types` | UUIDs, vectors, matrices, colors, cancellation, compatibility collections, and boundary types | Pure Rust |
|
||||
| `libremetaverse-structured-data` | LLSD/OSD XML, JSON, binary, and notation | Pure Rust |
|
||||
| `libremetaverse-imaging` | Managed images, TGA/DDS, codec traits | Optional `jpeg2000` or pure-Rust `rust-j2k` |
|
||||
| `libremetaverse-imaging-skia` | Common raster formats through Skia | Optional `skia`; native Skia build/cache |
|
||||
| `libremetaverse-imaging-skia` | Common raster formats through native Skia or pure Rust | Optional `skia` native build/cache; optional `rust-skia` has no native prerequisites |
|
||||
| `libremetaverse-prim-mesher` | Legacy prim and sculpt geometry | Pure Rust |
|
||||
| `libremetaverse-rendering-simple` | Deterministic reference geometry | Pure Rust |
|
||||
| `libremetaverse-rendering-mesh-foundry` | Prim, terrain, sculpt, and mesh-asset rendering | Pure Rust |
|
||||
|
||||
Reference in New Issue
Block a user