will-change persistent layer-pressure harness

Persistent compositor-pressure / layer-residency experiment. The page continually adds rasterized cards, applies one promotion mechanism permanently, lets you manually scroll the growing document, and pulses 1–10 cards on every click in the stress area.

Each card receives `will-change: transform, opacity` immediately after insertion and the hint is never removed. There is no per-card idle animation. Click pulses use the same WAAPI transform animation as the other harnesses. This asks whether persistent will-change begins to hurt input/scroll/animation at a lower population than the alternative promotion mechanisms.
Calibrating display cadence…
Promoted cards
0
Naive RGBA surface
0 MB
Doc height
0 px
JS heap used
n/a
rAF p95 · last 2s
—
rAF p99 · last 2s
—
Last scroll p95
—
Last pointer→frame
—
Last pulse ready
—
LoAF / long task
0 / 0

Scroll + click stress surface

Scroll this page naturally. Click any card or empty area inside the grid to pulse nearby cards. The harness records scroll-session frame pacing, pointer-to-next-frame latency, animation readiness, batch insertion/promotion time, LoAFs, and long tasks.

Mechanism: will-change

Event log

TypeCountSurface MBp95p99Max Input→frameAnim readyCall msPromote msJS heap MBNote

How to use this harness

Recommended pass: start at 160×100, add 100 per batch every 500 ms, then scroll continuously up/down and click periodically. When you first feel scroll or pulse degradation, use the mark buttons. Repeat at a larger surface size to separate layer-count overhead from raster-memory pressure.

Naive RGBA surface is simply count × CSS width × CSS height × DPR² × 4 bytes. It is deliberately labeled naive: real browsers tile, evict, reuse, compress, or avoid rasterizing offscreen surfaces, and layer metadata/backing stores add other costs.

Important: this page cannot prove that every card has a resident GPU texture. Hitting a behavioral ceiling — or not hitting one — is the signal. Use browser compositor tooling afterward if you need exact layer/tile residency.

Keyboard shortcuts: S marks scroll lag; A marks animation lag. Controls are excluded from the click-pulse behavior.