diff options
author | Andrew Davis <afd@ti.com> | 2025-07-31 13:16:17 -0500 |
---|---|---|
committer | Ryan Eatmon <reatmon@ti.com> | 2025-07-31 14:53:45 -0500 |
commit | 0b73bcdd128a5845b75e5000c575b9a75ebdeffb (patch) | |
tree | c68fd6312bbcdb6e8e5c5220604b4a606bfa1e51 | |
parent | 8200cee36c0425a7ddf40a41e3819c73887ba6a6 (diff) | |
download | meta-ti-0b73bcdd128a5845b75e5000c575b9a75ebdeffb.tar.gz |
recipes-graphics: Add weston fix for SGX from meta-arago
This change is needed due to the SGX driver, any distro, not just Arago,
using a TI SoC with SGX will need this fix, so it should go in meta-ti.
Signed-off-by: Andrew Davis <afd@ti.com>
Acked-by: Denys Dmytriyenko <denys@konsulko.com>
Signed-off-by: Ryan Eatmon <reatmon@ti.com>
3 files changed, 106 insertions, 0 deletions
diff --git a/meta-ti-bsp/recipes-graphics/wayland/weston-ti-version.inc b/meta-ti-bsp/recipes-graphics/wayland/weston-ti-version.inc new file mode 100644 index 00000000..fafef724 --- /dev/null +++ b/meta-ti-bsp/recipes-graphics/wayland/weston-ti-version.inc | |||
@@ -0,0 +1,7 @@ | |||
1 | FILESEXTRAPATHS:prepend := "${THISDIR}/weston:" | ||
2 | |||
3 | PR:append = ".ti-soc1" | ||
4 | |||
5 | SRC_URI += " \ | ||
6 | file://0001-Revert-require-GL_EXT_unpack_subimage-commit.patch \ | ||
7 | " | ||
diff --git a/meta-ti-bsp/recipes-graphics/wayland/weston/0001-Revert-require-GL_EXT_unpack_subimage-commit.patch b/meta-ti-bsp/recipes-graphics/wayland/weston/0001-Revert-require-GL_EXT_unpack_subimage-commit.patch new file mode 100644 index 00000000..fbe8f2bb --- /dev/null +++ b/meta-ti-bsp/recipes-graphics/wayland/weston/0001-Revert-require-GL_EXT_unpack_subimage-commit.patch | |||
@@ -0,0 +1,95 @@ | |||
1 | From 5a05e5b66dd3831a9c9c2b3f64bd42419d9ade2d Mon Sep 17 00:00:00 2001 | ||
2 | From: Denys Dmytriyenko <denys@konsulko.com> | ||
3 | Date: Thu, 6 Jul 2023 01:48:41 +0000 | ||
4 | Subject: [PATCH] Revert require GL_EXT_unpack_subimage commit | ||
5 | |||
6 | This reverts commit 593d5af43a8e2c2a3371088fa7ae430d0517c82d. | ||
7 | |||
8 | That commit removed support for GPU drivers without GL_EXT_unpack_subimage | ||
9 | which SGX does not support. Add back support for GPUs without this | ||
10 | extension. | ||
11 | |||
12 | Upstream-Status: Inappropriate [specific to TI SGX] | ||
13 | |||
14 | Signed-off-by: Andrew Davis <afd@ti.com> | ||
15 | Signed-off-by: Denys Dmytriyenko <denys@konsulko.com> | ||
16 | |||
17 | --- | ||
18 | libweston/renderer-gl/gl-renderer-internal.h | 2 ++ | ||
19 | libweston/renderer-gl/gl-renderer.c | 29 ++++++++++++++++---- | ||
20 | 2 files changed, 26 insertions(+), 5 deletions(-) | ||
21 | |||
22 | diff --git a/libweston/renderer-gl/gl-renderer-internal.h b/libweston/renderer-gl/gl-renderer-internal.h | ||
23 | index 5032035..85616c9 100644 | ||
24 | --- a/libweston/renderer-gl/gl-renderer-internal.h | ||
25 | +++ b/libweston/renderer-gl/gl-renderer-internal.h | ||
26 | @@ -229,6 +229,8 @@ struct gl_renderer { | ||
27 | PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC create_platform_window; | ||
28 | bool has_platform_base; | ||
29 | |||
30 | + bool has_unpack_subimage; | ||
31 | + | ||
32 | PFNEGLBINDWAYLANDDISPLAYWL bind_display; | ||
33 | PFNEGLUNBINDWAYLANDDISPLAYWL unbind_display; | ||
34 | PFNEGLQUERYWAYLANDBUFFERWL query_buffer; | ||
35 | diff --git a/libweston/renderer-gl/gl-renderer.c b/libweston/renderer-gl/gl-renderer.c | ||
36 | index e694418b..2be6d621 100644 | ||
37 | --- a/libweston/renderer-gl/gl-renderer.c | ||
38 | +++ b/libweston/renderer-gl/gl-renderer.c | ||
39 | @@ -2523,6 +2523,7 @@ gl_renderer_flush_damage(struct weston_paint_node *pnode) | ||
40 | struct weston_surface *surface = pnode->surface; | ||
41 | const struct weston_testsuite_quirks *quirks = | ||
42 | &surface->compositor->test_data.test_quirks; | ||
43 | + struct gl_renderer *gr = get_renderer(surface->compositor); | ||
44 | struct weston_buffer *buffer = surface->buffer_ref.buffer; | ||
45 | struct gl_surface_state *gs = get_surface_state(surface); | ||
46 | struct gl_buffer_state *gb = gs->buffer; | ||
47 | @@ -2550,6 +2551,24 @@ gl_renderer_flush_damage(struct weston_paint_node *pnode) | ||
48 | |||
49 | data = wl_shm_buffer_get_data(buffer->shm_buffer); | ||
50 | |||
51 | + if (!gr->has_unpack_subimage) { | ||
52 | + wl_shm_buffer_begin_access(buffer->shm_buffer); | ||
53 | + for (j = 0; j < gs->buffer->num_textures; j++) { | ||
54 | + glBindTexture(GL_TEXTURE_2D, gs->buffer->textures[j]); | ||
55 | + glTexImage2D(GL_TEXTURE_2D, 0, | ||
56 | + gs->buffer->gl_format[j], | ||
57 | + gs->buffer->pitch / pixel_format_hsub(buffer->pixel_format, j), | ||
58 | + buffer->height / pixel_format_vsub(buffer->pixel_format, j), | ||
59 | + 0, | ||
60 | + gl_format_from_internal(gs->buffer->gl_format[j]), | ||
61 | + gs->buffer->gl_pixel_type, | ||
62 | + data + gs->buffer->offset[j]); | ||
63 | + } | ||
64 | + wl_shm_buffer_end_access(buffer->shm_buffer); | ||
65 | + | ||
66 | + goto done; | ||
67 | + } | ||
68 | + | ||
69 | if (gb->needs_full_upload || quirks->gl_force_full_upload) { | ||
70 | wl_shm_buffer_begin_access(buffer->shm_buffer); | ||
71 | |||
72 | @@ -4754,11 +4773,9 @@ gl_renderer_setup(struct weston_compositor *ec) | ||
73 | else | ||
74 | ec->read_format = pixel_format_get_info(DRM_FORMAT_ABGR8888); | ||
75 | |||
76 | - if (gr->gl_version < gr_gl_version(3, 0) && | ||
77 | - !weston_check_egl_extension(extensions, "GL_EXT_unpack_subimage")) { | ||
78 | - weston_log("GL_EXT_unpack_subimage not available.\n"); | ||
79 | - return -1; | ||
80 | - } | ||
81 | + if (gr->gl_version >= gr_gl_version(3, 0) || | ||
82 | + weston_check_egl_extension(extensions, "GL_EXT_unpack_subimage")) | ||
83 | + gr->has_unpack_subimage = true; | ||
84 | |||
85 | if (gr->gl_version >= gr_gl_version(3, 0) || | ||
86 | weston_check_egl_extension(extensions, "GL_EXT_texture_type_2_10_10_10_REV")) | ||
87 | @@ -4880,6 +4897,8 @@ gl_renderer_setup(struct weston_compositor *ec) | ||
88 | gr_gl_version_minor(gr->gl_version)); | ||
89 | weston_log_continue(STAMP_SPACE "read-back format: %s\n", | ||
90 | ec->read_format->drm_format_name); | ||
91 | + weston_log_continue(STAMP_SPACE "wl_shm sub-image to texture: %s\n", | ||
92 | + gr->has_unpack_subimage ? "yes" : "no"); | ||
93 | weston_log_continue(STAMP_SPACE "glReadPixels supports y-flip: %s\n", | ||
94 | yesno(gr->has_pack_reverse)); | ||
95 | weston_log_continue(STAMP_SPACE "glReadPixels supports PBO: %s\n", | ||
diff --git a/meta-ti-bsp/recipes-graphics/wayland/weston_14.0.%.bbappend b/meta-ti-bsp/recipes-graphics/wayland/weston_14.0.%.bbappend new file mode 100644 index 00000000..cf4f530a --- /dev/null +++ b/meta-ti-bsp/recipes-graphics/wayland/weston_14.0.%.bbappend | |||
@@ -0,0 +1,4 @@ | |||
1 | WESTON_TI_VERSION = "" | ||
2 | WESTON_TI_VERSION:ti-soc = "${BPN}-ti-version.inc" | ||
3 | |||
4 | require ${WESTON_TI_VERSION} | ||