feat(mirada): zwp_linux_dmabuf — clientes que pintan por GPU

Fase 1 del plan «shell»: para que carmen pueda hospedar a `shuma-shell`
(y a cualquier app GPUI o navegador acelerado) hace falta que los
clientes con GPU puedan compartir su búfer de vídeo. carmen sólo hablaba
`wl_shm` (búferes de software) — por eso `foot` corría pero las apps
GPUI salían en negro.

- `App` lleva un `DmabufState`; `impl DmabufHandler` con `dmabuf_imported`
  que acepta el búfer (el `GlesRenderer` ya importa DMA-BUF al componer,
  vía `ImportAll`, así que la validación real ocurre al pintar).
- `delegate_dmabuf!(App)`.
- `announce_dmabuf` crea el global con los formatos de `dmabuf_formats()`
  del renderer — se llama en ambos backends una vez creado el renderer.

Pendiente del plan: Fase 2 (`wlr-layer-shell`) y Fase 3 (modo launcher
de `shuma-shell` — barra + input + cajón de resultados).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
sergio
2026-05-21 05:00:36 +00:00
parent b3b44e2c72
commit 7b5c583a98
5 changed files with 62 additions and 12 deletions
+7 -4
View File
@@ -193,10 +193,13 @@ manual) y `mirada-ctl` (CLI, probado vía el ejemplo `headless-ctl`).
El **Cuerpo** ya existe: `mirada-compositor` es un compositor Wayland
teselante real sobre `smithay`. Habla `wl_compositor`/`xdg_shell`/
`wl_shm`/`wl_seat`/`wl_output`/`wl_data_device`/`xdg-decoration`, compone
las superficies de los clientes con `GlesRenderer` y aplica la geometría
del Cerebro. Fuerza decoración `ServerSide` y no dibuja ninguna: las
ventanas teseladas van sin marco (nada de barras de título de cliente).
`wl_shm`/`wl_seat`/`wl_output`/`wl_data_device`/`xdg-decoration`/
`zwp_linux_dmabuf`, compone las superficies de los clientes con
`GlesRenderer` y aplica la geometría del Cerebro. Fuerza decoración
`ServerSide` y no dibuja ninguna: las ventanas teseladas van sin marco
(nada de barras de título de cliente). Con `zwp_linux_dmabuf` los
clientes que pintan por GPU (apps GPUI, navegadores acelerados) pueden
conectarse — el `GlesRenderer` importa sus búferes DMA-BUF al componer.
Reusa `mirada-body` (contabilidad) y `mirada-link` (cable). Dos modos de
Cerebro: **autónomo** (`Desktop` embebido) o **enlazado** (`MIRADA_SOCKET`
→ la app `mirada`).