This is a Testing Release
If you want a stabler version use this:
https://github.com/derflacco/moonlight-android/releases/tag/Experimental_6.2
Based on Exp_6.2.
Changelog
Range: 97c8ec4 → 578ff1b
GitHub
Highlights
-
Big polish pass for FPS=Hz / near-Hz streams: new “FPS-match” PhaseLock mode + conservative drop behavior to kill microstutter when host FPS locks to panel Hz.
-
Max Smoothness and Cap FPS pacing reworked to be more vsync-aligned and fluid, with smarter drop windows that scale with jitter/drops instead of overreacting.
-
Renderer hot-path refactor to reduce overhead: coldCfg containers for cold state, primitive ring buffers, faster PTS/stats maps, fewer locks/allocations, plus multiple stability cleanups.
-
Latency policy cleanup: LFR only forces 0-µs dequeue timeout when it’s truly effective, and Max Smoothness now runs without LFR to avoid needless CPU burn / oscillations.
-
WarpFactor compatibility fix: near-match FPS capping won’t break warp/drive modes anymore.
-
Experimental FSR gamma adjustment (test) to counter perceived darkening when FSR is enabled.
Added / New behavior
- PhaseLock “FPS-match” mode (Balanced + Max Smoothness)
Detects exact/near FPS=Hz (±2 Hz) and switches to a more conservative, vsync-friendly PhaseLock setup.
Reduces correction overshoot and jitter-driven drop ping-pong on perfect locks.
Changed
-
Pacing (Max Smoothness / Cap FPS / Balanced)
-
Max Smoothness + Cap FPS now use a vsync-aligned drop heuristic
-
Cap FPS sits in the middle ground: slightly more drop-sensitive than Max Smoothness, but less aggressive than latency profiles.
-
Balanced gets a conservative mode when FPS matches display:
recentDrops is reset and factors are widened to avoid micro-oscillation. -
Cap FPS “hard cap to active Hz” and “near-match cap to Hz+2” rules unified across profiles to reduce stutter on panels that report odd refresh values.
Renderer internals
- Moved cold codec config/state/geometry into coldCfg containers for better cache locality.
- Replaced several maps/queues with primitive/SPSC rings and tightened PLL feedback cache.
- Fixed leftovers from the refactor and added extra resource-management guards.
Latency policy
- Only forces 0 µs dequeue timeout when LFR is actually effective.
- Max Smoothness no longer enables LFR by policy (focus stays on stable vsync-aligned smoothness).
UI
- Force Tight Vsync toggle hidden (the behavior is now covered by newer pacing logic).
Fixed (maybe, lol)
-
FPS=Hz microstutter
-
New FPS-match PhaseLock parameters + conservative pacing in matched cases.
Extra guardrails in the render loop and present path to avoid drift / race-induced jitter. -
Near-match FPS cap is skipped when WarpFactor is active, so warp/drive modes stay intact.
Test
- FSR gamma tweak
There’s a test change attempting to lift gamma a bit when FSR is ON.
If you notice the image looking too bright/washed or inconsistent across games, let me know and I’ll revert or rework it.
As always,
⚠️ Heads up: this is experimental. I’ve only tested on my hardware, so things may break on yours. Use at your own risk.
Found a bug? Tell me and I’ll try to fix it.
Enjoy!
Full Changelog: Exp_7_Testing...Exp_7_Testing_2