What's new
Highlights
- Variable refresh rate is one setting. Off, On or Fastest, in place of up to three switches.
- Windows: frames that follow each other closely no longer tear with Variable refresh rate On.
- Linux: whole frames with Variable refresh rate On, for a stream drawn straight to the display.
Streaming
- Variable refresh rate is one setting with three choices: Off, On and Fastest. On shows each frame at the game's timing (Real VRR); Fastest shows each frame the moment it arrives. It replaces the two switches Variable refresh rate and Real VRR, and what you chose there is kept.
- On the desktop the one setting also replaces Tear-free VRR: On shows whole frames, Fastest can tear. A mix of the old switches that is neither shows as Custom and works as before until you choose another. settings.json keeps its three values (
vrr,present_at_host_times,vrr_tear_free). What the choices do.
Windows
- With Variable refresh rate On, a frame that follows another closely is held until the frame before it has reached the screen, and its drawing is finished while it waits. Before, such a frame could be presented while the first was still on its way, with the screen read as idle, and tear. Frames follow closely in a burst over Wi-Fi, and all the time when the stream runs at the screen's top refresh rate, such as 120 fps on a 120 Hz screen (#111).
- A stream at exactly the screen's top refresh rate now shows fewer frames than it receives: about 115 of 120 a second on a 120 Hz screen in our recordings, each in a refresh of its own. Fastest shows every frame at once, with tearing.
- The log's
VRR:lines at the end of a stream say how often a frame was held and how long frames took to reach the screen.
Linux
- With Variable refresh rate On, a stream drawn straight to the display (KMS) hands each picture over in step with the display, so a picture that arrives during a refresh is shown whole when that refresh ends instead of torn. Fastest shows pictures at once as before.
- On a Wayland desktop, Fastest now decides whether a VRR stream may tear, where V-Sync off did.
- The log names the choice and how long the hand-overs took.
Tested. The Windows change was measured from a laptop streaming 1080p HEVC at 120 fps over Wi-Fi to a VRR monitor, with the screen's drawing position recorded every 40 µs for 12 s, the same build with and without the change. With an uneven test animation, frames that shared a refresh with the one before went from 39 of 1025 to 0 of 995 on the monitor at 240 Hz and from 45 of 963 to 0 of 1026 at 120 Hz, and a frame's refresh began 1.6 ms after the frame was ready before and 2.0 ms after at the median (3.2 and 4.1 ms at 120 Hz). At 120 fps on 240 Hz nothing changed. At 120 fps on 120 Hz, 115 frames a second were shown of 120 in three recordings; before, one recording showed all 120 and another had 231 of 1439 frames share a refresh. Nightjar's builds and test suites pass on Android, Windows, Linux and macOS. Whole frames on Linux were not measured on a VRR screen, and the report behind issue #111 was not reproduced.