summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristopher Snowhill2024-04-07 23:01:29 -0700
committerChristopher Snowhill2024-04-07 23:02:02 -0700
commit3701490d604a0dd259e4cd03567af092a90e5b62 (patch)
tree34bc18c30d34b92758762e9fb08c2913b0554a76
parent16d6327a848638a75135880dbb370bd0a3d291e3 (diff)
downloadaur-3701490d604a0dd259e4cd03567af092a90e5b62.tar.gz
Add atomic modesetting tearing support patch
-rw-r--r--.SRCINFO4
-rw-r--r--PKGBUILD9
-rw-r--r--wlroots-atomic-tearing.patch47
3 files changed, 56 insertions, 4 deletions
diff --git a/.SRCINFO b/.SRCINFO
index db674fe60433..4c2d83599fa0 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = wlroots-hidpi-xprop
pkgdesc = Modular Wayland compositor library (stable, with patches)
pkgver = 0.17.2
- pkgrel = 2
+ pkgrel = 3
url = https://gitlab.freedesktop.org/wlroots/wlroots
arch = x86_64
license = MIT
@@ -36,10 +36,12 @@ pkgbase = wlroots-hidpi-xprop
source = 0002-Fix-configure_notify-event.patch
source = 0003-Fix-size-hints-under-Xwayland-scaling.patch
source = 4629.patch
+ source = wlroots-atomic-tearing.patch
sha512sums = 568d6f74a60ed4c1150cd9520df7a2bd55bc306732a4c8ccaa722bf7737075f9934dc48c330276d2a96d3ffa4aa35cc6023b09375557e89589eb026a3de5b5b9
sha512sums = ca05b46c8222e6982c848944ff2afe7765a2e76bb90e29c9d5b5dde9b51a0038bce8b0d52d01c390c970319ef10614ab1454a66940bf3a5b6193fc7f189afe6b
sha512sums = 484c8a6848b1409a16403bf0c3e366bf5203716824c24e16efcdcdb71ff34c42b5da6e3da338fafea70ad80fcdd3d6e9f070fb809093d8b0b08ee0b2c95a4de4
sha512sums = 8e3e77f6df204b6e5aa770be61fc8a6525e295cc8acdb0084ce66463e78f11702cf066640b20d7ff9560bdcdf7fa626db2e90651dcd42670250f45ac0f636854
sha512sums = 5648d43fca061ee4b72dfb2cf41a8b100d7d7bb6a15a6e06a6f2bbbcdfb19495c38bb6f0bd8ca1604244eb7bf3aec9563395fc72e766bc1cf9b1767995513567
+ sha512sums = 731674c275825689913433c25e8ecb94856c363409eeeeb999526b49041aba281aa770df56cbad3d1983860792d641c0bf60f704b3530805a1d3e67a9a51a76a
pkgname = wlroots-hidpi-xprop
diff --git a/PKGBUILD b/PKGBUILD
index b0dd2bd4fadf..0776d5cbba00 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -5,7 +5,7 @@
# Contributor: Antonin Décimo <antonin dot decimo at gmail dot com>
pkgname=wlroots-hidpi-xprop
pkgver=0.17.2
-pkgrel=2
+pkgrel=3
license=(MIT)
pkgdesc='Modular Wayland compositor library (stable, with patches)'
url=https://gitlab.freedesktop.org/wlroots/wlroots
@@ -43,12 +43,14 @@ source=("${pkgname}::git+${url}#tag=${pkgver}"
0001-xwayland-support-HiDPI-scale.patch
0002-Fix-configure_notify-event.patch
0003-Fix-size-hints-under-Xwayland-scaling.patch
- 4629.patch)
+ 4629.patch
+ wlroots-atomic-tearing.patch)
sha512sums=('568d6f74a60ed4c1150cd9520df7a2bd55bc306732a4c8ccaa722bf7737075f9934dc48c330276d2a96d3ffa4aa35cc6023b09375557e89589eb026a3de5b5b9'
'ca05b46c8222e6982c848944ff2afe7765a2e76bb90e29c9d5b5dde9b51a0038bce8b0d52d01c390c970319ef10614ab1454a66940bf3a5b6193fc7f189afe6b'
'484c8a6848b1409a16403bf0c3e366bf5203716824c24e16efcdcdb71ff34c42b5da6e3da338fafea70ad80fcdd3d6e9f070fb809093d8b0b08ee0b2c95a4de4'
'8e3e77f6df204b6e5aa770be61fc8a6525e295cc8acdb0084ce66463e78f11702cf066640b20d7ff9560bdcdf7fa626db2e90651dcd42670250f45ac0f636854'
- '5648d43fca061ee4b72dfb2cf41a8b100d7d7bb6a15a6e06a6f2bbbcdfb19495c38bb6f0bd8ca1604244eb7bf3aec9563395fc72e766bc1cf9b1767995513567')
+ '5648d43fca061ee4b72dfb2cf41a8b100d7d7bb6a15a6e06a6f2bbbcdfb19495c38bb6f0bd8ca1604244eb7bf3aec9563395fc72e766bc1cf9b1767995513567'
+ '731674c275825689913433c25e8ecb94856c363409eeeeb999526b49041aba281aa770df56cbad3d1983860792d641c0bf60f704b3530805a1d3e67a9a51a76a')
prepare () {
cd "${pkgname}"
@@ -57,6 +59,7 @@ prepare () {
patch -Np1 < ../0002-Fix-configure_notify-event.patch
patch -Np1 < ../0003-Fix-size-hints-under-Xwayland-scaling.patch
patch -Np1 < ../4629.patch
+ patch -Np1 < ../wlroots-atomic-tearing.patch
}
build () {
diff --git a/wlroots-atomic-tearing.patch b/wlroots-atomic-tearing.patch
new file mode 100644
index 000000000000..202b180080c7
--- /dev/null
+++ b/wlroots-atomic-tearing.patch
@@ -0,0 +1,47 @@
+diff --git a/backend/drm/drm.c b/backend/drm/drm.c
+index 07880c47..a0d0eb3d 100644
+--- a/backend/drm/drm.c
++++ b/backend/drm/drm.c
+@@ -113,6 +113,8 @@ bool check_drm_features(struct wlr_drm_backend *drm) {
+
+ if (drm->iface == &legacy_iface) {
+ drm->supports_tearing_page_flips = drmGetCap(drm->fd, DRM_CAP_ASYNC_PAGE_FLIP, &cap) == 0 && cap == 1;
++ } else {
++ drm->supports_tearing_page_flips = drmGetCap(drm->fd, DRM_CAP_ATOMIC_ASYNC_PAGE_FLIP, &cap) == 0 && cap == 1;
+ }
+
+ if (env_parse_bool("WLR_DRM_NO_MODIFIERS")) {
+@@ -770,6 +772,8 @@ bool drm_connector_commit_state(struct wlr_drm_connector *conn,
+ }
+ }
+
++ bool tearing_ok = pending.base->tearing_page_flip;
++
+ if (pending.base->committed & WLR_OUTPUT_STATE_BUFFER) {
+ if (!drm_connector_state_update_primary_fb(conn, &pending)) {
+ goto out;
+@@ -779,6 +783,7 @@ bool drm_connector_commit_state(struct wlr_drm_connector *conn,
+ if (!drm_connector_set_pending_layer_fbs(conn, pending.base)) {
+ return false;
+ }
++ tearing_ok = false;
+ }
+
+ if (pending.modeset) {
+@@ -789,6 +794,7 @@ bool drm_connector_commit_state(struct wlr_drm_connector *conn,
+ } else {
+ wlr_drm_conn_log(conn, WLR_INFO, "Turning off");
+ }
++ tearing_ok = false;
+ }
+
+ // wlr_drm_interface.crtc_commit will perform either a non-blocking
+@@ -805,7 +811,7 @@ bool drm_connector_commit_state(struct wlr_drm_connector *conn,
+ if (pending.active) {
+ flags |= DRM_MODE_PAGE_FLIP_EVENT;
+ }
+- if (pending.base->tearing_page_flip) {
++ if (tearing_ok) {
+ flags |= DRM_MODE_PAGE_FLIP_ASYNC;
+ }
+