You are not logged in.
I am having hard time reading Hardware video acceleration and figuring which drivers and environment variables to use.
System Details:
OS : Arch Linux x86_64
Kernel : 6.5.2-arch1-1
Resolution : 1920x1080
DE : Hyprland
CPU : Intel i7-9750H (12) @ 2.601GHz
GPU : Intel CoffeeLake-H GT2 [UHD Graphics 630]
GPU : NVIDIA GeForce GTX 1660 Ti Mobile
GPU Driver : Micro-Star International Co., Ltd. [MSI] Cof From Intel Section ->
HD Graphics series starting from Broadwell (2014) and newer (e.g. Intel Arc) are supported by intel-media-driver.
GMA 4500 (2008) up to Coffee Lake (2017) are supported by libva-intel-driver.Which one am i suppose to use ? On arch-discord ( unofficial ) - i am being told to install both.
From Nvidia Section ->
NVIDIA proprietary driver supports via nvidia-utils:
VDPAU on GeForce 8 series and newer GPUs;
NVDEC on Fermi and newer GPUs [1];
NVENC on Kepler and newer GPUs.The part `newer GPUs` confuses me, from three which one should i use ?
In Translation Layer Section ->
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
nvidia-vaapi-driver — A CUDA NVDEC based backend for VA-API.
https://github.com/elFarto/nvidia-vaapi-driver/ || libva-nvidia-driverAURsame confusion is there.
What fundamental i am missing here to understand this?
Ouputs of my current configs ->
[phoenix@ArchLinux ~]$ yay -Qs intel
local/intel-gmmlib 22.3.3-1
Intel Graphics Memory Management Library
local/intel-gpu-tools 1.27-2
Tools for development and testing of the Intel DRM driver
local/intel-media-driver 23.3.1-1
Intel Media Driver for VAAPI — Broadwell+ iGPUs
local/intel-ucode 20230808-1
Microcode update files for Intel CPUs
local/libmfx 23.2.2-2
Intel Media SDK dispatcher library
local/libva-intel-driver 2.4.1-2
VA-API implementation for Intel G45 and HD Graphics family
local/libva-utils 2.19.0-1
Intel VA-API Media Applications and Scripts for libva
local/nvtop 3.0.2-1
GPUs process monitoring for AMD, Intel and NVIDIA
local/onetbb 2021.9.0-1
High level abstract threading library (oneAPI Threading Building Blocks)[phoenix@ArchLinux ~]$ yay -Qs nvidia
local/egl-wayland 2:1.1.12-1
EGLStream-based Wayland external platform
local/ffnvcodec-headers 12.0.16.0-1
FFmpeg version of headers required to interface with Nvidias codec APIs
local/hyprland-nvidia 0.29.1-1
A dynamic tiling Wayland compositor based on wlroots that doesn't sacrifice on
its looks. (NVIDIA patch)
local/lib32-nvidia-utils 535.104.05-1
NVIDIA drivers utilities (32-bit)
local/libva-nvidia-driver 0.0.10-1
VA-API implementation that uses NVDEC as a backend
local/libvdpau 1.5-2
Nvidia VDPAU library
local/libxnvctrl 535.104.05-1
NVIDIA NV-CONTROL X extension
local/nvidia-dkms 535.104.05-1
NVIDIA drivers - module sources
local/nvidia-prime 1.0-4
NVIDIA Prime Render Offload configuration and utilities
local/nvidia-prime-rtd3pm 1.0-2
Configure your discrete NVIDIA GPU to power down when not in use.
local/nvidia-settings 535.104.05-1
Tool for configuring the NVIDIA graphics driver
local/nvidia-utils 535.104.05-1
NVIDIA drivers utilities
local/nvtop 3.0.2-1
GPUs process monitoring for AMD, Intel and NVIDIA[phoenix@ArchLinux ~]$ yay -Qs libva
local/libva 2.19.0-2
Video Acceleration (VA) API for Linux
local/libva-intel-driver 2.4.1-2
VA-API implementation for Intel G45 and HD Graphics family
local/libva-nvidia-driver 0.0.10-1
VA-API implementation that uses NVDEC as a backend
local/libva-utils 2.19.0-1
Intel VA-API Media Applications and Scripts for libva[phoenix@ArchLinux ~]$ LIBVA_DRIVER_NAME=i965 vainfo
Trying display: wayland
vainfo: VA-API version: 1.19 (libva 2.19.0)
vainfo: Driver version: Intel i965 driver for Intel(R) Coffee Lake - 2.4.1
vainfo: Supported profile and entrypoints
VAProfileMPEG2Simple : VAEntrypointVLD
VAProfileMPEG2Simple : VAEntrypointEncSlice
VAProfileMPEG2Main : VAEntrypointVLD
VAProfileMPEG2Main : VAEntrypointEncSlice
VAProfileH264ConstrainedBaseline: VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
VAProfileH264Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointEncSlice
VAProfileH264Main : VAEntrypointEncSliceLP
VAProfileH264High : VAEntrypointVLD
VAProfileH264High : VAEntrypointEncSlice
VAProfileH264High : VAEntrypointEncSliceLP
VAProfileH264MultiviewHigh : VAEntrypointVLD
VAProfileH264MultiviewHigh : VAEntrypointEncSlice
VAProfileH264StereoHigh : VAEntrypointVLD
VAProfileH264StereoHigh : VAEntrypointEncSlice
VAProfileVC1Simple : VAEntrypointVLD
VAProfileVC1Main : VAEntrypointVLD
VAProfileVC1Advanced : VAEntrypointVLD
VAProfileNone : VAEntrypointVideoProc
VAProfileJPEGBaseline : VAEntrypointVLD
VAProfileJPEGBaseline : VAEntrypointEncPicture
VAProfileVP8Version0_3 : VAEntrypointVLD
VAProfileVP8Version0_3 : VAEntrypointEncSlice
VAProfileHEVCMain : VAEntrypointVLD
VAProfileHEVCMain : VAEntrypointEncSlice
VAProfileHEVCMain10 : VAEntrypointVLD
VAProfileHEVCMain10 : VAEntrypointEncSlice
VAProfileVP9Profile0 : VAEntrypointVLD
VAProfileVP9Profile0 : VAEntrypointEncSlice
VAProfileVP9Profile2 : VAEntrypointVLD[phoenix@ArchLinux ~]$ LIBVA_DRIVER_NAME=iHD vainfo
Trying display: wayland
vainfo: VA-API version: 1.19 (libva 2.19.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 23.3.1 ()
vainfo: Supported profile and entrypoints
VAProfileNone : VAEntrypointVideoProc
VAProfileNone : VAEntrypointStats
VAProfileMPEG2Simple : VAEntrypointVLD
VAProfileMPEG2Simple : VAEntrypointEncSlice
VAProfileMPEG2Main : VAEntrypointVLD
VAProfileMPEG2Main : VAEntrypointEncSlice
VAProfileH264Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointEncSlice
VAProfileH264Main : VAEntrypointFEI
VAProfileH264Main : VAEntrypointEncSliceLP
VAProfileH264High : VAEntrypointVLD
VAProfileH264High : VAEntrypointEncSlice
VAProfileH264High : VAEntrypointFEI
VAProfileH264High : VAEntrypointEncSliceLP
VAProfileVC1Simple : VAEntrypointVLD
VAProfileVC1Main : VAEntrypointVLD
VAProfileVC1Advanced : VAEntrypointVLD
VAProfileJPEGBaseline : VAEntrypointVLD
VAProfileJPEGBaseline : VAEntrypointEncPicture
VAProfileH264ConstrainedBaseline: VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
VAProfileH264ConstrainedBaseline: VAEntrypointFEI
VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
VAProfileVP8Version0_3 : VAEntrypointVLD
VAProfileVP8Version0_3 : VAEntrypointEncSlice
VAProfileHEVCMain : VAEntrypointVLD
VAProfileHEVCMain : VAEntrypointEncSlice
VAProfileHEVCMain : VAEntrypointFEI
VAProfileHEVCMain10 : VAEntrypointVLD
VAProfileHEVCMain10 : VAEntrypointEncSlice
VAProfileVP9Profile0 : VAEntrypointVLD
VAProfileVP9Profile2 : VAEntrypointVLD[phoenix@ArchLinux ~]$ LIBVA_DRIVER_NAME=nvidia vainfo
Trying display: wayland
libva error: /usr/lib/dri/nvidia_drv_video.so init failed
vaInitialize failed with error code 1 (operation failed),exit[phoenix@ArchLinux ~]$ LIBVA_DRIVER_NAME=vdpau vainfo
Trying display: wayland
vaInitialize failed with error code -1 (unknown libva error),exit[phoenix@ArchLinux ~]$ VDPAU_DRIVER=va_gl vdpauinfo
display: :1 screen: 0
API version: 1
Information string: OpenGL/VAAPI backend for VDPAU
Video surface:
name width height types
-------------------------------------------
420 4096 4096 NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 NV24 YV24 P010 P016 Y_U_V_444_16
422 4096 4096 NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 NV24 YV24 P010 P016 Y_U_V_444_16
444 4096 4096 NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 NV24 YV24 P010 P016 Y_U_V_444_16
420_16 4096 4096 NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 NV24 YV24 P010 P016 Y_U_V_444_16
422_16 4096 4096 NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 NV24 YV24 P010 P016 Y_U_V_444_16
444_16 4096 4096 NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 NV24 YV24 P010 P016 Y_U_V_444_16
Decoder capabilities:
name level macbs width height
----------------------------------------------------
MPEG1 --- not supported ---
MPEG2_SIMPLE --- not supported ---
MPEG2_MAIN --- not supported ---
H264_BASELINE 51 16384 2048 2048
H264_MAIN 51 16384 2048 2048
H264_HIGH 51 16384 2048 2048
VC1_SIMPLE --- not supported ---
VC1_MAIN --- not supported ---
VC1_ADVANCED --- not supported ---
MPEG4_PART2_SP --- not supported ---
MPEG4_PART2_ASP --- not supported ---
DIVX4_QMOBILE --- not supported ---
DIVX4_MOBILE --- not supported ---
DIVX4_HOME_THEATER --- not supported ---
DIVX4_HD_1080P --- not supported ---
DIVX5_QMOBILE --- not supported ---
DIVX5_MOBILE --- not supported ---
DIVX5_HOME_THEATER --- not supported ---
DIVX5_HD_1080P --- not supported ---
H264_CONSTRAINED_BASELINE 51 16384 2048 2048
H264_EXTENDED --- not supported ---
H264_PROGRESSIVE_HIGH --- not supported ---
H264_CONSTRAINED_HIGH --- not supported ---
H264_HIGH_444_PREDICTIVE --- not supported ---
VP9_PROFILE_0 --- not supported ---
VP9_PROFILE_1 --- not supported ---
VP9_PROFILE_2 --- not supported ---
VP9_PROFILE_3 --- not supported ---
HEVC_MAIN --- not supported ---
HEVC_MAIN_10 --- not supported ---
HEVC_MAIN_STILL --- not supported ---
HEVC_MAIN_12 --- not supported ---
HEVC_MAIN_444 --- not supported ---
HEVC_MAIN_444_10 --- not supported ---
HEVC_MAIN_444_12 --- not supported ---
AV1_MAIN --- not supported ---
AV1_HIGH --- not supported ---
AV1_PROFESSIONAL --- not supported ---
Output surface:
name width height nat types
----------------------------------------------------
B8G8R8A8 32768 32768 y
R8G8B8A8 32768 32768 y
R10G10B10A2 32768 32768 y
B10G10R10A2 32768 32768 y
A8 32768 32768 y
Bitmap surface:
name width height
------------------------------
B8G8R8A8 32768 32768
R8G8B8A8 32768 32768
R10G10B10A2 32768 32768
B10G10R10A2 32768 32768
A8 32768 32768
Video mixer:
feature name sup
------------------------------------
DEINTERLACE_TEMPORAL -
DEINTERLACE_TEMPORAL_SPATIAL -
INVERSE_TELECINE -
NOISE_REDUCTION -
SHARPNESS -
LUMA_KEY -
HIGH QUALITY SCALING - L1 -
HIGH QUALITY SCALING - L2 -
HIGH QUALITY SCALING - L3 -
HIGH QUALITY SCALING - L4 -
HIGH QUALITY SCALING - L5 -
HIGH QUALITY SCALING - L6 -
HIGH QUALITY SCALING - L7 -
HIGH QUALITY SCALING - L8 -
HIGH QUALITY SCALING - L9 -
parameter name sup min max
-----------------------------------------------------
VIDEO_SURFACE_WIDTH -
VIDEO_SURFACE_HEIGHT -
CHROMA_TYPE -
LAYERS -
attribute name sup min max
-----------------------------------------------------
BACKGROUND_COLOR -
CSC_MATRIX -
NOISE_REDUCTION_LEVEL -
SHARPNESS_LEVEL -
LUMA_KEY_MIN_LUMA -
LUMA_KEY_MAX_LUMA - [phoenix@ArchLinux ~]$ VDPAU_DRIVER=nvidia vdpauinfo
display: :1 screen: 0
Error creating VDPAU device: 1Last edited by phoenix324 (2023-09-13 12:16:45)
Offline
Use the intel card for everything. You'll lose most of the benefits of doing HWVA (direct output of the decoded video to the screen without unnecessary roundtrips to the CPU) when going over nvidia, because the nvidia card is not attached to your screen.
And there you use intel-media-driver which is the new and actively maintained VAAPI implementation for GPUs as new as yours, you do not need libva-intel-driver. As for translation layers, you can mostly ignore those/depends on your usecases. Since intel doesn't natively do VDPAU (and VAAPI has basically become the dominant API for video out) there are not going to be many tools still using VDPAU (those that really benefit from nvidia, e.g. if you want to accelerate ffmpeg encoding/decoding/OBS or similar, can and will benefit from NVENC/NVDEC and you can use them there)
In a general sense if you are talking about browsers/video players, use VAAPI and the intel implementation, for specialized usecases that benefit from the nvidia card and that have the relevant implementation use NVENC/NVDEC.
Offline
Thank you.
Offline