Video decoding on NVIDIA
Please buy some real Linux hardware.

This doesn't really help at all. Is it supposed to be funny, or is it
just cynical resignation?

After trying to configure HW acceleration on 9xx series GPU, I'll just take 
that as a serious response.
Consider following points:
  * VDPAU is not compatible with Wayland, our main desktop scenario.
  * Video decoding in Firefox on X11 is limited to X11/EGL, which does not work 
with the Nvidia proprietary driver (but at least there's a hope for that 
scenario).
  * There's no NVDEC vaapi backend, and I see opinions that it would be hard to 
fit NVDEC into vaapi model.
  * Nouveau support ends at VP5 (7xx series).

The wording might be different, but _at the moment_ any recent Nvidia hardware 
cannot be used for HW video acceleration in Firefox.


currently,for proprietary nvidia hw accel

useful docs

        https://wiki.archlinux.org/title/Hardware_video_acceleration

e.g.

on

        lsb_release -rd
                Description:    Fedora release 35 (Thirty Five)
                Release:        35

with nvidia hw,

        hwinfo --gfxcard | egrep " Model| Device| Driver:"
                Model: "nVidia GP108 [GeForce GT 1030]"
                Device: pci 0x1d01 "GP108 [GeForce GT 1030]"
                Driver: "nvidia"

latest upstream driver,

        nvidia-settings -q NvidiaDriverVersion

                Attribute 'NvidiaDriverVersion' (test.loc:0.0): 495.44
                Attribute 'NvidiaDriverVersion' (test.loc:0[gpu:0]): 495.44

        lsmod | grep nv
                nvidia_uvm           1167360  0
                nvidia_drm             73728  8
                nvidia_modeset       1150976  20 nvidia_drm
                nvidia              36950016  1354 nvidia_uvm,nvidia_modeset
                drm_kms_helper        303104  1 nvidia_drm
                drm                   630784  14 
drm_kms_helper,nvidia,drm_ttm_helper,nvidia_drm,ttm


currently, this set of relevant pkgs

        rpm -qa | egrep 
"libva|nvidia|vdpau|dkms|kernel-devel|glx|^egl|glvnd|libvpx|vulkan"
                dkms-2.8.6-1.fc35.noarch
                egl-utils-8.4.0-12.20210504git0f9e7d9.fc35.x86_64
                glx-utils-8.4.0-12.20210504git0f9e7d9.fc35.x86_64
                kernel-devel-5.14.17-301.fc35.x86_64
                libglvnd-1.3.4-2.fc35.x86_64
                libglvnd-core-devel-1.3.4-2.fc35.x86_64
                libglvnd-devel-1.3.4-2.fc35.x86_64
                libglvnd-egl-1.3.4-2.fc35.x86_64
                libglvnd-gles-1.3.4-2.fc35.x86_64
                libglvnd-glx-1.3.4-2.fc35.x86_64
                libglvnd-opengl-1.3.4-2.fc35.x86_64
                libva-2.13.0-2.fc35.x86_64
                libva-utils-2.13.0-1.fc35.x86_64
                libva-vdpau-driver-0.7.4-110.fc35.x86_64
                libvdpau-1.4-6.fc35.x86_64
                libvdpau-devel-1.4-6.fc35.x86_64
                libvdpau-trace-1.4-6.fc35.x86_64
                libvdpau-va-gl-0.4.2-20.fc35.x86_64
                libvpx-1.10.0-2.fc35.x86_64
                mesa-vdpau-drivers-21.2.5-1.fc35.x86_64
                mesa-vulkan-drivers-21.2.5-1.fc35.x86_64
                vdpauinfo-1.4-1.fc35.x86_64
                vulkan-headers-1.2.189.0-1.fc35.noarch
                vulkan-loader-1.2.189.0-1.fc35.x86_64
                vulkan-loader-devel-1.2.189.0-1.fc35.x86_64
                vulkan-tools-1.2.189.0-1.fc35.x86_64

checking for X11

        grep -iE 'vdpau | dri driver' /var/log/Xorg.0.log
                [    37.637] (II) NVIDIA(0): [DRI2]   VDPAU driver: nvidia

verifying

        ldd `which mpv` | egrep -i "egl|nvidia|vdpau"
                libEGL.so.1 => /lib64/libEGL.so.1 (0x00007fadfdbb4000)
                libwayland-egl.so.1 => /lib64/libwayland-egl.so.1 
(0x00007fadfbdbe000)
                libvdpau.so.1 => /lib64/libvdpau.so.1 (0x00007fadfacea000)

        VDPAU_DRIVER=nvidia mpv --hwdec=auto TEST.mp4
                 (+) Video --vid=1 (*) (h264 1920x1080 30.015fps)
                 (+) Audio --aid=1 --alang=eng (*) (aac 2ch 48000Hz)
                Using hardware decoding (nvdec).
                AO: [pulse] 48000Hz stereo 2ch float
                VO: [gpu] 1920x1080 cuda[nv12]
                AV: 00:00:02 / 00:00:39 (7%) A-V:  0.026 ct:  0.256

for FF

        rpm -qa firefox
                firefox-94.0-1.fc35.x86_64

read

        
https://www.phoronix.com/scan.php?page=news_item&px=Firefox-94-EGL-Linux-Usage
        
https://mozillagfx.wordpress.com/2021/10/30/switching-the-linux-graphics-stack-from-glx-to-egl/

note

        "In X.org, since 94, Firefox will run in EGL mode by default which is 
sufficient [19]."

user.js settings currently include,

        user_pref("media.ffmpeg.enabled", true);
        user_pref("media.ffmpeg.vaapi.enabled", true);
        user_pref("media.ffmpeg.vaapi-drm-display.enabled", true);
        user_pref("media.ffvpx.enabled", false);
        user_pref("media.navigator.mediadatadecoder_vpx_enabled", true);
        user_pref("media.rdd-ffvpx.enabled", false);
        user_pref("media.rdd-vpx.enabled", false);

check

        grep -iE 'vdpau | dri driver' /var/log/Xorg.0.log
                [   216.777] (II) NVIDIA(0): [DRI2]   VDPAU driver: nvidia
                                                                    ^^^^^^

        hwinfo --gfxcard | grep "SysFS ID"
                SysFS ID: /devices/pci0000:00/0000:00:03.1/0000:09:00.0

        ls -d /sys/devices/pci0000:00/0000:00:03.1/0000:09:00.0/drm/render*
                
/sys/devices/pci0000:00/0000:00:03.1/0000:09:00.0/drm/renderD128/

        ls -al /usr/lib64/dri/nvidia_drv_video*
                lrwxrwxrwx 1 root root 18 Jul 22 12:18 
/usr/lib64/dri/nvidia_drv_video.so -> vdpau_drv_video.so*
                                                                      ^^^^^^

launch @ shell

        VDPAU_DRIVER=nvidia MOZ_LOG="Dmabuf:5, PlatformDecoderModule:5" firefox

nav to

        https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4

@ shell


        ...
        [Child 19933: Main Thread]: D/Dmabuf 
nsDMABufDevice::IsDMABufVAAPIEnabled: EGL 1 DMABufEnabled 1  
media_ffmpeg_vaapi_enabled 1 CanUseHardwareVideoDecoding 1 !XRE_IsRDDProcess 1
        ...
        [RDD 20039: Main Thread]: D/PlatformDecoderModule PDMInitializer, Init 
PDMs in RDD process
        [RDD 20039: Main Thread]: D/Dmabuf nsDMABufDevice::Configure()
        [RDD 20039: Main Thread]: D/Dmabuf Loading DMABuf system library 
libgbm.so.1 ...
        ...
        [RDD 20039: Main Thread]: D/Dmabuf DMABuf is enabled, using drm node 
/dev/dri/renderD128
        [RDD 20039: Main Thread]: D/Dmabuf 
nsDMABufDevice::IsDMABufVAAPIEnabled: EGL 1 DMABufEnabled 1  
media_ffmpeg_vaapi_enabled 1 CanUseHardwareVideoDecoding 1 !XRE_IsRDDProcess 0
        [RDD 20039: Main Thread]: D/PlatformDecoderModule VA-API FFmpeg is 
disabled by platform
        ...
        [Child 19933: MediaPDecoder #2]: D/Dmabuf 
nsDMABufDevice::IsDMABufVAAPIEnabled: EGL 1 DMABufEnabled 1  
media_ffmpeg_vaapi_enabled 1 CanUseHardwareVideoDecoding 1 !XRE_IsRDDProcess 1
        [Child 19933: MediaPDecoder #2]: D/Dmabuf 
nsDMABufDevice::IsDMABufVideoEnabled: EGL 1 DMABufEnabled 1  
!media_ffmpeg_dmabuf_textures_disabled 1 !XRE_IsRDDProcess() 1
        [Child 19933: MediaPDecoder #2]: D/PlatformDecoderModule Initialising 
VA-API FFmpeg decoder
        libva info: VA-API version 1.13.0
        [Child 19933: MediaPDecoder #2]: D/PlatformDecoderModule Initialising 
FFmpeg decoder.
        [Child 19933: MediaPDecoder #2]: D/PlatformDecoderModule FFmpeg init 
successful.
        [Child 19933: MediaPDecoder #2]: D/PlatformDecoderModule Choosing 
FFmpeg pixel format for video decoding.
        [Child 19933: MediaPDecoder #2]: D/PlatformDecoderModule Requesting 
pixel format YUV420P.
        [vp9 @ 0x7f8a48d85800] Format yuv420p chosen by get_format().
        [Child 19933: MediaPDecoder #1]: D/PlatformDecoderModule 
AudioTrimmer[7f8a37ab3e80] ::PrepareTrimmers: sample[0,21000] no trimming 
information
        [RDD 20039: MediaPDecoder #1]: D/PlatformDecoderModule 
OpusDataDecoder[7fb627975080] ::Decode: Opus decoder skipping 312 of 960 frames
        [Child 19933: MediaPDecoder #3]: D/PlatformDecoderModule 
AudioTrimmer[7f8a37ab3e80] ::HandleDecodedResult: sample[0,21000] 
(decoded[0,13500] no trimming needed
        [Child 19933: MediaPDecoder #2]: D/PlatformDecoderModule DMABuf Got one 
frame output with pts=0dts=0 duration=33000 opaque=-9223372036854775808
        ...


ymmv
_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org
Do not reply to spam on the list, report it: 
https://pagure.io/fedora-infrastructure

Reply via email to