Современный веб-интерфейс все больше требует высокой производительности и плавного отображения визуального контента. С развитием технологий страницы становятся более насыщенными анимациями, сложной графикой и интерактивными элементами. Именно поэтому вопросы эффективности растеризации, то есть преобразования команд рисования в пиксели на экране, приобретают критическое значение для стабильной и быстрой работы браузеров. В центре внимания — инновационное решение от Google и команды Chromium под названием Skia Graphite, кардинально меняющее подход к растеризации в браузере Chrome, особенно на устройствах с Apple Silicon. Skia Graphite совмещает модернизацию графического движка и использование современных графических API для создания более производительного и гибкого механизма отрисовки.
Skia — это давно устоявшийся графический движок, лежащий в основе визуального отображения Chrome. С самого начала Skia обрабатывал команды браузера Blink и пользовательского интерфейса, преобразуя их в пиксели. Однако со временем, когда содержание веб-страниц стало более сложным и требовательным, традиционные методы растеризации столкнулись с ограничениями в производительности. Тогда возникла необходимость развития GPU-ускоренной растеризации, благодаря чему появился Ganesh — предшественник Graphite. Ganesh обеспечивал поддержку растеризации на графических процессорах с использованием OpenGL и его производных через слои совместимости, таких как ANGLE.
Этот подход позволял задействовать аппаратное ускорение практически на всех платформах, но имел свои ограничения из-за специализированной и разграниченной архитектуры и критической ориентации на OpenGL. Главная трудность Ganesh состояла в том, что архитектура OpenGL изначально была не предназначена для современных требований многопоточного исполнения и расширенных возможностей GPU, таких как вычислительные шейдеры. По мере эволюции таких графических API, как Vulkan, Metal и Direct3D 12, появилась возможность значительно эффективнее использовать аппаратные ресурсы, что позволило делать рендеринг более параллельным, гибким и оптимизированным. Однако глубоко укоренившаяся в OpenGL архитектура Ganesh не смогла полноценно воспользоваться этими новыми возможностями из-за наслоения множества специализированных кодовых путей и технического долга. Именно поэтому группа разработчиков Chromium приняла решение создать с нуля новый растеризационный бэкенд — Graphite.
Его главной особенностью стало упрощение и систематизация архитектуры, отказ от громоздких и сложных внутри реализации Ganesh решений, что позволило внести радикально свежий взгляд на задачи рендеринга. Graphite изначально разрабатывался с прицелом на современные графические API и высокопроизводительную многопоточность, что сегодня особенно важно с учётом стремительного роста потребностей в вычислительной мощности. Одним из ключевых технологических решений в Graphite стало использование Dawn — реализации WebGPU API, предоставляющей единый абстрактный уровень работы с нативными графическими API различных платформ. Благодаря этому браузер получает доступ к мощной функциональности Metal на macOS и iOS, Vulkan на Android и Windows, а также Direct3D 12 на Windows нативно, минуя необходимость поддержки множества различных кодовых баз. Такой подход не только упрощает поддержку и развитие кода, но и резко сокращает технический долг.
В дополнение Graphite впервые интегрировал использование 2D depth-тестирования, возможность, которая ранее практически не применялась в 2D-графике внутри Chrome. По сути, это технология, позволяющая эффективно уменьшать количество избыточных операций рисования (overdraw) за счёт правильного порядка отрисовки непрозрачных и полупрозрачных элементов. Прозрачные эффекты продолжают работать по правилам от дальних к ближним объектам, а непрозрачные теперь можно отрисовывать более оптимально с помощью Z-буфера, тем самым уменьшая нагрузку на GPU и повышая производительность. Инновационный подход также упрощает реализацию отсечения (clipping), заменяя комплексные стеки клипирования более простыми и эффективными методами. Кроме того, Graphite изначально учитывал потребности в многопоточном исполнении.
До этого Ganesh и OpenGL ограничивали растеризацию одной основной нитью, что приводило к накоплению задержек и подёргиваниям интерфейса при росте нагрузки. В Graphite же введены концепции независимых записывающих компонентов (Recorders), работающих параллельно на разных потоках, что разгружает главный поток GPU и ускоряет подготовку графических команд, не снижая при этом качества визуализации. Результаты внедрения Graphite уже впечатляют. На Macbook Pro с процессором M3 удалось увеличить показатели Motionmark 1.3 — бенчмарка, измеряющего быстродействие графического рендеринга — почти на 15%.
Кроме того, улучшились реальные метрики пользовательского опыта: время до следующей отрисовки после взаимодействия (INP), время появления самого крупного значимого элемента страницы (LCP), плавность графики и сокращение пропущенных кадров. Всё это вместе выливается в более приятный и отзывчивый опыт работы с современным сайтом, снижая количество лагов и задержек. Graphite не только улучшил качество отрисовки и производительность, но и открыл дверь для будущих перспектив. Среди приоритетных направлений — расширение многонишевой растеризации, что позволит распределять задачи по нескольким потокам и еще сильнее разгружать основной GPU-процесс. Технология способна более умно управлять памятью, снижая ресурсы для простого контента путем динамического перераспределения команд рисования.
Также исследуются возможности использования GPU для вычислительной растеризации путей (path rasterization), что сегодня становится особенно актуально с учётом появления конкурирующих решений, таких как Pathfinder и Vello. В перспективе это позволит повысить визуальное качество за счёт лучшей обработки сглаживания и контролировать производительность даже на слабых и встроенных графических модулях. Кроме того, снижение количества шейдерных компиляций и упрощение графических конвейеров сделают процесс работы браузера более стабильным и менее подверженным неожиданным тормозам, часто встречающимся из-за динамически меняющихся эффектов и сложных сцен. Skia Graphite — впечатляющий шаг вперёд в развитии технологии растеризации у Chrome. Это идеальный пример того, как глубокое переосмысление устаревших технологий и применение современных методов могут привести не просто к небольшому улучшению, а к качественному прорыву в производительности и качестве отображения.
Благодаря Graphite пользователи браузера получат более быстрый, плавный и экономичный опыт работы в вебе, что особенно актуально в эпоху усложняющихся и насыщенных графикой сайтов. В преддверии дальнейшего развития веб-экосистемы Graphite задаст новый стандарт для обработки графики с использованием всех возможностей современных GPU и вычислительных архитектур. Эта система становится надежным фундаментом для создания более интерактивных и визуально привлекательных приложений в браузере без компромиссов на скорости и стабильности. В итоге все это ведет к более качественному восприятию интернета и новым возможностям для разработчиков и пользователей по всему миру.