Skip to content

RDKEVD-4390: Align Vulkan + SPIR-V versioning#317

Open
mtsekm wants to merge 2 commits intodevelopfrom
feature/RDKEVD-4390
Open

RDKEVD-4390: Align Vulkan + SPIR-V versioning#317
mtsekm wants to merge 2 commits intodevelopfrom
feature/RDKEVD-4390

Conversation

@mtsekm
Copy link

@mtsekm mtsekm commented Dec 16, 2025

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

@mtsekm mtsekm requested a review from a team as a code owner December 16, 2025 12:25
@rdkcmf-jenkins
Copy link
Contributor

b'## Blackduck scan failure details

Summary: 0 violations, 0 files pending approval, 13 files pending identification.

  • Protex Server Path: /home/blackduck/github/meta-rdk-oss-reference/317/rdkcentral/meta-rdk-oss-reference

  • Commit: c8ab97f

Report detail: gist'

Copilot AI review requested due to automatic review settings February 5, 2026 12:32
@mtsekm mtsekm force-pushed the feature/RDKEVD-4390 branch from c8ab97f to a9b14d2 Compare February 5, 2026 12:32
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request aligns Vulkan and SPIR-V component versioning across the RDK platform by moving Vulkan recipes out of the vendor layer and introducing full recipes for versions 1.3.247 and 1.3.260. The PR reuses Kirkstone's 1.3.204 recipes via bbappends and ensures the entire graphics stack (headers, loader, tools, validation layers, and SPIR-V components) stays synchronized.

Changes:

  • Added complete Vulkan recipes (headers, loader, tools, validation layers) for versions 1.3.247 and 1.3.260 with shared .inc files
  • Extended existing OE-core 1.3.204 recipes via bbappends with custom patches for Wayland support
  • Added matching SPIR-V recipes (headers and tools) for versions 1.3.247 and 1.3.260 to maintain toolchain compatibility
  • Included comprehensive documentation explaining the integration strategy and versioning approach

Reviewed changes

Copilot reviewed 25 out of 25 changed files in this pull request and generated 13 comments.

Show a summary per file
File Description
vulkan-validationlayers_1.3.260.bb Version-specific recipe for validation layers with custom license checksum
vulkan-validationlayers_1.3.247.bb Version-specific recipe for validation layers
vulkan-validationlayers_1.3.204.bb Version-specific recipe for validation layers
vulkan-validationlayers.inc Shared recipe include with CMake configuration and dependencies
vulkan-tools_1.3.260.bb Version-specific recipe for Vulkan tools with xdg-wm-base patch
vulkan-tools_1.3.247.bb Version-specific recipe for Vulkan tools with xdg-wm-base patch
vulkan-tools_1.3.204.1.bbappend Extends OE-core recipe with cube build support and custom patches
vulkan-tools/0002-cube-xdg-shell.patch Patch for xdg-shell support in cube demo
vulkan-tools/0001-cube-build.patch Patch enabling cube build for cross-compilation
vulkan-tools/0001-Disable-xdg-wm-base-related-code.patch Patch to conditionally disable xdg-wm-base functionality
vulkan-tools.inc Shared recipe include with build configuration and Wayland support
vulkan-loader_1.3.260.bb Version-specific recipe for Vulkan loader
vulkan-loader_1.3.247.bb Version-specific recipe for Vulkan loader
vulkan-loader.inc Shared recipe include for loader with CMake settings
vulkan-headers_1.3.260.bb Version-specific recipe for Vulkan headers
vulkan-headers_1.3.247.bb Version-specific recipe for Vulkan headers
vulkan-headers.inc Shared recipe include for headers installation
README.md Documentation explaining integration strategy and versioning
spirv-tools_1.3.260.bb SPIR-V tools recipe aligned with Vulkan 1.3.260
spirv-tools_1.3.247.bb SPIR-V tools recipe aligned with Vulkan 1.3.247
spirv-tools_1.3.204.1.bbappend Extends OE-core SPIR-V tools recipe with cmake path fixes
spirv-tools.inc Shared recipe include for SPIR-V tools
spirv-headers_1.3.260.bb SPIR-V headers recipe aligned with Vulkan 1.3.260
spirv-headers_1.3.247.bb SPIR-V headers recipe aligned with Vulkan 1.3.247
spirv-headers.inc Shared recipe include for SPIR-V headers

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@@ -0,0 +1,5 @@
require vulkan-validationlayers.inc
LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=cd3c0bc366cd9b6a906e22f0bcb5910f"
Copy link

Copilot AI Feb 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The LIC_FILES_CHKSUM differs from the one defined in the .inc file. The .inc file at line 10 has md5=8df9e8826734226d08cb412babfa599c, while this version-specific file has md5=cd3c0bc366cd9b6a906e22f0bcb5910f. This indicates the LICENSE.txt file content changed between versions, which should be verified as intentional. If the license truly changed, this is correct; otherwise, it may indicate an incorrect checksum.

Copilot uses AI. Check for mistakes.
xdg_wm_base_add_listener(demo.wm_base, &wm_base_listener, nullptr);
- } else if (strcmp(interface, wl_seat_interface.name) == 0) {
+ }
+#endif
Copy link

Copilot AI Feb 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Trailing whitespace detected on this line (after #endif). This should be removed to maintain code cleanliness.

Suggested change
+#endif
+#endif

Copilot uses AI. Check for mistakes.
Copy link

Copilot AI Feb 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The FILES:${PN} variable is set to "/" which means all files from the entire root filesystem will be packaged. This is almost certainly incorrect and overly broad. It should specify the actual paths where validation layer files are installed, such as library directories or specific file patterns. This could lead to packaging unintended files.

Suggested change
FILES:${PN} += "/"
FILES:${PN} += "${libdir}/libVkLayer_*.so ${datadir}/vulkan"

Copilot uses AI. Check for mistakes.
@@ -0,0 +1,5 @@
require spirv-headers.inc

PV = "1.3.247"
Copy link

Copilot AI Feb 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The PV is set to 1.3.247 while the actual SPIR-V headers SDK tag is 1.3.246.1 (as noted in the comment). This creates a version number mismatch that could cause confusion. Consider whether PV should match the actual SPIR-V SDK version to maintain accurate version tracking.

Suggested change
PV = "1.3.247"
PV = "1.3.246.1"

Copilot uses AI. Check for mistakes.
require vulkan-validationlayers.inc

SRCREV = "801211cb3ce6b37a76c7e14661644653e203295a"
PV = "1.3.247"
Copy link

Copilot AI Feb 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This recipe does not define LIC_FILES_CHKSUM, relying on the default from vulkan-validationlayers.inc (md5=8df9e8826734226d08cb412babfa599c). Verify that the LICENSE.txt file for version 1.3.247 matches the checksum in the .inc file. If the license changed between versions (as suggested by 1.3.260 having a different checksum), this version may need its own LIC_FILES_CHKSUM override.

Suggested change
PV = "1.3.247"
PV = "1.3.247"
LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=8df9e8826734226d08cb412babfa599c"

Copilot uses AI. Check for mistakes.
Copy link

Copilot AI Feb 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The PV is set to 1.3.260 while the actual SPIR-V headers SDK tag is 1.3.261.1 (as noted in the comment). This creates a version number mismatch similar to the other SPIR-V recipes. Consider aligning PV with the actual SPIR-V version or ensuring this versioning strategy is well-documented.

Suggested change
# sdk-1.3.261.1 is the closest Khronos drop for Vulkan SDK 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.

Copilot uses AI. Check for mistakes.
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);
Copy link

Copilot AI Feb 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code is commented out rather than removed. If this functionality is intentionally disabled, the commented code should be removed entirely. If it needs to remain for reference, add a comment explaining why. The commented cleanup suggests potential memory management issues if the keyboard is not properly destroyed when capabilities are removed.

Suggested change
+ //wl_keyboard_destroy(demo->keyboard);
+ wl_keyboard_destroy(demo->keyboard);

Copilot uses AI. Check for mistakes.
@@ -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) {
Copy link

Copilot AI Feb 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Duplicate code commenting out wl_keyboard_destroy is present in both cube.c and cube.cpp. This represents the same memory management concern: if this functionality is intentionally disabled, the code should be removed entirely, or documented with an explanation of why the keyboard resource is not destroyed when capabilities are removed.

Copilot uses AI. Check for mistakes.
Copy link

Copilot AI Feb 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The comment states this is "sdk-1.3.246.1 drop ships with Vulkan SDK 1.3.247", but the PV is set to 1.3.247 while the actual SDK tag used is 1.3.246.1. This version mismatch could cause confusion. Consider whether PV should match the actual SPIR-V SDK version (1.3.246.1) rather than the Vulkan SDK version (1.3.247), or add additional documentation explaining this versioning strategy.

Suggested change
# sdk-1.3.246.1 drop ships with Vulkan SDK 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.

Copilot uses AI. Check for mistakes.
Copy link

Copilot AI Feb 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Similar to spirv-tools_1.3.247.bb, this recipe uses PV=1.3.260 while the actual SPIR-V SDK tag is 1.3.261.1. This version mismatch could cause confusion in dependency resolution and package management. Consider aligning the PV with the actual SPIR-V version or documenting this versioning strategy more clearly.

Suggested change
# sdk-1.3.261.1 is the closest published drop for Vulkan SDK 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.

Copilot uses AI. Check for mistakes.
@mtsekm mtsekm force-pushed the feature/RDKEVD-4390 branch from a9b14d2 to e292773 Compare February 10, 2026 12:53
@rdkcmf-jenkins
Copy link
Contributor

b'## Blackduck scan failure details

Summary: 0 violations, 0 files pending approval, 1 file pending identification.

  • Protex Server Path: /home/blackduck/github/meta-rdk-oss-reference/317/rdkcentral/meta-rdk-oss-reference

  • Commit: e292773

Report detail: gist'

@rdkcmf-jenkins
Copy link
Contributor

b'## WARNING: A Blackduck scan failure has been waived

A prior failure has been upvoted

  • Upvote reason: ok

  • Commit: e292773
    '

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please check here and all the patches to ensure that they have a header with the source information.

Copilot AI review requested due to automatic review settings February 10, 2026 17:50
@mtsekm mtsekm force-pushed the feature/RDKEVD-4390 branch from e292773 to d902a96 Compare February 10, 2026 17:50
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 25 out of 25 changed files in this pull request and generated 5 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 28 to 29
Copy link

Copilot AI Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The sed invocation has the file argument before -e, which sed treats as the script (and will likely fail). Please reorder to pass the expression first and the file last (e.g., sed -i -e 's:...:...:g' <file>).

Suggested change
sed -i ${D}${libdir}/cmake/SPIRV-Tools/SPIRV-ToolsTarget.cmake \
-e 's:${STAGING_DIR_HOST}${libdir}/::g'
sed -i -e 's:${STAGING_DIR_HOST}${libdir}/::g' \
${D}${libdir}/cmake/SPIRV-Tools/SPIRV-ToolsTarget.cmake

Copilot uses AI. Check for mistakes.
Comment on lines 2 to 3
Copy link

Copilot AI Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The sed invocation has the file argument before -e, which sed treats as the script (and will likely fail). Please reorder to pass the expression first and the file last (e.g., sed -i -e 's:...:...:g' <file>).

Suggested change
sed -i ${D}${libdir}/cmake/SPIRV-Tools/SPIRV-ToolsTarget.cmake \
-e 's:${STAGING_DIR_HOST}${libdir}/::g'
sed -i -e 's:${STAGING_DIR_HOST}${libdir}/::g' \
${D}${libdir}/cmake/SPIRV-Tools/SPIRV-ToolsTarget.cmake

Copilot uses AI. Check for mistakes.
Comment on lines +24 to +31
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
Copy link

Copilot AI Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When ENABLE_XDG is not defined, demo_create_window() skips creating xdg_surface/xdg_toplevel, but demo_cleanup() still unconditionally calls xdg_toplevel_destroy() and xdg_surface_destroy(). This can crash at runtime (NULL/uninitialized pointers) and undermines the intent of disabling XDG code. Please either guard the corresponding destroy calls and struct members with the same #ifdef, or ensure ENABLE_XDG is always defined when building this Wayland path.

Copilot uses AI. Check for mistakes.
Comment on lines 15 to 33
Copy link

Copilot AI Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This recipe declares ANY_OF_DISTRO_FEATURES = "x11 wayland" but unconditionally depends on Wayland components and hard-codes -DCUBE_WSI_SELECTION=WAYLAND. On distros that enable x11 but not wayland, this will still pull/build against Wayland and can fail. Either make Wayland a required distro feature (and drop the x11-only path) or make the Wayland deps/CMake args conditional via PACKAGECONFIG (and select the cube WSI based on the enabled backend).

Copilot uses AI. Check for mistakes.
Comment on lines 47 to 53
Copy link

Copilot AI Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The README says vulkan-tools/vulkan-validationlayers are gated by a vulkan-devtools distro feature, but the actual recipes use REQUIRED_DISTRO_FEATURES = "vulkan" and do not reference vulkan-devtools. Please update the documentation to match the implemented gating (or adjust the recipes if vulkan-devtools is the intended feature). Also consider using the modern override syntax (DISTRO_FEATURES:append = " ...") in the example.

Copilot uses AI. Check for mistakes.
@mtsekm mtsekm force-pushed the feature/RDKEVD-4390 branch from d902a96 to 25f6098 Compare February 10, 2026 18:23
Copilot AI review requested due to automatic review settings February 10, 2026 20:03
@mtsekm mtsekm force-pushed the feature/RDKEVD-4390 branch from 25f6098 to ecc3f7d Compare February 10, 2026 20:03
@mtsekm mtsekm force-pushed the feature/RDKEVD-4390 branch from ecc3f7d to de01f7a Compare February 10, 2026 20:09
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 24 out of 24 changed files in this pull request and generated 9 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

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
Copy link

Copilot AI Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There’s a trailing tab/whitespace after #ifdef ENABLE_XDG in the patch content. Please remove it to avoid introducing stray whitespace into patched sources and to keep the patch clean.

Suggested change
+#ifdef ENABLE_XDG
+#ifdef ENABLE_XDG

Copilot uses AI. Check for mistakes.
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);
Copy link

Copilot AI Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same issue in the C++ cube: wl_keyboard_destroy(...) is commented out when capabilities change, which leaks the object and can leave resources registered with the compositor. Consider restoring the destroy and ensuring it isn’t destroyed again later.

Suggested change
+ //wl_keyboard_destroy(demo.keyboard);
+ wl_keyboard_destroy(demo.keyboard);

Copilot uses AI. Check for mistakes.
Comment on lines +1 to +4
do_install:append:class-target() {
sed -i -e 's:${STAGING_DIR_HOST}${libdir}/::g' \
${D}${libdir}/cmake/SPIRV-Tools/SPIRV-ToolsTarget.cmake
}
Copy link

Copilot AI Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This sed -i call has the file path before the -e expression; sed will treat that path as the script and likely fail. Reorder the arguments so the -e script is provided before the file name.

Copilot uses AI. Check for mistakes.
Comment on lines +32 to +34
-DCUBE_WSI_SELECTION=WAYLAND \
"

Copy link

Copilot AI Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

EXTRA_OECMAKE forces -DCUBE_WSI_SELECTION=WAYLAND unconditionally, even when PACKAGECONFIG resolves to x11 only. This can lead to inconsistent configuration (and potential build failures) when Wayland support is disabled via PACKAGECONFIG/DISTRO_FEATURES. Consider setting CUBE_WSI_SELECTION based on PACKAGECONFIG (or default it to XCB when only x11 is enabled).

Suggested change
-DCUBE_WSI_SELECTION=WAYLAND \
"
"
EXTRA_OECMAKE:append = " ${@'-DCUBE_WSI_SELECTION=WAYLAND' if 'wayland' in d.getVar('PACKAGECONFIG').split() else '-DCUBE_WSI_SELECTION=XCB'}"

Copilot uses AI. Check for mistakes.
Comment on lines +21 to +23
wayland \
wayland-protocols \
wayland-native \
Copy link

Copilot AI Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DEPENDS unconditionally pulls in Wayland (and wayland-native/protocols), but the recipe advertises ANY_OF_DISTRO_FEATURES = "x11 wayland" and has PACKAGECONFIG knobs for x11/wayland. If this recipe is meant to be buildable in an x11-only distro, move Wayland dependencies into PACKAGECONFIG[wayland] (and only enable them when Wayland is selected).

Suggested change
wayland \
wayland-protocols \
wayland-native \

Copilot uses AI. Check for mistakes.
Comment on lines 1 to 10
From 097578b35dde6718966f144299598856813a038c Mon Sep 17 00:00:00 2001
From: Tarik Sekmen <tarik.sekmen@sky.uk>
Date: Wed, 11 Jun 2025 15:23:24 +0100
Subject: [PATCH] Disable xdg-wm-base related code

---
cube/cube.c | 23 +++++++++++++++++++----
cube/cube.cpp | 24 +++++++++++++++++++-----
2 files changed, 38 insertions(+), 9 deletions(-)

Copy link

Copilot AI Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This patch file is missing the standard metadata headers used elsewhere in this repo’s patches (e.g., Upstream-Status: and typically Signed-off-by:). Please add them near the top of the patch to document upstreaming status and ownership (see e.g. recipes-graphics/cairo/cairo-1.16.0/0001-add-noaa-compositor-for-v1.16.patch:4-6).

Copilot uses AI. Check for mistakes.
Comment on lines 1 to 17
From 247dd2ac91a3d6f32e12258c0dab9c572bf1664f Mon Sep 17 00:00:00 2001
From: Tarik Sekmen <tarik.sekmen@sky.uk>
Date: Tue, 10 Feb 2026 18:13:04 +0000
Subject: [PATCH] vulkan-tools/cube: Yocto cross-build and optional xdg-wm-base

- 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(-)

Copy link

Copilot AI Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This patch file is missing the standard metadata headers used elsewhere in this repo’s patches (e.g., Upstream-Status: and typically Signed-off-by:). Please add them near the top of the patch to document upstreaming status and ownership (see e.g. recipes-graphics/cairo/cairo-1.16.0/0001-add-noaa-compositor-for-v1.16.patch:4-6).

Copilot uses AI. Check for mistakes.
Comment on lines +26 to +30
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
}
Copy link

Copilot AI Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The sed -i invocation places the target file path before -e, which GNU sed will interpret as the script/commands rather than an input file (likely causing do_install to fail). Reorder arguments so options/scripts come before the file path (e.g., sed -i -e ... <file>).

Copilot uses AI. Check for mistakes.
Copy link

Copilot AI Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Grammar: "their applications correct use" is missing the apostrophe. Consider changing to "their application's correct use" (or "their applications' correct use").

Suggested change
their applications correct use of the Vulkan API."
their application's correct use of the Vulkan API."

Copilot uses AI. Check for mistakes.
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 <tarik.sekmen@gmail.com>
@mtsekm mtsekm force-pushed the feature/RDKEVD-4390 branch from de01f7a to ab914a7 Compare February 11, 2026 09:30
Copilot AI review requested due to automatic review settings February 18, 2026 02:28
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 24 out of 24 changed files in this pull request and generated 2 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +20 to +25
-DSPIRV-Headers_SOURCE_DIR=${STAGING_EXECPREFIXDIR} \
-DSPIRV_TOOLS_BUILD_STATIC=OFF \
-DBUILD_SHARED_LIBS=ON \
-DSPIRV_SKIP_TESTS=ON \
"

Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SPIRV-Headers_SOURCE_DIR is set to ${STAGING_EXECPREFIXDIR}, which typically points at the sysroot prefix (e.g. .../sysroot/usr) rather than a SPIRV-Headers source tree. If SPIRV-Tools’ CMake expects this to contain the SPIRV-Headers repository (with its CMakeLists.txt), configure will fail. Consider vendoring SPIRV-Headers into SRC_URI (destsuffix) or switching to a find_package/install-dir based configuration if supported by this SPIRV-Tools revision.

Suggested change
-DSPIRV-Headers_SOURCE_DIR=${STAGING_EXECPREFIXDIR} \
-DSPIRV_TOOLS_BUILD_STATIC=OFF \
-DBUILD_SHARED_LIBS=ON \
-DSPIRV_SKIP_TESTS=ON \
"
-DSPIRV_TOOLS_BUILD_STATIC=OFF \
-DBUILD_SHARED_LIBS=ON \
-DSPIRV_SKIP_TESTS=ON \
"

Copilot uses AI. Check for mistakes.
Comment on lines +89 to +117
@@ -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
Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This patch relies on #if defined(XDG_WM_BASE_PROTO) to gate xdg-wm-base usage, but that macro isn’t defined anywhere in this layer (recipes/patches). Unless it is guaranteed to be provided by generated protocol headers or compiler flags, these blocks will never compile in, leaving the Wayland surface without an xdg role and likely breaking vkcube at runtime. Consider switching to a macro that is actually provided by the xdg-shell headers (or defining the feature via CMake/compile definitions) and guarding the code based on that.

Suggested change
@@ -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
@@ -2391,14 +2391,17 @@ static void demo_cleanup(struct demo *demo) {
wl_keyboard_destroy(demo->keyboard);
wl_pointer_destroy(demo->pointer);
wl_seat_destroy(demo->seat);
- 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);
- }
+ if (demo->xdg_wm_base) {
+ xdg_toplevel_destroy(demo->xdg_toplevel);
+ xdg_surface_destroy(demo->xdg_surface);
+ 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);
+ }
+ }
+ wl_surface_destroy(demo->window);
wl_compositor_destroy(demo->compositor);
wl_registry_destroy(demo->registry);
wl_display_disconnect(demo->display);
@@ -2812,11 +2814,11 @@ 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 (!demo->xdg_wm_base) {
printf("Compositor did not provide the standard protocol xdg-wm-base\n");
fflush(stdout);
exit(1);
}

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

Comments