summaryrefslogtreecommitdiffstats
path: root/recipes-graphics/wayland/weston
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-graphics/wayland/weston')
-rw-r--r--recipes-graphics/wayland/weston/0001-Revert-protocol-no-found-wayland-scanner-with-Yocto-.patch8
-rw-r--r--recipes-graphics/wayland/weston/0001-g2d-renderer-Add-vsync-to-cloned-displays.patch102
-rw-r--r--recipes-graphics/wayland/weston/0001-libweston-backend-drm-Re-order-gbm-destruction-at-DR.patch52
-rw-r--r--recipes-graphics/wayland/weston/0001-meson.build-fix-incorrect-header.patch32
-rw-r--r--recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch199
5 files changed, 4 insertions, 389 deletions
diff --git a/recipes-graphics/wayland/weston/0001-Revert-protocol-no-found-wayland-scanner-with-Yocto-.patch b/recipes-graphics/wayland/weston/0001-Revert-protocol-no-found-wayland-scanner-with-Yocto-.patch
index dde00546..676d0338 100644
--- a/recipes-graphics/wayland/weston/0001-Revert-protocol-no-found-wayland-scanner-with-Yocto-.patch
+++ b/recipes-graphics/wayland/weston/0001-Revert-protocol-no-found-wayland-scanner-with-Yocto-.patch
@@ -1,4 +1,4 @@
1From be066d9841a9cd5e9cc5ef3c457bd1e33b2a5fae Mon Sep 17 00:00:00 2001 1From 77eba6f6b04ff21b77c41500657495b4fd12a5f6 Mon Sep 17 00:00:00 2001
2From: Max Krummenacher <max.krummenacher@toradex.com> 2From: Max Krummenacher <max.krummenacher@toradex.com>
3Date: Mon, 11 Jul 2022 19:38:19 +0000 3Date: Mon, 11 Jul 2022 19:38:19 +0000
4Subject: [PATCH] Revert "protocol: no found wayland-scanner with Yocto 4Subject: [PATCH] Revert "protocol: no found wayland-scanner with Yocto
@@ -26,7 +26,7 @@ Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
26 1 file changed, 1 insertion(+), 1 deletion(-) 26 1 file changed, 1 insertion(+), 1 deletion(-)
27 27
28diff --git a/protocol/meson.build b/protocol/meson.build 28diff --git a/protocol/meson.build b/protocol/meson.build
29index dc90ec2a..8290ad44 100644 29index bdd322ac..e50b23bb 100644
30--- a/protocol/meson.build 30--- a/protocol/meson.build
31+++ b/protocol/meson.build 31+++ b/protocol/meson.build
32@@ -1,4 +1,4 @@ 32@@ -1,4 +1,4 @@
@@ -34,7 +34,7 @@ index dc90ec2a..8290ad44 100644
34+dep_scanner = dependency('wayland-scanner', native: true) 34+dep_scanner = dependency('wayland-scanner', native: true)
35 prog_scanner = find_program(dep_scanner.get_pkgconfig_variable('wayland_scanner')) 35 prog_scanner = find_program(dep_scanner.get_pkgconfig_variable('wayland_scanner'))
36 36
37 dep_wp = dependency('wayland-protocols', version: '>= 1.18') 37 dep_wp = dependency('wayland-protocols', version: '>= 1.24')
38-- 38--
392.20.1 392.17.1
40 40
diff --git a/recipes-graphics/wayland/weston/0001-g2d-renderer-Add-vsync-to-cloned-displays.patch b/recipes-graphics/wayland/weston/0001-g2d-renderer-Add-vsync-to-cloned-displays.patch
deleted file mode 100644
index fb2d47bf..00000000
--- a/recipes-graphics/wayland/weston/0001-g2d-renderer-Add-vsync-to-cloned-displays.patch
+++ /dev/null
@@ -1,102 +0,0 @@
1From b719011b7c015e2d6f0108c9d0709b98d21d6a89 Mon Sep 17 00:00:00 2001
2From: Piotr Wojtaszczyk <piotr.wojtaszczyk@timesys.com>
3Date: Mon, 21 Mar 2022 12:37:18 +0100
4Subject: [PATCH] g2d-renderer: Add vsync to cloned displays.
5
6When using g2d clone mode allocates additional surfaces according to
7FB_MULTI_BUFFER for each cloned display. The g2d blit from the main screen
8to the cloned displays is done using inactive surface. The FBIOPAN_DISPLAY
9ioctl to the surface is done afterwards.
10
11Signed-off-by: Piotr Wojtaszczyk <piotr.wojtaszczyk@timesys.com>
12---
13 libweston/renderer-g2d/g2d-renderer.c | 33 +++++++++++++++++++++------
14 1 file changed, 26 insertions(+), 7 deletions(-)
15
16diff --git a/libweston/renderer-g2d/g2d-renderer.c b/libweston/renderer-g2d/g2d-renderer.c
17index 34a077b7..3e6395d6 100644
18--- a/libweston/renderer-g2d/g2d-renderer.c
19+++ b/libweston/renderer-g2d/g2d-renderer.c
20@@ -525,6 +525,7 @@ g2d_blit_surface(void *handle, struct g2d_surfaceEx * srcG2dSurface, struct g2d_
21 static void
22 g2d_flip_surface(struct weston_output *output)
23 {
24+ int i;
25 struct g2d_output_state *go = get_output_state(output);
26 go->fb_info.varinfo.yoffset = go->activebuffer * go->fb_info.y_resolution;
27
28@@ -532,6 +533,16 @@ g2d_flip_surface(struct weston_output *output)
29 {
30 weston_log("FBIOPAN_DISPLAY Failed\n");
31 }
32+
33+ for (i = 0; i < go->clone_display_num; i++)
34+ {
35+ go->mirror_fb_info[i].varinfo.yoffset = go->activebuffer * go->mirror_fb_info[i].y_resolution;
36+ if(ioctl(go->mirror_fb_info[i].fb_fd, FBIOPAN_DISPLAY, &(go->mirror_fb_info[i].varinfo)) < 0)
37+ {
38+ weston_log("FBIOPAN_DISPLAY clone %d Failed\n", i);
39+ }
40+ }
41+
42 go->activebuffer = (go->activebuffer + 1) % go->nNumBuffers;
43 }
44
45@@ -571,17 +582,18 @@ copy_to_framebuffer(struct weston_output *output, pixman_region32_t* output_dama
46 int i = 0;
47 for(i = 0; i < go->clone_display_num; i++)
48 {
49+ int idx = i * go->nNumBuffers + go->activebuffer;
50 g2dRECT srcRect = {0, 0, go->renderSurf[go->activebuffer].base.width, go->renderSurf[go->activebuffer].base.height};
51- g2dRECT dstrect = {0, 0, go->mirrorSurf[i].base.width, go->mirrorSurf[i].base.height};
52+ g2dRECT dstrect = {0, 0, go->mirrorSurf[idx].base.width, go->mirrorSurf[idx].base.height};
53 if(go->directBlit || go->nNumBuffers > 1)
54 {
55 g2d_blit_surface(gr->handle, &go->renderSurf[go->activebuffer],
56- &go->mirrorSurf[i], &srcRect, &dstrect);
57+ &go->mirrorSurf[idx], &srcRect, &dstrect);
58 }
59 else
60 {
61 g2d_blit_surface(gr->handle, &go->offscreenSurface,
62- &go->mirrorSurf[i], &srcRect, &dstrect);
63+ &go->mirrorSurf[idx], &srcRect, &dstrect);
64 }
65 }
66 }
67@@ -2113,6 +2125,7 @@ g2d_fbdev_renderer_output_create(struct weston_output *output,
68 int clone_display_num = 0;
69 int count = 0;
70 int k=0, dispCount = 0;
71+ int offset = 0;
72 char displays[5][32];
73 weston_log("g2d_renderer_output_create device=%s\n", device);
74 count = strlen(device);
75@@ -2166,7 +2179,7 @@ g2d_fbdev_renderer_output_create(struct weston_output *output,
76
77 if(go->clone_display_num)
78 {
79- go->mirrorSurf = zalloc(sizeof(struct g2d_surfaceEx) * clone_display_num);
80+ go->mirrorSurf = zalloc(sizeof(struct g2d_surfaceEx) * clone_display_num * go->nNumBuffers);
81 go->mirror_fb_info = zalloc(sizeof(struct fb_screeninfo) * clone_display_num);
82 if(go->mirrorSurf == NULL || go->mirror_fb_info == NULL)
83 return -1;
84@@ -2178,9 +2191,15 @@ g2d_fbdev_renderer_output_create(struct weston_output *output,
85 weston_log("Open frame buffer failed.\n");
86 return -1;
87 }
88- get_G2dSurface_from_screeninfo(&go->mirror_fb_info[i], &go->mirrorSurf[i]);
89- go->mirrorSurf[i].base.planes[0] = go->mirror_fb_info[i].physical;
90- g2d_clear(gr->handle, &go->mirrorSurf[i].base);
91+
92+ offset = go->mirror_fb_info[i].stride_bytes * go->mirror_fb_info[i].y_resolution;
93+ for(k = 0; k < go->nNumBuffers; k++)
94+ {
95+ int idx = i * go->nNumBuffers + k;
96+ get_G2dSurface_from_screeninfo(&go->mirror_fb_info[i], &go->mirrorSurf[idx]);
97+ go->mirrorSurf[idx].base.planes[0] = go->mirror_fb_info[i].physical + (offset * k);
98+ g2d_clear(gr->handle, &go->mirrorSurf[idx].base);
99+ }
100 }
101 }
102 g2d_finish(gr->handle);
diff --git a/recipes-graphics/wayland/weston/0001-libweston-backend-drm-Re-order-gbm-destruction-at-DR.patch b/recipes-graphics/wayland/weston/0001-libweston-backend-drm-Re-order-gbm-destruction-at-DR.patch
deleted file mode 100644
index db640055..00000000
--- a/recipes-graphics/wayland/weston/0001-libweston-backend-drm-Re-order-gbm-destruction-at-DR.patch
+++ /dev/null
@@ -1,52 +0,0 @@
1From 4be82f75a47bd456452ab713d7d57a75d844f42a Mon Sep 17 00:00:00 2001
2From: Marius Vlad <marius.vlad@collabora.com>
3Date: Thu, 1 Apr 2021 00:12:00 +0300
4Subject: [PATCH] libweston/backend-drm: Re-order gbm destruction at
5 DRM-backend tear down
6
7Tearing down the drm-backend when there are no input devices, would call
8for the gbm device destruction before compositor shutdown. The latter
9would call into the renderer detroy function and assume that the
10EGLDisplay, which was created using the before-mentioned gbm device, is
11still available. This patch re-orders the gbm destruction after the
12compositor shutdown when no one would make use of it.
13
14Fixes: #314
15
16Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
17Suggested-by: Daniel Stone <daniel.stone@collabora.com>
18
19Upstream-Status: Backport [https://gitlab.freedesktop.org/wayland/weston/-/commit/d171c7b3ba346c4d0bd6494f45ebf0be3c3cc5fb]
20---
21 libweston/backend-drm/drm.c | 8 ++++----
22 1 file changed, 4 insertions(+), 4 deletions(-)
23
24diff --git a/libweston/backend-drm/drm.c b/libweston/backend-drm/drm.c
25index 9d3b5dcc..67834d3e 100644
26--- a/libweston/backend-drm/drm.c
27+++ b/libweston/backend-drm/drm.c
28@@ -3402,10 +3402,6 @@ err_drm_source:
29 wl_event_source_remove(b->drm_source);
30 err_udev_input:
31 udev_input_destroy(&b->input);
32-#ifdef BUILD_DRM_GBM
33- if (b->gbm)
34- gbm_device_destroy(b->gbm);
35-#endif
36 destroy_sprites(b);
37 err_udev_dev:
38 udev_device_unref(drm_device);
39@@ -3415,6 +3411,10 @@ err_launcher:
40 weston_launcher_destroy(compositor->launcher);
41 err_compositor:
42 weston_compositor_shutdown(compositor);
43+#ifdef BUILD_DRM_GBM
44+ if (b->gbm)
45+ gbm_device_destroy(b->gbm);
46+#endif
47 free(b);
48 return NULL;
49 }
50--
512.17.1
52
diff --git a/recipes-graphics/wayland/weston/0001-meson.build-fix-incorrect-header.patch b/recipes-graphics/wayland/weston/0001-meson.build-fix-incorrect-header.patch
deleted file mode 100644
index 06e0f7ba..00000000
--- a/recipes-graphics/wayland/weston/0001-meson.build-fix-incorrect-header.patch
+++ /dev/null
@@ -1,32 +0,0 @@
1From a2ba4714a6872e547621d29d9ddcb0f374b88cf6 Mon Sep 17 00:00:00 2001
2From: Chen Qi <Qi.Chen@windriver.com>
3Date: Tue, 20 Apr 2021 20:42:18 -0700
4Subject: [PATCH] meson.build: fix incorrect header
5
6The wayland.c actually include 'xdg-shell-client-protocol.h' instead of
7the server one, so fix it. Otherwise, it's possible to get build failure
8due to race condition.
9
10Upstream-Status: Pending
11
12Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
13---
14 libweston/backend-wayland/meson.build | 2 +-
15 1 file changed, 1 insertion(+), 1 deletion(-)
16
17diff --git a/libweston/backend-wayland/meson.build b/libweston/backend-wayland/meson.build
18index 7e82513..29270b5 100644
19--- a/libweston/backend-wayland/meson.build
20+++ b/libweston/backend-wayland/meson.build
21@@ -10,7 +10,7 @@ srcs_wlwl = [
22 fullscreen_shell_unstable_v1_protocol_c,
23 presentation_time_protocol_c,
24 presentation_time_server_protocol_h,
25- xdg_shell_server_protocol_h,
26+ xdg_shell_client_protocol_h,
27 xdg_shell_protocol_c,
28 ]
29
30--
312.30.2
32
diff --git a/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch b/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch
deleted file mode 100644
index f6ebfd8f..00000000
--- a/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch
+++ /dev/null
@@ -1,199 +0,0 @@
1From a1548c742bf2dedbb47282d8a00407b60bbab669 Mon Sep 17 00:00:00 2001
2From: Tom Hochstein <tom.hochstein@nxp.com>
3Date: Wed, 22 Feb 2017 15:53:30 +0200
4Subject: [PATCH] weston-launch: Provide a default version that doesn't require
5
6 PAM
7
8weston-launch requires PAM for starting weston as a non-root user.
9
10Since starting weston as root is a valid use case by itself, if
11PAM is not available, provide a default version of weston-launch
12without non-root-user support.
13
14Upstream-Status: Denied [https://gitlab.freedesktop.org/wayland/weston/-/merge_requests/725]
15
16Signed-off-by: Tom Hochstein <tom.hochstein@nxp.com>
17Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
18Signed-off-by: Denys Dmytriyenko <denys@ti.com>
19Signed-off-by: Ming Liu <ming.liu@toradex.com>
20
21---
22 libweston/meson.build | 16 ++++++++++++----
23 libweston/weston-launch.c | 21 +++++++++++++++++++++
24 meson_options.txt | 7 +++++++
25 3 files changed, 40 insertions(+), 4 deletions(-)
26
27diff --git a/libweston/meson.build b/libweston/meson.build
28index 08d23ec..cb9fd3f 100644
29--- a/libweston/meson.build
30+++ b/libweston/meson.build
31@@ -216,16 +216,24 @@ dep_vertex_clipping = declare_dependency(
32 )
33
34 if get_option('weston-launch')
35- dep_pam = cc.find_library('pam')
36+ deps_weston_launch = [systemd_dep, dep_libdrm]
37
38- if not cc.has_function('pam_open_session', dependencies: dep_pam)
39- error('pam_open_session not found for weston-launch')
40+ if get_option('pam')
41+ dep_pam = cc.find_library('pam')
42+ if not cc.has_function('pam_open_session', dependencies: dep_pam)
43+ error('pam_open_session not found for weston-launch')
44+ endif
45+
46+ if dep_pam.found()
47+ deps_weston_launch += dep_pam
48+ config_h.set('HAVE_PAM', '1')
49+ endif
50 endif
51
52 executable(
53 'weston-launch',
54 'weston-launch.c',
55- dependencies: [dep_pam, systemd_dep, dep_libdrm],
56+ dependencies: deps_weston_launch,
57 include_directories: common_inc,
58 install: true
59 )
60diff --git a/libweston/weston-launch.c b/libweston/weston-launch.c
61index 521cb2c..2d42d33 100644
62--- a/libweston/weston-launch.c
63+++ b/libweston/weston-launch.c
64@@ -51,7 +51,9 @@
65
66 #include <pwd.h>
67 #include <grp.h>
68+#ifdef HAVE_PAM
69 #include <security/pam_appl.h>
70+#endif
71
72 #ifdef HAVE_SYSTEMD_LOGIN
73 #include <systemd/sd-login.h>
74@@ -100,8 +102,10 @@ drmSetMaster(int drm_fd)
75 #endif
76
77 struct weston_launch {
78+#ifdef HAVE_PAM
79 struct pam_conv pc;
80 pam_handle_t *ph;
81+#endif
82 int tty;
83 int ttynr;
84 int sock[2];
85@@ -192,6 +196,7 @@ weston_launch_allowed(struct weston_launch *wl)
86 return false;
87 }
88
89+#ifdef HAVE_PAM
90 static int
91 pam_conversation_fn(int msg_count,
92 const struct pam_message **messages,
93@@ -232,6 +237,7 @@ setup_pam(struct weston_launch *wl)
94
95 return 0;
96 }
97+#endif
98
99 static int
100 setup_launcher_socket(struct weston_launch *wl)
101@@ -466,6 +472,7 @@ quit(struct weston_launch *wl, int status)
102 close(wl->signalfd);
103 close(wl->sock[0]);
104
105+#ifdef HAVE_PAM
106 if (wl->new_user) {
107 err = pam_close_session(wl->ph, 0);
108 if (err)
109@@ -473,6 +480,7 @@ quit(struct weston_launch *wl, int status)
110 err, pam_strerror(wl->ph, err));
111 pam_end(wl->ph, err);
112 }
113+#endif
114
115 /*
116 * Get a fresh handle to the tty as the previous one is in
117@@ -710,6 +718,7 @@ setup_session(struct weston_launch *wl, char **child_argv)
118 setenv("HOME", wl->pw->pw_dir, 1);
119 setenv("SHELL", wl->pw->pw_shell, 1);
120
121+#ifdef HAVE_PAM
122 env = pam_getenvlist(wl->ph);
123 if (env) {
124 for (i = 0; env[i]; ++i) {
125@@ -718,6 +727,7 @@ setup_session(struct weston_launch *wl, char **child_argv)
126 }
127 free(env);
128 }
129+#endif
130
131 /*
132 * We open a new session, so it makes sense
133@@ -789,8 +799,10 @@ static void
134 help(const char *name)
135 {
136 fprintf(stderr, "Usage: %s [args...] [-- [weston args..]]\n", name);
137+#ifdef HAVE_PAM
138 fprintf(stderr, " -u, --user Start session as specified username,\n"
139 " e.g. -u joe, requires root.\n");
140+#endif
141 fprintf(stderr, " -t, --tty Start session on alternative tty,\n"
142 " e.g. -t /dev/tty4, requires -u option.\n");
143 fprintf(stderr, " -v, --verbose Be verbose\n");
144@@ -804,7 +816,9 @@ main(int argc, char *argv[])
145 int i, c;
146 char *tty = NULL;
147 struct option opts[] = {
148+#ifdef HAVE_PAM
149 { "user", required_argument, NULL, 'u' },
150+#endif
151 { "tty", required_argument, NULL, 't' },
152 { "verbose", no_argument, NULL, 'v' },
153 { "help", no_argument, NULL, 'h' },
154@@ -816,11 +830,16 @@ main(int argc, char *argv[])
155 while ((c = getopt_long(argc, argv, "u:t:vh", opts, &i)) != -1) {
156 switch (c) {
157 case 'u':
158+#ifdef HAVE_PAM
159 wl.new_user = optarg;
160 if (getuid() != 0) {
161 fprintf(stderr, "weston: Permission denied. -u allowed for root only\n");
162 exit(EXIT_FAILURE);
163 }
164+#else
165+ fprintf(stderr, "weston: -u is unsupported in this weston-launch build\n");
166+ exit(EXIT_FAILURE);
167+#endif
168 break;
169 case 't':
170 tty = optarg;
171@@ -872,8 +891,10 @@ main(int argc, char *argv[])
172 if (setup_tty(&wl, tty) < 0)
173 exit(EXIT_FAILURE);
174
175+#ifdef HAVE_PAM
176 if (wl.new_user && setup_pam(&wl) < 0)
177 exit(EXIT_FAILURE);
178+#endif
179
180 if (setup_launcher_socket(&wl) < 0)
181 exit(EXIT_FAILURE);
182diff --git a/meson_options.txt b/meson_options.txt
183index 239bd2d..99e4ec3 100644
184--- a/meson_options.txt
185+++ b/meson_options.txt
186@@ -73,6 +73,13 @@ option(
187 )
188
189 option(
190+ 'pam',
191+ type: 'boolean',
192+ value: true,
193+ description: 'Define if PAM is available'
194+)
195+
196+option(
197 'xwayland',
198 type: 'boolean',
199 value: true,