diff options
Diffstat (limited to 'meta-agl-drm-lease/dynamic-layers')
-rw-r--r-- | meta-agl-drm-lease/dynamic-layers/meta-agl-core/recipes-graphics/agl-compositor/agl-compositor/0001-Add-drm-lease-support.patch | 93 | ||||
-rw-r--r-- | meta-agl-drm-lease/dynamic-layers/meta-raspberrypi/recipes-graphics/mesa/mesa/0001-Workaround-Disable-DRM_AUTH-checks-on-wayland-protocols.patch | 17 | ||||
-rw-r--r-- | meta-agl-drm-lease/dynamic-layers/meta-raspberrypi/recipes-graphics/mesa/mesa_24.%.bbappend (renamed from meta-agl-drm-lease/dynamic-layers/meta-raspberrypi/recipes-graphics/mesa/mesa_22.%.bbappend) | 0 |
3 files changed, 61 insertions, 49 deletions
diff --git a/meta-agl-drm-lease/dynamic-layers/meta-agl-core/recipes-graphics/agl-compositor/agl-compositor/0001-Add-drm-lease-support.patch b/meta-agl-drm-lease/dynamic-layers/meta-agl-core/recipes-graphics/agl-compositor/agl-compositor/0001-Add-drm-lease-support.patch index 868da66d..a5853d36 100644 --- a/meta-agl-drm-lease/dynamic-layers/meta-agl-core/recipes-graphics/agl-compositor/agl-compositor/0001-Add-drm-lease-support.patch +++ b/meta-agl-drm-lease/dynamic-layers/meta-agl-core/recipes-graphics/agl-compositor/agl-compositor/0001-Add-drm-lease-support.patch @@ -1,6 +1,6 @@ -From d70ec96c2703c421bff55f5d2dce8d8aa5f8819b Mon Sep 17 00:00:00 2001 -From: Damian Hobson-Garcia <dhobsong@igel.co.jp> -Date: Tue, 12 Apr 2022 15:12:27 +0900 +From 7963529fc8e3e17a9596ef27cccc5c1b9e065e30 Mon Sep 17 00:00:00 2001 +From: Marius Vlad <marius.vlad@collabora.com> +Date: Fri, 3 May 2024 14:29:13 +0300 Subject: [PATCH] Add drm-lease support Add an option to use a DRM lease instead of a DRM device @@ -8,23 +8,25 @@ as the video output. This will allow agl-compositor to operate alongside other applications output via a DRM lease. +Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Signed-off-by: Damian Hobson-Garcia <dhobsong@igel.co.jp> +Change-Id: I78f8b9425280d4c0606003cd86f4cf30c065b888 --- meson.build | 6 +++++ - meson_options.txt | 7 ++++++ + meson_options.txt | 8 +++++++ src/compositor.c | 7 ++++++ src/drm-lease.c | 52 ++++++++++++++++++++++++++++++++++++++++++++ src/drm-lease.h | 19 ++++++++++++++++ src/ivi-compositor.h | 2 ++ - 6 files changed, 93 insertions(+) + 6 files changed, 94 insertions(+) create mode 100644 src/drm-lease.c create mode 100644 src/drm-lease.h diff --git a/meson.build b/meson.build -index 0958f06..cc5085f 100644 +index aa811ad..f5a98e8 100644 --- a/meson.build +++ b/meson.build -@@ -194,6 +194,12 @@ elif policy_to_install == 'rba' +@@ -163,6 +163,12 @@ elif policy_to_install == 'rba' message('Installing rba policy') endif @@ -38,14 +40,22 @@ index 0958f06..cc5085f 100644 # In order to look for headers in a specific directory you can use args : # '-I/extra/include/dir, but this should only be used in exceptional cases for diff --git a/meson_options.txt b/meson_options.txt -index dd1f3c0..89de273 100644 +index 7c0e103..e0463f4 100644 --- a/meson_options.txt +++ b/meson_options.txt -@@ -5,3 +5,10 @@ option( +@@ -5,6 +5,7 @@ option( value: 'allow-all', description: 'Default policy when no specific policy was set' ) + + option( + 'grpc-proxy', + type: 'boolean', +@@ -24,3 +25,10 @@ option( + value: '/usr/bin/Xwayland', + description: 'Xwayland: path to installed Xwayland binary' + ) ++ +option( + 'drm-lease', + type: 'boolean', @@ -53,49 +63,50 @@ index dd1f3c0..89de273 100644 + description: 'Support for running weston with a leased DRM Master' +) diff --git a/src/compositor.c b/src/compositor.c -index 634c468..f328a99 100644 +index 078157a..156a0ae 100644 --- a/src/compositor.c +++ b/src/compositor.c -@@ -64,6 +64,8 @@ - #include <waltham-transmitter/transmitter_api.h> - #endif +@@ -57,6 +57,8 @@ + #include "config.h" + #include "agl-shell-server-protocol.h" +#include "drm-lease.h" + - static int cached_tm_mday = -1; - static struct weston_log_scope *log_scope; - -@@ -904,11 +906,13 @@ load_drm_backend(struct ivi_compositor *ivi, int *argc, char *argv[]) - int use_pixman = 0; + #ifdef HAVE_REMOTING + #include "remote.h" + #endif +@@ -1069,6 +1071,7 @@ load_drm_backend(struct ivi_compositor *ivi, int *argc, char *argv[], + bool force_pixman = false; bool use_shadow; bool without_input = false; + char *drm_lease_name = NULL; - int ret; const struct weston_option options[] = { { WESTON_OPTION_STRING, "seat", 0, &config.seat_id }, - { WESTON_OPTION_STRING, "drm-device", 0, &config.specific_device }, -+ { WESTON_OPTION_STRING, "drm-lease", 0, &drm_lease_name }, - { WESTON_OPTION_BOOLEAN, "current-mode", 0, &use_current_mode }, - { WESTON_OPTION_BOOLEAN, "use-pixman", 0, &use_pixman }, - { WESTON_OPTION_BOOLEAN, "continue-without-input", false, &without_input } -@@ -916,6 +920,7 @@ load_drm_backend(struct ivi_compositor *ivi, int *argc, char *argv[]) - - parse_options(options, ARRAY_LENGTH(options), argc, argv); - config.use_pixman = use_pixman; +@@ -1094,6 +1097,7 @@ load_drm_backend(struct ivi_compositor *ivi, int *argc, char *argv[], + &config.pageflip_timeout, 0); + weston_config_section_get_bool(section, "pixman-shadow", &use_shadow, 1); + config.use_pixman_shadow = use_shadow; + config.device_fd = get_drm_lease(&ivi->drm_lease, drm_lease_name); - ivi->cmdline.use_current_mode = use_current_mode; - section = weston_config_get_section(ivi->config, "core", NULL, NULL); -@@ -947,6 +952,7 @@ load_drm_backend(struct ivi_compositor *ivi, int *argc, char *argv[]) + if (without_input) + ivi->compositor->require_input = !without_input; +@@ -1114,12 +1118,14 @@ load_drm_backend(struct ivi_compositor *ivi, int *argc, char *argv[], + goto error; + } + ++ free(drm_lease_name); + load_remoting_plugin(ivi, ivi->config); + + return 0; + error: free(config.gbm_format); - free(config.seat_id); + free(drm_lease_name); - return ret; + free(config.seat_id); + return -1; } - -@@ -1833,6 +1839,7 @@ error_compositor: +@@ -2263,6 +2269,7 @@ error_compositor: free(modules); modules = NULL; @@ -187,25 +198,25 @@ index 0000000..9fdc428 +#endif +#endif /* DRM_LEASE_H */ diff --git a/src/ivi-compositor.h b/src/ivi-compositor.h -index bf96fc7..fcf11bf 100644 +index 695cf95..e3df79a 100644 --- a/src/ivi-compositor.h +++ b/src/ivi-compositor.h -@@ -35,6 +35,7 @@ - #include <libweston-desktop/libweston-desktop.h> +@@ -36,6 +36,7 @@ + #include <libweston/desktop.h> #include "remote.h" +#include "drm-lease.h" #include "agl-shell-server-protocol.h" -@@ -114,6 +115,7 @@ struct ivi_compositor { - struct weston_layer fullscreen; +@@ -145,6 +146,7 @@ struct ivi_compositor { + bool need_ivi_output_relayout; struct wl_list child_process_list; + struct dlm_lease *drm_lease; }; struct ivi_surface; -- -2.35.1 +2.43.0 diff --git a/meta-agl-drm-lease/dynamic-layers/meta-raspberrypi/recipes-graphics/mesa/mesa/0001-Workaround-Disable-DRM_AUTH-checks-on-wayland-protocols.patch b/meta-agl-drm-lease/dynamic-layers/meta-raspberrypi/recipes-graphics/mesa/mesa/0001-Workaround-Disable-DRM_AUTH-checks-on-wayland-protocols.patch index f6be51e0..a83ca0ee 100644 --- a/meta-agl-drm-lease/dynamic-layers/meta-raspberrypi/recipes-graphics/mesa/mesa/0001-Workaround-Disable-DRM_AUTH-checks-on-wayland-protocols.patch +++ b/meta-agl-drm-lease/dynamic-layers/meta-raspberrypi/recipes-graphics/mesa/mesa/0001-Workaround-Disable-DRM_AUTH-checks-on-wayland-protocols.patch @@ -1,4 +1,4 @@ -From f583672221b8451d03f739bc96428e97809d021a Mon Sep 17 00:00:00 2001 +From 991eb404c23c328b10894303be00c1036e6d3d3d Mon Sep 17 00:00:00 2001 From: Damian Hobson-Garcia <dhobsong@igel.co.jp> Date: Tue, 5 Apr 2022 18:09:02 +0900 Subject: [PATCH] Workaround: Disable DRM_AUTH check on wayland protocols @@ -18,25 +18,26 @@ DRM lease and/or whether the import/export can succeed without authentication. For now, just try to authenticate and ignore any failures. --- - src/egl/drivers/dri2/platform_drm.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) + src/egl/drivers/dri2/platform_drm.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/egl/drivers/dri2/platform_drm.c b/src/egl/drivers/dri2/platform_drm.c -index d0ab172..260a2c6 100644 +index 1a35ae3..0436f16 100644 --- a/src/egl/drivers/dri2/platform_drm.c +++ b/src/egl/drivers/dri2/platform_drm.c -@@ -508,7 +508,10 @@ dri2_drm_authenticate(_EGLDisplay *disp, uint32_t id) +@@ -405,7 +405,11 @@ dri2_drm_authenticate(_EGLDisplay *disp, uint32_t id) { struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp); -- return drmAuthMagic(dri2_dpy->fd, id); +- return drmAuthMagic(dri2_dpy->fd_render_gpu, id); ++ //return drmAuthMagic(dri2_dpy->fd_render_gpu, id); + /* WORKAROUND: Ignore DRM_AUTH failures. Ideally should only be done for + clienits coming through a DRM lease, but just make it global for now */ -+ drmAuthMagic(dri2_dpy->fd, id); ++ drmAuthMagic(dri2_dpy->fd_render_gpu, id); + return 0; } static void -- -2.17.1 +2.37.3 diff --git a/meta-agl-drm-lease/dynamic-layers/meta-raspberrypi/recipes-graphics/mesa/mesa_22.%.bbappend b/meta-agl-drm-lease/dynamic-layers/meta-raspberrypi/recipes-graphics/mesa/mesa_24.%.bbappend index 15e3aeba..15e3aeba 100644 --- a/meta-agl-drm-lease/dynamic-layers/meta-raspberrypi/recipes-graphics/mesa/mesa_22.%.bbappend +++ b/meta-agl-drm-lease/dynamic-layers/meta-raspberrypi/recipes-graphics/mesa/mesa_24.%.bbappend |