Nvidia Linux GPU video decoding-acceleration in webbrowsers - does it work, and is it worth it
Does it work, in webbrowser:
Yes. Only in Firefox.
Go to nvidia-vaapi-driver - build and install it, and follow instruction to make hardware video acceleration work.
Update Novemnber 2025 - to context with “force P2 state”:
Added a new environment variable,
CUDA_DISABLE_PERF_BOOST, to allow for disabling the default behavior of boosting the GPU to a higher power state when running CUDA applications. Setting this environment variable to1will disable the boost.
For more details read this comment.
Short insrtuction to nvidia-vaapi-driver:
git clone https://github.com/elFarto/nvidia-vaapi-driver- Install in your package manager, names in OpenSuSe package manager:
mesonandffnvcodec-develandgstreamer-plugins-badandstreamer-plugins-bad-devel - In nvidia-vaapi-driver directory -
meson setup buildandmeson install -C build- to install you need root password. - Add to boot parameters to kernel
nvidia-drm.modeset=1, in OpenSuSe it -/sbin/yast2 bootloadersecond tab “kernel parameters” and aditional parameters line there. - Environment Variables - edit
~/.profiletext file, add: (notice newCUDA_DISABLE_PERF_BOOST=1added to fix force P2 state)
export NVD_BACKEND=direct
export LIBVA_DRIVER_NAME=nvidia
export MOZ_X11_EGL=1
export MOZ_DISABLE_RDD_SANDBOX=1
export CUDA_DISABLE_PERF_BOOST=1
- Firefox - open in Firefox page
about:configand follow:
- It should work, to confirm - look
nvidia-settings, and to know nvidia-vaapi-driver works -vainfo, look my screenshot below. - For more information look oritinal instructions on https://github.com/elFarto/nvidia-vaapi-driver
If you do everything correctly - when playing video in webbrowser youl see Video Engine Utilization %.

For me - even vp8 and vp9 videos on youtube work with hardware-GPU decoding.

Is it worth it:
I noticed - when GPU acceleration thru nvidia-vaapi-driver active in webbrowser - GPU forced to GPU 2460MHz MEM 8250MHz.
When minimal GPU 210MHz MEM 405MHz.

And when I play video in webbrowser on CPU-decoding, no GPU-acceleration - GPU stay on lowest level.
For this 4060 GPU - max power usage by GPU is 115Watt.
Because GPU forced to P2 for CUDA-video-decoding, P2 is 40-60% power usage.
Means GPU just wasting about 40Watt to decode video.
Just waste - I mean GPU boosted to 40-60% of performance and use 1-2% of this performance to actualy decode video, 1-2% you can see in nvidia-settings.
When CPU I use is 65Watt CPU and it uses 20% of performance to decode 720p-1080p videos.
20% of 65Watt is 13Watt.
Look like - it is cheaper to decode on CPU.
And it confirmed not just by me, but by other user - look here.
120W on CPU and 180W on GPU-acceleration.
Why Nvidia forced to P2 for video-acceleration:
Look there.
Quote:
nvdec requires cuda, and cuda forces the GPU into at least the P2 state, while the actually hardware decoding works fine at P5. Both VDPAU and Vulkan video decode demonstrate this - they use the same video decoding hardware but don’t force the power state to increase.
Conclusion:
Update 2025 - since 580.105.08 there CUDA_DISABLE_PERF_BOOST to turn off force-behavior - notice Update 2025 note at top.
Since now - it worth it.
Below is only for old drivers.
Use of Nvidia video-decoding hardware acceleration in Linux webbrowser is ~not worth it~.
For reason - Nvidia force GPU-clocks/performance to P2.
For desktop-video players - like mpv - maybe for 4k videos it worth it.
Because when I tested 4k video on CPU-decoding use about 60% of CPU performance, plus forced GPU to P1 I think because PCIE-speed-utilisation for 4k video.
Obviously GPU-encoding worth using, it much faster on GPU to encode video, but GPU-video-decode is not.
Atleast until Nvidia add exception to not force P2 for video decode.
P.S. For mpv video acceleration look mpv hwdec parameter, can be saved to ~/.config/mpv/mpv.conf.
By default mpv use CPU-decode, hwdec=auto and vo=gpu is enough to use GPU-video decode in mpv.