WebKit cambia a Skia para el renderizado de gráficos 2D
Los ports GTK y WPE de WebKit están reemplazando la biblioteca gráfica Cairo por el motor Skia de Google para el renderizado 2D, con el objetivo de lograr grandes mejoras de rendimiento y un mejor aprovechamiento de la GPU en Linux y dispositivos embebidos. Los comentaristas señalan que este cambio no afecta a Safari de Apple, que sigue usando Core Graphics, y destacan el papel central de Igalia en el mantenimiento de estos ports no pertenecientes a Apple. La medida desencadena comparaciones más amplias entre Skia y alternativas como Blend2D, Vello e Impeller de Flutter, planteando preguntas sobre las compensaciones entre complejidad de compilación, estabilidad de la API, licencias y mantenimiento a largo plazo.
Alcance de la migración a Skia
- El cambio se aplica a los ports WebKitGTK y WPEWebKit, no al WebKit de macOS/iOS de Apple.
- El título del artículo se aclaró más tarde; los comentaristas insisten repetidamente en que esto no es Safari.
- WPE apunta a dispositivos embebidos / estilo quiosco; WebKitGTK impulsa el navegador de GNOME y algunos webviews de aplicaciones.
Motivación y beneficios percibidos
- La pila actual para estos ports es Cairo + una arquitectura centrada en CPU.
- Pruebas internas con Skia en escritorio duplicaron las puntuaciones de MotionMark incluso antes de una optimización seria.
- Los comentaristas esperan mejor rendimiento y una canalización más moderna acelerada por GPU.
- A algunos les alegra que Skia use una licencia de estilo BSD compatible con GPL.
Limitaciones de Cairo
- Cairo se describe como prácticamente solo de mantenimiento, con pocos desarrolladores activos.
- Los backends de GPU (p. ej., OpenGL) se eliminaron porque rendían peor y carecían de mantenedores.
- Arquitectura modelada sobre PostScript: buena calidad y API simple, pero difícil de adaptar a GPUs y con casos límite lentos.
- Muchos proyectos están alejándose de Cairo o saliéndose de su ruta rápida.
Fortalezas de Skia y su ecosistema
- Ampliamente usado: Chrome, Android, Firefox Canvas, Flutter (históricamente), .NET, la UI de JetBrains y varias herramientas y marcos gráficos.
- Modelo de API: poner en cola comandos de dibujo, optimizar y luego renderizar teselas o regiones de forma eficiente.
- Da a algunos proyectos una fuerte garantía de “se renderiza como Chrome”.
Preocupaciones: compilación, estabilidad de la API e interfaz C
- Múltiples informes dicen que Skia es difícil de compilar: herramientas personalizadas, dependencias pesadas, requisitos cambiantes, compilaciones lentas o frágiles.
- Otros dicen que las compilaciones actuales con Bazel/GN son rápidas si se siguen las instrucciones.
- Quejas sobre APIs C++ en constante cambio y la eliminación de un intento previo de API C.
- Algunos desean que WebKit exponga o ayude a estabilizar una API C; otros argumentan que Skia debería seguir siendo un detalle interno de implementación.
Alternativas y panorama más amplio del 2D
- Alternativas mencionadas: Blend2D, AGG, NanoVG, Vello, thorvg, BGFX, The-Forge, AmanithVG/SVG, QPainter de Qt y GSK, Impeller, motores personalizados.
- El autor de Blend2D argumenta a favor de un renderizado rápido solo en CPU con un ABI C estable como sucesor de Cairo/AGG.
- Algunos dudan de que la GPU sea siempre la respuesta correcta para 2D; otros subrayan que la GPU ahora es estándar en los navegadores.