No hwdec on ubuntu 19.10 nvidia prime

I have a lenovo ideapad core i7 10 generation with nvidia mx 230 and intel uhd graphics comet lake
nvidia-drives-440
When in nvidia mode

glxinfo -B
name of display: :1
display: :1  screen: 0
direct rendering: Yes
Memory info (GL_NVX_gpu_memory_info):
    Dedicated video memory: 2048 MB
    Total available memory: 2048 MB
    Currently available dedicated video memory: 1748 MB
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce MX230/PCIe/SSE2
OpenGL core profile version string: 4.6.0 NVIDIA 440.44
OpenGL core profile shading language version string: 4.60 NVIDIA
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile

OpenGL version string: 4.6.0 NVIDIA 440.44
OpenGL shading language version string: 4.60 NVIDIA
OpenGL context flags: (none)
OpenGL profile mask: (none)

OpenGL ES profile version string: OpenGL ES 3.2 NVIDIA 440.44
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
vdpauinfo
display: :1   screen: 0
GPU at BusId 0x1 doesn't have a supported video decoder
Error creating VDPAU device: 1

When in intel mode

glxinfo -B
name of display: :0
display: :0  screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: Intel Open Source Technology Center (0x8086)
    Device: Mesa DRI Intel(R) UHD Graphics (Comet Lake 3x8 GT2)  (0x9b41)
    Version: 19.2.1
    Accelerated: yes
    Video memory: 3072MB
    Unified memory: yes
    Preferred profile: core (0x1)
    Max core profile version: 4.5
    Max compat profile version: 3.0
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.2
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) UHD Graphics (Comet Lake 3x8 GT2) 
OpenGL core profile version string: 4.5 (Core Profile) Mesa 19.2.1
OpenGL core profile shading language version string: 4.50
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile

OpenGL version string: 3.0 Mesa 19.2.1
OpenGL shading language version string: 1.30
OpenGL context flags: (none)

OpenGL ES profile version string: OpenGL ES 3.2 Mesa 19.2.1
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
vainfo
libva info: VA-API version 1.5.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_1_5
libva error: /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so init failed
libva info: va_openDriver() returns -1
vaInitialize failed with error code -1 (unknown libva error),exit

So I can’t use hardware decoding

VDPAU doesn’t work with prime, but nvdec does, so use that instead.

On the vaapi side, it’s possible that comet lake only works with the “intel-media-driver” rather than the i965 driver. set LIBVA_DRIVER_NAME=iHD in the environment and re-run vainfo.

No idea what media player you’re using but I’ll recommend mpv, because I’m biased. It has the most complete hardware acceleration support, particularly for nvdec.

Thank you are rigth comet lake lake drive is “intel-media-driver” setting LIBVA_DRIVER_NAME=iHD in the environment worked for me.

Now I have to solve the issue I have with nvdec

mpv --hwdec=nvdec --vo=gpu http://distribution.bbb3d.renderfarming.net/video/mp4/bbb_sunflower_1080p_60fps_normal.mp4
Playing: http://distribution.bbb3d.renderfarming.net/video/mp4/bbb_sunflower_1080p_60fps_normal.mp4
 (+) Video --vid=1 (*) (h264 1920x1080 60.000fps)
 (+) Audio --aid=1 (*) (mp3 2ch 48000Hz)
     Audio --aid=2 (*) (ac3 6ch 48000Hz)
File tags:
 Artist: Blender Foundation 2008, Janus Bager Kristensen 2013
 Comment: Creative Commons Attribution 3.0 - http://bbb3d.renderfarming.net
 Composer: Sacha Goedegebure
 Genre: Animation
 Title: Big Buck Bunny, Sunflower version
VO: [gpu] 1920x1080 yuv420p
AO: [pulse] 48000Hz stereo 2ch float
AV: 00:00:01 / 00:10:34 (0%) A-V:  0.000 Cache:  7s+3MB

I don’t have hardware decoding
If I set hwdec=auto I get vaapi-copy

mpv --hwdec=auto --vo=gpu http://distribution.bbb3d.renderfarming.net/video/mp4/bbb_sunflower_1080p_60fps_normal.mp4
Playing: http://distribution.bbb3d.renderfarming.net/video/mp4/bbb_sunflower_1080p_60fps_normal.mp4
 (+) Video --vid=1 (*) (h264 1920x1080 60.000fps)
 (+) Audio --aid=1 (*) (mp3 2ch 48000Hz)
     Audio --aid=2 (*) (ac3 6ch 48000Hz)
File tags:
 Artist: Blender Foundation 2008, Janus Bager Kristensen 2013
 Comment: Creative Commons Attribution 3.0 - http://bbb3d.renderfarming.net
 Composer: Sacha Goedegebure
 Genre: Animation
 Title: Big Buck Bunny, Sunflower version
GPU at BusId 0x1 doesn't have a supported video decoder
Using hardware decoding (vaapi-copy).
VO: [gpu] 1920x1080 nv12
AO: [pulse] 48000Hz stereo 2ch float
AV: 00:00:01 / 00:10:34 (0%) A-V:  0.000 Cache:  8s+4MB
[osd/libass] fontselect: Using default font family: (Source Sans Pro, 400, 0) -> /usr/share/fonts/truetype/dejavu/DejaVuSans.ttf, 0, DejaVuSans
[osd/libass] fontselect: Using default font family: (Source Sans Pro, 700, 0) -> /usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf, 0, DejaVuSans-Bold
AV: 00:00:16 / 00:10:34 (2%) A-V:  0.000 Dropped: 3 Cache: 164s+72MB

my nvidia-smi

nvidia-smi
Fri Jan 10 13:02:52 2020       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.44       Driver Version: 440.44       CUDA Version: 10.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce MX230       Off  | 00000000:01:00.0 Off |                  N/A |
| N/A   56C    P3    N/A /  N/A |    250MiB /  2002MiB |      3%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1037      G   /usr/lib/xorg/Xorg                            28MiB |
|    0      1403      G   /usr/lib/xorg/Xorg                            75MiB |
|    0      1655      G   /usr/bin/gnome-shell                          99MiB |
+-----------------------------------------------------------------------------+

update, I installed google earth pro under nvidia, in info it says tha nvidia is being use.

But I can’t have hardware decoding with nvidia no matter what player I use, mpv, vlc or kodi

The answer is that the MX230 is one of the parts with no video decode/encode capabilities, at all. And you can see this on the official support matrix:

https://developer.nvidia.com/video-encode-decode-gpu-support-matrix

You need to expand the full Geforce list to see it, but it’s there.

So vaapi is the only decode you have, and if you want full hardware offload (decode and render without a copy inbetween) you have to render on the intel GPU too - which probably limits your ability to use high quality scalers, etc.

If you want to keep using nvidia for rendering, then vaapi-copy is the only one that will work.

Thanks langdalepl, now it makes sense.