diff options
Diffstat (limited to 'meta/recipes-graphics/mesa')
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 @@ | |||
1 | From 7796c2c56c960ac55e49246f0349ac52539ada55 Mon Sep 17 00:00:00 2001 | ||
2 | From: Leandro Ribeiro <leandro.ribeiro@collabora.com> | ||
3 | Date: Sun, 10 Apr 2022 22:54:36 -0300 | ||
4 | Subject: [PATCH] Revert "egl/wayland: deprecate drm_handle_format() and | ||
5 | drm_handle_capabilities()" | ||
6 | |||
7 | Commit af1ee8e010441f8f2ed8c77065b159652a4ac9fe dropped support to | ||
8 | wl_drm, as we thought that most compositors from active projects were | ||
9 | already supporting zwp_linux_dmabuf_v1. | ||
10 | |||
11 | But that's not true, so revert this commit in order to give these | ||
12 | projects a longer transition period. | ||
13 | |||
14 | Note that we didn't add back the support to GEM name API, and that was | ||
15 | on purpose. | ||
16 | |||
17 | Signed-off-by: Leandro Ribeiro <leandro.ribeiro@collabora.com> | ||
18 | Reviewed-by: Simon Ser <contact@emersion.fr> | ||
19 | Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15822> | ||
20 | |||
21 | Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> | ||
22 | Upstream-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 | |||
28 | diff --git a/src/egl/drivers/dri2/egl_dri2.h b/src/egl/drivers/dri2/egl_dri2.h | ||
29 | index 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 | |||
40 | diff --git a/src/egl/drivers/dri2/platform_wayland.c b/src/egl/drivers/dri2/platform_wayland.c | ||
41 | index 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 | ®istry_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 | -- | ||
157 | 2.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 @@ | |||
1 | From 253b042d2bf10e9abfa9cc508e0782aefd834145 Mon Sep 17 00:00:00 2001 | 1 | From 859bfc342d1db9b61c43f30d9aa27cea35ca7599 Mon Sep 17 00:00:00 2001 |
2 | From: Khem Raj <raj.khem@gmail.com> | 2 | From: Khem Raj <raj.khem@gmail.com> |
3 | Date: Fri, 16 Oct 2020 11:03:47 -0700 | 3 | Date: Fri, 16 Oct 2020 11:03:47 -0700 |
4 | Subject: [PATCH] futex.h: Define __NR_futex if it does not exist | 4 | Subject: [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 | ||
20 | diff --git a/src/util/futex.h b/src/util/futex.h | 20 | diff --git a/src/util/futex.h b/src/util/futex.h |
21 | index 43097f4..941b0ec 100644 | 21 | index 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 @@ | |||
1 | From d34bdbd80e5a1f309d2ba280cdc66ff0ee0e5c43 Mon Sep 17 00:00:00 2001 | 1 | From 3ef37c63f03ad6f2af407de350486fdd25e9132a Mon Sep 17 00:00:00 2001 |
2 | From: Khem Raj <raj.khem@gmail.com> | 2 | From: Khem Raj <raj.khem@gmail.com> |
3 | Date: Mon, 13 Jan 2020 15:23:47 -0800 | 3 | Date: Mon, 13 Jan 2020 15:23:47 -0800 |
4 | Subject: [PATCH] meson misdetects 64bit atomics on mips/clang | 4 | Subject: [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 @@ | |||
1 | From f9c597a2c517eb85c23cbeeb2e95c55794c74cda Mon Sep 17 00:00:00 2001 | 1 | From d092a9000da62dfccca5b58fca56b94eb9989c48 Mon Sep 17 00:00:00 2001 |
2 | From: Alistair Francis <alistair@alistair23.me> | 2 | From: Alistair Francis <alistair@alistair23.me> |
3 | Date: Thu, 14 Nov 2019 13:04:49 -0800 | 3 | Date: Thu, 14 Nov 2019 13:04:49 -0800 |
4 | Subject: [PATCH] meson.build: check for all linux host_os combinations | 4 | Subject: [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 | ||
22 | diff --git a/meson.build b/meson.build | 22 | diff --git a/meson.build b/meson.build |
23 | index bca6b1f..70d06c0 100644 | 23 | index 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 @@ | |||
1 | From da6e47f1717f34c73de388c56ffaf4861a07fdc5 Mon Sep 17 00:00:00 2001 | ||
2 | From: t bettler <thomas.bettler@gmail.com> | ||
3 | Date: Sat, 9 Jul 2022 09:28:51 +0000 | ||
4 | Subject: [PATCH] nir/nir_opt_move: fix ALWAYS_INLINE compiler error | ||
5 | MIME-Version: 1.0 | ||
6 | Content-Type: text/plain; charset=UTF-8 | ||
7 | Content-Transfer-Encoding: 8bit | ||
8 | |||
1 | Backport merge request to fix mesa compile error when debug build | 9 | Backport merge request to fix mesa compile error when debug build |
2 | enabled. | 10 | enabled. |
3 | 11 | ||
@@ -5,10 +13,6 @@ Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/mesa/-/merge_req | |||
5 | 13 | ||
6 | Signed-off-by: Kai Kang <kai.kang@windriver.com> | 14 | Signed-off-by: Kai Kang <kai.kang@windriver.com> |
7 | 15 | ||
8 | From c69c6e7a35205557de73734ad4a1f411c8f99926 Mon Sep 17 00:00:00 2001 | ||
9 | From: t bettler <thomas.bettler@gmail.com> | ||
10 | Date: Sat, 9 Jul 2022 09:28:51 +0000 | ||
11 | Subject: [PATCH] nir/nir_opt_move: fix ALWAYS_INLINE compiler error | ||
12 | MIME-Version: 1.0 | 16 | MIME-Version: 1.0 |
13 | Content-Type: text/plain; charset=UTF-8 | 17 | Content-Type: text/plain; charset=UTF-8 |
14 | Content-Transfer-Encoding: 8bit | 18 | Content-Transfer-Encoding: 8bit |
@@ -17,13 +21,14 @@ fix call to ‘always_inline’ ‘src_is_ssa’ | |||
17 | 21 | ||
18 | Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6825 | 22 | Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6825 |
19 | Fixes: f1d20ec67c3f186886b97de94f74484650f8fda1 ("nir/nir_opt_move: handle non-SSA defs ") | 23 | Fixes: 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 | ||
25 | diff --git a/src/compiler/nir/nir_inline_helpers.h b/src/compiler/nir/nir_inline_helpers.h | 30 | diff --git a/src/compiler/nir/nir_inline_helpers.h b/src/compiler/nir/nir_inline_helpers.h |
26 | index 125dd8a537c..ec33f0509f7 100644 | 31 | index 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 | +} |
50 | diff --git a/src/compiler/nir/nir_opt_move.c b/src/compiler/nir/nir_opt_move.c | 55 | diff --git a/src/compiler/nir/nir_opt_move.c b/src/compiler/nir/nir_opt_move.c |
51 | index 81bcde5c436..051c3cc6295 100644 | 56 | index 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 | -- | ||
64 | 2.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 @@ | |||
1 | From feb4ec510b1328fdd9aa77305d3273d1f9c7e124 Mon Sep 17 00:00:00 2001 | ||
2 | From: Alexander Kanavin <alex@linutronix.de> | ||
3 | Date: Thu, 9 Jun 2022 11:42:05 +0200 | ||
4 | Subject: [PATCH] swrast_kms: use swkmsDRI2Extension instead of | ||
5 | driDRI2Extension | ||
6 | |||
7 | This set of changes: | ||
8 | https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15649 | ||
9 | |||
10 | caused a regression in Xorg when using swrast_kms: | ||
11 | (EE) AIGLX error: Calling driver entry point failed | ||
12 | |||
13 | This 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 | ||
15 | associated plumbling to have swrast-specific names. | ||
16 | |||
17 | Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16942] | ||
18 | Signed-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 | |||
26 | diff --git a/src/gallium/frontends/dri/dri2.c b/src/gallium/frontends/dri/dri2.c | ||
27 | index 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 | |||
73 | diff --git a/src/gallium/frontends/dri/dri_screen.h b/src/gallium/frontends/dri/dri_screen.h | ||
74 | index 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; | ||
88 | diff --git a/src/gallium/frontends/dri/dri_util.c b/src/gallium/frontends/dri/dri_util.c | ||
89 | index 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 | |||
101 | diff --git a/src/gallium/targets/dri/target.c b/src/gallium/targets/dri/target.c | ||
102 | index 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 @@ | |||
1 | From fdb2face4eeac3c20eedcca7520f4e7014225fb4 Mon Sep 17 00:00:00 2001 | 1 | From f17e836ef9b1bbc6056790596420b699e48128c2 Mon Sep 17 00:00:00 2001 |
2 | From: Khem Raj <raj.khem@gmail.com> | 2 | From: Khem Raj <raj.khem@gmail.com> |
3 | Date: Thu, 2 Dec 2021 19:57:42 -0800 | 3 | Date: Thu, 2 Dec 2021 19:57:42 -0800 |
4 | Subject: [PATCH] util/format: Check for NEON before using it | 4 | Subject: [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 | ||
22 | diff --git a/src/util/format/u_format.c b/src/util/format/u_format.c | 22 | diff --git a/src/util/format/u_format.c b/src/util/format/u_format.c |
23 | index 36c5e52..f0a0097 100644 | 23 | index 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 @@ | |||
1 | From bf41fa026ae3d378e62fd83d03a6f5933b52ca04 Mon Sep 17 00:00:00 2001 | ||
2 | From: Alistair Francis <alistair@alistair23.me> | ||
3 | Date: Thu, 14 Nov 2019 13:08:31 -0800 | ||
4 | Subject: [PATCH] meson.build: make TLS ELF optional | ||
5 | |||
6 | USE_ELF_TLS has replaced GLX_USE_TLS so this patch is the original "make | ||
7 | TLS GLX optional again" patch updated to the latest mesa. | ||
8 | |||
9 | For details, see: | ||
10 | https://gitlab.freedesktop.org/mesa/mesa/-/issues/966 | ||
11 | |||
12 | This prevents runtime segfault on musl: | ||
13 | |||
14 | Traceback (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) | ||
19 | AssertionError: 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 | |||
21 | Upstream-Status: Inappropriate [configuration] | ||
22 | --- | ||
23 | meson.build | 7 +++++-- | ||
24 | meson_options.txt | 6 ++++++ | ||
25 | 2 files changed, 11 insertions(+), 2 deletions(-) | ||
26 | |||
27 | diff --git a/meson.build b/meson.build | ||
28 | index 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 | ||
45 | diff --git a/meson_options.txt b/meson_options.txt | ||
46 | index 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" | |||
10 | BUGTRACKER = "https://bugs.freedesktop.org" | 10 | BUGTRACKER = "https://bugs.freedesktop.org" |
11 | SECTION = "x11" | 11 | SECTION = "x11" |
12 | LICENSE = "MIT" | 12 | LICENSE = "MIT" |
13 | LIC_FILES_CHKSUM = "file://docs/license.rst;md5=9a383ee9f65a4e939d6630e9b067ff58" | 13 | LIC_FILES_CHKSUM = "file://docs/license.rst;md5=63779ec98d78d823a9dc533a0735ef10" |
14 | 14 | ||
15 | PE = "2" | 15 | PE = "2" |
16 | 16 | ||
17 | SRC_URI = "https://mesa.freedesktop.org/archive/mesa-${PV}.tar.xz \ | 17 | SRC_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 | ||
28 | SRC_URI[sha256sum] = "22ced061eb9adab8ea35368246c1995c09723f3f71653cd5050c5cec376e671a" | 25 | SRC_URI[sha256sum] = "b1f9c8fd08f2cae3adf83355bef4d2398e8025f44947332880f2d0066bdafa8c" |
29 | 26 | ||
30 | UPSTREAM_CHECK_GITTAGREGEX = "mesa-(?P<pver>\d+(\.\d+)+)" | 27 | UPSTREAM_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" | |||
104 | X11_DEPS = "xorgproto virtual/libx11 libxext libxxf86vm libxdamage libxfixes xrandr" | 101 | X11_DEPS = "xorgproto virtual/libx11 libxext libxxf86vm libxdamage libxfixes xrandr" |
105 | # "x11" requires "opengl" | 102 | # "x11" requires "opengl" |
106 | PACKAGECONFIG[x11] = ",-Dglx=disabled,${X11_DEPS}" | 103 | PACKAGECONFIG[x11] = ",-Dglx=disabled,${X11_DEPS}" |
107 | PACKAGECONFIG[elf-tls] = "-Delf-tls=true, -Delf-tls=false" | ||
108 | PACKAGECONFIG[xvmc] = "-Dgallium-xvmc=enabled,-Dgallium-xvmc=disabled,libxvmc" | 104 | PACKAGECONFIG[xvmc] = "-Dgallium-xvmc=enabled,-Dgallium-xvmc=disabled,libxvmc" |
109 | PACKAGECONFIG[wayland] = ",,wayland-native wayland libdrm wayland-protocols" | 105 | PACKAGECONFIG[wayland] = ",,wayland-native wayland libdrm wayland-protocols" |
110 | 106 | ||
@@ -117,7 +113,7 @@ VULKAN_DRIVERS:append:x86:class-target = ",intel" | |||
117 | VULKAN_DRIVERS:append:x86-64:class-target = ",intel" | 113 | VULKAN_DRIVERS:append:x86-64:class-target = ",intel" |
118 | VULKAN_DRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'freedreno', ',freedreno', '', d)}" | 114 | VULKAN_DRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'freedreno', ',freedreno', '', d)}" |
119 | VULKAN_DRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'broadcom', ',broadcom', '', d)}" | 115 | VULKAN_DRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'broadcom', ',broadcom', '', d)}" |
120 | PACKAGECONFIG[vulkan] = "-Dvulkan-drivers=${@strip_comma('${VULKAN_DRIVERS}')}, -Dvulkan-drivers=''," | 116 | PACKAGECONFIG[vulkan] = "-Dvulkan-drivers=${@strip_comma('${VULKAN_DRIVERS}')}, -Dvulkan-drivers='',glslang-native vulkan-loader vulkan-headers" |
121 | 117 | ||
122 | PACKAGECONFIG[opengl] = "-Dopengl=true, -Dopengl=false" | 118 | PACKAGECONFIG[opengl] = "-Dopengl=true, -Dopengl=false" |
123 | 119 | ||
@@ -137,6 +133,7 @@ PACKAGECONFIG[freedreno] = "" | |||
137 | PACKAGECONFIG[kmsro] = "" | 133 | PACKAGECONFIG[kmsro] = "" |
138 | PACKAGECONFIG[vc4] = "" | 134 | PACKAGECONFIG[vc4] = "" |
139 | PACKAGECONFIG[v3d] = "" | 135 | PACKAGECONFIG[v3d] = "" |
136 | PACKAGECONFIG[zink] = "" | ||
140 | 137 | ||
141 | GALLIUMDRIVERS = "swrast" | 138 | GALLIUMDRIVERS = "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 | |||
149 | GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'kmsro', ',kmsro', '', d)}" | 146 | GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'kmsro', ',kmsro', '', d)}" |
150 | GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'vc4', ',vc4', '', d)}" | 147 | GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'vc4', ',vc4', '', d)}" |
151 | GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'v3d', ',v3d', '', d)}" | 148 | GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'v3d', ',v3d', '', d)}" |
149 | GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'zink', ',zink', '', d)}" | ||
152 | 150 | ||
153 | # radeonsi requires LLVM | 151 | # radeonsi requires LLVM |
154 | GALLIUMDRIVERS_RADEONSI = "${@bb.utils.contains('PACKAGECONFIG', 'r600', ',radeonsi', '', d)}" | 152 | GALLIUMDRIVERS_RADEONSI = "${@bb.utils.contains('PACKAGECONFIG', 'r600', ',radeonsi', '', d)}" |
@@ -177,6 +175,8 @@ GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'lima', ',lima', ' | |||
177 | PACKAGECONFIG[panfrost] = "" | 175 | PACKAGECONFIG[panfrost] = "" |
178 | GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'panfrost', ',panfrost', '', d)}" | 176 | GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'panfrost', ',panfrost', '', d)}" |
179 | 177 | ||
178 | PACKAGECONFIG[vulkan-beta] = "-Dvulkan-beta=true,-Dvulkan-beta=false" | ||
179 | |||
180 | PACKAGECONFIG[osmesa] = "-Dosmesa=true,-Dosmesa=false" | 180 | PACKAGECONFIG[osmesa] = "-Dosmesa=true,-Dosmesa=false" |
181 | 181 | ||
182 | PACKAGECONFIG[unwind] = "-Dlibunwind=enabled,-Dlibunwind=disabled,libunwind" | 182 | PACKAGECONFIG[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 | |||