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.1k stars 882 forks source link

Lag when GPU is under 100% load #8119

Closed DADA30000 closed 1 week ago

DADA30000 commented 1 week ago

Already reported ? *

Regression?

Yes, No

System Info and Version

System/Version info ```sh ❯ hyprctl systeminfo -c Hyprland, built from branch main at commit 0f594732b063a90d44df8c5d402d658f27471dfe (props: bump version to 0.43.0). Date: 2024-09-08 Tag: v0.43.0, commits: 0f594732b063a90d44df8c5d402d658f27471dfe flags: (if any) System Information: System name: Linux Node name: nixos Release: 6.11.0 Version: #1-NixOS SMP PREEMPT_DYNAMIC Sun Sep 15 14:57:56 UTC 2024 GPU information: os-release: ANSI_COLOR="1;34" BUG_REPORT_URL="https://github.com/NixOS/nixpkgs/issues" BUILD_ID="24.11.20240926.1925c60" 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: dynamic-cursors by Virt ver 0.1 ======Config-Start====== Config File: /home/l0lk3k/.config/hypr/hyprland.conf: Read Succeeded exec-once = /nix/store/4a86f7kq7757fjwf5zzwk0jxixn4330n-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 plugin=/nix/store/pln4glqyaczx48js3kxy3v48bdgvpriq-hypr-dynamic-cursors-0-unstable-2024-08-01/lib/libhypr-dynamic-cursors.so $mod=SUPER animations { bezier=fade, 0.165, 0.84, 0.44, 1 bezier=woosh, 0.445, 0.05, 0, 1 animation=windowsMove, 1, 5, default animation=windowsIn, 1, 2, fade, popin 90% animation=windows, 1, 7, default, slide animation=windowsOut, 1, 3, fade, popin 90% animation=fadeSwitch, 1, 7, default animation=fadeOut, 1, 3, fade animation=workspaces, 1, 4, woosh, slide animation=layers, 1, 3, fade, popin 90% enabled=true first_launch_animation=false } binds { scroll_event_delay=50 } cursor { no_hardware_cursors=false } debug { disable_logs=true enable_stdout_logs=false } decoration { blur { brightness=0.800000 enabled=true ignore_opacity=true noise=0 passes=3 popups=true popups_ignorealpha=0 size=10 vibrancy=0 } col.shadow=rgba(1a1a1aee) drop_shadow=yes rounding=10 shadow_range=4 shadow_render_power=3 } dwindle { preserve_split=true pseudotile=true } general { allow_tearing=false border_size=0 col.active_border=rgb(4575da) rgb(6804b5) col.inactive_border=rgb(595959) gaps_in=5 gaps_out=5 layout=dwindle } gestures { workspace_swipe=true } input { touchpad { natural_scroll=false } accel_profile=flat follow_mouse=1 kb_layout=us,ru kb_options=grp:alt_shift_toggle repeat_delay=200 sensitivity=1 } misc { animate_manual_resizes=false animate_mouse_windowdragging=false background_color=0x000000 disable_hyprland_logo=true enable_swallow=true force_default_wallpaper=2 swallow_exception_regex=^(ncspot)$ swallow_regex=^(kitty|lutris|bottles|alacritty)$ } plugin { dynamic-cursors { shake { enabled=false } stretch { function=negative_quadratic } enabled=false mode=tilt } hyprexpo { bg_col=rgb(111111) columns=3 enable_gesture=true gap_size=5 gesture_distance=300 gesture_positive=true workspace_method=first 1 } } bind=, Print, exec, hyprshot -m region bind=SHIFT, Print, exec, hyprshot -m window bind=ALT, Print, exec, hyprshot -m output bind=CTRL, Print, exec, hyprshot -m region -r d | swappy -f - bind=CTRL_SHIFT, Print, exec, hyprshot -m window -r d | swappy -f - bind=CTRL_ALT, Print, exec, hyprshot -m output -r d | swappy -f - bind=ALT,R,submap,passthrough bind=$mod_CTRL, Q, exec, neovide --frame none +term +startinsert '+set laststatus=0 ruler' '+set cmdheight=0' '+map :tabnew +term' bind=$mod_CTRL, C, exec, hyprctl kill bind=$mod_CTRL, R, exec, killall -SIGUSR1 gpu-screen-recorder && notify-send 'GPU-Screen-Recorder' 'Повтор успешно сохранён' bind=$mod_CTRL, U, exec, update-damn-nixos l0lk3k bind=$mod_CTRL, V, exec, cliphist list | rofi -dmenu -hover-select -me-select-entry '' -me-accept-entry MousePrimary | cliphist decode | wl-copy bind=$mod_ALT, mouse_down, exec, hyprctl keyword cursor:zoom_factor $(hyprctl getoption cursor:zoom_factor | grep float | awk '{print $2 + 1}') bind=$mod_ALT, mouse_up, exec, hyprctl keyword cursor:zoom_factor $(hyprctl getoption cursor:zoom_factor | grep float | awk '{print $2 - 1}') bind=$mod_CTRL, mouse_down, exec, hyprctl keyword cursor:zoom_factor $(hyprctl getoption cursor:zoom_factor | grep float | awk '{print $2 + 100}') bind=$mod_CTRL, mouse_up, exec, hyprctl keyword cursor:zoom_factor $(hyprctl getoption cursor:zoom_factor | grep float | awk '{print $2 - 100}') bind=$mod, F1, exec, gamemode.sh bind=$mod, F2, exec, sheesh.sh bind=$mod, O, exec, killall -SIGUSR1 .waybar-wrapped bind=$mod, Q, exec, kitty bind=$mod, C, killactive, bind=$mod, M, exec, wlogout -b 2 -L 500px -R 500px -c 30px -r 30px, bind=$mod, E, exec, nautilus -w bind=$mod, V, togglefloating, bind=$mod, P, pseudo, bind=$mod, J, togglesplit, bind=$mod, F, exec, hyprctl dispatch fullscreen bind=$mod, left, movefocus, l bind=$mod, right, movefocus, r bind=$mod, up, movefocus, u bind=$mod, down, movefocus, d bind=$mod, 1, workspace, 1 bind=$mod, 2, workspace, 2 bind=$mod, 3, workspace, 3 bind=$mod, 4, workspace, 4 bind=$mod, 5, workspace, 5 bind=$mod, 6, workspace, 6 bind=$mod, 7, workspace, 7 bind=$mod, 8, workspace, 8 bind=$mod, 9, workspace, 9 bind=$mod, 0, workspace, 10 bind=$mod SHIFT, 1, movetoworkspace, 1 bind=$mod SHIFT, 2, movetoworkspace, 2 bind=$mod SHIFT, 3, movetoworkspace, 3 bind=$mod SHIFT, 4, movetoworkspace, 4 bind=$mod SHIFT, 5, movetoworkspace, 5 bind=$mod SHIFT, 6, movetoworkspace, 6 bind=$mod SHIFT, 7, movetoworkspace, 7 bind=$mod SHIFT, 8, movetoworkspace, 8 bind=$mod SHIFT, 9, movetoworkspace, 9 bind=$mod SHIFT, 0, movetoworkspace, 10 bind=$mod, S, togglespecialworkspace, magic bind=$mod SHIFT, S, movetoworkspace, special:magic bind=$mod, mouse_down, workspace, e+1 bind=$mod, mouse_up, workspace, e-1 bindm=$mod, mouse:272, movewindow bindm=$mod, mouse:273, resizewindow bindr=$mod, $mod_L, exec, pkill rofi || rofi -show drun -show-icons -hover-select -me-select-entry '' -me-accept-entry MousePrimary bindr=$mod_CTRL, $mod_L, exec, pkill rofi || rofi -show run -hover-select -me-select-entry '' -me-accept-entry MousePrimary exec-once=firefox & vesktop --ozone-platform-hint=auto exec-once=wl-paste --type text --watch cliphist store exec-once=wl-paste --type image --watch cliphist store exec-once=hyprctl setcursor Bibata-Modern-Classic 24 layerrule=blur, waybar layerrule=blur, rofi layerrule=blur, wofi layerrule=blur, launcher layerrule=blur, logout_dialog layerrule=blur, notifications layerrule=blur, gtk-layer-shell layerrule=blur, swaync-control-center layerrule=blur, swaync-notification-window layerrule=blur, .* layerrule=blurpopups, .* layerrule=noanim, selection layerrule=ignorealpha 0.9, selection layerrule=ignorezero, corner0 layerrule=ignorezero, overview layerrule=ignorezero, indicator0 layerrule=ignorezero, datemenu layerrule=ignorezero, launcher layerrule=ignorezero, quicksettings layerrule=ignorezero, swaync-control-center layerrule=ignorezero, rofi layerrule=ignorezero, waybar layerrule=ignorezero, swaync-notification-window layerrule=animation popin 90%, rofi layerrule=animation popin 90%, logout_dialog layerrule=animation slide left, swaync-control-center windowrule=nomaxsize, ^(polkit-mate-authentication-agent-1)$ windowrule=pin, ^(polkit-mate-authentication-agent-1)$ windowrule=opacity 0.99 override 0.99 override, title:^(MainPicker)$ windowrule=opacity 0.99 override 0.99 override, ^(org.prismlauncher.PrismLauncher)$ windowrule=opacity 0.99 override 0.99 override, ^(org.qbittorrent.qBittorrent)$ submap=passthrough bind=,escape,submap,reset submap=reset ======Config-End======== ```

Description

When GPU is under full load, whole compositor starts to lag, which also results in the game/program itself lagging. The reason why I chose both yes and no in Regression is because that problem wasn't there when I was using Nvidia, but started to appear when I was already on AMD, but I don't remember when exactly, maybe it happened when I switched to AMD, or sometime after that, so I'm not really sure I previously had GTX 1650 And switched to RX 580 2 months ago Miiiiight be related to #8041, but my issue happens only under GPU load

How to reproduce

Just put GPU under full load (furmark, Minecraft with optimisation mods, or any GPU demanding game)

Crash reports, logs, images, videos

No response

DADA30000 commented 1 week ago

oh well, also just found this #7857

DADA30000 commented 1 week ago

I could try bisecting if I knew how to do this on NixOS

vaxerski commented 1 week ago

dup

dec05eba commented 6 days ago

I dont know if this is actually caused by the same issue. In this case I believe it's amd specific. It happens because amd gpu scheduling is bad. In some cases using cap_sys_nice and using a high priority opengl/vulkan context fixes this, but in other cases the only way to fix this is for the compositor to not perform any opengl/vulkan operations at all (when it can for fullscreen scanout). I can reproduce it myself by running cyberpunk 2077 benchmark with raytracing on so the fps gets pretty low (like 30). In that case other opengl/vulkan applications end up running at around half of that when they operate on a buffer the size of the monitor, and that appears to include the compositor. This is on a rx 7800 xt.