Skip to content

Releases: Nonary/moonlight-qt

v6.1.0-vrr8 - Significantly lower latency VRR streaming (beta)

Choose a tag to compare

@Nonary Nonary released this 10 Jul 04:02

v6.1.0-vrr8: Significantly Lower Latency VRR Streaming (Beta)

This release refactors Moonlight's VRR frame pacing. The result is significantly lower latency while keeping gameplay smooth when frame rates change or briefly dip.

Known SteamOS Issue: Moonlight May Not Launch in Gaming Mode

A current SteamOS/Gamescope regression can prevent all Moonlight client builds, including this VRR beta, from launching in Gaming Mode. Moonlight may open normally in Desktop Mode, but choosing Play in Gaming Mode briefly starts it and then returns to the Steam library. Reinstalling Moonlight or re-adding the Steam shortcut does not fix this issue. This is not caused by the VRR changes in this release. The upstream report is tracked in moonlight-stream/moonlight-qt#1930.

Temporary Workaround: Downgrade and Freeze the Flathub Build

Until the SteamOS/Gamescope issue is fixed, the known-good Flathub commit is:

fe1cf94fc2027f29b27afaa413de8d4c9afea33acf21eb2e8db018e1c0d513d7

  1. Hold the Power button, choose Switch to Desktop, and open Konsole.
  2. Downgrade Moonlight by pasting this command:
flatpak update --commit=fe1cf94fc2027f29b27afaa413de8d4c9afea33acf21eb2e8db018e1c0d513d7 com.moonlight_stream.Moonlight//stable
  1. Prevent Discover or flatpak update from immediately installing the broken version again:
flatpak mask com.moonlight_stream.Moonlight//stable
  1. Return to Gaming Mode and launch the stable Flathub Moonlight shortcut.

If Flatpak says the app is not installed, your copy may be installed per-user. Repeat steps 2 and 3 with these commands instead:

flatpak update --user --commit=fe1cf94fc2027f29b27afaa413de8d4c9afea33acf21eb2e8db018e1c0d513d7 com.moonlight_stream.Moonlight//stable
flatpak mask --user com.moonlight_stream.Moonlight//stable

Important: This workaround temporarily uses the older stable Flathub build, so it does not include the vrr8 changes. Leave it frozen only until SteamOS/Gamescope is fixed.

Unfreeze and Update Later

Once the upstream issue is confirmed fixed, switch to Desktop Mode, open Konsole, and run:

flatpak mask --remove com.moonlight_stream.Moonlight//stable
flatpak update com.moonlight_stream.Moonlight//stable

If you used the --user commands above, unfreeze and update with:

flatpak mask --user --remove com.moonlight_stream.Moonlight//stable
flatpak update --user com.moonlight_stream.Moonlight//stable

You can then reinstall this vrr8 Flatpak from the Downloads section below if you want to resume testing the VRR beta.

What's New

  • Significantly lower latency. Moonlight now learns how much frame queue it actually needs instead of holding a large safety buffer all the time.
  • Smoother FPS changes. The queue drains quickly when frame rate drops and uses the extra VRR headroom available at lower frame rates.
  • Better recovery from hiccups. Short network, decoder, or GPU stalls are cleared without turning the recovery into a burst of torn or uneven frames.
  • Improved near-maximum-refresh pacing. Close to the display's refresh limit, Moonlight keeps a small temporary reserve and uses tear-free latching only when the display cannot remain reliably synchronized.
  • SteamOS/Linux support. The Linux build selects the Vulkan renderer automatically when VRR is enabled, while retaining the normal renderer order when VRR is disabled. It does not force Game Mode or gamescope.

Technical Summary

The pacing system was changed from mostly fixed timing rules to a closed-loop controller. It measures the real decode-to-render queue age, builds only the reserve justified by recent timing variation, and gradually removes that reserve again when the stream is stable.

Backlog recovery is based on the actual headroom between the stream frame rate and the display refresh rate. Low frame rates can recover much faster without being blasted out at the panel's maximum rate, while high frame rates use gentler recovery to avoid tearing. Alignment waits are limited by the time each frame can safely afford, and fallback decisions stay tied to the specific frame rate that demonstrated a problem.

Stable cadence tracking covers streams down to approximately 20 FPS while still treating genuine long gaps as stalls rather than learning them as a new frame rate.

Existing users: After updating, open Settings and enable Enable VRR. VRR remains off by default in this beta.

Downloads

Platform Download
Windows 10 / 11 MoonlightSetup-x64-6.1.0-vrr8.msi or MoonlightPortable-x64-6.1.0-vrr8.zip
SteamOS / Linux x86_64 Moonlight-VRR-6.1.0-vrr8-linux-x86_64.flatpak

Install on SteamOS / Linux

Download Moonlight-VRR-6.1.0-vrr8-linux-x86_64.flatpak, open a terminal in its download directory, and run:

flatpak install --user ./Moonlight-VRR-6.1.0-vrr8-linux-x86_64.flatpak

To replace an earlier VRR beta installed on the user master branch, run:

flatpak install --user --reinstall ./Moonlight-VRR-6.1.0-vrr8-linux-x86_64.flatpak

Launch this build explicitly with:

flatpak run --user --branch=master com.moonlight_stream.Moonlight

The Flatpak uses the same application ID as Moonlight, so existing settings and paired hosts are retained. On Steam Deck, add the newly installed Moonlight application to Steam from Desktop Mode, then launch it from Gaming Mode for real gamescope presentation.

How to Use VRR

  1. Open Settings and enable Enable VRR.
  2. Make sure VRR (FreeSync, G-Sync, or Adaptive-Sync) is enabled for your display.
  3. On Steam Deck, enable VRR for the connected display in SteamOS when applicable.

Moonlight handles renderer selection and frame pacing automatically.

Beta Notice

This is a beta build. When reporting an issue, include the Moonlight session log and note whether the session was launched from Desktop Mode or Gaming Mode.

v6.1.0-vrr7 - Lower latency VRR streaming (beta)

Choose a tag to compare

@Nonary Nonary released this 09 Jul 03:58

v6.1.0-vrr7: Lower Latency VRR Streaming (Beta)

This build improves VRR (FreeSync / G-Sync / Adaptive-Sync) game streaming.

What's New

  • Smoother Windows VRR pacing. Moonlight does a better job keeping frames aligned with your display, especially when the stream is close to the display's refresh ceiling.
  • Lower latency on stable streams. Frame pacing avoids holding extra buffering when your connection and PC are already keeping up.
  • Better recovery from hiccups. Short network, decoder, or GPU stalls should recover more cleanly with fewer timing spikes afterward.
  • Updated streaming core. This build includes the latest Moonlight common streaming updates used by the VRR beta line.

Note for existing users: After updating, open Settings and enable Enable VRR if you want to use VRR. It is off by default in this beta release.

Downloads

Platform Download
Windows 10 / 11 MoonlightSetup-x64 (installer) or MoonlightPortable-x64 (portable)
SteamOS / Linux Moonlight-VRR-6.1.0-vrr7-x86_64.flatpak

Installing on Linux (Flatpak)

If you don't already have Flatpak installed, follow the setup instructions for your distribution at https://flatpak.org/setup/.

Install the beta build with:

flatpak install ./Moonlight-VRR-6.1.0-vrr7-x86_64.flatpak

Launch Moonlight from your desktop application launcher, or from a terminal with:

flatpak run com.moonlight_stream.Moonlight

If you're upgrading from a previous VRR Flatpak beta, simply install the new Flatpak over the existing installation using the same command.

How to Use

  1. Open Settings and enable Enable VRR.
  2. Use a VRR-capable display with VRR enabled in your display settings.

That's it—Moonlight automatically handles FPS selection and window mode for you.

Beta Notice

This is a beta build. Feedback is welcome—please include your session logs:

  • Windows (portable): Next to Moonlight.exe.
  • Linux (Flatpak): In the application's Flatpak data directory.

v6.1.0-vrr6 - Lower latency VRR streaming (beta)

Choose a tag to compare

@Nonary Nonary released this 07 Jul 03:19

v6.1.0-vrr6: Lower latency VRR streaming (beta)

This build improves VRR (FreeSync / G-Sync / Adaptive-Sync) game streaming.

What's new

  • Lower latency. Frame pacing now measures how much buffering your connection actually needs and uses no more than that. On stable connections, latency drops automatically — no settings required.
  • Better calibration. Moonlight remembers what it learns about your display between sessions, and automatically re-checks when your setup changes.
  • Linux bug fixes. Fixed several Linux-specific issues, including refresh rate detection and frame timing precision.
  • Polished VRR settings. All VRR options now live in one place in Settings, and VRR is now opt-in: turn it on with the Enable VRR checkbox. Enabling it automatically picks the best FPS and window mode for your display.

Note for existing users: after updating, open Settings and check Enable VRR — it is off by default in this release.

Downloads

Platform Download
Windows 10 / 11 MoonlightSetup-x64 (installer) or MoonlightPortable-x64 (portable)
SteamOS / Linux Flatpak build coming soon — use the v6.1.0-vrr5 Flatpak until then

How to use

  1. Open Settings and check Enable VRR.
  2. Use a VRR-capable display with VRR turned on in your display settings.

That's it — Moonlight handles the FPS selection and window mode for you.

Beta notice

This is a beta build. Feedback is welcome — please include your session logs (found next to Moonlight.exe for the portable version).

[SUPERSEDED by v6.1.0-vrr6] v6.1.0-vrr5 - Smooth VRR for SteamOS/Linux + Windows 10/11 (beta)

Choose a tag to compare

@Nonary Nonary released this 05 Jul 02:45

Warning

This release is superseded by v6.1.0-vrr6 - lower latency, better calibration, and VRR is now a simple opt-in checkbox. Please use that release instead.

v6.1.0-vrr5: Smooth VRR game streaming for Linux and Windows This is a special version of Moonlight that fixes VRR game streaming on Linux and Windows. VRR includes FreeSync, G-Sync, and Adaptive-Sync. Previously, VRR did not always work as intended because Moonlight’s frame pacing was not properly synchronized with the display. This could cause uneven motion, stutter, or tearing, especially when the stream FPS did not exactly match the display’s refresh rate. This build fixes that by synchronizing frame pacing with the display, so frames are shown at a smooth and steady pace. The result is smoother game streaming on VRR displays. ## Supported platforms | Platform | Download | | ------------------- | ---------------------------------------------- | | SteamOS / Linux | Moonlight-VRR-6.1.0-vrr5-x86_64.flatpak | | Windows 10 | MoonlightSetup-x64 / MoonlightPortable-x64 | | Windows 11 | MoonlightSetup-x64 / MoonlightPortable-x64 | ## How to use VRR pacing To use the new VRR pacing: 1. Enable V-Sync in Moonlight settings. 2. Set Moonlight to Borderless Windowed mode. 3. Set the stream FPS to the same as, or lower than, your display’s refresh rate. 4. Use a VRR-capable display with VRR enabled. ## New in this release: Linux support VRR pacing now works on Linux and SteamOS using the Vulkan renderer. Install the Flatpak with: bash flatpak install --user ./Moonlight-VRR-6.1.0-vrr5-x86_64.flatpak ```` This build installs next to the normal Flathub Moonlight app and uses the same settings and paired hosts. ## Windows support Standard VRR pacing works on both Windows 10 and Windows 11. ## Optional Windows 11 feature: Smoothest VRR Windows 11 users can enable an optional setting called: **Smoothest VRR (OS-scheduled presentation)** This lets Windows handle the final timing of when each frame appears. It can make VRR even smoother and fully tear-free. To enable it: **Settings** → check **Smoothest VRR (OS-scheduled presentation)** This option only appears on Windows 11. ### Trade-off This mode adds about one extra frame of display latency. Use it if you want the smoothest possible VRR. Leave it off if you prefer lower latency. If your system does not support this mode, Moonlight will automatically use the normal VRR pacing instead. ## Beta notice This is a beta build. Feedback is welcome. For troubleshooting, please include your session logs. On Windows, logs are next to the portable `.exe`. On Linux, run Moonlight from a terminal with: bash flatpak run com.moonlight_stream.Moonlight Linux logs can also be found here: bash ~/.var/app/com.moonlight_stream.Moonlight/cache/ ```

[SUPERSEDED by v6.1.0-vrr5] v6.1.0-vrr4 - Self-calibrating near-ceiling VRR (beta)

Choose a tag to compare

@Nonary Nonary released this 04 Jul 18:27

Warning

This release has been superseded by v6.1.0-vrr5, which adds the Smoothest VRR (OS-scheduled presentation) option. These binaries are kept for rollback purposes only.

Beta build of the Windows VRR frame-pacing work. Supersedes v6.1.0-vrr3.

What's new in vrr4

True VRR in the near-ceiling band

Content between ~103 FPS and just under your display's max refresh used to be quantized to a fixed raster (vsync latch) or fall apart in free-run. It now runs true VRR pacing behind a ~1-frame re-timing buffer: presents ride the measured content cadence while arrival/render jitter lands on an already-queued frame instead of the flip instant. The buffer rebuilds in a single step after game hitches, sheds standing overfill cleanly (one deliberate skip instead of stutter bursts), and pays for raster re-lock out of the buffer instead of with drop cascades.

Self-calibrating, not hardware-tuned

Whether a given display/driver stack can flip-follow near max refresh is now measured, not assumed: the pacer probes its own mid-scan tear rate (a working band measures under ~3%; a non-following raster 40%+) and hands content to the tear-free vsync latch when this display proves it can't pace it — then re-probes periodically. Panels that can follow keep true VRR; stacks that can't find their own edge automatically.

New FPS presets

The FPS selector now offers two computed entries per display:

  • VRR — the community-standard cap refresh − refresh²/3600 (120 Hz → 116 FPS, 144 Hz → 138): the highest rate adaptive sync can follow.
  • Low-latency VRR — ~5/6 of max refresh (120 Hz → 100 FPS): enough per-frame slack that pacing needs only a minimal standing buffer; the lowest-latency tear-free operating point.

Fixes

  • 30 FPS (and other slow-cadence) content no longer gets falsely vsync-latched by a stall detector pinned to the stream's nominal rate.
  • Dropped frames now feed the cadence measurement — fixes a self-sealing trap where 116 FPS content sat at ~104-108 FPS with 10-15% drops.
  • Jitter-burst backlogs no longer pin tears for their whole duration (rationed raster re-anchors break the chains).
  • Slow content (cutscenes) can no longer inherit the near-ceiling buffer and its latency.
  • The performance overlay shows the live pacing sub-state, including the new "(near-ceiling buffer)".

A/B escape hatches

MOONLIGHT_VRR_NO_NEARBUFFER=1 restores vrr3's latch-everything behavior; MOONLIGHT_VRR_BUFFER_GUARD_US moves the band's fast edge.


⚠️ This is a beta of experimental VRR pacing changes for Windows D3D11VA. If pacing misbehaves, check first that your display is actually running at its full refresh rate (Settings > Display > Advanced), then fall back to v6.1.0-vrr3.

🤖 Generated with Claude Code

[SUPERSEDED by v6.1.0-vrr4] Moonlight v6.1.0-vrr3 (VRR pacing beta 3)

Choose a tag to compare

@Nonary Nonary released this 03 Jul 23:43

Warning

This release is superseded by v6.1.0-vrr4, which adds self-calibrating near-ceiling VRR pacing, new VRR FPS presets, and cadence measurement fixes. Binaries below are kept for rollback.

VRR pacing beta 3

Third beta of the true-VRR frame pacing work for the Windows D3D11VA renderer. Includes everything from v6.1.0-vrr2.

What's new (commit 7ac5983)

  • Tear-cascade fix (the big one): new forensic instrumentation showed most residual tearing was self-inflicted — a single torn flip drops the panel out of VRR flip-following, and subsequent presents then tear against the free-running raster for frames on end. The renderer now tracks raster lock and the pacer grants full-scanout re-anchor alignment budgets until lock is re-proven by a streak of instant in-blank hits. Measured on heavy shifting-framerate 4K content: ~4% mid-scan tears down to ~1.1%, with multi-minute stretches at 0.0–0.5%.
  • New "VRR pacing buffer" setting in Streaming Settings — the latency-vs-smoothness dial. Frames wait briefly in a buffer that absorbs network and game hiccups; because a VRR display refreshes the moment a frame is presented, this buffer replaces the fixed-vsync wait rather than stacking on it. Options: Lowest latency (2.5 ms), Balanced (4.5 ms, default), Smoothest (6 ms). MOONLIGHT_VRR_CUSHION_US overrides for experimentation.
  • Post-stall recovery hardening: catch-up presents are spaced at the panel's measured tear-free flip ceiling instead of nominal max-refresh spacing (which physically cannot flip clean), rush presents keep a minimum alignment budget instead of going out blind, and the pacer briefly vsync-latches whenever the content cadence is unmeasurable (stream start, loading screens, entering a game).
  • Adaptive render lead margin replaces the fixed 4 ms: sized to the worst render-time overshoot over the last ~12 seconds, so steady scenes shed standing latency while hitchy games keep full protection.
  • Tear forensics in the log: every mid-scan present is attributed (lateness/flip gap/beam position/budget) in VRR tear forensics lines next to the 10-second align stats — please include a Moonlight-*.log when reporting pacing issues.

A/B env switches

MOONLIGHT_VRR_CLASSIC_RECOVERY=1 (pre-vrr3 recovery behavior), MOONLIGHT_VRR_FIXED_MARGIN=1 (fixed 4 ms margin), MOONLIGHT_VRR_CUSHION_US=<us>, MOONLIGHT_VRR_NO_TRIM=1, MOONLIGHT_VRR_NO_LATCH=1.

Requirements and notes (unchanged from vrr2)

Windows D3D11VA renderer, V-Sync ON in Moonlight settings, borderless windowed mode, VRR display with the stream FPS within the display's refresh range. If VRR "stops working," first check that your display hasn't dropped to 60 Hz. Known rough corner: sustained overload (client render time at or above the frame interval in very heavy scenes) still tears/drops briefly by design — prefer a lower stream FPS cap for very heavy content.

[SUPERSEDED by v6.1.0-vrr3] Moonlight 6.1.0 VRR build 2

Choose a tag to compare

@Nonary Nonary released this 03 Jul 15:53

Warning

This release is superseded by v6.1.0-vrr3, which fixes the dominant residual tearing (tear cascades after VRR flip-following loss) and adds the VRR pacing buffer setting. Binaries below are kept for rollback only.

Second beta of the Windows VRR frame-pacing work. Supersedes v6.1.0-vrr.

What's new since v6.1.0-vrr

Latency: ~7–8 ms lower at 100 FPS (more at 60 FPS). The pacing schedule could park a frame's worth of standing queue delay after any startup stall and never recover it. Two fixes: the content cadence is now measured as a windowed mean (immune to a bias that slowly walked the schedule late), and a gentle servo trims residual standing latency at up to 250 µs/frame — measured queue delay dropped from 8–9 ms to ~1.2 ms flat with drops, tears, and frame-interval jitter unchanged. MOONLIGHT_VRR_NO_TRIM=1 disables the servo for A/B testing.

Smooth at the panel's VRR ceiling. When measured content cadence rises above what the panel can flip tear-free (~103+ FPS on a 120 Hz panel), presents automatically switch to vsync-latched (tear-free, classic vsync feel) and switch back to true VRR pacing the moment content falls below the ceiling — per-frame, no mode change, no stream restart. The perf overlay shows which sub-state is live.

New setting: "Low-latency VRR (allow tearing)". Opts into immediate tearing flips above the VRR ceiling instead of vsync-latching — a few ms less display latency at the cost of visible tearing. Default is off (tear-free).

Better VRR engagement stability. Blank-alignment waits are budgeted from the measured content cadence (with taper + hysteresis near the ceiling), which keeps the driver's VRR flip lock engaged through jitter bursts and recovers it quickly after stalls.

VRR Optimized entries in the FPS selector.

Recommended settings

  • V-Sync ON in Moonlight's settings (the VRR path requires it; the Frame Pacing checkbox does not affect this path)
  • Borderless/windowed fullscreen
  • Cap the stream FPS a bit below your panel's true VRR ceiling (e.g. 100 on a 120 Hz panel) for tear-free minimum-latency pacing; streams capped at/above the ceiling ride the vsync-latch path instead

Windows x64 only. This is a beta — logs land next to Moonlight.exe in portable installs; please attach one when reporting pacing issues.

Moonlight 6.1.0 VRR build [SUPERSEDED by v6.1.0-vrr2]

Choose a tag to compare

@Nonary Nonary released this 03 Jul 00:40

Warning

This build is superseded by v6.1.0-vrr2, which cuts ~7-8 ms of latency and adds automatic tear-free handling at the panel's VRR ceiling. Download the new build instead. These binaries remain available only for rollback/comparison.


Custom Windows x64 VRR build from Nonary/moonlight-qt master.

Commit: 78176c9

Downloads:

  • MoonlightSetup-x64-6.1.0-vrr.msi: Windows installer
  • MoonlightPortable-x64-6.1.0-vrr.zip: portable Windows x64 package