Skip to content

Re-measure the screensaver set on the wall's own host — the board is done, the 30 savers are not #225

Description

@BernardJen

Every screensaver has now been measured at the real videowall resolution. Until today
every figure in this repo was taken at 3000×600 — a quarter of the pixels — so nothing
was known about the resolution the app actually runs at.

Method

node shot.mjs --root <repo>/input_viewer_electron --saver "<name>" \
  --size 6000x1200 --times 15 --seed 4242 --gpu

30 savers, 15 seconds each, one fixed seed (4242), real GPU (ANGLE/Metal, M3 Pro) — not
SwiftShader, which shadercheck deliberately forces for determinism and which says
nothing about speed. The list came from STRUCTURE_BASELINES, which is generated from
the registry, so it is all 30 and no preset names.

Results

Saver fps @ 6000×1200 Rewritten today
Flow Field 15.6 ⚠ —
Raymarch Fractal 18.4 ⚠ #217
Mandelbrot 26.6 ⚠ #210
Frost 34.3 ⚠ —
Bicycle Horizon 35.9 ⚠ —
Voronoi 43.8 ⚠ #211
Plasma 50.7 #216
Burning Ship 62.4 —
Strange Attractor 66.8 —
Aquarium 75.6 —
Weather 76.3 —
Metaballs 86.4 #218
Starfield Warp 91.6 #212
Truchet Tiles 92.5 #214
Reaction Diffusion 103.1 #220
Particle Swarm 103.8 —
Julia Set 108.7 —
Pong 113.7 #213
Matrix Rain 114.5 #219
Boids 114.6 —
Physarum 117.7 —
Moire Interference 118.9 #215
Double Pendulum 119.9 (vsync cap) —
ASCII Doughnut 120.0 (vsync cap) —
Wave Tank 120.0 (vsync cap) —
Tree Growth 120.0 (vsync cap) —
Game of Life 120.1 (vsync cap) —
Falling Sand 120.1 (vsync cap) —
DVD Logo 120.1 (vsync cap) —
White Particles 120.2 (vsync cap) —

Three savers stutter, and the worst is not new

Flow Field at 15.6 fps is the slowest saver in the set, and it predates this batch.
It is one of the twelve the owner singled out as already good. That is the opposite of the
expected result: the eleven rewrites merged today are mostly healthy, and the
pre-existing set carries the worst offender. Nobody had filed a bug, because nobody had
measured at this resolution.

Raymarch Fractal at 18.4 fps is the one real casualty of the rewrite batch. #217
carried the claim that it "costs less than the version it replaces"; that was flagged as
unverified when it merged, and at 18.4 fps it should not be relied on. The likely cost
centre is that the temporal accumulation blends into a canvas-sized HDR target every
frame — cheap at 1.8M pixels, much less so at 7.2M.

Mandelbrot at 26.6 fps is the price of the perturbation-theory dive from #121. That
may simply be what an unbounded dive costs; worth confirming rather than assuming.

Frost (34.3) and Bicycle Horizon (35.9) are marginal rather than broken, and neither is
from this batch.

Two limits on what this proves

  • Wrong machine. These are M3 Pro numbers, not the machine that drives the wall. A
    weaker GPU shifts everything down proportionally, so 35 fps here could be 20 there.
    The figures are comparative, not a pass mark. Re-running this on the actual wall
    host is the measurement that would settle it, and it is one command.
  • The ~120 readings are a vsync cap, not a measured ceiling. Twelve savers are
    refresh-bound and have unknown headroom above 120.

Not a release blocker

Nothing here is a regression. Flow Field has evidently been shipping at this speed for
some time. But three savers visibly stutter on the wall, and that is now measured instead
of suspected.

Acceptance criteria

  • Re-measure on the machine that actually drives the videowall, and record those
    numbers here — they are the ones that matter
  • Flow Field profiled and brought above 30 fps at 6000×1200
  • Raymarch Fractal above 30 fps, or its accumulation target decoupled from canvas size
  • Mandelbrot above 30 fps, or the cost documented as inherent to the dive with the
    per-frame iteration budget stated
  • Decide whether a floor belongs in CI at all — bench exists and shot.mjs reports
    fps, so a regression gate is possible, but a fps threshold on shared CI hardware is
    notoriously flaky and may be worse than nothing
  • Frost and Bicycle Horizon reviewed once the three below 30 are dealt with

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions