diff options
author | Christopher Snowhill | 2024-04-07 23:01:29 -0700 |
---|---|---|
committer | Christopher Snowhill | 2024-04-07 23:02:02 -0700 |
commit | 3701490d604a0dd259e4cd03567af092a90e5b62 (patch) | |
tree | 34bc18c30d34b92758762e9fb08c2913b0554a76 | |
parent | 16d6327a848638a75135880dbb370bd0a3d291e3 (diff) | |
download | aur-3701490d604a0dd259e4cd03567af092a90e5b62.tar.gz |
Add atomic modesetting tearing support patch
-rw-r--r-- | .SRCINFO | 4 | ||||
-rw-r--r-- | PKGBUILD | 9 | ||||
-rw-r--r-- | wlroots-atomic-tearing.patch | 47 |
3 files changed, 56 insertions, 4 deletions
@@ -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 @@ -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; + } + |