danos/system/services
Daniel Samson 105203b447
display: layer client API + the display-demo client (D4)
Drive the compositor from a separate process, proving the pipeline end to end.

- runtime.display: a Layer handle (fill / blitTile / configure / damage /
  destroy), createLayer, and a color(r,g,b) helper that caches the mode and
  packs via protocol.pack. Coordinates are signed over the u32 wire fields
  (@bitCast both ways), so a layer may sit or move partly off-screen.
- system/services/display-demo: the input-source analog for the compositor — a
  full-screen wallpaper, a rectangle it slides back and forth (moved by
  configure each frame, so the damage-driven present repaints old + new), and a
  cursor. Presents in a loop paced by runtime.time. Wired into build + initrd.

Fix this surfaced: protocol.message_maximum was 4096, but the kernel caps every
IPC message at MESSAGE_MAXIMUM = 256, so replyWait rejected the oversized receive
buffer with -E2BIG and the serve loop had been spinning since D2 (invisibly, as
those gates matched init-time heartbeats). Set it to 256; blit_tile is now
explicitly a small-tile path (larger bitmaps are the deferred shm surface).

Gate: `python3 test/qemu_test.py display-demo` — the demo drives frames of
motion through the layer client API and logs `display-demo: ok`. Regression:
zig build test, display (D1), display-service (D2/D3), and default zig build.
2026-07-14 01:56:37 +01:00
..
acpi acpi: stop parsing AML in the kernel; power management is userspace's 2026-07-13 23:09:30 +01:00
args-echo Pass arguments to main via runtime.process.Init, dispatched on signature 2026-07-11 14:22:48 +01:00
block fat/usb-storage: flush the device cache on close so writes survive power-off 2026-07-13 23:29:15 +01:00
crash-test The device manager supervises: hello, backoff, and the crash-loop cap (M18.1) 2026-07-13 00:19:30 +01:00
device-list The application surface: enumerate, subscribe, and device-list (M18.3) 2026-07-13 00:49:03 +01:00
device-manager USB driver stack: xHCI transfers, HID keyboard/mouse, mass storage 2026-07-13 14:11:00 +01:00
display display: layer client API + the display-demo client (D4) 2026-07-14 01:56:37 +01:00
display-demo display: layer client API + the display-demo client (D4) 2026-07-14 01:56:37 +01:00
fat fat/usb-storage: flush the device cache on close so writes survive power-off 2026-07-13 23:29:15 +01:00
fdt Add runtime.time, drop demo drivers, harden TSC timekeeping 2026-07-13 11:56:43 +01:00
init display: the compositor service — claim, double-buffer, present (D2) 2026-07-14 01:26:25 +01:00
input fix / debug 2026-07-13 05:41:05 +01:00
input-source Generalize input module to mouse and joystick/gamepad events 2026-07-11 15:21:09 +01:00
input-test Generalize input module to mouse and joystick/gamepad events 2026-07-11 15:21:09 +01:00
log-flush Phase 2a: FAT engine mutations + O_TRUNC (fix the overwrite corruption) 2026-07-13 20:02:01 +01:00
power Add runtime.time, drop demo drivers, harden TSC timekeeping 2026-07-13 11:56:43 +01:00
process-test The application surface: enumerate, subscribe, and device-list (M18.3) 2026-07-13 00:49:03 +01:00
vfs Phase 2d (ii): filesystem modification time (mtime) 2026-07-13 20:43:40 +01:00