Android Q + puede usar la API de gráficos Vulkan para representar la interfaz de usuario

La próxima versión principal de Android, Android 9, se lanzará el próximo mes para múltiples dispositivos. A diferencia de Android Oreo, donde las principales mejoras fueron en su mayoría ocultas, Android P ofrece más funciones orientadas al usuario, como la interfaz de usuario renovada, los gestos de navegación y el bienestar digital, al tiempo que continúa trabajando en Project Treble. Pero detrás de escena, Google ha renovado cómo funciona la representación gráfica en Android. En Android Oreo, Google comenzó a probar un back-end acelerado por hardware OpenGL para el motor de gráficos Skia que se completó en Android P. Sin embargo, Google no se detiene allí, ya que la compañía planea implementar el backend Vulkan del motor de gráficos Skia que lo hará aterrizar en Android Q o una versión posterior.

La evidencia de esto proviene de un comentario presentado por un ingeniero de Google sobre el código abierto Chromium Gerrit. El comentario hace referencia a un informe de error sobre la próxima implementación de la API de gráficos Vulkan para el navegador Google Chrome en Android. El comentario indica que, en algún momento en el futuro, "habrá un requisito" de tener soporte de API de Vulkan para Android WebView cuando "el marco [Android] comience a usar Vulkan para HWUI".


Renderizado de gráficos en Android

Skia es un motor de gráficos 2D de código abierto que se utiliza en Google Chrome, Chrome OS, Android, Flutter y otros proyectos importantes. Skia es un motor de representación de gráficos utilizado en las primeras versiones de Android para representar View y Canvas (las clases utilizadas para construir y dibujar la interfaz de usuario en la mayoría de las aplicaciones). Android 3.0 Honeycomb reemplazó parcialmente a Skia con HWUI, una biblioteca que convierte los comandos de Canvas en hardware. comandos OpenGL acelerados, aunque la biblioteca de gráficos 2D Skia todavía se usaba en algunas áreas como la rasterización de ruta. Paralelamente, Google también creó un backend OpenGL para Skia. El resultado es que algunas llamadas de gráficos se realizarían en la biblioteca de Skia, mientras que otras irían al backend de OpenGL. Para limpiar la arquitectura de gráficos, Google decidió que HWUI ahora hablará con Skia, que a su vez habla con su back-end OpenGL acelerado por hardware, para hacer la representación de la interfaz de usuario. El resultado es que las llamadas de gráficos para el marco de la interfaz de usuario seguirán una ruta y no dos.

Algunos de ustedes recordarán una Opción de desarrollador llamada "Establecer el procesador de GPU" en las primeras Vistas preliminares de desarrollador de Android 8.0 Oreo. Esta opción de desarrollador le permitió forzar a HWUI a usar Skia y su back-end OpenGL acelerado por hardware como el procesador de GPU para el marco de la interfaz de usuario. La opción de desarrollador se eliminó ya que este comportamiento ahora es el predeterminado.

Opción de desarrollador "Establecer GPU Renderer" en Android O Vistas previas del desarrollador

Código desmontado de libhwui.so en / system / lib que muestra los valores de debug.hwui.renderer y su valor predeterminado

Código C ++ coincidente en Android Oreo que muestra el valor predeterminado como "skiagl"

propiedad_get lógica

El siguiente movimiento de Google para mejorar la representación gráfica es cambiar de un backend acelerado por hardware OpenGL a un backend acelerado por hardware Vulkan. No es en absoluto un movimiento inesperado y es una progresión lógica, pero es bueno ver que se está trabajando para mejorar la representación gráfica en Android. Si bien el movimiento no solucionará todas las fuentes de retraso en Android, debería reducir los tiempos de renderizado de cuadros al reducir el procesamiento realizado por la CPU. Dado que este es un trabajo en progreso (no está terminado en Android P), esperamos que se lance con Android Q u otra versión futura de Android.


Una vista previa del uso de la API de gráficos Vulkan para representar la interfaz de usuario

En realidad, es posible probar el backend Vulkan para Skia en Android P ahora. Hay un parámetro de depuración que puede configurar para obligar a Android a usar la canalización de Skia Vulkan. Simplemente reinicie después de agregar la siguiente línea a /system/build.prop:

 debug.hwui.renderer=skiavk 

Android P usando la tubería Skia OpenGL

Android P usando la tubería Skia Vulkan

Agregar esta línea en un dispositivo con Android Oreo provocará un bloqueo, por lo que no lo recomendamos. Si bien su dispositivo se iniciará con este indicador en Android P, en este momento es bastante defectuoso. Google Pixel Launcher no puede procesar fondos, los videos animados en la Configuración no se cargan, y hay varias fallas gráficas con la barra de estado y las notificaciones. Aparte de eso, la mayoría de las aplicaciones, incluso los videos y juegos de YouTube como Doodle Jump, parecen cargarse bien.

Muchas gracias al Reconocido desarrollador luca020400 por su ayuda en la redacción de este artículo, por proporcionar las capturas de pantalla que muestran el código libhwui.so desmontado, y por proporcionar el indicador de depuración para probar el backend de Vulkan.


Fuente 1: Talkin 'Treble: cómo los ingenieros de Android están ganando la guerra contra la fragmentación [ArsTechnica]

Fuente 2: Canalización de gráficos de Android: del botón al framebuffer [blog inovex]

Fuente 3: página web de Skia [Google]

Fuente 4: Comentarios de Romain Guy, Android Graphics & Kotlin @ Google [Reddit]