Announcement:
https://lore.freedesktop.org/wayland-devel/aZbDU-xtVMLhB0wD@xpredator/

Functional changes:
- New Vulkan renderer. A "vulkan" PACKAGECONFIG option has been
  added to enable building it, and it is enabled if "vulkan" is
  present in DISTRO_FEATURES, similar to how X11 and Wayland are
  handled.  A post-release change has been backported to fix
  building the new backend with X11 or Wayland disabled.
- New Lua shell. A "lua-shell" PACkAGECONFIG option has been added
  to enable building it, but it has not been enabled by defsult to
  avoid affecting build times.
- Fullscreen shell and screen-share module marked as deprecated.
  Their PACKAGECONFIG options have been updated to still work, but
  have not been renamed to avoid breaking working configurations.
- Perfetto support. A "perfetto" PACKAGECONFIG option has been
  added to enable building it, but it is not on by default due
  to meta-oe being required to build.
- The "client-no-resize" option for the RDP backend has been
  replaced with "resizeable/no-resizeable" to match the VNC
  backend. The example in weston.ini has been updated.

Signed-off-by: Scott Murray <[email protected]>
---
v2:
- Added backport of fix for building Vulkan renderer with X11 or
  Wayland disabled.

 .../wayland/weston-init/weston.ini            |   2 +-
 ...d-drm-meson.build-allow-libdisplay-i.patch |  28 ----
 ...guard-surface-output-creation-with-b.patch | 151 ++++++++++++++++++
 .../{weston_14.0.2.bb => weston_15.0.0.bb}    |  18 ++-
 4 files changed, 164 insertions(+), 35 deletions(-)
 delete mode 100644 
meta/recipes-graphics/wayland/weston/0001-libweston-backend-drm-meson.build-allow-libdisplay-i.patch
 create mode 100644 
meta/recipes-graphics/wayland/weston/0001-vulkan-renderer-guard-surface-output-creation-with-b.patch
 rename meta/recipes-graphics/wayland/{weston_14.0.2.bb => weston_15.0.0.bb} 
(87%)

diff --git a/meta/recipes-graphics/wayland/weston-init/weston.ini 
b/meta/recipes-graphics/wayland/weston-init/weston.ini
index 6bd5aef55a..0ec70c3ef3 100644
--- a/meta/recipes-graphics/wayland/weston-init/weston.ini
+++ b/meta/recipes-graphics/wayland/weston-init/weston.ini
@@ -69,7 +69,7 @@ require-input=false
 #max_accel_factor = 1.0
 
 [screen-share]
-command=/usr/bin/weston --backend=rdp-backend.so --shell=fullscreen-shell.so 
--no-clients-resize
+command=/usr/bin/weston --backend=rdp-backend.so --shell=fullscreen-shell.so 
--no-resizeable
 
 #[xwayland]
 #path=/usr/bin/Xwayland
diff --git 
a/meta/recipes-graphics/wayland/weston/0001-libweston-backend-drm-meson.build-allow-libdisplay-i.patch
 
b/meta/recipes-graphics/wayland/weston/0001-libweston-backend-drm-meson.build-allow-libdisplay-i.patch
deleted file mode 100644
index 07916f77b3..0000000000
--- 
a/meta/recipes-graphics/wayland/weston/0001-libweston-backend-drm-meson.build-allow-libdisplay-i.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From fe8166164170465458561581afd55c325d8e138b Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <[email protected]>
-Date: Wed, 17 Dec 2025 12:54:20 +0100
-Subject: [PATCH] libweston/backend-drm/meson.build: allow libdisplay-info
- 0.3.0
-
-The patch in the main branch is against top level meson.build,
-so I manually edited in the same tweak in the 14.x codebase.
-
-Upstream-Status: Backport 
[https://gitlab.freedesktop.org/wayland/weston/-/merge_requests/1815]
-Signed-off-by: Alexander Kanavin <[email protected]>
----
- libweston/backend-drm/meson.build | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/libweston/backend-drm/meson.build 
b/libweston/backend-drm/meson.build
-index 002669e..a8f2ea5 100644
---- a/libweston/backend-drm/meson.build
-+++ b/libweston/backend-drm/meson.build
-@@ -4,7 +4,7 @@ endif
- 
- dep_libdisplay_info = dependency(
-       'libdisplay-info',
--      version: ['>= 0.1.1', '< 0.3.0'],
-+      version: ['>= 0.1.1', '< 0.4.0'],
-       fallback: ['display-info', 'di_dep'],
-       default_options: [
-               'werror=false',
diff --git 
a/meta/recipes-graphics/wayland/weston/0001-vulkan-renderer-guard-surface-output-creation-with-b.patch
 
b/meta/recipes-graphics/wayland/weston/0001-vulkan-renderer-guard-surface-output-creation-with-b.patch
new file mode 100644
index 0000000000..2d69ae2106
--- /dev/null
+++ 
b/meta/recipes-graphics/wayland/weston/0001-vulkan-renderer-guard-surface-output-creation-with-b.patch
@@ -0,0 +1,151 @@
+From ba10e6d81462fc8628dd340ba9404e13745eae18 Mon Sep 17 00:00:00 2001
+From: Erico Nunes <[email protected]>
+Date: Thu, 5 Mar 2026 17:29:06 +0100
+Subject: [PATCH] vulkan-renderer: guard surface output creation with backend
+ defines
+
+Fix compilation errors when compiling with x11 or wayland backends
+disabled or not available.
+
+Fixes: 8f56d03d ("libweston: Vulkan renderer")
+
+Signed-off-by: Erico Nunes <[email protected]>
+Upstream-Status: Backport 
[https://cgit.freedesktop.org/wayland/weston/commit/?id=ba10e6d81]
+Signed-off-by: Scott Murray <[email protected]>
+---
+ .../vulkan-renderer-internal.h                | 17 ++++++++++----
+ libweston/renderer-vulkan/vulkan-renderer.c   | 22 +++++++++++++++----
+ 2 files changed, 31 insertions(+), 8 deletions(-)
+
+diff --git a/libweston/renderer-vulkan/vulkan-renderer-internal.h 
b/libweston/renderer-vulkan/vulkan-renderer-internal.h
+index aadfc6e4..f8604227 100644
+--- a/libweston/renderer-vulkan/vulkan-renderer-internal.h
++++ b/libweston/renderer-vulkan/vulkan-renderer-internal.h
+@@ -35,17 +35,21 @@
+ #include <stdbool.h>
+ #include <time.h>
+ 
+-#include <wayland-util.h>
+ #include <vulkan/vulkan.h>
+ #include "shared/helpers.h"
+ #include "libweston/libweston.h"
+ #include "libweston/libweston-internal.h"
+-#include <xcb/xcb.h>
+ 
+-#define VK_USE_PLATFORM_XCB_KHR
++#if defined(BUILD_WAYLAND_COMPOSITOR)
+ #define VK_USE_PLATFORM_WAYLAND_KHR
+ #include <vulkan/vulkan_wayland.h>
++#endif
++
++#if defined(BUILD_X11_COMPOSITOR)
++#define VK_USE_PLATFORM_XCB_KHR
++#include <xcb/xcb.h>
+ #include <vulkan/vulkan_xcb.h>
++#endif
+ 
+ #define MAX_NUM_IMAGES 5
+ #define MAX_CONCURRENT_FRAMES 2
+@@ -173,10 +177,15 @@ struct vulkan_renderer {
+       struct wl_list pipeline_list;
+       struct dmabuf_allocator *allocator;
+ 
++#if defined(BUILD_WAYLAND_COMPOSITOR)
+       PFN_vkCreateWaylandSurfaceKHR create_wayland_surface;
+-      PFN_vkCreateXcbSurfaceKHR create_xcb_surface;
+       PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR 
get_wayland_presentation_support;
++#endif
++
++#if defined(BUILD_X11_COMPOSITOR)
++      PFN_vkCreateXcbSurfaceKHR create_xcb_surface;
+       PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR 
get_xcb_presentation_support;
++#endif
+ 
+       PFN_vkGetImageMemoryRequirements2KHR get_image_memory_requirements2;
+       PFN_vkGetMemoryFdPropertiesKHR get_memory_fd_properties;
+diff --git a/libweston/renderer-vulkan/vulkan-renderer.c 
b/libweston/renderer-vulkan/vulkan-renderer.c
+index 9f701913..b15eff46 100644
+--- a/libweston/renderer-vulkan/vulkan-renderer.c
++++ b/libweston/renderer-vulkan/vulkan-renderer.c
+@@ -303,16 +303,20 @@ static const struct vulkan_extension_table 
vulkan_inst_ext_table[] = {
+               .name = VK_KHR_SURFACE_EXTENSION_NAME,
+               .flag = EXTENSION_KHR_SURFACE,
+       },
++#if defined(BUILD_WAYLAND_COMPOSITOR)
+       {
+               .name = VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME,
+               .flag = EXTENSION_KHR_WAYLAND_SURFACE,
+               .instance_dep = EXTENSION_KHR_SURFACE,
+       },
++#endif
++#if defined(BUILD_X11_COMPOSITOR)
+       {
+               .name = VK_KHR_XCB_SURFACE_EXTENSION_NAME,
+               .flag = EXTENSION_KHR_XCB_SURFACE,
+               .instance_dep = EXTENSION_KHR_SURFACE,
+       },
++#endif
+ };
+ 
+ /* Keep in sync with vulkan-renderer-internal.h. */
+@@ -3455,9 +3459,12 @@ vulkan_renderer_output_window_create_swapchain(struct 
weston_output *output,
+       struct vulkan_renderer *vr = get_renderer(ec);
+       struct vulkan_output_state *vo = get_output_state(output);
+       VkResult result;
+-      VkBool32 supported;
++      VkBool32 supported = 0;
+       assert(vulkan_instance_has(vr, EXTENSION_KHR_SURFACE));
+ 
++      vo->swapchain.surface = VK_NULL_HANDLE;
++
++#if defined(BUILD_WAYLAND_COMPOSITOR)
+       if (options->wayland_display && options->wayland_surface) {
+               assert(vulkan_instance_has(vr, EXTENSION_KHR_WAYLAND_SURFACE));
+ 
+@@ -3472,7 +3479,10 @@ vulkan_renderer_output_window_create_swapchain(struct 
weston_output *output,
+               result = vr->create_wayland_surface(vr->inst, 
&wayland_surface_create_info, NULL,
+                                                   &vo->swapchain.surface);
+               check_vk_success(result, "vkCreateWaylandSurfaceKHR");
+-      } else if (options->xcb_connection && options->xcb_window) {
++      }
++#endif
++#if defined(BUILD_X11_COMPOSITOR)
++      if (options->xcb_connection && options->xcb_window) {
+               assert(vulkan_instance_has(vr, EXTENSION_KHR_XCB_SURFACE));
+ 
+               supported = vr->get_xcb_presentation_support(vr->phys_dev, 0, 
options->xcb_connection, options->xcb_visualid);
+@@ -3486,9 +3496,9 @@ vulkan_renderer_output_window_create_swapchain(struct 
weston_output *output,
+               result = vr->create_xcb_surface(vr->inst, 
&xcb_surface_create_info, NULL,
+                                               &vo->swapchain.surface);
+               check_vk_success(result, "vkCreateXcbSurfaceKHR");
+-      } else {
+-              assert(0);
+       }
++#endif
++      assert(vo->swapchain.surface != VK_NULL_HANDLE);
+ 
+       vkGetPhysicalDeviceSurfaceSupportKHR(vr->phys_dev, 0, 
vo->swapchain.surface, &supported);
+       assert(supported);
+@@ -4190,15 +4200,19 @@ load_instance_proc(struct vulkan_renderer *vr, const 
char *func, void *proc_ptr)
+ static void
+ vulkan_renderer_setup_instance_extensions(struct vulkan_renderer *vr)
+ {
++#if defined(BUILD_WAYLAND_COMPOSITOR)
+       if (vulkan_instance_has(vr, EXTENSION_KHR_WAYLAND_SURFACE)) {
+               load_instance_proc(vr, "vkCreateWaylandSurfaceKHR", 
&vr->create_wayland_surface);
+               load_instance_proc(vr, 
"vkGetPhysicalDeviceWaylandPresentationSupportKHR", 
&vr->get_wayland_presentation_support);
+       }
++#endif
+ 
++#if defined(BUILD_X11_COMPOSITOR)
+       if (vulkan_instance_has(vr, EXTENSION_KHR_XCB_SURFACE)) {
+               load_instance_proc(vr, "vkCreateXcbSurfaceKHR", 
&vr->create_xcb_surface);
+               load_instance_proc(vr, 
"vkGetPhysicalDeviceXcbPresentationSupportKHR", 
&vr->get_xcb_presentation_support);
+       }
++#endif
+ }
+ 
+ static void
+-- 
+2.51.0
+
diff --git a/meta/recipes-graphics/wayland/weston_14.0.2.bb 
b/meta/recipes-graphics/wayland/weston_15.0.0.bb
similarity index 87%
rename from meta/recipes-graphics/wayland/weston_14.0.2.bb
rename to meta/recipes-graphics/wayland/weston_15.0.0.bb
index c53b03def0..b67f5f52dd 100644
--- a/meta/recipes-graphics/wayland/weston_14.0.2.bb
+++ b/meta/recipes-graphics/wayland/weston_15.0.0.bb
@@ -7,14 +7,14 @@ LIC_FILES_CHKSUM = 
"file://COPYING;md5=d79ee9e66bb0f95d3386a7acae780b70 \
                     "
 
 SRC_URI = 
"https://gitlab.freedesktop.org/wayland/weston/-/releases/${PV}/downloads/${BPN}-${PV}.tar.xz
 \
+           
file://0001-vulkan-renderer-guard-surface-output-creation-with-b.patch \
            file://weston.png \
            file://weston.desktop \
            file://xwayland.weston-start \
            file://systemd-notify.weston-start \
-           
file://0001-libweston-backend-drm-meson.build-allow-libdisplay-i.patch \
            "
 
-SRC_URI[sha256sum] = 
"b47216b3530da76d02a3a1acbf1846a9cd41d24caa86448f9c46f78f20b6e0ac"
+SRC_URI[sha256sum] = 
"58c6186d29a5d2f0be0dec4882af71cc190a11da803f6ed1bf0b2c74120da973"
 
 UPSTREAM_CHECK_URI = "https://gitlab.freedesktop.org/wayland/weston/-/tags";
 UPSTREAM_CHECK_REGEX = "releases/(?P<pver>\d+\.\d+\.(?!9\d+)\d+)"
@@ -36,7 +36,7 @@ EXTRA_OEMESON += "-Dpipewire=false -Dtests=false"
 
 PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'kms 
wayland egl clients', '', d)} \
                    ${@bb.utils.contains('DISTRO_FEATURES', 'x11 wayland', 
'xwayland', '', d)} \
-                   ${@bb.utils.filter('DISTRO_FEATURES', 'systemd x11', d)} \
+                   ${@bb.utils.filter('DISTRO_FEATURES', 'systemd vulkan x11', 
d)} \
                    ${@bb.utils.contains_any('DISTRO_FEATURES', 'wayland x11', 
'', 'headless', d)} \
                    image-jpeg \
                    screenshare \
@@ -63,9 +63,11 @@ PACKAGECONFIG[headless] = 
"-Dbackend-headless=true,-Dbackend-headless=false"
 # Weston on RDP
 PACKAGECONFIG[rdp] = "-Dbackend-rdp=true,-Dbackend-rdp=false,freerdp,freerdp"
 # VA-API desktop recorder
-PACKAGECONFIG[vaapi] = 
"-Dbackend-drm-screencast-vaapi=true,-Dbackend-drm-screencast-vaapi=false,libva"
+PACKAGECONFIG[vaapi] = 
"-Ddeprecated-backend-drm-screencast-vaapi=true,-Ddeprecated-backend-drm-screencast-vaapi=false,libva"
 # Weston with EGL support
 PACKAGECONFIG[egl] = "-Drenderer-gl=true,-Drenderer-gl=false,virtual/egl"
+# Weston with Vulkan support
+PACKAGECONFIG[vulkan] = 
"-Drenderer-vulkan=true,-Drenderer-vulkan=false,glslang-native vulkan-loader 
vulkan-headers"
 # Weston with lcms support
 PACKAGECONFIG[lcms] = 
"-Dcolor-management-lcms=true,-Dcolor-management-lcms=false,lcms"
 # Weston with webp support
@@ -79,21 +81,25 @@ PACKAGECONFIG[clients] = "-Dsimple-clients=${SIMPLECLIENTS} 
-Ddemo-clients=true,
 # Virtual remote output with GStreamer on DRM backend
 PACKAGECONFIG[remoting] = "-Dremoting=true,-Dremoting=false,gstreamer1.0 
gstreamer1.0-plugins-base"
 # Weston with screen-share support
-PACKAGECONFIG[screenshare] = "-Dscreenshare=true,-Dscreenshare=false"
+PACKAGECONFIG[screenshare] = 
"-Ddeprecated-screenshare=true,-Ddeprecated-screenshare=false"
 # Traditional desktop shell
 PACKAGECONFIG[shell-desktop] = "-Dshell-desktop=true,-Dshell-desktop=false"
 # Fullscreen shell
-PACKAGECONFIG[shell-fullscreen] = 
"-Dshell-fullscreen=true,-Dshell-fullscreen=false"
+PACKAGECONFIG[shell-fullscreen] = 
"-Ddeprecated-shell-fullscreen=true,-Ddeprecated-shell-fullscreen=false"
 # In-Vehicle Infotainment (IVI) shell
 PACKAGECONFIG[shell-ivi] = "-Dshell-ivi=true,-Dshell-ivi=false"
 # Kiosk shell
 PACKAGECONFIG[shell-kiosk] = "-Dshell-kiosk=true,-Dshell-kiosk=false"
+# Lua shell
+PACKAGECONFIG[shell-lua] = "-Dshell-lua=true,-Dshell-lua=false,lua"
 # JPEG image loading support
 PACKAGECONFIG[image-jpeg] = "-Dimage-jpeg=true,-Dimage-jpeg=false, jpeg"
 # screencasting via PipeWire
 PACKAGECONFIG[pipewire] = 
"-Dbackend-pipewire=true,-Dbackend-pipewire=false,pipewire,pipewire"
 # VNC remote screensharing
 PACKAGECONFIG[vnc] = "-Dbackend-vnc=true,-Dbackend-vnc=false,neatvnc libpam"
+# Perfetto performance analysis support
+PACKAGECONFIG[perfetto] = "-Dperfetto=true,-Dperfetto=false,libperfetto"
 
 do_install:append() {
        # Weston doesn't need the .la files to load modules, so wipe them
-- 
2.51.0

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#233459): 
https://lists.openembedded.org/g/openembedded-core/message/233459
Mute This Topic: https://lists.openembedded.org/mt/118395758/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to