Disable hardware acceleration linux

Hardware video acceleration (Русский)

Аппаратное ускорение видео (англ.) позволяет выполнять операции кодирования и декодирования видео на стороне видеокарты, разгружая CPU и экономя энергию.

Существуют несколько реализаций этой технологии на Linux:

  • Video Acceleration API (VA-API) — разработанная Intel спецификация и свободная библиотека, предоставляющая аппаратное ускорение кодирования и декодирования видео.
  • Video Decode and Presentation API for Unix (VDPAU) — разработанная NVIDIA свободная библиотека и API для переноса части процесса декодирования видео и его постобработки на сторону GPU.
  • NVDECODE/NVENCODE — проприетарные API аппаратного ускорения, используемые в таких поколениях GPU от NVIDIA, как Fermi, Kepler, Maxwell и Pascal.

Для получения информации о видеокартах, выпущенных до 2007 года, см. XvMC. Также всесторонний обзор поддержки данных технологий со стороны драйверов и приложений доступен в разделе #Сравнительные таблицы.

Contents

Установка

Intel

Свободные драйверы Intel graphics поддерживают VA-API:

    Серия HD Graphics, начиная с Broadwell(

2015) и новее, поддерживается intel-media-driver .

  • GMA 4500 series и более новые GPU до Coffee Lake поддерживаются libva-intel-driver .
  • Декодирование H.264 на GMA 4500 поддерживается libva-intel-driver-g45-h264AUR , см. Intel graphics (Русский)#Декодирование H.264 на GMA 4500.
  • Гибридное декодирование VP9 на процессорах от Broadwell до Skylake, а также гибридное декодирование VP8 на процессорах от Haswell до Skylake, поддерживается intel-hybrid-codec-driverAUR .
  • Skylake и более новые поколения также требуют linux-firmware .
  • NVIDIA

    Свободный драйвер Nouveau поддерживает как VA-API, так и VDPAU:

    • GeForce 8 series и новее (до GeForce GTX 750) поддерживаются libva-mesa-driver и mesa-vdpau .
    • Необходимnouveau-fwAUR — пакет с микропрограммой, которая на сегодняшний день извлекается из бинарного драйвера NVIDIA.

    Проприетарный драйвер NVIDIA поддерживает следующие технологии с помощью пакета nvidia-utils :

    • VDPAU на серии GeForce 8 и новее;
    • NVDECODE на Fermi и новее [1];
    • NVENCODE на Kepler и новее.

    ATI/AMD

    Свободные драйверы ATI и AMDGPU поддерживают как VA-API, так и VDPAU:

    • VA-API на Radeon HD 2000 и новее поддерживается libva-mesa-driver .
    • VDPAU на Radeon R300 и новее поддерживается mesa-vdpau .

    Проприетарный драйвер AMDGPU PRO основывается на драйвере AMDGPU и поддерживает как VA-API, так и VDPAU.

    Слои преобразований

    Активация поддержки VA-API при её отсутствии в драйвере:

    Активация поддержки VDPAU при её отсутствии в драйвере:

    Проверка

    Аппаратное ускорение, скорее всего, хорошо заработает по умолчанию. Проверить это можно описанными ниже способами.

    Проверка VA-API

    Проверьте настройки VA-API, выполнив vainfo (предоставляется пакетом libva-utils ):

    VAEntrypointVLD означает, что видеокарта способна декодировать данный формат, а VAEntrypointEncSlice означает, что данный формат можно кодировать.

    В данном примере используется драйвер i965 :

    Если при выполнении vainfo отображается следующая ошибка:

    Необходимо задать корректный драйвер, см. #Настройка VA-API.

    Проверка VDPAU

    Установите пакет vdpauinfo , чтобы получить полный отчёт о конфигурации драйвера VDPAU и убедиться, что он загружен корректно:

    Настройка

    Несмотря на то, что видеодрайвер должен автоматически активировать поддержку аппаратного ускорения видео с помощью VA-API и VDPAU, в некоторых случаях может потребоваться настроить VA-API/VDPAU вручную. Перед тем как продолжать чтение данного раздела, просмотрите раздел #Проверка.

    Названия драйверов по умолчанию угадываются системой, если остутствуют какие-либо другие настройки. Однако они часто не совпадают и не работают. Предполагаемые значения можно просмотреть, выполнив следующую команду:

    В данном случае по умолчанию используется radeonsi для VA-API и VDPAU.

    Настройка VA-API

    Драйвер VA-API можно переопределить с помощью переменной окружения LIBVA_DRIVER_NAME :

    • Intel graphics:
      • Укажите i965 , если используется libva-intel-driver .
      • Укажите iHD , если используется intel-media-driver .
    • NVIDIA:
      • Укажите nouveau , если используется Nouveau.
      • Укажите vdpau , если используется NVIDIA.
    • ATI/AMD:
      • Укажите radeonsi , если используется AMDGPU.
      • Укажите fglrx , если используется AMD Catalyst.

    Настройка VDPAU

    Драйвер VDPAU можно переопределить с помощью переменной окружения VDPAU_DRIVER .

    Корректное название драйвера зависит от конфигурации:

    • Если используется Intel Graphics или AMD Catalyst, необходимо задать va_gl .
    • Если используется свободный драйвер AMD/ATI, задайте соответствующую версию драйвера, в зависимости от видеокарты. См. #Проверка.
    • Если используется свободный драйвер Nouveau, задайте nouveau .
    • Если используется проприетарный драйвер NVIDIA, задайте nvidia .

    Настройка приложений

    Решение проблем

    Ошибка «Failed to open VDPAU backend»

    Необходимо задать переменную VDPAU_DRIVER , указывающую на корректный драйвер. См. #Настройка VDPAU.

    Источник

    Hardware video acceleration

    Hardware video acceleration makes it possible for the video card to decode/encode video, thus offloading the CPU and saving power.

    Читайте также:  Netsh int tcp set global congestionprovider none windows 10

    There are several ways to achieve this on Linux:

    • Video Acceleration API (VA-API) is a specification and open source library to provide both hardware accelerated video encoding and decoding, developed by Intel.
    • Video Decode and Presentation API for Unix (VDPAU) is an open source library and API to offload portions of the video decoding process and video post-processing to the GPU video-hardware, developed by NVIDIA.
    • NVDECODE/NVENCODE — NVIDIA’s proprietary APIs for hardware video acceleration, used by NVIDIA GPUs from Fermi onwards.

    For pre-2007 video cards see XvMC. For comprehensive overview of driver and application support see #Comparison tables.

    Contents

    Installation

    Intel

    Intel graphics open-source drivers support VA-API:

    • HD Graphics series starting from Broadwell(2014) and newer are supported by intel-media-driver .
    • GMA 4500 (2008) and newer GPUs, including HD Graphics up to Coffee Lake (2017) are supported by libva-intel-driver .
    • GMA 4500 H.264 decoding is supported by libva-intel-driver-g45-h264AUR , see Intel#Hardware accelerated H.264 decoding on GMA 4500.
    • Haswell refresh to Skylake VP9 decoding and Broadwell to Skylake hybrid VP8 encoding is supported by intel-hybrid-codec-driverAUR .
    • Skylake or later also need linux-firmware .

    NVIDIA

    Nouveau open-source driver supports both VA-API and VDPAU:

    • GeForce 8 series and newer GPUs up until GeForce GTX 750 are supported by libva-mesa-driver and mesa-vdpau .
    • Requiresnouveau-fwAUR firmware package, presently extracted from the NVIDIA binary driver.

    NVIDIA proprietary driver supports via nvidia-utils :

    • VDPAU on GeForce 8 series and newer GPUs;
    • NVDECODE on Fermi and newer GPUs [1];
    • NVENCODE on Kepler and newer GPUs.

    ATI/AMD

    ATI and AMDGPU open-source drivers support both VA-API and VDPAU:

    • VA-API on Radeon HD 2000 and newer GPUs is supported by libva-mesa-driver .
    • VDPAU on Radeon R300 and newer GPUs is supported by mesa-vdpau .

    AMDGPU PRO proprietary driver is built on top of AMDGPU driver and supports both VA-API and VDPAU.

    Translation layers

    • libva-vdpau-driver — A VDPAU-based backend for VA-API.

    https://cgit.freedesktop.org/vaapi/vdpau-driver || libva-vdpau-driver , libva-vdpau-driver-chromiumAUR , libva-vdpau-driver-vp9-gitAUR

    • libvdpau-va-gl — VDPAU driver with OpenGL/VAAPI backend. H.264 only.

    https://github.com/i-rinat/libvdpau-va-gl || libvdpau-va-gl

    Verification

    Your system may work perfectly out-of-the-box without needing any configuration. Therefore it is a good idea to start with this section to see that it is the case.

    Verifying VA-API

    Verify the settings for VA-API by running vainfo , which is provided by libva-utils :

    VAEntrypointVLD means that your card is capable to decode this format, VAEntrypointEncSlice means that you can encode to this format.

    In this example the i965 driver is used, as you can see in this line:

    If the following error is displayed when running vainfo :

    You need to configure the correct driver, see #Configuring VA-API.

    Verifying VDPAU

    Install vdpauinfo to verify if the VDPAU driver is loaded correctly and retrieve a full report of the configuration:

    Configuration

    Although the video driver should automatically enable hardware video acceleration support for both VA-API and VDPAU, it may be needed to configure VA-API/VDPAU manually. Only continue to this section if you went through #Verification.

    The default driver names, used if there is no other configuration present, are guess by the system. However, they are often hacked together and may not work. You can see the guessed values by running:

    In this case radeonsi is the default for both VA-API and VDPAU.

    This does not represent the configuration however. The values above will not change even if you override them.

    Configuring VA-API

    You can override the driver for VA-API by using the LIBVA_DRIVER_NAME environment variable:

    Configuring VDPAU

    You can override the driver for VDPAU by using the VDPAU_DRIVER environment variable.

    The correct driver name depends on your setup:

    • For Intel graphics you need to set it to va_gl .
    • For the open source AMD driver set it to the proper driver version depending on your GPU, see #Verification.
    • For the open source Nouveau driver set it to nouveau .
    • For NVIDIA’s proprietary version set it to nvidia .

    Configuring applications

    Troubleshooting

    Failed to open VDPAU backend

    You need to set VDPAU_DRIVER variable to point to correct driver. See #Configuring VDPAU.

    VAAPI init failed

    An error along the lines of libva: /usr/lib/dri/i965_drv_video.so init failed is encountered. This can happen because of improper detection of Wayland. One solution is to unset $DISPLAY so that mpv, MPlayer, VLC, etc. do not assume it is X11. Another mpv-specific solution is to add the parameter —gpu-context=wayland .

    Читайте также:  Windows flash player mac

    Video decoding corruption or distortion with AMDGPU driver

    When experiencing video decoding corruption or distortion with AMDGPU driver, set allow_rgb10_configs=false as environment variable or driconf . [3]

    Источник

    Выжимаем все соки из Chromium на Linux

    В этой статье рассмотрим, как выжать все соки из Хромиума и максимально ускорить его или другой браузер на его движке (Chromium, Google Chrome, Opera, Vivaldi, Яндекс и др.). За счет включения многих экспериментальных возможностей по вынесу вычислений с процессора на видеокарту и включения использования находящихся в разработке программных алгоритмов. За счет этого наш любимый хромиум станет работать быстрее, может перестать тормозить или моргать экраном.

    Поехали!

    Как сделать резервную копию всего профиля браузера (настройки, история. закладки и пр.), написано в конце статьи.

    Заходим по адресу chrome://gpu (да, именно так наберите в адресной строке или скопипастьте)!

    Как видите, у меня везде зеленая надпись «Hardware accelerated», что говорит, что данная функция использует аппаратное ускорение за счет выноса вычислений на видеокарту, а «Enabled» говорит, что программный алгоритм включен.

    Теперь зайдите в chrome://flags .Здесь и будем производить большую часть настройки.

    На скриншоте красным прямоугольников выделил #ignore-gpu-blacklist . Дальше все опции из этого списка буду именовать именно вот так. Можно нажать Ctrl+F и найти настройку по ее скопипащенному названию.

    Теперь у нас открыты и chrome://gpu , и chrome://flags . Смотрим, какие параметры есть в chrome://gpu , и, если параметр не зеленый, а желтый или красный, в chrome://flags изменяем соответствующую настройку. Осторожно, некоторые настройки могут сделать работу браузера нестабильной, зависит от железа.

    Canvas — аппаратное ускорение отрисовки канваса
    В chrome://flags это #ignore-gpu-blacklist
    Отключается включением опции #disable-accelerated-2d-canvas

    CheckerImaging — суть в том, что растеризация картинки убрана из зависимости от растеризации остальной области, с которой связана картинка, что позволяет отрисовывать веб-страницу, не дожидаясь окончания обработки картинки, как-то так. Говорят, сайт Юлмарта начинает отрисовываться намного быстрее.
    Это параметр командной строки —enable-features=»CheckerImaging» , подробнее ниже.

    Flash, Flash Stage3D, Flash Stage3D, Flash Stage3D Baseline profile — аппаратное ускорение декодирования флеш-контента
    Тоже #ignore-gpu-blacklist

    Compositing — аппаратное ускорение наложения слоев
    Скорее всего, тоже #ignore-gpu-blacklist , я не встречал, чтобы это было не работало (было не зеленым) «из коробки».

    Multiple Raster Threads — распараллеливание на несколько потоков процесса растеризации векторных элементов веб-страницы
    #enable-gpu-rasterization —> Force-enabled for all layers / Принудительно для всех слоев.
    Включение этой опции также может помочь, если у вас моргает экран при просмотре сайтов, в т.ч. вконтакте, и видео.

    Native GpuMemoryBuffers — исключается дополнительный буфер при копировании элементов между CPU и GPU, по умолчанию выключено, почему — подробно написано по ссылке.
    Это параметр командной строки —enable-native-gpu-memory-buffers , подробнее ниже.

    Rasterization — применение видеокарты для растеризации
    #enable-gpu-rasterization

    Video Decode — аппаратное ускорение декодирования видео (при просмотре видео декодируется)
    Video Encode — аналогично кодирование
    Входит в #ignore-gpu-blacklist

    WebGL, WebGL2 — поддержка рендеринга на видеокарте набора инструкций OpenGL, входящих в стандарт WebGL; автоматически выключается, если драйвер видеокарты их не поддерживает.
    Входит в #ignore-gpu-blacklist

    Еще есть опция #enable-zero-copy , выше приведена ссылка на статью инженеров Intel, которые разрабатывали эту функцию (судя по скриншотам и вступлению в статье, разработка происходит на Ubuntu, но коммерчески выгодна в первую очередь из-за Chrome OS). Есть подозрение, что ее работа будет очень специфична для конкретного железа.

    #enable-tcp-fast-open — TCP Fast Open, ускоряет работу сетевого стека, фича ядра Linux, на Windows и MacOS недоступно, виндузятниги с**** ничего не подозревая наслаждаются ущербностью своей операционной системы, яблочники от них не сильно отстают (не воспринимайте близко к сердцу, это шутка).

    #expensive-background-timer-throttling — ограничивает максимальную нагрузку на процессор фоновыми вкладками (т.е. не та вкладка, с которой вы сейчас работаете) до максимум 1%. Далеко не всегда уместно. Вдруг у вас в фоновой вкладке запущена торговля на бирже.

    #v8-cache-options — например, в режиме «Cache V8 compiler data» V8 будет лучше кешировать javascript и не компилировать их заново. Опять же. на некоторых сложных веб-приложениях в теории может вызывать проблемы. V8 — это движок обработки ( в т.ч. компиляции) яваскрипта в Chromium, а компиляция javascript создает основную нагрузку на процессор при работе браузера.

    #v8-cache-strategies-for-cache-storage — можно включить агрессивный кеш V8, речь о кеше в предыдущем абзаце, возможное последствия те же.

    #shared-array-buffer — экспериментальные функции работы с памятью в javascript, подробное объяснение здесь.

    #enable-simple-cache-backend —> Enabled/Включено — вместо реализации своего подобия файловой системы в блочном файле для кеша, работаем с файлами непосредственно внутри файловой системы, возлагая большую часть работы на операционную систему и уменьшая нагрузку на ввод-вывод с диска, в т.ч. уменьшаем количество переключений контекста, что должно ускорить работу.

    Читайте также:  Windows имя файла недопустимые символы

    Теперь про опции командной строки Chromium и Google Chrome. Теоретически, всякие иные поделия браузеры на движке Сhromium должны их поддерживать, но гарантии нет.
    Закрываем все открытые копии Chromium, открываем терминал и выполняем вот такую команду:

    В chrome://gpu видим, как стали зелеными пункты CheckerImaging и Native GpuMemoryBuffers (либо браузер вообще не запустился 🙂 ) Но ведь каждый раз запускать браузер через терминал неудобно, поэтому открываем графический редактор desktop-файлов и в нем дописываем в команду запуска браузера нужные нам параметры (обратите внимание, что на конце есть %U , оно заменяется на ссылку или путь к файлу, который нужно открыть, так что его не нужно удалять. В KDE это kmenuedit (вызов либо через терминал командой kmenuedit , либо подвести курсор к кнопке вызова меню приложений и нажать на правую кнопку мыши 1 раз, затем левой 1 раз нажать на «Редактор меню» в появившемся списке), на остальных DE (XFCE, GNOME, Budgie, LXDE, LXQt и др.) это menulibre .

    Тру-униксоиды могут скопировать /usr/share/applications/chromium-browser.desktop в

    /.local/share/applications/chromium-browser.desktop и отредактировать параметр Exec, получится то же самое:

    В зависимости от DE, вам может потребоваться повторно вынести ярлык на рабочий стол и/или панели.

    UPD 10.05.2018.
    Здесь ведется полный список флагов для Chromium, который можно прописать непосредственно в Exec в Desktop-файле, чтобы не нужно было их все включать вручную:

    Как измерить скорость работы браузера, понять, какие опции на вашем сочетании железа и видеодрайвера ускоряют работу, а какие замедляют?
    Для этого запускайте онлайн бенчмарк web.basemark.com с различными сочетаниями настроек и сравнивайте количество набранных попугаев баллов.

    В chrome://gpu браузер может мамой клясться, что включено аппаратное ускорение декодирования видео. Но ведь не каждое видео будет декодироваться аппаратно!
    Открываем chrome://media-internals/ , параллельно запускаем проигрывание какого-нибудь видео с Youtube и смотрим, каким кодеком оно декодируется.

    Сейчас Google все видео отдает в кодеке VP9 собственной разработки, но на довольно многих старых видеокартах возможно аппаратное декодирование только H.264; расширение h264ify заставит браузер сообщать, что он не поддерживает кодеки VP8 и VP9, что заставит Youtube отдавать видео в H.264. См. youtube.com/html5

    По умолчанию так:

    С включенным h264ify на его стандартных настройках:

    Вообще нет единого нормального списка, какие драйверы и на каких видеокартах поддерживают аппаратное декодирование, но вот Chromium 62 появится полноценная работа VA-API (API для аппаратного ускорения кодирования и декодирования видео), которая была и раньше, но только на ChromeOS, а, например, здесь, Хромиум собирали и собирают с патчем, который включает это и на Линуксе. Для работы рекомендуется свежая версия libva; если у вас, к примеру, Ubuntu 16.04, то можно обновить весь графический стек отсюда, что рекомендуется пользователям современных и не очень видеокарт Intel и AMD, т.к. в наши дни опенсорсный графический стек развивается очень быстро, а мы в статье задействовали множество функций работы с видеокартой. Разработчики Ubuntu 17.10 работали над улучшением работы VA-API из коробки. Вообще, с проигрыванием видео на Линуксе никогда не встречал проблем, все хорошо работает из коробки. Для Firefox было дополнение, которое позволяло ролик с Youtube проигрывать во внешнем плеере mpv, что на очень старых машинах могло существенно снижать нагрузку на процессор.

    — Памагите. Браузер перестал запускаться.
    — Такое бывает очень редко, но все же иногда случается, когда настройки работы с видеокартой выкручиваются так, что у браузера не получается с ней работать. Открываем в файловом менеджере папку

    — это ваша домашняя папка) и находим папку chromium (для Google Chrome она называется google-chrome, Vivaldi — Vivaldi и т.д.).

    В ней хранится наш профиль. Можно просто переименовать папку, например, в chromium.old, а при следующем запуске chromium создаст ее заново и начнет с чистого листа. В качестве резервной копии (бекапа) рекомендую до проведения всех манипуляций заархивировать эту папку (и хранить, как зеницу ока). Если вы что-то поломали, а начинать с чистого профиля не хочется, то попробуйте открыть терминал внутри

    /.config/chromium и выполнить команду:

    где вместо ignore-gpu-blacklist подставьте название опции, которая, как вы думаете, с тала причиной неполадок. В ответ команда grep выдаст путь к файлу и номер строки, где есть шанс поправить настройку. Возможно, часть настроек хранится в SQLite базе данных, и тогда потребуется какая-нибудь программа для работы с SQLite-БД и поиска по ним. Честно говоря, ни разу не пробовал так делать.

    За сим отчаливаю, спасибо за внимание, жду отзывов и вопросов в комментариях.

    Источник

    Оцените статью