-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
pointer: apply locked pointer workaround only on xwayland #12402
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
|
probably fixes #12032, can test when I get home |
|
pls do |
yep, fixed |
|
I tested a few games running in native Wayland: CS2, Minecraft, Ultrakill and Warframe; they all seem to behave properly now in regard to the issues discussed in #12013. However, for games running in native Wayland with Proton-GE (Ultrakill and Warframe in this case), it is still needed to fullscreen off and fullscreen on the window for VRR to actually work (this also applies to DS). |
Same for me. It would be awesome to fix, but I couldn't find the reason why it happens. |
Edit: False alarm. I just had the above issue when launching a game set to borderless instead of fullscreen in its settings. Edit 2: Unable to replicate the issue with Proton Wayland. Seems to get VRR fine on initial launch. |
|
I just got done re-installing my entire system; fresh CachyOS install, fresh Hyprland install (I use my own PKGBUILD to compile from source), fresh Steam/Wine/Proton, and fresh game installs. I've tried STALKER 2, Minecraft, Killing Floor 2, HITMAN 2, and ELDEN RING (both kbm & controller). I have tried them all with both Wayland and XWayland. The only game I was able to replicate this issue in is HITMAN 2; however, setting I brought this up in the discussion but it was ignored, so I want to ask again: what window rules are you guys using for game windows? I also had to toggle full-screen off then on again until I set up good window rules. |
Nothing really, I just force VRR on everything besides stuff explicitly listed.
In Deadlock's case, the game doesn't fullscreen automatically on XWayland, while native Wayland seems to work perfectly (besides VRR bug ofc). Not sure if that helps you in any way. |
I tried setting the rules exactly as you shared, but it did not solve the issue for my setup. Sorry about the ignore part. I wanted to come back to you and report my results, but I got too involved in the process of finding a solution and eventually forgot. |
@adamnejm , you aren't forcing VRR with
Use
There's a window rule for that:
@shgew it's fine that you forgot, but I didn't ask you to try my window rules, I asked you to share yours because you may have something misconfigured like Adam and that's important; it's very hard to narrow down a bug in code if we all have different configs and Hyprland versions, especially since not everyone can reliably replicate this issue. I've also changed my rules slightly since then and I'll paste them below again for posterity. I agree that VRR is borderline busted in Hyprland right now; I also think it's affected by hardware, user configs, or maybe even other software, too. I'm really not sure because the more research I do, the more discussions and PR's I find relating to cursors, VRR, and tearing in general. I've just changed my config to not use tearing at all because I found out the Linux kernel blocks hardware cursors if tearing is on which in turn blocks direct scanout, and tearing doesn't work on my TV anyway. I think you'll find that whole PR interesting, especially this comment. My Relevant Window Rules
|
Here you go: Window Ruleswindowrule = [
{
name = "steam";
"match:class" = "steam";
min_size = "1 1";
workspace = 11;
rounding = 0;
}
{
name = "proton-game-tag";
"match:xdg_tag" = "proton-game";
tag = "+game";
}
{
name = "steam-apps-tag";
"match:initial_class" = "steam_app_.*";
tag = "+game";
}
{
name = "dota2-tag";
"match:class" = "dota2";
tag = "+game";
}
{
name = "gamescope-tag";
"match:class" = "gamescope";
tag = "+game";
}
{
name = "minecraft-tag";
"match:class" = "Minecraft.*";
tag = "+game";
}
{
name = "unigine-tag";
"match:title" = "Unigine.*";
"match:class" = "negative:Browser.*";
tag = "+game";
}
{
name = "games";
"match:tag" = "game";
workspace = 12;
content = "game";
border_size = 0;
rounding = 0;
decorate = false;
force_rgbx = true;
fullscreen = true;
fullscreen_state = "3 3";
sync_fullscreen = true;
idle_inhibit = "always";
no_anim = true;
no_blur = true;
no_dim = true;
no_max_size = true;
no_shadow = true;
persistent_size = true;
}
{
name = "dota2-no-vrr";
"match:class" = "dota2";
no_vrr = true;
}
{
name = "shproto-no-vrr";
"match:class" = "shproto.*";
no_vrr = true;
}
{
name = "drg-survivor-no-vrr";
"match:class" = "steam_app_2321470";
no_vrr = true;
}
{
name = "clair-obscure-no-vrr";
"match:title" = "Clair Obscur.*";
no_vrr = true;
}
{
name = "blueman";
"match:class" = "^\\.blueman-manager-wrapped$";
float = true;
size = "30% 80%";
move = "15 60";
}
{
name = "pavucontrol";
"match:class" = "org\\.pulseaudio\\.pavucontrol";
float = true;
size = "30% 80%";
move = "15 60";
}
];Configmonitorv2 = [
{
output = "desc:Microstep MPG321UX OLED 0x01010101";
mode = "3840x2160@240Hz";
position = "auto";
scale = 1.5;
bitdepth = 10;
cm = "edid";
}
]
misc = {
vrr = 3;
};
experimental = {
xx_color_management_v4 = true;
}; |
Describe your PR, what does it fix/add?
misc.vrr=3,render.direct_scanout=2,cursor:no_break_fs_vrr0/2, Proton-GE) and confirmed the regression is gone per comment #15013944.Is there anything you want to mention? (unchecked code, possible bugs, found problems, breaking compatibility, etc.)
shouldSkipScheduleFrameOnMouseEvent().Is it ready for merging, or does it need work?
Ready. Let me know if you prefer gating this behind a config flag instead.