Android Q+ può utilizzare l'API grafica Vulkan per eseguire il rendering dell'interfaccia utente

Skia, il motore grafico open source di Google, ha un backend API Vulkan Graphics. Questo backend può essere utilizzato per eseguire il rendering dell'interfaccia utente in Android Q o versioni successive.

La prossima versione principale di Android, Android 9, verrà rilasciata il mese prossimo per più dispositivi. A differenza di Android Oreo, dove i principali miglioramenti erano per lo più nascosti, Android P offre più funzionalità rivolte all'utente come l'interfaccia utente rinnovata, i gesti di navigazione e il benessere digitale, continuando al tempo stesso il lavoro su Project Alti. Ma dietro le quinte, Google ha rinnovato il modo in cui funziona il rendering grafico su Android. In Android Oreo, Google ha iniziato a testare un backend con accelerazione hardware OpenGL per il motore grafico Skia che è stato completato in Android P. Google non si ferma qui, tuttavia, poiché l'azienda prevede di implementare il Backend Vulcaniano del motore grafico Skia che arriverà su Android Q o versioni successive.

La prova di ciò viene da a commento inviato da un ingegnere di Google sull'open source Chromium Gerrit. Il commento fa riferimento a una segnalazione di bug sulla prossima implementazione dell'API grafica Vulkan per il browser Google Chrome su Android. Il commento afferma che, in futuro, "ci sarà l'obbligo" di avere l'API Vulkan supporto per Android WebView quando il framework "[Android] inizierà a utilizzare Vulkan per HWUI."


Rendering grafico in Android

Per informazioni di base, Skia è un motore grafico 2D open source utilizzato in Google Chrome, Chrome OS, Android, Flutter e altri progetti importanti. Skia è un motore di rendering grafico utilizzato nelle prime versioni di Android per il rendering Visualizzazione E Tela (le classi utilizzate per creare e disegnare l'interfaccia utente nella maggior parte delle app.) Android 3.0 Honeycomb ha parzialmente sostituito Skia con HWUI, una libreria che converte Comandi Canvas in comandi OpenGL con accelerazione hardware, sebbene la libreria grafica 2D Skia fosse ancora utilizzata in alcune aree come il percorso rasterizzazione. Parallelamente Google ha creato anche un backend OpenGL per Skia. Il risultato è che alcune chiamate grafiche verrebbero effettuate alla libreria Skia mentre altre andrebbero al backend OpenGL. Per ripulire l'architettura grafica, Google ha deciso che HWUI ora comunicherà con Skia, che a sua volta comunica con il suo backend OpenGL con accelerazione hardware, per eseguire il rendering dell'interfaccia utente. Il risultato è che le chiamate grafiche per il framework dell'interfaccia utente seguiranno un percorso e non due.

Alcuni di voi potrebbero ricordare un'opzione sviluppatore chiamata "Imposta rendering GPU" nelle prime anteprime per sviluppatori di Android 8.0 Oreo. Questa opzione per sviluppatori ti ha consentito di forzare HWUI a utilizzare Skia e il suo backend OpenGL con accelerazione hardware come renderer GPU per il framework dell'interfaccia utente. L'opzione sviluppatore è stata rimossa poiché questo comportamento è ora l'impostazione predefinita.

Opzione sviluppatore "Imposta rendering GPU" nelle anteprime per sviluppatori Android O

La prossima mossa di Google per migliorare il rendering grafico è passare da un backend con accelerazione hardware OpenGL a un backend con accelerazione hardware Vulkan. Non è affatto una mossa inaspettata ed è una progressione logica, ma è bello vedere che si sta lavorando per migliorare il rendering grafico su Android. Anche se la mossa non risolverà ogni fonte di ritardo su Android, dovrebbe ridurre i tempi di rendering dei frame riducendo l'elaborazione eseguita dalla CPU. Dato che si tratta di un work-in-progress (è incompleto in Android P), ci aspettiamo che venga lanciato con Android Q o un'altra versione futura di Android.


Un'anteprima dell'utilizzo dell'API grafica Vulkan per il rendering dell'interfaccia utente

Attualmente è possibile testare il backend Vulkan per Skia su Android P. È disponibile un parametro di debug che puoi impostare per forzare Android a utilizzare la pipeline Skia Vulkan. Riavvia semplicemente dopo aver aggiunto la seguente riga a /system/build.prop:

debug.hwui.renderer=skiavk

L'aggiunta di questa riga su un dispositivo con Android Oreo provocherà un arresto anomalo, quindi non lo consigliamo. Sebbene il tuo dispositivo si avvii con questo flag su Android P, al momento è piuttosto difettoso. Google Pixel Launcher per lo più non riesce a eseguire il rendering degli sfondi, i video animati nelle Impostazioni non vengono caricati e sono presenti diversi problemi grafici con la barra di stato e le notifiche. A parte questo, la maggior parte delle app, anche i video e i giochi di YouTube come Doodle Jump, sembrano caricarsi correttamente.

Mille grazie allo sviluppatore riconosciuto XDA luca020400 per il loro aiuto nella stesura di questo articolo, per aver fornito gli screenshot che mostrano il codice libhwui.so disassemblato e per aver fornito il flag di debug per testare il backend Vulkan.


Fonte 1: Talkin' Treble: come gli ingegneri Android stanno vincendo la guerra alla frammentazione [ArsTechnica]

Fonte 2: pipeline grafica Android: dal pulsante al framebuffer [blog dell'inovex]

Fonte 3: pagina web Skia [Google]

Fonte 4: commenti di Romain Guy, grafica Android e Kotlin @ Google [Reddit]