Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Vdpau Not Working with Nvidia-Drivers (All Versions)
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Multimedia
View previous topic :: View next topic  
Author Message
F. Russell
n00b
n00b


Joined: 12 Oct 2017
Posts: 6

PostPosted: Thu Oct 12, 2017 2:40 pm    Post subject: Vdpau Not Working with Nvidia-Drivers (All Versions) Reply with quote

Hello,

I used to have an Nvidia card based on the legacy GT 210 GPU. Everything, including vdpau, functioned normally with the legacy nvidia-drivers propritary blobs.

However, the legacy nvidia-drivers, that is versions up to 340.104, are having problems building with latest kernels (4.10+). Because of this, I acquired a new Nvidia card, based on the GT 710 GPU, that works with the newest nvidia-drivers. Currently I am using the latest nvidia-drivers-384.90.

With the new GT 710 card, everything seems to function normally except vdpau is broken. Playing a video with mplayer
gives the following error message:

[vdpau] Error when calling vdp_device_create_x11: 1
Error opening/initializing the selected video_out (-vo) device.

Also, vdpauinfo shows only this:

display: :0 screen: 0
Error creating VDPAU device: 1

I emerged all previous nvidia-drivers versions back to 375.82 and all produced the same results.

AFAIK, there is incrrect about my system. Libvdpau is installed as are the nvidia libraries.
(Nothing has changed sinced vdpau was working with the previous GT 210 card.)

There are similar reports on various forums about broken vdpau, but all claim that the problem
is fixed with version 384.90. An example is here:

https://devtalk.nvidia.com/default/topic/1023154/linux/384-69-broke-vdpau

How can I debug this problem further?

Has anyone experienced the same problem?

Beyond the broken vdpau everything else seems fine. i can play videos with the xv device.
_________________
F. Russell
Back to top
View user's profile Send private message
duby2291
Guru
Guru


Joined: 17 Oct 2004
Posts: 575

PostPosted: Thu Oct 12, 2017 4:14 pm    Post subject: Reply with quote

I may actually be misunderstanding, I'm not sure, but I was under the impression nvidia replaced vdpau with nvenc such that nvenc does everything vdpau can plus much more and so they removed vdpau from their proprietary driver. I don't think it's even been in the driver for a few years now.

You might find this reference useful maybe.
https://developer.nvidia.com/video-encode-decode-gpu-support-matrix
Back to top
View user's profile Send private message
F. Russell
n00b
n00b


Joined: 12 Oct 2017
Posts: 6

PostPosted: Thu Oct 12, 2017 4:45 pm    Post subject: Reply with quote

duby2291 wrote:
I was under the impression nvidia replaced vdpau with nvenc


Nvev is completely separate from vdpau, which has been renamed to PureVideo.

The nvidia-drivers-384.90 contains the shared libraries, libvdpau_nvidia.so*, that have the necessary routines to implement vdpau.
_________________
F. Russell
Back to top
View user's profile Send private message
F. Russell
n00b
n00b


Joined: 12 Oct 2017
Posts: 6

PostPosted: Thu Oct 12, 2017 5:52 pm    Post subject: Reply with quote

To see if I could get some better error output I tried the mpv video player:

mpv -hwdec=vdpau -vo=opengl video_file

...
[vo/opengl] Loading hwdec driver 'vdpau-glx'
[vo/opengl/vdpau-glx] Error when calling vdp_device_create_x11: 1
[vo/opengl] Loading failed.
[vo/opengl] Reported display depth: 8
[vo/opengl] Assuming 75.028582 FPS for display sync.
[vd] Container reported FPS: 29.970030
[vd] Codec list:
[vd] h264 - H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
[vd] h264_cuvid (h264) - Nvidia CUVID H264 decoder
[vd] Opening video decoder h264
[vd] Probing 'vdpau'...
[vo/opengl] Loading hwdec driver 'vdpau-glx'
[vo/opengl/vdpau-glx] Error when calling vdp_device_create_x11: 1
[vo/opengl] Loading failed.
[vd] VO does not support requested hardware decoder, or loading it failed.
[vd] Using software decoding.
...

What is this "vdpau-glx?"

Apparently, some piece of software is missing or incomplete on my system since the hardware decoders have been identified by mpv.
_________________
F. Russell
Back to top
View user's profile Send private message
duby2291
Guru
Guru


Joined: 17 Oct 2004
Posts: 575

PostPosted: Thu Oct 12, 2017 6:35 pm    Post subject: Reply with quote

F. Russell wrote:
To see if I could get some better error output I tried the mpv video player:

mpv -hwdec=vdpau -vo=opengl video_file

...
[vo/opengl] Loading hwdec driver 'vdpau-glx'
[vo/opengl/vdpau-glx] Error when calling vdp_device_create_x11: 1
[vo/opengl] Loading failed.
[vo/opengl] Reported display depth: 8
[vo/opengl] Assuming 75.028582 FPS for display sync.
[vd] Container reported FPS: 29.970030
[vd] Codec list:
[vd] h264 - H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
[vd] h264_cuvid (h264) - Nvidia CUVID H264 decoder
[vd] Opening video decoder h264
[vd] Probing 'vdpau'...
[vo/opengl] Loading hwdec driver 'vdpau-glx'
[vo/opengl/vdpau-glx] Error when calling vdp_device_create_x11: 1
[vo/opengl] Loading failed.
[vd] VO does not support requested hardware decoder, or loading it failed.
[vd] Using software decoding.
...

What is this "vdpau-glx?"

Apparently, some piece of software is missing or incomplete on my system since the hardware decoders have been identified by mpv.


Well, if vdpau support does truly still exist in nvidia's driver, then I'm interpreting mpv's man page a bit different then you did.
https://mpv.io/manual/master/#video-output-drivers

If I'm interpreting it right, then -vo should be vdpau. I think all you need is something like "mpv -vo=vdpau video-file"
Back to top
View user's profile Send private message
F. Russell
n00b
n00b


Joined: 12 Oct 2017
Posts: 6

PostPosted: Thu Oct 12, 2017 8:37 pm    Post subject: Reply with quote

duby2291 wrote:

If I'm interpreting it right, then -vo should be vdpau. I think all you need is something like "mpv -vo=vdpau video-file"


That is another option but it fails and gives even less error messages:

mpv -vo=vdpau video_file

[vo/vdpau] Error when calling vdp_device_create_x11: 1
Error opening/initializing the selected video_out (--vo) device.
Video: no video

A Gentoo bug report about a similar problem is here:

https://bugs.gentoo.org/629044
_________________
F. Russell
Back to top
View user's profile Send private message
duby2291
Guru
Guru


Joined: 17 Oct 2004
Posts: 575

PostPosted: Thu Oct 12, 2017 8:43 pm    Post subject: Reply with quote

F. Russell wrote:
duby2291 wrote:

If I'm interpreting it right, then -vo should be vdpau. I think all you need is something like "mpv -vo=vdpau video-file"


That is another option but it fails and gives even less error messages:

mpv -vo=vdpau video_file

[vo/vdpau] Error when calling vdp_device_create_x11: 1
Error opening/initializing the selected video_out (--vo) device.
Video: no video

A Gentoo bug report about a similar problem is here:

https://bugs.gentoo.org/629044


Yep that does seem like the one. But after reading it, I wondering why the older drivers shouldn't work? Unless it's a longstanding issue that was only recently recognized? I doubt that is it at all. Sorry I couldn't help, I don't think I understand this one.
Back to top
View user's profile Send private message
F. Russell
n00b
n00b


Joined: 12 Oct 2017
Posts: 6

PostPosted: Sat Oct 14, 2017 12:24 am    Post subject: Reply with quote

I doubt that this problem will ever be solved. So far I have seen no reports anywhere of an identical problem and if it is more than just some bizzare fluke that only affects my system one would expect to find a lot of complaints.

But for whatever it may be worth, I did an strace on mplayer and think that I've located the source of the error. Here is the relevant portion of the strace outpt:

Code:
open("/usr/lib64/vdpau/libvdpau_nvidia.so.1", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360k\0\0\0\0\0\0"..., 832) = 832
lseek(5, 703848, SEEK_SET)              = 703848
read(5, "\4\0\0\0\20\0\0\0\1\0\0\0GNU\0\0\0\0\0\2\0\0\0\3\0\0\0c\0\0\0", 32) = 32
fstat(5, {st_mode=S_IFREG|0755, st_size=1922832, ...}) = 0
mmap(NULL, 4025184, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x7fa615eca000
mprotect(0x7fa615f76000, 2097152, PROT_NONE) = 0
mmap(0x7fa616176000, 1220608, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0xac000) = 0x7fa616176000
mmap(0x7fa6162a0000, 2912, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fa6162a0000
close(5)                                = 0
mmap(NULL, 3059712, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa615bdf000
open("/proc/modules", O_RDONLY)         = 5
fstat(5, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
read(5, "snd_hda_codec_realtek 69632 1 - "..., 1024) = 1024
close(5)                                = 0
open("/proc/driver/nvidia/params", O_RDONLY) = 5
fstat(5, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
read(5, "Mobile: 4294967295\nResmanDebugLe"..., 1024) = 492
close(5)                                = 0
stat("/dev/nvidiactl", {st_mode=S_IFCHR|0660, st_rdev=makedev(195, 255), ...}) = 0
open("/dev/nvidiactl", O_RDWR)          = 5
fcntl(5, F_SETFD, FD_CLOEXEC)           = 0
ioctl(5, _IOC(_IOC_READ|_IOC_WRITE, 0x46, 0xd2, 0x48), 0x7ffe1aac6500) = -1 EINVAL (Invalid argument)
close(5)                                = 0
write(2, "[vdpau] Error when calling vdp_d"..., 52) = 52
write(2, "Error opening/initializing the s"..., 64) = 64

Note that "/proc/driver/nvidia/params" is opened and read to find some parameters and then "/dev/nvidiactl" is opened and an ioctl() call is made which returns and "Invalid Argument." This then leads to the mplayer error output.

So this point seems to be source of the problem.

Could this indicate that incorrect paramets are found in "/proc/driver/nvidia/params?"

Maybe someone with more experience in this area can shed some light.

[Moderator edit: added [code] tags to preserve output layout. -Hu]
_________________
F. Russell
Back to top
View user's profile Send private message
F. Russell
n00b
n00b


Joined: 12 Oct 2017
Posts: 6

PostPosted: Sat Oct 14, 2017 1:00 am    Post subject: [Solved] Reply with quote

The problem is solved.

For some reason, I had never looked at the kernel log. But after checking the kernel log for any relevant messages I found the motherload:

Code:
kernel: NVRM: API mismatch: the client has the version 340.102, but
kernel: NVRM: this kernel module has the version 384.90.  Please
kernel: NVRM: make sure that this kernel module and all NVIDIA driver
kernel: NVRM: components have the same version.

Doing a search for something that was related to the 340.102 driver, I found a single shared object library in /usr/lib64/vdpau. Why this file was not removed during the emerge process I cannot answer, but the removal of this leftover shared object and a re-emerge of libvdpau did the trick. Now mplayer can use the GT 710 vfpau capabilities.

I thank all those who read and responded. Unfortunately it turned out to be somewhat of a false alarm.

Still, the emerge program from portage should have cleaned out all files from the previous version. Is this not correct?

[Moderator edit: added [code] tags to preserve output layout. -Hu]
_________________
F. Russell
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Multimedia All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum