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.
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.
| Type | Count | Surface MB | p95 | p99 | Max | Input→frame | Anim ready | Call ms | Promote ms | JS heap MB | Note |
|---|
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.