diff options
Diffstat (limited to 'meta-agl-drm-lease/recipes-graphics/weston/weston/0002-Add-DRM-lease-support.patch')
-rw-r--r-- | meta-agl-drm-lease/recipes-graphics/weston/weston/0002-Add-DRM-lease-support.patch | 82 |
1 files changed, 48 insertions, 34 deletions
diff --git a/meta-agl-drm-lease/recipes-graphics/weston/weston/0002-Add-DRM-lease-support.patch b/meta-agl-drm-lease/recipes-graphics/weston/weston/0002-Add-DRM-lease-support.patch index 5b2d69ae..a2249460 100644 --- a/meta-agl-drm-lease/recipes-graphics/weston/weston/0002-Add-DRM-lease-support.patch +++ b/meta-agl-drm-lease/recipes-graphics/weston/weston/0002-Add-DRM-lease-support.patch @@ -1,23 +1,26 @@ -From 24ece5f73b7c9377e14d74c2b14c9ae3504edcc3 Mon Sep 17 00:00:00 2001 +From 5c315a4e4ab5e0d0376508f72c6f8a8070251c3f Mon Sep 17 00:00:00 2001 From: Damian Hobson-Garcia <dhobsong@igel.co.jp> -Date: Fri, 5 Mar 2021 19:24:35 +0900 -Subject: [PATCH 2/2] Add DRM lease support +Date: Mon, 11 Apr 2022 18:43:06 +0900 +Subject: [PATCH 2/3] Add DRM lease support Add a command line option to use a DRM lease instead of a primary node for output when using the DRM backend. + +%% original patch: 0002-Add-DRM-lease-support.patch --- - compositor/drm-lease.c | 53 ++++++++++++++++++++++++++++++++++++++++++ - compositor/drm-lease.h | 40 +++++++++++++++++++++++++++++++ - compositor/main.c | 11 ++++++++- - compositor/meson.build | 5 ++++ - meson_options.txt | 7 ++++++ - 5 files changed, 115 insertions(+), 1 deletion(-) + compositor/drm-lease.c | 53 +++++++++++++++++++++++++++++++++++++ + compositor/drm-lease.h | 40 ++++++++++++++++++++++++++++ + compositor/main.c | 10 +++++++ + compositor/meson.build | 5 ++++ + libweston/backend-drm/drm.c | 1 + + meson_options.txt | 7 +++++ + 6 files changed, 116 insertions(+) create mode 100644 compositor/drm-lease.c create mode 100644 compositor/drm-lease.h diff --git a/compositor/drm-lease.c b/compositor/drm-lease.c new file mode 100644 -index 00000000..fdb1f5e2 +index 0000000..fdb1f5e --- /dev/null +++ b/compositor/drm-lease.c @@ -0,0 +1,53 @@ @@ -76,7 +79,7 @@ index 00000000..fdb1f5e2 + diff --git a/compositor/drm-lease.h b/compositor/drm-lease.h new file mode 100644 -index 00000000..a102e4cb +index 0000000..a102e4c --- /dev/null +++ b/compositor/drm-lease.h @@ -0,0 +1,40 @@ @@ -121,26 +124,26 @@ index 00000000..a102e4cb + +#endif diff --git a/compositor/main.c b/compositor/main.c -index 7d5373f7..dae754aa 100644 +index 322f2ff..419ad06 100644 --- a/compositor/main.c +++ b/compositor/main.c @@ -65,6 +65,7 @@ #include <libweston/weston-log.h> - #include "../remoting/remoting-plugin.h" - #include "../pipewire/pipewire-plugin.h" + #include <libweston/remoting-plugin.h> + #include <libweston/pipewire-plugin.h> +#include "drm-lease.h" #define WINDOW_TITLE "Weston Compositor" /* flight recorder size (in bytes) */ -@@ -122,6 +123,7 @@ struct wet_compositor { - int (*simple_output_configure)(struct weston_output *output); - bool init_failed; - struct wl_list layoutput_list; /**< wet_layoutput::compositor_link */ +@@ -127,6 +128,7 @@ struct wet_compositor { + pid_t autolaunch_pid; + bool autolaunch_watch; + bool use_color_manager; + struct dlm_lease *drm_lease; }; static FILE *weston_logfile = NULL; -@@ -669,6 +671,9 @@ usage(int error_code) +@@ -687,6 +689,9 @@ usage(int error_code) " --seat=SEAT\t\tThe seat that weston should run on, instead of the seat defined in XDG_SEAT\n" " --tty=TTY\t\tThe tty to use\n" " --drm-device=CARD\tThe DRM device to use, e.g. \"card0\".\n" @@ -148,42 +151,41 @@ index 7d5373f7..dae754aa 100644 + " --drm-lease=lease\tUse the specified DRM lease. e.g \"card0-HDMI-A-1\"\n" +#endif " --use-pixman\t\tUse the pixman (CPU) renderer\n" - " --current-mode\tPrefer current KMS mode over EDID preferred mode\n\n"); - #endif -@@ -2481,6 +2486,7 @@ load_drm_backend(struct weston_compositor *c, - struct weston_config_section *section; + " --current-mode\tPrefer current KMS mode over EDID preferred mode\n" + " --continue-without-input\tAllow the compositor to start without input devices\n\n"); +@@ -2626,6 +2631,7 @@ load_drm_backend(struct weston_compositor *c, struct wet_compositor *wet = to_wet_compositor(c); + bool without_input = false; int ret = 0; + char *drm_lease_name = NULL; wet->drm_use_current_mode = false; -@@ -2492,6 +2498,7 @@ load_drm_backend(struct weston_compositor *c, +@@ -2637,6 +2643,7 @@ load_drm_backend(struct weston_compositor *c, { WESTON_OPTION_STRING, "seat", 0, &config.seat_id }, { WESTON_OPTION_INTEGER, "tty", 0, &config.tty }, { WESTON_OPTION_STRING, "drm-device", 0, &config.specific_device }, + { WESTON_OPTION_STRING, "drm-lease", 0, &drm_lease_name }, { WESTON_OPTION_BOOLEAN, "current-mode", 0, &wet->drm_use_current_mode }, { WESTON_OPTION_BOOLEAN, "use-pixman", 0, &config.use_pixman }, - }; -@@ -2510,7 +2517,7 @@ load_drm_backend(struct weston_compositor *c, + { WESTON_OPTION_BOOLEAN, "continue-without-input", false, &without_input } +@@ -2658,6 +2665,7 @@ load_drm_backend(struct weston_compositor *c, config.base.struct_version = WESTON_DRM_BACKEND_CONFIG_VERSION; config.base.struct_size = sizeof(struct weston_drm_backend_config); config.configure_device = configure_input_device; -- config.device_fd = -1; + config.device_fd = get_drm_lease(&wet->drm_lease, drm_lease_name); wet->heads_changed_listener.notify = drm_heads_changed; weston_compositor_add_heads_changed_listener(c, -@@ -2527,6 +2534,7 @@ load_drm_backend(struct weston_compositor *c, - +@@ -2675,6 +2683,7 @@ load_drm_backend(struct weston_compositor *c, free(config.gbm_format); free(config.seat_id); + free(config.specific_device); + free(drm_lease_name); return ret; } -@@ -3373,6 +3381,7 @@ out: +@@ -3577,6 +3586,7 @@ out: /* free(NULL) is valid, and it won't be NULL if it's used */ free(wet.parsed_options); @@ -192,7 +194,7 @@ index 7d5373f7..dae754aa 100644 if (protologger) wl_protocol_logger_destroy(protologger); diff --git a/compositor/meson.build b/compositor/meson.build -index e1334d6a..e5b82a88 100644 +index 8a54ea9..5700d25 100644 --- a/compositor/meson.build +++ b/compositor/meson.build @@ -25,6 +25,11 @@ if get_option('xwayland') @@ -207,11 +209,23 @@ index e1334d6a..e5b82a88 100644 libexec_weston = shared_library( 'exec_weston', +diff --git a/libweston/backend-drm/drm.c b/libweston/backend-drm/drm.c +index 0707db7..03e80ce 100644 +--- a/libweston/backend-drm/drm.c ++++ b/libweston/backend-drm/drm.c +@@ -3267,6 +3267,7 @@ static void + config_init_to_defaults(struct weston_drm_backend_config *config) + { + config->use_pixman_shadow = true; ++ config->device_fd = -1; + } + + WL_EXPORT int diff --git a/meson_options.txt b/meson_options.txt -index 73ef2c34..9cb27536 100644 +index 8a527d7..db9f19b 100644 --- a/meson_options.txt +++ b/meson_options.txt -@@ -113,6 +113,13 @@ option( +@@ -106,6 +106,13 @@ option( description: 'Virtual remote output with Pipewire on DRM backend' ) @@ -226,5 +240,5 @@ index 73ef2c34..9cb27536 100644 'shell-desktop', type: 'boolean', -- -2.25.1 +2.17.1 |