Skip to content

Land #92 on main (first light framebuffer) - #93

Merged
ecto merged 1 commit into
mainfrom
claude/land-first-light
Aug 18, 2026
Merged

Land #92 on main (first light framebuffer)#93
ecto merged 1 commit into
mainfrom
claude/land-first-light

Conversation

@ecto

@ecto ecto commented Aug 18, 2026

Copy link
Copy Markdown
Owner

#92 was stacked on #91 and merged into that branch after #91 had already
landed, so the framebuffer commit (2321976) never reached main. This
cherry-picks it onto main — no new code, just delivering what was already
reviewed in #92.

🤖 Generated with Claude Code

A Loon program draws rectangles on a 640x480 display, as the kernel, through
an `Fb` effect that falls through the handler stack to a ramfb driver — the
same shape as `Console.write` falling through to the UART.

- src/fwcfg.rs: QEMU fw_cfg via its DMA interface, to find `etc/ramfb`.
- src/ramfb.rs: a linear XRGB framebuffer in RAM that QEMU scans out. Tell
  it where the buffer is once; drawing is writing memory. No queues, no
  interrupts.
- `Fb` effects: width, height, clear, fill-rect, present. Integer-only ABI
  (coords, sizes, 0xRRGGBB). Raster is Rust behind rect-sized primitives on
  purpose — per-pixel Loon would be ~150 ms/frame at current speed.
- boot/gui.oo runs only when the machine has a display; headless boots skip
  it and `make check` is unaffected. Without a ramfb, Fb ops raise a loud
  error naming the missing device.
- `make gui` boots with a cocoa window and stays up. `make screenshot`
  boots headless, waits for the GUI, and pulls the frame over QMP as a PNG
  (tools/screenshot.py, no dependencies) — the CI-shaped way to prove the
  display works.

Not yet: text, input, host-side Fb parity, time in the event loop.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@vercel

vercel Bot commented Aug 18, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
loon Ready Ready Preview Aug 18, 2026 5:56pm

Request Review

@ecto
ecto merged commit 73cc88d into main Aug 18, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant