13.04.2024

WebKit переходит на использование библиотеки Skia для отрисовки 2D-графики

Развиваемый компанией Apple браузерный движок WebKit, применяемый в таких браузерах, как Safari и Epiphany (GNOME Web), переходит на использование для отрисовки 2D-графики библиотеки Skia, применяемой в Google Chrome, ChromeOS, Android и Flutter, и поддерживающей отрисовку с использованием GPU. Портирование проведено компанией Igalia в рамках инициативы по оптимизации производительности WebKitGTK для GNOME. В качестве причины миграции упоминается достижение предела в процессе оптимизации производительности 2D-отрисовки с использованием CPU, и возникновение необходимости задействовать GPU для дальнейшего повышения производительности.

Попытки добавления в библиотеку Cairo, которая применялась в WebKit, возможности 2D-отрисовки с использованием GPU не увенчались успехом из-за архитектурных особенностей данной библиотеки, а проект написания собственной библиотеки отрисовки был отброшен из-за трудности в достижении баланса между производительностью и качеством отрисовки. В итоге, разработчики из Igalia вернулись к идее использования библиотеки Skia, которая была оптимальным решением, но изначально была забракована из-за отсутствия стабильного API, проблем с использованием в качестве внешней зависимости и необходимости сопровождать сторонний модуль в WebKit.

Решению перевести WebKit на библиотеку Skia способствовало то, что связанные с заменой зависимостей недостатки перекрывали достоинства, которые выражались не только в повышении производительности отрисовки, но и в упрощении кодовой базы и расширения возможностей для развития новой функциональности. Что касается производительности, то начальный порт WebKit на Skia при прохождении тестов MotionMark на ПК показал ускорение отрисовки в два раза, по сравнению со старым кодом, использующим CPU.

В феврале 2024 года ветка WebKit, переведённая на Skia, достигла готовности к передаче в основной состав кодовой базы WebKit. После обсуждения с разработчиками из Google, Sony, Apple и Red Hat было принято решение о переводе WebKit с библиотеки Cairo на Skia и в настоящее время код для поддержки Skia уже принят в основную ветку WebKit.

Источник: https://www.opennet.ru/opennews/art.shtml?num=60627 Источник.