WebRender
WebRender — это такая хитровыдуманная вундервафля от сумрачных гениев из Мозиллы, призванная спасти Firefox от окончательного скатывания в УГ на фоне всеобщего засилья Хромонога. Суть проста как мычание: вместо того, чтобы по старинке насиловать центральный процессор отрисовкой очередной страницы Вконтактика с гигабайтом жабоскрипта и тонной стилей, WebRender перекладывает эту грязную работёнку на плечи (и шейдерные блоки) вашей игровой видеокарты. Да-да, той самой, которую вы покупали для Киберсранка, а теперь она будет потеть над корявой версткой сайта местной шаурмячной.
Зачем оно вообще надо?[править]
Долгие годы браузеры, включая престарелого Gecko, рендерили веб-страницы, опираясь в основном на CPU. Пока веб был текстом и парой картинок, это ещё как-то работало. Но потом пришли вебмакаки 2.0, обмазались жабоскриптом, HTML5, CSS3-анимациями по самые помидоры и начали лепить монстров, от которых даже топовые айдевятые начинали плакать кровавыми слезами и уходить в троттлинг. Прокрутка дёргалась, анимации лагали, а пользователь Анонимус грустно вздыхал, глядя на слайд-шоу вместо плавной ленты новостей.
Вот тут-то на сцену и выкатился WebRender, изначально рождённый в недрах экспериментального движка Servo. Написанный на модном-молодёжном Расте (что само по себе повод для отдельного холивара о безопасности головного мозга), он обещал миру плавность, скорость и райские кущи 60 FPS даже на самых тяжёлых сайтах. Идея была в том, чтобы подходить к рендерингу веб-страницы так же, как игровые движки подходят к рендерингу 3D-сцены: распараллелить всё, что можно, и задействовать GPU на полную катушку. Вместо последовательного рисования элементов — батчинг, атласы текстур и прочие страшные слова из мира OpenGL/DirectX/Vulkan.
А оно взлетело?[править]
Как водится, реальность оказалась несколько сложнее рекламных буклетов. Да, во многих случаях WebRender действительно давал заметный прирост производительности и плавности, особенно на страницах с кучей визуальных свистоперделок. Но одновременно с этим вылезли и проблемы:
Драйвера, будь они неладны! То, что прекрасно работало на одной видяхе с одной версией дров, могло превращать браузер в тыкву на другой конфигурации. Анонимусы с ноутов с интегрированной графикой Intel или старыми картами AMD/Nvidia познали всю боль отладки и танцев с бубном в about: config.
Баги, баги, баги. Новая сложная система = новые интересные глюки. То шрифты не те, то артефакты рендеринга, то внезапные вылеты. Мозилла, конечно, героически боролась, но процесс был небыстрым.
А есть ли профит? На простых сайтах разница между старым рендером и WebRender могла быть вообще незаметна, а иногда WR умудрялся даже тормозить больше из-за накладных расходов на общение с GPU.
В итоге, включение WebRender по умолчанию для всех пользователей растянулось на годы, сопровождаясь стонами и криками на багтрекерах и форумах. Кому-то он действительно принёс долгожданную плавность, а кто-то, наоборот, спешно откатывался на старые рельсы или отключал его вручную, матеря криворуких кодеров.