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} | ||
