pkgsrc-WIP-changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
wlroots: fix in wlr_allocator_autocreate
Module Name: pkgsrc-wip
Committed By: kikadf <kikadf.01%gmail.com@localhost>
Pushed By: kikadf
Date: Fri Dec 5 17:19:42 2025 +0100
Changeset: 5c18124441b6a4002fb5fd0239df4fc202f8b2b6
Modified Files:
wlroots/distinfo
wlroots/patches/patch-render_allocator_allocator.c
Log Message:
wlroots: fix in wlr_allocator_autocreate
To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=5c18124441b6a4002fb5fd0239df4fc202f8b2b6
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
diffstat:
wlroots/distinfo | 2 +-
wlroots/patches/patch-render_allocator_allocator.c | 40 ++++++++++++++++++++--
2 files changed, 39 insertions(+), 3 deletions(-)
diffs:
diff --git a/wlroots/distinfo b/wlroots/distinfo
index c7c4a03600..27afd516d2 100644
--- a/wlroots/distinfo
+++ b/wlroots/distinfo
@@ -4,7 +4,7 @@ BLAKE2s (wlroots-0.19.2.tar.gz) = aff6485d67841535c2bac5fda24cb8b0f6449ec841a344
SHA512 (wlroots-0.19.2.tar.gz) = a48e71bc7ebcd2ca3bcbc1b20034b50ed230ecdd270fa4a6362e19e24b3fb60ea2e0a9631fa1b7ebadf4fc0f433a7cd9525f57e6130f7fede0a239ba1d1aba29
Size (wlroots-0.19.2.tar.gz) = 670517 bytes
SHA1 (patch-backend_libinput_meson.build) = 7f109761790191930828f280ca74db6bc95941e1
-SHA1 (patch-render_allocator_allocator.c) = ef3c2ca73c5e0a34e48f3a9e0a818614af4e2f77
+SHA1 (patch-render_allocator_allocator.c) = ca1f468d6e253fea5ae4d739172d4e94a07a4be6
SHA1 (patch-render_drm__syncobj.c) = 70708836fe3fd7e4f55e128edbe9d3ad50f66916
SHA1 (patch-render_vulkan_vulkan.c) = adf215c6cc885909a51c534b0102c89a84f8ab27
SHA1 (patch-util_shm.c) = 4bc2f6eefbe94539d03e1ce2f1e001ae97ab4c60
diff --git a/wlroots/patches/patch-render_allocator_allocator.c b/wlroots/patches/patch-render_allocator_allocator.c
index 1ba276eb53..8a5fc62cdf 100644
--- a/wlroots/patches/patch-render_allocator_allocator.c
+++ b/wlroots/patches/patch-render_allocator_allocator.c
@@ -1,9 +1,11 @@
$NetBSD$
-# On NetBSD the stub drm_mode_create_lease_ioctl() always returns with -ENODEV,
+* On NetBSD the stub drm_mode_create_lease_ioctl() always returns with -ENODEV,
but after drmModeCreateLease() only allowed -EINVAL and -EOPNOTSUPP
+* Call reopen_drm_node() with the correct fd
+ backend(card[0-3]) vs. renderer(renderD[128-131])
---- render/allocator/allocator.c.orig 2025-12-04 16:11:21.906858096 +0000
+--- render/allocator/allocator.c.orig 2025-10-21 22:21:53.000000000 +0000
+++ render/allocator/allocator.c
@@ -37,6 +37,7 @@ void wlr_allocator_init(struct wlr_alloc
*/
@@ -21,3 +23,37 @@ $NetBSD$
wlr_log(WLR_DEBUG, "drmModeCreateLease failed, "
"falling back to plain open");
}
+@@ -99,18 +101,12 @@ struct wlr_allocator *wlr_allocator_auto
+ struct wlr_renderer *renderer) {
+ uint32_t backend_caps = backend->buffer_caps;
+ uint32_t renderer_caps = renderer->render_buffer_caps;
+-
+- // Note, drm_fd may be negative if unavailable
+- int drm_fd = wlr_backend_get_drm_fd(backend);
+- if (drm_fd < 0) {
+- drm_fd = wlr_renderer_get_drm_fd(renderer);
+- }
+-
++ int drm_fd = -1;
+ struct wlr_allocator *alloc = NULL;
+
+ uint32_t gbm_caps = WLR_BUFFER_CAP_DMABUF;
+- if ((backend_caps & gbm_caps) && (renderer_caps & gbm_caps)
+- && drm_fd >= 0) {
++ if ((backend_caps & gbm_caps) && (renderer_caps & gbm_caps) &&
++ ((drm_fd = wlr_renderer_get_drm_fd(renderer)) >= 0)) {
+ #if WLR_HAS_GBM_ALLOCATOR
+ wlr_log(WLR_DEBUG, "Trying to create gbm allocator");
+ int gbm_fd = reopen_drm_node(drm_fd, true);
+@@ -137,8 +133,9 @@ struct wlr_allocator *wlr_allocator_auto
+ }
+
+ uint32_t drm_caps = WLR_BUFFER_CAP_DMABUF | WLR_BUFFER_CAP_DATA_PTR;
+- if ((backend_caps & drm_caps) && (renderer_caps & drm_caps)
+- && drm_fd >= 0 && drmIsMaster(drm_fd)) {
++ if ((backend_caps & drm_caps) && (renderer_caps & drm_caps) &&
++ ((drm_fd = wlr_backend_get_drm_fd(backend)) >= 0) &&
++ drmIsMaster(drm_fd)) {
+ wlr_log(WLR_DEBUG, "Trying to create drm dumb allocator");
+ int dumb_fd = reopen_drm_node(drm_fd, false);
+ if (dumb_fd < 0) {
Home |
Main Index |
Thread Index |
Old Index