Ottimizzare accelerazione video su Chromium (e Stadia)

Tags: 

avviso: unresolved

L'articolo tratta di un problema che non è stato ancora risolto. Quindi potrete trovare una descrizione del problema, riferimenti trovati in rete e i tentativi fatti per cercare di risolverlo. Ma non lo soluzione definitiva. Se volete contribuire con dei consigli, fatevi avanti!

Tutto è partito per cercare di far funzionare bene Stadia su Linux, che sul mio sistema linux + nvidia a 1080p lagga da far paura, anche quando la connessione internet è buona.

Da questo è partita una attività di ottimizzazione di chromium per gestire al meglio l'accelerazione hardware su NVIDIA e la riproduzione di video che voglio documentare, a prescindere da Stadia (che, comunque, continua ad andare male).

 

1. Installare una versione di chrome ottimizzata per VAAPI (Video acceleration API)

Su arch linux occorre installare da AUR "chromium-vaapi": https://aur.archlinux.org/packages/chromium-vaapi

Il problema è che allo stato attuale, sulla mia macchina, la compilazione va in errore.

Ho risolto usando il pacchetto precompilato che si trova qui:

https://download.opensuse.org/repositories/home:/kjliew/Arch/x86_64/

Dopo aver installato chromium è consigliabile inserirci la libreria WinedevineCDM (una libreria proprietaria per la lettura di contenuti criptati), prendendola da google-chrome (che ovviamente deve essere installato):

sudo cp -r /opt/google/chrome/WidevineCdm/ /usr/lib/chromium/

E' possibile verificare che la libreria sia attiva e funzionante andando alla pagina delle estensioni nella scheda "Plugin".

 

2. Installare il driver VAAPI specifico (NVIDIA)

Se si usa il driver proprietario NVIDIA occorre installare "libva-vdpau-driver-chromium" (che fa da bridge tra VAAPI e VDPAU, ed è ottimizzato per chromium).

https://download.opensuse.org/repositories/home:/kjliew/Arch/x86_64/

  • ALTERNATIVA: Se si usa una scheda grafica NVIDIA abbastanza recente da supportare nativamente il codice VP9 (si può verificare nella scheda VDPAU di "nvidia-settings"), allora si può provare a installare da AUR "libva-vdpau-driver-vp9-git" al posto di quello sopra. Per info: https://github.com/xtknight/vdpau-va-driver-vp9
  • La mia scheda non supporta VP9, e quindi non ho seguito questa strada.

    Nel wiki arch linux relativo all'accelerazione hardware ci sono i comandi per verificare che su sistema ci siano i corretti driver VDPAU e VAAPI:
    https://wiki.archlinux.org/index.php/Hardware_video_acceleration

     

    3. Eseguire chromium con i flag giusti:

    La base è eseguire chromium forzando l'abilitazione dell'accelerazione hardware e abilitando gl e vaapi, come segnato qui: https://wiki.archlinux.org/index.php/Chromium#Hardware_video_acceleration

    chromium --ignore-gpu-blacklist --use-gl=desktop --enable-features=VaapiVideoDecoder
  • Da notare che il flag "ignore-gpu-blacklist", cosi' come per molti (tutti?) dei flag citati in seguito, può essere reso persistente da "chrome://flags". In alternativa si può anche fare un file "chromium-flags.conf", per info https://wiki.archlinux.org/index.php/Chromium#Making_flags_persistent
  • Per verificare che tutto sia abilitato si può usare la pagina "chrome://gpu" (nella scheda "Video Decode"). Può essere utile eseguire anche dei video mediante chrome://media-internals/ e verificare il campo "video_decoder"

    Per forzare l'accelerazione GPU può essere utile attivare ulteriori flag, come segnalato qui: https://wiki.archlinux.org/index.php/Chromium#Force_GPU_acceleration

    chromium --ignore-gpu-blacklist --use-gl=desktop --enable-features=VaapiVideoDecoder --ignore-gpu-blocklist --enable-gpu-rasterization --enable-zero-copy
  • Inoltre si può provare il flag "--disable-gpu-driver-bug-workarounds"
  •  

    Stadia :(

    Anche con tutto quanto c'è scritto sopra, Stadia a 1080p continua ad andare male (la visuale "lagga" su movimenti ampi, in particolare quando c'è tanta roba sulla schermo, e questo anche quando la connessione va veloce).

    Provando su un PC windows (sempre usando chrome) invece è molto più giocabile: ci sono comunque momenti che la risoluzione peggiora, o che ci sono dei micro-scatti (probabile segno della connessione che non è sempre al top), ma comunque l'azione si riesce a seguire bene.

    Per questo motivo ho provato a fare ulteriori ottimizzazioni. Qui alcuni link utili a riguardo:

    https://community.stadia.com/t5/Stadia-on-Chrome/Google-chrome-amp-Linux...

    https://www.reddit.com/r/Stadia/comments/el8hj5/fix_stadias_lag_and_stut...

    https://www.phoronix.com/forums/forum/phoronix/general-discussion/117551...

     

    Vari test che ho fatto:

    • eseguire chromium tramite "gamemoderun", ovvero tramite "gamemode" che è un sistema che, in parole povere, imposta il cpu governor a "performace" durante l'esecuzione (si può fare anche manualmente tramite comandi shell, ma via gamemode è più easy)
    • forzare l'utilizzo del codec H264 invece del codec VP9, dal momento che la mia GPU non supporta VP9. Può essere fatto installando l'estensione di chrome "Stadia+" che abilita varie opzioni, tra le quali appunto la possibilità di forzare il codec. Si può anche attivare un bel monitor OSD che mostra vari parametri interessanti (per verificare che H264 sia andato su).
      Link stadia+: https://chrome.google.com/webstore/detail/stadia%20-extension/bbhmnnecic...
    • Provare diversi altri flag oltre a quelli sopra:

    --disable-gpu-vsync: Per qualcuno migliora (a me sembra che peggiori)

    --enable-pointer-lock-options: Qualcuno ha risolto anche solo con questo (riguarda il refresh rate del mouse), da me non pare cambiare niente di significativo

    --enable-oop-rasterization: ?

    --enable-native-gpu-memory-buffers: ?

    --disable-frame-rate-limit

     

    In pratica, nella versione più "estesa" del comando, eseguo questo:

    gamemoderun chromium --ignore-gpu-blacklist --disable-gpu-vsync --use-gl=desktop --enable-features=VaapiVideoDecoder --enable-gpu-rasterization --enable-oop-rasterization --enable-zero-copy --enable-native-gpu-memory-buffers --disable-frame-rate-limit --enable-pointer-lock-options --enable-extensions --kiosk https://stadia.google.com

    Purtroppo anche in questo modo non funziona bene (testato su 2 pc diversi).

    Alcuni commenti a riguardo dei vari test sui flag:

    • Da me disable-gpu-vsync sembra peggiorare invece che migliorare (testato assieme agli altri flags).
    • Sempre con buona connessione, mettendo SOLO --ignore-gpu-blacklist scatta, ma non lagga molto (da un sacco di errori in console relativi a GL).
    • Se metto --use-gl=desktop inizia a laggare, ma senza scattare (e non da più errori in console).
    • Se metto --enable-gpu-rasterization SENZA --use-gl=desktop, da talmente tanti errori in console che non parte più.
    • Solo con --ignore-gpu-blacklist --enable-features=VaapiVideoDecoder scatta, forse un po' meglio di --ignore-gpu-blacklist (ma forse no).

     

    Altri test dopo che mi sono rotto di cambiare i flag:

    • Provare "Cloudready", che permette di avere il SO di un "chromebook" su qualunque PC, e qualcuno dice che da li stadia funziona bene. Nada, di base mette il video a 720p che ovviamente va meglio (e grazie...).
    • Provare Brave-browser, dal momento che qualcuno dice che è una installazione di chrome già ottimizzata per i video e risolve: anche qui stessi problemi di lag.
    • Provare Edge, più o meno per gli stesso problemi sopra: va a 720p.

     

    Quindi, in sostanza, io non sono riuscito a far funzionare bene Stadia su Linux, e l'ho testato su 2 diversi PC (va detto che entrambi sono con Nvidia, anche se uno dei 2 ha optimus e quindi di base come scheda grafica usa l'intel interna, dal momento che non ho forzato l'uso della Nvidia). :(

     

    E niente: facciamo senza Stadia: l'ho installato più per curiosità per testare il cloud-gaming, ma mi ha già fatto perdere troppo tempo!

    Aggiungi un commento

    Scrivi la risposta in lettere (ad esempio "tre" e non "3")