summaryrefslogtreecommitdiffstats
path: root/meta-ti-bsp/recipes-graphics
diff options
context:
space:
mode:
authorDenys Dmytriyenko <denys@konsulko.com>2023-02-24 10:12:14 +0000
committerRyan Eatmon <reatmon@ti.com>2023-02-24 08:37:42 -0600
commitfc281c3b067fbf10d406bdc6f14c38956f18c6bb (patch)
tree3b2d8441e962ae059dc085ee25ee296fc65152b7 /meta-ti-bsp/recipes-graphics
parent4338e7204c9f02430f2e82555630e1abfcd34a87 (diff)
downloadmeta-ti-fc281c3b067fbf10d406bdc6f14c38956f18c6bb.tar.gz
mesa: locally overlay 22.0-specific patches from oe-core/kirkstone
Locally overlay verbatim copies of mesa 22.0 patches from oe-core/kirkstone, so the same codebase works in kirkstone and master. Since upstream version of mesa in master is now 22.3 and no longer carries these patches, but they are still needed for 22.0-based PVR fork of mesa used with Rogue driver. Signed-off-by: Denys Dmytriyenko <denys@konsulko.com> Signed-off-by: Ryan Eatmon <reatmon@ti.com>
Diffstat (limited to 'meta-ti-bsp/recipes-graphics')
-rw-r--r--meta-ti-bsp/recipes-graphics/mesa/files/0001-Revert-egl-wayland-deprecate-drm_handle_format-and-d.patch157
-rw-r--r--meta-ti-bsp/recipes-graphics/mesa/files/0001-futex.h-Define-__NR_futex-if-it-does-not-exist.patch34
-rw-r--r--meta-ti-bsp/recipes-graphics/mesa/files/0001-meson-misdetects-64bit-atomics-on-mips-clang.patch25
-rw-r--r--meta-ti-bsp/recipes-graphics/mesa/files/0001-meson.build-check-for-all-linux-host_os-combinations.patch43
-rw-r--r--meta-ti-bsp/recipes-graphics/mesa/files/0001-util-format-Check-for-NEON-before-using-it.patch47
-rw-r--r--meta-ti-bsp/recipes-graphics/mesa/files/0002-meson.build-make-TLS-ELF-optional.patch61
6 files changed, 367 insertions, 0 deletions
diff --git a/meta-ti-bsp/recipes-graphics/mesa/files/0001-Revert-egl-wayland-deprecate-drm_handle_format-and-d.patch b/meta-ti-bsp/recipes-graphics/mesa/files/0001-Revert-egl-wayland-deprecate-drm_handle_format-and-d.patch
new file mode 100644
index 00000000..03e4b422
--- /dev/null
+++ b/meta-ti-bsp/recipes-graphics/mesa/files/0001-Revert-egl-wayland-deprecate-drm_handle_format-and-d.patch
@@ -0,0 +1,157 @@
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
diff --git a/meta-ti-bsp/recipes-graphics/mesa/files/0001-futex.h-Define-__NR_futex-if-it-does-not-exist.patch b/meta-ti-bsp/recipes-graphics/mesa/files/0001-futex.h-Define-__NR_futex-if-it-does-not-exist.patch
new file mode 100644
index 00000000..3f7a6340
--- /dev/null
+++ b/meta-ti-bsp/recipes-graphics/mesa/files/0001-futex.h-Define-__NR_futex-if-it-does-not-exist.patch
@@ -0,0 +1,34 @@
1From 253b042d2bf10e9abfa9cc508e0782aefd834145 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Fri, 16 Oct 2020 11:03:47 -0700
4Subject: [PATCH] futex.h: Define __NR_futex if it does not exist
5
6__NR_futex is not defines by newer architectures e.g. arc, riscv32 as
7they only have 64bit variant of time_t. Glibc defines SYS_futex interface based on
8__NR_futex, since this is used in applications, such applications start
9to fail to build for these newer architectures. This patch defines a
10fallback to alias __NR_futex to __NR_futex_tim64 so SYS_futex keeps
11working
12
13Upstream-Status: Pending
14Signed-off-by: Khem Raj <raj.khem@gmail.com>
15
16---
17 src/util/futex.h | 4 ++++
18 1 file changed, 4 insertions(+)
19
20diff --git a/src/util/futex.h b/src/util/futex.h
21index 43097f4..941b0ec 100644
22--- a/src/util/futex.h
23+++ b/src/util/futex.h
24@@ -34,6 +34,10 @@
25 #include <sys/syscall.h>
26 #include <sys/time.h>
27
28+#if !defined(SYS_futex) && defined(SYS_futex_time64)
29+# define SYS_futex SYS_futex_time64
30+#endif
31+
32 static inline long sys_futex(void *addr1, int op, int val1, const struct timespec *timeout, void *addr2, int val3)
33 {
34 return syscall(SYS_futex, addr1, op, val1, timeout, addr2, val3);
diff --git a/meta-ti-bsp/recipes-graphics/mesa/files/0001-meson-misdetects-64bit-atomics-on-mips-clang.patch b/meta-ti-bsp/recipes-graphics/mesa/files/0001-meson-misdetects-64bit-atomics-on-mips-clang.patch
new file mode 100644
index 00000000..5b98915c
--- /dev/null
+++ b/meta-ti-bsp/recipes-graphics/mesa/files/0001-meson-misdetects-64bit-atomics-on-mips-clang.patch
@@ -0,0 +1,25 @@
1From d34bdbd80e5a1f309d2ba280cdc66ff0ee0e5c43 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Mon, 13 Jan 2020 15:23:47 -0800
4Subject: [PATCH] meson misdetects 64bit atomics on mips/clang
5
6Upstream-Status: Pending
7Signed-off-by: Khem Raj <raj.khem@gmail.com>
8
9---
10 src/util/u_atomic.c | 2 +-
11 1 file changed, 1 insertion(+), 1 deletion(-)
12
13diff --git a/src/util/u_atomic.c b/src/util/u_atomic.c
14index 5a5eab4..e499516 100644
15--- a/src/util/u_atomic.c
16+++ b/src/util/u_atomic.c
17@@ -21,7 +21,7 @@
18 * IN THE SOFTWARE.
19 */
20
21-#if defined(MISSING_64BIT_ATOMICS) && defined(HAVE_PTHREAD)
22+#if !defined(__clang__) && defined(MISSING_64BIT_ATOMICS) && defined(HAVE_PTHREAD)
23
24 #include <stdint.h>
25 #include <pthread.h>
diff --git a/meta-ti-bsp/recipes-graphics/mesa/files/0001-meson.build-check-for-all-linux-host_os-combinations.patch b/meta-ti-bsp/recipes-graphics/mesa/files/0001-meson.build-check-for-all-linux-host_os-combinations.patch
new file mode 100644
index 00000000..3d2c163b
--- /dev/null
+++ b/meta-ti-bsp/recipes-graphics/mesa/files/0001-meson.build-check-for-all-linux-host_os-combinations.patch
@@ -0,0 +1,43 @@
1From f9c597a2c517eb85c23cbeeb2e95c55794c74cda Mon Sep 17 00:00:00 2001
2From: Alistair Francis <alistair@alistair23.me>
3Date: Thu, 14 Nov 2019 13:04:49 -0800
4Subject: [PATCH] meson.build: check for all linux host_os combinations
5
6Make sure that we are also looking for our host_os combinations like
7linux-musl etc. when assuming support for DRM/KMS.
8
9Also delete a duplicate line.
10
11Upstream-Status: Pending
12
13Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
14Signed-off-by: Fabio Berton <fabio.berton@ossystems.com.br>
15Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
16Signed-off-by: Alistair Francis <alistair@alistair23.me>
17
18---
19 meson.build | 4 ++--
20 1 file changed, 2 insertions(+), 2 deletions(-)
21
22diff --git a/meson.build b/meson.build
23index bca6b1f..70d06c0 100644
24--- a/meson.build
25+++ b/meson.build
26@@ -172,7 +172,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
28 with_shared_glapi = with_shared_glapi and with_any_opengl
29
30-system_has_kms_drm = ['openbsd', 'netbsd', 'freebsd', 'gnu/kfreebsd', 'dragonfly', 'linux', 'sunos'].contains(host_machine.system())
31+system_has_kms_drm = ['openbsd', 'netbsd', 'freebsd', 'dragonfly'].contains(host_machine.system()) or host_machine.system().startswith('linux')
32
33 dri_drivers = get_option('dri-drivers')
34 if dri_drivers.length() != 0
35@@ -1074,7 +1074,7 @@ if cc.compiles('__uint128_t foo(void) { return 0; }',
36 endif
37
38 # TODO: this is very incomplete
39-if ['linux', 'cygwin', 'gnu', 'freebsd', 'gnu/kfreebsd', 'haiku'].contains(host_machine.system())
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'
42 elif host_machine.system() == 'sunos'
43 pre_args += '-D__EXTENSIONS__'
diff --git a/meta-ti-bsp/recipes-graphics/mesa/files/0001-util-format-Check-for-NEON-before-using-it.patch b/meta-ti-bsp/recipes-graphics/mesa/files/0001-util-format-Check-for-NEON-before-using-it.patch
new file mode 100644
index 00000000..b3403bcd
--- /dev/null
+++ b/meta-ti-bsp/recipes-graphics/mesa/files/0001-util-format-Check-for-NEON-before-using-it.patch
@@ -0,0 +1,47 @@
1From fdb2face4eeac3c20eedcca7520f4e7014225fb4 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Thu, 2 Dec 2021 19:57:42 -0800
4Subject: [PATCH] util/format: Check for NEON before using it
5
6This fixes build on rpi0-w and any other machine which does not have
7neon unit and is not used as FPU unit
8
9Fixes errors e.g.
10
11In file included from ../mesa-21.3.0/src/util/format/u_format_unpack_neon.c:35:
12/mnt/b/yoe/master/build/tmp/work/arm1176jzfshf-vfp-yoe-linux-gnueabi/mesa/2_21.3.0-r0/recipe-sysroot-native/usr/lib/clang/13.0.1/include/arm_neon.h:32:2: error: "NEON support not enabled"
13
14Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14032]
15Signed-off-by: Khem Raj <raj.khem@gmail.com>
16
17---
18 src/util/format/u_format.c | 2 +-
19 src/util/format/u_format_unpack_neon.c | 2 +-
20 2 files changed, 2 insertions(+), 2 deletions(-)
21
22diff --git a/src/util/format/u_format.c b/src/util/format/u_format.c
23index 36c5e52..f0a0097 100644
24--- a/src/util/format/u_format.c
25+++ b/src/util/format/u_format.c
26@@ -1138,7 +1138,7 @@ static void
27 util_format_unpack_table_init(void)
28 {
29 for (enum pipe_format format = PIPE_FORMAT_NONE; format < PIPE_FORMAT_COUNT; format++) {
30-#if (defined(PIPE_ARCH_AARCH64) || defined(PIPE_ARCH_ARM)) && !defined(NO_FORMAT_ASM) && !defined(__SOFTFP__)
31+#if (defined(PIPE_ARCH_AARCH64) || (defined(__ARM_NEON) && defined(PIPE_ARCH_ARM))) && !defined(NO_FORMAT_ASM)
32 const struct util_format_unpack_description *unpack = util_format_unpack_description_neon(format);
33 if (unpack) {
34 util_format_unpack_table[format] = unpack;
35diff --git a/src/util/format/u_format_unpack_neon.c b/src/util/format/u_format_unpack_neon.c
36index a4a5cb1..1e4f794 100644
37--- a/src/util/format/u_format_unpack_neon.c
38+++ b/src/util/format/u_format_unpack_neon.c
39@@ -23,7 +23,7 @@
40
41 #include <u_format.h>
42
43-#if (defined(PIPE_ARCH_AARCH64) || defined(PIPE_ARCH_ARM)) && !defined(NO_FORMAT_ASM) && !defined(__SOFTFP__)
44+#if (defined(PIPE_ARCH_AARCH64) || (defined(__ARM_NEON) && defined(PIPE_ARCH_ARM))) && !defined(NO_FORMAT_ASM)
45
46 /* armhf builds default to vfp, not neon, and refuses to compile neon intrinsics
47 * unless you tell it "no really".
diff --git a/meta-ti-bsp/recipes-graphics/mesa/files/0002-meson.build-make-TLS-ELF-optional.patch b/meta-ti-bsp/recipes-graphics/mesa/files/0002-meson.build-make-TLS-ELF-optional.patch
new file mode 100644
index 00000000..1b9c1ba3
--- /dev/null
+++ b/meta-ti-bsp/recipes-graphics/mesa/files/0002-meson.build-make-TLS-ELF-optional.patch
@@ -0,0 +1,61 @@
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 : '',