gioser

tawasuyu/llimphi

Sovereign retained-mode GPU UI framework in Rust (wgpu+vello+taffy+parley), Elm loop, 40+ widgets.

Rust 614Markdown 274TOML 149RON 310606 Sutichaykuna

⎇ c5a232cf24788ab75a850ffe81eca5a7af50e2f8 llimphi-video-plane/README.md Markdown · 33 siq'ikuna · 1.3 KB Ñawpa willay ch'uya

chore: refresco desde el monorepo — 27 crates nuevos (anim, lottie, svg, mesh, image, layer, test, wire-view, widgets rag-sidebar/router/lazy-list/rive-button) y sync de los 95 existentes 93253cc22 · Sergio ·

1# llimphi-video-plane
2
3A spike for "attach video in llimphi": video as a real `wl_subsurface` over
4winit's `wl_surface`, so mirada composites it (Phase 1) and eventually scans it
5out on an overlay plane, **without going through vello's intermediate texture**.
6
7The wall it validates (Phase 0, already OK): winit does not expose subsurfaces, so
8a **second** `wayland-client` connection is mounted over the SAME foreign
9`wl_display` (`Backend::from_foreign_display`), winit's `wl_surface` is wrapped
10through `ObjectId::from_ptr`, and a child `wl_subsurface` is created on it.
11`set_desync` → the child commits on its own; position and ordering are latched on
12the parent's commit (which winit does on present; the subsurface tracks the
13parent when moved).
14
15Two modes:
16
17- **no arguments** → a solid colour quad (validates the subsurface).
18- **`subsurface-spike <file>`** → real frames from that video (Phase 1a), decoded
19  by `foreign-av`, uploaded to the subsurface through shm (3 round-robin buffers,
20  RGBA→ARGB8888). The winit UI only clears the background.
21
22Keys: `B` = subsurface below/above the parent · `T` = UI background
23transparent/opaque (the "hole" the plane peeks through) · `ESC` = quit.
24
25## Use
26
27```sh
28cargo run --release -p llimphi-video-plane --bin subsurface-spike
29```
30
31---
32
33Part of **llimphi** — see [llimphi](../README.md).

README.md

llimphi-video-plane

A spike for "attach video in llimphi": video as a real wl_subsurface over winit's wl_surface, so mirada composites it (Phase 1) and eventually scans it out on an overlay plane, without going through vello's intermediate texture.

The wall it validates (Phase 0, already OK): winit does not expose subsurfaces, so a second wayland-client connection is mounted over the SAME foreign wl_display (Backend::from_foreign_display), winit's wl_surface is wrapped through ObjectId::from_ptr, and a child wl_subsurface is created on it. set_desync → the child commits on its own; position and ordering are latched on the parent's commit (which winit does on present; the subsurface tracks the parent when moved).

Two modes:

Keys: B = subsurface below/above the parent · T = UI background transparent/opaque (the "hole" the plane peeks through) · ESC = quit.

Use

cargo run --release -p llimphi-video-plane --bin subsurface-spike

Part of llimphi — see llimphi.