summaryrefslogtreecommitdiffstats
path: root/meta-agl-core
diff options
context:
space:
mode:
Diffstat (limited to 'meta-agl-core')
-rw-r--r--meta-agl-core/conf/distro/poky-agl.conf8
-rw-r--r--meta-agl-core/conf/templates/base/conf-notes.txt31
-rw-r--r--meta-agl-core/conf/templates/base/local.conf.sample12
-rw-r--r--meta-agl-core/files/group1
-rw-r--r--meta-agl-core/files/passwd1
-rw-r--r--meta-agl-core/recipes-connectivity/connman-ncurses/connman-ncurses/0001-Do-not-overwrite-CFLAGS.patch2
-rw-r--r--meta-agl-core/recipes-connectivity/connman-ncurses/connman-ncurses/0001-Initialize-variables.patch2
-rw-r--r--meta-agl-core/recipes-graphics/wayland/agl-compositor_git.bb2
-rw-r--r--meta-agl-core/recipes-graphics/wayland/weston-ini-conf.bb41
-rw-r--r--meta-agl-core/recipes-graphics/wayland/weston-ini-conf.bbappend2
-rw-r--r--meta-agl-core/recipes-graphics/wayland/weston-ini-conf/remote-output.cfg.in5
-rw-r--r--meta-agl-core/recipes-graphics/wayland/weston/0001-backend-drm-don-t-leak-gem_handle_refcnt-in-drm_dest.patch27
-rw-r--r--meta-agl-core/recipes-graphics/wayland/weston/0001-libweston-Add-paint-node-destruction-into-weston_lay.patch60
-rw-r--r--meta-agl-core/recipes-graphics/wayland/weston/0002-backend-drm-always-create-gem_handle_refcnt-hash-tab.patch56
-rw-r--r--meta-agl-core/recipes-graphics/wayland/weston_13.0_aglcore.inc3
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux-agl-config-virtio.inc8
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux-agl-config.inc4
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux-agl.inc3
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux/virtio-aarch64.cfg29
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux/virtio-drm.cfg3
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux/virtio-pci.cfg3
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux/virtio-scmi.cfg25
-rw-r--r--meta-agl-core/recipes-multimedia/gstreamer1.0-plugins-bad/files/rcar-gen3/0001-Added-appid-and-title-support.patch166
-rw-r--r--meta-agl-core/recipes-support/ptest-runner/ptest-runner/0007-WIP-Initial-LAVA-support.patch41
24 files changed, 392 insertions, 143 deletions
diff --git a/meta-agl-core/conf/distro/poky-agl.conf b/meta-agl-core/conf/distro/poky-agl.conf
index 266a06d70..1ce721f59 100644
--- a/meta-agl-core/conf/distro/poky-agl.conf
+++ b/meta-agl-core/conf/distro/poky-agl.conf
@@ -9,9 +9,9 @@ DISTRO_NAME = "Automotive Grade Linux"
# Release flags
-DISTRO_CODENAME = "ricefish"
+DISTRO_CODENAME = "salmon"
AGL_BRANCH = "master"
-AGLVERSION = "17.90.0"
+AGLVERSION = "18.90.0"
# switch devel/release
#AGLRELEASETYPE ?= "agldevelopment"
@@ -29,8 +29,8 @@ DISTRO_BRANCH_VERSION_TAG = "${DISTRO_CODENAME}/${@'${DISTRO_VERSION}'.replace('
# reproducible builds:
# Set the desired timestamps
# E.g. update for (major) releases
-export SOURCE_DATE_EPOCH = "1706800000"
-REPRODUCIBLE_TIMESTAMP_ROOTFS = "1706800000"
+export SOURCE_DATE_EPOCH = "1721815278"
+REPRODUCIBLE_TIMESTAMP_ROOTFS = "1721815278"
# SDK
diff --git a/meta-agl-core/conf/templates/base/conf-notes.txt b/meta-agl-core/conf/templates/base/conf-notes.txt
index 09ae72647..2e77ae5bf 100644
--- a/meta-agl-core/conf/templates/base/conf-notes.txt
+++ b/meta-agl-core/conf/templates/base/conf-notes.txt
@@ -6,30 +6,21 @@ Common targets are:
* agl-image-minimal-crosssdk (crosssdk for ^^)
* agl-image-weston (minimal filesystem with weston)
+ * agl-image-compositor (minimal filesystem with AGL compositor)
- meta-agl-demo: (IVI demo with UI)
- with 'agl-demo'
- * agl-image-ivi (base for IVI targets)
- * agl-image-ivi-crosssdk (sdk for ^^)
+ * agl-ivi-image (base for IVI targets)
+ * agl-ivi-image-crosssdk (sdk for ^^)
- * agl-image-graphical-qt5 (weston plus qt5 framework libs)
- * agl-image-graphical-qt5-crosssdk (sdk for ^^)
+ * agl-ivi-demo-qt (IVI Qt demo image)
+ * agl-ivi-demo-qt-crosssdk (sdk for ^^)
+ * agl-ivi-demo-flutter (IVI Flutter demo image)
+ * agl-ivi-demo-html5 (IVI HTML5 demo image)
- * agl-image-graphical-html5 (weston plus chromium for html5)
-
- * agl-image-cluster (minimal image with APIs for cluster)
- * agl-image-cluster-qt5 (image with QT5 and APIs for cluster)
-
- * agl-image-telematics (image with APIs for telematics)
-
- * agl-demo-platform (* default IVI demo target *)
- * agl-demo-platform-crosssdk (sdk for ^^)
-
- * agl-cluster-demo-platform (cluster demo image)
- * agl-cluster-demo-platform-crosssdk (sdk for ^^)
- * agl-cluster-demo-qtcompositor (cluster demo using own compositor)
-
- * agl-telematics-demo-platform (telematics demo image)
- * agl-telematics-demo-platform-crosssdk (sdk for ^^)
+ * agl-cluster-demo-qt (cluster Qt demo image)
+ * agl-cluster-demo-flutter (cluster Flutter demo image)
+ * agl-telematics-demo (telematics demo image)
+ * agl-gateway-demo (gateway demo image)
diff --git a/meta-agl-core/conf/templates/base/local.conf.sample b/meta-agl-core/conf/templates/base/local.conf.sample
index be49ed00d..5e9de61b3 100644
--- a/meta-agl-core/conf/templates/base/local.conf.sample
+++ b/meta-agl-core/conf/templates/base/local.conf.sample
@@ -279,9 +279,15 @@ PACKAGECONFIG:append:pn-qemu-system-native = " sdl"
#
# A shared hash equivalent server can be set with "<HOSTNAME>:<PORT>" format
#
+# local only
#BB_HASHSERVE = "auto"
#BB_SIGNATURE_HANDLER = "OEEquivHash"
-
+#
+# online/upstream r/o
+#AGL_HOST_HASHSERV = "prserv.automotivelinux.org"
+#BB_SIGNATURE_HANDLER = "OEEquivHash"
+#BB_HASHSERVE = "auto"
+#BB_HASHSERVE_UPSTREAM = "${AGL_HOST_HASHSERV}:8888"
# The network based PR service host and port
# Uncomment the following lines to enable PRservice.
@@ -289,6 +295,10 @@ PACKAGECONFIG:append:pn-qemu-system-native = " sdl"
# start local PRService.
# Set to other values to use remote PRService.
#PRSERV_HOST = "localhost:0"
+#
+# r/o upstream prserv
+#AGL_HOST_PRSERV = "prserv.automotivelinux.org"
+#PRSERV_HOST = "prserv.automotivelinux.org:8686"
# Archive the source and put them to ${DEPLOY_DIR}/sources/.
diff --git a/meta-agl-core/files/group b/meta-agl-core/files/group
index a7e0cd17f..c7d4507b4 100644
--- a/meta-agl-core/files/group
+++ b/meta-agl-core/files/group
@@ -99,4 +99,5 @@ sgx::1010:
kuksa::900:
qemu::901:
kvm::902:
+persistent-api::903:
ptest::2001:
diff --git a/meta-agl-core/files/passwd b/meta-agl-core/files/passwd
index ea54d06e4..3f30a0480 100644
--- a/meta-agl-core/files/passwd
+++ b/meta-agl-core/files/passwd
@@ -64,5 +64,6 @@ mosquitto::1007:1007:::
pipewire::1008:1008:::
kuksa::900:900:::
qemu::901:901:::
+persistent-api::903:903:::
user::1004:100:::
ptest::2001:2001:::
diff --git a/meta-agl-core/recipes-connectivity/connman-ncurses/connman-ncurses/0001-Do-not-overwrite-CFLAGS.patch b/meta-agl-core/recipes-connectivity/connman-ncurses/connman-ncurses/0001-Do-not-overwrite-CFLAGS.patch
index 4a86e6c57..479e5c1c7 100644
--- a/meta-agl-core/recipes-connectivity/connman-ncurses/connman-ncurses/0001-Do-not-overwrite-CFLAGS.patch
+++ b/meta-agl-core/recipes-connectivity/connman-ncurses/connman-ncurses/0001-Do-not-overwrite-CFLAGS.patch
@@ -3,6 +3,8 @@ From: Jan-Simon Moeller <jsmoeller@linuxfoundation.org>
Date: Tue, 19 Jul 2022 23:28:21 +0200
Subject: [PATCH] Do not overwrite CFLAGS
+Upstream-Status: Pending
+
Signed-off-by: Jan-Simon Moeller <jsmoeller@linuxfoundation.org>
---
configure.ac | 16 ++++++++--------
diff --git a/meta-agl-core/recipes-connectivity/connman-ncurses/connman-ncurses/0001-Initialize-variables.patch b/meta-agl-core/recipes-connectivity/connman-ncurses/connman-ncurses/0001-Initialize-variables.patch
index 9a1078426..d106ada00 100644
--- a/meta-agl-core/recipes-connectivity/connman-ncurses/connman-ncurses/0001-Initialize-variables.patch
+++ b/meta-agl-core/recipes-connectivity/connman-ncurses/connman-ncurses/0001-Initialize-variables.patch
@@ -5,6 +5,8 @@ Subject: [PATCH] Initialize variables
This fixes compiler warnings.
+Upstream-Status: Pending
+
Signed-off-by: Jan-Simon Moeller <jsmoeller@linuxfoundation.org>
---
main.c | 2 +-
diff --git a/meta-agl-core/recipes-graphics/wayland/agl-compositor_git.bb b/meta-agl-core/recipes-graphics/wayland/agl-compositor_git.bb
index 41240309b..79b13df71 100644
--- a/meta-agl-core/recipes-graphics/wayland/agl-compositor_git.bb
+++ b/meta-agl-core/recipes-graphics/wayland/agl-compositor_git.bb
@@ -11,7 +11,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=fac6abe0003c4d142ff8fa1f18316df0"
DEPENDS = "wayland wayland-protocols wayland-native weston"
SRC_URI = "git://gerrit.automotivelinux.org/gerrit/src/agl-compositor.git;protocol=https;branch=${AGL_BRANCH}"
-SRCREV = "18e93caca8ad397d504215d673765871b2c88f25"
+SRCREV = "c8ffca8f9c67114ca424b88df0740943fe7768e3"
AGL_BRANCH:aglnext = "next"
SRCREV:aglnext = "${AUTOREV}"
diff --git a/meta-agl-core/recipes-graphics/wayland/weston-ini-conf.bb b/meta-agl-core/recipes-graphics/wayland/weston-ini-conf.bb
index 0611ec5b4..f6b27a14b 100644
--- a/meta-agl-core/recipes-graphics/wayland/weston-ini-conf.bb
+++ b/meta-agl-core/recipes-graphics/wayland/weston-ini-conf.bb
@@ -13,7 +13,6 @@ SRC_URI = " \
file://hdmi-a-2-90.cfg \
file://hdmi-a-2-180.cfg \
file://hdmi-a-2-270.cfg \
- file://remote-output.cfg.in \
file://virtual-0.cfg \
file://virtual-90.cfg \
file://virtual-180.cfg \
@@ -31,23 +30,12 @@ WESTON_DISPLAYS ?= "hdmi-a-1-90"
# Configuration fragments to use in weston.ini.*
# Note that some may be replaced/removed when building the landscape
# configuration.
-WESTON_FRAGMENTS = "core shell grpc-proxy ${WESTON_DISPLAYS}"
+WESTON_FRAGMENTS_BASE = "core shell"
+WESTON_FRAGMENTS = "${WESTON_FRAGMENTS_BASE} ${WESTON_DISPLAYS}"
# On-target weston.ini directory
weston_ini_dir = "${sysconfdir}/xdg/weston"
-# Options for the user to change in local.conf
-# e.g. REMOTING_OUTPUT_MODE = "1080x1488"
-REMOTING_OUTPUT_MODE ??= "640x720@30"
-REMOTING_OUTPUT_HOST ??= "192.168.10.3"
-REMOTING_OUTPUT_PORT ??= "5005"
-
-do_configure() {
- sed -e "s#host=.*#host=${REMOTING_OUTPUT_HOST}#" \
- -e "s#port=.*#port=${REMOTING_OUTPUT_PORT}#" \
- ${WORKDIR}/remote-output.cfg.in > ${WORKDIR}/remote-output.cfg
-}
-
do_compile() {
# Put all of our cfg files together for a default portrait
# orientation configuration
@@ -109,47 +97,42 @@ PACKAGE_ARCH = "${MACHINE_ARCH}"
ALTERNATIVE_LINK_NAME[weston.ini] = "${weston_ini_dir}/weston.ini"
RPROVIDES:${PN} = "weston-ini"
-RCONFLICTS:${PN} = "${PN}-landscape"
ALTERNATIVE:${PN} = "weston.ini"
ALTERNATIVE_TARGET_${PN} = "${weston_ini_dir}/weston.ini.default"
-PACKAGE_BEFORE_PN += "${PN}-landscape"
+# landscape
+PACKAGE_BEFORE_PN += "${PN}-landscape"
FILES:${PN}-landscape = "${weston_ini_dir}/weston.ini.landscape"
-
RPROVIDES:${PN}-landscape = "weston-ini"
-RCONFLICTS:${PN}-landscape = "${PN}"
ALTERNATIVE:${PN}-landscape = "weston.ini"
ALTERNATIVE_TARGET_${PN}-landscape = "${weston_ini_dir}/weston.ini.landscape"
+ALTERNATIVE_PRIORITY_${PN}-landscape = "20"
-PACKAGE_BEFORE_PN += "${PN}-landscape-inverted"
+# landscape-inverted
+PACKAGE_BEFORE_PN += "${PN}-landscape-inverted"
FILES:${PN}-landscape-inverted = "${weston_ini_dir}/weston.ini.landscape-inverted"
-
RPROVIDES:${PN}-landscape-inverted = "weston-ini"
-RCONFLICTS:${PN}-landscape-inverted = "${PN}"
ALTERNATIVE:${PN}-landscape-inverted = "weston.ini"
ALTERNATIVE_TARGET_${PN}-landscape-inverted = "${weston_ini_dir}/weston.ini.landscape-inverted"
+ALTERNATIVE_PRIORITY_${PN}-landscape-inverted = "25"
-# no activation by default
+# no-activate, no activation by default
PACKAGE_BEFORE_PN += "${PN}-no-activate"
-
FILES:${PN}-no-activate = "${weston_ini_dir}/weston.ini.default-no-activate"
-
RPROVIDES:${PN}-no-activate = "weston-ini"
-RCONFLICTS:${PN}-no-activate = "${PN}"
ALTERNATIVE:${PN}-no-activate = "weston.ini"
ALTERNATIVE_TARGET_${PN}-no-activate = "${weston_ini_dir}/weston.ini.default-no-activate"
+ALTERNATIVE_PRIORITY_${PN}-no-activate = "21"
-# landscape, no activation by default
+# landscape-no-activate, no activation by default
PACKAGE_BEFORE_PN += "${PN}-landscape-no-activate"
-
FILES:${PN}-landscape-no-activate = "${weston_ini_dir}/weston.ini.landscape-no-activate"
-
RPROVIDES:${PN}-landscape-no-activate = "weston-ini"
-RCONFLICTS:${PN}-landscape-no-activate = "${PN}"
ALTERNATIVE:${PN}-landscape-no-activate = "weston.ini"
ALTERNATIVE_TARGET_${PN}-landscape-no-activate = "${weston_ini_dir}/weston.ini.landscape-no-activate"
+ALTERNATIVE_PRIORITY_${PN}-landscape-no-activate = "26"
# This is a settings-only package, we do not need a development package
# (and its fixed dependency to ${PN} being installed)
diff --git a/meta-agl-core/recipes-graphics/wayland/weston-ini-conf.bbappend b/meta-agl-core/recipes-graphics/wayland/weston-ini-conf.bbappend
index 746bde339..b6095f2fa 100644
--- a/meta-agl-core/recipes-graphics/wayland/weston-ini-conf.bbappend
+++ b/meta-agl-core/recipes-graphics/wayland/weston-ini-conf.bbappend
@@ -2,8 +2,6 @@ FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
PACKAGE_ARCH = "${MACHINE_ARCH}"
-WESTON_DISPLAYS:append = "${@bb.utils.contains("DISTRO_FEATURES", "weston-remoting", " remote-output", "", d)}"
-
# For virtual machines and intel-corei7-64 we want to support both the HDMI-A-1
# and Virtual-1 outputs. This allows us to run virtual images on real hardware
# and vice versa.
diff --git a/meta-agl-core/recipes-graphics/wayland/weston-ini-conf/remote-output.cfg.in b/meta-agl-core/recipes-graphics/wayland/weston-ini-conf/remote-output.cfg.in
deleted file mode 100644
index 940cbdd0c..000000000
--- a/meta-agl-core/recipes-graphics/wayland/weston-ini-conf/remote-output.cfg.in
+++ /dev/null
@@ -1,5 +0,0 @@
-[remote-output]
-name=remote-1
-mode=640x720@30
-host=192.168.10.3
-port=5005
diff --git a/meta-agl-core/recipes-graphics/wayland/weston/0001-backend-drm-don-t-leak-gem_handle_refcnt-in-drm_dest.patch b/meta-agl-core/recipes-graphics/wayland/weston/0001-backend-drm-don-t-leak-gem_handle_refcnt-in-drm_dest.patch
new file mode 100644
index 000000000..0e3ab7613
--- /dev/null
+++ b/meta-agl-core/recipes-graphics/wayland/weston/0001-backend-drm-don-t-leak-gem_handle_refcnt-in-drm_dest.patch
@@ -0,0 +1,27 @@
+From fb60f9c16ce8865fbdcd181419f44b72af1aa3c2 Mon Sep 17 00:00:00 2001
+From: Ray Smith <rsmith@brightsign.biz>
+Date: Tue, 19 Dec 2023 11:43:55 +0000
+Subject: [PATCH 1/2] backend-drm: don't leak gem_handle_refcnt in drm_destroy
+
+Signed-off-by: Ray Smith <rsmith@brightsign.biz>
+---
+ libweston/backend-drm/drm.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/libweston/backend-drm/drm.c b/libweston/backend-drm/drm.c
+index 8092789..fcececb 100644
+--- a/libweston/backend-drm/drm.c
++++ b/libweston/backend-drm/drm.c
+@@ -3364,6 +3364,9 @@ drm_destroy(struct weston_backend *backend)
+ weston_launcher_close(ec->launcher, device->drm.fd);
+ weston_launcher_destroy(ec->launcher);
+
++ if (device->gem_handle_refcnt)
++ hash_table_destroy(device->gem_handle_refcnt);
++
+ free(device->drm.filename);
+ free(device);
+ free(b);
+--
+2.43.0
+
diff --git a/meta-agl-core/recipes-graphics/wayland/weston/0001-libweston-Add-paint-node-destruction-into-weston_lay.patch b/meta-agl-core/recipes-graphics/wayland/weston/0001-libweston-Add-paint-node-destruction-into-weston_lay.patch
deleted file mode 100644
index 19eadcf7f..000000000
--- a/meta-agl-core/recipes-graphics/wayland/weston/0001-libweston-Add-paint-node-destruction-into-weston_lay.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From cfde02d47a503cbfd0629bbfe0cb776686af8a91 Mon Sep 17 00:00:00 2001
-From: Marius Vlad <marius.vlad@collabora.com>
-Date: Tue, 9 Apr 2024 18:34:22 +0300
-Subject: [PATCH] libweston: Add paint node destruction into
- weston_layer_entry_remove()
-
-This prevents a potential crash where users of
-weston_layer_entry_insert/layer_entry_remove() would see when moving
-views into a NULL layer (effectively unmapping the surface/view).
-
-Users that have migrated to the weston_view_move_to_layer() are immune
-to this issue because that takes care paint node destruction.
-
-Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
----
- libweston/compositor.c | 17 ++++++++++-------
- 1 file changed, 10 insertions(+), 7 deletions(-)
-
-diff --git a/libweston/compositor.c b/libweston/compositor.c
-index bb29b83b5..ea257bb90 100644
---- a/libweston/compositor.c
-+++ b/libweston/compositor.c
-@@ -3980,17 +3980,10 @@ weston_view_move_to_layer(struct weston_view *view,
- struct weston_layer_entry *layer)
- {
- bool was_mapped = view->is_mapped;
-- struct weston_paint_node *pnode, *pntmp;
-
- if (layer == &view->layer_link)
- return;
-
-- /* Remove all paint nodes because we have no idea what a layer change
-- * does to view visibility on any output.
-- */
-- wl_list_for_each_safe(pnode, pntmp, &view->paint_node_list, view_link)
-- weston_paint_node_destroy(pnode);
--
- view->surface->compositor->view_list_needs_rebuild = true;
-
- /* Damage the view's old region, and remove it from the layer. */
-@@ -4020,6 +4013,16 @@ weston_view_move_to_layer(struct weston_view *view,
- WL_EXPORT void
- weston_layer_entry_remove(struct weston_layer_entry *entry)
- {
-+ struct weston_paint_node *pnode, *pntmp;
-+ struct weston_view *view;
-+
-+ /* Remove all paint nodes because we have no idea what a layer change
-+ * does to view visibility on any output.
-+ */
-+ view = container_of(entry, struct weston_view, layer_link);
-+ wl_list_for_each_safe(pnode, pntmp, &view->paint_node_list, view_link)
-+ weston_paint_node_destroy(pnode);
-+
- wl_list_remove(&entry->link);
- wl_list_init(&entry->link);
- entry->layer = NULL;
---
-2.43.0
-
diff --git a/meta-agl-core/recipes-graphics/wayland/weston/0002-backend-drm-always-create-gem_handle_refcnt-hash-tab.patch b/meta-agl-core/recipes-graphics/wayland/weston/0002-backend-drm-always-create-gem_handle_refcnt-hash-tab.patch
new file mode 100644
index 000000000..0ae82088a
--- /dev/null
+++ b/meta-agl-core/recipes-graphics/wayland/weston/0002-backend-drm-always-create-gem_handle_refcnt-hash-tab.patch
@@ -0,0 +1,56 @@
+From 10fcfd66069c774e28f67b18afd329e4bcf9f5b3 Mon Sep 17 00:00:00 2001
+From: Ray Smith <rsmith@brightsign.biz>
+Date: Tue, 19 Dec 2023 11:45:45 +0000
+Subject: [PATCH 2/2] backend-drm: always create gem_handle_refcnt hash table
+
+Devices created via drm_device_create have this hash table, but those
+created via drm_backend_create don't.
+
+Signed-off-by: Ray Smith <rsmith@brightsign.biz>
+---
+ libweston/backend-drm/drm.c | 12 +++++++++---
+ 1 file changed, 9 insertions(+), 3 deletions(-)
+
+diff --git a/libweston/backend-drm/drm.c b/libweston/backend-drm/drm.c
+index fcececb..9d6a9cf 100644
+--- a/libweston/backend-drm/drm.c
++++ b/libweston/backend-drm/drm.c
+@@ -3364,8 +3364,7 @@ drm_destroy(struct weston_backend *backend)
+ weston_launcher_close(ec->launcher, device->drm.fd);
+ weston_launcher_destroy(ec->launcher);
+
+- if (device->gem_handle_refcnt)
+- hash_table_destroy(device->gem_handle_refcnt);
++ hash_table_destroy(device->gem_handle_refcnt);
+
+ free(device->drm.filename);
+ free(device);
+@@ -3867,10 +3866,13 @@ drm_backend_create(struct weston_compositor *compositor,
+
+ device = zalloc(sizeof *device);
+ if (device == NULL)
+- return NULL;
++ goto err_backend;
+ device->state_invalid = true;
+ device->drm.fd = -1;
+ device->backend = b;
++ device->gem_handle_refcnt = hash_table_create();
++ if (!device->gem_handle_refcnt)
++ goto err_device;
+
+ b->drm = device;
+ wl_list_init(&b->kms_list);
+@@ -4108,6 +4110,10 @@ err_compositor:
+ if (b->gbm)
+ gbm_device_destroy(b->gbm);
+ #endif
++ hash_table_destroy(device->gem_handle_refcnt);
++err_device:
++ free(device);
++err_backend:
+ free(b);
+ return NULL;
+ }
+--
+2.43.0
+
diff --git a/meta-agl-core/recipes-graphics/wayland/weston_13.0_aglcore.inc b/meta-agl-core/recipes-graphics/wayland/weston_13.0_aglcore.inc
index 843a068b4..0b5dae715 100644
--- a/meta-agl-core/recipes-graphics/wayland/weston_13.0_aglcore.inc
+++ b/meta-agl-core/recipes-graphics/wayland/weston_13.0_aglcore.inc
@@ -4,7 +4,8 @@ PACKAGECONFIG:append = "${@bb.utils.contains('DISTRO_FEATURES', 'weston-remoting
SRC_URI:append = " \
file://0001-clients-Handle-missing-pointer_surface-is-there-s-no.patch \
- file://0001-libweston-Add-paint-node-destruction-into-weston_lay.patch \
+ file://0001-backend-drm-don-t-leak-gem_handle_refcnt-in-drm_dest.patch \
+ file://0002-backend-drm-always-create-gem_handle_refcnt-hash-tab.patch \
"
diff --git a/meta-agl-core/recipes-kernel/linux/linux-agl-config-virtio.inc b/meta-agl-core/recipes-kernel/linux/linux-agl-config-virtio.inc
new file mode 100644
index 000000000..e0d30b1f6
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux-agl-config-virtio.inc
@@ -0,0 +1,8 @@
+AGL_KCONFIG_FRAGMENTS += " \
+ virtio-${TUNE_ARCH} \
+ virtio-drm.cfg \
+ virtio-pci.cfg \
+ virtio-scmi.cfg \
+ sound-hda.cfg \
+ virtio-snd.cfg \
+"
diff --git a/meta-agl-core/recipes-kernel/linux/linux-agl-config.inc b/meta-agl-core/recipes-kernel/linux/linux-agl-config.inc
index 4799a6180..5cf008a77 100644
--- a/meta-agl-core/recipes-kernel/linux/linux-agl-config.inc
+++ b/meta-agl-core/recipes-kernel/linux/linux-agl-config.inc
@@ -71,10 +71,6 @@ AGL_KCONFIG_FRAGMENTS:append:qemuall = " \
qemu-drm.cfg \
"
-AGL_KCONFIG_FRAGMENTS:append:virtio-all = " \
- sound-hda.cfg \
-"
-
# Configuration for using the ARM virt machine (and not versatilepb)
AGL_KCONFIG_FRAGMENTS:append:qemuarm = " qemuarm.cfg"
diff --git a/meta-agl-core/recipes-kernel/linux/linux-agl.inc b/meta-agl-core/recipes-kernel/linux/linux-agl.inc
index c318716fe..f41e35bc2 100644
--- a/meta-agl-core/recipes-kernel/linux/linux-agl.inc
+++ b/meta-agl-core/recipes-kernel/linux/linux-agl.inc
@@ -3,7 +3,8 @@
DEPENDS += "kern-tools-native"
-include linux-agl-config.inc
+require linux-agl-config.inc
+include ${@bb.utils.contains('AGL_FEATURES', 'agl-virtio-guest', 'linux-agl-config-virtio.inc', '', d)}
# returns all the elements from the src uri that are .cfg files
def find_cfgs(d):
diff --git a/meta-agl-core/recipes-kernel/linux/linux/virtio-aarch64.cfg b/meta-agl-core/recipes-kernel/linux/linux/virtio-aarch64.cfg
new file mode 100644
index 000000000..25381e133
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux/virtio-aarch64.cfg
@@ -0,0 +1,29 @@
+# SPDX-License-Identifier: MIT
+#
+# ARM64
+#
+CONFIG_ARM64=y
+CONFIG_64BIT=y
+
+#
+# Bus support
+#
+CONFIG_ARM_AMBA=y
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_AMBA_PL011=y
+CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
+
+#
+# RTC
+#
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+
+#
+# on-CPU RTC drivers
+#
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_DRV_PL031=y
diff --git a/meta-agl-core/recipes-kernel/linux/linux/virtio-drm.cfg b/meta-agl-core/recipes-kernel/linux/linux/virtio-drm.cfg
new file mode 100644
index 000000000..2facc345e
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux/virtio-drm.cfg
@@ -0,0 +1,3 @@
+CONFIG_DRM=y
+CONFIG_FB=y
+CONFIG_DRM_FBDEV_EMULATION=y
diff --git a/meta-agl-core/recipes-kernel/linux/linux/virtio-pci.cfg b/meta-agl-core/recipes-kernel/linux/linux/virtio-pci.cfg
new file mode 100644
index 000000000..bbcaca312
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux/virtio-pci.cfg
@@ -0,0 +1,3 @@
+CONFIG_PCI=y
+CONFIG_VIRTIO_PCI=y
+CONFIG_PCI_HOST_GENERIC=y
diff --git a/meta-agl-core/recipes-kernel/linux/linux/virtio-scmi.cfg b/meta-agl-core/recipes-kernel/linux/linux/virtio-scmi.cfg
new file mode 100644
index 000000000..5ae01938e
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux/virtio-scmi.cfg
@@ -0,0 +1,25 @@
+# Enable ARM_SCMI_PROTOCOL ("ARM System Control and Management Interface (SCMI)
+# Message Protocol") config located in menu
+#
+# -> Device Drivers
+# -> Firmware Drivers
+# -> ARM System Control and Management Interface Protocol
+#
+# After that, in the same menu enabled:
+#
+# * ARM_SCMI_TRANSPORT_VIRTIO ("SCMI transport based on VirtIO")
+#
+# and disabled not used features:
+#
+# * ARM_SCMI_TRANSPORT_SMC ("SCMI transport based on SMC")
+# * ARM_SCMI_POWER_DOMAIN ("SCMI power domain driver")
+
+CONFIG_ARM_SCMI_PROTOCOL=y
+CONFIG_ARM_SCMI_HAVE_TRANSPORT=y
+CONFIG_ARM_SCMI_HAVE_MSG=y
+# CONFIG_ARM_SCMI_TRANSPORT_SMC is not set
+CONFIG_ARM_SCMI_TRANSPORT_VIRTIO=y
+# CONFIG_ARM_SCMI_POWER_DOMAIN is not set
+# CONFIG_SENSORS_ARM_SCMI is not set
+# CONFIG_COMMON_CLK_SCMI is not set
+CONFIG_IIO_SCMI=y
diff --git a/meta-agl-core/recipes-multimedia/gstreamer1.0-plugins-bad/files/rcar-gen3/0001-Added-appid-and-title-support.patch b/meta-agl-core/recipes-multimedia/gstreamer1.0-plugins-bad/files/rcar-gen3/0001-Added-appid-and-title-support.patch
new file mode 100644
index 000000000..72b924337
--- /dev/null
+++ b/meta-agl-core/recipes-multimedia/gstreamer1.0-plugins-bad/files/rcar-gen3/0001-Added-appid-and-title-support.patch
@@ -0,0 +1,166 @@
+From df64f7e34d01a03957d78317ef9a1cf6d6b95055 Mon Sep 17 00:00:00 2001
+From: Marius Vlad <marius.vlad@collabora.com>
+Date: Wed, 9 Aug 2023 14:34:19 +0300
+Subject: [PATCH] Added appid and title support
+
+Bug-AGL: SPEC-4870
+Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
+---
+ ext/wayland/gstwaylandsink.c | 43 ++++++++++++++++++++++++++++++++++--
+ ext/wayland/gstwaylandsink.h | 2 ++
+ ext/wayland/wlwindow.c | 10 ++++++++-
+ ext/wayland/wlwindow.h | 2 +-
+ 4 files changed, 53 insertions(+), 4 deletions(-)
+
+diff --git a/ext/wayland/gstwaylandsink.c b/ext/wayland/gstwaylandsink.c
+index 4918154..f743cf2 100644
+--- a/ext/wayland/gstwaylandsink.c
++++ b/ext/wayland/gstwaylandsink.c
+@@ -66,7 +66,9 @@ enum
+ PROP_DISPLAY,
+ PROP_FULLSCREEN,
+ PROP_USE_SUBSURFACE,
+- PROP_SUPPRESS_INTERLACE
++ PROP_SUPPRESS_INTERLACE,
++ PROP_APP_ID,
++ PROP_TITLE
+ };
+
+ #define DEFAULT_USE_SUBSURFACE TRUE
+@@ -229,6 +231,16 @@ gst_wayland_sink_class_init (GstWaylandSinkClass * klass)
+ DEFAULT_SUPPRESS_INTERLACE,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
++ g_object_class_install_property (gobject_class, PROP_APP_ID,
++ g_param_spec_string ("appid", "Top-level application id", "Wayland "
++ "appid, as xdg_shell::set_app_id",
++ NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
++
++ g_object_class_install_property (gobject_class, PROP_TITLE,
++ g_param_spec_string ("title", "Top-level title", "Wayland "
++ "title, xdg_shell::set_title",
++ NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
++
+ gst_type_mark_as_plugin_api (GST_TYPE_WAYLAND_VIDEO, 0);
+ }
+
+@@ -266,6 +278,16 @@ gst_wayland_sink_get_property (GObject * object,
+ g_value_set_string (value, sink->display_name);
+ GST_OBJECT_UNLOCK (sink);
+ break;
++ case PROP_APP_ID:
++ GST_OBJECT_LOCK (sink);
++ g_value_set_string (value, sink->app_id);
++ GST_OBJECT_UNLOCK (sink);
++ break;
++ case PROP_TITLE:
++ GST_OBJECT_LOCK (sink);
++ g_value_set_string (value, sink->title);
++ GST_OBJECT_UNLOCK (sink);
++ break;
+ case PROP_FULLSCREEN:
+ GST_OBJECT_LOCK (sink);
+ g_value_set_boolean (value, sink->fullscreen);
+@@ -298,6 +320,16 @@ gst_wayland_sink_set_property (GObject * object,
+ sink->display_name = g_value_dup_string (value);
+ GST_OBJECT_UNLOCK (sink);
+ break;
++ case PROP_APP_ID:
++ GST_OBJECT_LOCK (sink);
++ sink->app_id = g_value_dup_string (value);
++ GST_OBJECT_UNLOCK (sink);
++ break;
++ case PROP_TITLE:
++ GST_OBJECT_LOCK (sink);
++ sink->title = g_value_dup_string (value);
++ GST_OBJECT_UNLOCK (sink);
++ break;
+ case PROP_FULLSCREEN:
+ GST_OBJECT_LOCK (sink);
+ gst_wayland_sink_set_fullscreen (sink, g_value_get_boolean (value));
+@@ -331,12 +363,18 @@ gst_wayland_sink_finalize (GObject * object)
+ gst_buffer_unref (sink->last_buffer);
+ if (sink->display)
+ g_object_unref (sink->display);
++ if (sink->title)
++ g_object_unref (sink->title);
++ if (sink->app_id)
++ g_object_unref (sink->app_id);
+ if (sink->window)
+ g_object_unref (sink->window);
+ if (sink->pool)
+ gst_object_unref (sink->pool);
+
+ g_free (sink->display_name);
++ g_free (sink->title);
++ g_free (sink->app_id);
+
+ g_mutex_clear (&sink->display_lock);
+ g_mutex_clear (&sink->render_lock);
+@@ -768,7 +806,8 @@ gst_wayland_sink_show_frame (GstVideoSink * vsink, GstBuffer * buffer)
+ if (!sink->window) {
+ /* if we were not provided a window, create one ourselves */
+ sink->window = gst_wl_window_new_toplevel (sink->display,
+- &sink->video_info, sink->fullscreen, &sink->render_lock);
++ &sink->video_info, sink->fullscreen, sink->app_id, sink->title,
++ &sink->render_lock);
+ g_signal_connect_object (sink->window, "closed",
+ G_CALLBACK (on_window_closed), sink, 0);
+ }
+diff --git a/ext/wayland/gstwaylandsink.h b/ext/wayland/gstwaylandsink.h
+index 46ea538..e6c94ae 100644
+--- a/ext/wayland/gstwaylandsink.h
++++ b/ext/wayland/gstwaylandsink.h
+@@ -64,6 +64,8 @@ struct _GstWaylandSink
+ gboolean fullscreen;
+
+ gchar *display_name;
++ gchar *app_id;
++ gchar *title;
+
+ gboolean redraw_pending;
+ GMutex render_lock;
+diff --git a/ext/wayland/wlwindow.c b/ext/wayland/wlwindow.c
+index 3aace87..16faec8 100644
+--- a/ext/wayland/wlwindow.c
++++ b/ext/wayland/wlwindow.c
+@@ -255,7 +255,7 @@ gst_wl_window_ensure_fullscreen (GstWlWindow * window, gboolean fullscreen)
+
+ GstWlWindow *
+ gst_wl_window_new_toplevel (GstWlDisplay * display, const GstVideoInfo * info,
+- gboolean fullscreen, GMutex * render_lock)
++ gboolean fullscreen, gchar *app_id, gchar *title, GMutex * render_lock)
+ {
+ GstWlWindow *window;
+
+@@ -288,6 +288,14 @@ gst_wl_window_new_toplevel (GstWlDisplay * display, const GstVideoInfo * info,
+
+ /* Finally, commit the xdg_surface state as toplevel */
+ window->configured = FALSE;
++ if (app_id)
++ xdg_toplevel_set_app_id (window->xdg_toplevel, app_id);
++ else
++ xdg_toplevel_set_app_id (window->xdg_toplevel, "ext.wayland.waylandsink");
++ if (title)
++ xdg_toplevel_set_title (window->xdg_toplevel, title);
++ else
++ xdg_toplevel_set_title (window->xdg_toplevel, "ext.wayland.waylandsink");
+ wl_surface_commit (window->area_surface);
+ wl_display_flush (display->display);
+
+diff --git a/ext/wayland/wlwindow.h b/ext/wayland/wlwindow.h
+index 034a5a5..6b525c8 100644
+--- a/ext/wayland/wlwindow.h
++++ b/ext/wayland/wlwindow.h
+@@ -84,7 +84,7 @@ GType gst_wl_window_get_type (void);
+ void gst_wl_window_ensure_fullscreen (GstWlWindow * window,
+ gboolean fullscreen);
+ GstWlWindow *gst_wl_window_new_toplevel (GstWlDisplay * display,
+- const GstVideoInfo * info, gboolean fullscreen, GMutex * render_lock);
++ const GstVideoInfo * info, gboolean fullscreen, gchar * app_id, gchar *title, GMutex * render_lock);
+ GstWlWindow *gst_wl_window_new_in_surface (GstWlDisplay * display,
+ struct wl_surface * parent, GMutex * render_lock);
+
+--
+2.35.1
+
diff --git a/meta-agl-core/recipes-support/ptest-runner/ptest-runner/0007-WIP-Initial-LAVA-support.patch b/meta-agl-core/recipes-support/ptest-runner/ptest-runner/0007-WIP-Initial-LAVA-support.patch
index 11c6fd27b..3757fe0a7 100644
--- a/meta-agl-core/recipes-support/ptest-runner/ptest-runner/0007-WIP-Initial-LAVA-support.patch
+++ b/meta-agl-core/recipes-support/ptest-runner/ptest-runner/0007-WIP-Initial-LAVA-support.patch
@@ -23,13 +23,14 @@ Signed-off-by: Tim Orling <timothy.t.orling@linux.intel.com>
[updated for ptest-runner 2.3.2]
[updated for ptest-runner 2.4.1]
[updated for ptest-runner 2.4.2]
+[updated for ptest-runner 2.4.4]
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
---
flags.h | 10 ++++++++++
main.c | 9 ++++++++-
- utils.c | 17 ++++++++++++++++-
+ utils.c | 20 +++++++++++++++++++-
utils.h | 2 +-
- 4 files changed, 35 insertions(+), 3 deletions(-)
+ 4 files changed, 38 insertions(+), 3 deletions(-)
create mode 100644 flags.h
diff --git a/flags.h b/flags.h
@@ -84,7 +85,7 @@ index 31e4dd5..f12d6d6 100644
print_usage(stdout, argv[0]);
exit(1);
diff --git a/utils.c b/utils.c
-index 59b8b77..30423c4 100644
+index 6cf7705..f6a3a2a 100644
--- a/utils.c
+++ b/utils.c
@@ -49,6 +49,7 @@
@@ -95,17 +96,19 @@ index 59b8b77..30423c4 100644
#define GET_STIME_BUF_SIZE 1024
#define WAIT_CHILD_BUF_MAX_SIZE 1024
-@@ -425,6 +426,7 @@ run_ptests(struct ptest_list *head, const struct ptest_options opts,
- }
+@@ -369,6 +370,9 @@ run_ptests(struct ptest_list *head, const struct ptest_options opts,
+ strcpy(ptest_dir, p->run_ptest);
+ dirname(ptest_dir);
- char *ptest_dir = strdup(p->run_ptest);
+ char *ptest = strdup(p->ptest);
- if (ptest_dir == NULL) {
++ CHECK_ALLOCATION(ptest, 1, 1);
++
+ if (pipe2(pipefd_stdout, 0) == -1) {
+ fprintf(fp, "ERROR: pipe2() failed with: %s.\n", strerror(errno));
rc = -1;
- break;
-@@ -477,7 +479,10 @@ run_ptests(struct ptest_list *head, const struct ptest_options opts,
- fprintf(fp, "ERROR: setpgid() failed, %s\n", strerror(errno));
- }
+@@ -425,7 +429,10 @@ run_ptests(struct ptest_list *head, const struct ptest_options opts,
+ do_close(&pipefd_stdout[PIPE_WRITE]);
+ do_close(&pipefd_stderr[PIPE_WRITE]);
- time_t start_time= time(NULL);
+ if (opts.flags & LAVA_SIGNAL_ENABLE) {
@@ -115,7 +118,7 @@ index 59b8b77..30423c4 100644
fprintf(fp, "%s\n", get_stime(stime, GET_STIME_BUF_SIZE, start_time));
fprintf(fp, "BEGIN: %s\n", ptest_dir);
-@@ -594,6 +599,16 @@ run_ptests(struct ptest_list *head, const struct ptest_options opts,
+@@ -542,6 +549,16 @@ run_ptests(struct ptest_list *head, const struct ptest_options opts,
fprintf(fp, "END: %s\n", ptest_dir);
fprintf(fp, "%s\n", get_stime(stime, GET_STIME_BUF_SIZE, end_time));
@@ -130,8 +133,16 @@ index 59b8b77..30423c4 100644
+ fprintf(stdout, "<LAVA_SIGNAL_TESTCASE TEST_CASE_ID=%s RESULT=%s>\n", ptest, result);
+ }
}
- free(ptest_dir);
- do_close(&pipefd_stdout[PIPE_READ]);
+
+ ptest_list_fail4:
+@@ -556,6 +573,7 @@ ptest_list_fail2:
+ do_close(&pipefd_stdout[PIPE_WRITE]);
+
+ ptest_list_fail1:
++ free(ptest);
+ fflush(fp);
+ fflush(fp_stderr);
+
diff --git a/utils.h b/utils.h
index 04fc666..ad702d8 100644
--- a/utils.h
@@ -148,5 +159,5 @@ index 04fc666..ad702d8 100644
extern struct ptest_list *get_available_ptests(const char *);
extern int print_ptests(struct ptest_list *, FILE *);
--
-2.37.3
+2.44.0