summaryrefslogtreecommitdiffstats
path: root/CONTEXT.md
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--CONTEXT.md19
1 files changed, 14 insertions, 5 deletions
diff --git a/CONTEXT.md b/CONTEXT.md
index f068035..bf1e01f 100644
--- a/CONTEXT.md
+++ b/CONTEXT.md
@@ -113,13 +113,17 @@ Workspace version is `a.b.c` (single version for all crates):
113 113
114Bump the workspace version in the root `Cargo.toml` when a change of 114Bump the workspace version in the root `Cargo.toml` when a change of
115that class lands — do not leave the version to drift. Current: 115that class lands — do not leave the version to drift. Current:
116`0.5.2` — the GUI era landed with 0.5.0 (graphics layer + cursor 116`0.5.3` — the GUI era landed with 0.5.0 (graphics layer + cursor
117compositor); 0.5.1 fixed the canvas at 800×600; 0.5.2 added fault 117compositor); 0.5.1 fixed the canvas at 800×600; 0.5.2 added fault
118diagnostics (screen + serial dumps for every CPU exception) and 118diagnostics (screen + serial dumps for every CPU exception) and
119real-hardware hardening (framebuffer-size clamping, fb-region exclusion 119real-hardware hardening (framebuffer-size clamping, fb-region exclusion
120from the allocators, authoritative fb geometry logging). A future 120from the allocators, authoritative fb geometry logging); 0.5.3 fixed
121major GUI overhaul (graphics windows beyond the text surface) would be 121the real-hardware scroll wedge — the scroll's full-frame push is now
122the `a` bump (1.0.0). 122per-word volatile stores like the boot-time `clear()` instead of one
1231.92 MB rep-movsb, which can stall forever on an uncached real-GPU
124framebuffer (a stall, not an exception — hence no crash dump). A
125future major GUI overhaul (graphics windows beyond the text surface)
126would be the `a` bump (1.0.0).
123 127
124## Project layout 128## Project layout
125 129
@@ -553,7 +557,12 @@ Workspace of four crates, all built for the `x86_64-unknown-uefi` target:
553 shadow too; scrolling is a cached shadow memcpy + one write-only 557 shadow too; scrolling is a cached shadow memcpy + one write-only
554 push to the display — the display is never *read* (uncached reads 558 push to the display — the display is never *read* (uncached reads
555 were the killer, since real-hardware GOP framebuffers are 559 were the killer, since real-hardware GOP framebuffers are
556 uncacheable/write-combining). 560 uncacheable/write-combining). **The push is per-word volatile
561 stores (0.5.3), not one bulk rep-movsb**: a 1.92 MB REP MOVS to an
562 uncached real-GPU framebuffer wedged the CPU on some hardware (a
563 stall, not an exception — no dump fired), while the boot-time
564 `clear()` — the same per-word pattern — always worked. QEMU's
565 RAM-backed framebuffer never showed it.
557 2. deferred scroll batching (`vt::PENDING_SCROLLS`): the logical grid 566 2. deferred scroll batching (`vt::PENDING_SCROLLS`): the logical grid
558 scrolls instantly in RAM while the framebuffer shift+push is 567 scrolls instantly in RAM while the framebuffer shift+push is
559 deferred; N pending scrolls cost one push. Bursts of streaming 568 deferred; N pending scrolls cost one push. Bursts of streaming