diff --git a/README.md b/README.md index 46a8d3d..4f21f2a 100644 --- a/README.md +++ b/README.md @@ -56,22 +56,32 @@ reports `virgl (AMD Radeon RX 7900 XT)` instead of a software rasteriser. One compositor is started for the machine and reused, on a named socket under `XDG_RUNTIME_DIR`; it needs no seat, no DRM master and no card node. -Measured 2026-08-30, scrolling a list in the stock **Settings** app: +Measured 2026-08-31, scrolling the same list in the stock **Settings** app +on the same AVD with the same gesture -- so this is the platform's own cost, +with no app of ours in it: -| | janky frames | 90th percentile | slow UI-thread frames | -|---|---|---|---| -| software | 25.5% | 93ms | 8 | -| on the GPU | 3.3% | 28ms | 0 | +| | janky frames | legacy janky | 90th percentile | slow UI-thread frames | +|---|---|---|---|---| +| software | 57.4% | 100% | 73ms | 18 | +| on the GPU | 2.3% | 5.7% | 26ms | 0 | -An emulator also costs about **1.1 GB less** resident this way (2.9 GB -against 3.9 GB), which is a whole emulator's worth of headroom on a machine -that only takes two. +Read **both** jank columns. The legacy figure counts a frame against the +16.7ms deadline and the modern one against what the compositor actually +needed, so on a fast enough path the modern number can barely move while the +legacy one halves. When comparing two builds of an app in here, the legacy +column is usually the one carrying the signal. + +An emulator also costs about **620 MB less** resident this way: measured +twenty seconds after boot on one AVD, 3537 MB on software against 2918 MB on +the GPU. (An earlier draft of this file said 1.1 GB. That number came from +`emu list` before the prefix bug in it was fixed, and was one emulator's size +reported against another's.) This matters for more than speed. Before it, frame timings measured in here -said nothing at all about an app: our own app scrolled *better* than -Settings did, because both were bounded by the rasteriser rather than by -anything either of them was doing. Now the platform floor is low enough that -an app's own jank is visible above it. +said nothing at all about an app: every app was bounded by the rasteriser +rather than by anything it was doing, and the stock Settings app missed +*every single frame's* deadline while scrolling its own list. Now the +platform floor is low enough that an app's own jank is visible above it. `GPU_HOST_FEATURES` carries the one workaround: host Vulkan is switched off, because gfxstream asks Venus for a memory type for its ColorBuffers that