feat(renaser): Fase 8a — el compositor teselante
El kernel deja de colocar las ventanas a mano: las tesela. El motor es mirada-layout — el mismo nucleo no_std que ordena el compositor Wayland de brahman, enlazado por path cruzando la frontera de workspace. Es el primer consumo REAL del nucleo compartido brahman <-> renaser. - kernel/compositor.rs: enlaza mirada-layout y calcula un marco por app con el algoritmo MasterStack, dentro del area de pantalla. - consola::volcar_marco centra el fotograma natural de la app dentro de su marco teselado (antes lo depositaba en region.x/y fijos). - ContextoCapacidades lleva marco + natural_ancho/alto; sys_render_frame valida el fotograma contra el tamaño natural. - cargar_userspace tesela con el compositor y pinta el escenario antes de encender las apps. Las apps NO cambian: el compositor reordena la pantalla sin que ninguna toque una instruccion. Verificado en QEMU (screendump): las cinco apps de genesis teseladas en MasterStack — hola como ventana maestra, el resto apiladas a la derecha, cada lienzo centrado en su panel. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -630,3 +630,45 @@ separado, a un reinicio.
|
||||
- **Reinicio** — `boot` respeta el disco; memoriosa despierta con las 5
|
||||
celdas intactas y el testigo en ámbar: su `init` releyó el estado del
|
||||
grafo. El estado por-app sobrevivió al apagón.
|
||||
|
||||
## Fase 8a — El compositor teselante — 2026-05-22
|
||||
|
||||
Hasta la Fase 7, cada app llevaba su región escrita a mano en el manifiesto —
|
||||
coordenadas fijas, una composición rígida. La Fase 8 entrega esa decisión a un
|
||||
COMPOSITOR: el kernel ya no coloca las ventanas a mano, las TESELA con
|
||||
`mirada-layout`.
|
||||
|
||||
### Añadido
|
||||
- **`kernel/compositor.rs`** — el compositor teselante. Enlaza `mirada-layout`
|
||||
—el mismo núcleo `no_std` que ordena las ventanas del compositor Wayland de
|
||||
brahman, ya enlazado por `path` cruzando la frontera de workspace— y, con su
|
||||
algoritmo `MasterStack`, calcula un marco para cada app. `disponer(n, …)`
|
||||
devuelve un marco por ventana; `area_apps`, la zona teselable (la pantalla
|
||||
menos la franja superior de la consola).
|
||||
- `consola`: `pintar_escenario` —inunda el área de apps y tiñe cada marco con
|
||||
el color de panel, de modo que el teselado se vea como una rejilla— y el
|
||||
color `Color::PANEL`.
|
||||
|
||||
### Cambiado
|
||||
- `consola::volcar_marco` ya no deposita el fotograma en `(region.x, region.y)`:
|
||||
CENTRA el fotograma natural de la app dentro de su marco teselado y lo
|
||||
recorta a sus bordes.
|
||||
- `ContextoCapacidades` lleva ahora `marco` (el rectángulo teselado) y
|
||||
`natural_ancho`/`natural_alto` (el tamaño del lienzo de la app);
|
||||
`sys_render_frame` valida el fotograma contra el tamaño natural.
|
||||
- `AplicacionWasm` / `encender_app` / `cargar_userspace` cablean el marco
|
||||
teselado. `cargar_userspace` recibe las dimensiones de pantalla, tesela con
|
||||
el compositor y pinta el escenario antes de encender las apps.
|
||||
- `RegionPantalla::pixeles` se retira — sin uso desde que `sys_render_frame`
|
||||
mide contra el tamaño natural.
|
||||
- **Las apps NO cambian.** Renderizan su lienzo natural, fijo; el kernel lo
|
||||
compone centrado en el marco. El compositor reordena la pantalla sin que
|
||||
ninguna app toque una sola instrucción.
|
||||
|
||||
### Verificado
|
||||
- QEMU (captura headless): las cinco apps de génesis aparecen teseladas en
|
||||
`MasterStack` — `hola` como ventana maestra (izquierda, 60% del ancho) y
|
||||
memoriosa, discola, glotona y cronista apiladas a la derecha. Cada lienzo,
|
||||
centrado en su panel; las apps desalojadas (discola, glotona) tiñen su marco
|
||||
entero con la baliza. El registro de arranque permanece legible en la franja
|
||||
superior de la consola.
|
||||
|
||||
Reference in New Issue
Block a user