summaryrefslogtreecommitdiffstats
path: root/meta/recipes-graphics/mesa
diff options
context:
space:
mode:
authorMarkus Volk <f_l_k@t-online.de>2022-09-21 18:39:21 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2022-09-22 21:39:21 +0100
commitdfdf55a43973e5b7329e50bd09a93c80434ce636 (patch)
tree176464514c68c5c9fe0f043488b92bb08b038a4b /meta/recipes-graphics/mesa
parentf18a7dee06bdca3230829d1bb8362ab065090dd8 (diff)
downloadpoky-dfdf55a43973e5b7329e50bd09a93c80434ce636.tar.gz
mesa: upgrade 22.1.6 -> 22.2.0
- add PACKAGECONFIG to build vulkan beta drivers - add PACKAGECONFIG for zink and build it along with vulkan - remove TLS-ELF patch and the associated PACKAGECONFIG. It looks like its unneeded - remove swrast_kms backport patch - remove the patch that reverts the deprecation of drm_handle as it is not applicable. Still needed ? - fix patch fuzz warnings License file has been changed, but no change of licenses https://gitlab.freedesktop.org/mesa/mesa/-/commit/e6392fcf3d8b8dd7e3a8427755d8be2f2332366a (From OE-Core rev: a85d0566c0e09e7ccd394c6465305ab97ce5973a) Signed-off-by: Markus Volk <f_l_k@t-online.de> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-graphics/mesa')
-rw-r--r--meta/recipes-graphics/mesa/files/0001-Revert-egl-wayland-deprecate-drm_handle_format-and-d.patch158
-rw-r--r--meta/recipes-graphics/mesa/files/0001-futex.h-Define-__NR_futex-if-it-does-not-exist.patch10
-rw-r--r--meta/recipes-graphics/mesa/files/0001-meson-misdetects-64bit-atomics-on-mips-clang.patch2
-rw-r--r--meta/recipes-graphics/mesa/files/0001-meson.build-check-for-all-linux-host_os-combinations.patch10
-rw-r--r--meta/recipes-graphics/mesa/files/0001-nir-nir_opt_move-fix-ALWAYS_INLINE-compiler-error.patch20
-rw-r--r--meta/recipes-graphics/mesa/files/0001-swrast_kms-use-swkmsDRI2Extension-instead-of-driDRI2.patch113
-rw-r--r--meta/recipes-graphics/mesa/files/0001-util-format-Check-for-NEON-before-using-it.patch6
-rw-r--r--meta/recipes-graphics/mesa/files/0002-meson.build-make-TLS-ELF-optional.patch61
-rw-r--r--meta/recipes-graphics/mesa/mesa-gl_22.2.0.bb (renamed from meta/recipes-graphics/mesa/mesa-gl_22.1.6.bb)0
-rw-r--r--meta/recipes-graphics/mesa/mesa.inc16
-rw-r--r--meta/recipes-graphics/mesa/mesa_22.2.0.bb (renamed from meta/recipes-graphics/mesa/mesa_22.1.6.bb)0
11 files changed, 33 insertions, 363 deletions
diff --git a/meta/recipes-graphics/mesa/files/0001-Revert-egl-wayland-deprecate-drm_handle_format-and-d.patch b/meta/recipes-graphics/mesa/files/0001-Revert-egl-wayland-deprecate-drm_handle_format-and-d.patch
deleted file mode 100644
index dac2de4e62..0000000000
--- a/meta/recipes-graphics/mesa/files/0001-Revert-egl-wayland-deprecate-drm_handle_format-and-d.patch
+++ /dev/null
@@ -1,158 +0,0 @@
1From 7796c2c56c960ac55e49246f0349ac52539ada55 Mon Sep 17 00:00:00 2001
2From: Leandro Ribeiro <leandro.ribeiro@collabora.com>
3Date: Sun, 10 Apr 2022 22:54:36 -0300
4Subject: [PATCH] Revert "egl/wayland: deprecate drm_handle_format() and
5 drm_handle_capabilities()"
6
7Commit af1ee8e010441f8f2ed8c77065b159652a4ac9fe dropped support to
8wl_drm, as we thought that most compositors from active projects were
9already supporting zwp_linux_dmabuf_v1.
10
11But that's not true, so revert this commit in order to give these
12projects a longer transition period.
13
14Note that we didn't add back the support to GEM name API, and that was
15on purpose.
16
17Signed-off-by: Leandro Ribeiro <leandro.ribeiro@collabora.com>
18Reviewed-by: Simon Ser <contact@emersion.fr>
19Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15822>
20
21Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
22Upstream-Status: Backport [https://gitlab.freedesktop.org/mesa/mesa/-/commit/c60fea8c228ae3f32e20d6b65c473d9f04871d20]
23---
24 src/egl/drivers/dri2/egl_dri2.h | 1 +
25 src/egl/drivers/dri2/platform_wayland.c | 59 +++++++++++++++++++------
26 2 files changed, 47 insertions(+), 13 deletions(-)
27
28diff --git a/src/egl/drivers/dri2/egl_dri2.h b/src/egl/drivers/dri2/egl_dri2.h
29index c466ff83c53..eecb32a53fd 100644
30--- a/src/egl/drivers/dri2/egl_dri2.h
31+++ b/src/egl/drivers/dri2/egl_dri2.h
32@@ -283,6 +283,7 @@ struct dri2_egl_display
33 struct zwp_linux_dmabuf_feedback_v1 *wl_dmabuf_feedback;
34 struct dmabuf_feedback_format_table format_table;
35 bool authenticated;
36+ uint32_t capabilities;
37 char *device_name;
38 #endif
39
40diff --git a/src/egl/drivers/dri2/platform_wayland.c b/src/egl/drivers/dri2/platform_wayland.c
41index 5ff83cce08a..843434376a7 100644
42--- a/src/egl/drivers/dri2/platform_wayland.c
43+++ b/src/egl/drivers/dri2/platform_wayland.c
44@@ -1343,7 +1343,7 @@ create_wl_buffer(struct dri2_egl_display *dri2_dpy,
45 struct dri2_egl_surface *dri2_surf,
46 __DRIimage *image)
47 {
48- struct wl_buffer *ret;
49+ struct wl_buffer *ret = NULL;
50 EGLBoolean query;
51 int width, height, fourcc, num_planes;
52 uint64_t modifier = DRM_FORMAT_MOD_INVALID;
53@@ -1447,11 +1447,28 @@ create_wl_buffer(struct dri2_egl_display *dri2_dpy,
54 ret = zwp_linux_buffer_params_v1_create_immed(params, width, height,
55 fourcc, 0);
56 zwp_linux_buffer_params_v1_destroy(params);
57+ } else {
58+ struct wl_drm *wl_drm =
59+ dri2_surf ? dri2_surf->wl_drm_wrapper : dri2_dpy->wl_drm;
60+ int fd = -1, stride;
61+
62+ if (num_planes > 1)
63+ return NULL;
64+
65+ query = dri2_dpy->image->queryImage(image, __DRI_IMAGE_ATTRIB_FD, &fd);
66+ query &= dri2_dpy->image->queryImage(image, __DRI_IMAGE_ATTRIB_STRIDE, &stride);
67+ if (!query) {
68+ if (fd >= 0)
69+ close(fd);
70+ return NULL;
71+ }
72
73- return ret;
74+ ret = wl_drm_create_prime_buffer(wl_drm, fd, width, height, fourcc, 0,
75+ stride, 0, 0, 0, 0);
76+ close(fd);
77 }
78
79- return NULL;
80+ return ret;
81 }
82
83 static EGLBoolean
84@@ -1698,16 +1715,21 @@ drm_handle_device(void *data, struct wl_drm *drm, const char *device)
85 static void
86 drm_handle_format(void *data, struct wl_drm *drm, uint32_t format)
87 {
88- /* deprecated, as compositors already support the dma-buf protocol extension
89- * and so we can rely on dmabuf_handle_modifier() to receive formats and
90- * modifiers */
91+ struct dri2_egl_display *dri2_dpy = data;
92+ int visual_idx = dri2_wl_visual_idx_from_fourcc(format);
93+
94+ if (visual_idx == -1)
95+ return;
96+
97+ BITSET_SET(dri2_dpy->formats.formats_bitmap, visual_idx);
98 }
99
100 static void
101 drm_handle_capabilities(void *data, struct wl_drm *drm, uint32_t value)
102 {
103- /* deprecated, as compositors already support the dma-buf protocol extension
104- * and so we can rely on it to create wl_buffer's */
105+ struct dri2_egl_display *dri2_dpy = data;
106+
107+ dri2_dpy->capabilities = value;
108 }
109
110 static void
111@@ -2075,13 +2097,12 @@ dri2_initialize_wayland_drm(_EGLDisplay *disp)
112 wl_registry_add_listener(dri2_dpy->wl_registry,
113 &registry_listener_drm, dri2_dpy);
114
115- /* The compositor must expose the dma-buf interface. */
116- if (roundtrip(dri2_dpy) < 0 || dri2_dpy->wl_dmabuf == NULL)
117+ if (roundtrip(dri2_dpy) < 0)
118 goto cleanup;
119
120 /* Get default dma-buf feedback */
121- if (zwp_linux_dmabuf_v1_get_version(dri2_dpy->wl_dmabuf) >=
122- ZWP_LINUX_DMABUF_V1_GET_DEFAULT_FEEDBACK_SINCE_VERSION) {
123+ if (dri2_dpy->wl_dmabuf && zwp_linux_dmabuf_v1_get_version(dri2_dpy->wl_dmabuf) >=
124+ ZWP_LINUX_DMABUF_V1_GET_DEFAULT_FEEDBACK_SINCE_VERSION) {
125 dmabuf_feedback_format_table_init(&dri2_dpy->format_table);
126 dri2_dpy->wl_dmabuf_feedback =
127 zwp_linux_dmabuf_v1_get_default_feedback(dri2_dpy->wl_dmabuf);
128@@ -2089,7 +2110,6 @@ dri2_initialize_wayland_drm(_EGLDisplay *disp)
129 &dmabuf_feedback_listener, dri2_dpy);
130 }
131
132- /* Receive events from the interfaces */
133 if (roundtrip(dri2_dpy) < 0)
134 goto cleanup;
135
136@@ -2176,6 +2196,19 @@ dri2_initialize_wayland_drm(_EGLDisplay *disp)
137
138 dri2_wl_setup_swap_interval(disp);
139
140+ if (dri2_dpy->wl_drm) {
141+ /* To use Prime, we must have _DRI_IMAGE v7 at least. createImageFromFds
142+ * support indicates that Prime export/import is supported by the driver.
143+ * We deprecated the support to GEM names API, so we bail out if the
144+ * driver does not suport Prime. */
145+ if (!(dri2_dpy->capabilities & WL_DRM_CAPABILITY_PRIME) ||
146+ (dri2_dpy->image->base.version < 7) ||
147+ (dri2_dpy->image->createImageFromFds == NULL)) {
148+ _eglLog(_EGL_WARNING, "wayland-egl: display does not support prime");
149+ goto cleanup;
150+ }
151+ }
152+
153 if (dri2_dpy->is_different_gpu &&
154 (dri2_dpy->image->base.version < 9 ||
155 dri2_dpy->image->blitImage == NULL)) {
156--
1572.35.1
158
diff --git a/meta/recipes-graphics/mesa/files/0001-futex.h-Define-__NR_futex-if-it-does-not-exist.patch b/meta/recipes-graphics/mesa/files/0001-futex.h-Define-__NR_futex-if-it-does-not-exist.patch
index 3b0bfa323b..e7d92197be 100644
--- a/meta/recipes-graphics/mesa/files/0001-futex.h-Define-__NR_futex-if-it-does-not-exist.patch
+++ b/meta/recipes-graphics/mesa/files/0001-futex.h-Define-__NR_futex-if-it-does-not-exist.patch
@@ -1,4 +1,4 @@
1From 253b042d2bf10e9abfa9cc508e0782aefd834145 Mon Sep 17 00:00:00 2001 1From 859bfc342d1db9b61c43f30d9aa27cea35ca7599 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com> 2From: Khem Raj <raj.khem@gmail.com>
3Date: Fri, 16 Oct 2020 11:03:47 -0700 3Date: Fri, 16 Oct 2020 11:03:47 -0700
4Subject: [PATCH] futex.h: Define __NR_futex if it does not exist 4Subject: [PATCH] futex.h: Define __NR_futex if it does not exist
@@ -18,12 +18,12 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
18 1 file changed, 4 insertions(+) 18 1 file changed, 4 insertions(+)
19 19
20diff --git a/src/util/futex.h b/src/util/futex.h 20diff --git a/src/util/futex.h b/src/util/futex.h
21index 43097f4..941b0ec 100644 21index 2a2a00c..92fc123 100644
22--- a/src/util/futex.h 22--- a/src/util/futex.h
23+++ b/src/util/futex.h 23+++ b/src/util/futex.h
24@@ -34,6 +34,10 @@ 24@@ -38,6 +38,10 @@
25 #include <sys/syscall.h> 25 #define SYS_futex SYS_futex_time64
26 #include <sys/time.h> 26 #endif
27 27
28+#if !defined(SYS_futex) && defined(SYS_futex_time64) 28+#if !defined(SYS_futex) && defined(SYS_futex_time64)
29+# define SYS_futex SYS_futex_time64 29+# define SYS_futex SYS_futex_time64
diff --git a/meta/recipes-graphics/mesa/files/0001-meson-misdetects-64bit-atomics-on-mips-clang.patch b/meta/recipes-graphics/mesa/files/0001-meson-misdetects-64bit-atomics-on-mips-clang.patch
index b08e4d86c2..9cd9bee2d2 100644
--- a/meta/recipes-graphics/mesa/files/0001-meson-misdetects-64bit-atomics-on-mips-clang.patch
+++ b/meta/recipes-graphics/mesa/files/0001-meson-misdetects-64bit-atomics-on-mips-clang.patch
@@ -1,4 +1,4 @@
1From d34bdbd80e5a1f309d2ba280cdc66ff0ee0e5c43 Mon Sep 17 00:00:00 2001 1From 3ef37c63f03ad6f2af407de350486fdd25e9132a Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com> 2From: Khem Raj <raj.khem@gmail.com>
3Date: Mon, 13 Jan 2020 15:23:47 -0800 3Date: Mon, 13 Jan 2020 15:23:47 -0800
4Subject: [PATCH] meson misdetects 64bit atomics on mips/clang 4Subject: [PATCH] meson misdetects 64bit atomics on mips/clang
diff --git a/meta/recipes-graphics/mesa/files/0001-meson.build-check-for-all-linux-host_os-combinations.patch b/meta/recipes-graphics/mesa/files/0001-meson.build-check-for-all-linux-host_os-combinations.patch
index aea23d0ec2..ec263ce479 100644
--- a/meta/recipes-graphics/mesa/files/0001-meson.build-check-for-all-linux-host_os-combinations.patch
+++ b/meta/recipes-graphics/mesa/files/0001-meson.build-check-for-all-linux-host_os-combinations.patch
@@ -1,4 +1,4 @@
1From f9c597a2c517eb85c23cbeeb2e95c55794c74cda Mon Sep 17 00:00:00 2001 1From d092a9000da62dfccca5b58fca56b94eb9989c48 Mon Sep 17 00:00:00 2001
2From: Alistair Francis <alistair@alistair23.me> 2From: Alistair Francis <alistair@alistair23.me>
3Date: Thu, 14 Nov 2019 13:04:49 -0800 3Date: Thu, 14 Nov 2019 13:04:49 -0800
4Subject: [PATCH] meson.build: check for all linux host_os combinations 4Subject: [PATCH] meson.build: check for all linux host_os combinations
@@ -20,10 +20,10 @@ Signed-off-by: Alistair Francis <alistair@alistair23.me>
20 1 file changed, 2 insertions(+), 2 deletions(-) 20 1 file changed, 2 insertions(+), 2 deletions(-)
21 21
22diff --git a/meson.build b/meson.build 22diff --git a/meson.build b/meson.build
23index bca6b1f..70d06c0 100644 23index 250b528..b5c98f8 100644
24--- a/meson.build 24--- a/meson.build
25+++ b/meson.build 25+++ b/meson.build
26@@ -172,7 +172,7 @@ with_any_opengl = with_opengl or with_gles1 or with_gles2 26@@ -173,7 +173,7 @@ with_any_opengl = with_opengl or with_gles1 or with_gles2
27 # Only build shared_glapi if at least one OpenGL API is enabled 27 # Only build shared_glapi if at least one OpenGL API is enabled
28 with_shared_glapi = with_shared_glapi and with_any_opengl 28 with_shared_glapi = with_shared_glapi and with_any_opengl
29 29
@@ -32,11 +32,11 @@ index bca6b1f..70d06c0 100644
32 32
33 dri_drivers = get_option('dri-drivers') 33 dri_drivers = get_option('dri-drivers')
34 if dri_drivers.length() != 0 34 if dri_drivers.length() != 0
35@@ -1074,7 +1074,7 @@ if cc.compiles('__uint128_t foo(void) { return 0; }', 35@@ -1091,7 +1091,7 @@ if cc.has_function('reallocarray')
36 endif 36 endif
37 37
38 # TODO: this is very incomplete 38 # TODO: this is very incomplete
39-if ['linux', 'cygwin', 'gnu', 'freebsd', 'gnu/kfreebsd', 'haiku'].contains(host_machine.system()) 39-if ['linux', 'cygwin', 'gnu', 'freebsd', 'gnu/kfreebsd', 'haiku', 'android'].contains(host_machine.system())
40+if ['linux', 'cygwin', 'gnu', 'freebsd', 'gnu/kfreebsd', 'haiku'].contains(host_machine.system()) or host_machine.system().startswith('linux') 40+if ['linux', 'cygwin', 'gnu', 'freebsd', 'gnu/kfreebsd', 'haiku'].contains(host_machine.system()) or host_machine.system().startswith('linux')
41 pre_args += '-D_GNU_SOURCE' 41 pre_args += '-D_GNU_SOURCE'
42 elif host_machine.system() == 'sunos' 42 elif host_machine.system() == 'sunos'
diff --git a/meta/recipes-graphics/mesa/files/0001-nir-nir_opt_move-fix-ALWAYS_INLINE-compiler-error.patch b/meta/recipes-graphics/mesa/files/0001-nir-nir_opt_move-fix-ALWAYS_INLINE-compiler-error.patch
index 48fc1e37ff..7989843eb4 100644
--- a/meta/recipes-graphics/mesa/files/0001-nir-nir_opt_move-fix-ALWAYS_INLINE-compiler-error.patch
+++ b/meta/recipes-graphics/mesa/files/0001-nir-nir_opt_move-fix-ALWAYS_INLINE-compiler-error.patch
@@ -1,3 +1,11 @@
1From da6e47f1717f34c73de388c56ffaf4861a07fdc5 Mon Sep 17 00:00:00 2001
2From: t bettler <thomas.bettler@gmail.com>
3Date: Sat, 9 Jul 2022 09:28:51 +0000
4Subject: [PATCH] nir/nir_opt_move: fix ALWAYS_INLINE compiler error
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
1Backport merge request to fix mesa compile error when debug build 9Backport merge request to fix mesa compile error when debug build
2enabled. 10enabled.
3 11
@@ -5,10 +13,6 @@ Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/mesa/-/merge_req
5 13
6Signed-off-by: Kai Kang <kai.kang@windriver.com> 14Signed-off-by: Kai Kang <kai.kang@windriver.com>
7 15
8From c69c6e7a35205557de73734ad4a1f411c8f99926 Mon Sep 17 00:00:00 2001
9From: t bettler <thomas.bettler@gmail.com>
10Date: Sat, 9 Jul 2022 09:28:51 +0000
11Subject: [PATCH] nir/nir_opt_move: fix ALWAYS_INLINE compiler error
12MIME-Version: 1.0 16MIME-Version: 1.0
13Content-Type: text/plain; charset=UTF-8 17Content-Type: text/plain; charset=UTF-8
14Content-Transfer-Encoding: 8bit 18Content-Transfer-Encoding: 8bit
@@ -17,13 +21,14 @@ fix call to ‘always_inline’ ‘src_is_ssa’
17 21
18Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6825 22Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6825
19Fixes: f1d20ec67c3f186886b97de94f74484650f8fda1 ("nir/nir_opt_move: handle non-SSA defs ") 23Fixes: f1d20ec67c3f186886b97de94f74484650f8fda1 ("nir/nir_opt_move: handle non-SSA defs ")
24
20--- 25---
21 src/compiler/nir/nir_inline_helpers.h | 10 ++++++++-- 26 src/compiler/nir/nir_inline_helpers.h | 10 ++++++++--
22 src/compiler/nir/nir_opt_move.c | 2 +- 27 src/compiler/nir/nir_opt_move.c | 2 +-
23 2 files changed, 9 insertions(+), 3 deletions(-) 28 2 files changed, 9 insertions(+), 3 deletions(-)
24 29
25diff --git a/src/compiler/nir/nir_inline_helpers.h b/src/compiler/nir/nir_inline_helpers.h 30diff --git a/src/compiler/nir/nir_inline_helpers.h b/src/compiler/nir/nir_inline_helpers.h
26index 125dd8a537c..ec33f0509f7 100644 31index 125dd8a..ec33f05 100644
27--- a/src/compiler/nir/nir_inline_helpers.h 32--- a/src/compiler/nir/nir_inline_helpers.h
28+++ b/src/compiler/nir/nir_inline_helpers.h 33+++ b/src/compiler/nir/nir_inline_helpers.h
29@@ -73,8 +73,8 @@ nir_foreach_dest(nir_instr *instr, nir_foreach_dest_cb cb, void *state) 34@@ -73,8 +73,8 @@ nir_foreach_dest(nir_instr *instr, nir_foreach_dest_cb cb, void *state)
@@ -48,7 +53,7 @@ index 125dd8a537c..ec33f0509f7 100644
48+ return _nir_foreach_src(instr, cb, state); 53+ return _nir_foreach_src(instr, cb, state);
49+} 54+}
50diff --git a/src/compiler/nir/nir_opt_move.c b/src/compiler/nir/nir_opt_move.c 55diff --git a/src/compiler/nir/nir_opt_move.c b/src/compiler/nir/nir_opt_move.c
51index 81bcde5c436..051c3cc6295 100644 56index 81bcde5..051c3cc 100644
52--- a/src/compiler/nir/nir_opt_move.c 57--- a/src/compiler/nir/nir_opt_move.c
53+++ b/src/compiler/nir/nir_opt_move.c 58+++ b/src/compiler/nir/nir_opt_move.c
54@@ -60,7 +60,7 @@ src_is_ssa(nir_src *src, void *state) 59@@ -60,7 +60,7 @@ src_is_ssa(nir_src *src, void *state)
@@ -60,6 +65,3 @@ index 81bcde5c436..051c3cc6295 100644
60 } 65 }
61 66
62 static bool 67 static bool
63--
642.34.1
65
diff --git a/meta/recipes-graphics/mesa/files/0001-swrast_kms-use-swkmsDRI2Extension-instead-of-driDRI2.patch b/meta/recipes-graphics/mesa/files/0001-swrast_kms-use-swkmsDRI2Extension-instead-of-driDRI2.patch
deleted file mode 100644
index db25e16f4a..0000000000
--- a/meta/recipes-graphics/mesa/files/0001-swrast_kms-use-swkmsDRI2Extension-instead-of-driDRI2.patch
+++ /dev/null
@@ -1,113 +0,0 @@
1From feb4ec510b1328fdd9aa77305d3273d1f9c7e124 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex@linutronix.de>
3Date: Thu, 9 Jun 2022 11:42:05 +0200
4Subject: [PATCH] swrast_kms: use swkmsDRI2Extension instead of
5 driDRI2Extension
6
7This set of changes:
8https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15649
9
10caused a regression in Xorg when using swrast_kms:
11 (EE) AIGLX error: Calling driver entry point failed
12
13This commit changes the swrast_kms driver to use a dedicated screen init function
14(which I believe was overlooked); I also took the opportunity to rename the
15associated plumbling to have swrast-specific names.
16
17Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16942]
18Signed-off-by: Alexander Kanavin <alex@linutronix.de>
19---
20 src/gallium/frontends/dri/dri2.c | 16 ++++++++--------
21 src/gallium/frontends/dri/dri_screen.h | 4 ++--
22 src/gallium/frontends/dri/dri_util.c | 2 +-
23 src/gallium/targets/dri/target.c | 2 +-
24 4 files changed, 12 insertions(+), 12 deletions(-)
25
26diff --git a/src/gallium/frontends/dri/dri2.c b/src/gallium/frontends/dri/dri2.c
27index 63ac9d5..de33789 100644
28--- a/src/gallium/frontends/dri/dri2.c
29+++ b/src/gallium/frontends/dri/dri2.c
30@@ -2508,7 +2508,7 @@ release_pipe:
31 * Returns the struct gl_config supported by this driver.
32 */
33 static const __DRIconfig **
34-dri_kms_init_screen(__DRIscreen * sPriv)
35+dri_swrast_kms_init_screen(__DRIscreen * sPriv)
36 {
37 #if defined(GALLIUM_SOFTPIPE)
38 const __DRIconfig **configs;
39@@ -2613,8 +2613,8 @@ static const struct __DRIDriverVtableExtensionRec galliumdrm_vtable = {
40 * hook. The latter is used to explicitly initialise the kms_swrast driver
41 * rather than selecting the approapriate driver as suggested by the loader.
42 */
43-const struct __DriverAPIRec dri_kms_driver_api = {
44- .InitScreen = dri_kms_init_screen,
45+const struct __DriverAPIRec dri_swrast_kms_driver_api = {
46+ .InitScreen = dri_swrast_kms_init_screen,
47 .DestroyScreen = dri_destroy_screen,
48 .CreateBuffer = dri2_create_buffer,
49 .DestroyBuffer = dri_destroy_buffer,
50@@ -2633,17 +2633,17 @@ const __DRIextension *galliumdrm_driver_extensions[] = {
51 NULL
52 };
53
54-static const struct __DRIDriverVtableExtensionRec dri_kms_vtable = {
55+static const struct __DRIDriverVtableExtensionRec dri_swrast_kms_vtable = {
56 .base = { __DRI_DRIVER_VTABLE, 1 },
57- .vtable = &dri_kms_driver_api,
58+ .vtable = &dri_swrast_kms_driver_api,
59 };
60
61-const __DRIextension *dri_kms_driver_extensions[] = {
62+const __DRIextension *dri_swrast_kms_driver_extensions[] = {
63 &driCoreExtension.base,
64 &driImageDriverExtension.base,
65- &driDRI2Extension.base,
66+ &swkmsDRI2Extension.base,
67 &gallium_config_options.base,
68- &dri_kms_vtable.base,
69+ &dri_swrast_kms_vtable.base,
70 NULL
71 };
72
73diff --git a/src/gallium/frontends/dri/dri_screen.h b/src/gallium/frontends/dri/dri_screen.h
74index 0ee2feb..0bb8817 100644
75--- a/src/gallium/frontends/dri/dri_screen.h
76+++ b/src/gallium/frontends/dri/dri_screen.h
77@@ -168,8 +168,8 @@ dri_destroy_screen_helper(struct dri_screen * screen);
78 void
79 dri_destroy_screen(__DRIscreen * sPriv);
80
81-extern const struct __DriverAPIRec dri_kms_driver_api;
82-extern const __DRIextension *dri_kms_driver_extensions[];
83+extern const struct __DriverAPIRec dri_swrast_kms_driver_api;
84+extern const __DRIextension *dri_swrast_kms_driver_extensions[];
85 extern const struct __DriverAPIRec galliumdrm_driver_api;
86 extern const __DRIextension *galliumdrm_driver_extensions[];
87 extern const struct __DriverAPIRec galliumsw_driver_api;
88diff --git a/src/gallium/frontends/dri/dri_util.c b/src/gallium/frontends/dri/dri_util.c
89index 8d60526..03614e1 100644
90--- a/src/gallium/frontends/dri/dri_util.c
91+++ b/src/gallium/frontends/dri/dri_util.c
92@@ -187,7 +187,7 @@ swkmsCreateNewScreen(int scrn, int fd,
93 const __DRIconfig ***driver_configs, void *data)
94 {
95 return driCreateNewScreen2(scrn, fd, extensions,
96- dri_kms_driver_extensions,
97+ dri_swrast_kms_driver_extensions,
98 driver_configs, data);
99 }
100
101diff --git a/src/gallium/targets/dri/target.c b/src/gallium/targets/dri/target.c
102index 9b78351..e02b03b 100644
103--- a/src/gallium/targets/dri/target.c
104+++ b/src/gallium/targets/dri/target.c
105@@ -25,7 +25,7 @@ const __DRIextension **__driDriverGetExtensions_kms_swrast(void);
106
107 PUBLIC const __DRIextension **__driDriverGetExtensions_kms_swrast(void)
108 {
109- return dri_kms_driver_extensions;
110+ return dri_swrast_kms_driver_extensions;
111 }
112
113 #endif
diff --git a/meta/recipes-graphics/mesa/files/0001-util-format-Check-for-NEON-before-using-it.patch b/meta/recipes-graphics/mesa/files/0001-util-format-Check-for-NEON-before-using-it.patch
index 5c6165c281..d22ff3c8a8 100644
--- a/meta/recipes-graphics/mesa/files/0001-util-format-Check-for-NEON-before-using-it.patch
+++ b/meta/recipes-graphics/mesa/files/0001-util-format-Check-for-NEON-before-using-it.patch
@@ -1,4 +1,4 @@
1From fdb2face4eeac3c20eedcca7520f4e7014225fb4 Mon Sep 17 00:00:00 2001 1From f17e836ef9b1bbc6056790596420b699e48128c2 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com> 2From: Khem Raj <raj.khem@gmail.com>
3Date: Thu, 2 Dec 2021 19:57:42 -0800 3Date: Thu, 2 Dec 2021 19:57:42 -0800
4Subject: [PATCH] util/format: Check for NEON before using it 4Subject: [PATCH] util/format: Check for NEON before using it
@@ -20,10 +20,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
20 2 files changed, 2 insertions(+), 2 deletions(-) 20 2 files changed, 2 insertions(+), 2 deletions(-)
21 21
22diff --git a/src/util/format/u_format.c b/src/util/format/u_format.c 22diff --git a/src/util/format/u_format.c b/src/util/format/u_format.c
23index 36c5e52..f0a0097 100644 23index c071250..0880984 100644
24--- a/src/util/format/u_format.c 24--- a/src/util/format/u_format.c
25+++ b/src/util/format/u_format.c 25+++ b/src/util/format/u_format.c
26@@ -1138,7 +1138,7 @@ static void 26@@ -1184,7 +1184,7 @@ static void
27 util_format_unpack_table_init(void) 27 util_format_unpack_table_init(void)
28 { 28 {
29 for (enum pipe_format format = PIPE_FORMAT_NONE; format < PIPE_FORMAT_COUNT; format++) { 29 for (enum pipe_format format = PIPE_FORMAT_NONE; format < PIPE_FORMAT_COUNT; format++) {
diff --git a/meta/recipes-graphics/mesa/files/0002-meson.build-make-TLS-ELF-optional.patch b/meta/recipes-graphics/mesa/files/0002-meson.build-make-TLS-ELF-optional.patch
deleted file mode 100644
index af11baee86..0000000000
--- a/meta/recipes-graphics/mesa/files/0002-meson.build-make-TLS-ELF-optional.patch
+++ /dev/null
@@ -1,61 +0,0 @@
1From bf41fa026ae3d378e62fd83d03a6f5933b52ca04 Mon Sep 17 00:00:00 2001
2From: Alistair Francis <alistair@alistair23.me>
3Date: Thu, 14 Nov 2019 13:08:31 -0800
4Subject: [PATCH] meson.build: make TLS ELF optional
5
6USE_ELF_TLS has replaced GLX_USE_TLS so this patch is the original "make
7TLS GLX optional again" patch updated to the latest mesa.
8
9For details, see:
10https://gitlab.freedesktop.org/mesa/mesa/-/issues/966
11
12This prevents runtime segfault on musl:
13
14Traceback (most recent call last):
15 File "/home/pokybuild/yocto-worker/musl-qemux86/build/meta/lib/oeqa/core/decorator/__init__.py", line 36, in wrapped_f
16 return func(*args, **kwargs)
17 File "/home/pokybuild/yocto-worker/musl-qemux86/build/meta/lib/oeqa/runtime/cases/parselogs.py", line 378, in test_parselogs
18 self.assertEqual(errcount, 0, msg=self.msg)
19AssertionError: 1 != 0 : Log: /home/pokybuild/yocto-worker/musl-qemux86/build/build/tmp/work/qemux86-poky-linux-musl/core-image-sato-sdk/1.0-r0/target_logs/Xorg.0.log
20
21Upstream-Status: Inappropriate [configuration]
22---
23 meson.build | 7 +++++--
24 meson_options.txt | 6 ++++++
25 2 files changed, 11 insertions(+), 2 deletions(-)
26
27diff --git a/meson.build b/meson.build
28index 70d06c0..1441611 100644
29--- a/meson.build
30+++ b/meson.build
31@@ -490,8 +490,11 @@ foreach platform : _platforms
32 pre_args += '-DHAVE_@0@_PLATFORM'.format(platform.to_upper())
33 endforeach
34
35-use_elf_tls = true
36-pre_args += '-DUSE_ELF_TLS'
37+use_elf_tls = false
38+if get_option('elf-tls')
39+ use_elf_tls = true
40+ pre_args += '-DUSE_ELF_TLS'
41+endif
42
43 if with_platform_android and get_option('platform-sdk-version') >= 29
44 # By default the NDK compiler, at least, emits emutls references instead of
45diff --git a/meson_options.txt b/meson_options.txt
46index 1f6ef38..99cc5cb 100644
47--- a/meson_options.txt
48+++ b/meson_options.txt
49@@ -440,6 +440,12 @@ option(
50 value : true,
51 description : 'Enable direct rendering in GLX and EGL for DRI',
52 )
53+option(
54+ 'elf-tls',
55+ type : 'boolean',
56+ value : true,
57+ description : 'Enable TLS support in ELF',
58+)
59 option('egl-lib-suffix',
60 type : 'string',
61 value : '',
diff --git a/meta/recipes-graphics/mesa/mesa-gl_22.1.6.bb b/meta/recipes-graphics/mesa/mesa-gl_22.2.0.bb
index f2bc8f6b5b..f2bc8f6b5b 100644
--- a/meta/recipes-graphics/mesa/mesa-gl_22.1.6.bb
+++ b/meta/recipes-graphics/mesa/mesa-gl_22.2.0.bb
diff --git a/meta/recipes-graphics/mesa/mesa.inc b/meta/recipes-graphics/mesa/mesa.inc
index ea7ed4fd27..8a74e0a80a 100644
--- a/meta/recipes-graphics/mesa/mesa.inc
+++ b/meta/recipes-graphics/mesa/mesa.inc
@@ -10,22 +10,19 @@ HOMEPAGE = "http://mesa3d.org"
10BUGTRACKER = "https://bugs.freedesktop.org" 10BUGTRACKER = "https://bugs.freedesktop.org"
11SECTION = "x11" 11SECTION = "x11"
12LICENSE = "MIT" 12LICENSE = "MIT"
13LIC_FILES_CHKSUM = "file://docs/license.rst;md5=9a383ee9f65a4e939d6630e9b067ff58" 13LIC_FILES_CHKSUM = "file://docs/license.rst;md5=63779ec98d78d823a9dc533a0735ef10"
14 14
15PE = "2" 15PE = "2"
16 16
17SRC_URI = "https://mesa.freedesktop.org/archive/mesa-${PV}.tar.xz \ 17SRC_URI = "https://mesa.freedesktop.org/archive/mesa-${PV}.tar.xz \
18 file://0001-meson.build-check-for-all-linux-host_os-combinations.patch \ 18 file://0001-meson.build-check-for-all-linux-host_os-combinations.patch \
19 file://0002-meson.build-make-TLS-ELF-optional.patch \
20 file://0001-meson-misdetects-64bit-atomics-on-mips-clang.patch \ 19 file://0001-meson-misdetects-64bit-atomics-on-mips-clang.patch \
21 file://0001-futex.h-Define-__NR_futex-if-it-does-not-exist.patch \ 20 file://0001-futex.h-Define-__NR_futex-if-it-does-not-exist.patch \
22 file://0001-util-format-Check-for-NEON-before-using-it.patch \ 21 file://0001-util-format-Check-for-NEON-before-using-it.patch \
23 file://0001-Revert-egl-wayland-deprecate-drm_handle_format-and-d.patch \
24 file://0001-swrast_kms-use-swkmsDRI2Extension-instead-of-driDRI2.patch \
25 file://0001-nir-nir_opt_move-fix-ALWAYS_INLINE-compiler-error.patch \ 22 file://0001-nir-nir_opt_move-fix-ALWAYS_INLINE-compiler-error.patch \
26 " 23 "
27 24
28SRC_URI[sha256sum] = "22ced061eb9adab8ea35368246c1995c09723f3f71653cd5050c5cec376e671a" 25SRC_URI[sha256sum] = "b1f9c8fd08f2cae3adf83355bef4d2398e8025f44947332880f2d0066bdafa8c"
29 26
30UPSTREAM_CHECK_GITTAGREGEX = "mesa-(?P<pver>\d+(\.\d+)+)" 27UPSTREAM_CHECK_GITTAGREGEX = "mesa-(?P<pver>\d+(\.\d+)+)"
31 28
@@ -95,7 +92,7 @@ PACKAGECONFIG = " \
95 ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'opengl egl gles gbm virgl', '', d)} \ 92 ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'opengl egl gles gbm virgl', '', d)} \
96 ${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'dri3', '', d)} \ 93 ${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'dri3', '', d)} \
97 ${@bb.utils.contains('DISTRO_FEATURES', 'x11 vulkan', 'dri3', '', d)} \ 94 ${@bb.utils.contains('DISTRO_FEATURES', 'x11 vulkan', 'dri3', '', d)} \
98 ${@bb.utils.contains('TCLIBC', 'glibc', 'elf-tls', '', d)} \ 95 ${@bb.utils.contains('DISTRO_FEATURES', 'vulkan', 'zink', '', d)} \
99" 96"
100 97
101# "gbm" requires "opengl" 98# "gbm" requires "opengl"
@@ -104,7 +101,6 @@ PACKAGECONFIG[gbm] = "-Dgbm=enabled,-Dgbm=disabled"
104X11_DEPS = "xorgproto virtual/libx11 libxext libxxf86vm libxdamage libxfixes xrandr" 101X11_DEPS = "xorgproto virtual/libx11 libxext libxxf86vm libxdamage libxfixes xrandr"
105# "x11" requires "opengl" 102# "x11" requires "opengl"
106PACKAGECONFIG[x11] = ",-Dglx=disabled,${X11_DEPS}" 103PACKAGECONFIG[x11] = ",-Dglx=disabled,${X11_DEPS}"
107PACKAGECONFIG[elf-tls] = "-Delf-tls=true, -Delf-tls=false"
108PACKAGECONFIG[xvmc] = "-Dgallium-xvmc=enabled,-Dgallium-xvmc=disabled,libxvmc" 104PACKAGECONFIG[xvmc] = "-Dgallium-xvmc=enabled,-Dgallium-xvmc=disabled,libxvmc"
109PACKAGECONFIG[wayland] = ",,wayland-native wayland libdrm wayland-protocols" 105PACKAGECONFIG[wayland] = ",,wayland-native wayland libdrm wayland-protocols"
110 106
@@ -117,7 +113,7 @@ VULKAN_DRIVERS:append:x86:class-target = ",intel"
117VULKAN_DRIVERS:append:x86-64:class-target = ",intel" 113VULKAN_DRIVERS:append:x86-64:class-target = ",intel"
118VULKAN_DRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'freedreno', ',freedreno', '', d)}" 114VULKAN_DRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'freedreno', ',freedreno', '', d)}"
119VULKAN_DRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'broadcom', ',broadcom', '', d)}" 115VULKAN_DRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'broadcom', ',broadcom', '', d)}"
120PACKAGECONFIG[vulkan] = "-Dvulkan-drivers=${@strip_comma('${VULKAN_DRIVERS}')}, -Dvulkan-drivers=''," 116PACKAGECONFIG[vulkan] = "-Dvulkan-drivers=${@strip_comma('${VULKAN_DRIVERS}')}, -Dvulkan-drivers='',glslang-native vulkan-loader vulkan-headers"
121 117
122PACKAGECONFIG[opengl] = "-Dopengl=true, -Dopengl=false" 118PACKAGECONFIG[opengl] = "-Dopengl=true, -Dopengl=false"
123 119
@@ -137,6 +133,7 @@ PACKAGECONFIG[freedreno] = ""
137PACKAGECONFIG[kmsro] = "" 133PACKAGECONFIG[kmsro] = ""
138PACKAGECONFIG[vc4] = "" 134PACKAGECONFIG[vc4] = ""
139PACKAGECONFIG[v3d] = "" 135PACKAGECONFIG[v3d] = ""
136PACKAGECONFIG[zink] = ""
140 137
141GALLIUMDRIVERS = "swrast" 138GALLIUMDRIVERS = "swrast"
142# gallium swrast was found to crash Xorg on startup in x32 qemu 139# gallium swrast was found to crash Xorg on startup in x32 qemu
@@ -149,6 +146,7 @@ GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'freedreno', ',fre
149GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'kmsro', ',kmsro', '', d)}" 146GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'kmsro', ',kmsro', '', d)}"
150GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'vc4', ',vc4', '', d)}" 147GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'vc4', ',vc4', '', d)}"
151GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'v3d', ',v3d', '', d)}" 148GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'v3d', ',v3d', '', d)}"
149GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'zink', ',zink', '', d)}"
152 150
153# radeonsi requires LLVM 151# radeonsi requires LLVM
154GALLIUMDRIVERS_RADEONSI = "${@bb.utils.contains('PACKAGECONFIG', 'r600', ',radeonsi', '', d)}" 152GALLIUMDRIVERS_RADEONSI = "${@bb.utils.contains('PACKAGECONFIG', 'r600', ',radeonsi', '', d)}"
@@ -177,6 +175,8 @@ GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'lima', ',lima', '
177PACKAGECONFIG[panfrost] = "" 175PACKAGECONFIG[panfrost] = ""
178GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'panfrost', ',panfrost', '', d)}" 176GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'panfrost', ',panfrost', '', d)}"
179 177
178PACKAGECONFIG[vulkan-beta] = "-Dvulkan-beta=true,-Dvulkan-beta=false"
179
180PACKAGECONFIG[osmesa] = "-Dosmesa=true,-Dosmesa=false" 180PACKAGECONFIG[osmesa] = "-Dosmesa=true,-Dosmesa=false"
181 181
182PACKAGECONFIG[unwind] = "-Dlibunwind=enabled,-Dlibunwind=disabled,libunwind" 182PACKAGECONFIG[unwind] = "-Dlibunwind=enabled,-Dlibunwind=disabled,libunwind"
diff --git a/meta/recipes-graphics/mesa/mesa_22.1.6.bb b/meta/recipes-graphics/mesa/mesa_22.2.0.bb
index 96e8aa38d6..96e8aa38d6 100644
--- a/meta/recipes-graphics/mesa/mesa_22.1.6.bb
+++ b/meta/recipes-graphics/mesa/mesa_22.2.0.bb