protonscr

No hardware accelerated decoding when playing a video inside the client

steamopen AMD driversDistro Family: ArchWeb Component
ValveSoftware/steam-for-linux#12362 · opened 2025-10-04 by effects3d · updated 2026-03-03 · 5 comments · github
Eeffects3d 2025-10-04 github

Your system information

  • Steam client version (build number or date): 1759461205

  • Distribution (e.g. Ubuntu): Arch Linux

  • Opted into Steam client beta?: No

  • Have you checked for system updates?: Yes

  • Steam Logs: steam-logs.tar.gz

  • GPU: AMD Radeon RX 6650 XT

Please describe your issue in as much detail as possible:

When playing a video inside the Steam client (e.g. from a game's store page), it should be using hardware decoding when "Enable hardware video decoding, if supported" is enabled. However, according to nvtop, DEC remained at 0% when playing a video, meaning that hardware acceleration wasn't utilized.

Is hardware video decoding not supported under Xwayland at the moment?

Steps for reproducing this issue:

  1. Open the store page of any game that includes a video inside the Steam client.
  2. Play the video.
  3. Launch nvtop and look for the DEC variable next to MEM. It will only appear once hardware video decoding goes above 0%.
Kkisak-valve maintainer 2025-10-04 github

Hello @effectsbot, please copy the contents of Steam Runtime Diagnostics from Steam (Steam -> Help -> Steam Runtime Diagnostics) and put it in a gist, then include a link to the gist in this issue report.

Eeffects3d 2025-10-04 github

Hello @effectsbot, please copy the contents of Steam Runtime Diagnostics from Steam (Steam -> Help -> Steam Runtime Diagnostics) and put it in a gist, then include a link to the gist in this issue report.

Done.
https://gist.github.com/effectsbot/92bb4cc4172927b912b7959d4bfd4b20

Eeffects3d 2025-10-13 github

I've tested this with Openbox on Xorg as well and it appears to be suffering from the same issue.

Iibrahim1416 2026-03-03 github

Reproduced on NVIDIA (RTX 4090, driver 590.48.01, Arch-based, Wayland). Did some profiling to isolate what the two settings actually do.

Store page videos use AV1, decoded in software via dav1d

With both "Enable GPU accelerated rendering in web views" and "Enable hardware video decoding" enabled, pidstat -t shows 15 active dav1d-worker threads (software AV1 decoder) and nvidia-smi dmon reports dec: 0% — the NVDEC hardware decoder is never used.

The two settings do different things

I tested three configurations and monitored per-thread CPU (pidstat), system CPU (mpstat), and GPU utilization (nvidia-smi dmon/pmon):

Metric Both OFF GPU render ON, HW decode OFF Both ON
VizCompositorTh CPU% 97.2% 4.3% 2.9%
Renderer process CPU% 22.3% 22.9% 15.0%
dav1d workers active yes yes yes
nvidia-smi DEC% 0% 0% 0%

"GPU accelerated rendering in web views" is what fixes the performance problem — it moves the compositor from CPU to GPU, eliminating the ~97% CPU bottleneck. "Hardware video decoding" provides a smaller additional CPU reduction but does not actually use hardware decode — dav1d is still doing the work in all cases.

Workaround

@effectsbot — even though hardware video decoding isn't working, enabling both settings is still worth it. "GPU accelerated rendering in web views" alone eliminates the CPU bottleneck that causes the laggy playback (97% → 4% on the compositor thread).

How to verify

# GPU decode engine (dec column should be >0 if NVDEC is used):
nvidia-smi dmon -s u -d 1 -c 15

# Per-thread CPU (look for dav1d-worker threads):
pidstat -p $(pgrep -d',' steamwebhelper) -u -t 1 15

System: NVIDIA RTX 4090, driver 590.48.01 (nvidia-open-dkms), EndeavourOS (Arch), kernel 6.18.9, Wayland/KDE Plasma, Steam build 1769025840.

Note: Debug and comment is AI assisted.

Eeffects3d 2026-03-03 github

I already have both of the aforementioned settings enabled, but I still think it could be better if CEF had the feature flag for hardware accelerated decoding enabled by default.

Chromium/CEF currently only supports hardware accelerated decoding via VA-API, for which Nvidia doesn't have first party support, so those GPUs would have to stick with software decoding until support for the Vulkan Video Decode extensions is merged into Chromium.

There is of course the third party nvidia-vaapi-driver that provides a VA-API implementation based on NVDEC, but support for Chromium remains questionable.

Nothing extracted yet.