Re-measure the GPU numbers with an emu list that can be trusted

The table in the README compared our own app on software against the stock
Settings app on the GPU, and labelled both as Settings. The memory saving
beside it -- 1.1 GB -- came from `emu list` before 0984336 fixed its prefix
match, so it was one emulator's resident size reported against another's.
Both numbers were written down as recorded guidance, which is the worst
place for a figure nobody can reproduce.

Taken again on one AVD, same gesture, same app on both sides. Settings
scrolling its own list: 57.4% janky frames and 18 slow UI-thread frames on
software, 2.3% and 0 on the GPU; legacy jank 100% against 5.7%. Memory
twenty seconds after boot: 3537 MB against 2918 MB, so about 620 MB rather
than 1.1 GB.

The conclusion is stronger than the version that was wrong -- the stock
Settings app missed every frame's deadline on the rasteriser -- and the
correction is noted in place rather than quietly swapped, since the old
figure has been quoted between sessions today.

Also records which jank column to read, from the peer session's measurement
of a change whose modern figure barely moved while its legacy figure fell by
five sixths.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
irisandClaude Opus 5 committed 2026-08-31 00:26:55 -04:00
1 parent 098433681e
commit 1da445ae32
1 file changed
+22 -12
+22 -12
View File
@@ -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