paint_list_api 0.1.1

PaintList trait + engine-facing paint vocabulary for the polyglot netrender pipeline (PM-3 design).
Documentation

netrender

A wgpu-native 2D renderer workspace. netrender ingests display lists and produces pixels on top of wgpu and vello.

The repository began as a fork of Mozilla/Servo's WebRender; vello is now the sole rasterizer. The pre-pivot WebRender-wgpu work survives only as archive/* annotated tags (indexed in netrender-notes/archive/2026-08-10_branch_archive.md).

Status (2026-08-12)

Stable within its scope; in-repo roadmap work is complete per the 2026-08-10 audit. Five member crates, all at 0.1.1, unpublished.

  • The vello pivot is runtime-verified through the tile cache. Landed: layers and clips, gradients, box-shadows, nine-patch borders, variable fonts, backdrop and element CSS filters, scene capture/replay, hit testing, and the external-texture compositor seam.
  • Tenancy boot seam landed 2026-08-10: one wgpu device shared between netrender and a tenant renderer (TenantNeeds, boot_shared/boot_on); first consumer is the sibling paredros repo.
  • A paint-list regression corpus landed 2026-08-10: five fixtures, two of them real captures from genet's pipeline, replayed CPU-only against golden scene-op streams.
  • Full workspace suite passed on macOS/Metal 2026-07-20, including system fonts, color emoji, and compositor plumbing.
  • The two open items are gated outside this repo: the genet-side native-compositor adapter, and linear-light blending (blocked upstream on vello's GPU compute path; an opt-in canary test fires when it clears).

Crates: netrender (Scene vocabulary, rasterizer, tile cache, hit testing, Renderer), netrender_device (device boot and pipelines), netrender_text (parley-to-Scene glyph runs), paint_list_api (the engine-facing PaintCmd vocabulary), paint_list_render (the translator into Scene). Notes and plans live in netrender-notes/, indexed by PROGRESS.md.

Use

The rendering leaf for the genet web-engine family and sibling projects: engines emit a PaintList via paint_list_api, paint_list_render translates it into a Scene, and Renderer::render_vello rasterizes it. Consumed as a git dependency; it depends only on crates.io.

cargo build
cargo test    # many tests use the GPU; WGPU_BACKEND selects the backend

# Demo: renders a card grid to netrender/examples/output/demo_card_grid.png
cargo run -p netrender --example demo_card_grid

Optional features on netrender: serde (scene capture/replay) and linear-light-canary (the upstream-gate test).

License

Mozilla Public License 2.0, retained from the WebRender origin. All member crates declare license = "MPL-2.0".


This README was generated by AI and will be edited by the author upon release.