I've recently got a FreeSync monitor and am still figuring out how to get VRR (variable refresh rate, or "adaptive sync") to work consistently.

I'd love to hear your experience with VRR.

Some of my tests:

Sway

In sway, I set adaptive_sync on for my display, and swaymsg -t get_outputs reports Adaptive sync: enabled

Hyprland

In hyprland, I set vrr = 1 and get similar results as sway -Dnoscanout

  • Fluent motion by default, but moving the mouse introduces stuttering

Gamescope

In gamescope (embedded from VTT, with --adaptive-sync), I get the best results yet

  • Stable fluent motion
  • Mouse doesn't break it

My setup is 6600xt, Gigabyte M28U monitor, Arch 6.1.64-1-lts. I test with vrrtest and with Ghostrunner on wine-tkg-staging-fsync-git 8.13.r7.gc210ef9f-327

  • Atemu@lemmy.ml
    ·
    1 year ago

    There's currently a bug with AMDGPU wherein aggressive power management causes constant micro-stuttering and that also appears to break VRR for me.

    Set power management to 3D_FULL_SCREEN or VR on the GPU.

  • super_mario_69 [he/him, comrade/them]
    ·
    edit-2
    1 year ago

    I've been fucking around a lot with this same stuff on a similar setup (6900XT, sway, M27QP, Arch 6.4 tkg-pds). I managed to make it work more or less flawlessly. Here's how I did it:

    • I use MANGOHUD=1 gamemoderun %command% in Steam to run my games.

    • When Gamemode runs, it's configured to enable adaptive_sync, start gpu-screen-recorder, and run a script that sets pp_power_profile_mode to 1 and power_dpm_force_performance_level to high. As @Atemu mentioned, there's some kind of bug with amdgpu, so by default the power management will be all over the place.

    • The built-in frame limiter in some games (e.g. Apex Legends, Risk of Rain 2) can cause stutter for some reason I don't understand. V-Sync also had stutter and also caused noticeable input lag. The solution was to use MangoHud's frame limiter with fps_limit=165 in MangoHud.conf.

    • This patch fixes the mouse move VRR issue. There's instructions on how to apply it if you scroll down a bit. If it still doesn't work right, try launching sway with WLR_NO_HARDWARE_CURSORS=1 sway. No need to disable direct scanout either.

    Let me know if it works!