Вопрос или проблема
Я хотел бы просто показать testsource, используя gstreamer-1.0. Когда я использую (думаю) неускоренный вывод gst-launch-1.0 videotestsrc ! xvimagesink
все работает хорошо, но когда я пытаюсь проиграть его как gst-launch-1.0 videotestsrc ! autovideosink
, я получаю следующую ошибку:
Setting pipeline to PAUSED ...
libva info: VA-API version 0.35.0
X Error of failed request: BadRequest (invalid request code or no such operation)
Major opcode of failed request: 153 (DRI2)
Minor opcode of failed request: 1 (DRI2Connect)
Serial number of failed request: 15
Current serial number in output stream: 15
Я установил NVIDIA-Linux-x86_64-367.44.run
на Ubuntu 14.04.5
следующим образом:
- Удалите старые драйверы:
sudo apt-get remove --purge nvidia*
- Занесите старый драйвер в черный список с помощью скрипта (он попросит вас сделать это, выйти после этого)
- Перезагрузка
- Остановите службы:
service lightdm stop && service x11-common stop
- Установите драйвер:
./NVIDIA-Linux-x86_64-367.44.run --no-x-check
- Установлены компоненты VA в соответствии с https://wiki.ubuntuusers.de/Video-Dekodierung_beschleunigen/:
sudo apt-get install libvdpau1 vdpauinfo vdpau-va-driver vainfo
- Перезагрузка
Вот некоторые полезные вывода, которые все еще выдают ошибки:
$ lspci -nnk | grep -i VGA -A2
05:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK106 [GeForce GTX 660] [10de:11c0] (rev a1)
Subsystem: Gigabyte Technology Co., Ltd Device [1458:354e]
Kernel driver in use: nvidia
$ vainfo
libva info: VA-API version 0.35.0
X Error of failed request: BadRequest (invalid request code or no such operation)
Major opcode of failed request: 153 (DRI2)
Minor opcode of failed request: 1 (DRI2Connect)
Serial number of failed request: 11
Current serial number in output stream: 11
$ glxinfo
name of display: localhost:10.0
X Error of failed request: GLXBadContext
Major opcode of failed request: 154 (GLX)
Minor opcode of failed request: 6 (X_GLXIsDirect)
Serial number of failed request: 20
Current serial number in output stream: 20
$ uname -a
Linux alpia 4.4.0-38-generic #57~14.04.1-Ubuntu SMP Tue Sep 6 17:20:43 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
$ cat /var/log/Xorg.0.log | grep driver
[ 127.579] (WW) Hotplugging is on, devices using drivers 'kbd', 'mouse' or 'vmmouse' will be disabled.
[ 127.579] X.Org XInput driver : 22.1
[ 127.786] (II) Loading /usr/lib/xorg/modules/drivers/nvidia_drv.so
[ 128.733] (II) NVIDIA(0): [DRI2] VDPAU driver: nvidia
[ 128.815] ABI class: X.Org XInput driver, version 22.1
[ 128.815] (II) Using input driver 'evdev' for 'Power Button'
[ 128.830] (II) Using input driver 'evdev' for 'Power Button'
[ 128.831] (II) No input driver specified, ignoring this device.
[ 128.831] (II) No input driver specified, ignoring this device.
[ 128.831] (II) No input driver specified, ignoring this device.
[ 128.831] (II) No input driver specified, ignoring this device.
[ 128.832] (II) No input driver specified, ignoring this device.
[ 128.832] (II) No input driver specified, ignoring this device.
[ 128.832] (II) No input driver specified, ignoring this device.
[ 128.832] (II) No input driver specified, ignoring this device.
[ 128.832] (II) No input driver specified, ignoring this device.
[ 128.832] (II) No input driver specified, ignoring this device.
[ 128.833] (II) No input driver specified, ignoring this device.
[ 128.833] (II) No input driver specified, ignoring this device.
[ 128.833] (II) Using input driver 'evdev' for 'DELL Dell USB Entry Keyboard'
[ 128.833] (II) Using input driver 'evdev' for 'USB Optical Mouse'
[ 128.834] (II) No input driver specified, ignoring this device.
У кого-нибудь есть подсказка? Я знаю, что это работало когда-то с этим ПК, следуя инструкциям, но теперь что-то, похоже, сломано.
Исправил это, вернув все к стандартному состоянию ubuntu, но аппаратное ускорение видео все еще не работает:
- Удалите предыдущий драйвер:
sudo ./NVIDIA-Linux-x86_64-xxx.xx.run --uninstall
- удалите все, что связано с nvidia (поиск связанных пакетов с помощью
dpkg -l
): nvidia, cuda, primus, vdpau-va-driver, vainfo, libvdpau1, vdpauinfo - Удалите все файлы из черного списка для драйверов nouveau: удалите необходимые файлы в
/etc/modprobe.d
- Восстановите xconfig:
sudo X -configure && sudo cp xorg.conf.new /etc/X11/xorg.conf
- Установите заново
mesa-vdpau-drivers-lts-<your release>
- ВАЖНО: Удалите gstreamer vaapi, чтобы он не пытался использовать ускорение при использования плагинов, таких как
autoconvert
илиautovideosink
:sudo apt-get remove gstreamer1.0-vaapi gstreamer1.0-vaapi-doc libgstreamer-vaapi1.0-0:amd64 libgstreamer-vaapi1.0-dev
Теперь тестовые программы glxinfo
и glxgears
снова работают как ожидалось.
К сожалению: Неудачная попытка: Я все еще не знаю, почему VA не работает с оригинальным драйвером, даже при использовании официального ppa:
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install --install-suggests nvidia-340
glxinfo
и glxgears
работают, но vainfo
и vdpauinfo
все же выводят ошибки. Мне удалось заставить vdpauinfo
вывести что-то кроме ошибки, используя драйверы mesa
и экспортируя (Если переменные указывают на проприетарный драйвер, это не сработает):
export VDPAU_DRIVER_PATH=/usr/lib/x86_64-linux-gnu/vdpau/
export VDPAU_DRIVER=va_gl
Но это ведь всего лишь драйвер отображения, верно. Мне нужно указать VA API, что он должен использовать vdpau
следующим образом (?):
export LIBVA_DRIVERS_PATH=/usr/lib/x86_64-linux-gnu/dri/
export LIBVA_DRIVER_NAME=vdpau
Но в этом случае vainfo
отвечает только ошибками, независимо от того, какое имя драйвера я выбираю.
Если кто-то знает, как это исправить, пожалуйста, помогите. Но на данный момент gstreamer снова работает (но с высокой загрузкой ЦП).
Вот некоторые ссылки:
VDPAU Library Layout: http://http.download.nvidia.com/XFree86/vdpau/doxygen/html/group__api__winsys__x11.html
NVIDIA driver archive: http://www.nvidia.com/object/unix.html
Hardware video acceleration (Arch): https://wiki.archlinux.org/index.php/Hardware_video_acceleration
NVIDIA xorg config: http://us.download.nvidia.com/XFree86/Linux-x86/331.20/README/editxconfig.html
.
Ответ или решение
Решение проблемы "X Error of failed request: BadRequest" при использовании драйвера NVIDIA с аппаратным ускорением видео
Определение проблемы
Вы столкнулись с ошибкой "X Error of failed request: BadRequest" при использовании драйвера NVIDIA с аппаратным ускорением видео на системе Ubuntu 14.04.5. Проблема возникает, когда пытаетесь использовать autovideosink
с GStreamer, что приводит к сбою в видеоакселерации.
Анализ
-
Система и драйверы: Установлен драйвер NVIDIA версии 367.44. Используется графическая карта GeForce GTX 660. Проблемы возникают, когда задействовано аппаратное ускорение с использованием VA-API.
-
Выводы команд: Команды
vainfo
,glxinfo
и другие указывают на ошибки при обращении к системным API, таким как DRI2 и GLX. Это свидетельствует о несоответствии в конфигурации драйверов или несовместимости версии драйверов с вашими системными компонентами. -
Действия по восстановлению: Первоначально вы пытались установить и настроить драйверы NVIDIA с использованием различных подходов, включая использование PPA-репозиториев и сторонних библиотек VA-API и VDPAU.
Решение
-
Обновление драйверов: Используйте актуальные версии драйверов NVIDIA. Можно воспользоваться официальными репозиториями PPA для установки последних стабильных версий драйверов:
sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt-get update sudo apt-get install nvidia-driver-<latest-version>
-
Удаление несовместимых компонентов: Убедитесь, что все старые и несовместимые пакеты полностью удалены. Используйте команды:
sudo apt-get remove --purge nvidia* vdpau-va-driver vainfo libvdpau1
Убедитесь, что файлы черного списка nouveau также удалены из
/etc/modprobe.d
. -
Конфигурация VA-API: Иногда VA-API и VDPAU могут вызывать конфликты с драйверами NVIDIA. Если аппаратное ускорение не критично, рассмотреть возможность использования программного рендеринга или установите драйверы, подходящие для вашей версии X.org и ядра.
-
Проверка конфигураций: Пересоздайте конфигурацию X через:
sudo X -configure sudo cp xorg.conf.new /etc/X11/xorg.conf
-
Проверка через
glxinfo
и тестовые утилиты: После каждой конфигурации проверяйте работоспособность черезglxinfo
иglxgears
. Убедитесь, что аппаратное ускорение OpenGL работает корректно.
Заключение
Проблемы с аппаратным ускорением видео на системах с драйверами NVIDIA часто связаны с несовместимыми версиями драйверов и библиотек. Убедитесь, что все системные компоненты обновлены и корректно настроены. Если проблема не решается стандартными методами, возможно, стоит рассмотреть обновление версии Ubuntu до более современной версии, где поддержка оборудования улучшена.