diff --git a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston-init.bbappend b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston-init.bbappend index acaf4589a..78990be74 100644 --- a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston-init.bbappend +++ b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston-init.bbappend @@ -39,16 +39,13 @@ do_install:append() { install -d ${D}${systemd_system_unitdir} ${D}${sbindir} - if [ -e ${D}/${systemd_system_unitdir}/weston.service ]; then - rm ${D}/${systemd_system_unitdir}/weston.service ${D}/${systemd_system_unitdir}/weston.socket + if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then install -D -p -m0644 ${WORKDIR}/weston-launch.service ${D}${systemd_system_unitdir}/weston-launch.service sed -i -e s:/etc:${sysconfdir}:g \ -e s:/usr/bin:${bindir}:g \ -e s:/var:${localstatedir}:g \ ${D}${systemd_unitdir}/system/weston-launch.service - install -d ${D}${sysconfdir}/systemd/system/multi-user.target.wants/ - #ln -s /lib/systemd/system/weston-launch.service ${D}${sysconfdir}/systemd/system/multi-user.target.wants/display-manager.service - install -D -p -m0644 ${WORKDIR}/weston-checkgpu.service ${D}${systemd_system_unitdir}/ + install -D -p -m0644 ${WORKDIR}/weston-checkgpu.service ${D}${systemd_system_unitdir}/weston-checkgpu.service fi install -d ${D}${sysconfdir}/profile.d @@ -59,9 +56,10 @@ do_install:append() { sed -i -e 's,#xwayland=true,xwayland=true,g' ${D}${sysconfdir}/xdg/weston/weston.ini fi - if [ -e ${D}${bindir}/weston-start ]; then - sed -i 's,@DATADIR@,${datadir},g' ${D}${bindir}/weston-start - fi + install -Dm755 ${WORKDIR}/weston-start ${D}${bindir}/weston-start + sed -i 's,@DATADIR@,${datadir},g' ${D}${bindir}/weston-start + sed -i 's,@LOCALSTATEDIR@,${localstatedir},g' ${D}${bindir}/weston-start + # /etc/default/weston install -d ${D}${sysconfdir}/default echo "WESTON_USER=root" > ${D}${sysconfdir}/default/weston diff --git a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston-init/73-pulseaudio-hdmi.rules b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston-init/73-pulseaudio-hdmi.rules index c1b256d7b..8f09f3578 100644 --- a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston-init/73-pulseaudio-hdmi.rules +++ b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston-init/73-pulseaudio-hdmi.rules @@ -1 +1 @@ -SUBSYSTEMS=="drm", ACTION=="change", RUN+="/usr/bin/pulseaudio_hdmi_switch.sh +SUBSYSTEMS=="drm", ACTION=="change", RUN+="/usr/bin/pulseaudio_hdmi_switch.sh" diff --git a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston-init/check-gpu b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston-init/check-gpu index 76e14cdec..e2bd77233 100755 --- a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston-init/check-gpu +++ b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston-init/check-gpu @@ -69,6 +69,32 @@ check_default_weston_config() { fi fi } +add_weston_force_renderer() { + # with HDMI and GPU with 2 planes + # sometime we need to force WESTON_FORCE_RENDERER + if $(cat /proc/device-tree/compatible | grep -q "stm32mp15") + then + hdmi_status=$(cat /sys/class/drm/card0-HDMI-A-1/status) + if [ -e /etc/default/weston ] && ! $(grep -q "WESTON_FORCE_RENDERER" /etc/default/weston) ; then + echo "#" >> /etc/default/weston + echo "# if \"LTDC fifo underrun\" messages occur " >> /etc/default/weston + echo "# You can force the RENDERER on weston" >> /etc/default/weston + echo "#WESTON_FORCE_RENDERER=1" >> /etc/default/weston + fi + if [ "$hdmi_status" = "connected" ]; then + if [ -e /etc/default/weston ] && $(grep -q "WESTON_FORCE_RENDERER" /etc/default/weston) ; then + sed -i "s/^#WESTON_FORCE_RENDERER=1/WESTON_FORCE_RENDERER=1/g" /etc/default/weston + fi + else + if [ -e /etc/default/weston ] && $(grep -q "Autogenerated" /etc/default/weston) ; then + # disable WESTON_FORCE_RENDERER + sed -i "s/^WESTON_FORCE_RENDERER=1/#WESTON_FORCE_RENDERER=1/g" /etc/default/weston + fi + fi + fi +} + + # # Main # @@ -92,9 +118,10 @@ check_devices if [ "$gcnano_status" = "okay" ] && [ -n "$galcore_module" ] && [ -n "$galcore_device" ]; then #echo "Gcnano is present and activated" > /dev/kmsg + add_weston_force_renderer if [ -f /etc/default/weston ] && $(grep -q "Autogenerated" /etc/default/weston) ; then - sed -i "s/OPTARGS=--use-pixman/#OPTARGS=--use-pixman/g" /etc/default/weston + sed -i "s/^OPTARGS=--use-pixman/#OPTARGS=--use-pixman/g" /etc/default/weston sed -i "/#Autogenerated/d" /etc/default/weston fi if [ ! -f /etc/default/weston ]; @@ -102,6 +129,7 @@ then echo "#Autogenerated" > /etc/default/weston echo "#OPTARGS=--use-pixman" >> /etc/default/weston echo "WESTON_USER=root" >> /etc/default/weston + add_weston_force_renderer fi else if [ -f /etc/default/weston ] && $(grep -q "pixman" /etc/default/weston) ; @@ -112,6 +140,7 @@ else echo "#Autogenerated" > /etc/default/weston echo "OPTARGS=--use-pixman" >> /etc/default/weston echo "WESTON_USER=root" >> /etc/default/weston + add_weston_force_renderer fi fi diff --git a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston-init/pulseaudio_hdmi_switch.sh b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston-init/pulseaudio_hdmi_switch.sh index b5212b8e6..fc20670af 100644 --- a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston-init/pulseaudio_hdmi_switch.sh +++ b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston-init/pulseaudio_hdmi_switch.sh @@ -11,16 +11,17 @@ else fi cat > /tmp/pulse_temp_switch.sh <\$i< \$card_info" + # for each card, search alsa_card found=\$(echo \$card_info | grep -n STM32MP | wc -l) if [ \$found -eq 1 ]; then + index=\$(echo \$i | sed 's/#//') echo "pactl set-card-profile \$index $PROFILE" pactl set-card-profile \$index $PROFILE break; diff --git a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston-init/weston-launch.service b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston-init/weston-launch.service index 4d20bffdf..2133a8c19 100644 --- a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston-init/weston-launch.service +++ b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston-init/weston-launch.service @@ -35,7 +35,7 @@ Environment="WESTON_USER=root" Environment="WL_EGL_GBM_FENCE=0" #ExecStart=/usr/bin/weston-launch -- --modules=systemd-notify.so --log=/tmp/weston.log $OPTARGS ExecStart=/usr/bin/weston-start --modules=systemd-notify.so --log=/tmp/weston.log $OPTARGS -ExecStop=/usr/bin/killall weston-launch +ExecStop=/usr/bin/killall weston # Optional watchdog setup #TimeoutStartSec=60 diff --git a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston-init/weston-start b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston-init/weston-start index 7c2f041bc..11de00b1f 100644 --- a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston-init/weston-start +++ b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston-init/weston-start @@ -5,10 +5,6 @@ weston_args=$* if [ -z "$WESTON_USER" ]; then WESTON_USER=root fi -if [ "$USER" != "$WESTON_USER" ]; then - weston_args_user="-u $WESTON_USER" -fi - # for associated service: pulseaudio if [ ! -d "/var/run/pulse" ]; then @@ -37,5 +33,9 @@ if [ "$USER" == "$WESTON_USER" ]; then done fi fi -exec /usr/bin/weston-launch $weston_args_user -- $weston_args +if [ -f /home/weston/weston.log ]; then + mv /home/weston/weston.log /home/weston/weston-previous.log +fi + +exec /usr/bin/weston $weston_args diff --git a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston-init/weston.ini b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston-init/weston.ini index 1f48237a7..09906118e 100644 --- a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston-init/weston.ini +++ b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston-init/weston.ini @@ -1,12 +1,13 @@ [core] -#modules=cms-colord.so +modules=screen-share.so #xwayland=true -shell=desktop-shell.so +shell=desktop #gbm-format=xrgb2101010 -backend=drm-backend.so +backend=drm idle-time=0 repaint-window=100 require-input=false +remoting=remoting-plugin.so [keyboard] keymap_layout=us @@ -34,12 +35,17 @@ app-ids=1000 name=DPI-1 mode=preferred +# LVDS connector +[output] +name=LVDS-1 +mode=preferred + [libinput] touchscreen_calibrator=true calibration_helper=/bin/echo [screen-share] -command=/usr/bin/weston --backend=rdp-backend.so --shell=fullscreen-shell.so --no-clients-resize +command=/usr/bin/weston --backend=rdp --shell=fullscreen --no-clients-resize #start-on-startup=false #[xwayland] diff --git a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston-init/weston.service b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston-init/weston.service new file mode 100644 index 000000000..26e2a3e46 --- /dev/null +++ b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston-init/weston.service @@ -0,0 +1,30 @@ +[Unit] +Description=Weston, a Wayland compositor, as a user service +Documentation=man:weston(1) man:weston.ini(5) +Documentation=https://wayland.freedesktop.org/ + +# Activate using a systemd socket +Requires=weston.socket +After=weston.socket + +# Since we are part of the graphical session, make sure we are started before +Before=graphical-session.target + +[Service] +Type=notify +TimeoutStartSec=60 +WatchdogSec=20 +# Defaults to journal +#StandardOutput=journal +StandardError=journal + +EnvironmentFile=-/etc/default/weston +Environment="XDG_RUNTIME_DIR=/home/weston" +Environment="WESTON_USER=weston" +Environment="WL_EGL_GBM_FENCE=0" +# add a ~/.config/weston.ini and weston will pick-it up +ExecStart=/usr/bin/weston-start --modules=systemd-notify.so --log=/home/weston/weston.log $OPTARGS +ExecStop=/usr/bin/killall weston + +[Install] +WantedBy=graphical-session.target diff --git a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston-init/weston.socket b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston-init/weston.socket new file mode 100644 index 000000000..cdaf85659 --- /dev/null +++ b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston-init/weston.socket @@ -0,0 +1,7 @@ +[Unit] +Description=Weston, a Wayland compositor +Documentation=man:weston(1) man:weston.ini(5) +Documentation=https://wayland.freedesktop.org/ + +[Socket] +ListenStream=%t/wayland-0 diff --git a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston-init/weston_profile.sh b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston-init/weston_profile.sh index 35e3c7ae7..308452ec8 100644 --- a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston-init/weston_profile.sh +++ b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston-init/weston_profile.sh @@ -5,6 +5,9 @@ if [ "$USER" == "root" ]; then export ECORE_EVAS_ENGINE=wayland_shm export ECORE_EVAS_ENGINE=wayland_shm export GDK_BACKEND=wayland + export PULSE_RUNTIME_PATH=/run/user/`id -u root`/pulse + export USE_PLAYBIN3=1 + if [ -e $XDG_RUNTIME_DIR/wayland-0 ]; then export WAYLAND_DISPLAY=wayland-0 else diff --git a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0001-Allow-to-get-hdmi-output-with-several-outputs.patch b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0001-Allow-to-get-hdmi-output-with-several-outputs.patch deleted file mode 100644 index 791e19416..000000000 --- a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0001-Allow-to-get-hdmi-output-with-several-outputs.patch +++ /dev/null @@ -1,38 +0,0 @@ -From: Christophe Priouzeau -Date: Thu, 19 Mar 2020 12:15:19 +0100 -Subject: [PATCH 1/4] Allow to get hdmi output with several outputs -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -If an ouput fail to be attach or enable then this output must be only -destroyed and an error doesn't be re which detach & destroy -all other output. - -Upstream-Status: Inappropriate [DEY specific] - -Signed-off-by: Yannick Fertré ---- - compositor/main.c | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) - -diff --git a/compositor/main.c b/compositor/main.c -index 322f2ff..055eed3 100644 ---- a/compositor/main.c -+++ b/compositor/main.c -@@ -2246,8 +2246,14 @@ drm_process_layoutput(struct wet_compositor *wet, struct wet_layoutput *lo) - return -1; - - if (drm_try_attach_enable(output->output, lo) < 0) { -+ /* -+ * if a wet_ouput fail to be attach or enable -+ * then this output must be destroyed -+ * but don't return an error which dettatch & destroy -+ * all other output. -+ */ - wet_output_destroy(output); -- return -1; -+ //return -1; - } - } - diff --git a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0001-Clone-mode-not-supported.patch b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0001-Clone-mode-not-supported.patch new file mode 100644 index 000000000..259cb5996 --- /dev/null +++ b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0001-Clone-mode-not-supported.patch @@ -0,0 +1,62 @@ +From aa4cb0e6576a98dc6212ed11af0e8fd129b21d15 Mon Sep 17 00:00:00 2001 +From: Christophe Priouzeau +Date: Mon, 18 Mar 2024 16:43:33 +0100 +Subject: [PATCH 1/4] Clone mode not supported + +Display controller doesn't support several outputs. +During a head changed, get & close the weston head which is enabled. +Then an output can enabled (only one even if several output have +connected). + +Upstream-Status: Pending +Signed-off-by: Yannick Fertre +--- + compositor/main.c | 24 ++++++++++++++++-------- + 1 file changed, 16 insertions(+), 8 deletions(-) + +diff --git a/compositor/main.c b/compositor/main.c +index 0e3d375..365dc1c 100644 +--- a/compositor/main.c ++++ b/compositor/main.c +@@ -2668,22 +2668,30 @@ drm_heads_changed(struct wl_listener *listener, void *arg) + /* We need to collect all cloned heads into outputs before enabling the + * output. + */ ++ while ((head = weston_compositor_iterate_heads(compositor, head))) { ++ enabled = weston_head_is_enabled(head); ++ ++ if (enabled) { ++ drm_head_disable(head); ++ weston_head_reset_device_changed(head); ++ } ++ } ++ + while ((head = wet_backend_iterate_heads(wet, wb, head))) { + connected = weston_head_is_connected(head); + enabled = weston_head_is_enabled(head); +- changed = weston_head_is_device_changed(head); + forced = drm_head_should_force_enable(wet, head); + + if ((connected || forced) && !enabled) { ++ /* ++ * Prepare & enable only the first head connected. ++ * CRTC doesn't support several output. ++ */ + drm_head_prepare_enable(wet, head); +- } else if (!(connected || forced) && enabled) { +- drm_head_disable(head); +- } else if (enabled && changed) { +- weston_log("Detected a monitor change on head '%s', " +- "not bothering to do anything about it.\n", +- weston_head_get_name(head)); ++ ++ weston_head_reset_device_changed(head); ++ break; + } +- weston_head_reset_device_changed(head); + } + + if (drm_process_layoutputs(wet) < 0) +-- +2.34.1 + diff --git a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0004-Disable-request-to-EGL_DRM_RENDER_NODE_FILE_EXT.patch b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0002-Disable-request-to-EGL_DRM_RENDER_NODE_FILE_EXT.patch similarity index 76% rename from meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0004-Disable-request-to-EGL_DRM_RENDER_NODE_FILE_EXT.patch rename to meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0002-Disable-request-to-EGL_DRM_RENDER_NODE_FILE_EXT.patch index 5a3ffd968..66dafe499 100644 --- a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0004-Disable-request-to-EGL_DRM_RENDER_NODE_FILE_EXT.patch +++ b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0002-Disable-request-to-EGL_DRM_RENDER_NODE_FILE_EXT.patch @@ -1,23 +1,23 @@ +From 953cbf79c877b4bb4af7c54cfaa779da346513f5 Mon Sep 17 00:00:00 2001 From: Christophe Priouzeau -Date: Thu, 25 Aug 2022 09:34:23 +0200 -Subject: [PATCH 4/4] Disable request to EGL_DRM_RENDER_NODE_FILE_EXT +Date: Fri, 24 Mar 2023 11:58:06 +0100 +Subject: [PATCH 2/4] Disable request to EGL_DRM_RENDER_NODE_FILE_EXT Depending on GPU userland implementationn the reqest of EGL_DRM_RENDER_NODE_FILE_EXT return /dev/dri/renderD128 but this interface are not always present. -Upstream-Status: Inappropriate [DEY specific] - +Upstream-Status: Pending Signed-off-by: Christophe Priouzeau --- libweston/renderer-gl/egl-glue.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libweston/renderer-gl/egl-glue.c b/libweston/renderer-gl/egl-glue.c -index 013172a..46063c5 100644 +index 8a0381c..90f499f 100644 --- a/libweston/renderer-gl/egl-glue.c +++ b/libweston/renderer-gl/egl-glue.c -@@ -480,9 +480,9 @@ gl_renderer_set_egl_device(struct gl_renderer *gr) - gl_renderer_log_extensions("EGL device extensions", extensions); +@@ -481,9 +481,9 @@ gl_renderer_set_egl_device(struct gl_renderer *gr) + gl_renderer_log_extensions(gr, "EGL device extensions", extensions); /* Try to query the render node using EGL_DRM_RENDER_NODE_FILE_EXT */ - if (weston_check_egl_extension(extensions, "EGL_EXT_device_drm_render_node")) @@ -30,3 +30,5 @@ index 013172a..46063c5 100644 /* The extension is not supported by the Mesa version of the system or * the query failed. Fallback to EGL_DRM_DEVICE_FILE_EXT */ -- +2.25.1 + diff --git a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0002-Force-to-close-all-output.patch b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0002-Force-to-close-all-output.patch deleted file mode 100644 index 3538855d4..000000000 --- a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0002-Force-to-close-all-output.patch +++ /dev/null @@ -1,34 +0,0 @@ -From: Christophe Priouzeau -Date: Thu, 19 Mar 2020 12:20:32 +0100 -Subject: [PATCH 2/4] Force to close all output -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -In case of plug/unplug HMDI, it's necessary to close all output enabled. -Without this patch, weston is stuck on DSI output. - -Upstream-Status: Inappropriate [DEY specific] - -Signed-off-by: Yannick Fertré ---- - compositor/main.c | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/compositor/main.c b/compositor/main.c -index 055eed3..ac366a0 100644 ---- a/compositor/main.c -+++ b/compositor/main.c -@@ -2322,7 +2322,11 @@ drm_heads_changed(struct wl_listener *listener, void *arg) - - if ((connected || forced) && !enabled) { - drm_head_prepare_enable(wet, head); -- } else if (!(connected || forced) && enabled) { -+ } else if (enabled) { -+ /* -+ * closed all output (connected or not connected) -+ * this is neccessary to switch between HDMI <> DSI -+ */ - drm_head_disable(head); - } else if (enabled && changed) { - weston_log("Detected a monitor change on head '%s', " diff --git a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0003-Revert-compositor-improve-opacity-handling-for-scale.patch b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0003-Revert-compositor-improve-opacity-handling-for-scale.patch new file mode 100644 index 000000000..7734dbd06 --- /dev/null +++ b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0003-Revert-compositor-improve-opacity-handling-for-scale.patch @@ -0,0 +1,47 @@ +From 3ca655e561099b11c70961c5132bbab8fa3f0c63 Mon Sep 17 00:00:00 2001 +From: Pierre-Yves MORDRET +Date: Tue, 9 May 2023 15:06:09 +0200 +Subject: [PATCH 3/4] Revert "compositor: improve opacity handling for scaled + surfaces" + +This reverts commit 81912dc2a69f24c8fbcb43a2bc1f7860f3085c01. +Upstream-Status: Pending +--- + libweston/compositor.c | 13 +------------ + 1 file changed, 1 insertion(+), 12 deletions(-) + +diff --git a/libweston/compositor.c b/libweston/compositor.c +index 6cfcba2..ff029f7 100644 +--- a/libweston/compositor.c ++++ b/libweston/compositor.c +@@ -1581,6 +1581,7 @@ weston_view_update_transform_enable(struct weston_view *view) + surfbox = pixman_region32_extents(&surfregion); + + view_compute_bbox(view, surfbox, &view->transform.boundingbox); ++ pixman_region32_fini(&surfregion); + + if (view->alpha == 1.0 && + matrix->type == WESTON_MATRIX_TRANSFORM_TRANSLATE) { +@@ -1598,19 +1599,7 @@ weston_view_update_transform_enable(struct weston_view *view) + matrix->d[12], + matrix->d[13]); + } +- } else if (view->alpha == 1.0 && +- matrix->type < WESTON_MATRIX_TRANSFORM_ROTATE && +- pixman_region32_n_rects(&surfregion) == 1 && +- (pixman_region32_equal(&surfregion, &view->surface->opaque) || +- view->surface->is_opaque)) { +- /* The whole surface is opaque and it is only translated and +- * scaled and after applying the scissor, the result is still +- * a single rectangle. In this case the boundingbox matches the +- * view exactly and can be used as opaque area. */ +- pixman_region32_copy(&view->transform.opaque, +- &view->transform.boundingbox); + } +- pixman_region32_fini(&surfregion); + + return 0; + } +-- +2.25.1 + diff --git a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0004-Revert-compositor-set-transform.opaque-for-surfaces-.patch b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0004-Revert-compositor-set-transform.opaque-for-surfaces-.patch new file mode 100644 index 000000000..d6c948275 --- /dev/null +++ b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0004-Revert-compositor-set-transform.opaque-for-surfaces-.patch @@ -0,0 +1,79 @@ +From 363deb1145453f443250078f5db7472500593d88 Mon Sep 17 00:00:00 2001 +From: Christophe Priouzeau +Date: Fri, 8 Sep 2023 13:34:00 +0200 +Subject: [PATCH 4/4] Revert "compositor: set transform.opaque for surfaces + without alpha channel" + +This reverts commit e2426960d479a84ad66ee865404a925d66d9a55b. +Upstream-Status: Pending +--- + libweston/compositor.c | 46 +++++++++++++++++------------------------- + 1 file changed, 18 insertions(+), 28 deletions(-) + +diff --git a/libweston/compositor.c b/libweston/compositor.c +index ba5ed5d..8575bdd 100644 +--- a/libweston/compositor.c ++++ b/libweston/compositor.c +@@ -1366,20 +1366,15 @@ weston_view_update_transform_disable(struct weston_view *view) + view->geometry.pos_offset.y); + + if (view->alpha == 1.0) { +- if (view->surface->is_opaque) { +- pixman_region32_copy(&view->transform.opaque, +- &view->transform.boundingbox); +- } else { +- pixman_region32_copy(&view->transform.opaque, +- &view->surface->opaque); +- if (view->geometry.scissor_enabled) +- pixman_region32_intersect(&view->transform.opaque, +- &view->transform.opaque, +- &view->geometry.scissor); +- pixman_region32_translate(&view->transform.opaque, +- view->geometry.pos_offset.x, +- view->geometry.pos_offset.y); +- } ++ pixman_region32_copy(&view->transform.opaque, ++ &view->surface->opaque); ++ if (view->geometry.scissor_enabled) ++ pixman_region32_intersect(&view->transform.opaque, ++ &view->transform.opaque, ++ &view->geometry.scissor); ++ pixman_region32_translate(&view->transform.opaque, ++ view->geometry.pos_offset.x, ++ view->geometry.pos_offset.y); + } + } + +@@ -1426,20 +1421,15 @@ weston_view_update_transform_enable(struct weston_view *view) + + if (view->alpha == 1.0 && + matrix->type == WESTON_MATRIX_TRANSFORM_TRANSLATE) { +- if (view->surface->is_opaque) { +- pixman_region32_copy(&view->transform.opaque, +- &view->transform.boundingbox); +- } else { +- pixman_region32_copy(&view->transform.opaque, +- &view->surface->opaque); +- if (view->geometry.scissor_enabled) +- pixman_region32_intersect(&view->transform.opaque, +- &view->transform.opaque, +- &view->geometry.scissor); +- pixman_region32_translate(&view->transform.opaque, +- matrix->d[12], +- matrix->d[13]); +- } ++ pixman_region32_copy(&view->transform.opaque, ++ &view->surface->opaque); ++ if (view->geometry.scissor_enabled) ++ pixman_region32_intersect(&view->transform.opaque, ++ &view->transform.opaque, ++ &view->geometry.scissor); ++ pixman_region32_translate(&view->transform.opaque, ++ matrix->d[12], ++ matrix->d[13]); + } + + return 0; +-- +2.34.1 + diff --git a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0006-Revert-libweston-libinput-device-Enable-Set-pointer-.patch b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0005-Revert-libweston-libinput-device-Enable-Set-pointer-.patch similarity index 100% rename from meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0006-Revert-libweston-libinput-device-Enable-Set-pointer-.patch rename to meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0005-Revert-libweston-libinput-device-Enable-Set-pointer-.patch diff --git a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0005-clients-simple-egl-call-eglSwapInterval-after-eglMak.patch b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0005-clients-simple-egl-call-eglSwapInterval-after-eglMak.patch deleted file mode 100644 index 145177473..000000000 --- a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston/0005-clients-simple-egl-call-eglSwapInterval-after-eglMak.patch +++ /dev/null @@ -1,42 +0,0 @@ -From: Erik Kurzinger -Date: Fri, 12 Aug 2022 08:22:26 -0700 -Subject: [PATCH] clients/simple-egl: call eglSwapInterval after eglMakeCurrent - -If weston-simple-egl is run with the "-b" flag, it will attempt to set -the swap interval to 0 during create_surface. However, at that point, it -will not have made its EGLContext current yet, causing the -eglSwapInterval call to have no effect. To fix this, wait until the -EGLContext has been made current in init_gl before updating the swap -interval. - -Upstream-Status: Inappropriate [DEY specific] - -Signed-off-by: Erik Kurzinger ---- - clients/simple-egl.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/clients/simple-egl.c b/clients/simple-egl.c -index 2c7059c0..79d296a9 100644 ---- a/clients/simple-egl.c -+++ b/clients/simple-egl.c -@@ -276,6 +276,9 @@ init_gl(struct window *window) - window->egl_surface, window->display->egl.ctx); - assert(ret == EGL_TRUE); - -+ if (!window->frame_sync) -+ eglSwapInterval(window->display->egl.dpy, 0); -+ - frag = create_shader(window, frag_shader_text, GL_FRAGMENT_SHADER); - vert = create_shader(window, vert_shader_text, GL_VERTEX_SHADER); - -@@ -399,9 +402,6 @@ create_surface(struct window *window) - - window->wait_for_configure = true; - wl_surface_commit(window->surface); -- -- if (!window->frame_sync) -- eglSwapInterval(display->egl.dpy, 0); - } - - static void diff --git a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston_10.0.2.bbappend b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston_13.0.1.bbappend similarity index 57% rename from meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston_10.0.2.bbappend rename to meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston_13.0.1.bbappend index 316c894ca..2d0dfd7ba 100644 --- a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston_10.0.2.bbappend +++ b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-graphics/wayland/weston_13.0.1.bbappend @@ -1,11 +1,11 @@ FILESEXTRAPATHS:prepend:stm32mpcommon := "${THISDIR}/${PN}:" SRC_URI:append:stm32mpcommon = " \ - file://0001-Allow-to-get-hdmi-output-with-several-outputs.patch \ - file://0002-Force-to-close-all-output.patch \ - file://0004-Disable-request-to-EGL_DRM_RENDER_NODE_FILE_EXT.patch \ - file://0005-clients-simple-egl-call-eglSwapInterval-after-eglMak.patch \ - file://0006-Revert-libweston-libinput-device-Enable-Set-pointer-.patch \ + file://0001-Clone-mode-not-supported.patch \ + file://0002-Disable-request-to-EGL_DRM_RENDER_NODE_FILE_EXT.patch \ + file://0003-Revert-compositor-improve-opacity-handling-for-scale.patch \ + file://0004-Revert-compositor-set-transform.opaque-for-surfaces-.patch \ + file://0005-Revert-libweston-libinput-device-Enable-Set-pointer-.patch \ " SIMPLECLIENTS="egl,touch,dmabuf-v4l,dmabuf-egl" @@ -14,11 +14,11 @@ PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'kms wayla ${@bb.utils.contains('DISTRO_FEATURES', 'x11 wayland', 'xwayland', '', d)} \ ${@bb.utils.filter('DISTRO_FEATURES', 'systemd x11', d)} \ ${@bb.utils.contains_any('DISTRO_FEATURES', 'wayland x11', '', 'headless', d)} \ - ${@oe.utils.conditional('VIRTUAL-RUNTIME_init_manager', 'sysvinit', 'launcher-libseat', '', d)} \ image-jpeg \ + webp \ screenshare \ shell-desktop \ shell-fullscreen \ - launch" - -EXTRA_OEMESON += "-Ddeprecated-wl-shell=true" + shell-kiosk \ + remoting \ + "