Аппаратное ускорение Linux Firefox

Обновлено: 05.07.2024

В некоторых версиях Firefox после 88.0 похоже, что они включают WebRenderer по умолчанию, а также похоже, что мое оборудование (видеокарта Nvidia с проприетарным драйвером)[1] не внесено в белый список, так что Firefox делает следующее: вместо этого включите "программный WebRenderer".

Во-первых, я пытался использовать WebRenderer в течение некоторого времени (более двух месяцев), принудительно включив его, и, хотя поначалу казалось, что это улучшает ситуацию, в целом опыт был ужасным, и потому что WebRenderer, если я правильно понимаю, использует GPU-ускорение, что повлияло на остальную часть рабочего стола, поэтому через некоторое время я отключил WebRenderer (и "Аппаратное ускорение" на вкладке настроек, и поставил ограничение процессов на 2, пока я был там) , а потом дела пошли лучше.

Из-за того, что иногда Firefox может находиться в сомнительном состоянии, я решил пропускать обновления до тех пор, пока это возможно, т. е. я обновляю Firefox, а затем придерживаюсь версии, которая у меня есть, пока расширение, которое я использую, перестанет работать или не будет — это действительно привлекательная новая функция в новой версии Firefox (которая, к сожалению, кажется, не так часто, как это было до того, как Mozilla адаптировала график «быстрого выпуска». ). Итак, здесь я использовал Firefox 88.0, выключил машину на ночь, включил ее утром, затем, когда я открывал ссылку, Firefox запустился, и на всех вкладках появилось сообщение «Ваша вкладка разбилась», «перезагрузить эту вкладку?» сообщение, нажатие этой кнопки не дало никакого эффекта.

Поэтому ничего не помогло, ни восстановление предыдущих вкладок, ни отключение всех расширений, ни перемещение ~/.mozilla, ни запуск заново; спустя пару поисковых запросов в Интернете, все еще ничего, затем я посмотрел на rpm -qa --last | less , теперь я думаю, что причина в обновлении glibc, которое сломало Firefox, возможно, это будет исправлено путем пересборки Firefox с новым glibc. На самом деле это не проблема OpenSuse Tumbleweed, потому что текущая версия Firefox в репозиториях — 92.0.

Суть в том, что либо я собираю Firefox из исходного кода (это занимает много времени, потребляет ресурсы ЦП и памяти и т. д.), либо обновляю Firefox до версии 92.0. Я выбрал последнее; и был встречен запаздывающим пользовательским интерфейсом/прокруткой/взаимодействием с браузером. очень весело.

Еще один поиск в Интернете позже, и я обнаружил, что "программный" WebRenderer включен (подтверждено просмотром about:support в Firefox), и чтобы отключить его, мне нужно было установить для gfx.webrender.force-disabled значение true в about:preferences .

[1] Пока я здесь, все "вы должны были купить видеокарту AMD!" Аргумент, который я видел во многих местах, когда кто-то говорит, что использует Nvidia с проприетарным драйвером, никогда не устраивал меня. Когда я лет 7-8 назад выбирал, какую карту купить, драйвер fglrx (это проприетарный драйвер для карт AMD) тогда был ужасен, все, что я слышал о нем, это страшилки жалоб пользователей. В то время проприетарный драйвер Nvidia был намного лучше. Несколько лет спустя AMD решила открыть исходный код своего драйвера и передать его (не уверен) в ядро ​​Linux, отличная новость для пользователей с картами AMD. Но вы знаете, что? Я не вижу будущего, чтобы знать, что через 5 лет после того, как я купил эту карту Nvidia, AMD станет лучшим выбором. Поэтому, пожалуйста, если у вас нет решения проблемы, с которой столкнулся пользователь с картой Nvidia, не добавляйте туда аргумент «вам не стоило приобретать карту Nvidia», говоря, что в этом нет ничего более полезного. кейс. И знаете что еще? AMD, будучи корпорацией, может в любой момент прекратить поддержку драйвера с открытым исходным кодом, верно? Я не юрист, но я думаю, что если руководство решит, что это не в интересах их компании, они могут отключиться. Не то чтобы этого не случалось раньше, Intel прекратила разработку/работу над своим драйвером с открытым исходным кодом gfx до такой степени, что дистрибутивы переключались на драйвер Kernel ModeSetting по умолчанию.

Firefox в Fedora поддерживает аппаратное ускорение в Linux, поэтому давайте посмотрим, как его настроить и диагностировать потенциальные проблемы. Это руководство адаптировано только для Fedora и может не работать со стандартными двоичными файлами Mozilla или другими дистрибутивами.

Визуализация веб-страницы

Ускоренный рендеринг веб-страниц поддерживается как на бэкэндах X11, так и на Wayland через WebRender.

Обратите внимание, что для Firefox требуется графический процессор с поддержкой OpenGL 3.2 или новее или GLES 3.0 или новее, чтобы включить аппаратное ускорение (Источник и дополнительная информация). Вы можете проверить свое оборудование, используя glxinfo | grep "версия профиля" для OpenGL и eglinfo | версия grep для GLES.

Вы можете проверить состояние аппаратного ускорения на странице about:support, посмотрите строку Composing. Если есть WebRender, вы работаете на оборудовании. Если есть WebRender (программное обеспечение), вы используете неускоренную серверную часть.

< бр />

Визуализация веб-страницы на Wayland

Аппаратное ускорение должно работать на Wayland по умолчанию. Если нет, отправьте сообщение об ошибке.

Визуализация веб-страницы на X11

Бэкенд X11 может работать в двух режимах — EGL и XGL. Вы должны использовать EGL, если только вы не используете проприетарные драйверы NVIDIA.

Декодирование видео

Аппаратное ускорение декодирования видео (для воспроизведения видео или для WebRTC) доступно на Intel/AMD через VA-API как для X11(EGL), так и для Wayland и может быть включено в настройках на странице about:config.

Firefox 98 и более поздние версии

Из-за [Bug 1751363] VA-API блокируется песочницей RDD. Это можно отключить с помощью переменной env MOZ_DISABLE_RDD_SANDBOX=1.

Декодирование видео на AMD

Ускоренное декодирование видео хорошо работает на AMD, поскольку доступны бесплатные драйверы. Вы можете включить его, выполнив следующие действия:

  • Убедитесь, что вы используете серверную часть с аппаратным ускорением (WebRender) под управлением Wayland или X11/EGL, по адресу about:support.
  • Установите ffmpeg, libva и libva-utils из репозитория RPM Fusion.
  • Запустите vainfo на терминале, чтобы убедиться, что VA-API работает.
  • На странице about:config установите для media.ffmpeg.vaapi.enabled значение true
  • Перезапустите браузер.
  • Вы можете установить расширение extension-h264ify для Firefox, чтобы отключить неускоренные форматы видео.
  • Дополнительная информация здесь.

Декодирование видео на Intel

Ускоренное декодирование видео хорошо работает на большинстве графических процессоров Intel, поскольку доступны бесплатные драйверы. Существует два [1] драйвера для карт Intel: libva-intel-driver (предоставляет i965_drv_video.so) и intel-media-driver (iHD_drv_video.so). В настоящее время Firefox работает с libva-intel-driver (i965_drv_video.so) или intel-media-driver.

Вы можете включить VA-API на Intel, выполнив следующие действия:

  • Убедитесь, что вы используете серверную часть с аппаратным ускорением (WebRender) под управлением Wayland или X11/EGL, по адресу about:support.
  • Установите пакеты libva, libva-utils и libva-intel-driver.
  • Установите ffmpeg из репозитория RPM Fusion.
  • Запустите vainfo на терминале, чтобы убедиться, что VA-API работает. Если VA-API отключен, вы работаете на новом оборудовании [2] и вам нужен драйвер intel-media из бесплатного репозитория RPM Fusion.
  • На странице about:config установите для media.ffmpeg.vaapi.enabled значение true
  • Перезапустите браузер.
  • Вы можете установить расширение extension-h264ify для Firefox, чтобы отключить неускоренные форматы видео.
  • Дополнительная информация здесь.

Декодирование видео на NVIDIA

Пожалуйста, купите настоящее оборудование Linux.

Устранение неполадок

Запустите Firefox на терминале с переменной env MOZ_LOG="PlatformDecoderModule:5". Он создает журнал воспроизведения и декодирования с подробностями VA-API / ffmpeg.

Из-за [Bug 1751363] VA-API блокируется песочницей RDD в Firefox 98+. Это можно отключить с помощью переменной env MOZ_DISABLE_RDD_SANDBOX=1.

Кодирование видео

Кодирование видео с аппаратным ускорением (например, для WebRTC) не поддерживается/не реализовано в Firefox, независимо от того, какой параметр вы установили на странице about:config.

  1. ↑ Существует также libva-intel-hybrid-driver, но он только добавляет поддержку кодирования VP8 и декодирования VP9 с выбранными чипами.
  2. ↑ Ice Lake или новее

Авторское право © 2022 Red Hat, Inc. и другие. Все права защищены. Если у вас есть комментарии или вопросы, свяжитесь с нами.

Проект Fedora поддерживается и управляется сообществом и спонсируется Red Hat. Это сайт поддерживается сообществом. Red Hat не несет ответственности за содержание.

Firefox 97 был выпущен на этой неделе, и на бумаге он не принес ничего важного для основного обновления версии. Что ж, есть изменения, о которых не упоминалось в примечаниях к выпуску.

включить аппаратное ускорение видео в Firefox для Linux

У Firefox для Linux некоторое время возникала проблема, связанная с аппаратным ускорением видео. Проблема может быть воспроизведена, когда для нее включена настройка, браузер может неправильно отображать видео или не воспроизводить его.

Многие пользователи сообщают, что проблема была исправлена ​​в Firefox 97, за исключением того, что решение не включено по умолчанию.

Как включить аппаратное ускорение видео в Firefox на Linux

<р>1. Откройте страницу настроек Firefox, набрав about:config в адресной строке. Примите предупреждение о потенциальных рисках и продолжайте. Вы знаете, как это сделать.

<р>2. Найдите следующий параметр.

<р>3. По умолчанию для параметра установлено значение False. Установите значение Истина.

Примечание. Вы также можете установить для параметра media.rdd-vpx.enabled значение true.

Что дает изменение предпочтения? Он говорит браузеру использовать API ускорения видео (VA-API) для воспроизведения видео. Попробуйте воспроизвести веб-видео, и производительность будет меньше нагружать ваш процессор.

Аппаратное ускорение часто неправильно понимается пользователями. Я видел комментарии, в которых пользователям случайным образом предлагалось отключить эту функцию. Если веб-страницы не загружаются должным образом, т.е.они пусты, вы можете попробовать отключить настройку в качестве обходного пути, но это должно быть последним средством. Ваш блокировщик рекламы, VPN, настройки DNS могут играть роль в неправильной загрузке страниц. У меня была аналогичная проблема с браузерами на основе Chromium на моей виртуальной машине Windows 11, где некоторые кнопки в браузере не отображались, и мне пришлось отключить аппаратное ускорение (не связанное с аппаратным ускорением видео), чтобы заставить их работать. Но это редкий сценарий, обычно связанный с видеодрайверами, в моем случае это была виртуальная машина, так что, скорее всего, проблема была в ней.

Некоторые считают, что аппаратное ускорение использует больше ресурсов, и его отключение улучшит работу программы. На самом деле все наоборот: аппаратное ускорение использует вашу видеокарту (GPU) для рендеринга визуальных элементов веб-страниц и воспроизведения видео. Отключив эту опцию, вы говорите браузеру не использовать графический процессор, а вместо этого полагаться на ЦП для таких задач. Это приводит к более высокой, чем обычно, нагрузке на ваш процессор, что, в свою очередь, влияет на производительность вашей системы. Даже если у вас нет выделенной видеокарты, для достижения наилучших результатов следует оставить этот параметр включенным.

Project Fission включен в Firefox 97

Это еще одна вещь, которая осталась незамеченной в журнале изменений и относится и к пользователям Windows. Firefox 97 включает Project Fission по умолчанию. Опция изоляции сайта, представленная в прошлом году, обеспечивает дополнительный уровень безопасности для защиты ваших данных. Предпочтение about:config для Fission — fission.autostart. Это значение установлено на Истина. Вот обсуждение Bugzilla, связанное с этим,

Вчера я обновился до последней версии, и с тех пор проблем не возникало. Но если вы столкнетесь с какими-либо проблемами после обновления до Firefox 97, вы можете попробовать изменить значение параметра на false, чтобы посмотреть, исправит ли это проблему.

Включено ли аппаратное ускорение видео в Firefox? Заметили ли вы разницу в производительности после изменения настройки?


Первое изображение из оригинальной статьи WebRender. Опубликовано три года назад.

WebRender по умолчанию ограничен графическими картами AMD/Intel, поскольку NVIDIA известна различными проблемами — как с проприетарными драйверами, так и с драйверами Noveau.

И почему это пока включено только в Gnome? Например, KDE также является популярной средой рабочего стола. Я думаю, это потому, что Gnome использует ускорение HW, поэтому, когда Gnome работает на вашем компьютере, есть предположение, что Firefox тоже будет работать. KDE предоставляет возможность отключить/ограничить настройку аппаратного ускорения (например, он поддерживает отключенную композицию экрана), и здесь сложнее охватить различные сценарии.

Другой исключенной группой являются пользователи XWayland. Это означает, что у вас есть Wayland в качестве компоновщика рабочего стола, но по некоторым причинам вы используете слой эмуляции X11 и запускаете Firefox как приложение X11. Это верный сценарий, Firefox с серверной частью Wayland все еще страдает от какой-то досадной ошибки, в основном связанной со всплывающими окнами.


Поделиться:

Вот так:

Связанные

33 мысли на тему «Firefox — мы наконец-то получили аппаратное ускорение в Linux»

Здравствуйте, я полагаю, что установки Intel, выделенные здесь зеленым цветом [1], так же опасны, как и установки AMD?
Спасибо

Да, зеленый означает, что функция включена. Я вижу, что Intel отключен для экранов 4K, потому что у встроенного Intel HW могут быть проблемы с ним, и обычно он работает со скоростью 30 кадров в секунду. Мы должны включить его для HD 630, который хорошо работает с экранами 4K.

Очень удивительно видеть, что WebRender будет включен только в GNOME. Если компоновка отключена в KWin, приложения по-прежнему могут использовать OpenGL и Vulkan.

Просто поясню, что целью отключения композитинга является повышение производительности в таких приложениях, как видеоигры. Это не означает, что вы должны отказаться от аппаратного ускорения рендеринга.

Основная причина, по которой вы можете захотеть отключить композитинг или перенаправить окно, — убедиться, что частота кадров вашего приложения не ограничена оконным менеджером. Это также означает, что компоновщик выполняет меньше работы, что хорошо с точки зрения энергопотребления и задержек.

FTR: Насколько я знаю, мы говорим только о том случае, когда композитинг вообще отключен. Автоматическая полноэкранная переадресация отключена в FF из-за проблем с разрывом (`_NET_WM_BYPASS_COMPOSITOR` -> `FALSE`).

Наша основная проблема с полностью некомпозитными рабочими столами заключается в том, что нам пришлось бы заново реализовать нашу логику XShape для Webrender, то есть в коде Rust IIUC. В настоящее время мы возвращаемся к устаревшему программному рендереру для меню в этом случае, но этот код со временем исчезнет.

X11 без компоновки, таким образом, является большим исключением — никакая другая поддерживаемая платформа не использует такие приемы (XShape).Так что с точки зрения FF это довольно раздражающий пограничный случай 😦

EDIT: я постараюсь проверить это позже сегодня, когда у меня будет рабочая станция KDE.

Ну, я несколько месяцев запускал Firefox в Plasma/Wayland с WebRender, и он прекрасно работает 🙂

Я использую KDE, Fedora 33. Раньше я пытался вручную включить WebRender в конфигурации, но возникли проблемы, и я отменил это.
Теперь я не уверен, какие параметры конфигурации следует включить или отключить. Есть ли руководство, которому можно следовать?

Вы также можете перейти в about:config и ввести там webrender. Все жирные линии изменены по сравнению с настройками по умолчанию. Вы можете вернуть их к значениям по умолчанию с помощью значка стрелки.

Я тестировал его пару недель назад, и он использует тонны памяти. Я видел, как другие жалуются.
Без WebRenderer У меня есть около 10 ГБ доступной памяти при запуске, как указано в команде free.
С включенным WebRenderer у меня почти ничего не было, и, если я не ошибаюсь, своп тоже немного использовался. В остальном все было не так уж и плохо.

Я использую XFCE на Fedora 33, графический процессор Intel HD 4000 (i7-3770) и 32 ГБ ОЗУ. Если я правильно помню, я установил gfx.webrender.all=true в about:config, чтобы принудительно использовать его на видеокарте.

Я надеюсь увидеть прогресс в разработке для улучшения работы WR в среде рабочего стола Xfce.

Да, верно, и, опять же, абсолютно не работают над поддержкой проприетарной Nvidia.
Вместо этого Mozilla прислала нам на замену «Software Webrender», который, честно говоря, должен называться «Shitware Shitrender»/
Извините за резкость, но идея замены несколько ускоренного OpenGL (который те, кто включал его годами без каких-либо ошибок в игре) с полностью неускоренным, медленным, вялым программным обеспечением Webrender просто безумен.

Я недоумеваю, почему разработчики Firefox так много внимания уделяют контексту.
OpenGL был изобретен для того, чтобы приложения не заботились о том, какая видеокарта используется.

Я знаю об ответе «теоретически да, но на практике…» и на него тоже отвечу заранее: например, в компоновщике KDE/plasma есть меню, позволяющее выбрать OpenGL ES 2.0, OpenGL 3.1, OpenGL 3.3, OpenGL 4.5 и т.д.
Если есть проблема с драйвером видеокарты, пусть там исправят. Приложение — не место для решения проблем, которые не связаны с ним!

Gnome/Intel/AMD был выбран в качестве первого пакета, потому что известно, что он работает, и у разработчиков Firefox есть эта настройка, не более того. Например, мой ноутбук (предоставленный Red Hat) имеет встроенный графический процессор Intel, поэтому я знаю, что он работает на нем.

Я хочу подчеркнуть, что в наши дни разработчики приложений не заботятся о том, кто сделал видеокарту, обеспечивающую рендеринг: как разработчик вы взаимодействуете с OpenGL/DirectX, а не с Intel, AMD/ ATI или Nvidia!

И пусть исправляются драйвера; если они не реализуют OpenGL в соответствии со спецификацией, это, безусловно, проблема, связанная с Firefox. Разумный подход здесь - это решать в драйвере, а не в firefox.

Если вопрос о том, какая видеокарта стоит за OpenGL API, ограничивается созданием списка, какие драйверы работают, а какие нет, конечно, неважно.
Но название сбивает с толку — если говорить прямо, Firefox получает большее ускорение на платформах, поддерживающих OpenGL, а не «на Linux». В конце концов, OpenGL существует в Windows, FreeBSD и других системах, верно?

Ошибка: я хотел написать: «Если [видеодрайверы] не реализуют OpenGL в соответствии со спецификацией, это определенно *не* проблема, связанная с Firefox», хотя опечатка, вероятно, была очевидной

ctk: Хотя я в целом согласен с вами, поддержка OpenGL сама по себе на самом деле представляет собой довольно небольшую проблему. AFAICS гораздо проще заставить полноэкранную (или оконную) 3D-игру работать должным образом — на самом деле это всего лишь подмножество того, что происходит в современном браузере. Основные проблемы связаны с такими вещами, как интеграция оконной системы (GLX/EGL), оконная система (X11/Wayland), песочница (совместное использование буфера несколькими процессами через, например, DMABUF) и т. д.

> Приложение — не место для исправления проблем, которые не связаны с ним!

Правильно, но многие люди ожидают, что программное обеспечение будет работать просто — если Firefox после обновления внезапно начнет глючить повсюду, многие люди не будут просто обвинять своего поставщика драйверов и продолжать — они перейдут на какой-нибудь другой браузер 😦
Это намного проще, если драйверы имеют открытый исходный код, и поэтому мы можем помочь исправить их самостоятельно.

Спасибо за тяжелую работу для пользователей Firefox Linux. Насколько я помню, это действительно существенная работа для Firefox в Linux.

Я очень внимательно слежу за разработкой Firefox, так что извините, что засыпаю вас вопросами. Я действительно очень заинтересован в вашей работе здесь (а также Роберте, Яне и других, конечно).

Каковы планы по другим менее часто используемым рабочим столам, таким как MATE, Cinnamon, Budgie, XFCE и LXQT и т. д.? Как вы думаете, вероятно, они будут включены постепенно, или они останутся программным веб-брендером по умолчанию? Другими словами, будет ли в будущем webbrender включен по умолчанию на всех WM/DE для утвержденных драйверов? Или вы думаете, что только наиболее часто используемые WM/DE будут включены по умолчанию в утвержденных драйверах?

Мой второй вопрос касается GLX/X11. EGL/X11 будет включен по умолчанию? Будет ли удалена поддержка GLX/X11?

В-третьих, что вы планируете делать с настройками без компоновки? Будут ли они получать аппаратный Webrender по умолчанию? Я знаю, что есть проблема с повторной реализацией формы в коде gfx.

И наконец, каков план Nouveau и проприетарного драйвера Nvidia? Я на стороне Линуса в том, что касается отношения Nvidia к разработке Linux, но планируется ли в ближайшем будущем включить только программный веб-бренд по умолчанию? И наоборот, похоже ли, что поддержка Nouveau будет включена по умолчанию?

Хей Алекс, спасибо за заботу 🙂

Насколько мне известно:

Мы хотим предоставить WR по умолчанию для всех DE, надеюсь, в следующих двух выпусках. Я думаю, чем больше отзывов мы получим от людей, тестирующих разные DE, тем быстрее это произойдет 😉
Лично я не ожидаю, что в наши дни будет много ошибок драйверов, специфичных для DE, на Mesa Intel / AMD, поэтому различия, насколько я знаю, сводятся к минимуму. к двум вещам: всегда ли DE составляется? И как он обрабатывает CSD[1]? Самый простой случай всегда комбинируется с нашей внутренней `CSD_SUPPORT_SYSTEM`. Таким образом, Cinnamon будет очевидным следующим кандидатом (IIUC на самом деле просто старый Gnome). Как только мы выясним все проблемы с некомпозитным и `CSD_SUPPORT_CLIENT` (и `CSD_SUPPORT_NONE`), все должно работать везде.

Относительно EGL/X11: да, мы хотели бы со временем включить его везде и рано или поздно отказаться от поддержки GLX. Основным препятствием в настоящее время является инфраструктура тестирования, но есть и другие области, которые все еще нуждаются в решении. Серверная часть EGL уже значительно лучше (DMABUF/аппаратное декодирование видео/частичные повреждения/меньше глюков), и разница, скорее всего, будет только увеличиваться.

Что касается некомпозитных рабочих столов: нам пришлось решить одну проблему, вернувшись к базовому компоновщику всплывающих окон. Но, по-видимому, с этим все в порядке, так что да, мы хотели бы включить для них WR (и EGL) по умолчанию. В какой-то момент базовый композитор упадет, но, вероятно, у него еще есть время.
В идеале люди будут постепенно переходить на компоновщики Wayland, которые *могут* предложить такую ​​же максимальную производительность (или даже лучше), что и некомпозитный X11, при этом не требуя странных устаревших обходных путей, глючных и т. д. Т.е. Wayland был разработан, чтобы сделать различие ненужным. Или, если хотите, тот факт, что у нас все еще есть некомпозитные DE, — это просто недостаток X11.

Что касается Nvidia — да, для Nouveau, может быть, для реквизита. Водитель. Если окажется, что у людей на опоре все работает отлично. водитель, ну почему бы и нет. Но тратить время на отладку черного ящика — это то, на что я лично не хотел бы тратить время, и, по-видимому, Мартин думает так же.
Помощь с Nouveau очень ценится, особенно в регистрации или даже исправлении ошибок в mesa[2].

Читайте также: