Adicionado suporte Skia WebKitGTK e WPEWebKit para renderização de gráficos 2D

Skia Logo

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.


Adicionar como fonte preferencial no Google