사용자 도구

사이트 도구


linux:vaapi

Linux VAAPI/VDPAU

vainfo

sudo apt install vainfo
 
vainfo
 
# 해당 기기의 가속 가능한 코덱 정보 출력
libva info: VA-API version 1.8.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_8
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.8 (libva 2.8.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 20.2.0 ()
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointVLD
      VAProfileJPEGBaseline           : VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileVP8Version0_3          : VAEntrypointVLD

Intel

  • Linux Nvidia Graphic Card / Intel Dual graphic 일 경우에도 on-demand 나, intel 모드로 두면, intel vaapi 드라이버로 잘 작동한다.
  • Intel CPU Gen 8 이상
# 기본으로 intel-media-va-driver 가 설치되는데 non-free 버전으로 교체
sudo apt install intel-media-va-driver-non-free libva-drm2 libva-x11-2
  • Intel CPU Gen 7 이하
sudo apt install i965-va-driver-shaders libva-drm2 libva-x11-2
# Utilities
sudo apt install intel-gpu-tools
 
# intel gpu 사용상황 확인 - Video 항목의 % 가 올라가면 GPU Video Encoding 을 사용하는 것이다.
sudo intel_gpu_top

AMD Radeon

  • fglrx 드라이버 설치. fglrx-updatesfglrx중 잘 안되는게 있을 수 있으므로 번갈아 해 볼 것.
  • vaapi로 선택.
  • xvba-va-driver 설치

NVidia

nvidia-optimus

  • 노트북등에 장착된 nvidia / intel dual graphic 일 경우
  • prime-select nvidia 상태라도 intel GPU를 통해 vaapi 비디오 encoding/decoding기능이 작동한다.
  • vainfo 명령의 결과로 아래와 유사하게 intel GPU 관련 값이 나와야 한다.
libva info: VA-API version 1.20.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_20
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.20 (libva 2.12.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 24.1.0 ()
  • 따라서 굳이 nvidia-optimus 에서 nvidia-vaapi-driver 설치할 필요가 없다.

nvidia-vaapi-driver

sudo apt install nvidia-vaapi-driver
  • 해당 github 문서에서 firefox 에서 활성화 하는 법 등이 문서화 돼 있음.
  • 아직까진 성공해본 적 없음

MPlayer

  • 기본 MPlayer는 vdpau를 지원하고 있으므로 특별한 작업 불필요.
  • VAAPI는 VAAPI용으로 컴파일된 MPlayer 필요 - 더이상 개발안되고 있음
    sudo add-apt-repository ppa:sander-vangrieken/vaapi
    sudo apt-get update
    sudo apt-get install mplayer-vaapi
  • -vo vaapi 혹은 -vo vdpau옵션을 지정한다.
  • Linux SMPlayer 등에서 설정할 때 성능 → 디코딩 thread = 1로 두고 Screenshot을 비활성화해야 한다. 그렇지 않으면 vaapi 가 작동하지 않았다.

VLC

  • VLC PPA 등에서 2.1 이상 버전을 받아서 설치하고
  • 3.x 부터는 VDPAU 만 지원하고 VAAPI 는 지원안한다고 함.
    • 환경설정 → 입력 & 코덱설정 → 하드웨어 가속 디코딩에서 적합한 드라이버 선택.

mpv

  • mpv, mpv-handler로 브라우저 H/W 가속 가능.

Browser

Google Chrome 버전 / Ubuntu

mkdir -p ~/.local/share/applications
 
cp /usr/share/applications/google-chrome.desktop ~/.local/share/applications/google-chrome.desktop
# wayland
google-chrome-stable --enable-features=VaapiVideoDecodeLinuxGL --use-gl=angle --use-angle=gl --ozone-platform=wayland
 
# x11
google-chrome-stable --enable-features=VaapiVideoDecodeLinuxGL --use-gl=angle --use-angle=gl --ozone-platform=x11
--ozone-platform-wayland 옵션을 켜면 iBus 한글 입력이 안됐음. 해당 옵션을 제거해도 아무 문제없이 하드웨어 디코딩이 작동했으므로 옵션 제거.

Nvidia

sudo apt install libva-drm2 libva-x11-2
sudo dpkg -i vdpau-va-driver_0.7.4-7ubuntu1_ppa2_20.04.1_amd64.deb \
    libvdpau1_1.4-2_ubuntu20.04.1_amd64.deb
 
sudo apt-mark hold libvdpau1 # libvdpau1 이 구버전이라서 버전업 중단시킴.
  • nvidia 의 경우 VP9 지원을 하는 GPU더라도, 위에 설치한 라이브러리가 이를 지원하지 않기 때문에 enhanced-h264ify 혹은 h264ify 확장으로 VP9 대신 h264 동영상을 전송하게 강제해야함(Block VP9).
    • 단, Youtube의 경우 VP9 을 끄면, 4K 동영상은 지원안하는 것으로 보임. 1080p 까지만 지원.
    • 보통 nvidia 탑재 PC는 사양이 높기 때문에, 1080p 의 경우 가속을 하건 안하건 큰 차이가 안남.
    • 따라서 굳이 GPU 가속 설정 할 필요가 없어보임.

Firefox

firefox - nvidia-vaapi-driver

  • Allow running in Flatpak Firefox #23 : for nvidia-vaapi-driver : 현재 flatpak 에서 nvidia-vaapi-driver 를 지원하지 않기 때문에 복잡한 설정 필요함.
  • nvidia-vaapi-driver 버전이 바뀔 때 마다 재실행해줘야함.
#!/bin/sh
 
DRI_PATH=${HOME}/.var/app/org.mozilla.firefox/dri
 
echo "Clearing firefox flatpak overrides"
flatpak override --user --reset org.mozilla.firefox
 
echo "Adding firefox flatpak overrides"
flatpak override --user --env=LIBVA_DRIVER_NAME=nvidia \
                        --env=LIBVA_DRIVERS_PATH=${DRI_PATH} \
                        --env=LIBVA_MESSAGING_LEVEL=1 \
                        --env=MOZ_DISABLE_RDD_SANDBOX=1 \
                        --env=NVD_BACKEND=direct \
                        org.mozilla.firefox
 
# uncomment the following if you use keepass running on the host
# flatpak override --user --filesystem=xdg-run/app/org.keepassxc.KeePassXC org.mozilla.firefox
 
echo "Copying nvidia vaapi driver into ${DRI_PATH}"
mkdir -p ${DRI_PATH}
cp /usr/lib/x86_64-linux-gnu/dri/nvidia_drv_video.so ${DRI_PATH}/nvidia_drv_video.so
 
cat <<"EOF"
 
    Now open about:config and change `gfx.webrender.all` and `media.ffmpeg.vaapi.enabled` to true.
 
EOF
  • flatpak info –show-runtime org.mozilla.firefox 실행 결과 버전에 맞게 ffmpeg-full flatpak 설치
flatpak info --show-runtime org.mozilla.firefox
# 결과가 22.08 이라면
flatpak install org.freedesktop.Platform.ffmpeg-full//22.08
  • OS 와 동일한 nvidia 드라이버는 아마도 자동 설치 돼 있을것임(안 되면 flatpak update 해볼것)

Browser GPU 가속여부 확인

  • Intel : intel_gpu_top 명령에서 Video 항목이 증가하는지 확인
  • Nvidia : nvidia-smi -q -g 0 -d UTILIZATION -l 1 에서 Decoder 항목이 증가하는지 확인.
  • 4K 동영상을 틀어보면, GPU 가속이 활성화 됐을 때는 CPU 점유율이 낮고, 안됐을 때는 매우 높음을 알 수 있다.
linux/vaapi.txt · 마지막으로 수정됨: 2024/06/11 08:48 저자 kwon37xi