1# Imagen USB de prueba de mirada (GPU ajena / NVIDIA)
2
3Genera una USB live que arranca el compositor **mirada** para probarlo en hardware ajeno
4(NVIDIA/AMD/lo-que-sea). Cierra la parte de *imagen* del `HANDOFF-nvidia-mirada.md`.
5
6## Armar y quemar
7
8```sh
9scripts/mirada-usb.sh # → work/hammer-mirada-usb.img (~147 MB)
10sudo dd if=work/hammer-mirada-usb.img of=/dev/sdX bs=4M oflag=sync status=progress
11```
12
13Bootear con **Secure Boot OFF**. Aparece el menú de systemd-boot; ENTER arranca. La tecla **`e`**
14edita la cmdline en vivo (para alternar software/hardware, ver abajo).
15
16## Qué contiene
17
18- **Kernel** `linux-generic` 7.1.2 (nouveau/i915/radeon built-in + simpledrm fallback).
19- **mirada** ya sellado en el store: `mirada-compositor` (smithay) + `mirada-greeter` (wgpu/Vello) + `mirada-ctl`.
20- **Stack gráfico por software + nouveau** (mesa 26.1.1 de Alpine, musl): **llvmpipe** (GL) + **lavapipe**
21 (Vulkan) + `nouveau_dri.so` (GL por hardware si nouveau bindea). Más `seatd`, `libinput`,
22 `libxkbcommon`, datos XKB, PAM permisivo, busybox, loader musl.
23- `/sbin/init` = lanzador: monta pseudo-fs, arranca `seatd`, corre `mirada-compositor --drm --greeter`.
24
25La receta nueva es `recipes/mesa-swrast.toml` (softpipe hammer-nativo, sin LLVM); el stack robusto de la
26imagen viene de Alpine (deuda de soberanía: falta `recipes/{llvm,mesa-llvmpipe,nvk}` desde fuente).
27
28## Estado validado (QEMU virtio-gpu, software)
29
30✅ **El compositor arranca entero**: libseat → `/dev/dri/card0` → GBM+EGL+**GlesRenderer** →
31`[8/8]` → «escritorio en marcha» → acepta clientes Wayland → dibuja la ventana del greeter.
32
33⚠️ **El greeter (login) NO termina de pintar por software.** Su renderer **Vello** exige la capacidad
34de shaders **float16** (`SHADER_FLOAT16_IN_FLOAT32`, `unpack2x16float`) que **llvmpipe y lavapipe NO
35proveen** — sólo una **GPU real**. Por eso el login sólo se pinta con hardware.
36
37## Target actual: GTX 1060 (Pascal / GP106)
38
39Pascal **no** usa GSP (eso es Turing+). La imagen hornea el firmware de aceleración `nvidia/gp106/`
40(ctxsw `gr/` + `acr`/`sec2`, **descomprimido a `.bin`**) que nouveau necesita para dar **GL 3D**.
41**NVK (Vulkan) no soporta Pascal** ⇒ el greeter va por el **backend GL de wgpu sobre gallium-nouveau**
42(que da `unpackHalf2x16` = float16). Reconstruir para otra GPU: `CHIP=<gpXXX> FW_SRC=<dir> scripts/mirada-usb.sh`.
43
44## Los dos modos (cmdline, editable con `e` en systemd-boot)
45
46- **Por defecto (`console=tty0`)** → HARDWARE nouveau. nouveau maneja la GTX 1060 (firmware ya horneado),
47 el compositor y el greeter pintan por gallium-nouveau GL. El init exporta `WGPU_BACKEND=gl` y tapa
48 lavapipe para que wgpu no caiga a software.
49- **Fallback software** → en el menú, `e`, agregá **`mirada.sw nouveau.modeset=0`**. Fuerza
50 llvmpipe/lavapipe sobre simpledrm: el **compositor** arranca seguro; el **greeter no completa**
51 (los rasterizadores software no dan float16). Útil si nouveau diera problemas.
52
53## Pendiente / deuda
54
55- **Confirmar en el metal**: el camino nouveau-GL sólo se puede validar en la 1060 real (QEMU no tiene
56 nouveau; el proxy virgl requiere `egl-headless`, no disponible acá). El software sí está validado.
57- **Soberanía**: el stack GL/Vulkan viene de Alpine (mesa 26 + LLVM 22). Falta
58 `recipes/{llvm,mesa-llvmpipe,mesa-nouveau}` desde fuente. El firmware nouveau es un blob NVIDIA (no
59 reproducible por naturaleza).
60
61## Validar en VM
62
63```sh
64# compositor por software (virtio-gpu); el greeter no completa (float16) — es lo esperado:
65qemu-system-x86_64 -enable-kvm -m 4096 -smp 4 \
66 -kernel store/*-linux-generic/boot/bzImage -initrd work/metal-sdboot/initramfs.cpio.gz \
67 -append "console=ttyS0,115200 mirada.sw nouveau.modeset=0 rdinit=/init" \
68 -device virtio-gpu-pci -display none -serial stdio -no-reboot
69```
mirada-usb-nvidia.md
Imagen USB de prueba de mirada (GPU ajena / NVIDIA)
Genera una USB live que arranca el compositor mirada para probarlo en hardware ajeno
(NVIDIA/AMD/lo-que-sea). Cierra la parte de imagen del HANDOFF-nvidia-mirada.md.
Armar y quemar
scripts/mirada-usb.sh # → work/hammer-mirada-usb.img (~147 MB)
sudo dd if=work/hammer-mirada-usb.img of=/dev/sdX bs=4M oflag=sync status=progress
Bootear con Secure Boot OFF. Aparece el menú de systemd-boot; ENTER arranca. La tecla e
edita la cmdline en vivo (para alternar software/hardware, ver abajo).
Qué contiene
- Kernel
linux-generic 7.1.2 (nouveau/i915/radeon built-in + simpledrm fallback).
- mirada ya sellado en el store:
mirada-compositor (smithay) + mirada-greeter (wgpu/Vello) + mirada-ctl.
- Stack gráfico por software + nouveau (mesa 26.1.1 de Alpine, musl): llvmpipe (GL) + lavapipe
(Vulkan) +
nouveau_dri.so (GL por hardware si nouveau bindea). Más seatd, libinput,
libxkbcommon, datos XKB, PAM permisivo, busybox, loader musl.
/sbin/init = lanzador: monta pseudo-fs, arranca seatd, corre mirada-compositor --drm --greeter.
La receta nueva es recipes/mesa-swrast.toml (softpipe hammer-nativo, sin LLVM); el stack robusto de la
imagen viene de Alpine (deuda de soberanía: falta recipes/{llvm,mesa-llvmpipe,nvk} desde fuente).
Estado validado (QEMU virtio-gpu, software)
✅ El compositor arranca entero: libseat → /dev/dri/card0 → GBM+EGL+GlesRenderer →
[8/8] → «escritorio en marcha» → acepta clientes Wayland → dibuja la ventana del greeter.
⚠️ El greeter (login) NO termina de pintar por software. Su renderer Vello exige la capacidad
de shaders float16 (SHADER_FLOAT16_IN_FLOAT32, unpack2x16float) que llvmpipe y lavapipe NO
proveen — sólo una GPU real. Por eso el login sólo se pinta con hardware.
Target actual: GTX 1060 (Pascal / GP106)
Pascal no usa GSP (eso es Turing+). La imagen hornea el firmware de aceleración nvidia/gp106/
(ctxsw gr/ + acr/sec2, descomprimido a .bin) que nouveau necesita para dar GL 3D.
NVK (Vulkan) no soporta Pascal ⇒ el greeter va por el backend GL de wgpu sobre gallium-nouveau
(que da unpackHalf2x16 = float16). Reconstruir para otra GPU: CHIP=<gpXXX> FW_SRC=<dir> scripts/mirada-usb.sh.
Los dos modos (cmdline, editable con e en systemd-boot)
- Por defecto (
console=tty0) → HARDWARE nouveau. nouveau maneja la GTX 1060 (firmware ya horneado),
el compositor y el greeter pintan por gallium-nouveau GL. El init exporta WGPU_BACKEND=gl y tapa
lavapipe para que wgpu no caiga a software.
- Fallback software → en el menú,
e, agregá mirada.sw nouveau.modeset=0. Fuerza
llvmpipe/lavapipe sobre simpledrm: el compositor arranca seguro; el greeter no completa
(los rasterizadores software no dan float16). Útil si nouveau diera problemas.
Pendiente / deuda
- Confirmar en el metal: el camino nouveau-GL sólo se puede validar en la 1060 real (QEMU no tiene
nouveau; el proxy virgl requiere
egl-headless, no disponible acá). El software sí está validado.
- Soberanía: el stack GL/Vulkan viene de Alpine (mesa 26 + LLVM 22). Falta
recipes/{llvm,mesa-llvmpipe,mesa-nouveau} desde fuente. El firmware nouveau es un blob NVIDIA (no
reproducible por naturaleza).
Validar en VM
# compositor por software (virtio-gpu); el greeter no completa (float16) — es lo esperado:
qemu-system-x86_64 -enable-kvm -m 4096 -smp 4 \
-kernel store/*-linux-generic/boot/bzImage -initrd work/metal-sdboot/initramfs.cpio.gz \
-append "console=ttyS0,115200 mirada.sw nouveau.modeset=0 rdinit=/init" \
-device virtio-gpu-pci -display none -serial stdio -no-reboot