El soporte de Skia fue añadido WebKitGTK y WPEWebKit para el renderizado de gráficos 2D
En el mundo del desarrollo de navegadores web y entornos de escritorio, la optimización y el rendimiento son una de las características más demandadas por parte de los usuarios y es que estos son aspectos críticos que influyen directamente en la experiencia del usuario y unos de los principales factores al momento de elegir un navegador web.
En este contexto, los equipos de desarrollo detrás de WPEWebKit y WebKitGTK (el motor de navegador utilizado en navegadores como Safari y Epiphany/GNOME Web), han incorporado la capacidad de utilizar la biblioteca Skia para el renderizado de gráficos 2D.
Durante los últimos años, los desarrolladores de WebKit han estado trabajando arduamente para mejorar el rendimiento gráfico de WebKitGTK y WPEWebKit. Aunque se han implementado características como el renderizado por subprocesos y VSync, y quedó claro que el renderizador 2D basado en CPU había alcanzado sus límites en términos de rendimiento y eficiencia. Se menciona que exploraron diversas opciones antes de optar por Skia. Los intentos de agregar capacidades de renderizado de GPU 2D a la biblioteca Cairo, utilizada por WebKitGTK, no tuvieron éxito debido a limitaciones en la arquitectura de la biblioteca. Además, un proyecto para desarrollar una biblioteca de renderizado personalizada se abandonó debido a las dificultades para lograr un equilibrio entre el rendimiento y la calidad del renderizado.
Hubo un intento de hacer que Cairo admitiera la renderización de GPU, lo que no funcionó particularmente bien debido a que la biblioteca estaba diseñada en torno a una operación con estado basada en el modelo PostScript, lo que resultó en una API conveniente y familiar, con una excelente calidad de salida, pero difícil de reorientar y con algunos casos de esquina particularmente lentos. Mientras tanto, otros motores web han trasladado más trabajo a la GPU, incluido el renderizado 2D, donde muchas operaciones son considerablemente más rápidas
Aunque la idea de utilizar Skia inicialmente fue rechazada debido a problemas con la estabilidad de la API, su uso como dependencia externa y la necesidad de mantener un módulo de terceros en WebKit, finalmente se consideró como la solución óptima para mejorar el rendimiento del renderizado gráfico en WebKitGTK.
Skia es una biblioteca de gráficos utilizada en varios productos de Google, como Chrome, Firefox, ChromeOS, Android y Flutter. Esta adición permite el renderizado con el uso de la GPU, lo que puede mejorar significativamente el rendimiento de la representación gráfica.
La migración hacia Skia fue realizada por Igalia como parte de una iniciativa para optimizar el rendimiento de WebKitGTK para GNOME. Se menciona que el motivo principal detrás de esta migración fue alcanzar un límite en el proceso de optimización del rendimiento de renderizado 2D utilizando la CPU. Utilizar la GPU proporciona una capacidad adicional para mejorar el rendimiento de la representación gráfica.
El proceso de transición a Skia comenzó con pruebas internas en diciembre de 2023 y los resultados iniciales fueron impresionantes, ya que de primer momento se observaron mejoras significativas en el rendimiento, especialmente en el escritorio. A medida que avanzaban las pruebas, se hizo evidente que Skia no solo ofrecía un rendimiento superior, sino que también simplificaría el código y abriría la puerta a nuevas funcionalidades.
En febrero de 2024, tras un intenso período de desarrollo y pruebas, la implementación de Skia alcanzó un estado «upstreamable», lo que significa que estaba listo para ser integrado en WebKitGTK y WPEWebKit de manera pública, con lo cual la respuesta inicial de la comunidad de desarrolladores fue positiva, lo que marcó un hito importante en el proceso de transición.
El equipo se compromete a futuro a continuar mejorando la implementación de Skia en WebKitGTK y WPEWebKit, con planes de optimizar aún más el rendimiento y la eficiencia del renderizado de GPU. Aunque actualmente el enfoque está en el port WPE, se espera que otros ports, como GTK, también reciban soporte de Skia en el futuro.
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlacé.