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