diff options
| author | gbc dev <gbc@localhost> | 2026-07-04 22:39:34 +0200 |
|---|---|---|
| committer | gbc dev <gbc@localhost> | 2026-07-04 22:39:34 +0200 |
| commit | 894ddbe9bcf2bbd1da3af0429b6ed9550c0d4ce3 (patch) | |
| tree | 4089a0c9bb2a1661f57564e3d2044fcb2df5d23e /README.md | |
| parent | docs: note mem_timing-2 passing (diff) | |
| download | sl0pboy-894ddbe9bcf2bbd1da3af0429b6ed9550c0d4ce3.tar.gz sl0pboy-894ddbe9bcf2bbd1da3af0429b6ed9550c0d4ce3.tar.xz sl0pboy-894ddbe9bcf2bbd1da3af0429b6ed9550c0d4ce3.zip | |
renderer: inter-frame diffing to minimize terminal output
Only cells that changed since the previous frame are redrawn, using cursor
positioning to skip unchanged runs. Static screens write nothing after the
first frame (~108x reduction on acid2). SIGWINCH forces a full repaint.
Verified pixel-exact against the framebuffer (11520/11520 cells, 0 mismatch).
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 7 |
1 files changed, 7 insertions, 0 deletions
@@ -6,6 +6,13 @@ codes and the Unicode upper-half-block trick (`▀`): each character cell packs two vertical pixels (foreground = top pixel, background = bottom pixel), giving a 160×144 GB screen in 160×72 terminal cells. +To keep terminal load low, output is minimized two ways: SGR color escapes +are only emitted when the fg/bg changes, and **inter-frame diffing** redraws +only the cells that changed since the previous frame (jumping over unchanged +runs with `ESC[row;colH`). A fully static screen writes nothing after the +first frame; on the acid2 screens this cut output from ~7.1 MB to ~65 KB +over 2 s (~108×). Terminal resize (`SIGWINCH`) triggers a full repaint. + ## Build & run ```sh |
