summaryrefslogtreecommitdiffstats
path: root/meta-agl-drm-lease/recipes-graphics
diff options
context:
space:
mode:
Diffstat (limited to 'meta-agl-drm-lease/recipes-graphics')
-rw-r--r--meta-agl-drm-lease/recipes-graphics/agl-compositor/agl-compositor-init.bbappend3
-rw-r--r--meta-agl-drm-lease/recipes-graphics/agl-compositor/agl-compositor/0001-Add-drm-lease-support.patch211
-rw-r--r--meta-agl-drm-lease/recipes-graphics/agl-compositor/agl-compositor_git.bbappend6
-rw-r--r--meta-agl-drm-lease/recipes-graphics/kmscube/kmscube_agl-drm-lease.inc8
-rw-r--r--meta-agl-drm-lease/recipes-graphics/kmscube/kmscube_git.bbappend9
-rw-r--r--meta-agl-drm-lease/recipes-graphics/weston/weston_10.0.%.bbappend11
-rw-r--r--meta-agl-drm-lease/recipes-graphics/weston/weston_agl-drm-lease.inc10
7 files changed, 20 insertions, 238 deletions
diff --git a/meta-agl-drm-lease/recipes-graphics/agl-compositor/agl-compositor-init.bbappend b/meta-agl-drm-lease/recipes-graphics/agl-compositor/agl-compositor-init.bbappend
deleted file mode 100644
index 7b759f69..00000000
--- a/meta-agl-drm-lease/recipes-graphics/agl-compositor/agl-compositor-init.bbappend
+++ /dev/null
@@ -1,3 +0,0 @@
-DRM_LEASE_DEVICE ??= "lease0"
-AGL_COMPOSITOR_ARGS:append = " --drm-lease=${DRM_LEASE_DEVICE}"
-
diff --git a/meta-agl-drm-lease/recipes-graphics/agl-compositor/agl-compositor/0001-Add-drm-lease-support.patch b/meta-agl-drm-lease/recipes-graphics/agl-compositor/agl-compositor/0001-Add-drm-lease-support.patch
deleted file mode 100644
index 868da66d..00000000
--- a/meta-agl-drm-lease/recipes-graphics/agl-compositor/agl-compositor/0001-Add-drm-lease-support.patch
+++ /dev/null
@@ -1,211 +0,0 @@
-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
-Subject: [PATCH] Add drm-lease support
-
-Add an option to use a DRM lease instead of a DRM device
-as the video output. This will allow agl-compositor to
-operate alongside other applications output via a DRM
-lease.
-
-Signed-off-by: Damian Hobson-Garcia <dhobsong@igel.co.jp>
----
- meson.build | 6 +++++
- meson_options.txt | 7 ++++++
- src/compositor.c | 7 ++++++
- src/drm-lease.c | 52 ++++++++++++++++++++++++++++++++++++++++++++
- src/drm-lease.h | 19 ++++++++++++++++
- src/ivi-compositor.h | 2 ++
- 6 files changed, 93 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
---- a/meson.build
-+++ b/meson.build
-@@ -194,6 +194,12 @@ elif policy_to_install == 'rba'
- message('Installing rba policy')
- endif
-
-+if get_option('drm-lease')
-+ deps_libweston += dependency('libdlmclient')
-+ srcs_agl_compositor += 'src/drm-lease.c'
-+ config_h.set('HAVE_DRM_LEASE', '1')
-+endif
-+
- # From meson documentation:
- # 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
---- a/meson_options.txt
-+++ b/meson_options.txt
-@@ -5,3 +5,10 @@ option(
- value: 'allow-all',
- description: 'Default policy when no specific policy was set'
- )
-+
-+option(
-+ 'drm-lease',
-+ type: 'boolean',
-+ value: false,
-+ description: 'Support for running weston with a leased DRM Master'
-+)
-diff --git a/src/compositor.c b/src/compositor.c
-index 634c468..f328a99 100644
---- a/src/compositor.c
-+++ b/src/compositor.c
-@@ -64,6 +64,8 @@
- #include <waltham-transmitter/transmitter_api.h>
- #endif
-
-+#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;
- 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;
-+ 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[])
- error:
- free(config.gbm_format);
- free(config.seat_id);
-+ free(drm_lease_name);
- return ret;
- }
-
-@@ -1833,6 +1839,7 @@ error_compositor:
- free(modules);
- modules = NULL;
-
-+ release_drm_lease(ivi.drm_lease);
- weston_compositor_destroy(ivi.compositor);
-
- weston_log_scope_destroy(log_scope);
-diff --git a/src/drm-lease.c b/src/drm-lease.c
-new file mode 100644
-index 0000000..887277d
---- /dev/null
-+++ b/src/drm-lease.c
-@@ -0,0 +1,52 @@
-+/*
-+ * Copyright © 2022 IGEL Co., Ltd.
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining
-+ * a copy of this software and associated documentation files (the
-+ * "Software"), to deal in the Software without restriction, including
-+ * without limitation the rights to use, copy, modify, merge, publish,
-+ * distribute, sublicense, and/or sell copies of the Software, and to
-+ * permit persons to whom the Software is furnished to do so, subject to
-+ * the following conditions:
-+ *
-+ * The above copyright notice and this permission notice (including the
-+ * next paragraph) shall be included in all copies or substantial
-+ * portions of the Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-+ * SOFTWARE.
-+ */
-+
-+#include "drm-lease.h"
-+
-+#include <libweston/libweston.h>
-+
-+int get_drm_lease(struct dlm_lease **drm_lease, const char *drm_lease_name) {
-+ if (!drm_lease_name)
-+ return -1;
-+
-+ int drm_fd = -1;
-+ struct dlm_lease *lease = dlm_get_lease(drm_lease_name);
-+ if (lease) {
-+ drm_fd = dlm_lease_fd(lease);
-+ if (drm_fd < 0)
-+ dlm_release_lease(lease);
-+ }
-+ if (drm_fd < 0)
-+ weston_log("Could not get DRM lease %s\n", drm_lease_name);
-+
-+ *drm_lease = lease;
-+ return drm_fd;
-+}
-+
-+void release_drm_lease(struct dlm_lease *lease) {
-+ if (lease)
-+ dlm_release_lease(lease);
-+}
-+
-diff --git a/src/drm-lease.h b/src/drm-lease.h
-new file mode 100644
-index 0000000..9fdc428
---- /dev/null
-+++ b/src/drm-lease.h
-@@ -0,0 +1,19 @@
-+#ifndef DRM_LEASE_H
-+#define DRM_LEASE_H
-+
-+#include "config.h"
-+
-+#ifdef HAVE_DRM_LEASE
-+#include <dlmclient.h>
-+int get_drm_lease(struct dlm_lease **drm_lease, const char *drm_lease_name);
-+void release_drm_lease(struct dlm_lease *drm_lease);
-+#else
-+struct dlm_lease;
-+static int get_drm_lease(struct dlm_lease **drm_lease, const char *drm_lease_name) {
-+ return -1;
-+}
-+static void release_drm_lease(struct dlm_lease *drm_lease) {
-+}
-+
-+#endif
-+#endif /* DRM_LEASE_H */
-diff --git a/src/ivi-compositor.h b/src/ivi-compositor.h
-index bf96fc7..fcf11bf 100644
---- a/src/ivi-compositor.h
-+++ b/src/ivi-compositor.h
-@@ -35,6 +35,7 @@
- #include <libweston-desktop/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;
-
- struct wl_list child_process_list;
-+ struct dlm_lease *drm_lease;
- };
-
- struct ivi_surface;
---
-2.35.1
-
diff --git a/meta-agl-drm-lease/recipes-graphics/agl-compositor/agl-compositor_git.bbappend b/meta-agl-drm-lease/recipes-graphics/agl-compositor/agl-compositor_git.bbappend
deleted file mode 100644
index 3c64ce1f..00000000
--- a/meta-agl-drm-lease/recipes-graphics/agl-compositor/agl-compositor_git.bbappend
+++ /dev/null
@@ -1,6 +0,0 @@
-FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
-
-SRC_URI += "file://0001-Add-drm-lease-support.patch"
-
-PACKAGECONFIG[drm-lease] = "-Ddrm-lease=true,-Ddrm-lease=false,drm-lease-manager"
-PACKAGECONFIG:append = " drm-lease"
diff --git a/meta-agl-drm-lease/recipes-graphics/kmscube/kmscube_agl-drm-lease.inc b/meta-agl-drm-lease/recipes-graphics/kmscube/kmscube_agl-drm-lease.inc
new file mode 100644
index 00000000..bc9e8b34
--- /dev/null
+++ b/meta-agl-drm-lease/recipes-graphics/kmscube/kmscube_agl-drm-lease.inc
@@ -0,0 +1,8 @@
+FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
+
+
+SRC_URI += "file://0001-texturator-Use-correct-GL-extension-header.patch \
+ file://0002-Add-DRM-lease-support.patch"
+
+PACKAGECONFIG += "drm-lease"
+PACKAGECONFIG[drm-lease] = "-Ddrm_lease=enabled,-Ddrm_lease=disabled,drm-lease-manager"
diff --git a/meta-agl-drm-lease/recipes-graphics/kmscube/kmscube_git.bbappend b/meta-agl-drm-lease/recipes-graphics/kmscube/kmscube_git.bbappend
index bc9e8b34..f49e6acb 100644
--- a/meta-agl-drm-lease/recipes-graphics/kmscube/kmscube_git.bbappend
+++ b/meta-agl-drm-lease/recipes-graphics/kmscube/kmscube_git.bbappend
@@ -1,8 +1 @@
-FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
-
-
-SRC_URI += "file://0001-texturator-Use-correct-GL-extension-header.patch \
- file://0002-Add-DRM-lease-support.patch"
-
-PACKAGECONFIG += "drm-lease"
-PACKAGECONFIG[drm-lease] = "-Ddrm_lease=enabled,-Ddrm_lease=disabled,drm-lease-manager"
+require ${@bb.utils.contains('AGL_FEATURES', 'agl-drm-lease', 'kmscube_agl-drm-lease.inc', '', d)}
diff --git a/meta-agl-drm-lease/recipes-graphics/weston/weston_10.0.%.bbappend b/meta-agl-drm-lease/recipes-graphics/weston/weston_10.0.%.bbappend
index 8152a264..0aca4cff 100644
--- a/meta-agl-drm-lease/recipes-graphics/weston/weston_10.0.%.bbappend
+++ b/meta-agl-drm-lease/recipes-graphics/weston/weston_10.0.%.bbappend
@@ -1,10 +1 @@
-FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
-
-SRC_URI:append = " \
- file://0001-backend-drm-Add-method-to-import-DRM-fd.patch \
- file://0002-Add-DRM-lease-support.patch \
- file://0001-compositor-do-not-request-repaint-in-output_enable.patch \
- "
-
-PACKAGECONFIG[drm-lease] = "-Ddrm-lease=true,-Ddrm-lease=false,drm-lease-manager"
-PACKAGECONFIG:append = " drm-lease"
+require ${@bb.utils.contains('AGL_FEATURES', 'agl-drm-lease', 'weston_agl-drm-lease.inc', '', d)}
diff --git a/meta-agl-drm-lease/recipes-graphics/weston/weston_agl-drm-lease.inc b/meta-agl-drm-lease/recipes-graphics/weston/weston_agl-drm-lease.inc
new file mode 100644
index 00000000..8152a264
--- /dev/null
+++ b/meta-agl-drm-lease/recipes-graphics/weston/weston_agl-drm-lease.inc
@@ -0,0 +1,10 @@
+FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
+
+SRC_URI:append = " \
+ file://0001-backend-drm-Add-method-to-import-DRM-fd.patch \
+ file://0002-Add-DRM-lease-support.patch \
+ file://0001-compositor-do-not-request-repaint-in-output_enable.patch \
+ "
+
+PACKAGECONFIG[drm-lease] = "-Ddrm-lease=true,-Ddrm-lease=false,drm-lease-manager"
+PACKAGECONFIG:append = " drm-lease"