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
19.71k stars 836 forks source link

Fullscreen on games with no vsync freezes #7223

Closed Eddio0141 closed 1 month ago

Eddio0141 commented 1 month ago

Regression?

Yes

System Info and Version

System/Version info ```sh Hyprland, built from branch at commit 9a09eac79b85c846e3a865a9078a3f8ff65a9259 (). Date: 2024-08-07 Tag: , commits: 9a09eac79b85c846e3a865a9078a3f8ff65a9259 flags: (if any) System Information: System name: Linux Node name: yuu-desktop Release: 6.6.44 Version: #1-NixOS SMP PREEMPT_DYNAMIC Sat Aug 3 06:54:42 UTC 2024 GPU information: 08: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 c1) (prog-if 00 [VGA controller]) os-release: ANSI_COLOR="1;34" BUG_REPORT_URL="https://github.com/NixOS/nixpkgs/issues" BUILD_ID="24.11.20240804.cb9a96f" DOCUMENTATION_URL="https://nixos.org/learn.html" HOME_URL="https://nixos.org/" ID=nixos IMAGE_ID="" IMAGE_VERSION="" LOGO="nix-snowflake" NAME=NixOS PRETTY_NAME="NixOS 24.11 (Vicuna)" SUPPORT_URL="https://nixos.org/community.html" VERSION="24.11 (Vicuna)" VERSION_CODENAME=vicuna VERSION_ID="24.11" plugins: ======Config-Start====== Config File: /home/yuu/.config/hypr/hyprland.conf: Read Succeeded exec-once = /nix/store/j8l2v22xypah1srykhwjlkgwwgdxnnpw-dbus-1.14.10/bin/dbus-update-activation-environment --systemd DISPLAY HYPRLAND_INSTANCE_SIGNATURE WAYLAND_DISPLAY XDG_CURRENT_DESKTOP && systemctl --user stop hyprland-session.target && systemctl --user start hyprland-session.target animations { bezier=myBezier, 0.05, 0.9, 0.1, 1.05 animation=windows, 1, 7, myBezier animation=windowsOut, 1, 7, default, popin 80% animation=border, 1, 10, default animation=fade, 1, 7, default animation=workspaces, 1, 6, default enabled=yes } decoration { blur { enabled=true } col.shadow=rgba(171b2b99) drop_shadow=yes rounding=5 shadow_range=4 shadow_render_power=3 } device { name=pixa3854:00-093a:0274-touchpad sensitivity=0.500000 } dwindle { preserve_split=yes pseudotile=yes } general { allow_tearing=true border_size=3 col.active_border=rgba(ffffffff) col.inactive_border=rgb(8a88c0) gaps_in=5 gaps_out=20 layout=dwindle } gestures { workspace_swipe=off } group { groupbar { col.active=rgb(848bc0) col.inactive=rgb(8a88c0) text_color=rgb(c7d6f1) } col.border_active=rgb(848bc0) col.border_inactive=rgb(8a88c0) col.border_locked_active=rgb(6492c2) } input { accel_profile=flat follow_mouse=1 kb_layout=gb kb_options=caps:escape sensitivity=-0.350000 } master { new_status=master } misc { background_color=rgb(171b2b) disable_splash_rendering=true enable_swallow=true } render { direct_scanout=false } xwayland { force_zero_scaling=true } bind=SUPER, Q, exec, kitty bind=SUPER, W, killactive, bind=SUPER, E, exec, dolphin bind=SUPER, S, exec, pidof wofi || wofi --show drun -I -m -i -W 30% -H 75% bind=CTRL ALT, Delete, exec, pidof wlogout || wlogout bind=CTRL ALT, BackSpace, exec, hyprlock bind=SUPER, T, togglefloating, bind=SUPER, P, pseudo, bind=SUPER, U, togglesplit, bind=SUPER, F, fullscreen, bind=SUPER, G, togglegroup, bind=SUPER, End, lockactivegroup, toggle bind=SUPER, Next, changegroupactive, f bind=SUPER, Prior, changegroupactive, b bind=SUPER SHIFT, End, moveoutofgroup, bind=SUPER, left, movefocus, l bind=SUPER, right, movefocus, r bind=SUPER, up, movefocus, u bind=SUPER, down, movefocus, d bind=SUPER, h, movefocus, l bind=SUPER, l, movefocus, r bind=SUPER, k, movefocus, u bind=SUPER, j, 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, h, movewindow, l bind=SUPER SHIFT, l, movewindow, r bind=SUPER SHIFT, k, movewindow, u bind=SUPER SHIFT, j, movewindow, d bind=SUPER, 1, workspace, 1 bind=SUPER, 2, workspace, 2 bind=SUPER, 3, workspace, 3 bind=SUPER, 4, workspace, 4 bind=SUPER, 5, workspace, 5 bind=SUPER, 6, workspace, 6 bind=SUPER, 7, workspace, 7 bind=SUPER, 8, workspace, 8 bind=SUPER, 9, workspace, 9 bind=SUPER, 0, workspace, 10 bind=SUPER CTRL, h, workspace, e-1 bind=SUPER CTRL, l, workspace, e+1 bind=SUPER SHIFT, 1, movetoworkspace, 1 bind=SUPER SHIFT, 2, movetoworkspace, 2 bind=SUPER SHIFT, 3, movetoworkspace, 3 bind=SUPER SHIFT, 4, movetoworkspace, 4 bind=SUPER SHIFT, 5, movetoworkspace, 5 bind=SUPER SHIFT, 6, movetoworkspace, 6 bind=SUPER SHIFT, 7, movetoworkspace, 7 bind=SUPER SHIFT, 8, movetoworkspace, 8 bind=SUPER SHIFT, 9, movetoworkspace, 9 bind=SUPER SHIFT, 0, movetoworkspace, 10 bind=SUPER CTRL, e, workspace, empty bind=SUPER SHIFT, e, movetoworkspace, empty bind=SUPER SHIFT, S, movetoworkspacesilent, special bind=SUPER CTRL, S, togglespecialworkspace bind=SUPER, mouse_up, workspace, e+1 bind=SUPER, mouse_down, workspace, e-1 bind=SUPER, comma, focusmonitor, 0 bind=SUPER, period, focusmonitor, 1 bind=CTRL, Print, exec, grimblast --notify --freeze copysave area bind=, Print, exec, grimblast --notify copysave output bind=, XF86AudioRaiseVolume, exec, pamixer --increase 5 bind=, XF86AudioLowerVolume, exec, pamixer --decrease 5 bind=, XF86AudioMute, exec, pamixer --toggle-mute bind=SUPER ALT, P, exec, clementine --play-pause bind=SUPER ALT, O, exec, clementine --next bind=SUPER ALT, I, exec, clementine --previous bind=, XF86AudioPlay, exec, clementine --play-pause bind=, XF86AudioNext, exec, clementine --next bind=, XF86AudioPrev, exec, clementine --previous bind=ALT, F9, exec, /nix/store/ggbd3h5xljrj7p7n7qndmbg70qx7awdr-dunst-1.11.0/bin/dunstify -a gpu-screen-recorder -u low 'F9 key' && /nix/store/dfn9wnbxjbxxpd56k9rvyz94az9wj11q-killall-psmisc-23.7/bin/killall -SIGINT gpu-screen-recorder bind=ALT, F10, exec, /nix/store/ggbd3h5xljrj7p7n7qndmbg70qx7awdr-dunst-1.11.0/bin/dunstify -a 'GPU Screen Recorder' -u low 'Replay saved' && /nix/store/dfn9wnbxjbxxpd56k9rvyz94az9wj11q-killall-psmisc-23.7/bin/killall -SIGUSR1 gpu-screen-recorder bind=, XF86MonBrightnessUp, exec, /nix/store/f88055hdh3gcn5ks51dp6w034vmdvd9z-brightnessctl-0.5.1/bin/brightnessctl set 10%+ bind=, XF86MonBrightnessDown, exec, /nix/store/f88055hdh3gcn5ks51dp6w034vmdvd9z-brightnessctl-0.5.1/bin/brightnessctl set 10%- bindm=SUPER, mouse:272, movewindow bindm=SUPER, mouse:273, resizewindow env=WLR_DRM_NO_ATOMIC,1 env=GDK_SCALE,1 exec-once=waybar exec-once=dunst exec-once=firefox exec-once=clementine exec-once=dolphin --daemon exec-once=fcitx5 -d exec-once=[ workspace special silent ] slack exec-once=[ workspace special silent ] thunderbird exec-once=obsidian exec-once=steam -silent exec-once=vesktop exec-once=aw-qt exec-once=wl-paste --type text --watch cliphist store exec-once=wl-paste --type image --watch cliphist store monitor=,preferred,auto,1 monitor=DP-3, 1920x1080@144, 0x0, 1 monitor=HDMI-A-1, 1920x1080@60, 1920x0, 1 windowrulev2=workspace 2 silent, class:^(vesktop)$ windowrulev2=workspace special silent, class:^thunderbird$ windowrulev2=workspace 2 silent, class:^(obsidian)$ windowrulev2=fullscreen,title:Bunnymod XT Debug Console windowrulev2=tile,title:Bunnymod XT Debug Console windowrulev2=tile,class:hl.exe windowrulev2=dimaround,class:^(jetbrains-.*)$,floating:1,title:^(?!win) windowrulev2=center,class:^(jetbrains-.*)$,floating:1,title:^(?!win) windowrulev2=noanim,class:^(jetbrains-.*)$,title:^(win.*)$ windowrulev2=noinitialfocus,class:^(jetbrains-.*)$,title:^(win.*)$ windowrulev2=rounding 0,class:^(jetbrains-.*)$,title:^(win.*)$ windowrulev2=noinitialfocus,class:Unity,floating:1 windowrulev2=size 650 650,class:Unity,title:Build Settings windowrulev2=center,class:^Unity$,initialTitle:^Unity$,floating:0 windowrulev2=float,class:^Unity$,initialTitle:^Unity$,floating:0 windowrulev2=nofocus,class:steam,title:^notificationtoasts_d+_desktop$ windowrulev2=immediate, class:^(cs2)$ windowrulev2=nofocus,class:^ghidra-Ghidra$,title:^wind+$ windowrulev2=tile,class:^ghidra-Ghidra$,initialTitle:^CodeBrowser$ windowrulev2=float,initialClass:^org.gnome.Calculator$ windowrulev2=center,initialClass:^ILSp$,title:^Open file$ ======Config-End======== ```

Description

Open game, uncap FPS, they freeze. Tested with ultrakill, native tf2, and lethal company, all have the same issue. WIth ultrakill, It always shows some colourful blocks for a short moment every time I toggle full screen. Mouse also appears to be frozen on screen, but moving the mouse to the other monitor shows the actual mouse.

How to reproduce

  1. Open game, doesn't matter if you are in the menu or whatever
  2. Disable vsync
  3. Full screen the game

Game will start working again if you disable fullscreen or enable vsync

Crash reports, logs, images, videos

hyprland.log

Eddio0141 commented 1 month ago

https://github.com/user-attachments/assets/6b5d72bc-2030-4f9b-83f9-1d708d833fa7

Memoframe commented 1 month ago

I had freezes with vsync when switching from window to fulsscreen on one of the recent git versions and no freezes on another one that was later which I'm using now (it was in a span of last 2-3 days when ds and es were in process of fixing). I don't remember actual versions tho, I can say which one is without that issue in 10 hours when back home, maybe it will help to pinpoint.

zakk4223 commented 1 month ago

Freezing on disabling vsync is sometimes a sign that the video card driver does not support tearing updates when using the atomic KMS mode. I'm pretty sure 6.6.x AMD drivers didn't support it yet on 6xxx cards.

Try disabling allow_tearing. If you really want tearing maybe try AQ_NO_ATOMIC=1, but I think vaxry indicated that is less than ideal

Eddio0141 commented 1 month ago

Ok I see, I forgot that the old version of AQ_NO_ATOMIC was set previously stopping tearing from running. Setting AQ_NO_ATOMIC=1 "fixed" it, but I guess I'll be disabling tearing fully. Thanks.