WebKit mudando para Skia para renderização gráfica 2D
Os ports GTK e WPE do WebKit estão substituindo a biblioteca gráfica Cairo pelo mecanismo Skia do Google para renderização 2D, visando grandes ganhos de desempenho e melhor uso da GPU em Linux e dispositivos embarcados. Os comentadores observam que essa mudança não afeta o Safari da Apple, que continua usando Core Graphics, e destacam o papel central da Igalia na manutenção desses ports do WebKit que não são da Apple. A mudança provoca comparações mais amplas entre Skia e alternativas como Blend2D, Vello e Impeller do Flutter, levantando questões de trade-offs sobre complexidade de build, estabilidade de API, licenciamento e manutenção de longo prazo.
Escopo da migração para Skia
- A mudança se aplica aos ports WebKitGTK e WPEWebKit, não ao WebKit da Apple no macOS/iOS.
- O título do artigo foi posteriormente esclarecido; os comentadores enfatizam repetidamente que isto não é o Safari.
- O WPE visa dispositivos embarcados / do tipo quiosque; o WebKitGTK alimenta o navegador do GNOME e algumas webviews de aplicativos.
Motivação e benefícios percebidos
- A pilha atual para esses ports é Cairo + uma arquitetura centrada em CPU.
- Testes internos com Skia em desktop dobraram as pontuações do MotionMark mesmo antes de qualquer otimização séria.
- Comentadores esperam melhor desempenho e um pipeline acelerado por GPU mais moderno.
- Alguns ficam satisfeitos porque o Skia usa uma licença no estilo BSD compatível com GPL.
Limitações do Cairo
- O Cairo é descrito como praticamente apenas em manutenção, com poucos desenvolvedores ativos.
- Backends de GPU (por exemplo, OpenGL) foram removidos porque apresentavam pior desempenho e faltavam mantenedores.
- Arquitetura modelada no PostScript: boa qualidade e API simples, mas difícil de redirecionar para GPUs e com casos de borda lentos.
- Muitos projetos estão migrando para longe do Cairo ou saindo de seu caminho rápido.
Forças do Skia e ecossistema
- Amplamente usado: Chrome, Android, Firefox Canvas, Flutter (historicamente), .NET, UI da JetBrains, várias ferramentas e frameworks gráficos.
- Modelo de API: enfileirar comandos de desenho, otimizar e então renderizar tiles ou regiões de forma eficiente.
- Dá a alguns projetos uma forte garantia de “renderiza como o Chrome”.
Preocupações: build, estabilidade da API e interface C
- Há vários relatos de que o Skia é difícil de compilar: ferramentas personalizadas, dependências pesadas, requisitos que mudam, builds lentos ou frágeis.
- Outros dizem que os builds atuais com Bazel/GN são rápidos se as instruções forem seguidas.
- Reclamações sobre APIs C++ que mudam constantemente e a remoção de uma tentativa anterior de API C.
- Alguns gostariam que o WebKit expusesse ou ajudasse a estabilizar uma API C; outros argumentam que o Skia deve permanecer como detalhe de implementação interno.
Alternativas e panorama mais amplo de 2D
- Alternativas mencionadas: Blend2D, AGG, NanoVG, Vello, thorvg, BGFX, The-Forge, AmanithVG/SVG, QPainter e GSK do Qt, Impeller, motores personalizados.
- O autor do Blend2D defende renderização rápida apenas em CPU com uma ABI C estável como sucessor do Cairo/AGG.
- Alguns são céticos de que GPU seja sempre a resposta certa para 2D; outros enfatizam que GPU agora é padrão em navegadores.