danos/system
Daniel Samson 69b018cc32
display: the compositor service — claim, double-buffer, present (D2)
Stand up /system/services/display: a ring-3 process that claims the framebuffer
D1 seeded, maps it write-combining as the front buffer, allocates a cacheable
back buffer, and presents composed frames. The GUI track's compositor, reached
by name over ServiceId.display (= 9).

- protocol.zig: the display wire protocol (info/create_layer/configure_layer/
  destroy_layer/fill_rect/blit_tile/damage/present). `info` and a whole-screen
  `present` are live; the layer ops fail-stub until D3.
- display.zig: enumerate -> claim -> mmio_map(WC) the LFB, mmap a cacheable back
  buffer, clear it and present it (proving the double-buffer path), then serve.
- runtime.display + barrel exports (display, display_protocol): a cached
  `.display` client with info()/present(), the runtime.block shape.
- init spawns "display" in boot_services; build.zig wires the protocol onto the
  runtime, builds the exe, packs it into the initial-ramdisk, installs it.

mmap fix the back buffer forced: systemMmap was capped at 256 pages (1 MiB) by a
fixed kernel-stack scratch array. Rewrote it to map page-by-page with rollback
(no array) and raised the cap to 8192 pages (32 MiB) — enough for a 4K back
buffer. A real limitation met.

Gate: `python3 test/qemu_test.py display-service` matches the service's own
serial heartbeats (display: online WxH / presented frame 0), printed only after
the full claim -> WC-map -> back-buffer -> present chain. Regression-checked
usermem, heap, init, and D1's display.
2026-07-14 01:26:25 +01:00
..
devices display: framebuffer handoff primitive + service design (D1) 2026-07-14 00:54:56 +01:00
drivers fat/usb-storage: flush the device cache on close so writes survive power-off 2026-07-13 23:29:15 +01:00
kernel display: the compositor service — claim, double-buffer, present (D2) 2026-07-14 01:26:25 +01:00
services display: the compositor service — claim, double-buffer, present (D2) 2026-07-14 01:26:25 +01:00
abi.zig display: the compositor service — claim, double-buffer, present (D2) 2026-07-14 01:26:25 +01:00
boot-handoff.zig zig fmt 2026-07-12 16:04:58 +01:00
initial-ramdisk.zig Post-reorg cleanup: POSIX layer, and naming fixes 2026-07-10 13:33:06 +01:00
parameters.zig USB driver stack: xHCI transfers, HID keyboard/mouse, mass storage 2026-07-13 14:11:00 +01:00