diff options
author | Marius Vlad <marius.vlad@collabora.com> | 2024-05-04 23:45:09 +0300 |
---|---|---|
committer | Marius Vlad <marius.vlad@collabora.com> | 2024-05-05 00:46:05 +0300 |
commit | 4e80a5b1cfb7b1e1e3bb65661fe1816e577b8503 (patch) | |
tree | b65ef74d46b5756b52501a032f83fbef38d5ee27 /meta-agl-drm-lease/dynamic-layers/meta-agl-core/recipes-graphics | |
parent | 7c7ce9c76e2fbf0c019b41d253da45bad3eda518 (diff) |
agl-compositor: Update/port patches for AGL compositor
Bug-AGL: SPEC-5123
Change-Id: If1c541a1bad718ee7bc7634c0ccc83892fdf4a0e
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Diffstat (limited to 'meta-agl-drm-lease/dynamic-layers/meta-agl-core/recipes-graphics')
-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 |
1 files changed, 52 insertions, 41 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 |