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.66k stars 830 forks source link

Enabling vsync in games causes screen tearing when moving the mouse (Nvidia gpu) #7652

Open arash28134 opened 1 week ago

arash28134 commented 1 week ago

Regression?

No

System Info and Version

System/Version info ```sh Hyprland, built from branch at commit 9a09eac79b85c846e3a865a9078a3f8ff65a9259 (props: bump version to 0.42.0). Date: Wed Aug 7 19:17:10 2024 Tag: v0.42.0, commits: 5069 flags: (if any) System Information: System name: Linux Node name: arash Release: 6.10.7-arch1-1 Version: #1 SMP PREEMPT_DYNAMIC Thu, 29 Aug 2024 16:48:57 +0000 GPU information: 01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP106 [GeForce GTX 1060 6GB] [10de:1c03] (rev a1) (prog-if 00 [VGA controller]) NVRM version: NVIDIA UNIX x86_64 Kernel Module 560.35.03 Fri Aug 16 21:39:15 UTC 2024 os-release: NAME="Arch Linux" PRETTY_NAME="Arch Linux" ID=arch BUILD_ID=rolling ANSI_COLOR="38;2;23;147;209" HOME_URL="https://archlinux.org/" DOCUMENTATION_URL="https://wiki.archlinux.org/" SUPPORT_URL="https://bbs.archlinux.org/" BUG_REPORT_URL="https://gitlab.archlinux.org/groups/archlinux/-/issues" PRIVACY_POLICY_URL="https://terms.archlinux.org/docs/privacy-policy/" LOGO=archlinux-logo plugins: ======Config-Start====== Config File: /home/viper/.config/hypr/hyprland.conf: Read Succeeded # todo: tabbed windows # You can split this configuration into multiple files # Create your files separately and then link them to this file like this: source = ~/.config/hypr/nvidia.conf ################ ### MONITORS ### ################ monitor = DP-3, 1920x1080, 1920x0, 1 monitor = HDMI-A-1, 1920x1080, 0x0, 1 monitor = DP-2, 1024x768, -1024x312, 1 ################### ### MY PROGRAMS ### ################### $terminal = kitty $fileManager = nemo $menu = wofi --show drun $music = spotify-launcher $browser = firefox $messager1 = telegram-desktop $messager2 = discord $screenshot = flameshot gui $editor1 = nvim $editor2 = vim # Todo ################# ### AUTOSTART ### ################# # Autostart necessary processes (like notifications daemons, status bars, etc.) # Or execute your favorite apps at launch like this: # exec-once = btop & asciiquarium exec-once = waybar & hyprpaper ############################# ### ENVIRONMENT VARIABLES ### ############################# env = XCURSOR_SIZE,24 env = HYPRCURSOR_SIZE,24 # Todo ##################### ### LOOK AND FEEL ### ##################### # Refer to https://wiki.hyprland.org/Configuring/Variables/ # https://wiki.hyprland.org/Configuring/Variables/#general general { gaps_in = 5 gaps_out = 20 border_size = 2 # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg col.inactive_border = rgba(595959aa) # Set to true enable resizing windows by clicking and dragging on borders and gaps resize_on_border = false # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on allow_tearing = false layout = dwindle } # https://wiki.hyprland.org/Configuring/Variables/#decoration decoration { rounding = 10 # Change transparency of focused and unfocused windows active_opacity = 1.0 inactive_opacity = 1.0 drop_shadow = true shadow_range = 4 shadow_render_power = 3 col.shadow = rgba(1a1a1aee) # https://wiki.hyprland.org/Configuring/Variables/#blur blur { enabled = true size = 3 passes = 1 vibrancy = 0.1696 } } # https://wiki.hyprland.org/Configuring/Variables/#animations animations { enabled = true # Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more 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 = borderangle, 1, 8, default animation = fade, 1, 7, default animation = workspaces, 1, 6, default } # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more dwindle { pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below preserve_split = true # You probably want this } # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more master { new_status = master } # https://wiki.hyprland.org/Configuring/Variables/#misc misc { force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :( } ############# ### INPUT ### ############# input { kb_layout = eu,ir kb_options = grp:alt_shift_toggle } ################### ### KEYBINDINGS ### ################### $mainMod = SUPER # App binds bind = $mainMod, C, killactive, bind = $mainMod, M, exit, bind = $mainMod, V, togglefloating, bind = $mainMod, P, pseudo, # dwindle bind = $mainMod, J, togglesplit, # dwindle bind = $mainMod, R, exec, $menu bind = $mainMod, X, exec, $music bind = $mainMod, D, exec, $messager2 bind = $mainMod, Z, exec, $fileManager bind = $mainMod, T, exec, $messager1 bind = $mainMod, Q, exec, $terminal bind = $mainMod, A, exec, $browser bind = $mainMod, W, exec, $editor1 bind = $mainMod, E, exec, $editor2 bind = $mainMod, F, exec, $screenshot # PulseAudio controls bind = , XF86AudioMute, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle bind = , XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -5% bind = , XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +5% bind = , XF86AudioPlay, exec, playerctl play-pause # Move focus with mainMod + arrow keys bind = $mainMod, left, movefocus, l bind = $mainMod, right, movefocus, r bind = $mainMod, up, movefocus, u bind = $mainMod, down, movefocus, d # Switch workspaces with mainMod + [0-9] bind = $mainMod, 1, workspace, 1 bind = $mainMod, 2, workspace, 2 bind = $mainMod, 3, workspace, 3 bind = $mainMod, 4, workspace, 4 bind = $mainMod, 5, workspace, 5 bind = $mainMod, 6, workspace, 6 bind = $mainMod, 7, workspace, 7 bind = $mainMod, 8, workspace, 8 bind = $mainMod, 9, workspace, 9 bind = $mainMod, 0, workspace, 10 # Move active window to a workspace with mainMod + SHIFT + [0-9] bind = $mainMod SHIFT, 1, movetoworkspace, 1 bind = $mainMod SHIFT, 2, movetoworkspace, 2 bind = $mainMod SHIFT, 3, movetoworkspace, 3 bind = $mainMod SHIFT, 4, movetoworkspace, 4 bind = $mainMod SHIFT, 5, movetoworkspace, 5 bind = $mainMod SHIFT, 6, movetoworkspace, 6 bind = $mainMod SHIFT, 7, movetoworkspace, 7 bind = $mainMod SHIFT, 8, movetoworkspace, 8 bind = $mainMod SHIFT, 9, movetoworkspace, 9 bind = $mainMod SHIFT, 0, movetoworkspace, 10 # Special workspace (scratchpad) bind = $mainMod, S, togglespecialworkspace, magic bind = $mainMod SHIFT, S, movetoworkspace, special:magic # Scroll through existing workspaces with mainMod + scroll bind = $mainMod, mouse_down, workspace, e+1 bind = $mainMod, mouse_up, workspace, e-1 # Move/resize windows with mainMod + LMB/RMB and dragging bindm = $mainMod, mouse:272, movewindow bindm = $mainMod, mouse:273, resizewindow bind = $mainMod SHIFT, F, fullscreen ############################## ### WINDOWS AND WORKSPACES ### ############################## windowrulev2 = suppressevent maximize, class:.* # You'll probably like this. Config File: /home/viper/.config/hypr/nvidia.conf: Read Succeeded ############################################################ ### NVIDIA (Remove if on a system without an nvidia gpu) ### ############################################################ env = LIBVA_DRIVER_NAME,nvidia env = XDG_SESSION_TYPE,wayland env = GBM_BACKEND,nvidia-drm env = __GLX_VENDOR_LIBRARY_NAME,nvidia cursor { no_hardware_cursors = true } ======Config-End======== ```

Description

Enabling vsync in games causes screen tearing when moving the mouse. they work fine without vsync or with vsync if one doesn't move the mouse.

How to reproduce

Enable vsync option in games Minecraft and Postal 2. So far these are the only games I've played in Hyperland and they both have had this issue.

Crash reports, logs, images, videos

https://github.com/user-attachments/assets/a6a85b5b-e6d5-4fd3-9f25-66c05f45c3ca

Sorry for bad quality

XNEP1 commented 1 week ago

The same thing happens to me in Genshin Impact. And I am using an AMD card and hyprland on version v0.42.0.

I noticed two things that may help identify the problem:

  1. Setting render:explicit_sync and explicit_sync_kms to 0 solved the problem for me (although it is not ideal).
  2. The game allows me to hold ALT to move the mouse around the hud. While holding ALT, the problem does not occur. More specifically, the problem only occurs when the mouse is centered and invisible.
arash28134 commented 1 week ago

The same thing happens to me in Genshin Impact. And I am using an AMD card and hyprland on version v0.42.0.

I noticed two things that may help identify the problem:

  1. Setting render:explicit_sync and explicit_sync_kms to 0 solved the problem for me (although it is not ideal).
  2. The game allows me to hold ALT to move the mouse around the hud. While holding ALT, the problem does not occur. More specifically, the problem only occurs when the mouse is centered and invisible.

I can confirm this only happens inside the game (where mouse is invisible/centered). In Minecraft as you can see both in the menu and also inventory moving the mouse works with no issue. Same in Postal 2, except for the game's starting menu (which involves 3d objects moving in a circle and is not a flat menu) every other part where the mouse is visible (e.g. menus, inventory) vsync works ok.

I guess this is not really GPU related. I also tried with no_hardware_cursors set to false and it didn't change anything.

danielah05 commented 1 week ago

seem to be having the same issue, while disabling explicit sync fixes the problem, it also then causes issues for screen capturing programs like obs or discord screenshare, causing extreme stutters in them, making just disabling explicit sync not a good solution at all

arash28134 commented 1 week ago

seem to be having the same issue, while disabling explicit sync fixes the problem, it also then causes issues for screen capturing programs like obs or discord screenshare, causing extreme stutters in them, making just disabling explicit sync not a good solution at all

What gpu are you using?

XNEP1 commented 1 week ago

For now, I am limiting my games FPS to 1 lower than my monitor Hz. For some reason doing this your problem can be ""fixed"" too.

danielah05 commented 1 week ago

seem to be having the same issue, while disabling explicit sync fixes the problem, it also then causes issues for screen capturing programs like obs or discord screenshare, causing extreme stutters in them, making just disabling explicit sync not a good solution at all

What gpu are you using?

nvidia gtx 980, ive only had this issue on hyprland, when i was on plasma still about a month ago this wasnt an issue for me

jaredmontoya commented 4 days ago

I started experiencing similar issues in a game under wine since 0.43 (Nvidia Optimus laptop) Did not have that on 0.42 at all.