Skip to content

Release 0.9.4 dev.14

piggei edited this page Oct 3, 2026 · 1 revision

Release 0.9.4-dev.14

Release: 0.9.4
Build: 0.9.4-dev.14
Stable behavioral baseline: 0.9.3

Purpose

0.9.4-dev.14 begins MatrixPortal-specific PSRAM optimization after a physical 2 MiB baseline was collected with native 64x64 HUB75 and an active Carousel. This build enables transient whole-file GIF source staging only on MatrixPortal S3.

Persistent source reuse and one-item look-ahead remain disabled on MatrixPortal until this smaller staging policy is independently qualified.

Physical MatrixPortal baseline

The dev.13 MatrixPortal run reported:

psram=total:2097152 free:1940364 minFree:1940364 peakUsed:156788 largest:1933312 minLargest:1900544
gifDecoder=animatedgif12/psram
gifStage=state:fs bytes:0 peak:0 attempts:0 ok:0 fallback:0 max:0 reserve:4194304
gifSourceCache=state:off entries:0 bytes:0
gifPrefetch=attempts:0 ok:0 cached:0 fail:0 bytes:0

This left about 1.85 MiB free PSRAM and about 1.84 MiB in the current largest contiguous block after one Carousel pass.

MatrixPortal policy in dev.14

transient stage maximum   256 KiB
pre-allocation reserve      1 MiB
persistent source cache     off
Carousel look-ahead         off

The profile sets:

IDOT_GIF_PSRAM_STAGE_MAX=262144
IDOT_GIF_PSRAM_STAGE_RESERVE=1048576

The underlying IDotMatrixGifSourceStage implementation, AnimatedGIF callback contract and LittleFS fallback behavior are unchanged from the Waveshare-qualified path.

Waveshare policy

Unchanged from the qualified dev.12/dev.13 baseline:

transient stage maximum   2 MiB
pre-allocation reserve    4 MiB
persistent source cache   1 MiB
per-entry admission      512 KiB
metadata entries          12
one-item look-ahead       on

Qualification gate

On physical MatrixPortal S3:

  1. confirm build=0.9.4-dev.14;
  2. run a cold-cache Carousel containing several GIFs;
  3. verify gifStage max:262144 reserve:1048576;
  4. verify eligible GIFs increment attempts and ok with fallback=0 for the current corpus;
  5. verify gifSourceCache=state:off and gifPrefetch attempts:0;
  6. confirm PSRAM telemetry invariants and largest-block recovery;
  7. confirm playback remains visually fluid.

Do not enable MatrixPortal persistent source reuse or prefetch until this gate passes.

Clone this wiki locally