WindowContentColorspace (primaries x transfer) + set_content_colorspace:
Wayland rebuilds the color-management-v1 image description per spec
(P3/BT.2020 primaries, PQ/HLG transfer with luminances), macOS tags the
Metal layer with the matching CGColorSpace (incl. BT.2100 PQ/HLG),
Windows records it (ACM only honors sRGB). Also: warn when the wgpu
surface fallback would pick an sRGB-suffixed format (double encoding),
share the surface-params uniform across 256 slots (multiple viewers per
frame), and cfg-gate the viewer's GPU-texture source for macOS/Windows.
10-bit (default): Rgb10a2Unorm, falling back to Rgba16Float then 8-bit;
8-bit: the previous hardcoded Bgra8Unorm/Rgba8Unorm. Selection is a
pure function with unit tests; the env var is re-read on every surface
(re)creation.
BGRA atlas uploads (every viewer video frame on macOS) were staged
through swizzle_upload_data's to_vec() into pending_uploads — a
full-frame CPU copy per upload. Non-swizzled formats now write_texture
directly from the borrowed bytes; only the RGBA swizzle and the
not-yet-allocated fallback keep the owned staging path.
* Add text spacing and transform style plumbing
* Apply byte-stable transforms and spacing-aware truncation
* Add platform letter spacing support
* Fix scheduler clippy warning
* Refresh dependency lockfile
* Fix CI for text spacing changes
* Add text transform preview example