I am using a Lenovo Thinkpad T480 laptop with Debian 12 (bookworm). The laptop has 2 graphics cards: Intel UHD Graphics 620 and NVidia GP108M (GeForce MX150). I have installed both drivers by apt-get and they appear to be working fine.
Code:
$ lspci | grep -e NV -e UHD
00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 620 (rev 07)
01:00.0 3D controller: NVIDIA Corporation GP108M [GeForce MX150] (rev a1)
Then I installed VAAPI and VDPAU by apt-get. VAAPI seems to be working fine. "vainfo -a" shows correct info of the Intel graphics card; "mpv --hwdec=vaapi" shows the correct debug info and plays big video smoothly.
However, I think VDPAU is not working properly. The problems include:
(1) When using the Intel graphics card, "vdpauinfo" shows only a small sub-set of the decoder capabilities, while most of them are "not supported".
Here VDPAU is using VAAPI as the backend (by libvdpau-va-gl1). "vainfo -a" shows that H264 4096x4096 and HEVC 8192x8192 are supported, but "vdpauinfo" seems that only H264 2048x2048 is supported, while HEVC is not supported.
I tested VLC (with VDPAU set) and verified the cases described by the two commands.
For a 1920x1080 H264 video, it worked well:
Code:
[00007f3d50004940] gl gl: Initialized libplacebo v4.208.0 (API v208)
libva info: VA-API version 1.17.0
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
[00007f3d60c10a90] avcodec decoder: Using OpenGL/VAAPI backend for VDPAU for hardware decoding
For a 3840x1920 H264 video, it failed:
Code:
[00007fccccc0fa70] avcodec decoder: Using OpenGL/VAAPI backend for VDPAU for hardware decoding
[h264 @ 0x7fccccd39d80] Failed setup for format vdpau: hwaccel initialisation returned error.
[00007fccccc0fa70] avcodec decoder error: existing hardware acceleration cannot be reused
For an HEVC video, it also failed:
Code:
[00007f45b0c1fcf0] avcodec decoder: Using OpenGL/VAAPI backend for VDPAU for hardware decoding
[hevc @ 0x7f45b0d44340] Failed setup for format vdpau: hwaccel initialisation returned error.
[00007f45b0c1fcf0] avcodec decoder error: existing hardware acceleration cannot be reused
I am wondering: since VAAPI has these capabilities, why VDPAU cannot use them? How can I make VDPAU
support these capabilities?
(2) I am not sure how to use VDPAU with the NVidia graphics card. I tried "VDPAU_DRIVER=nvidia vdpauinfo", but it reported:
Code:
display: :0 screen: 0
GPU at BusId 0x1 doesn't have a supported video decoder
Error creating VDPAU device: 1
I think the NVidia graphics is working with proper driver, because "nvidia-smi" and "nvidia-settings" show the corrent info. How can I make VDPAU work on this graphics card?
Thanks!
P.S. This is the "vainfo -a" output:
Code:
$ vainfo -a
libva info: VA-API version 1.17.0
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 config attributes per profile/entrypoint pair
VAProfileMPEG2Simple/VAEntrypointVLD
VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420
VA_RT_FORMAT_YUV422
VA_RT_FORMAT_RGB32
VAConfigAttribDecSliceMode : VA_DEC_SLICE_MODE_NORMAL
VAConfigAttribDecProcessing : VA_DEC_PROCESSING_NONE
VAConfigAttribMaxPictureWidth : 2048
VAConfigAttribMaxPictureHeight : 2048
VAConfigAttribProcessingRate : VA_PROCESSING_RATE_DECODE
VAProfileMPEG2Main/VAEntrypointVLD
VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420
VA_RT_FORMAT_YUV422
VA_RT_FORMAT_RGB32
VAConfigAttribDecSliceMode : VA_DEC_SLICE_MODE_NORMAL
VAConfigAttribDecProcessing : VA_DEC_PROCESSING_NONE
VAConfigAttribMaxPictureWidth : 2048
VAConfigAttribMaxPictureHeight : 2048
VAConfigAttribProcessingRate : VA_PROCESSING_RATE_DECODE
VAProfileH264Main/VAEntrypointVLD
VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420
VA_RT_FORMAT_YUV422
VA_RT_FORMAT_RGB32
VAConfigAttribDecSliceMode : VA_DEC_SLICE_MODE_NORMAL
VA_DEC_SLICE_MODE_BASE
VAConfigAttribDecProcessing : VA_DEC_PROCESSING
VAConfigAttribMaxPictureWidth : 4096
VAConfigAttribMaxPictureHeight : 4096
VAConfigAttribProcessingRate : VA_PROCESSING_RATE_DECODE
VAProfileH264Main/VAEntrypointEncSliceLP
VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420
VAConfigAttribRateControl : VA_RC_CQP
VAConfigAttribEncPackedHeaders : VA_ENC_PACKED_HEADER_SEQUENCE
VA_ENC_PACKED_HEADER_PICTURE
VA_ENC_PACKED_HEADER_SLICE
VA_ENC_PACKED_HEADER_MISC
VA_ENC_PACKED_HEADER_RAW_DATA
VAConfigAttribEncInterlaced : VA_ENC_INTERLACED_NONE
VAConfigAttribEncMaxRefFrames : l0=3
l1=0
VAConfigAttribEncMaxSlices : 3
VAConfigAttribEncSliceStructure : VA_ENC_SLICE_STRUCTURE_EQUAL_ROWS
VA_ENC_SLICE_STRUCTURE_MAX_SLICE_SIZE
VAConfigAttribMaxPictureWidth : 4096
VAConfigAttribMaxPictureHeight : 4096
VAConfigAttribEncQualityRange : number of supported quality levels is 7
VAConfigAttribEncQuantization : VA_ENC_QUANTIZATION_TRELLIS_SUPPORTED
VAConfigAttribEncIntraRefresh : VA_ENC_INTRA_REFRESH_ROLLING_COLUMN
VA_ENC_INTRA_REFRESH_ROLLING_ROW
VAConfigAttribEncSkipFrame : supported
VAConfigAttribEncROI : num_roi_regions=3
roi_rc_priority_support=0
roi_rc_qp_delta_support=1
VAConfigAttribProcessingRate : VA_PROCESSING_RATE_ENCODE
VAConfigAttribEncDirtyRect : number of supported regions is 4
VAConfigAttribEncParallelRateControl : number of supported layers is 1
VAConfigAttribFEIMVPredictors : number of supported MV predictors is 4
VAConfigAttribMaxFrameSize : max_frame_size=1
multiple_pass=1
VAProfileH264High/VAEntrypointVLD
VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420
VA_RT_FORMAT_YUV422
VA_RT_FORMAT_RGB32
VAConfigAttribDecSliceMode : VA_DEC_SLICE_MODE_NORMAL
VA_DEC_SLICE_MODE_BASE
VAConfigAttribDecProcessing : VA_DEC_PROCESSING
VAConfigAttribMaxPictureWidth : 4096
VAConfigAttribMaxPictureHeight : 4096
VAConfigAttribProcessingRate : VA_PROCESSING_RATE_DECODE
VAProfileH264High/VAEntrypointEncSliceLP
VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420
VAConfigAttribRateControl : VA_RC_CQP
VAConfigAttribEncPackedHeaders : VA_ENC_PACKED_HEADER_SEQUENCE
VA_ENC_PACKED_HEADER_PICTURE
VA_ENC_PACKED_HEADER_SLICE
VA_ENC_PACKED_HEADER_MISC
VA_ENC_PACKED_HEADER_RAW_DATA
VAConfigAttribEncInterlaced : VA_ENC_INTERLACED_NONE
VAConfigAttribEncMaxRefFrames : l0=3
l1=0
VAConfigAttribEncMaxSlices : 3
VAConfigAttribEncSliceStructure : VA_ENC_SLICE_STRUCTURE_EQUAL_ROWS
VA_ENC_SLICE_STRUCTURE_MAX_SLICE_SIZE
VAConfigAttribMaxPictureWidth : 4096
VAConfigAttribMaxPictureHeight : 4096
VAConfigAttribEncQualityRange : number of supported quality levels is 7
VAConfigAttribEncQuantization : VA_ENC_QUANTIZATION_TRELLIS_SUPPORTED
VAConfigAttribEncIntraRefresh : VA_ENC_INTRA_REFRESH_ROLLING_COLUMN
VA_ENC_INTRA_REFRESH_ROLLING_ROW
VAConfigAttribEncSkipFrame : supported
VAConfigAttribEncROI : num_roi_regions=3
roi_rc_priority_support=0
roi_rc_qp_delta_support=1
VAConfigAttribProcessingRate : VA_PROCESSING_RATE_ENCODE
VAConfigAttribEncDirtyRect : number of supported regions is 4
VAConfigAttribEncParallelRateControl : number of supported layers is 1
VAConfigAttribFEIMVPredictors : number of supported MV predictors is 4
VAConfigAttribMaxFrameSize : max_frame_size=1
multiple_pass=1
VAProfileJPEGBaseline/VAEntrypointVLD
VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420
VA_RT_FORMAT_YUV422
VA_RT_FORMAT_YUV444
VA_RT_FORMAT_YUV411
VA_RT_FORMAT_YUV400
VA_RT_FORMAT_RGB16
VA_RT_FORMAT_RGB32
VAConfigAttribDecSliceMode : VA_DEC_SLICE_MODE_NORMAL
VAConfigAttribDecJPEG : VA_ROTATION_NONE
VA_ROTATION_90
VA_ROTATION_180
VA_ROTATION_270
VAConfigAttribDecProcessing : VA_DEC_PROCESSING_NONE
VAConfigAttribMaxPictureWidth : 16384
VAConfigAttribMaxPictureHeight : 16384
VAConfigAttribProcessingRate : VA_PROCESSING_RATE_DECODE
VAProfileJPEGBaseline/VAEntrypointEncPicture
VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420
VA_RT_FORMAT_YUV422
VA_RT_FORMAT_YUV444
VA_RT_FORMAT_YUV411
VA_RT_FORMAT_YUV400
VA_RT_FORMAT_RGB16
VA_RT_FORMAT_RGB32
VAConfigAttribEncPackedHeaders : VA_ENC_PACKED_HEADER_RAW_DATA
VAConfigAttribMaxPictureWidth : 16384
VAConfigAttribMaxPictureHeight : 16384
VAConfigAttribEncJPEG : rithmatic_coding_mode=0
progressive_dct_mode=0
non_interleaved_mode=0
differential_mode=0
differential_mode=0
max_num_components=3
max_num_scans=1
max_num_huffman_tables=2
max_num_quantization_tables=3
VAConfigAttribEncQualityRange : number of supported quality levels is 1
VAProfileH264ConstrainedBaseline/VAEntrypointVLD
VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420
VA_RT_FORMAT_YUV422
VA_RT_FORMAT_RGB32
VAConfigAttribDecSliceMode : VA_DEC_SLICE_MODE_NORMAL
VA_DEC_SLICE_MODE_BASE
VAConfigAttribDecProcessing : VA_DEC_PROCESSING
VAConfigAttribMaxPictureWidth : 4096
VAConfigAttribMaxPictureHeight : 4096
VAConfigAttribProcessingRate : VA_PROCESSING_RATE_DECODE
VAProfileH264ConstrainedBaseline/VAEntrypointEncSliceLP
VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420
VAConfigAttribRateControl : VA_RC_CQP
VAConfigAttribEncPackedHeaders : VA_ENC_PACKED_HEADER_SEQUENCE
VA_ENC_PACKED_HEADER_PICTURE
VA_ENC_PACKED_HEADER_SLICE
VA_ENC_PACKED_HEADER_MISC
VA_ENC_PACKED_HEADER_RAW_DATA
VAConfigAttribEncInterlaced : VA_ENC_INTERLACED_NONE
VAConfigAttribEncMaxRefFrames : l0=3
l1=0
VAConfigAttribEncMaxSlices : 3
VAConfigAttribEncSliceStructure : VA_ENC_SLICE_STRUCTURE_EQUAL_ROWS
VA_ENC_SLICE_STRUCTURE_MAX_SLICE_SIZE
VAConfigAttribMaxPictureWidth : 4096
VAConfigAttribMaxPictureHeight : 4096
VAConfigAttribEncQualityRange : number of supported quality levels is 7
VAConfigAttribEncQuantization : VA_ENC_QUANTIZATION_TRELLIS_SUPPORTED
VAConfigAttribEncIntraRefresh : VA_ENC_INTRA_REFRESH_ROLLING_COLUMN
VA_ENC_INTRA_REFRESH_ROLLING_ROW
VAConfigAttribEncSkipFrame : supported
VAConfigAttribEncROI : num_roi_regions=3
roi_rc_priority_support=0
roi_rc_qp_delta_support=1
VAConfigAttribProcessingRate : VA_PROCESSING_RATE_ENCODE
VAConfigAttribEncDirtyRect : number of supported regions is 4
VAConfigAttribEncParallelRateControl : number of supported layers is 1
VAConfigAttribFEIMVPredictors : number of supported MV predictors is 4
VAConfigAttribMaxFrameSize : max_frame_size=1
multiple_pass=1
VAProfileVP8Version0_3/VAEntrypointVLD
VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420
VA_RT_FORMAT_YUV422
VA_RT_FORMAT_RGB32
VAConfigAttribDecSliceMode : VA_DEC_SLICE_MODE_NORMAL
VAConfigAttribDecProcessing : VA_DEC_PROCESSING_NONE
VAConfigAttribMaxPictureWidth : 4096
VAConfigAttribMaxPictureHeight : 4096
VAConfigAttribProcessingRate : VA_PROCESSING_RATE_DECODE
VAProfileHEVCMain/VAEntrypointVLD
VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420
VA_RT_FORMAT_YUV422
VA_RT_FORMAT_RGB32
VAConfigAttribDecSliceMode : VA_DEC_SLICE_MODE_NORMAL
VAConfigAttribDecProcessing : VA_DEC_PROCESSING
VAConfigAttribMaxPictureWidth : 8192
VAConfigAttribMaxPictureHeight : 8192
VAConfigAttribProcessingRate : VA_PROCESSING_RATE_DECODE
VAProfileHEVCMain10/VAEntrypointVLD
VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420
VA_RT_FORMAT_YUV420_10
VA_RT_FORMAT_YUV420_10BPP
VAConfigAttribDecSliceMode : VA_DEC_SLICE_MODE_NORMAL
VAConfigAttribDecProcessing : VA_DEC_PROCESSING
VAConfigAttribMaxPictureWidth : 8192
VAConfigAttribMaxPictureHeight : 8192
VAConfigAttribProcessingRate : VA_PROCESSING_RATE_DECODE
VAProfileVP9Profile0/VAEntrypointVLD
VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420
VA_RT_FORMAT_YUV422
VA_RT_FORMAT_YUV420_10
VA_RT_FORMAT_RGB32
VA_RT_FORMAT_YUV420_10BPP
VAConfigAttribDecSliceMode : VA_DEC_SLICE_MODE_NORMAL
VA_DEC_SLICE_MODE_BASE
VAConfigAttribDecProcessing : VA_DEC_PROCESSING_NONE
VAConfigAttribMaxPictureWidth : 8192
VAConfigAttribMaxPictureHeight : 8192
VAConfigAttribProcessingRate : VA_PROCESSING_RATE_DECODE
VAProfileVP9Profile2/VAEntrypointVLD
VAConfigAttribRTFormat : VA_RT_FORMAT_YUV420
VA_RT_FORMAT_YUV422
VA_RT_FORMAT_YUV420_10
VA_RT_FORMAT_RGB32
VA_RT_FORMAT_YUV420_10BPP
VAConfigAttribDecSliceMode : VA_DEC_SLICE_MODE_NORMAL
VA_DEC_SLICE_MODE_BASE
VAConfigAttribDecProcessing : VA_DEC_PROCESSING_NONE
VAConfigAttribMaxPictureWidth : 8192
VAConfigAttribMaxPictureHeight : 8192
VAConfigAttribProcessingRate : VA_PROCESSING_RATE_DECODE
This is the "vdpauinfo" output:
Code:
$ vdpauinfo
display: :0 screen: 0
libva info: VA-API version 1.17.0
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
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 16384 16384 y
R8G8B8A8 16384 16384 y
R10G10B10A2 16384 16384 y
B10G10R10A2 16384 16384 y
A8 16384 16384 y
Bitmap surface:
name width height
------------------------------
B8G8R8A8 16384 16384
R8G8B8A8 16384 16384
R10G10B10A2 16384 16384
B10G10R10A2 16384 16384
A8 16384 16384
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 -