bazzite icon indicating copy to clipboard operation
bazzite copied to clipboard

Steam cannot use hardware video encoding

Open SolarLiner opened this issue 7 months ago • 6 comments

Describe the bug

A recent Quest 3 user, I was looking forward to try some games in VR, however it seems it is a hard requirement for Steam Link in VR mode to use hardware encoding, which it can't get access to.

What did you expect to happen?

Steam Link VR works / Steam and use hardware encoding (also applicable for game recording and remote play)

Output of ujust get-logs

boot_log.txt

Hardware

I have a RTX3060 GPU, which supports hardware encoding as tested with ffmpeg -hwaccel vaapi -vaapi_device /dev/dri/renderD128 ....

$ rpm-ostree status

State: idle
Deployments:
● ostree-unverified-registry:ghcr.io/ublue-os/bazzite-nvidia-open:stable
                   Digest: sha256:f2d0a0b443baa7d0eda2e1fcbda9ef9c591468f7db9ca128fa4bcf3f627d6e75
                  Version: 42.20250911 (2025-09-12T01:16:37Z)
          LayeredPackages: htop tigervnc-server zsh

  ostree-unverified-registry:ghcr.io/ublue-os/bazzite-nvidia-open:stable
                   Digest: sha256:d204697186880bbfebde83de3d2bfd92a81ad948b9606ae8a42c39e41b022d83
                  Version: 42.20250908 (2025-09-08T06:43:15Z)
          LayeredPackages: htop tigervnc-server zsh
$ vainfo

Trying display: wayland
libva info: VA-API version 1.22.0
libva info: Trying to open /usr/lib64/dri/nvidia_drv_video.so
libva info: Found init function __vaDriverInit_1_0
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.22 (libva 2.22.0)
vainfo: Driver version: VA-API NVDEC driver [direct backend]
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            :	VAEntrypointVLD
      VAProfileMPEG2Main              :	VAEntrypointVLD
      VAProfileVC1Simple              :	VAEntrypointVLD
      VAProfileVC1Main                :	VAEntrypointVLD
      VAProfileVC1Advanced            :	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointVLD
      VAProfileH264High               :	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointVLD
      VAProfileHEVCMain               :	VAEntrypointVLD
      VAProfileVP8Version0_3          :	VAEntrypointVLD
      VAProfileVP9Profile0            :	VAEntrypointVLD
      VAProfileAV1Profile0            :	VAEntrypointVLD
      VAProfileHEVCMain10             :	VAEntrypointVLD
      VAProfileHEVCMain12             :	VAEntrypointVLD
      VAProfileVP9Profile2            :	VAEntrypointVLD
      VAProfileHEVCMain444            :	VAEntrypointVLD
      VAProfileHEVCMain444_10         :	VAEntrypointVLD
      VAProfileHEVCMain444_12         :	VAEntrypointVLD

Extra information or context

I have seen https://github.com/ublue-os/bazzite/issues/2706 which claims to have their issue resolved, however it looks like the resolution affects the MESA drivers but not NVidia.

SolarLiner avatar Sep 16 '25 08:09 SolarLiner

I've found this issue after trying to use SteamVR on Bazzite with Quest3. Got an error: "Video Encoder Error (499) - Couldn't set up a video encoder".

I've tried to execute vainfo to see what I get, and...

root@bazzite:~# vainfo
Trying display: wayland
Trying display: x11
libva info: VA-API version 1.22.0
libva info: Trying to open /usr/lib64/dri/nvidia_drv_video.so
libva info: va_openDriver() returns -1
vaInitialize failed with error code -1 (unknown libva error),exit
root@bazzite:~# ls -la /usr/lib64/dri/nvidia_drv_video.so
ls: cannot access '/usr/lib64/dri/nvidia_drv_video.so': No such file or directory

my current rpm-ostree:

$ rpm-ostree status
State: idle
Deployments:
● ostree-image-signed:docker://ghcr.io/ublue-os/bazzite-dx-nvidia:stable
                   Digest: sha256:8435849716078d36cd920e489ea10735a145e6c00f1a06375d349e22f5a287ba
                  Version: 43.20251029 (2025-10-29T21:24:50Z)

  ostree-image-signed:docker://ghcr.io/ublue-os/bazzite-dx-nvidia:stable
                   Digest: sha256:b8879006cc5ad5220780fa3102102855fd70a25a6574f74229c30679c006bc4f
                  Version: 43.20251028 (2025-10-29T00:55:02Z)

Let's see what provides the missing file

$ dnf provides /usr/lib64/dri/nvidia_drv_video.so
Updating and loading repositories:
Repositories loaded.
libva-nvidia-driver-0.0.14-3.fc43.x86_64 : A VA-API implemention using NVIDIA's NVDEC
Repo         : fedora
Matched From : 
Filename     : /usr/lib64/dri/nvidia_drv_video.so

$ dnf info libva-nvidia-driver-0.0.14-3.fc43.x86_64
Updating and loading repositories:
Repositories loaded.
Available packages
Name           : libva-nvidia-driver
Epoch          : 0
Version        : 0.0.14
Release        : 3.fc43
Architecture   : x86_64
Download size  : 52.1 KiB
Installed size : 99.6 KiB
Source         : libva-nvidia-driver-0.0.14-3.fc43.src.rpm
Repository     : fedora
Summary        : A VA-API implemention using NVIDIA's NVDEC
URL            : https://github.com/elFarto/nvidia-vaapi-driver
License        : MIT
Description    : This is an VA-API implementation that uses NVDEC as a backend. This
               : implementation is specifically designed to be used by Firefox for accelerated
               : decode of web content, and may not operate correctly in other applications.
Vendor         : Fedora Project

The package's description just doesn't feel right.... SteamVR issues aside - what am I missing here? Why vainfo does not just work for me?

UPDATE/EDIT:

Bazzite 43 is borked. After downgrading to 42 vainfo is found and works:

$ vainfo
Trying display: wayland
libva info: VA-API version 1.22.0
libva info: Trying to open /usr/lib64/dri/nvidia_drv_video.so
libva info: Found init function __vaDriverInit_1_0
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.22 (libva 2.22.0)
vainfo: Driver version: VA-API NVDEC driver [direct backend]
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            :	VAEntrypointVLD
      VAProfileMPEG2Main              :	VAEntrypointVLD
      VAProfileVC1Simple              :	VAEntrypointVLD
      VAProfileVC1Main                :	VAEntrypointVLD
      VAProfileVC1Advanced            :	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointVLD
      VAProfileH264High               :	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointVLD
      VAProfileHEVCMain               :	VAEntrypointVLD
      VAProfileVP8Version0_3          :	VAEntrypointVLD
      VAProfileVP9Profile0            :	VAEntrypointVLD
      VAProfileAV1Profile0            :	VAEntrypointVLD
      VAProfileHEVCMain10             :	VAEntrypointVLD
      VAProfileHEVCMain12             :	VAEntrypointVLD
      VAProfileVP9Profile2            :	VAEntrypointVLD
      VAProfileHEVCMain444            :	VAEntrypointVLD
      VAProfileHEVCMain444_10         :	VAEntrypointVLD
      VAProfileHEVCMain444_12         :	VAEntrypointVLD
$ rpm-ostree status -v
State: idle
AutomaticUpdates: disabled
Deployments:
● ostree-image-signed:docker://ghcr.io/ublue-os/bazzite-dx-nvidia:stable-42.20251019 (index: 0)
                   Digest: sha256:e3fc1593209c132277fc604b8d1fe8ab0b9889c05c536ff0d149d02902f0d135
                  Version: 42.20251019 (2025-10-19T17:30:03Z)
                   Commit: cfbee6ff8fea099c01c8d18ffa6c10485166fc25f0906a86d984db2bf3a7151b
                   Staged: no
                StateRoot: default

  ostree-image-signed:docker://ghcr.io/ublue-os/bazzite-dx-nvidia:stable (index: 1)
                   Digest: sha256:8435849716078d36cd920e489ea10735a145e6c00f1a06375d349e22f5a287ba
                  Version: 43.20251029 (2025-10-29T21:24:50Z)
                   Commit: 99808a78149259f190586b50901931f360d384c344c2b3997dde322efed6f10e
                StateRoot: default

SirFerdek avatar Nov 02 '25 22:11 SirFerdek

Same here on Bazzite 43:

$ vainfo
Trying display: wayland
libva info: VA-API version 1.22.0
libva info: Trying to open /usr/lib64/dri/nvidia_drv_video.so
libva info: va_openDriver() returns -1
vaInitialize failed with error code -1 (unknown libva error),exit

Bazzite 42: (both is nvidia-open, no other changes)

$ vainfo
Trying display: wayland
libva info: VA-API version 1.22.0
libva info: Trying to open /usr/lib64/dri/nvidia_drv_video.so
libva info: Found init function __vaDriverInit_1_0
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.22 (libva 2.22.0)
vainfo: Driver version: VA-API NVDEC driver [direct backend]
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            :	VAEntrypointVLD
      VAProfileMPEG2Main              :	VAEntrypointVLD
      VAProfileVC1Simple              :	VAEntrypointVLD
      VAProfileVC1Main                :	VAEntrypointVLD
      VAProfileVC1Advanced            :	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointVLD
      VAProfileH264High               :	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointVLD
      VAProfileHEVCMain               :	VAEntrypointVLD
      VAProfileVP8Version0_3          :	VAEntrypointVLD
      VAProfileVP9Profile0            :	VAEntrypointVLD
      VAProfileAV1Profile0            :	VAEntrypointVLD
      VAProfileHEVCMain10             :	VAEntrypointVLD
      VAProfileHEVCMain12             :	VAEntrypointVLD
      VAProfileVP9Profile2            :	VAEntrypointVLD
      VAProfileHEVCMain444            :	VAEntrypointVLD
      VAProfileHEVCMain444_10         :	VAEntrypointVLD
      VAProfileHEVCMain444_12         :	VAEntrypointVLD

C4illin avatar Nov 15 '25 17:11 C4illin

I got it working by layering the libva-nvidia-driver package. I also made it work in Firefox by changing the config as mentioned in the README, and additionally following these instructions to make it work with Flatpak Firefox (though I used Flatseal for the environment variables).

DDoS avatar Nov 15 '25 20:11 DDoS

Nice! libva-nvidia-driver worked for me on 43. Just so you know there is an option under ujust configure-nvidia to fix Firefox automatically :) the only difference I could see is that it also adds MOZ_ENABLE_WAYLAND=1

C4illin avatar Nov 15 '25 20:11 C4illin

Testing is building with that package layered. Let me know if you still need to layer it in testing.

antheas avatar Nov 15 '25 20:11 antheas

Nice! libva-nvidia-driver worked for me on 43. Just so you know there is an option under ujust configure-nvidia to fix Firefox automatically :) the only difference I could see is that it also adds MOZ_ENABLE_WAYLAND=1

That would've saved me a lot of headaches 👍

DDoS avatar Nov 15 '25 20:11 DDoS

Testing is building with that package layered. Let me know if you still need to layer it in testing.

Works perfectly for me, it even removed the package layer automatically. Thanks for the quick fix!

C4illin avatar Nov 17 '25 21:11 C4illin