tawasuyu

tawasuyu/llimphi

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

Rust 229TOML 101Markdown 82Shell 24052 Definiciones

⎇ main llimphi-video-plane/LEEME.md Markdown · 34 líneas · 1.3 KB Historia crudo

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
3*Read this in English: [README.md](README.md).*
4
5Spike de "atachá video en llimphi": video como `wl_subsurface` real sobre
6la `wl_surface` de winit, para que mirada lo componga (Fase 1) y a futuro lo
7escanee en un plano de overlay, **sin pasar por la textura intermedia de
8vello**.
9
10Muro que valida (Fase 0, ya OK): winit no expone subsurfaces, así que se
11monta una **segunda** conexión `wayland-client` sobre el MISMO `wl_display`
12ajeno (`Backend::from_foreign_display`), se envuelve la `wl_surface` de winit
13por `ObjectId::from_ptr`, y se le crea una `wl_subsurface` hija. `set_desync`
14→ el hijo commitea solo; posición/orden se latchean en el commit del padre
15(que hace winit al presentar; el subsurface trackea al padre al mover).
16
17Dos modos:
18  - **sin argumentos** → cuadro de color sólido (valida el subsurface).
19  - **`subsurface-spike <archivo>`** → frames reales de ese video (Fase 1a),
20    decodificados por `foreign-av`, subidos al subsurface por shm (3 buffers
21    round-robin, RGBA→ARGB8888). La UI winit sólo limpia el fondo.
22
23Teclas: B = subsurface debajo/encima del padre · T = fondo UI
24transparente/opaco (el "hueco" donde asoma el plano) · ESC = salir.
25
26## Uso
27
28```sh
29cargo run --release -p llimphi-video-plane --bin subsurface-spike
30```
31
32---
33
34Parte de **llimphi** — ver [llimphi](../LEEME.md).

LEEME.md

llimphi-video-plane

Read this in English: README.md.

Spike de "atachá video en llimphi": video como wl_subsurface real sobre la wl_surface de winit, para que mirada lo componga (Fase 1) y a futuro lo escanee en un plano de overlay, sin pasar por la textura intermedia de vello.

Muro que valida (Fase 0, ya OK): winit no expone subsurfaces, así que se monta una segunda conexión wayland-client sobre el MISMO wl_display ajeno (Backend::from_foreign_display), se envuelve la wl_surface de winit por ObjectId::from_ptr, y se le crea una wl_subsurface hija. set_desync → el hijo commitea solo; posición/orden se latchean en el commit del padre (que hace winit al presentar; el subsurface trackea al padre al mover).

Dos modos:

Teclas: B = subsurface debajo/encima del padre · T = fondo UI transparente/opaco (el "hueco" donde asoma el plano) · ESC = salir.

Uso

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

Parte de llimphi — ver llimphi.