Skia é uma biblioteca gráfica 2D de código aberto
No mundo do desenvolvimento navegadores da web e ambientes de desktop, otimização e desempenho são uma dos recursos mais solicitados pelos usuários e esses são aspectos críticos que influenciam diretamente na experiência do usuário e um dos principais fatores na escolha de um navegador web.
Nesse contexto, equipes de desenvolvimento por trás do WPEWebKit e WebKitGTK (o mecanismo de navegador usado em navegadores como Safari e Epiphany/GNOME Web), incorporaram a capacidade de usar a biblioteca Skia para renderizar gráficos 2D.
Durante os últimos anos, Os desenvolvedores do WebKit têm trabalhado muito para melhorar o desempenho Gráfico WebKitGTK e WPEWebKit. Emborae recursos foram implementados como renderização encadeada e VSync, e ficou claro que o renderizador 2D baseado em CPU atingiu seus limites em termos de desempenho e eficiência. É mencionado que eles exploraram várias opções antes de optarem pelo Skia. As tentativas de adicionar recursos de renderização de GPU 2D à biblioteca Cairo, usada pelo WebKitGTK, não tiveram sucesso devido a limitações na arquitetura da biblioteca. Além disso, um projeto para desenvolver uma biblioteca de renderização personalizada foi abandonado devido a dificuldades em encontrar um equilíbrio entre desempenho e qualidade de renderização.
Houve uma tentativa de fazer com que Cairo suportasse renderização de GPU, o que não funcionou muito bem porque a biblioteca foi projetada em torno de uma operação com estado baseada no modelo PostScript, resultando em uma API conveniente e familiar, com excelente qualidade de saída, mas difícil de reorientar e com alguns casos particularmente lentos. Enquanto isso, outros mecanismos da web transferiram mais trabalho para a GPU, incluindo a renderização 2D, onde muitas operações são consideravelmente mais rápidas.
Embora A ideia de usar o Skia foi inicialmente rejeitada devido a problemas de estabilidade da API, seu uso como dependência externa e necessidade de manter um módulo de terceiros no WebKit, foi finalmente considerada a solução ótima para melhorar o desempenho de renderização gráfica no WebKitGTK.
Skia é uma biblioteca gráfica usado em vários produtos do Google, como Chrome, Firefox, ChromeOS, Android e Flutter. Esta adição permite a renderização usando a GPU, o que pode melhorar significativamente o desempenho da renderização gráfica.
A migração para Skia foi realizada pela Igalia como parte de uma iniciativa para otimizar o desempenho do WebKitGTK para GNOME. Menciona-se que o principal motivo dessa migração foi atingir um limite no processo de otimização do desempenho da renderização 2D usando a CPU. O uso da GPU fornece capacidade adicional para melhorar o desempenho de renderização gráfica.
O processo de transição para Skia começou com testes internos em dezembro de 2023 e os resultados iniciais foram impressionantes, já que melhorias significativas no desempenho foram observadas imediatamente, especialmente no desktop. À medida que os testes avançavam, ficou claro que o Skia não apenas oferecia desempenho superior, mas também simplificaria o código e abriria as portas para novas funcionalidades.
Em fevereiro de 2024, após um intenso período de desenvolvimento e testes, a implementação de Skia atingiu um estado “upstreamable”, o que significa que estava pronto para ser integrado publicamente ao WebKitGTK e WPEWebKit, com o que a resposta inicial da comunidade de desenvolvedores foi positiva, marcando um marco importante no processo de transição.
A equipe está empenhada em continuar a melhorar a implementação do Skia no WebKitGTK e no WPEWebKit daqui para frente, com planos para otimizar ainda mais o desempenho e a eficiência da renderização da GPU. Embora o foco esteja atualmente no porto WPE, espera-se que outros portos, como o GTK, também recebam apoio da Skia no futuro.
Finalmente se você estiver interessado em saber mais sobre isso, você pode verificar os detalhes no próximo link.