From ab914a76beb574639c3835904cde370d6af1a7f1 Mon Sep 17 00:00:00 2001 From: Tarik Sekmen Date: Tue, 25 Nov 2025 10:30:12 +0000 Subject: [PATCH] RDKEVD-4390: Align Vulkan + SPIR-V versioning Reason for change: Move Vulkan recipes out of the vendor layer, reuse Kirkstone 1.3.204 bits via bbappends, add full 1.3.247/1.3.260 recipes for headers/loader/tools/validation layers, and mirror that versioning for spirv-headers and spirv-tools so the entire stack stays in lockstep. Test Procedure: Build and test Priority: P1 Risks: Low Signed-off-by: Tarik Sekmen --- recipes-graphics/spir/spirv-headers.inc | 19 ++ .../spir/spirv-headers_1.3.247.bb | 5 + .../spir/spirv-headers_1.3.260.bb | 6 + recipes-graphics/spir/spirv-tools.inc | 40 +++ .../spir/spirv-tools_1.3.204.1.bbappend | 4 + recipes-graphics/spir/spirv-tools_1.3.247.bb | 7 + recipes-graphics/spir/spirv-tools_1.3.260.bb | 8 + recipes-graphics/vulkan/README.md | 55 +++++ recipes-graphics/vulkan/vulkan-headers.inc | 25 ++ .../vulkan/vulkan-headers_1.3.247.bb | 6 + .../vulkan/vulkan-headers_1.3.260.bb | 6 + recipes-graphics/vulkan/vulkan-loader.inc | 34 +++ .../vulkan/vulkan-loader_1.3.247.bb | 4 + .../vulkan/vulkan-loader_1.3.260.bb | 4 + recipes-graphics/vulkan/vulkan-tools.inc | 50 ++++ ...001-Disable-xdg-wm-base-related-code.patch | 232 ++++++++++++++++++ ...e-Yocto-cross-build-and-optional-xdg.patch | 191 ++++++++++++++ .../vulkan/vulkan-tools_1.3.204.1.bbappend | 23 ++ .../vulkan/vulkan-tools_1.3.247.bb | 6 + .../vulkan/vulkan-tools_1.3.260.bb | 6 + .../vulkan/vulkan-validationlayers.inc | 44 ++++ .../vulkan-validationlayers_1.3.204.1.bb | 14 ++ .../vulkan/vulkan-validationlayers_1.3.247.bb | 4 + .../vulkan/vulkan-validationlayers_1.3.260.bb | 5 + 24 files changed, 798 insertions(+) create mode 100644 recipes-graphics/spir/spirv-headers.inc create mode 100644 recipes-graphics/spir/spirv-headers_1.3.247.bb create mode 100644 recipes-graphics/spir/spirv-headers_1.3.260.bb create mode 100644 recipes-graphics/spir/spirv-tools.inc create mode 100644 recipes-graphics/spir/spirv-tools_1.3.204.1.bbappend create mode 100644 recipes-graphics/spir/spirv-tools_1.3.247.bb create mode 100644 recipes-graphics/spir/spirv-tools_1.3.260.bb create mode 100644 recipes-graphics/vulkan/README.md create mode 100644 recipes-graphics/vulkan/vulkan-headers.inc create mode 100644 recipes-graphics/vulkan/vulkan-headers_1.3.247.bb create mode 100644 recipes-graphics/vulkan/vulkan-headers_1.3.260.bb create mode 100644 recipes-graphics/vulkan/vulkan-loader.inc create mode 100644 recipes-graphics/vulkan/vulkan-loader_1.3.247.bb create mode 100644 recipes-graphics/vulkan/vulkan-loader_1.3.260.bb create mode 100644 recipes-graphics/vulkan/vulkan-tools.inc create mode 100644 recipes-graphics/vulkan/vulkan-tools/0001-Disable-xdg-wm-base-related-code.patch create mode 100644 recipes-graphics/vulkan/vulkan-tools/0001-vulkan-tools-cube-Yocto-cross-build-and-optional-xdg.patch create mode 100644 recipes-graphics/vulkan/vulkan-tools_1.3.204.1.bbappend create mode 100644 recipes-graphics/vulkan/vulkan-tools_1.3.247.bb create mode 100644 recipes-graphics/vulkan/vulkan-tools_1.3.260.bb create mode 100644 recipes-graphics/vulkan/vulkan-validationlayers.inc create mode 100644 recipes-graphics/vulkan/vulkan-validationlayers_1.3.204.1.bb create mode 100644 recipes-graphics/vulkan/vulkan-validationlayers_1.3.247.bb create mode 100644 recipes-graphics/vulkan/vulkan-validationlayers_1.3.260.bb diff --git a/recipes-graphics/spir/spirv-headers.inc b/recipes-graphics/spir/spirv-headers.inc new file mode 100644 index 00000000..5ce8e46e --- /dev/null +++ b/recipes-graphics/spir/spirv-headers.inc @@ -0,0 +1,19 @@ +SUMMARY = "Machine-readable files for the SPIR-V Registry" +DESCRIPTION = "Headers are provided in the include directory, with up-to-date \ +headers in the unified1 subdirectory. Older headers are provided according to \ +their version." +SECTION = "graphics" +HOMEPAGE = "https://www.khronos.org/registry/spir-v" + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=c938b85bceb8fb26c1a807f28a52ae2d" + +SRC_URI = "git://github.com/KhronosGroup/SPIRV-Headers;protocol=https;branch=main" + +PE = "1" +UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P\\d+(\\.\\d+)+)" +S = "${WORKDIR}/git" + +inherit cmake + +BBCLASSEXTEND = "native nativesdk" diff --git a/recipes-graphics/spir/spirv-headers_1.3.247.bb b/recipes-graphics/spir/spirv-headers_1.3.247.bb new file mode 100644 index 00000000..008b9f11 --- /dev/null +++ b/recipes-graphics/spir/spirv-headers_1.3.247.bb @@ -0,0 +1,5 @@ +require spirv-headers.inc + +PV = "1.3.247" +# sdk-1.3.246.1 tag is the upstream drop published alongside Vulkan SDK 1.3.247 +SRCREV = "1feaf4414eb2b353764d01d88f8aa4bcc67b60db" diff --git a/recipes-graphics/spir/spirv-headers_1.3.260.bb b/recipes-graphics/spir/spirv-headers_1.3.260.bb new file mode 100644 index 00000000..ab9ffb41 --- /dev/null +++ b/recipes-graphics/spir/spirv-headers_1.3.260.bb @@ -0,0 +1,6 @@ +require spirv-headers.inc + +PV = "1.3.260" +# PV tracks the Vulkan SDK version (1.3.260); the SPIR-V headers are taken from +# the sdk-1.3.261.1 tag, which is the closest Khronos drop compatible with 1.3.260. +SRCREV = "124a9665e464ef98b8b718d572d5f329311061eb" diff --git a/recipes-graphics/spir/spirv-tools.inc b/recipes-graphics/spir/spirv-tools.inc new file mode 100644 index 00000000..5af9d3a4 --- /dev/null +++ b/recipes-graphics/spir/spirv-tools.inc @@ -0,0 +1,40 @@ +SUMMARY = "The SPIR-V Tools project provides an API and commands for processing SPIR-V modules" +DESCRIPTION = "The project includes an assembler, binary module parser, disassembler, validator, and optimizer for SPIR-V." +SECTION = "graphics" +HOMEPAGE = "https://github.com/KhronosGroup/SPIRV-Tools" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57" + +SRC_URI = "git://github.com/KhronosGroup/SPIRV-Tools.git;protocol=https;branch=main" + +PE = "1" +UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P\\d+(\\.\\d+)+)" +S = "${WORKDIR}/git" + +inherit cmake python3native + +DEPENDS = "spirv-headers" + +EXTRA_OECMAKE += "\ + -DSPIRV-Headers_SOURCE_DIR=${STAGING_EXECPREFIXDIR} \ + -DSPIRV_TOOLS_BUILD_STATIC=OFF \ + -DBUILD_SHARED_LIBS=ON \ + -DSPIRV_SKIP_TESTS=ON \ +" + +do_install:append:class-target() { + # reproducibility: remove build host path + sed -i -e 's:${STAGING_DIR_HOST}${libdir}/::g' \ + ${D}${libdir}/cmake/SPIRV-Tools/SPIRV-ToolsTarget.cmake +} + +# all the libraries are unversioned, so don't pack it on PN-dev +SOLIBS = ".so" +FILES_SOLIBSDEV = "" + +PACKAGES =+ "${PN}-lesspipe" +FILES:${PN}-lesspipe = "${base_bindir}/spirv-lesspipe.sh" +RDEPENDS:${PN}-lesspipe += "${PN} bash" + +BBCLASSEXTEND = "native nativesdk" diff --git a/recipes-graphics/spir/spirv-tools_1.3.204.1.bbappend b/recipes-graphics/spir/spirv-tools_1.3.204.1.bbappend new file mode 100644 index 00000000..d2f764f3 --- /dev/null +++ b/recipes-graphics/spir/spirv-tools_1.3.204.1.bbappend @@ -0,0 +1,4 @@ +do_install:append:class-target() { + sed -i -e 's:${STAGING_DIR_HOST}${libdir}/::g' \ + ${D}${libdir}/cmake/SPIRV-Tools/SPIRV-ToolsTarget.cmake +} diff --git a/recipes-graphics/spir/spirv-tools_1.3.247.bb b/recipes-graphics/spir/spirv-tools_1.3.247.bb new file mode 100644 index 00000000..58b7facf --- /dev/null +++ b/recipes-graphics/spir/spirv-tools_1.3.247.bb @@ -0,0 +1,7 @@ +require spirv-tools.inc + +PV = "1.3.247" +# Note: this recipe uses the SPIR-V Tools SDK drop sdk-1.3.246.1, which ships as part of +# Vulkan SDK 1.3.247. PV is intentionally set to the Vulkan SDK version (1.3.247) rather +# than the SPIR-V SDK tag to follow the Vulkan SDK versioning convention in this layer. +SRCREV = "44d72a9b36702f093dd20815561a56778b2d181e" diff --git a/recipes-graphics/spir/spirv-tools_1.3.260.bb b/recipes-graphics/spir/spirv-tools_1.3.260.bb new file mode 100644 index 00000000..23d60bc2 --- /dev/null +++ b/recipes-graphics/spir/spirv-tools_1.3.260.bb @@ -0,0 +1,8 @@ +require spirv-tools.inc + +PV = "1.3.260" +# Note: PV tracks the Vulkan SDK version (1.3.260), but upstream does not +# provide an exact SPIR-V Tools tag for this SDK release. We therefore pin +# SRCREV to sdk-1.3.261.1, which is the closest published SPIR-V Tools drop +# corresponding to Vulkan SDK 1.3.260. +SRCREV = "e553b884c7c9febaa4e52334f683641fb5f196a0" diff --git a/recipes-graphics/vulkan/README.md b/recipes-graphics/vulkan/README.md new file mode 100644 index 00000000..044facb3 --- /dev/null +++ b/recipes-graphics/vulkan/README.md @@ -0,0 +1,55 @@ +# Vulkan SDK Integration + +This directory contains recipes for Vulkan SDK components used across STB and TV platforms in RDK. + +## Integration Strategy + +- RDK provides common, unmodified Khronos Vulkan components as external recipes: + +| Component | Description | +|---------------------------|------------------------------------------------| +| `vulkan-headers` | Vulkan API headers from Khronos | +| `vulkan-loader` | Khronos Vulkan loader (`libvulkan.so`) | +| `vulkan-tools` | Vulkan info and utilities (`vulkaninfo`) | +| `vulkan-validationlayers` | Optional validation layers for debugging | + +- SoC vendors are expected to: + - Provide only their Vulkan **ICD JSON** and **driver** + - Not include their own `libvulkan.so` + +- All components are built via Yocto, and versioned recipes are maintained for platform-specific needs. + +## OpenEmbedded-Core Integration + +For version 1.3.204, this layer extends the recipes provided by the Yocto Kirkstone (OE-Core) layer: +- `vulkan-headers_1.3.204.1` - Uses OE-core recipe +- `vulkan-loader_1.3.204.1` - Uses OE-core recipe +- `vulkan-tools_1.3.204.1` - Uses OE-core recipe with custom patches via bbappend +- `spirv-headers_1.3.204.1` / `spirv-tools_1.3.204.1` - Provided by OE-core and extended as needed + +The bbappend for vulkan-tools adds: +- CUBE build support (`-DBUILD_CUBE=ON`) +- Custom patches for Wayland support + +## Versioning and Platform Usage + +Platform-specific version selection is done via: + +```conf +PREFERRED_VERSION_vulkan-headers = "1.3.260" +PREFERRED_VERSION_vulkan-loader = "1.3.260" +PREFERRED_VERSION_vulkan-tools = "1.3.260" +PREFERRED_VERSION_vulkan-validationlayers = "1.3.260" +``` + +These can be overridden per-platform in machine configuration files. + +## Recipe Structure + +- **Version 1.3.204**: Uses OE-core (Kirkstone) recipes with bbappends for customizations +- **Versions 1.3.247 and 1.3.260**: Complete recipes in this layer (not in OE-core) +- **vulkan-validationlayers**: All versions in this layer (not in OE-core) +- **SPIR-V dependencies**: For 1.3.204, `spirv-headers` and `spirv-tools` come from OE-core (Kirkstone); for newer SDKs, versions 1.3.247 and 1.3.260 are provided in this layer and follow the same versioning as the Vulkan components to keep the toolchain aligned with headers, loader, and validation layers + +## Notes +- The upstream SPIR-V repositories do not ship explicit 1.3.247 / 1.3.260 tags; the recipes therefore use the closest published SDK tags (1.3.246.1 and 1.3.261.1) that ship with those Vulkan SDK drops. diff --git a/recipes-graphics/vulkan/vulkan-headers.inc b/recipes-graphics/vulkan/vulkan-headers.inc new file mode 100644 index 00000000..8d7b0957 --- /dev/null +++ b/recipes-graphics/vulkan/vulkan-headers.inc @@ -0,0 +1,25 @@ +SUMMARY = "Vulkan Header files and API registry" +DESCRIPTION = "Vulkan is a 3D graphics and compute API providing cross-platform access \ +to modern GPUs with low overhead and targeting realtime graphics applications such as \ +games and interactive media. This package contains the development headers \ +for packages wanting to make use of Vulkan." +HOMEPAGE = "https://www.khronos.org/vulkan/" +BUGTRACKER = "https://github.com/KhronosGroup/Vulkan-Headers" +SECTION = "libs" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57" + +SRC_URI = "git://github.com/KhronosGroup/Vulkan-Headers.git;branch=main;protocol=https" + +S = "${WORKDIR}/git" + +inherit cmake + +FILES:${PN} = "${includedir}/vulkan ${datadir}/cmake/VulkanHeaders" + +do_install:append() { + rm -rf ${D}${datadir}/vulkan +} + +UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P\d+(\.\d+)+)" diff --git a/recipes-graphics/vulkan/vulkan-headers_1.3.247.bb b/recipes-graphics/vulkan/vulkan-headers_1.3.247.bb new file mode 100644 index 00000000..13481980 --- /dev/null +++ b/recipes-graphics/vulkan/vulkan-headers_1.3.247.bb @@ -0,0 +1,6 @@ +require vulkan-headers.inc + +SRCREV = "95a13d7b7118d3824f0ef236bb0438d9d51f3634" +PV = "1.3.247" + +PACKAGES := "${PN} ${PN}-dev" diff --git a/recipes-graphics/vulkan/vulkan-headers_1.3.260.bb b/recipes-graphics/vulkan/vulkan-headers_1.3.260.bb new file mode 100644 index 00000000..24e4ddeb --- /dev/null +++ b/recipes-graphics/vulkan/vulkan-headers_1.3.260.bb @@ -0,0 +1,6 @@ +require vulkan-headers.inc + +SRCREV = "94bb3c998b9156b9101421f7614617dfcf7f4256" +PV = "1.3.260" + +PACKAGES := "${PN} ${PN}-dev" diff --git a/recipes-graphics/vulkan/vulkan-loader.inc b/recipes-graphics/vulkan/vulkan-loader.inc new file mode 100644 index 00000000..7a5b3dbc --- /dev/null +++ b/recipes-graphics/vulkan/vulkan-loader.inc @@ -0,0 +1,34 @@ +SUMMARY = "3D graphics and compute API common loader" +DESCRIPTION = "Vulkan is a new generation graphics and compute API \ +that provides efficient access to modern GPUs. These packages \ +provide only the common vendor-agnostic library loader, headers and \ +the vulkaninfo utility." +HOMEPAGE = "https://www.khronos.org/vulkan/" +BUGTRACKER = "https://github.com/KhronosGroup/Vulkan-Loader" +SECTION = "libs" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=7dbefed23242760aa3475ee42801c5ac" + +SRC_URI = "git://github.com/KhronosGroup/Vulkan-Loader.git;branch=main;protocol=https" + +S = "${WORKDIR}/git" + +REQUIRED_DISTRO_FEATURES = "vulkan" +ANY_OF_DISTRO_FEATURES = "x11 wayland" + +inherit cmake features_check pkgconfig + +DEPENDS += "vulkan-headers" + +EXTRA_OECMAKE = "\ + -DBUILD_TESTS=OFF \ + -DPYTHON_EXECUTABLE=${HOSTTOOLS_DIR}/python3 \ + -DASSEMBLER_WORKS=FALSE \ + -DVulkanHeaders_INCLUDE_DIR=${STAGING_INCDIR} \ +" + +PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'wayland x11', d)}" + +PACKAGECONFIG[x11] = "-DBUILD_WSI_XLIB_SUPPORT=ON -DBUILD_WSI_XCB_SUPPORT=ON, -DBUILD_WSI_XLIB_SUPPORT=OFF -DBUILD_WSI_XCB_SUPPORT=OFF, libxcb libx11 libxrandr" +PACKAGECONFIG[wayland] = "-DBUILD_WSI_WAYLAND_SUPPORT=ON, -DBUILD_WSI_WAYLAND_SUPPORT=OFF, wayland" diff --git a/recipes-graphics/vulkan/vulkan-loader_1.3.247.bb b/recipes-graphics/vulkan/vulkan-loader_1.3.247.bb new file mode 100644 index 00000000..f2735349 --- /dev/null +++ b/recipes-graphics/vulkan/vulkan-loader_1.3.247.bb @@ -0,0 +1,4 @@ +require vulkan-loader.inc + +SRCREV = "797ffe01088e61daa9d12c3810e0bbaa9652558a" +PV = "1.3.247" diff --git a/recipes-graphics/vulkan/vulkan-loader_1.3.260.bb b/recipes-graphics/vulkan/vulkan-loader_1.3.260.bb new file mode 100644 index 00000000..39b1580b --- /dev/null +++ b/recipes-graphics/vulkan/vulkan-loader_1.3.260.bb @@ -0,0 +1,4 @@ +require vulkan-loader.inc + +SRCREV = "5bc25766b0fa8cd17d4f1f112a5c58828997cf81" +PV = "1.3.260" diff --git a/recipes-graphics/vulkan/vulkan-tools.inc b/recipes-graphics/vulkan/vulkan-tools.inc new file mode 100644 index 00000000..135e4b2f --- /dev/null +++ b/recipes-graphics/vulkan/vulkan-tools.inc @@ -0,0 +1,50 @@ +SUMMARY = "Vulkan Utilities and Tools" +DESCRIPTION = "Assist development by enabling developers to verify their application's correct use of the Vulkan API." +HOMEPAGE = "https://www.khronos.org/vulkan/" +BUGTRACKER = "https://github.com/KhronosGroup/Vulkan-Tools" +SECTION = "libs" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57" + +SRC_URI = "git://github.com/KhronosGroup/Vulkan-Tools.git;branch=main;protocol=https" +S = "${WORKDIR}/git" + +inherit cmake features_check pkgconfig + +# Wayland is required for vulkan-tools (e.g. vkcube) on RDKE +REQUIRED_DISTRO_FEATURES = "vulkan wayland" + +DEPENDS += " \ + vulkan-headers \ + vulkan-loader \ + wayland \ + wayland-protocols \ + wayland-native \ + glslang-native \ +" +RDEPENDS:${PN} += "vulkan-loader" + +EXTRA_OECMAKE = "\ + -DBUILD_TESTS=OFF \ + -DBUILD_CUBE=ON \ + -DPYTHON_EXECUTABLE=${HOSTTOOLS_DIR}/python3 \ + -DCUBE_WSI_SELECTION=WAYLAND \ +" + +PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'wayland x11', d)}" + +PACKAGECONFIG[x11] = "-DBUILD_WSI_XLIB_SUPPORT=ON -DBUILD_WSI_XCB_SUPPORT=ON, -DBUILD_WSI_XLIB_SUPPORT=OFF -DBUILD_WSI_XCB_SUPPORT=OFF, libxcb libx11 libxrandr" +PACKAGECONFIG[wayland] = "-DBUILD_WSI_WAYLAND_SUPPORT=ON, -DBUILD_WSI_WAYLAND_SUPPORT=OFF, wayland wayland-protocols wayland-native" + +UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P\d+(\.\d+)+)" + +FILES:${PN} = " \ + ${bindir}/vulkaninfo \ + ${bindir}/vkcube \ +" + +do_install:append() { + rm -f ${D}${bindir}/vkcubepp || true + rm -f ${D}${bindir}/vkcube-wayland || true +} diff --git a/recipes-graphics/vulkan/vulkan-tools/0001-Disable-xdg-wm-base-related-code.patch b/recipes-graphics/vulkan/vulkan-tools/0001-Disable-xdg-wm-base-related-code.patch new file mode 100644 index 00000000..861e32eb --- /dev/null +++ b/recipes-graphics/vulkan/vulkan-tools/0001-Disable-xdg-wm-base-related-code.patch @@ -0,0 +1,232 @@ +From 097578b35dde6718966f144299598856813a038c Mon Sep 17 00:00:00 2001 +From: Tarik Sekmen +Date: Wed, 11 Jun 2025 15:23:24 +0100 +Subject: [PATCH] Disable xdg-wm-base related code + +Source: Sky +Upstream-Status: Inappropriate [Yocto-specific] +Signed-off-by: Tarik Sekmen + +--- + cube/cube.c | 23 +++++++++++++++++++---- + cube/cube.cpp | 24 +++++++++++++++++++----- + 2 files changed, 38 insertions(+), 9 deletions(-) + +diff --git a/cube/cube.c b/cube/cube.c +index 75d573b4..5f8d0634 100644 +--- a/cube/cube.c ++++ b/cube/cube.c +@@ -342,7 +342,9 @@ struct demo { + struct wl_registry *registry; + struct wl_compositor *compositor; + struct wl_surface *window; ++#ifdef ENABLE_XDG + struct xdg_wm_base *xdg_wm_base; ++#endif + struct zxdg_decoration_manager_v1 *xdg_decoration_mgr; + struct zxdg_toplevel_decoration_v1 *toplevel_decoration; + struct xdg_surface *xdg_surface; +@@ -2473,7 +2475,9 @@ static void demo_cleanup(struct demo *demo) { + xdg_toplevel_destroy(demo->xdg_toplevel); + xdg_surface_destroy(demo->xdg_surface); + wl_surface_destroy(demo->window); ++#ifdef ENABLE_XDG + xdg_wm_base_destroy(demo->xdg_wm_base); ++#endif + if (demo->xdg_decoration_mgr) { + zxdg_toplevel_decoration_v1_destroy(demo->toplevel_decoration); + zxdg_decoration_manager_v1_destroy(demo->xdg_decoration_mgr); +@@ -2858,6 +2862,7 @@ static void demo_run(struct demo *demo) { + } + } + ++#ifdef ENABLE_XDG + static void handle_surface_configure(void *data, struct xdg_surface *xdg_surface, uint32_t serial) { + struct demo *demo = (struct demo *)data; + xdg_surface_ack_configure(xdg_surface, serial); +@@ -2868,6 +2873,7 @@ static void handle_surface_configure(void *data, struct xdg_surface *xdg_surface + } + + static const struct xdg_surface_listener xdg_surface_listener = {handle_surface_configure}; ++#endif + + static void handle_toplevel_configure(void *data, struct xdg_toplevel *xdg_toplevel UNUSED, int32_t width, int32_t height, + struct wl_array *states UNUSED) { +@@ -2891,11 +2897,13 @@ static void handle_toplevel_close(void *data, struct xdg_toplevel *xdg_toplevel + static const struct xdg_toplevel_listener xdg_toplevel_listener = {handle_toplevel_configure, handle_toplevel_close}; + + static void demo_create_window(struct demo *demo) { ++#ifdef ENABLE_XDG + if (!demo->xdg_wm_base) { + printf("Compositor did not provide the standard protocol xdg-wm-base\n"); + fflush(stdout); + exit(1); + } ++#endif + + demo->window = wl_compositor_create_surface(demo->compositor); + if (!demo->window) { +@@ -2903,7 +2911,7 @@ static void demo_create_window(struct demo *demo) { + fflush(stdout); + exit(1); + } +- ++#ifdef ENABLE_XDG + demo->xdg_surface = xdg_wm_base_get_xdg_surface(demo->xdg_wm_base, demo->window); + if (!demo->xdg_surface) { + printf("Can not get xdg_surface from wayland_surface!\n"); +@@ -2925,6 +2933,7 @@ static void demo_create_window(struct demo *demo) { + zxdg_decoration_manager_v1_get_toplevel_decoration(demo->xdg_decoration_mgr, demo->xdg_toplevel); + zxdg_toplevel_decoration_v1_set_mode(demo->toplevel_decoration, ZXDG_TOPLEVEL_DECORATION_V1_MODE_SERVER_SIDE); + } ++#endif + + wl_surface_commit(demo->window); + } +@@ -3958,7 +3967,7 @@ static void seat_handle_capabilities(void *data, struct wl_seat *seat, enum wl_s + demo->keyboard = wl_seat_get_keyboard(seat); + wl_keyboard_add_listener(demo->keyboard, &keyboard_listener, demo); + } else if (!(caps & WL_SEAT_CAPABILITY_KEYBOARD) && demo->keyboard) { +- wl_keyboard_destroy(demo->keyboard); ++ //wl_keyboard_destroy(demo->keyboard); + demo->keyboard = NULL; + } + } +@@ -3967,11 +3976,13 @@ static const struct wl_seat_listener seat_listener = { + seat_handle_capabilities, + }; + ++#ifdef ENABLE_XDG + static void wm_base_ping(void *data UNUSED, struct xdg_wm_base *xdg_wm_base, uint32_t serial) { + xdg_wm_base_pong(xdg_wm_base, serial); + } + + static const struct xdg_wm_base_listener wm_base_listener = {wm_base_ping}; ++#endif + + static void registry_handle_global(void *data, struct wl_registry *registry, uint32_t id, const char *interface, + uint32_t version UNUSED) { +@@ -3984,10 +3995,14 @@ static void registry_handle_global(void *data, struct wl_registry *registry, uin + fprintf(stderr, "Wayland compositor doesn't support VK_KHR_incremental_present, disabling.\n"); + demo->VK_KHR_incremental_present_enabled = false; + } +- } else if (strcmp(interface, xdg_wm_base_interface.name) == 0) { ++ } ++#ifdef ENABLE_XDG ++ else if (strcmp(interface, xdg_wm_base_interface.name) == 0) { + demo->xdg_wm_base = wl_registry_bind(registry, id, &xdg_wm_base_interface, 1); + xdg_wm_base_add_listener(demo->xdg_wm_base, &wm_base_listener, NULL); +- } else if (strcmp(interface, wl_seat_interface.name) == 0) { ++ } ++#endif ++ else if (strcmp(interface, wl_seat_interface.name) == 0) { + demo->seat = wl_registry_bind(registry, id, &wl_seat_interface, 1); + wl_seat_add_listener(demo->seat, &seat_listener, demo); + } else if (strcmp(interface, zxdg_decoration_manager_v1_interface.name) == 0) { +diff --git a/cube/cube.cpp b/cube/cube.cpp +index a08541fb..d6370f39 100644 +--- a/cube/cube.cpp ++++ b/cube/cube.cpp +@@ -307,7 +307,9 @@ struct Demo { + wl_registry *registry = nullptr; + wl_compositor *compositor = nullptr; + wl_surface *window = nullptr; ++#ifdef ENABLE_XDG + xdg_wm_base *wm_base = nullptr; ++#endif + zxdg_decoration_manager_v1 *xdg_decoration_mgr = nullptr; + zxdg_toplevel_decoration_v1 *toplevel_decoration = nullptr; + xdg_surface *window_surface = nullptr; +@@ -497,7 +499,7 @@ static void seat_handle_capabilities(void *data, wl_seat *seat, uint32_t caps) { + demo.keyboard = wl_seat_get_keyboard(seat); + wl_keyboard_add_listener(demo.keyboard, &keyboard_listener, &demo); + } else if (!(caps & WL_SEAT_CAPABILITY_KEYBOARD) && demo.keyboard) { +- wl_keyboard_destroy(demo.keyboard); ++ //wl_keyboard_destroy(demo.keyboard); + demo.keyboard = nullptr; + } + } +@@ -506,19 +508,25 @@ static const wl_seat_listener seat_listener = { + seat_handle_capabilities, + }; + ++#ifdef ENABLE_XDG + static void wm_base_ping(void *data, xdg_wm_base *xdg_wm_base, uint32_t serial) { xdg_wm_base_pong(xdg_wm_base, serial); } + + static const struct xdg_wm_base_listener wm_base_listener = {wm_base_ping}; ++#endif + + static void registry_handle_global(void *data, wl_registry *registry, uint32_t id, const char *interface, uint32_t version) { + Demo &demo = *static_cast(data); + // pickup wayland objects when they appear + if (strcmp(interface, wl_compositor_interface.name) == 0) { + demo.compositor = (wl_compositor *)wl_registry_bind(registry, id, &wl_compositor_interface, 1); +- } else if (strcmp(interface, xdg_wm_base_interface.name) == 0) { ++ } ++#ifdef ENABLE_XDG ++ else if (strcmp(interface, xdg_wm_base_interface.name) == 0) { + demo.wm_base = (xdg_wm_base *)wl_registry_bind(registry, id, &xdg_wm_base_interface, 1); + xdg_wm_base_add_listener(demo.wm_base, &wm_base_listener, nullptr); +- } else if (strcmp(interface, wl_seat_interface.name) == 0) { ++ } ++#endif ++ else if (strcmp(interface, wl_seat_interface.name) == 0) { + demo.seat = (wl_seat *)wl_registry_bind(registry, id, &wl_seat_interface, 1); + wl_seat_add_listener(demo.seat, &seat_listener, &demo); + } else if (strcmp(interface, zxdg_decoration_manager_v1_interface.name) == 0) { +@@ -609,7 +617,9 @@ void Demo::cleanup() { + xdg_toplevel_destroy(window_toplevel); + xdg_surface_destroy(window_surface); + wl_surface_destroy(window); ++#ifdef ENABLE_XDG + xdg_wm_base_destroy(wm_base); ++#endif + if (xdg_decoration_mgr) { + zxdg_toplevel_decoration_v1_destroy(toplevel_decoration); + zxdg_decoration_manager_v1_destroy(xdg_decoration_mgr); +@@ -2784,6 +2794,7 @@ void Demo::run() { + } + } + ++#ifdef ENABLE_XDG + static void handle_surface_configure(void *data, xdg_surface *xdg_surface, uint32_t serial) { + Demo &demo = *static_cast(data); + xdg_surface_ack_configure(xdg_surface, serial); +@@ -2815,13 +2826,16 @@ static void handle_toplevel_close(void *data, xdg_toplevel *xdg_toplevel) { + } + + static const xdg_toplevel_listener toplevel_listener = {handle_toplevel_configure, handle_toplevel_close}; ++#endif + + void Demo::create_window() { ++#ifdef ENABLE_XDG + if (!wm_base) { + printf("Compositor did not provide the standard protocol xdg-wm-base\n"); + fflush(stdout); + exit(1); + } ++#endif + + window = wl_compositor_create_surface(compositor); + if (!window) { +@@ -2829,7 +2843,7 @@ void Demo::create_window() { + fflush(stdout); + exit(1); + } +- ++#ifdef ENABLE_XDG + window_surface = xdg_wm_base_get_xdg_surface(wm_base, window); + if (!window_surface) { + printf("Can not get xdg_surface from wayland_surface!\n"); +@@ -2850,7 +2864,7 @@ void Demo::create_window() { + toplevel_decoration = zxdg_decoration_manager_v1_get_toplevel_decoration(xdg_decoration_mgr, window_toplevel); + zxdg_toplevel_decoration_v1_set_mode(toplevel_decoration, ZXDG_TOPLEVEL_DECORATION_V1_MODE_SERVER_SIDE); + } +- ++#endif + wl_surface_commit(window); + } + #elif defined(VK_USE_PLATFORM_DIRECTFB_EXT) +-- +2.34.1 + diff --git a/recipes-graphics/vulkan/vulkan-tools/0001-vulkan-tools-cube-Yocto-cross-build-and-optional-xdg.patch b/recipes-graphics/vulkan/vulkan-tools/0001-vulkan-tools-cube-Yocto-cross-build-and-optional-xdg.patch new file mode 100644 index 00000000..514e01e4 --- /dev/null +++ b/recipes-graphics/vulkan/vulkan-tools/0001-vulkan-tools-cube-Yocto-cross-build-and-optional-xdg.patch @@ -0,0 +1,191 @@ +From 247dd2ac91a3d6f32e12258c0dab9c572bf1664f Mon Sep 17 00:00:00 2001 +From: Tarik Sekmen +Date: Tue, 10 Feb 2026 18:13:04 +0000 +Subject: [PATCH] vulkan-tools/cube: Yocto cross-build and optional xdg-wm-base + +Source: Sky +Upstream-Status: Inappropriate [Yocto-specific] +Signed-off-by: Tarik Sekmen + +- Allow cross-build of vkcube and vkcubepp by removing + the native-only check (CMAKE_SYSTEM_PROCESSOR eq + CMAKE_HOST_SYSTEM_PROCESSOR). Keep linking with rt when available. +- Guard xdg_wm_base usage in cube.c and cube.cpp with + #if defined(XDG_WM_BASE_PROTO) so the build works when xdg-wm-base + is not available (e.g. minimal Wayland). +--- + cube/CMakeLists.txt | 18 ++++++------------ + cube/cube.c | 8 +++++++- + cube/cube.cpp | 8 +++++++- + 3 files changed, 20 insertions(+), 14 deletions(-) + +diff --git a/cube/CMakeLists.txt b/cube/CMakeLists.txt +index 4087351d..604283e9 100644 +--- a/cube/CMakeLists.txt ++++ b/cube/CMakeLists.txt +@@ -228,21 +228,19 @@ include_directories(${CUBE_INCLUDE_DIRS}) + if(APPLE) + include(macOS/cube/cube.cmake) + elseif(NOT WIN32) +- if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL ${CMAKE_HOST_SYSTEM_PROCESSOR}) +- add_executable(vkcube ++ add_executable(vkcube + cube.c + ${PROJECT_SOURCE_DIR}/cube/cube.vert + ${PROJECT_SOURCE_DIR}/cube/cube.frag + cube.vert.inc + cube.frag.inc + ${OPTIONAL_WAYLAND_DATA_FILES}) +- target_link_libraries(vkcube Vulkan::Vulkan) +- target_compile_definitions(vkcube PUBLIC ${CUBE_PLATFORM}) +- include(CheckLibraryExists) +- CHECK_LIBRARY_EXISTS("rt" clock_gettime "" NEED_RT) +- if (NEED_RT) ++ target_link_libraries(vkcube Vulkan::Vulkan) ++ target_compile_definitions(vkcube PUBLIC ${CUBE_PLATFORM}) ++ include(CheckLibraryExists) ++ CHECK_LIBRARY_EXISTS("rt" clock_gettime "" NEED_RT) ++ if (NEED_RT) + target_link_libraries(vkcube rt) +- endif() + endif() + else() + if(CMAKE_CL_64) +@@ -280,7 +278,6 @@ endif() + if(APPLE) + include(macOS/cubepp/cubepp.cmake) + elseif(NOT WIN32) +- if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL ${CMAKE_HOST_SYSTEM_PROCESSOR}) + add_executable(vkcubepp + cube.cpp + ${PROJECT_SOURCE_DIR}/cube/cube.vert +@@ -290,7 +287,6 @@ elseif(NOT WIN32) + ${OPTIONAL_WAYLAND_DATA_FILES}) + target_link_libraries(vkcubepp Vulkan::Vulkan) + target_compile_definitions(vkcubepp PUBLIC ${CUBE_PLATFORM}) +- endif() + else() + if(CMAKE_CL_64) + set(LIB_DIR "Win64") +@@ -334,7 +330,6 @@ if(UNIX AND NOT APPLE) # i.e. Linux + ${CMAKE_CURRENT_BINARY_DIR}/xdg-decoration-code.c + ${CMAKE_CURRENT_BINARY_DIR}/xdg-decoration-client-header.h) + include_directories(${CMAKE_CURRENT_BINARY_DIR}) +- if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL ${CMAKE_HOST_SYSTEM_PROCESSOR}) + add_executable(vkcube-wayland + cube.c + ${PROJECT_SOURCE_DIR}/cube/cube.vert +@@ -349,6 +344,5 @@ if(UNIX AND NOT APPLE) # i.e. Linux + if (NEED_RT) + target_link_libraries(vkcube-wayland rt) + endif() +- endif() + endif() + endif() +diff --git a/cube/cube.c b/cube/cube.c +index 6bf8f4ac..ee4c0572 100644 +--- a/cube/cube.c ++++ b/cube/cube.c +@@ -2391,14 +2391,16 @@ static void demo_cleanup(struct demo *demo) { + wl_keyboard_destroy(demo->keyboard); + wl_pointer_destroy(demo->pointer); + wl_seat_destroy(demo->seat); ++#if defined(XDG_WM_BASE_PROTO) + xdg_toplevel_destroy(demo->xdg_toplevel); + xdg_surface_destroy(demo->xdg_surface); +- wl_surface_destroy(demo->window); + xdg_wm_base_destroy(demo->xdg_wm_base); + if (demo->xdg_decoration_mgr) { + zxdg_toplevel_decoration_v1_destroy(demo->toplevel_decoration); + zxdg_decoration_manager_v1_destroy(demo->xdg_decoration_mgr); + } ++#endif ++ wl_surface_destroy(demo->window); + wl_compositor_destroy(demo->compositor); + wl_registry_destroy(demo->registry); + wl_display_disconnect(demo->display); +@@ -2812,11 +2814,13 @@ static void handle_toplevel_close(void *data, struct xdg_toplevel *xdg_toplevel + static const struct xdg_toplevel_listener xdg_toplevel_listener = {handle_toplevel_configure, handle_toplevel_close}; + + static void demo_create_window(struct demo *demo) { ++#if defined(XDG_WM_BASE_PROTO) + if (!demo->xdg_wm_base) { + printf("Compositor did not provide the standard protocol xdg-wm-base\n"); + fflush(stdout); + exit(1); + } ++#endif + + demo->window = wl_compositor_create_surface(demo->compositor); + if (!demo->window) { +@@ -2825,6 +2829,7 @@ static void demo_create_window(struct demo *demo) { + exit(1); + } + ++#if defined(XDG_WM_BASE_PROTO) + demo->xdg_surface = xdg_wm_base_get_xdg_surface(demo->xdg_wm_base, demo->window); + if (!demo->xdg_surface) { + printf("Can not get xdg_surface from wayland_surface!\n"); +@@ -2846,6 +2851,7 @@ static void demo_create_window(struct demo *demo) { + zxdg_decoration_manager_v1_get_toplevel_decoration(demo->xdg_decoration_mgr, demo->xdg_toplevel); + zxdg_toplevel_decoration_v1_set_mode(demo->toplevel_decoration, ZXDG_TOPLEVEL_DECORATION_V1_MODE_SERVER_SIDE); + } ++#endif + + wl_surface_commit(demo->window); + } +diff --git a/cube/cube.cpp b/cube/cube.cpp +index 7c836524..119b4ed2 100644 +--- a/cube/cube.cpp ++++ b/cube/cube.cpp +@@ -686,14 +686,16 @@ void Demo::cleanup() { + wl_keyboard_destroy(keyboard); + wl_pointer_destroy(pointer); + wl_seat_destroy(seat); ++#if defined(XDG_WM_BASE_PROTO) + xdg_toplevel_destroy(window_toplevel); + xdg_surface_destroy(window_surface); +- wl_surface_destroy(window); + xdg_wm_base_destroy(wm_base); + if (xdg_decoration_mgr) { + zxdg_toplevel_decoration_v1_destroy(toplevel_decoration); + zxdg_decoration_manager_v1_destroy(xdg_decoration_mgr); + } ++#endif ++ wl_surface_destroy(window); + wl_compositor_destroy(compositor); + wl_registry_destroy(registry); + wl_display_disconnect(display); +@@ -2867,11 +2869,13 @@ static void handle_toplevel_close(void *data, xdg_toplevel *xdg_toplevel) { + static const xdg_toplevel_listener toplevel_listener = {handle_toplevel_configure, handle_toplevel_close}; + + void Demo::create_window() { ++#if defined(XDG_WM_BASE_PROTO) + if (!wm_base) { + printf("Compositor did not provide the standard protocol xdg-wm-base\n"); + fflush(stdout); + exit(1); + } ++#endif + + window = wl_compositor_create_surface(compositor); + if (!window) { +@@ -2880,6 +2884,7 @@ void Demo::create_window() { + exit(1); + } + ++#if defined(XDG_WM_BASE_PROTO) + window_surface = xdg_wm_base_get_xdg_surface(wm_base, window); + if (!window_surface) { + printf("Can not get xdg_surface from wayland_surface!\n"); +@@ -2900,6 +2905,7 @@ void Demo::create_window() { + toplevel_decoration = zxdg_decoration_manager_v1_get_toplevel_decoration(xdg_decoration_mgr, window_toplevel); + zxdg_toplevel_decoration_v1_set_mode(toplevel_decoration, ZXDG_TOPLEVEL_DECORATION_V1_MODE_SERVER_SIDE); + } ++#endif + + wl_surface_commit(window); + } +-- +2.34.1 + diff --git a/recipes-graphics/vulkan/vulkan-tools_1.3.204.1.bbappend b/recipes-graphics/vulkan/vulkan-tools_1.3.204.1.bbappend new file mode 100644 index 00000000..67ab6d74 --- /dev/null +++ b/recipes-graphics/vulkan/vulkan-tools_1.3.204.1.bbappend @@ -0,0 +1,23 @@ +FILESEXTRAPATHS:prepend := "${THISDIR}/vulkan-tools:" + +inherit pkgconfig + +DEPENDS:append = " glslang-native" +RDEPENDS:${PN} += "vulkan-loader" + +SRC_URI:append = " file://0001-vulkan-tools-cube-Yocto-cross-build-and-optional-xdg.patch" + +EXTRA_OECMAKE:append = " -DBUILD_CUBE=ON" +EXTRA_OECMAKE:append = " -DCUBE_WSI_SELECTION=WAYLAND" + +PACKAGECONFIG[wayland] = "-DBUILD_WSI_WAYLAND_SUPPORT=ON, -DBUILD_WSI_WAYLAND_SUPPORT=OFF, wayland wayland-protocols wayland-native" + +FILES:${PN} += " \ + ${bindir}/vulkaninfo \ + ${bindir}/vkcube \ +" + +do_install:append() { + rm -f ${D}${bindir}/vkcubepp || true + rm -f ${D}${bindir}/vkcube-wayland || true +} diff --git a/recipes-graphics/vulkan/vulkan-tools_1.3.247.bb b/recipes-graphics/vulkan/vulkan-tools_1.3.247.bb new file mode 100644 index 00000000..d4d8132d --- /dev/null +++ b/recipes-graphics/vulkan/vulkan-tools_1.3.247.bb @@ -0,0 +1,6 @@ +require vulkan-tools.inc + +SRCREV = "8bb9edd13f5027b6676f5229cb4a1822050b1f36" +PV = "1.3.247" + +SRC_URI += "file://0001-Disable-xdg-wm-base-related-code.patch" diff --git a/recipes-graphics/vulkan/vulkan-tools_1.3.260.bb b/recipes-graphics/vulkan/vulkan-tools_1.3.260.bb new file mode 100644 index 00000000..7095339d --- /dev/null +++ b/recipes-graphics/vulkan/vulkan-tools_1.3.260.bb @@ -0,0 +1,6 @@ +require vulkan-tools.inc + +SRCREV = "adf8532bc503066a9c4cf8ea30cc0f8217044f0f" +PV = "1.3.260" + +SRC_URI += "file://0001-Disable-xdg-wm-base-related-code.patch" diff --git a/recipes-graphics/vulkan/vulkan-validationlayers.inc b/recipes-graphics/vulkan/vulkan-validationlayers.inc new file mode 100644 index 00000000..a6a14d39 --- /dev/null +++ b/recipes-graphics/vulkan/vulkan-validationlayers.inc @@ -0,0 +1,44 @@ +SUMMARY = "Vulkan ValidationLayers" +DESCRIPTION = "This project provides Vulkan validation layers that \ +can be enabled to assist development by enabling developers to verify \ +their application's correct use of the Vulkan API." +HOMEPAGE = "https://www.khronos.org/vulkan/" +BUGTRACKER = "https://github.com/KhronosGroup/Vulkan-ValidationLayers" +SECTION = "libs" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=8df9e8826734226d08cb412babfa599c" + +SRC_URI = "git://github.com/KhronosGroup/Vulkan-ValidationLayers.git;nobranch=1;protocol=https" + +S = "${WORKDIR}/git" + +REQUIRED_DISTRO_FEATURES = "vulkan" + +inherit cmake features_check pkgconfig +ANY_OF_DISTRO_FEATURES = "x11 wayland" + +DEPENDS = "vulkan-headers glslang spirv-tools spirv-headers pkgconfig-native" + +EXTRA_OECMAKE = " \ + -DPKG_CONFIG_EXECUTABLE=${STAGING_BINDIR_NATIVE}/pkg-config \ + -DVULKAN_HEADERS_INSTALL_DIR=${STAGING_DIR_HOST}/usr \ + -DGLSLANG_INSTALL_DIR=${STAGING_DIR_HOST}/usr \ + -DSPIRV_HEADERS_INSTALL_DIR=${STAGING_DIR_HOST}/usr \ + -DSPIRV_TOOLS_INSTALL_DIR=${STAGING_DIR_HOST}/usr \ + -DUSE_ROBIN_HOOD_HASHING=OFF \ +" + +# must choose x11 or wayland or both +PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'wayland x11', d)}" + +PACKAGECONFIG[x11] = "-DBUILD_WSI_XLIB_SUPPORT=ON -DBUILD_WSI_XCB_SUPPORT=ON -DDEMOS_WSI_SELECTION=XCB, -DBUILD_WSI_XLIB_SUPPORT=OFF -DBUILD_WSI_XCB_SUPPORT=OFF -DDEMOS_WSI_SELECTION=WAYLAND, libxcb libx11 libxrandr" +PACKAGECONFIG[wayland] = "-DBUILD_WSI_WAYLAND_SUPPORT=ON, -DBUILD_WSI_WAYLAND_SUPPORT=OFF, wayland" + +# The output library is unversioned +SOLIBS = ".so" +FILES_SOLIBSDEV = "" +FILES:${PN} += "${libdir}/libVkLayer_*.so ${datadir}/vulkan" + +UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P\d+(\.\d+)+)" + diff --git a/recipes-graphics/vulkan/vulkan-validationlayers_1.3.204.1.bb b/recipes-graphics/vulkan/vulkan-validationlayers_1.3.204.1.bb new file mode 100644 index 00000000..3c54f709 --- /dev/null +++ b/recipes-graphics/vulkan/vulkan-validationlayers_1.3.204.1.bb @@ -0,0 +1,14 @@ +require vulkan-validationlayers.inc + +SRCREV = "26dc8574c8ceafc901e1bbd7a0929da7e0a5df20" +PV = "1.3.204.1" + +# Ninja can end up with a dependency on host path /usr/lib/librt.so (or +# /usr/lib64/librt.so), which does not exist in the build environment. Rewrite +# build.ninja to use the target sysroot path so the dependency resolves. +do_configure:append() { + if [ -f ${B}/build.ninja ]; then + sed -i "s|/usr/lib64/librt\.so|${STAGING_DIR_HOST}${libdir}/librt.so|g" ${B}/build.ninja + sed -i "s|/usr/lib/librt\.so|${STAGING_DIR_HOST}${libdir}/librt.so|g" ${B}/build.ninja + fi +} diff --git a/recipes-graphics/vulkan/vulkan-validationlayers_1.3.247.bb b/recipes-graphics/vulkan/vulkan-validationlayers_1.3.247.bb new file mode 100644 index 00000000..205744a2 --- /dev/null +++ b/recipes-graphics/vulkan/vulkan-validationlayers_1.3.247.bb @@ -0,0 +1,4 @@ +require vulkan-validationlayers.inc + +SRCREV = "801211cb3ce6b37a76c7e14661644653e203295a" +PV = "1.3.247" diff --git a/recipes-graphics/vulkan/vulkan-validationlayers_1.3.260.bb b/recipes-graphics/vulkan/vulkan-validationlayers_1.3.260.bb new file mode 100644 index 00000000..f23907a4 --- /dev/null +++ b/recipes-graphics/vulkan/vulkan-validationlayers_1.3.260.bb @@ -0,0 +1,5 @@ +require vulkan-validationlayers.inc +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=cd3c0bc366cd9b6a906e22f0bcb5910f" + +SRCREV = "d366f9f0ca1177eeb907e73d40081802581fc7ae" +PV = "1.3.260"