O Android Q+ pode usar a API Vulkan Graphics para renderizar a IU

Skia, o mecanismo gráfico de código aberto do Google, possui um back-end da API Vulkan Graphics. Este back-end pode ser utilizado para renderizar a IU no Android Q ou posterior.

A próxima versão principal do Android, Android 9, está prevista para ser lançada no próximo mês para vários dispositivos. Ao contrário do Android Oreo, onde as principais melhorias ocorreram principalmente nos bastidores, o Android P oferece mais recursos voltados para o usuário como a interface de usuário renovada, gestos de navegação e bem-estar digital, ao mesmo tempo em que continua o trabalho no Projeto Triplo. Mas nos bastidores, o Google renovou a forma como a renderização gráfica funciona no Android. No Android Oreo, o Google começou a testar um back-end acelerado por hardware OpenGL para o mecanismo gráfico Skia que foi concluído no Android P. O Google não para por aí, no entanto, já que a empresa planeja implementar o Back-end Vulkan do mecanismo gráfico Skia que chegará ao Android Q ou uma versão posterior.

A evidência disso vem de um Comente enviado por um engenheiro do Google no código aberto Chromium Gerrit. O comentário faz referência a um relatório de bug sobre a próxima implementação da API Vulkan Graphics para o navegador Google Chrome no Android. O comentário afirma que, em algum momento no futuro, “haverá um requisito” para ter a API Vulkan suporte para Android WebView quando a estrutura "[Android] começar a usar Vulkan para HWUI."


Renderização gráfica no Android

Para conhecimento básico, Skia é um mecanismo gráfico 2D de código aberto usado no Google Chrome, Chrome OS, Android, Flutter e outros projetos importantes. Skia é um mecanismo de renderização gráfica usado nas primeiras versões do Android para renderizar Visualizar e Tela (as classes usadas para construir e desenhar a IU na maioria dos aplicativos.) O Android 3.0 Honeycomb substituiu parcialmente o Skia pelo HWUI, uma biblioteca que converte Comandos Canvas em comandos OpenGL acelerados por hardware, embora a biblioteca gráfica 2D Skia ainda fosse usada em algumas áreas como path rasterização. Paralelamente, o Google também criou um backend OpenGL para Skia. O resultado é que algumas chamadas gráficas seriam feitas para a biblioteca Skia enquanto outras iriam para o backend OpenGL. Para limpar a arquitetura gráfica, o Google decidiu que o HWUI agora conversará com o Skia, que por sua vez se comunica com seu back-end OpenGL acelerado por hardware, para fazer a renderização da interface do usuário. O resultado é que as chamadas gráficas para a estrutura da UI seguirão um caminho e não dois.

Alguns de vocês devem se lembrar de uma opção de desenvolvedor chamada “Definir renderizador de GPU” nas primeiras visualizações do desenvolvedor do Android 8.0 Oreo. Esta opção do desenvolvedor permitiu forçar o HWUI a usar o Skia e seu back-end OpenGL acelerado por hardware como renderizador de GPU para a estrutura da UI. A opção do desenvolvedor foi removida porque esse comportamento agora é o padrão.

Opção de desenvolvedor "Definir renderizador de GPU" nas visualizações para desenvolvedores do Android O

O próximo passo do Google para melhorar a renderização gráfica é mudar de um back-end acelerado por hardware OpenGL para um back-end acelerado por hardware Vulkan. Não é um movimento inesperado e é uma progressão lógica, mas é bom ver que o trabalho está sendo feito para melhorar a renderização gráfica no Android. Embora a mudança não corrija todas as fontes de atraso no Android, ela deve reduzir o tempo de renderização de quadros, reduzindo o processamento feito pela CPU. Dado que este é um trabalho em andamento (está inacabado no Android P), esperamos que seja lançado com o Android Q ou outra versão futura do Android.


Uma prévia do uso da API Vulkan Graphics para renderizar a IU

Na verdade, é possível testar o backend Vulkan para Skia no Android P agora. Há um parâmetro de depuração que você pode definir para forçar o Android a usar o pipeline Skia Vulkan. Simplesmente reinicie após adicionar a seguinte linha a /system/build.prop:

debug.hwui.renderer=skiavk

Adicionar esta linha em um dispositivo com Android Oreo resultará em travamento, por isso não recomendamos isso. Embora seu dispositivo inicialize com esse sinalizador no Android P, ele apresenta muitos bugs no momento. O Google Pixel Launcher geralmente falha ao renderizar qualquer plano de fundo, os vídeos animados nas configurações não carregam e há várias falhas gráficas na barra de status e nas notificações. Fora isso, a maioria dos aplicativos, até mesmo vídeos e jogos do YouTube como o Doodle Jump, parecem carregar perfeitamente.

Muito obrigado ao desenvolvedor reconhecido pelo XDA luca020400 pela ajuda na redação deste artigo, por fornecer as capturas de tela mostrando o código libhwui.so desmontado e por fornecer o sinalizador de depuração para testar o back-end do Vulkan.


Fonte 1: Talkin’ Treble: Como os engenheiros do Android estão vencendo a guerra contra a fragmentação [ArsTechnica]

Fonte 2: Pipeline de gráficos do Android: do botão ao framebuffer [blog inovex]

Fonte 3: página da web Skia [Google]

Fonte 4: Comentários de Romain Guy, Android Graphics e Kotlin @ Google [Reddit]