ValveSoftware / steam-for-linux

Issue tracking for the Steam for Linux beta client
4.24k stars 175 forks source link

Steam Link NVENC issue #10984

Open kokossVN opened 4 months ago

kokossVN commented 4 months ago

Your system information

Please describe your issue in as much detail as possible:

just set up Steam Link in headless mode and chose NVIDIA NVENC for encoding. Yesterday, I connected to Steam Link, but all the games felt really laggy. Then I noticed the encoder was set to libx264.

Steps for reproducing this issue:

1.

kokossVN commented 4 months ago

Replying to https://github.com/ValveSoftware/steam-for-linux/issues/10984#issue-2354952461

"sorry my english so bad"

tnbp commented 4 months ago

This is also an issue for me, using the current stable 555 driver, on openSUSE. With 550, my machine encodes using NVENC, but Wayland is awful. On 555, it falls back to libx264 on both Wayland and X11. I can still use NVENC in HandBrake/ffmpeg.

jasonsansone commented 3 months ago

I tested 550 and 555. I am on X11, haven’t tested Wayland. NVENC works in Plex, handbrake, and ffmpeg. Does anyone know if there is an nVidia driver that does work I can roll back to but also supports kernel 6.8?

Jcwscience commented 3 months ago

I am also experiencing this issue on the 555.58.02 driver (proprietary and open). Running steam from the command line shows that the HEVC encoding pipeline is started and the libnvenc library appears to load, however it returns a generic error 20 as soon as the first frame is sent and falls back to libx264.

rstrube commented 3 months ago

I can also confirm that I am experiencing the same issue with the open nvidia 555.58.02 driver. After the remote play client connects, the host attempts to begin encoding with NVENC but the first frame fails. It then falls back to VA-API which also fails.

Note: I do have the NVDEC based backend for VA-API installed on my system - arch package libva-nvidia-driver - but this is designed specifically to support VA-AAPI decoding within Firefox so I wouldn't expect it to work for remote play encoding.

Finally it falls back to software encoding which succeeds.

In the past NVENC encoding was working correctly on my remote play host machine. I have not tested NVENC for other applications, but ffmpeg lists it as a valid encoder.

Jcwscience commented 3 months ago

The issue is present on the 560.28.03 beta driver as well.

Jcwscience commented 2 months ago

I think the issue may stem from the removal of legacy encoding profiles in newer driver versions. Can someone with access to the code base check on this?

kevindherdt commented 2 months ago

No solution for this?

tnbp commented 2 months ago

I think the issue may stem from the removal of legacy encoding profiles in newer driver versions. Can someone with access to the code base check on this?

I think this sounds very plausible and is almost definitely what happened, especially seeing as NVIDIA has announced the removal of some older presets for "Q1'24": https://discourse.gstreamer.org/t/nvcodec-nvenc-nvidia-deprecates-support-for-old-videocodec-sdk-h-264-hevc-encoder-presets-with-driver-r550-in-q124/182 (Link contains a "migration guide", also found here: https://docs.nvidia.com/video-technologies/video-codec-sdk/12.1/nvenc-preset-migration-guide/) (EDIT: I just saw you already posted that in #11176)

This would mean that everything is working as expected, Valve just need to update their software to make use of the new presets. DISCLAIMER: This is, of course, speculation.

rstrube commented 1 month ago

I was curious if there's been any solutions people have found - for instance is there a way to re-enable the older preset manually (if that is indeed the problem)?

I haven't been able to use Remote Play for a couple of months at this point - it would be great to be able to stream from my gaming PC to my SteamDeck again!

3ster commented 4 weeks ago

This is still an issue after the October 2nd beta patch that (probably) touched encoding code adding AV1 encoding.

tedb04 commented 2 weeks ago

Yeah, this is frustrating - I'm facing the same issue. I upgraded the GPU in my headless docker host around the same time this issue popped up and I was wondering why my framerate was so bad.

HugoPlacer commented 2 weeks ago

I'm facing the same issue too :(

hannemann commented 1 week ago

I solved it for me using my Intel iGPU. Had to install the 32 bit driver in my headless steam. Maybe this works also on a non headless installations. See https://github.com/Steam-Headless/docker-steam-headless/issues/161#issuecomment-2425182344

kevindherdt commented 1 week ago

I solved it for me using my Intel iGPU. Had to install the 32 bit driver in my headless steam. Maybe this works also on a non headless installations. See https://github.com/Steam-Headless/docker-steam-headless/issues/161#issuecomment-2425182344

I am happy that u found a workaround but this is not a solution for people without igpu.

I hope they can fix it soon because using sunshine isn't ideal and has some very annoying bugs too.

temporaryroman0 commented 5 days ago

I have the same issue using an RTX 2060 Super and nvidia-open 560 drivers. OBS uses NVENC just fine. NVENC - Submitting frame for encoding failed: 20 Failed to initialise VAAPI connection: -1 (unknown libva error). Capture method set to Desktop OpenGL NV12 + libx264 main (4 threads)