Factory.rive renders at ~10 FPS on an Android TV with a Mali GPU, Factory.flutter at 60 FPS

Aperta
#667 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
45/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
android, dart, flutter

Direzione di ricerca

Start by comparing Factory.rive and Factory.flutter using the supplied profile build and FrameTiming measurements, then investigate the rendering path implicated by the resolution scaling results and related issue #638. Reproduce on an Android TV with a Mali GPU if available; the reported FPS and raster times provide the baseline, and done means identifying and fixing the pixel-count-related slowdown while restoring performance close to Factory.flutter's 60 FPS.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

On a TCL Google TV (Android 14, MediaTek MT5896 with a Mali GPU, 32-bit armeabi-v7a userspace, 2.4 GB RAM, 1920x1080 UI) a single full-screen RiveWidget renders at about 10 FPS with Factory.rive. The same file with Factory.flutter renders at 60 FPS.

The scene is one 1920x1080 artboard with a few text runs, a list of 24 small nested artboards (gradient fill, stroke, feathered shadow, looping scale animation) and one ScriptedLayout. Profile build, frame times from FrameTiming:

Factory.rive, display resolution: 10.3 FPS, raster p50 80.9 ms
Factory.rive, RenderResolution.layout(scale: 0.75): 14.3 FPS, raster p50 57.7 ms
Factory.rive, RenderResolution.layout(scale: 0.5): 20.0 FPS, raster p50 33.5 ms
Factory.flutter, display resolution: 60 FPS, raster p50 6.9 ms

Removing all 24 cards only brings Factory.rive to about 11.6 FPS, so the cost seems to follow the pixel count rather than the content. Switching Impeller from Vulkan to OpenGL ES (ImpellerBackend=opengles) made no difference.

Versions: rive 0.14.11, rive_native 0.1.11, Flutter 3.47.7. The .riv was built with Rive CLI 1.7.0 with signed scripts.

Possibly related: #638

Lingua principale
Dart
Stelle
1.5k
Fork
244
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di rive-app/rive-flutter

Tutte le issue di rive-app/rive-flutter

Issue simili

Altre issue su Dart

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.