View previous topic :: View next topic |
Author |
Message |
F. Russell n00b

Joined: 12 Oct 2017 Posts: 6
|
Posted: Thu Oct 12, 2017 2:40 pm Post subject: Vdpau Not Working with Nvidia-Drivers (All Versions) |
|
|
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 |
|
 |
duby2291 Guru


Joined: 17 Oct 2004 Posts: 578
|
Posted: Thu Oct 12, 2017 4:14 pm Post subject: |
|
|
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 |
|
 |
F. Russell n00b

Joined: 12 Oct 2017 Posts: 6
|
Posted: Thu Oct 12, 2017 4:45 pm Post subject: |
|
|
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 |
|
 |
F. Russell n00b

Joined: 12 Oct 2017 Posts: 6
|
Posted: Thu Oct 12, 2017 5:52 pm Post subject: |
|
|
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 |
|
 |
duby2291 Guru


Joined: 17 Oct 2004 Posts: 578
|
Posted: Thu Oct 12, 2017 6:35 pm Post subject: |
|
|
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 |
|
 |
F. Russell n00b

Joined: 12 Oct 2017 Posts: 6
|
Posted: Thu Oct 12, 2017 8:37 pm Post subject: |
|
|
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 |
|
 |
duby2291 Guru


Joined: 17 Oct 2004 Posts: 578
|
Posted: Thu Oct 12, 2017 8:43 pm Post subject: |
|
|
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 |
|
 |
F. Russell n00b

Joined: 12 Oct 2017 Posts: 6
|
Posted: Sat Oct 14, 2017 12:24 am Post subject: |
|
|
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 |
|
 |
F. Russell n00b

Joined: 12 Oct 2017 Posts: 6
|
Posted: Sat Oct 14, 2017 1:00 am Post subject: [Solved] |
|
|
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 |
|
 |
|
|
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
|
|