tearing-control-v1: implement

Implement the wp-tearing-control-v1 protocol allowing window to hint
the compositor that they prefer async "tearing" page flips.

Add tearing/no-tearing rules to allow the user to manually
enabled/disable tearing for a window.

Use async "tearing" page flips when a window that should be allowed to
tear is fullscreen.

This still requires several kernel patches to work with the wlroots
atomic DRM backend. For now, either set WLR_DRM_NO_ATOMIC=1 or use a
custom kernel that includes the unmerged patches (such as CachyOS).

Closes: https://codeberg.org/river/river/issues/1094
This commit is contained in:
Violet Purcell
2024-08-07 22:21:23 -04:00
committed by Isaac Freund
parent db7de8151c
commit 066baa5753
10 changed files with 120 additions and 16 deletions

View File

@ -307,11 +307,17 @@ matches everything while _\*\*_ and the empty string are invalid.
- *fullscreen*: Make the view fullscreen. Applies only to new views.
- *no-fullscreen*: Don't make the view fullscreen. Applies only to
new views.
- *tearing*: Enable tearing for view when fullscreen regardless of the
supplied tearing hint. Note that tearing additionally requires setting the
*allow-tearing* server option. Applies to new and existing views.
- *no-tearing*: Disable tearing for view regardless of the supplied
tearing hint. Applies to new and existing views.
Both *float* and *no-float* rules are added to the same list,
which means that adding a *no-float* rule with the same arguments
as a *float* rule will overwrite it. The same holds for *ssd* and
*csd*, *fullscreen* and *no-fullscreen* rules.
*csd*, *fullscreen* and *no-fullscreen*, *tearing* and
*no-tearing* rules.
If multiple rules in a list match a given view the most specific
rule will be applied. For example with the following rules
@ -364,6 +370,9 @@ matches everything while _\*\*_ and the empty string are invalid.
Set the attach mode of the currently focused output, overriding the value of
default-attach-mode if any.
*allow-tearing* *enabled*|*disabled*
Allow windows to tear if requested by either the program or the user.
*background-color* _0xRRGGBB_|_0xRRGGBBAA_
Set the background color.