hyprwm / Hyprland

Hyprland is an independent, highly customizable, dynamic tiling Wayland compositor that doesn't sacrifice on its looks.
https://hyprland.org
BSD 3-Clause "New" or "Revised" License
21.85k stars 909 forks source link

VRR run at half the refresh rate when moving the mouse with `no_break_fs_vrr` in Wayland games only #8582

Open Gliczy opened 1 day ago

Gliczy commented 1 day ago

Already reported ? *

Regression?

No

System Info and Version

System/Version info ```sh Hyprland 0.45.0 built from branch at commit b1003445953474b967464d4d0878955d37498647 (). Date: 2024-11-22 Tag: , commits: built against aquamarine 0.5.0 flags set: debug System Information: System name: Linux Node name: phobos Release: 6.12.0 Version: #1-NixOS SMP PREEMPT_DYNAMIC Sun Nov 17 22:15:08 UTC 2024 GPU information: 2f:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 22 [Radeon RX 6700/6700 XT/6750 XT / 6800M/6850M XT] [1002:73df] (rev c0) (prog-if 00 [VGA controller]) os-release: ANSI_COLOR="1;34" BUG_REPORT_URL="https://github.com/NixOS/nixpkgs/issues" BUILD_ID="25.05.20241119.23e89b7" CPE_NAME="cpe:/o:nixos:nixos:25.05" DEFAULT_HOSTNAME=phobos DOCUMENTATION_URL="https://nixos.org/learn.html" HOME_URL="https://nixos.org/" ID=nixos ID_LIKE="" IMAGE_ID="" IMAGE_VERSION="" LOGO="nix-snowflake" NAME=NixOS PRETTY_NAME="NixOS 25.05 (Warbler)" SUPPORT_END="2025-06-30" SUPPORT_URL="https://nixos.org/community.html" VARIANT="" VARIANT_ID="" VENDOR_NAME=NixOS VENDOR_URL="https://nixos.org/" VERSION="25.05 (Warbler)" VERSION_CODENAME=warbler VERSION_ID="25.05" plugins: ======Config-Start====== Config File: /home/glitch/.config/hypr/hyprland.conf: Read Succeeded exec-once = /nix/store/2542sr1ch7ypz52w423vyn0fhn934rj7-dbus-1.14.10/bin/dbus-update-activation-environment --systemd --all && systemctl --user stop graphical-session.target && systemctl --user start hyprland-session.target animations { bezier=myBezier, 0.05, 0.9, 0.1, 1.05 bezier=slideBezier, 0, 0, -1, 4 bezier=easeOutExpo, 0.16, 1.0, 0.30, 1.0 bezier=overshot0, 0.05, -0.9, -20.1, 1.05 bezier=overshot,0.3,0.66,0.29,1.1 bezier=linear, 0.0, 0.0, 1.0, 1.0 animation=workspaces, 1, 6, easeOutExpo, slide animation=specialWorkspace, 1, 3, slideBezier, slidefadevert 100% animation=windows,1,4,overshot,popin animation=fade,1,10,default animation=border,1,10,default enabled=true } binds { movefocus_cycles_fullscreen=false } cursor { min_refresh_rate=48 no_break_fs_vrr=true no_hardware_cursors=true } debug { disable_logs=false enable_stdout_logs=true error_position=0 } decoration { blur { enabled=true passes=1 size=8 } shadow { enabled=true } dim_inactive=false dim_strength=1 rounding=5 } dwindle { pseudotile=false smart_split=true } general { allow_tearing=false border_size=3 col.active_border=rgb(d65d0e) col.inactive_border=rgba(665c56aa) gaps_in=3 gaps_out=5 layout=dwindle resize_on_border=false } input { accel_profile=flat follow_mouse=1 force_no_accel=false kb_layout=fr kb_options=compose:menu numlock_by_default=true resolve_binds_by_sym=true sensitivity=-0.750000 } misc { animate_manual_resizes=false animate_mouse_windowdragging=false disable_hyprland_logo=true disable_splash_rendering=true enable_swallow=false force_default_wallpaper=-1 initial_workspace_tracking=1 key_press_enables_dpms=true middle_click_paste=false mouse_move_enables_dpms=true new_window_takes_over_fullscreen=2 render_unfocused_fps=30 swallow_exception_regex=^(wev)$ swallow_regex=Alacritty|kitty vfr=true } render { direct_scanout=true explicit_sync=1 explicit_sync_kms=1 } bind=SUPER, F, fullscreenstate, 1 bind=ALT, F, fullscreenstate, 3 bind=SUPER_SHIFT, F, fullscreenstate, 2 bind=SUPER, SPACE, togglefloating, bind=SUPER_SHIFT, SPACE, pin, bind=SUPER_SHIFT, Q, killactive, bind=SUPER, B, exec, /nix/store/cspjay0jfp4g2cprlvyscig58fx6jiv0-procps-4.0.4/bin/pkill -USR1 waybar bind=SUPER, RETURN, exec, /nix/store/rsl5pj2xkhbrpfw60w8asz6ln27lv5fc-kitty-0.37.0/bin/kitty bind=SUPER, D, exec, /nix/store/9j1nh217fmis0j3c58kwnccgscfvjcjb-anyrun-0-unstable-2023-12-01/bin/anyrun bind=SUPER, E, exec, dolphin bind=SUPER, A, exec, firefox bind=SUPER, L, exec, hyprlock bind=SUPER, left, movefocus, l bind=SUPER, right, movefocus, r bind=SUPER, up, movefocus, u bind=SUPER, down, movefocus, d bind=SUPER_SHIFT, left, movewindow, l bind=SUPER_SHIFT, right, movewindow, r bind=SUPER_SHIFT, up, movewindow, u bind=SUPER_SHIFT, down, movewindow, d bind=SUPER_SHIFT, G, movetoworkspace, 5 bind=ALT_SHIFT, G, movetoworkspacesilent, 5 bind=SUPER, code:10, workspace, 1 bind=SUPER_SHIFT, code:10, movetoworkspace, 1 bind=ALT_SHIFT, code:10, movetoworkspacesilent, 1 bind=SUPER, code:11, workspace, 2 bind=SUPER_SHIFT, code:11, movetoworkspace, 2 bind=ALT_SHIFT, code:11, movetoworkspacesilent, 2 bind=SUPER, code:12, workspace, 3 bind=SUPER_SHIFT, code:12, movetoworkspace, 3 bind=ALT_SHIFT, code:12, movetoworkspacesilent, 3 bind=SUPER, code:13, workspace, 4 bind=SUPER_SHIFT, code:13, movetoworkspace, 4 bind=ALT_SHIFT, code:13, movetoworkspacesilent, 4 bind=SUPER, code:14, workspace, 5 bind=SUPER_SHIFT, code:14, movetoworkspace, 5 bind=ALT_SHIFT, code:14, movetoworkspacesilent, 5 bind=SUPER, code:15, workspace, 6 bind=SUPER_SHIFT, code:15, movetoworkspace, 6 bind=ALT_SHIFT, code:15, movetoworkspacesilent, 6 bind=SUPER, code:16, workspace, 7 bind=SUPER_SHIFT, code:16, movetoworkspace, 7 bind=ALT_SHIFT, code:16, movetoworkspacesilent, 7 bind=SUPER, code:17, workspace, 8 bind=SUPER_SHIFT, code:17, movetoworkspace, 8 bind=ALT_SHIFT, code:17, movetoworkspacesilent, 8 bind=SUPER, code:18, workspace, 9 bind=SUPER_SHIFT, code:18, movetoworkspace, 9 bind=ALT_SHIFT, code:18, movetoworkspacesilent, 9 bind=SUPER, code:19, workspace, 10 bind=SUPER_SHIFT, code:19, movetoworkspace, 10 bind=ALT_SHIFT, code:19, movetoworkspacesilent, 10 bind=SUPER, F1, workspace, 11 bind=SUPER, F2, workspace, 12 bind=SUPER, F3, workspace, 13 bind=SUPER, F4, workspace, 14 bind=SUPER, F5, workspace, 15 bind=SUPER, F6, workspace, 16 bind=SUPER, F7, workspace, 17 bind=SUPER, F8, workspace, 18 bind=SUPER, F9, workspace, 19 bind=SUPER, F10, workspace, 20 bind=SUPER, F11, workspace, 21 bind=SUPER, F12, workspace, 22 bind=ALT_SHIFT, F1, movetoworkspacesilent, 11 bind=ALT_SHIFT, F2, movetoworkspacesilent, 12 bind=ALT_SHIFT, F3, movetoworkspacesilent, 13 bind=ALT_SHIFT, F4, movetoworkspacesilent, 14 bind=ALT_SHIFT, F5, movetoworkspacesilent, 15 bind=ALT_SHIFT, F6, movetoworkspacesilent, 16 bind=ALT_SHIFT, F7, movetoworkspacesilent, 17 bind=ALT_SHIFT, F8, movetoworkspacesilent, 18 bind=ALT_SHIFT, F9, movetoworkspacesilent, 19 bind=ALT_SHIFT, F10, movetoworkspacesilent, 20 bind=ALT_SHIFT, F11, movetoworkspacesilent, 21 bind=ALT_SHIFT, F12, movetoworkspacesilent, 22 bind=SUPER_SHIFT, F1, movetoworkspace, 11 bind=SUPER_SHIFT, F2, movetoworkspace, 12 bind=SUPER_SHIFT, F3, movetoworkspace, 13 bind=SUPER_SHIFT, F4, movetoworkspace, 14 bind=SUPER_SHIFT, F5, movetoworkspace, 15 bind=SUPER_SHIFT, F6, movetoworkspace, 16 bind=SUPER_SHIFT, F7, movetoworkspace, 17 bind=SUPER_SHIFT, F8, movetoworkspace, 18 bind=SUPER_SHIFT, F9, movetoworkspace, 19 bind=SUPER_SHIFT, F10, movetoworkspace, 20 bind=SUPER_SHIFT, F11, movetoworkspace, 21 bind=SUPER_SHIFT, F12, movetoworkspace, 22 binde=SUPER_CTRL, left, resizeactive, -10 0 binde=SUPER_CTRL, right, resizeactive, 10 0 binde=SUPER_CTRL, up, resizeactive, 0 -10 binde=SUPER_CTRL, down, resizeactive, 0 10 bindm=SUPER, mouse:272, movewindow bindm=SUPER, mouse:273, resizewindow env=XDG_CURRENT_DESKTOP,Hyprland env=XDG_SESSION_DESKTOP,Hyprland env=XDG_SESSION_TYPE,wayland env=CLUTTER_BACKEND,wayland env=QT_AUTO_SCREEN_SCALE_FACTOR,1 env=QT_QPA_PLATFORM,wayland;xcb env=QT_WAYLAND_DISABLE_WINDOWDECORATION,1 env=QT_QPA_PLATFORMTHEME,qt6ct env=GDK_BACKEND=wayland,x11 env=GTK_USE_PORTAL,1 env=GDK_DEBUG,portals env=_JAVA_AWT_WM_NONREPARENTING,1 env=NIXOS_OZONE_WL,1 env=XKB_DEFAULT_LAYOUT,fr env=XKB_DEFAULT_VARIANT,azerty env=XDG_MENU_PREFIX,plasma- env=HYPRCURSOR_THEME,HyprBibatamodernClassicSVG env=HYPRCURSOR_SIZE,24 exec-once=dbus-update-activation-environment --systemd QT_QPA_PLATFORM QT_QPA_PLATFORMTHEME _JAVA_AWT_WM_NONREPARENTING CURSOR_SIZE XCURSOR_THEME XDG_MENU_PREFIX exec-once=dbus-update-activation-environment PATH exec-once=systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP QT_QPA_PLATFORMTHEME GTK_THEME XDG_MENU_PREFIX layerrule=noanim, ^(selection)$ layerrule=blur, ^(gtk-layer-shell)$ layerrule=ignorezero, ^(gtk-layer-shell)$ layerrule=blur, notifications layerrule=ignorezero, notifications layerrule=blur, bar layerrule=ignorezero, bar layerrule=ignorezero, ^(gtk-layer-shell|anyrun)$ layerrule=blur, ^(gtk-layer-shell|anyrun)$ monitor=DP-1,1920x1080@143.854996,0x0,1,vrr,2 monitor=DP-2,1280x1024@75.025002,-1280x25,1 monitor=HDMI-A-1,1920x1080@60,1920x0,1 windowrulev2=float, title:^(Open File)$ windowrulev2=float, title:^(Open Folder)$ windowrulev2=float, class:^(org.kde.polkit-kde-authentication-agent-1)$ windowrulev2=float, class:^(lxqt-policykit-agent)$ windowrulev2=float, title:^(Authentication Required) windowrulev2=float, class:^(org.freedesktop.impl.portal.desktop.kde)$ windowrulev2=float, title:(Open Files)$ windowrulev2=float, class:^(firefox)$, title:^(Picture-in-Picture)$ windowrulev2=float, class:^(firefox)$, title:^(Firefox)$ windowrulev2=float, title:^(KeePassXC - Browser Access Request)$ windowrulev2=float, title:^(OpenSnitch v.*)$ windowrulev2=float, title:^(Screenshot Manager)$ windowrulev2=float, title:^(About .*.)$ windowrulev2=float, class:^(steam)$, title:^(Steam Settings)$ windowrulev2=float, class:^(steam)$, title:^(?!.*(?:steam|Steam|Friends List)).+$ windowrulev2=pin, class:^(firefox)$, title:^(Picture-in-Picture)$, floating:1 windowrulev2=pin, class:^(mpv)$, floating:1 windowrulev2=float, class:^(ark)$ windowrulev2=float, class:^(org.kde.keditfiletype)$ windowrulev2=float, class:^(org.kde.dolphin)$, title:^(Copying — Dolphin)$ windowrulev2=float, class:^(org.kde.dolphin)$, title:^(Moving — Dolphin)$ windowrulev2=float, class:^(org.kde.dolphin)$, title:^(Extracting Files — Dolphin)$ windowrulev2=float, class:^(xdg-desktop-portal-gtk)$ windowrulev2=float, class:^(yad)$ windowrulev2=float, class:^(zenity)$ windowrulev2=dimaround, class:^(gcr-prompter)$ windowrulev2=dimaround, class:^(org.kde.polkit-kde-authentication-agent-1)$ windowrulev2=dimaround, class:^(lxqt-policykit-agent)$ windowrulev2=dimaround, title:^(Authentication Required) windowrulev2=dimaround, class:^(org.freedesktop.impl.portal.desktop.kde)$ windowrulev2=dimaround, title:^(Open Files)$ windowrulev2=dimaround, class:^(xdg-desktop-portal-gtk)$ windowrulev2=dimaround, title:^(KeePassXC - Browser Access Request)$ windowrulev2=dimaround, title:^(Unlock Database - KeePassXC)$ windowrulev2=dimaround, title:^(Open File)$ windowrulev2=dimaround, title:^(Open Folder)$ windowrulev2=dimaround, title:^(New Folder — Dolphin)$ windowrulev2=dimaround, title:^(Creating directory — Dolphin)$ windowrulev2=dimaround, title:^(Opening .*)$ windowrulev2=idleinhibit fullscreen, class:^(firefox)$ windowrulev2=idleinhibit focus, class:^(firefox)$, title:^(.*YouTube.*)$ windowrulev2=idleinhibit focus, class:^(mpv)$ windowrulev2=idleinhibit focus, tag:game windowrulev2=tag +game, class:^(steam_app_.*)$ windowrulev2=tag +game, class:^(steam_proton)$ windowrulev2=tag +game, class:^(gamescope)$ windowrulev2=tag +game, class:^(.gamescope-wrapped)$ windowrulev2=tag +game, class:^(cs2)$ windowrulev2=tag +game, class:^(factorio)$ windowrulev2=tag +game, class:^(Stardew.*)$ windowrulev2=tag +game, class:^(Minecraft.*)$ windowrulev2=tag +game, title:^(Minecraft.*)$ windowrulev2=tag +game, class:^(dsda-doom)$ windowrulev2=tag +game, class:^(.openmw.*)$ windowrulev2=tag +game, class:^(hl2_linux)$ windowrulev2=workspace 5, tag:game windowrulev2=tile, tag:game windowrulev2=renderunfocused, tag:game windowrulev2=noinitialfocus, title:^(notificationtoasts.*)$ windowrulev2=suppressevent maximize, class:.* windowrulev2=nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0 windowrulev2=suppressevent fullscreen, class:^(dev.zed.Zed)$ windowrulev2=noborder, xwayland:1, floating:1 windowrulev2=noblur, xwayland:1, floating:1 windowrulev2=noanim, xwayland:1, floating:1 windowrulev2=norounding, xwayland:1, floating:1 windowrulev2=decorate off, xwayland:1, floating:1 workspace=1, monitor:DP-1, default:true workspace=2, monitor:DP-1 workspace=3, monitor:DP-1 workspace=4, monitor:DP-1 workspace=5, monitor:DP-1 workspace=6, monitor:DP-1 workspace=7, monitor:DP-1 workspace=8, monitor:DP-1 workspace=9, monitor:DP-1 workspace=10, monitor:DP-1 workspace=11, monitor:HDMI-A-1, default:true workspace=12, monitor:HDMI-A-1, workspace=13, monitor:HDMI-A-1 workspace=14, monitor:HDMI-A-1 workspace=15, monitor:HDMI-A-1 workspace=16, monitor:HDMI-A-1 workspace=17, monitor:HDMI-A-1 workspace=18, monitor:HDMI-A-1 workspace=19, monitor:DP-2, default:true workspace=20, monitor:DP-2 workspace=21, monitor:DP-2 workspace=22, monitor:DP-2 ======Config-End======== ```

Description

When running a Wayland native game with VRR (vrr=1 or vrr=2) and with no_break_fs_vrr=true and no_hardware_cursors=true (sw cursors are required for the first option), moving the mouse causes the refresh rate drop down the about half of the display's refresh rate, even though the framerate is much higher.

I tested this with Minecraft by unsetting DISPLAY and Half-Life 2 by setting SDL_VIDEODRIVER=wayland.

Notes:

How to reproduce

Crash reports, logs, images, videos

No response

Gliczy commented 1 day ago

CC @UjinT34 since you have worked on this option.