summaryrefslogtreecommitdiffstats
path: root/CONTEXT.md
diff options
context:
space:
mode:
Diffstat (limited to 'CONTEXT.md')
-rw-r--r--CONTEXT.md14
1 files changed, 9 insertions, 5 deletions
diff --git a/CONTEXT.md b/CONTEXT.md
index a1ef4bb..32a6eca 100644
--- a/CONTEXT.md
+++ b/CONTEXT.md
@@ -162,11 +162,15 @@ Single Rust crate (`x86_64-unknown-uefi` target). Module breakdown:
162 162
163## Known issues / perf notes 163## Known issues / perf notes
164 164
165- **Scroll is slow under QEMU without KVM**: each scroll shifts the whole 165- **Scroll cost** — scrolling still shifts the whole framebuffer (a
166 framebuffer up (~3 MB copy at 1280×800) with TCG-emulated stores. 166 ~3-8 MB pixel copy per row), but a RAM backbuffer (`gop::SHADOW`)
167 Deferred optimisation: ring-buffer rows / deferred pan so scrolling 167 makes it fast on real hardware: every raster write goes to the shadow
168 never touches the whole framebuffer. The vt's cell grid already avoids 168 too, and scrolling is a cached shadow memcpy + one write-only push to
169 re-rasterising on scroll (only the exposed bottom row is blitted). 169 the display. The display is never *read* — that was the killer, since
170 real-hardware GOP framebuffers are uncacheable/write-combining and
171 uncached reads cost a bus round-trip per cache line. Still on the
172 someday list: a pan-based ring so scrolling never touches the whole
173 framebuffer at all.
170- **Editor redraw** re-blits changed cells per keystroke (fine at 1280×800); 174- **Editor redraw** re-blits changed cells per keystroke (fine at 1280×800);
171 the "optimize drawing someday" item. 175 the "optimize drawing someday" item.
172- **ramfs only**: edited files live in memory, lost on reboot until disk 176- **ramfs only**: edited files live in memory, lost on reboot until disk