vainfo ошибка (выделение ресурса не удалось)

Вопрос или проблема

Я пытаюсь включить аппаратное ускорение на своем Debian Wayland компьютере с интегрированным графическим процессором Intel Graphics. Я установил переменную LIBVA_DRIVER_NAME в iHD, и получил такую ошибку:

$ vainfo
libva info: VA-API version 1.17.0
libva info: User environment variable requested driver 'iHD'
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_17
libva error: /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so init failed
libva info: va_openDriver() returns 2
vaInitialize failed with error code 2 (resource allocation failed), exit

Я провел некоторое исследование и, когда я убрал переменную XDG_RUNTIME_DIR, команда сработала (даже если выдала предупреждение):

$ XDG_RUNTIME_DIR= vainfo
error: XDG_RUNTIME_DIR is invalid or not set in the environment.
libva info: VA-API version 1.17.0
libva info: User environment variable requested driver 'iHD'
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_17
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.17 (libva 2.12.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 23.1.1 ()
vainfo: Supported profile and entrypoints
      VAProfileNone                   : VAEntrypointVideoProc
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointEncSliceLP
      VAProfileH264High               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointEncSliceLP
      VAProfileJPEGBaseline           : VAEntrypointVLD
      VAProfileJPEGBaseline           : VAEntrypointEncPicture
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
      VAProfileVP8Version0_3          : VAEntrypointVLD
      VAProfileHEVCMain               : VAEntrypointVLD
      VAProfileHEVCMain               : VAEntrypointEncSliceLP
      VAProfileHEVCMain10             : VAEntrypointVLD
      VAProfileHEVCMain10             : VAEntrypointEncSliceLP
      VAProfileVP9Profile0            : VAEntrypointVLD
      VAProfileVP9Profile0            : VAEntrypointEncSliceLP
      VAProfileVP9Profile1            : VAEntrypointVLD
      VAProfileVP9Profile1            : VAEntrypointEncSliceLP
      VAProfileVP9Profile2            : VAEntrypointVLD
      VAProfileVP9Profile2            : VAEntrypointEncSliceLP
      VAProfileVP9Profile3            : VAEntrypointVLD
      VAProfileVP9Profile3            : VAEntrypointEncSliceLP
      VAProfileHEVCMain12             : VAEntrypointVLD
      VAProfileHEVCMain422_10         : VAEntrypointVLD
      VAProfileHEVCMain422_12         : VAEntrypointVLD
      VAProfileHEVCMain444            : VAEntrypointVLD
      VAProfileHEVCMain444            : VAEntrypointEncSliceLP
      VAProfileHEVCMain444_10         : VAEntrypointVLD
      VAProfileHEVCMain444_10         : VAEntrypointEncSliceLP
      VAProfileHEVCMain444_12         : VAEntrypointVLD
      VAProfileHEVCSccMain            : VAEntrypointVLD
      VAProfileHEVCSccMain            : VAEntrypointEncSliceLP
      VAProfileHEVCSccMain10          : VAEntrypointVLD
      VAProfileHEVCSccMain10          : VAEntrypointEncSliceLP
      VAProfileHEVCSccMain444         : VAEntrypointVLD
      VAProfileHEVCSccMain444         : VAEntrypointEncSliceLP
      VAProfileAV1Profile0            : VAEntrypointVLD
      VAProfileAV1Profile0            : VAEntrypointEncSliceLP
      VAProfileHEVCSccMain444_10      : VAEntrypointVLD
      VAProfileHEVCSccMain444_10      : VAEntrypointEncSliceLP

Почему это происходит? Я не уверен, что полностью понимаю, что делает XDG_RUNTIME_DIR, и подозреваю, что это не является основной причиной проблемы, но не могу найти других подсказок, что еще можно попробовать.

Я готов обновить вопрос, если потребуется больше информации о системе.

Ответ или решение

Чтобы решить проблему с ошибкой vainfo «resource allocation failed» на вашей машине Debian Wayland с интегрированной графикой Intel, давайте подробно рассмотрим, что именно может вызвать эту ошибку и как вы можете её устранить.

Теория

При использовании аппаратного ускорения в Linux на основе Intel Graphics вы сталкиваетесь с окружающей средой VA-API (Video Acceleration API). Это интерфейс, который позволяет приложениям использовать возможности аппаратного ускорения видео декодирования и кодирования через графический процессор.

Переменная окружения LIBVA_DRIVER_NAME указана на драйвер iHD, который специально предназначен для Intel Graphics. Однако, ошибка, которую вы наблюдаете:

vaInitialize failed with error code 2 (resource allocation failed),exit

указывает на проблему с инициализацией этого драйвера. Возвращаемый код ошибки 2 обычно сигнализирует о том, что драйвер столкнулся с проблемой при распределении системных ресурсов или что инициирующая функция драйвера возвратила ошибочный код.

Примеры

Вы заметили, что если вы сбрасываете переменную окружения XDG_RUNTIME_DIR, то выполнение команды vainfo успешно проходит, несмотря на предупреждение о невалидной директории XDG_RUNTIME_DIR. Вот пример как это выглядит:

$ XDG_RUNTIME_DIR= vainfo
error: XDG_RUNTIME_DIR is invalid or not set in the environment.
libva info: VA-API version 1.17.0
libva info: User environment variable requested driver 'iHD'
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_17
libva info: va_openDriver() returns 0

Такая ситуация указывает на то, что условие, при котором XDG_RUNTIME_DIR устанавливается неправильно или указывает на недоступное местоположение, может мешать корректной работе драйвера VA-API.

Применение

Вот шаги, которые помогут вам устранить проблему:

  1. Проверьте XDG_RUNTIME_DIR:
    Эта переменная обычно указывает на место хранения данных сеансов пользователя, которое должно быть доступно и с корректными правами. Для Wayland это особенно важно, так как Wayland использует сокеты в этой директории для взаимодействия между клиентами и сервером. Убедитесь, что переменная указывает на корректный путь, например /run/user/UID.

  2. Проверка полномочий:
    Убедитесь, что текущий пользователь имеет права на чтение и запись в директорию, указанную в XDG_RUNTIME_DIR. Например, выполните:

    ls -ld $XDG_RUNTIME_DIR

    и убедитесь, что владелец и права доступа выставлены корректно.

  3. Убедитесь в наличии правильных библиотек:
    Проверьте наличие и доступность файла /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so. Перезагрузите драйверы, если это необходимо, и проверьте их версии. Используйте:

    sudo apt update
    sudo apt install intel-media-va-driver-non-free

    чтобы убедиться, что вы используете актуальные версии драйверов.

  4. Проверьте конфигурацию Wayland:
    Если вы используете Wayland, проверьте файлы логов Wayland, чтобы убедиться, что сервер Wayland инициализирован нормально и что нет конфигурационных ошибок, которые могли бы препятствовать работе vainfo.

  5. Диагностика с помощью других утилит:
    Используйте такие инструменты, как strace для отслеживания системных вызовов и диагностики проблем:

    strace -o vainfo_trace.txt vainfo

    Это поможет вам понять, где конкретно возникают проблемы.

  6. Создайте резервную копию и измените профиль:
    Если vainfo продолжает выдавать ошибки, возможно, потребуется использовать другой профиль конфигурации или временно переключиться на другой сеанс, такой как Xorg, чтобы проверить, сохраняется ли проблема.

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

Оцените материал
Добавить комментарий

Капча загружается...