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

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

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

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

Release. Ссылка here.