Skip to content

Epic: Render emit performance #147

Description

@mparrett

TL;DR: a lane for cutting xsofy's terminal render cost — fewer escape sequences per frame, no change to what's drawn. A three-PR stack up, more scoped behind it. The payoff concentrates on the WASM/web build, where every emit crosses into xterm.js.

What this tracks

Render-side emit efficiency in render.lg: trimming redundant terminal output without changing the rendered result. Distinct from the generation/native perf work (perf/native-xxh3, perf/wander-lights-cache), which targets map generation and the native build.

An independent lane off main: no dependency on the mobile shell epic (#128), upstream-mergeable on its own, and it flows back to every build once landed. The payoff is largest where mobile runs. On the WASM path each skipped emit is a Go→JS→xterm.js crossing avoided, on the most constrained target, so treat it as a mobile-readiness enabler judged on the phone-feel harness rather than native byte counts.

Slices

Shelved: color quantization, measured ~1% in-game (animated jitter exceeds the quantization bucket). Kept in the testbed, dropped from ship.

Probe tool

  • lighttest (tool: lighttest — interactive lighting + render-perf testbed #148, draft): tools/lighttest.lg, an interactive lighting and render-perf testbed — a generated dungeon and a movable light, driven by keyboard or a screensaver demo, with a three-way render A/B (delta / sgr-off / naive), depth and sync toggles, and demo paths including a full-map scroll used as the tearing stressor. The vehicle behind these measurements.

Landing order and independence

Held in draft pending

Metadata

Metadata

Assignees

No one assigned

    Labels

    perf-renderRender emit performance (render.lg)

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions