Open outfoxxed opened 5 months ago
I've never seen this happen. What about xdpw?
xdpw has the same issue
then I think your pc might be broke
I don't think so, as it happened with a hyprland update and affects hyprland itself. Also it appears to be far less severe on my smaller monitor.
then bisect brotha
I was going to bisect, but I went all the way back to 0.33 and didn't find a good commit. (0.32 is incompatible with current xdph and 0.31 uses system wlr which requires me to write a package overlay to build it, so I didn't go back further.)
Before the screencopy rewrite (iirc) I used to use wlrobs in place of xdph, which does not display the problem (but crashes on recent hyprland versions)
Maybe this isn't a regression at all and was just always bad, I'm not sure. Since you can't seem to reproduce it yourself, is there any other kind of test i should do / is it worth it to go through the pain of building even older hyprland. (does any screenshare code from back then even still exist?)
no clue then. wl-screenrec is a cli option.
The reason is falling back to shm buffers.
From dms:
https://wayland.app/protocols/linux-dmabuf-v1 I only send a tranche for the main gpu not any other
reminder for after aq move
I can testify that I have the same issue. Just opening OBS causes my framerate to go super low. I can tell by the way my cursor moves.
@amarakon do you have multi-gpu or anything else abnormal about your setup?
@outfoxxed No I just have a regular desktop computer setup with one GPU.
Good to know. That means the real issue probably isn't shm or multigpu.
I also tested it with wf-recorder and it still greatly reduces the framerate. This is weird because @outfoxxed only experienced a lower framerate with OBS, not wf-recorder.
It doesn't appear that @vaxerski cares to fix the problem.
https://github.com/hyprwm/Hyprland/issues/6637
I would love to use a newer version of hyprland, but I & many others stuck on 0.40.0 so we can continue recording footage at a reasonable framerate. This is a major regression considering how I don't lose any framerate when recording using dmabuf from the obs plugin wlrobs. If this issue doesn't get fixed we may have to consider moving to another environment if we want to record at reasonable settings.
This is also coming from someone with a unreasonably high-end setup. So you can't blame it on the computer being "too slow" or "broken".
"wl-screenrec" Isn't an option. Especially since some of us may need special effects or options under OBS. We would much rather use a software that allows us to do what we need done than have our intelligence insulted by suggesting something else that doesn't get the job done nearly as well. If you could find it in your heart to care about our concerns, we would greatly appreciate it. @vaxerski
Will probably be handled after #6608.
if this is a regression provide a bisect. The problem outfoxxed outlines is not a regression so your issue is probably a separate one.
Older versions of Hyprland fail to build on my system, so I can't check if I'm experiencing a regression. Side note: GPU Screen Recorder works perfectly fine and I'm using that until this gets fixed.
if this is a regression provide a bisect. The problem outfoxxed outlines is not a regression so your issue is probably a separate one.
If my issue is a separate one, why don't you go back to the version mentioned yourself & test recording using dmabuf? Then try to test it on the latest release. If you think I'm lying or that I don't understand what I'm talking about, prove it. Otherwise it's safe to assume you're just trying to dodge taking the blame for this issue.
if this is a regression provide a bisect. The problem outfoxxed outlines is not a regression so your issue is probably a separate one.
If my issue is a separate one, why don't you go back to the version mentioned yourself & test recording using dmabuf? Then try to test it on the latest release. If you think I'm lying or that I don't understand what I'm talking about, prove it. Otherwise it's safe to assume you're just trying to dodge taking the blame for this issue.
Many issues, including this one, are software and hardware configuration specific, and even when its not, a very large amount of time can be saved and spent on something more useful if the person actually having the issue can tell you where it is (and if its hw/sw config specific its often not even possible to bisect without that config).
I don't know where you're getting anything about blame here either. Thats not how maintaining a project works.
Can confirm that FPS significantly drops when screen recording on the latest hyprland using OBS. not resolved with aquamarine. wlrobs dmabuf still crashes OBS.
Bug or Regression?
Regression
System Info and Version
System/Version info
```sh Hyprland, built from branch at commit 38132ffaf53c843a3ed03be5b305702fde8f5a49 (). Date: 2024-06-12 Tag: , commits: flags: (if any) System Information: System name: Linux Node name: msi Release: 6.6.32 Version: #1-NixOS SMP PREEMPT_DYNAMIC Sat May 25 14:22:56 UTC 2024 GPU information: 07:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Cezanne [Radeon Vega Series / Radeon Vega Mobile Series] [1002:1638] (rev c5) (prog-if 00 [VGA controller]) os-release: ANSI_COLOR="1;34" BUG_REPORT_URL="https://github.com/NixOS/nixpkgs/issues" BUILD_ID="24.11.20240612.57d6973" 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 (Vicuña)" SUPPORT_URL="https://nixos.org/community.html" VERSION="24.11 (Vicuña)" VERSION_CODENAME="vicuña" VERSION_ID="24.11" plugins: hy3 by outfoxxed ver 0.1 ======Config-Start====== Config File: /home/admin/.config/hypr/hyprland.conf: Read Succeeded exec-once = /nix/store/bnipzdfv788l7yvgn7k7s7gp76sd1zpz-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/45lfiwd4xfhy48m2mgc2glzqd8820vdh-hy3-hl0.41.0/lib/libhy3.so source = /nix/store/r58cah42m9xprpbkh17fw0ks95kf8bdp-impurity--modules-hyprland-hyprland.conf source = /nix/store/sy86hnipmvwvrjwac4mbkjxfkdn9nh5v-impurity--systems-msi-hyprland-hyprland.conf Config File: /nix/store/r58cah42m9xprpbkh17fw0ks95kf8bdp-impurity--modules-hyprland-hyprland.conf: Read Succeeded exec-once = quickshell -c shell exec = systemctl start --user emacs.service && emacsclient -e "(setenv \"HYPRLAND_INSTANCE_SIGNATURE\" \"$HYPRLAND_INSTANCE_SIGNATURE\")" general { gaps_in = 3 gaps_out = 5 border_size = 1 col.active_border = rgba(33ccffee) col.inactive_border = rgba(595959aa) resize_on_border = true layout = hy3 } input { kb_layout = us sensitivity = 0 follow_mouse = 1 # mouse_refocus = false - #6393 accel_profile = flat } decoration { rounding = 5 blur { enabled = true size = 7 passes = 4 noise = 0.008 contrast = 0.8916 brightness = 0.8 } drop_shadow = no } animations { enabled = yes bezier = windowIn, 0.06, 0.71, 0.25, 1 bezier = windowResize, 0.04, 0.67, 0.38, 1 animation = windowsIn, 1, 3, windowIn, slide #popin 20% animation = windowsOut, 1, 3, windowIn, slide #popin 70% animation = windowsMove, 1, 2.5, windowResize animation = border, 1, 10, default animation = borderangle, 1, 8, default animation = fade, 1, 3, default animation = workspaces, 1, 6, default, slidevert animation = layers, 1, 5, windowIn, slide } gestures { workspace_swipe = true workspace_swipe_fingers = 4 workspace_swipe_forever = true workspace_swipe_cancel_ratio = 0.15 } misc { disable_hyprland_logo = true disable_splash_rendering = true vrr = 1 no_direct_scanout = false key_press_enables_dpms = true } binds { workspace_back_and_forth = true } plugin { hy3 { tabs { height = 2 padding = 6 render_text = false } autotile { enable = true trigger_width = 800 trigger_height = 500 } } } debug { disable_logs = no } monitor = , preferred, auto, 1 layerrule = blur, test layerrule = ignorezero, test layerrule = noanim, test layerrule = blur, wofi layerrule = ignorezero, wofi layerrule = noanim, ^(selection)$ layerrule = blur, termspawner layerrule = ignorezero, termspawner layerrule = noanim, termspawner layerrule = animation fade, shell:background layerrule = blur, shell:bar layerrule = blurpopups, shell:bar layerrule = ignorezero, shell:bar #layerrule = noanim, shell:bar layerrule = noanim, shell:screenshot layerrule = blur, walker layerrule = ignorezero, walker layerrule = animation popin 90%, walker windowrulev2 = float, class:^(opensnitch_ui)$ windowrulev2 = dimaround, class:^(opensnitch_ui)$ windowrulev2 = float, class:^(org.kde.polkit-kde-authentication-agent-1)$ windowrulev2 = dimaround, class:^(org.kde.polkit-kde-authentication-agent-1)$ windowrulev2 = float, class:^(gcr-prompter)$ windowrulev2 = dimaround, class:^(gcr-prompter)$ windowrulev2 = float, class:^(org.freedesktop.impl.portal.desktop.kde)$ windowrulev2 = size 1000 700, class:^(org.freedesktop.impl.portal.desktop.kde)$ windowrulev2 = center, class:^(org.freedesktop.impl.portal.desktop.kde)$ windowrulev2 = dimaround, class:^(org.freedesktop.impl.portal.desktop.kde)$ windowrulev2 = float, class:^(AlacrittyFloating)$ $mod = SUPER $launcher = walker bind = $mod+SHIFT, m, exit bind = $mod, return, exec, alacritty bind = $mod+SHIFT, return, exec, alacritty --class AlacrittyFloating bind = $mod, grave, exec, $launcher bind = $mod+SHIFT, q, hy3:killactive bind = $mod+SHIFT, s, global, shell:screenshot bind = $mod, c, global, shell:termselect bind = $mod, PERIOD, exec, quickshell -c lockscreen bind = $mod, f, fullscreen, 1 bind = $mod+SHIFT, f, fullscreen, 0 bind = $mod+SHIFT, tab, togglefloating bind = $mod, d, hy3:makegroup, h bind = $mod, s, hy3:makegroup, v bind = $mod, z, hy3:makegroup, tab bind = $mod, a, hy3:changefocus, raise bind = $mod+SHIFT, a, hy3:changefocus, lower bind = $mod, e, hy3:expand, expand bind = $mod+SHIFT, e, hy3:expand, base bind = $mod, r, hy3:changegroup, opposite bindm = $mod, mouse:272, movewindow bindm = $mod, mouse:273, resizewindow bindn = , mouse:272, hy3:focustab, mouse bindn = , mouse_down, hy3:focustab, l, require_hovered bindn = , mouse_up, hy3:focustab, r, require_hovered bind = $mod, q, hy3:warpcursor bind = ,XF86AudioStop, global, shell:music-pauseall bind = ,XF86AudioPlay, global, shell:music-playpause bind = ,XF86AudioNext, global, shell:music-next bind = ,XF86AudioPrev, global, shell:music-previous bind = $mod, h, hy3:movefocus, l bind = $mod, j, hy3:movefocus, d bind = $mod, k, hy3:movefocus, u bind = $mod, l, hy3:movefocus, r bind = $mod, left, hy3:movefocus, l bind = $mod, down, hy3:movefocus, d bind = $mod, up, hy3:movefocus, u bind = $mod, right, hy3:movefocus, r bind = $mod+CONTROL, h, hy3:movefocus, l, visible, nowarp bind = $mod+CONTROL, j, hy3:movefocus, d, visible, nowarp bind = $mod+CONTROL, k, hy3:movefocus, u, visible, nowarp bind = $mod+CONTROL, l, hy3:movefocus, r, visible, nowarp bind = $mod+CONTROL, left, hy3:movefocus, l, visible, nowarp bind = $mod+CONTROL, down, hy3:movefocus, d, visible, nowarp bind = $mod+CONTROL, up, hy3:movefocus, u, visible, nowarp bind = $mod+CONTROL, right, hy3:movefocus, r, visible, nowarp bind = $mod+SHIFT, h, hy3:movewindow, l, once bind = $mod+SHIFT, j, hy3:movewindow, d, once bind = $mod+SHIFT, k, hy3:movewindow, u, once bind = $mod+SHIFT, l, hy3:movewindow, r, once bind = $mod+SHIFT, left, hy3:movewindow, l, once bind = $mod+SHIFT, down, hy3:movewindow, d, once bind = $mod+SHIFT, up, hy3:movewindow, u, once bind = $mod+SHIFT, right, hy3:movewindow, r, once bind = $mod+CONTROL+SHIFT, h, hy3:movewindow, l, once, visible bind = $mod+CONTROL+SHIFT, j, hy3:movewindow, d, once, visible bind = $mod+CONTROL+SHIFT, k, hy3:movewindow, u, once, visible bind = $mod+CONTROL+SHIFT, l, hy3:movewindow, r, once, visible bind = $mod+CONTROL+SHIFT, left, hy3:movewindow, l, once, visible bind = $mod+CONTROL+SHIFT, down, hy3:movewindow, d, once, visible bind = $mod+CONTROL+SHIFT, up, hy3:movewindow, u, once, visible bind = $mod+CONTROL+SHIFT, right, hy3:movewindow, r, once, visible bind = $mod, 1, workspace, 01 bind = $mod, 2, workspace, 02 bind = $mod, 3, workspace, 03 bind = $mod, 4, workspace, 04 bind = $mod, 5, workspace, 05 bind = $mod, 6, workspace, 06 bind = $mod, 7, workspace, 07 bind = $mod, 8, workspace, 08 bind = $mod, 9, workspace, 09 bind = $mod, 0, workspace, 10 bind = $mod, F1, workspace, 11 bind = $mod, F2, workspace, 12 bind = $mod, F3, workspace, 13 bind = $mod, F4, workspace, 14 bind = $mod, F5, workspace, 15 bind = $mod, F6, workspace, 16 bind = $mod, F7, workspace, 17 bind = $mod, F8, workspace, 18 bind = $mod, F9, workspace, 19 bind = $mod, F10, workspace, 20 bind = $mod+SHIFT, 1, hy3:movetoworkspace, 01 bind = $mod+SHIFT, 2, hy3:movetoworkspace, 02 bind = $mod+SHIFT, 3, hy3:movetoworkspace, 03 bind = $mod+SHIFT, 4, hy3:movetoworkspace, 04 bind = $mod+SHIFT, 5, hy3:movetoworkspace, 05 bind = $mod+SHIFT, 6, hy3:movetoworkspace, 06 bind = $mod+SHIFT, 7, hy3:movetoworkspace, 07 bind = $mod+SHIFT, 8, hy3:movetoworkspace, 08 bind = $mod+SHIFT, 9, hy3:movetoworkspace, 09 bind = $mod+SHIFT, 0, hy3:movetoworkspace, 10 bind = $mod+SHIFT, F1, hy3:movetoworkspace, 11 bind = $mod+SHIFT, F2, hy3:movetoworkspace, 12 bind = $mod+SHIFT, F3, hy3:movetoworkspace, 13 bind = $mod+SHIFT, F4, hy3:movetoworkspace, 14 bind = $mod+SHIFT, F5, hy3:movetoworkspace, 15, follow bind = $mod+SHIFT, F6, hy3:movetoworkspace, 16 bind = $mod+SHIFT, F7, hy3:movetoworkspace, 17 bind = $mod+SHIFT, F8, hy3:movetoworkspace, 18 bind = $mod+SHIFT, F9, hy3:movetoworkspace, 19 bind = $mod+SHIFT, F10, hy3:movetoworkspace, 20 bind = $mod+CONTROL, 1, hy3:focustab, index, 01 bind = $mod+CONTROL, 2, hy3:focustab, index, 02 bind = $mod+CONTROL, 3, hy3:focustab, index, 03 bind = $mod+CONTROL, 4, hy3:focustab, index, 04 bind = $mod+CONTROL, 5, hy3:focustab, index, 05 bind = $mod+CONTROL, 6, hy3:focustab, index, 06 bind = $mod+CONTROL, 7, hy3:focustab, index, 07 bind = $mod+CONTROL, 8, hy3:focustab, index, 08 bind = $mod+CONTROL, 9, hy3:focustab, index, 09 bind = $mod+CONTROL, 0, hy3:focustab, index, 10 Config File: /nix/store/sy86hnipmvwvrjwac4mbkjxfkdn9nh5v-impurity--systems-msi-hyprland-hyprland.conf: Read Succeeded monitor = eDP-1, 1920x1080@240Hz, 0x1440, 1 monitor = DP-1, 5120x1440@120Hz, 1350x0, 1, bitdepth, 10 #monitor = DP-1, 2560x1440, 1350x0, 1 monitor = , preferred, auto, 1 workspace = 01, monitor:DP-1, default:true workspace = 02, monitor:DP-1 workspace = 03, monitor:DP-1 workspace = 04, monitor:DP-1 workspace = 05, monitor:DP-1 workspace = 06, monitor:DP-1 workspace = 07, monitor:DP-1 workspace = 08, monitor:DP-1 workspace = 09, monitor:DP-1 workspace = 10, monitor:DP-1 workspace = 11, monitor:eDP-1, default:true workspace = 12, monitor:eDP-1 workspace = 13, monitor:eDP-1 workspace = 14, monitor:eDP-1 workspace = 15, monitor:eDP-1 workspace = 16, monitor:eDP-1 workspace = 17, monitor:eDP-1 workspace = 18, monitor:eDP-1 workspace = 19, monitor:eDP-1 workspace = 20, monitor:eDP-1 ======Config-End======== ```Description
When using pipewire screen capture, hyprland's framerate goes from vsync (240 and 120hz per monitor) to an unstable sub-30fps on both. Applications can detect the lowered framerate.
When using wf-recorder this does NOT happen. Regardless of if the bug causing the lowered framerate is in xdph or hyprland, a bad implementation of a screen recorder should not be able to influence the framerate of the compositor.
How to reproduce
Screen capture an application using OBS and pipewire. Observe the dropped framerate. Do the same with wf-recorder. Observe no change to framerate.
Crash reports, logs, images, videos
OBS making hyprland struggle to reach 20fps:
https://github.com/hyprwm/Hyprland/assets/83010835/fade6aeb-c2cc-479e-8443-616a294fcf29
wf-recorder having no impact whatsoever:
https://github.com/hyprwm/Hyprland/assets/83010835/1b3bfd3f-4bd0-46ec-9a5c-9a16f28bcfa4
The dimensions of the wf-recorder capture are only smaller because making them the same size at the higher refresh rate easily exceeds github's 10mb limit.