Solitary clients with single subsurface & verbose solitary/tearing/DS checks#11228
Conversation
ed4a4b8 to
8ef5479
Compare
|
hyprlandCrashReport1261.txt randomly crashing when opening and closing foot windows tested it anyway, seems tearing is unable to trigger citing "next frame is not torn" in all instances I've seen. Ghost of Tsushima running in wine wayland shown below:
Then I tested with CEMU, playing The Legend of Zelda: the Windwaker HD (pretty sure this is fullscreen subsurface) Moving focus back to the game, the game wouldn't recover from being frozen, switching workspace on that monitor to another and back to the game made it continue, with tearing now disabled:
|
|
Both crash reports point to |
|
hmm, the foot clients I opened were empty actually, I didn't have Tearing is working on wine-wayland now afaict, disabled VRR on my monitor and could notice tearing in some instances. However not working on CEMU still with the aforementioned issue of it only triggering when not focussed on it for some reason |
|
only quitting yea |
|
Should be fixed now. Happened when |
vaxerski
left a comment
There was a problem hiding this comment.
also I'd love a few tests for these.
yep fixed. more info on the cemu issue, it seems like the tearingBlockedBy is null when the window is frozen if that helps
if you want to test cemu for free i've provided a basic homebrew pong app which you can run in the emulator without needing any firmware or official games. this can be used to reproduce the issue on your side (run the .elf file in cemu) the fps is unlocked here but still repro'd the issue for me EDIT: whilst the window is frozen if i move my mouse it unfreezes. freezes again when cursor is still |
|
This PR doesn't fix DS/tearing in general. Only makes single subsurface case acceptable for the DS/tearing code. And makes it easier to debug. So it'll be obvious when DS/tearing doesn't work due to config settings ("user settings", "window settings"), due to some other intentional internal check or due to something being broken (blocked by "null"). Internal checks and broken stuff are being fixed in #10020 |
|
hey if you want to you can cherry pick this commit from my old pr #10020, |
that single commit doesn't seem to be enough. and there a lot of changes overall. better to cherry pick/merge/rebase in a separate PR after this one is merged |
|
I tried this PR and Hyprland crashes for me 1-2 seconds in. |
fixed |
vaxerski
left a comment
There was a problem hiding this comment.
generally lgtm just tests would be nice
|
I have been testing games with wine-wayland + HDR. Issue is if you have both enabled.
Turning either one off, makes the other one work flawlessly. Bonus fix (I'm not 100% sure it worked before), VRR works flawlessly with the wine-wayland + HDR combo. In the past, it'll work for a bit (like until the main menu of the game I can see the refresh rate adjusting), but when in-game, it would actually be stuck at max refresh rate. VRR worked fine on Xwayland btw, it was only on wine-wayland where this issue existed. |
any docs on how to write and run tests? |
375649d to
2c5850c
Compare
|
Some tests might be broken. Couldn't verify them because for some reason I get Should be ok with the correct monitor setup. |
|
maybe its the snap test not coming back to workspace 1? |
32f1ece to
4c9e10a
Compare
|
Fixed most of the issues. Hard to make a sensible test without some hw features for headless outputs. |
|
The only issue I have with this PR still is that tearing + DS makes it stop rendering, even though DS is deactivated according to Also is there a reason tearing should be preferred over DS? Shouldn't DS take precedence? edit: Also, with just tearing enabled and not DS, it's bit wonky. It will freeze on a frame until I toggle fullscreen a few times. ALL THESE TESTS ARE DONE WITH |
|
The activation logic should be the same as on main. So the same issues should be present on main for apps that don't need this subsurface fix. HDR should produce more reliable results. CM for SDR DS doesn't exist atm and some SDR formats can't be used with DS at all. This PR was meant to fix DS in wine-wayland on my nvidia setup and I am not interested in tearing. Ironically tearing seems to be working on every setup and DS works on mesa drivers. Might also work with some other videocard and nvidia driver version combos. No luck for me |
be58e0c to
9ba8b99
Compare
|
is this ready or...? |
|
Ready |
…tearing/DS checks (hyprwm#11228) Adds more verbose checks for various conditional rendering mechanisms
…tearing/DS checks (hyprwm#11228) Adds more verbose checks for various conditional rendering mechanisms
…tearing/DS checks (hyprwm#11228) Adds more verbose checks for various conditional rendering mechanisms






Describe your PR, what does it fix/add?
Moved solitary/tearing/DS checks to
CMonitor.Added enums to describe possible blocking reasons for those features.
Added
solitaryBlockedBy,tearingBlockedByanddirectScanoutBlockedByfields tohyprctl monitors.Allowed clients with single opaque full-sized subsurface to be recognized as solitary clients.
Should help with debugging DS and tearing activation issues and fix some issues with wine-wayland.
Is there anything you want to mention? (unchecked code, possible bugs, found problems, breaking compatibility, etc.)
Partially fixes #10452. DS activation on my system goes up to this point:
Maybe some DS step isn't updated with this new solitary logic or it can be an nvidia bug or some format negotiation ussue. Needs more testing with different apps and hw.
Tearing may report as blocked by next frame not being torn while tearing is active and working because the relevant flag is constantly flipped between frames. Probably should remove this value from the output.DS and tearing checks should keep the current logic. Some of this logic is known to be incorrect, duplicated or might miss some edge cases. This PR will mess with fixes from #10020
Doesn't seem to break anything that was working with DS/tearing. Known to break some apps that couldn't activate DS/tearing without this PR. These features should be turned off manually for such apps and it should be investigated in a separate issue.
Is it ready for merging, or does it need work?
Ready