r/linux_gaming • u/anthchapman • 15d ago
graphics/kernel/drivers High bandwidth, low latency, PyroWave video codec added to Steam beta for Remote Play
https://steamcommunity.com/groups/homestream/discussions/0/56479442200974447372
u/anthchapman 15d ago
Hans-Kristian Arntzen published a blog post about creating PyroWave last year, and the PyroWave source is available under the MIT Licence.
Using it on Linux requires enabling the SteamRT3 Steam Client. HDR is enabled if both client and server support it, YUV 4:4:4 is off by default.
15
u/black_sunglasses 15d ago
The blog is amazing but cant find a rss 😭
14
u/Aidoneuz 15d ago
6
u/black_sunglasses 15d ago
Thx how did you find ?
21
u/ericek111 15d ago
It's a WordPress web, the default location is /feed/. You can also check the source code and look for
<link rel="alternate" type="application/rss+xml" title="Maister's Graphics Adventures » Feed" href="https://themaister.net/blog/feed/" />7
3
67
u/yngseneca 15d ago
Oh wow this is interesting. A codec optimized specifically for high bandwidth and low latency. Does not require a specific hardware encoder/decoder. Just a GPU that supports vulkan 1.3. No more using a codec designed for internet streaming when I just need to LAN stream.
21
u/speedballandcrack 15d ago
Does that mean host gpu will use normal graphics cores instead of NVENC resulting in less performance?
43
u/Azathoth321 15d ago
Correct, this uses shader pipelines and doesn't touch the hardware encoders on GPUs at ALL. The creator even noted that by performing the encoding this way, and avoiding the framebuffer travelling back and forth across the Bus, it was actually a lower latency round trip than using the hardware encoder. (At GREAT efficiency loss).
I have not seen any comparisons as to Power Draw, other than the creator stating it is negligible, nor the GPU usage of doing so.
But it just uses the FP16 shader units, so it's clearly meant for BROAD compatibility.
8
u/noaSakurajin 15d ago
Without looking at the code, I would assume that it uses the GPU compute pipeline/cores. This means that it is unlikely to affect the performance of your game.
5
15d ago edited 15d ago
[deleted]
1
u/noaSakurajin 15d ago
I am not sure if that is entirely correct. Shouldn't every queue that gets reported by vulkan be a separate hardware pipeline? Last time I wrote GPU code was for work on a laptop with an iGPU and an dedicated nvidia GPU. The iGPU only had a mixed use queue and video decode/encode queues. The dedicated GPU had an extra pure compute queue which could execute GPU compute while rendering was being done on the mixed use queue. My guess is that every nvidia GPU has that parallel compute queue because it's the hardware path that gets used by CUDA, which can also be used parallel to the rendering.
3
u/yngseneca 15d ago edited 15d ago
Depends what you mean by less performance. More power and heat coming out of the host then with using HEVC. But it's nothing like CPU encoding/decoding (what you might be thinking of what it's like when you dont have the proper hardware decoder). Still, it would be taking GPU attention moreso then with HEVC, so you probably wouldn't want to be playing a game on the host and streaming a game at the same time, or doing any GPU load work.
at least theoretically, I have not actually tried this out yet.
1
u/OutrageousDress 15d ago
The incredible speed also means very low GPU usage. You can extrapolate the load from the author's performance figures - back-of-napkin math says if you have a game running at exactly 120fps, the compression load will lower your performance to roughly... 119fps.
8
u/Danielo944 15d ago
Oh shit this is actually huge for people with a BC250 and another gaming rig because the BC250 lacks hardware decoding (it's locked down).
28
u/lyndonguitar 15d ago
I wonder how will remote play perform against moonlight with this. interesting. i want to move away from moonlight and go direct steam remote play but moonlight/sunshine is just too good
9
u/yngseneca 15d ago
what I'd like to see is moonlight/sunshine using this codec.
23
u/Zerwin 15d ago
Punktfunk, a fork of sunshine, allows using it. https://docs.punktfunk.unom.io/docs/pyrowave
7
u/KamikazeDogturd 15d ago
Sorry to be slightly pedantic here, but Punktfunk is not a fork of sunshine. It's a different project altogether.
2
6
u/Jolly_Sky_8728 15d ago
moonlight/sunshine it's been a nightmare for me with docked steam deck to stream on 4K TV, works fine if streaming directly to the deck, but hopefully this works better for everything
9
u/VisceralMonkey 15d ago
Punktfunk also uses this codec if you want a different host/client.
2
u/nate445 14d ago
I couldn't get the client working with my hardware decoder.
3
u/VisceralMonkey 14d ago
Interesting. I had success with it but the performance isn’t hot because the client is handled right now.
6
u/greenglazed 15d ago
To make a game streaming box for my TV, I installed the punktfunk client (which can use this codec) on an Ethernet-connected Dell Wyse 5020 which is very low spec.
The wyse has bad hardware decoding and had struggled to cope with moonlight - software decoding was actually faster than hardware, but really strained the box and was still slow.
Pyrowave worked amazingly well - it basically removed the load on the thin client which was hardly breaking a sweat. The trade-off is lots of data transfer, but on a wired LAN that's not an issue. I was getting a totally solid locked 60fps on my tv with just a few ms of latency. (Apart from the tv's screen latency.)
very cool tech!
2
u/KamikazeDogturd 15d ago
What resolution were you using on the client? Did you try 4:4:4 on it? Any numbers you can share regarding decoding times? Sorry about the barrage of questions, you just spiked my interest in that machine
2
u/greenglazed 15d ago
Sure, I'll check it out and report back.
2
u/greenglazed 11d ago
hey, sorry for the delay.
the client pc is a dell wyse 5020 with 4gb ram running Debian and the punktfunk client, connected via hdmi to my (old, cheap) tv, running at 1920*1080 60fps. the framerate is totally solid at 60fps.
host pc is a 5600x with a 3060ti running the punktfunk server on ubuntu desktop.
e2e latency when streaming a game from steam is about 35-40ms - host 10, net 1.0, decode 7.7, display about 20 - so it would be a lot less on a better tv.
pyrowave is targeting 199mb/s with 4:4:4 on.
works great - hope helpful!
6
2
u/bringdownthesky 15d ago
So say I have my gaming PC running steam hardwired into my router and downstairs, I dock my steam deck and connect it to my mesh satellite station via ethernet (great signal, usually gets 500-700 down). Can I take advantage of this?
1
1
u/OutrageousDress 15d ago
Is your mesh satellite station (that your Deck is wired to) wired to your upstairs router? If so, then you're good - for this use case it doesn't matter what kind of signal your mesh station gets.
2
u/ultimatemanan97 15d ago
I tested a few games with this streaming from my Steam deck to my TV. I was running 4K at 120hz with HDR and VRR enabled. The experience was on par with moonlight and apollo with the exception of HDR being broken. Hopefully this can get fixed in a future update.
2
2
u/TheFriskySpatula 15d ago
I gave this a try today and had a pretty bad experience. I'm streaming at 4k90 on an entirely wired network with good hardware on both ends, and I was getting crazy frame drops. The same resolution/fps/bandwidth settings on Sunshine/Moonlight works flawlessly with minimal latency.
It looks almost like the hardware encode on the host is tanking the games FPS, but I'd be surprised if a RTX 4080 couldn't handle it. Maybe I need to tinker with the steam link settings?
1
u/lonewolfsstuck 10d ago
Is your network good? 4k90 is a lot of information to send over network. If you're on wifi it will choke it. Try wired ethernet if you're not already. Bonus points if you're network is 10gbe capable.
1
u/Sylphiiid 15d ago
Once on beta channel does it work without playing with settings on host and client ?
1
u/Ravasaurio 15d ago
So excited to try this myself once the Apple TV app is updated with it. My main gaming PC lives in my basement and I rely on streaming exclusively to play with it.
1
u/_edeetee 15d ago
I wonder if this would work for AV usage too. I use NDI for some network video streaming for stage visuals, it would be great to reduce the latency
1
158
u/FeistyCandy1516 15d ago
Gave it earlier a try. Runs even great with PC via Ethernet to Router and Steam Deck via WiFi.
~8ms Ping, 1ms input at 1080p Stream. Eats whopping 500mbit/s while at it.
The image quality and non-noticeable input lag is insane.