vdpauinfo missing 444 and actual width/height of the video surface. Quadro M5000, Driver 375.39, CentOS 7

Hi,

I have an NVIDIA Quadro M5000 card installed in a workstation, and have all four DP ports hooked up to four 4K monitors (2x2 Mosaic). I Installed CentOS 7, Nvidia Driver 375.39, and xorg.conf configured properly. I have a huge 7680 x 4320 desktop now. Yum.

The issue is that if i use a media player like mpv to play a 6k movie (6240x2700) using vdpau driver, it gives me this error:

VO: [vdpau] 6240x2700 yuv420p
[vo/vdpau] Video too large for vdpau.
Could not initialize video chain.

When I run vdpauinfo, it gives me this:

display: :0   screen: 0
API version: 1
Information string: NVIDIA VDPAU Driver Shared Library  375.39  Tue Jan 31 19:41:00 PST 2017

Video surface:

name   width height types
-------------------------------------------
420     4096  4096  NV12 YV12 
422     4096  4096  UYVY YUYV 

Decoder capabilities:

name                        level macbs width height
----------------------------------------------------
MPEG1                           0 65536  4080  4080
MPEG2_SIMPLE                    3 65536  4080  4080
MPEG2_MAIN                      3 65536  4080  4080
H264_BASELINE                  41 65536  4096  4096
H264_MAIN                      41 65536  4096  4096
H264_HIGH                      41 65536  4096  4096
VC1_SIMPLE                      1  8190  2048  2048
VC1_MAIN                        2  8190  2048  2048
VC1_ADVANCED                    4  8190  2048  2048
MPEG4_PART2_SP                  3  8192  2048  2048
MPEG4_PART2_ASP                 5  8192  2048  2048
DIVX4_QMOBILE                   0  8192  2048  2048
DIVX4_MOBILE                    0  8192  2048  2048
DIVX4_HOME_THEATER              0  8192  2048  2048
DIVX4_HD_1080P                  0  8192  2048  2048
DIVX5_QMOBILE                   0  8192  2048  2048
DIVX5_MOBILE                    0  8192  2048  2048
DIVX5_HOME_THEATER              0  8192  2048  2048
DIVX5_HD_1080P                  0  8192  2048  2048
H264_CONSTRAINED_BASELINE      41 65536  4096  4096
H264_EXTENDED                  41 65536  4096  4096
H264_PROGRESSIVE_HIGH          41 65536  4096  4096
H264_CONSTRAINED_HIGH          41 65536  4096  4096
H264_HIGH_444_PREDICTIVE       41 65536  4096  4096

Output surface:

name              width height nat types
----------------------------------------------------
B8G8R8A8         16384 16384    y  Y8U8V8A8 V8U8Y8A8 A4I4 I4A4 A8I8 I8A8 
R10G10B10A2      16384 16384    y  Y8U8V8A8 V8U8Y8A8 A4I4 I4A4 A8I8 I8A8 

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             y
DEINTERLACE_TEMPORAL_SPATIAL     y
INVERSE_TELECINE                 y
NOISE_REDUCTION                  y
SHARPNESS                        y
LUMA_KEY                         y
HIGH QUALITY SCALING - L1        y
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              y         1     4096
VIDEO_SURFACE_HEIGHT             y         1     4096
CHROMA_TYPE                      y  
LAYERS                           y         0        4

attribute name                  sup      min      max
-----------------------------------------------------
BACKGROUND_COLOR                 y  
CSC_MATRIX                       y  
NOISE_REDUCTION_LEVEL            y      0.00     1.00
SHARPNESS_LEVEL                  y     -1.00     1.00
LUMA_KEY_MIN_LUMA                y  
LUMA_KEY_MAX_LUMA                y

I’m wondering why the 444 and larger video surfaces are missing here? Not sure what i’m doing wrong here. M5000 supports these formats according to: Appendix A. Supported NVIDIA GPU Products and https://developer.nvidia.com/video-encode-decode-gpu-support-matrix

This is the output of: locate vdpau

/usr/bin/vdpauinfo
/usr/include/vdpau
/usr/include/vdpau/vdpau.h
/usr/include/vdpau/vdpau_x11.h
/usr/lib64/libvdpau.so
/usr/lib64/libvdpau.so.1
/usr/lib64/libvdpau.so.1.0.0
/usr/lib64/vdpau
/usr/lib64/dri/vdpau_drv_video.so
/usr/lib64/pkgconfig/vdpau.pc
/usr/lib64/vdpau/libvdpau_nvidia.so
/usr/lib64/vdpau/libvdpau_nvidia.so.1
/usr/lib64/vdpau/libvdpau_nvidia.so.375.39
/usr/lib64/vdpau/libvdpau_trace.so
/usr/lib64/vdpau/libvdpau_trace.so.1
/usr/lib64/vdpau/libvdpau_trace.so.1.0.0

Thanks for the help!

Maxwell GPUs only supports up to 4096 x 4096 resolution videos for H.264 hardware decoding. GM200/GM204 GPUs also do not support HEVC or VP9 hardware decoding.

6K is exceeding the hardware decoder’s limits.

Pascal GPUs were designed with 8192 x 8192 resolution HEVC Main10/Main12 & VP9 hardware decoding support.

http://us.download.nvidia.com/XFree86/Linux-x86_64/378.13/README/vdpausupport.html#vdpau-implementation-limits

"VDPAU Feature Set H

GPUs with VDPAU feature set H support all of the same VdpDecoderProfile values and other features as VDPAU feature set G. Feature set H adds:

VDP_DECODER_PROFILE_HEVC_MAIN:

    Complete acceleration.

    Minimum width or height: 128 luma samples (pixels).

    Maximum width or height: 8192 luma samples (pixels) wide by 8192 luma samples (pixels) tall.

    Maximum macroblocks: not applicable."

"VdpVideoSurface

The maximum supported resolution is 8192x8192 for GPUs with VDPAU feature set H, and 4096x4096 for all other GPUs.

VdpVideoMixer

The maximum supported resolution is 8192x8192 for GPUs with VDPAU feature set H, and 4096x4096 for all other GPUs."

Newer Quadro Pascal cards like the P6000, P5000 etc can decode up to 8K res videos.

Thanks for the info. Is there any other workstation cards that can support HEVC_MAIN_444? Sounds like P5000/P6000 can only handle HEVC_MAIN_10 and HEVC_MAIN_12.

My requirement is to use hardware accelerator for 6k movies with 444 chroma subsampling (codec is flexible). Any suggestion is appreciated.

No hardware supports 4:4:4 hardware decoding. Best available is Main12 4:2:0 on Pascal.