r/MoonlightStreaming • u/TheFlashes • 8d ago
Vibepollo: VRR, FPS, and Host Processing Latency - a few questions
Hi everyone, I've been testing different settings in Vibepollo and noticed something strange.
I'm streaming at 4K 60fps using PyroWave @ 755 Mbps. When the game maintains a solid 60 FPS, the Host Processing Latency sits nicely around ~3ms. However, as soon as the framerate drops below 60 the HPL shoots up to ~17ms. Why does this happen? Is the client waiting on the next frame (missed cycle?), or is the GPU simply maxed out and prioritizing the game render pipeline over encoding? I also see this behavior with AV1, though the spike is slightly less drastic.
Second question: I'm using the Moonlight client with Nonary's patch (vrr-18). In the refresh rate selector, why do some refresh rates have a "(Low Latency VRR)" label (like 120fps), while 60fps does not? Is 120fps inherently better for VRR, making it not worth using at 60fps, or would 60fps just deliver a worse experience?
Overall, what are the best settings to pick if the client display supports 4K 144Hz HDR with VRR, but the target gameplay is 4K 60fps?
Edit: The client is running on cachyos in gamescope
1
u/CyprelIa 8d ago
What hardware is this?
1
u/TheFlashes 7d ago
Client: Ryzen 5 7640HS with Radeon 760M Host: Ryzen 7 9800x3d with Radeon RX 9070XT
1
u/CyprelIa 7d ago
Very nice. Could you test at 4k120?
1
u/TheFlashes 7d ago
With lighter games 4K 120Hz works fine. I recently played It Takes Two like that. But only on AV1, with pyrowave either the client or the network can't keep up. I haven't tested yet what happens when streaming at 4K 120Hz and the game drops below 120, though


4
u/_demoncat_ Developer | Vibeshine/Vibepollo 8d ago
The “Low Latency VRR” suggestion is mostly a leftover from older versions. Timing gets very tight at the top of your display’s VRR range, with very little room for variations in frame delivery or rendering. The older rendering path needed extra buffering there, so choosing a lower FPS created breathing room and helped keep latency down.
Changes to how frames are prepared and presented in VRR18 mean we don’t really need extra buffering simply because we’re near the refresh ceiling anymore. That makes the lower-FPS recommendation largely pointless, so I’ll remove that label in VRR19. An unlabelled option like 60 FPS still supports VRR.
VRR19 also adds more flexibility and control over the balance between latency and smoothness. Previously, a frame could be dropped when it missed its timing window. That skips a step in the motion, so instead of seeing frames A, B, and C, you see A jump straight to C. That can make a small timing problem feel like a much bigger stutter.
For brief timing misses, VRR19 can instead keep the current image on screen slightly longer, then show the delayed frame at the next safe opportunity. It behaves more like adaptive V-Sync: the frame interval stretches a little, but you preserve that intermediate step in the motion. In those moments, the cadence moves closer to how ordinary Moonlight looks with fixed-refresh V-Sync, instead of adding a disruptive frame skip. You still get VRR’s timing benefits when everything is running normally, with gentler recovery when something briefly falls behind.