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.