Развиваният от компанията Apple браузърен двигател WebKit, използван в браузъри като Safari и Epiphany (GNOME Web), преминава на използването на библиотеката Skia за рендериране на 2D графика, приложима в 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 на PC показа ускорение на рендеринга два пъти в сравнение със стария код, използващ CPU.
През февруари 2024 година клонът на WebKit, преместен на Skia, достигна готовност за предаване в основния състав на кодовата база на WebKit. След обсъждане с разработчици от Google, Sony, Apple и Red Hat беше взето решение за преминаване на WebKit от библиотеката Cairo на Skia и в момента кодът за поддръжка на Skia вече е приет в основния клон на WebKit.
Източник: opennet.ru
