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:
@@ -43,6 +43,15 @@ impl Color {
|
||||
b: 0x20,
|
||||
};
|
||||
|
||||
/// Panel del compositor (Fase 8): un slate apenas mas claro que el reposo.
|
||||
/// Tiñe cada marco teselado, de modo que el teselado se vea —como una
|
||||
/// rejilla de paneles— aunque sus apps aun no hayan pintado nada.
|
||||
pub(crate) const PANEL: Color = Color {
|
||||
r: 0x1B,
|
||||
g: 0x21,
|
||||
b: 0x30,
|
||||
};
|
||||
|
||||
/// Alerta de colapso: un rojo saturado, imposible de ignorar.
|
||||
pub(crate) const ALERTA: Color = Color {
|
||||
r: 0xD4,
|
||||
@@ -101,13 +110,6 @@ pub(crate) struct RegionPantalla {
|
||||
pub(crate) alto: usize,
|
||||
}
|
||||
|
||||
impl RegionPantalla {
|
||||
/// Numero total de pixeles que abarca la region.
|
||||
pub(crate) const fn pixeles(&self) -> usize {
|
||||
self.ancho * self.alto
|
||||
}
|
||||
}
|
||||
|
||||
/// Traduce un [`Color`] logico al valor nativo de 32 bits que el framebuffer
|
||||
/// espera, respetando el orden de canales que reporta el firmware UEFI.
|
||||
pub(crate) fn codificar(formato: PixelFormat, color: Color) -> u32 {
|
||||
|
||||
Reference in New Issue
Block a user