From 5def090dd337331d351c2b36ee5305c0f3ce7bab Mon Sep 17 00:00:00 2001 From: Gabriel Valcazar Date: Tue, 21 May 2024 13:38:03 +0200 Subject: [PATCH] vulkan: sync recipes with meta-imx Sync with the scarthgap-6.6.23-2.0.0 branch of meta-imx https://onedigi.atlassian.net/browse/DEL-9011 https://onedigi.atlassian.net/browse/DEL-9081 Signed-off-by: Gabriel Valcazar --- .../recipes-graphics/vulkan/assimp_5.2.5.bb | 32 + ...n.cmake-Look-for-vulkan-headers-in-s.patch | 40 ++ ...reconstruct-Add-support-for-xdg-shel.patch | 588 ++++++++++++++++++ ...reconstruct-Generate-xdg-shell-proto.patch | 65 ++ ...xreconstruct-layer-to-implicit-layer.patch | 87 +++ .../vulkan/gfxreconstruct_1.3.275.0.bb | 34 + ...s-Use-depth-format-supported-by-i.MX.patch | 6 +- ...-Prepend-sysroot-for-the-includedir.patch} | 6 +- ....build-Enable-native-wayland-scanner.patch | 37 ++ .../recipes-graphics/vulkan/vkmark_git.bb | 7 +- ...emos-with-questionably-licensed-data.patch | 18 +- ...rameter-in-vulkan-demo-computenbody.patch} | 18 +- .../vulkan/vulkan-demos_git.bb | 48 +- .../vulkan/vulkan-demos_git.bbappend | 5 - ...ange-mali-wsi-layer-activating-order.patch | 52 ++ .../vulkan/vulkan-loader_1.3.275.0.bbappend | 13 + .../0001-Add-support-for-wayland.patch | 87 --- ...case-16bit_arithmetic-is-heavy-for-8.patch | 44 ++ ...upport-Use-local-context-window-size.patch | 66 -- ...nd-support-for-Hello-triangle-sample.patch | 36 -- ..._INCLUDE_NONE-to-avoid-using-default.patch | 25 - .../0005-glfw-fix-glfw3.h-gl-error.patch | 32 - .../vulkan/vulkan-samples/Fix-gcc-13.patch | 14 + .../vulkan/vulkan-samples_%.bbappend | 24 - .../vulkan/vulkan-samples_git.bbappend | 38 ++ ...hange-the-installation-path-of-JSON-.patch | 36 -- .../vulkan-validationlayers/icd_VSI.json | 7 - .../vulkan-validationlayers_1.2.170.0.bb | 42 -- ...vulkan-validationlayers_1.2.170.0.bbappend | 13 - 29 files changed, 1089 insertions(+), 431 deletions(-) create mode 100644 meta-digi-dey/recipes-graphics/vulkan/assimp_5.2.5.bb create mode 100644 meta-digi-dey/recipes-graphics/vulkan/gfxreconstruct/0001-FindVulkanVersion.cmake-Look-for-vulkan-headers-in-s.patch create mode 100644 meta-digi-dey/recipes-graphics/vulkan/gfxreconstruct/0002-MGS-7104-ccc-gfxreconstruct-Add-support-for-xdg-shel.patch create mode 100644 meta-digi-dey/recipes-graphics/vulkan/gfxreconstruct/0003-MGS-7104-ccc-gfxreconstruct-Generate-xdg-shell-proto.patch create mode 100644 meta-digi-dey/recipes-graphics/vulkan/gfxreconstruct/0004-Change-gfxreconstruct-layer-to-implicit-layer.patch create mode 100644 meta-digi-dey/recipes-graphics/vulkan/gfxreconstruct_1.3.275.0.bb rename meta-digi-dey/recipes-graphics/vulkan/vkmark/{0001-src-meson.build-Prepend-sysroot-for-the-includedir.patch => 0002-src-meson.build-Prepend-sysroot-for-the-includedir.patch} (92%) create mode 100644 meta-digi-dey/recipes-graphics/vulkan/vkmark/0003-meson.build-Enable-native-wayland-scanner.patch rename meta-digi-dey/recipes-graphics/vulkan/vulkan-demos/{0001-Modify-parameter-in-vulkan-demo-computenbody.patch => 0002-Modify-parameter-in-vulkan-demo-computenbody.patch} (67%) delete mode 100644 meta-digi-dey/recipes-graphics/vulkan/vulkan-demos_git.bbappend create mode 100644 meta-digi-dey/recipes-graphics/vulkan/vulkan-loader/0001-LF-11869-change-mali-wsi-layer-activating-order.patch create mode 100644 meta-digi-dey/recipes-graphics/vulkan/vulkan-loader_1.3.275.0.bbappend delete mode 100644 meta-digi-dey/recipes-graphics/vulkan/vulkan-samples/0001-Add-support-for-wayland.patch create mode 100644 meta-digi-dey/recipes-graphics/vulkan/vulkan-samples/0001-The-workload-of-case-16bit_arithmetic-is-heavy-for-8.patch delete mode 100644 meta-digi-dey/recipes-graphics/vulkan/vulkan-samples/0002-Wayland-support-Use-local-context-window-size.patch delete mode 100644 meta-digi-dey/recipes-graphics/vulkan/vulkan-samples/0003-wayland-support-for-Hello-triangle-sample.patch delete mode 100644 meta-digi-dey/recipes-graphics/vulkan/vulkan-samples/0004-glfw-define-GLFW_INCLUDE_NONE-to-avoid-using-default.patch delete mode 100644 meta-digi-dey/recipes-graphics/vulkan/vulkan-samples/0005-glfw-fix-glfw3.h-gl-error.patch create mode 100644 meta-digi-dey/recipes-graphics/vulkan/vulkan-samples/Fix-gcc-13.patch delete mode 100644 meta-digi-dey/recipes-graphics/vulkan/vulkan-samples_%.bbappend create mode 100644 meta-digi-dey/recipes-graphics/vulkan/vulkan-samples_git.bbappend delete mode 100644 meta-digi-dey/recipes-graphics/vulkan/vulkan-validationlayers/0001-CMakeLists.txt-Change-the-installation-path-of-JSON-.patch delete mode 100644 meta-digi-dey/recipes-graphics/vulkan/vulkan-validationlayers/icd_VSI.json delete mode 100644 meta-digi-dey/recipes-graphics/vulkan/vulkan-validationlayers_1.2.170.0.bb delete mode 100644 meta-digi-dey/recipes-graphics/vulkan/vulkan-validationlayers_1.2.170.0.bbappend diff --git a/meta-digi-dey/recipes-graphics/vulkan/assimp_5.2.5.bb b/meta-digi-dey/recipes-graphics/vulkan/assimp_5.2.5.bb new file mode 100644 index 000000000..d923ca628 --- /dev/null +++ b/meta-digi-dey/recipes-graphics/vulkan/assimp_5.2.5.bb @@ -0,0 +1,32 @@ +DESCRIPTION = "Open Asset Import Library is a portable Open Source library to import \ + various well-known 3D model formats in a uniform manner." +HOMEPAGE = "http://www.assimp.org/" +SECTION = "devel" + +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE;md5=d9d5275cab4fb13ae624d42ce64865de" + +DEPENDS = "zlib" + +SRC_URI = "git://github.com/assimp/assimp.git;protocol=https;branch=master" +UPSTREAM_CHECK_GITTAGREGEX = "v(?P(\d+(\.\d+)+))" + +SRCREV = "9519a62dd20799c5493c638d1ef5a6f484e5faf1" + +S = "${WORKDIR}/git" + +inherit cmake + +do_unpack:append() { + bb.build.exec_func('remove_non_compliant_source', d) +} + +remove_non_compliant_source() { + # Remove non-compliant files manually. A patch file cannot be used + # since many of the files are binary. + rm -rf ${S}/test/models-nonbsd ${S}/scripts/StepImporter/schema_ifc2x3.exp +} + +EXTRA_OECMAKE = "-DASSIMP_BUILD_ASSIMP_TOOLS=OFF -DASSIMP_BUILD_TESTS=OFF -DASSIMP_LIB_INSTALL_DIR=${baselib}" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta-digi-dey/recipes-graphics/vulkan/gfxreconstruct/0001-FindVulkanVersion.cmake-Look-for-vulkan-headers-in-s.patch b/meta-digi-dey/recipes-graphics/vulkan/gfxreconstruct/0001-FindVulkanVersion.cmake-Look-for-vulkan-headers-in-s.patch new file mode 100644 index 000000000..45f6bc13d --- /dev/null +++ b/meta-digi-dey/recipes-graphics/vulkan/gfxreconstruct/0001-FindVulkanVersion.cmake-Look-for-vulkan-headers-in-s.patch @@ -0,0 +1,40 @@ +From c7f80bbad43eaf902188f8832f23e03a1e88d49b Mon Sep 17 00:00:00 2001 +From: Neena Busireddy +Date: Wed, 6 Apr 2022 12:53:34 -0700 +Subject: [PATCH] FindVulkanVersion.cmake: Look for vulkan-headers in sysroot + +Upstream-Status: Pending +Signed-off-by: Neena Busireddy +--- + cmake/FindVulkanVersion.cmake | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/cmake/FindVulkanVersion.cmake b/cmake/FindVulkanVersion.cmake +index 38ff4557..8346064a 100644 +--- a/cmake/FindVulkanVersion.cmake ++++ b/cmake/FindVulkanVersion.cmake +@@ -9,8 +9,8 @@ set(VULKAN_VERSION_PATCH "") + find_file (VULKAN_HEADER + vulkan_core.h + HINTS +- external/Vulkan-Headers/include/vulkan +- ../external/Vulkan-Headers/include/vulkan) ++ ${CMAKE_SYSROOT}/usr/include/vulkan ++ ..${CMAKE_SYSROOT}/usr/include/vulkan) + + MESSAGE(STATUS "Vulkan Header = ${VULKAN_HEADER}") + +@@ -20,8 +20,8 @@ else() + find_file(VULKAN_HEADER + vulkan.h + HINTS +- external/Vulkan-Headers/include/vulkan +- ../external/Vulkan-Headers/include/vulkan) ++ ${CMAKE_SYSROOT}/usr/include/vulkan ++ ..${CMAKE_SYSROOT}/usr/include/vulkan) + set(VulkanHeaders_main_header ${VULKAN_HEADER}) + endif() + +-- +2.17.1 + diff --git a/meta-digi-dey/recipes-graphics/vulkan/gfxreconstruct/0002-MGS-7104-ccc-gfxreconstruct-Add-support-for-xdg-shel.patch b/meta-digi-dey/recipes-graphics/vulkan/gfxreconstruct/0002-MGS-7104-ccc-gfxreconstruct-Add-support-for-xdg-shel.patch new file mode 100644 index 000000000..0bc3df689 --- /dev/null +++ b/meta-digi-dey/recipes-graphics/vulkan/gfxreconstruct/0002-MGS-7104-ccc-gfxreconstruct-Add-support-for-xdg-shel.patch @@ -0,0 +1,588 @@ +From ba39d3ac768c81a55539d56e705dc3fab4acb3dd Mon Sep 17 00:00:00 2001 +From: Kratika Jain +Date: Tue, 6 Jun 2023 12:33:20 +0530 +Subject: [PATCH 1/2] MGS-7104 [#ccc] gfxreconstruct: Add support for xdg-shell + +Work is derived from https://github.com/LunarG/gfxreconstruct/pull/698 + +Upstream-Status: Inappropriate [not author] +Signed-off-by: Kratika Jain +--- + framework/application/wayland_context.cpp | 21 +++-- + framework/application/wayland_context.h | 7 +- + framework/application/wayland_window.cpp | 96 ++++++++++++----------- + framework/application/wayland_window.h | 20 ++--- + framework/util/wayland_loader.cpp | 12 ++- + framework/util/wayland_loader.h | 87 ++++++++++++-------- + 6 files changed, 144 insertions(+), 99 deletions(-) + +diff --git a/framework/application/wayland_context.cpp b/framework/application/wayland_context.cpp +index ac4ebb76..1bfa87d1 100644 +--- a/framework/application/wayland_context.cpp ++++ b/framework/application/wayland_context.cpp +@@ -37,6 +37,7 @@ struct wl_keyboard_listener WaylandContext::keyboard_listener_; + struct wl_seat_listener WaylandContext::seat_listener_; + struct wl_registry_listener WaylandContext::registry_listener_; + struct wl_output_listener WaylandContext::output_listener_; ++struct xdg_wm_base_listener WaylandContext::shell_listener_; + + WaylandContext::WaylandContext(Application* application) : WsiContext(application) + { +@@ -47,6 +48,7 @@ WaylandContext::WaylandContext(Application* application) : WsiContext(applicatio + registry_listener_.global_remove = HandleRegistryGlobalRemove; + + seat_listener_.capabilities = HandleSeatCapabilities; ++ shell_listener_.ping = HandleBaseCapabilities; + + keyboard_listener_.keymap = HandleKeyboardKeymap; + keyboard_listener_.enter = HandleKeyboardEnter; +@@ -99,7 +101,7 @@ WaylandContext::WaylandContext(Application* application) : WsiContext(applicatio + GFXRECON_LOG_ERROR("Failed to bind Wayland compositor"); + success = false; + } +- else if (shell_ == nullptr) ++ else if (wm_base_ == nullptr) + { + GFXRECON_LOG_ERROR("Failed to bind Wayland shell"); + success = false; +@@ -130,9 +132,9 @@ WaylandContext::~WaylandContext() + wl.seat_destroy(seat_); + } + +- if (shell_) ++ if (wm_base_) + { +- wl.shell_destroy(shell_); ++ wl.shell_destroy(wm_base_); + } + + if (compositor_) +@@ -205,9 +207,10 @@ void WaylandContext::HandleRegistryGlobal( + wayland_context->compositor_ = reinterpret_cast( + wl.registry_bind(registry, id, wl.compositor_interface, WL_SURFACE_SET_BUFFER_SCALE_SINCE_VERSION)); + } +- else if (util::platform::StringCompare(interface, "wl_shell") == 0) ++ else if (util::platform::StringCompare(interface, "xdg_wm_base") == 0) + { +- wayland_context->shell_ = reinterpret_cast(wl.registry_bind(registry, id, wl.shell_interface, 1)); ++ wayland_context->wm_base_ = reinterpret_cast(wl.registry_bind(registry, id, wl.shell_base_interface, 1)); ++ wl.xdg_wm_base_add_listener(wayland_context->wm_base_, &shell_listener_, wayland_context); + } + else if (util::platform::StringCompare(interface, "wl_seat") == 0) + { +@@ -254,6 +257,12 @@ void WaylandContext::HandleSeatCapabilities(void* data, wl_seat* seat, uint32_t + } + } + ++void WaylandContext::HandleBaseCapabilities(void* data, xdg_wm_base* xdg_wm_base, uint32_t serial) ++{ ++ auto window = reinterpret_cast(data); ++ window->HandlePing(data, xdg_wm_base, serial); ++} ++ + void WaylandContext::HandleKeyboardKeymap( + void* data, struct wl_keyboard* keyboard, uint32_t format, int fd, uint32_t size) + {} +@@ -356,7 +365,7 @@ void WaylandContext::HandlePointerButton( + WaylandWindow* window = entry->second; + if ((button == BTN_LEFT) && (state == WL_POINTER_BUTTON_STATE_PRESSED)) + { +- wl.shell_surface_move(window->GetShellSurface(), wayland_context->seat_, serial); ++ wl.xdg_toplevel_move(window->GetShellSurface(), wayland_context->seat_, serial); + } + } + } +diff --git a/framework/application/wayland_context.h b/framework/application/wayland_context.h +index 9fefd3b1..faae4ecc 100644 +--- a/framework/application/wayland_context.h ++++ b/framework/application/wayland_context.h +@@ -57,7 +57,7 @@ class WaylandContext : public WsiContext + + struct wl_display* GetDisplay() const { return display_; } + +- struct wl_shell* GetShell() const { return shell_; } ++ struct xdg_wm_base* Getbase() const { return wm_base_; } + + struct wl_compositor* GetCompositor() const { return compositor_; } + +@@ -77,6 +77,8 @@ class WaylandContext : public WsiContext + + static void HandleSeatCapabilities(void* data, wl_seat* seat, uint32_t caps); + ++ static void HandleBaseCapabilities(void* data, xdg_wm_base* xdg_wm_base, uint32_t serial); ++ + static void HandleKeyboardKeymap(void* data, struct wl_keyboard* keyboard, uint32_t format, int fd, uint32_t size); + + static void HandleKeyboardEnter( +@@ -137,8 +139,9 @@ class WaylandContext : public WsiContext + static struct wl_seat_listener seat_listener_; + static struct wl_registry_listener registry_listener_; + static struct wl_output_listener output_listener_; ++ static struct xdg_wm_base_listener shell_listener_; + struct wl_display* display_{}; +- struct wl_shell* shell_{}; ++ struct xdg_wm_base* wm_base_{}; + struct wl_compositor* compositor_{}; + struct wl_registry* registry_{}; + struct wl_seat* seat_{}; +diff --git a/framework/application/wayland_window.cpp b/framework/application/wayland_window.cpp +index 55d7d7d2..5b313d09 100644 +--- a/framework/application/wayland_window.cpp ++++ b/framework/application/wayland_window.cpp +@@ -31,22 +31,16 @@ + GFXRECON_BEGIN_NAMESPACE(gfxrecon) + GFXRECON_BEGIN_NAMESPACE(application) + +-struct wl_surface_listener WaylandWindow::surface_listener_; +-struct wl_shell_surface_listener WaylandWindow::shell_surface_listener_; ++struct xdg_surface_listener WaylandWindow::surface_listener_; ++bool m_configured = false; + + WaylandWindow::WaylandWindow(WaylandContext* wayland_context) : +- wayland_context_(wayland_context), surface_(nullptr), shell_surface_(nullptr), width_(0), height_(0), scale_(1), ++ wayland_context_(wayland_context), surface_(nullptr), xdg_toplevel_(nullptr), width_(0), height_(0), scale_(1), + output_(nullptr) + { + assert(wayland_context_ != nullptr); + +- // Populate callback structs +- surface_listener_.enter = HandleSurfaceEnter; +- surface_listener_.leave = HandleSurfaceLeave; +- +- shell_surface_listener_.ping = HandlePing; +- shell_surface_listener_.configure = HandleConfigure; +- shell_surface_listener_.popup_done = HandlePopupDone; ++ surface_listener_.configure = HandleConfigure; + } + + WaylandWindow::~WaylandWindow() +@@ -54,9 +48,13 @@ WaylandWindow::~WaylandWindow() + auto& wl = wayland_context_->GetWaylandFunctionTable(); + if (surface_) + { +- if (shell_surface_) ++ if (xdg_toplevel_) ++ { ++ wl.xdg_toplevel_destroy(xdg_toplevel_); ++ } ++ if(xdg_surface_) + { +- wl.shell_surface_destroy(shell_surface_); ++ wl.xdg_surface_destroy(xdg_surface_); + } + + wl.surface_destroy(surface_); +@@ -68,32 +66,41 @@ bool WaylandWindow::Create( + { + GFXRECON_UNREFERENCED_PARAMETER(x); + GFXRECON_UNREFERENCED_PARAMETER(y); +- ++ + auto& wl = wayland_context_->GetWaylandFunctionTable(); ++ + surface_ = wl.compositor_create_surface(wayland_context_->GetCompositor()); +- + if (surface_ == nullptr) + { + GFXRECON_LOG_ERROR("Failed to create Wayland surface"); + return false; + } ++ ++ m_configured = false; ++ if (wayland_context_->Getbase()) ++ { ++ xdg_surface_ = wl.xdg_wm_base_get_xdg_surface(wayland_context_->Getbase(), surface_); ++ if (!xdg_surface_) ++ { ++ GFXRECON_LOG_ERROR("Failed to create xdg shell surface"); ++ return false; ++ } ++ wayland_context_->RegisterWaylandWindow(this); + +- shell_surface_ = wl.shell_get_shell_surface(wayland_context_->GetShell(), surface_); +- if (!shell_surface_) ++ wl.xdg_surface_add_listener(xdg_surface_, &WaylandWindow::surface_listener_, this); ++ xdg_toplevel_= wl.xdg_surface_get_toplevel(xdg_surface_); ++ } ++ if(xdg_toplevel_) + { +- GFXRECON_LOG_ERROR("Failed to create Wayland shell surface"); +- return false; ++ wl.xdg_toplevel_set_title(xdg_toplevel_, title.c_str()); ++ wl.wl_surface_commit(surface_); + } + +- wayland_context_->RegisterWaylandWindow(this); +- +- wl.surface_add_listener(surface_, &WaylandWindow::surface_listener_, this); +- wl.shell_surface_add_listener(shell_surface_, &WaylandWindow::shell_surface_listener_, this); +- wl.shell_surface_set_title(shell_surface_, title.c_str()); +- + width_ = width; + height_ = height; + UpdateWindowSize(); ++ while(!m_configured) ++ wl.display_dispatch(wayland_context_->GetDisplay()); + + return true; + } +@@ -103,10 +110,15 @@ bool WaylandWindow::Destroy() + if (surface_) + { + auto& wl = wayland_context_->GetWaylandFunctionTable(); +- if (shell_surface_) ++ if (xdg_toplevel_) ++ { ++ wl.xdg_toplevel_destroy(xdg_toplevel_); ++ xdg_toplevel_= nullptr; ++ } ++ if (xdg_surface_) + { +- wl.shell_surface_destroy(shell_surface_); +- shell_surface_ = nullptr; ++ wl.xdg_surface_destroy(xdg_surface_); ++ xdg_surface_ = nullptr; + } + + wl.surface_destroy(surface_); +@@ -121,14 +133,13 @@ bool WaylandWindow::Destroy() + void WaylandWindow::SetTitle(const std::string& title) + { + auto& wl = wayland_context_->GetWaylandFunctionTable(); +- wl.shell_surface_set_title(shell_surface_, title.c_str()); ++ wl.xdg_toplevel_set_title(xdg_toplevel_, title.c_str()); + } + + void WaylandWindow::SetPosition(const int32_t x, const int32_t y) + { + GFXRECON_UNREFERENCED_PARAMETER(x); + GFXRECON_UNREFERENCED_PARAMETER(y); +- // TODO: May be possible with xdg-shell extension. + } + + void WaylandWindow::SetSize(const uint32_t width, const uint32_t height) +@@ -215,19 +226,18 @@ void WaylandWindow::UpdateWindowSize() + + if (output_info.width == width_ && output_info.height == height_) + { +- wl.shell_surface_set_fullscreen(shell_surface_, WL_SHELL_SURFACE_FULLSCREEN_METHOD_DEFAULT, 0, output_); ++ wl.xdg_toplevel_set_fullscreen(xdg_toplevel_, NULL); + } +- else +- { +- wl.shell_surface_set_toplevel(shell_surface_); +- } +- } +- else +- { +- wl.shell_surface_set_toplevel(shell_surface_); + } + } + ++void WaylandWindow::HandleConfigure(void* data, struct xdg_surface* surface, uint32_t serial) ++{ ++ auto& wl = reinterpret_cast(data)->wayland_context_->GetWaylandFunctionTable(); ++ wl.xdg_surface_ack_configure(surface, serial); ++ m_configured = true; ++} ++ + void WaylandWindow::HandleSurfaceEnter(void* data, struct wl_surface* surface, struct wl_output* output) + { + auto window = reinterpret_cast(data); +@@ -238,17 +248,13 @@ void WaylandWindow::HandleSurfaceEnter(void* data, struct wl_surface* surface, s + + void WaylandWindow::HandleSurfaceLeave(void* data, struct wl_surface* surface, struct wl_output* output) {} + +-void WaylandWindow::HandlePing(void* data, wl_shell_surface* shell_surface, uint32_t serial) ++void WaylandWindow::HandlePing(void* data, xdg_wm_base* xdg_wm_base, uint32_t serial) + { + auto& wl = reinterpret_cast(data)->wayland_context_->GetWaylandFunctionTable(); +- wl.shell_surface_pong(shell_surface, serial); ++ wl.xdg_wm_base_pong(xdg_wm_base, serial); + } + +-void WaylandWindow::HandleConfigure( +- void* data, wl_shell_surface* shell_surface, uint32_t edges, int32_t width, int32_t height) +-{} +- +-void WaylandWindow::HandlePopupDone(void* data, wl_shell_surface* shell_surface) {} ++void WaylandWindow::HandlePopupDone(void* data, xdg_toplevel* shell_surface) {} + + WaylandWindowFactory::WaylandWindowFactory(WaylandContext* wayland_context) : wayland_context_(wayland_context) + { +diff --git a/framework/application/wayland_window.h b/framework/application/wayland_window.h +index a4966557..a14096f7 100644 +--- a/framework/application/wayland_window.h ++++ b/framework/application/wayland_window.h +@@ -29,6 +29,7 @@ + #include "util/defines.h" + + #include ++#include "util/xdg-shell-client-protocol.h" + + GFXRECON_BEGIN_NAMESPACE(gfxrecon) + GFXRECON_BEGIN_NAMESPACE(application) +@@ -42,7 +43,9 @@ class WaylandWindow : public decode::Window + + struct wl_surface* GetSurface() const { return surface_; } + +- struct wl_shell_surface* GetShellSurface() const { return shell_surface_; } ++ static void HandlePing(void* data, xdg_wm_base* xdg_wm_base, uint32_t serial); ++ ++ struct xdg_toplevel* GetShellSurface() const { return xdg_toplevel_; } + + virtual bool Create(const std::string& title, + const int32_t x, +@@ -80,21 +83,20 @@ class WaylandWindow : public decode::Window + static void HandleSurfaceEnter(void* data, struct wl_surface* surface, struct wl_output* output); + static void HandleSurfaceLeave(void* data, struct wl_surface* surface, struct wl_output* output); + +- static void HandlePing(void* data, wl_shell_surface* shell_surface, uint32_t serial); +- + static void +- HandleConfigure(void* data, wl_shell_surface* shell_surface, uint32_t edges, int32_t width, int32_t height); ++ HandleConfigure(void* data, struct xdg_surface* shell_surface, uint32_t serial); + +- static void HandlePopupDone(void* data, wl_shell_surface* shell_surface); ++ static void HandlePopupDone(void* data, xdg_toplevel* xdg_toplevel); + + void UpdateWindowSize(); + + private: +- static struct wl_surface_listener surface_listener_; +- static struct wl_shell_surface_listener shell_surface_listener_; ++ static struct xdg_surface_listener surface_listener_; ++ static struct xdg_toplevel_listener xdg_toplevel_listener_; + WaylandContext* wayland_context_; + struct wl_surface* surface_; +- struct wl_shell_surface* shell_surface_; ++ struct xdg_surface* xdg_surface_; ++ struct xdg_toplevel* xdg_toplevel_; + uint32_t width_; + uint32_t height_; + int32_t scale_; +@@ -124,4 +126,4 @@ class WaylandWindowFactory : public decode::WindowFactory + GFXRECON_END_NAMESPACE(util) + GFXRECON_END_NAMESPACE(gfxrecon) + +-#endif // GFXRECON_APPLICATION_WAYLAND_WINDOW_H +\ No newline at end of file ++#endif // GFXRECON_APPLICATION_WAYLAND_WINDOW_H +diff --git a/framework/util/wayland_loader.cpp b/framework/util/wayland_loader.cpp +index 53565d80..086816e1 100644 +--- a/framework/util/wayland_loader.cpp ++++ b/framework/util/wayland_loader.cpp +@@ -72,10 +72,10 @@ bool WaylandLoader::Initialize() + util::platform::GetProcAddress(libwayland_, "wl_display_roundtrip")); + function_table_.compositor_interface = reinterpret_cast( + util::platform::GetProcAddress(libwayland_, "wl_compositor_interface")); +- function_table_.shell_interface = reinterpret_cast( +- util::platform::GetProcAddress(libwayland_, "wl_shell_interface")); + function_table_.seat_interface = reinterpret_cast( + util::platform::GetProcAddress(libwayland_, "wl_seat_interface")); ++ function_table_.shell_base_interface = reinterpret_cast(&xdg_wm_base_interface); ++ + + // Proxy functions + function_table_.proxy_add_listener = reinterpret_cast( +@@ -89,6 +89,10 @@ bool WaylandLoader::Initialize() + function_table_.proxy_marshal_constructor_versioned = + reinterpret_cast( + util::platform::GetProcAddress(libwayland_, "wl_proxy_marshal_constructor_versioned")); ++ function_table_.proxy_marshal_flags = reinterpret_cast( ++ util::platform::GetProcAddress(libwayland_, "wl_proxy_marshal_flags")); ++ function_table_.proxy_marshal_array_flags = reinterpret_cast( ++ util::platform::GetProcAddress(libwayland_, "wl_proxy_marshal_array_flags")); + + // Interfaces + function_table_.registry_interface = reinterpret_cast( +@@ -99,10 +103,10 @@ bool WaylandLoader::Initialize() + util::platform::GetProcAddress(libwayland_, "wl_output_interface")); + function_table_.pointer_interface = reinterpret_cast( + util::platform::GetProcAddress(libwayland_, "wl_pointer_interface")); +- function_table_.shell_surface_interface = reinterpret_cast( +- util::platform::GetProcAddress(libwayland_, "wl_shell_surface_interface")); + function_table_.surface_interface = reinterpret_cast( + util::platform::GetProcAddress(libwayland_, "wl_surface_interface")); ++ function_table_.shell_surface_interface = reinterpret_cast(&xdg_surface_interface); ++ function_table_.toplevel_interface = reinterpret_cast(&xdg_toplevel_interface); + } + else + { +diff --git a/framework/util/wayland_loader.h b/framework/util/wayland_loader.h +index 8c704670..70643246 100644 +--- a/framework/util/wayland_loader.h ++++ b/framework/util/wayland_loader.h +@@ -28,6 +28,7 @@ + #include "util/platform.h" + + #include ++#include "xdg-shell-client-protocol.h" + + GFXRECON_BEGIN_NAMESPACE(gfxrecon) + GFXRECON_BEGIN_NAMESPACE(util) +@@ -46,7 +47,7 @@ class WaylandLoader + decltype(wl_display_flush)* display_flush; + decltype(wl_display_roundtrip)* display_roundtrip; + decltype(wl_compositor_interface)* compositor_interface; +- decltype(wl_shell_interface)* shell_interface; ++ decltype(xdg_wm_base_interface)* shell_base_interface; + decltype(wl_seat_interface)* seat_interface; + + // proxy functions +@@ -55,20 +56,23 @@ class WaylandLoader + decltype(wl_proxy_marshal)* proxy_marshal; + decltype(wl_proxy_marshal_constructor)* proxy_marshal_constructor; + decltype(wl_proxy_marshal_constructor_versioned)* proxy_marshal_constructor_versioned; ++ decltype(wl_proxy_marshal_flags)* proxy_marshal_flags; ++ decltype(wl_proxy_marshal_array_flags)* proxy_marshal_array_flags; ++ + + // interfaces + decltype(wl_registry_interface)* registry_interface; + decltype(wl_keyboard_interface)* keyboard_interface; + decltype(wl_output_interface)* output_interface; + decltype(wl_pointer_interface)* pointer_interface; +- decltype(wl_shell_surface_interface)* shell_surface_interface; ++ decltype(xdg_surface_interface)* shell_surface_interface; ++ decltype(xdg_toplevel_interface)* toplevel_interface; + decltype(wl_surface_interface)* surface_interface; + + // inline functions, adapted from wayland-client-protocol.h + struct wl_surface* compositor_create_surface(struct wl_compositor* wl_compositor) const + { + struct wl_proxy* id; +- + id = this->proxy_marshal_constructor(reinterpret_cast(wl_compositor), + WL_COMPOSITOR_CREATE_SURFACE, + this->surface_interface, +@@ -76,6 +80,10 @@ class WaylandLoader + + return reinterpret_cast(id); + } ++ void wl_surface_commit(struct wl_surface *wl_surface) const ++ { ++ this->proxy_marshal(reinterpret_cast(wl_surface), WL_SURFACE_COMMIT); ++ } + + void compositor_destroy(struct wl_compositor* wl_compositor) const + { +@@ -185,72 +193,85 @@ class WaylandLoader + return reinterpret_cast(id); + } + +- void shell_destroy(struct wl_shell* wl_shell) const ++ void shell_destroy(struct xdg_wm_base* xdg_wm_base) const + { +- this->proxy_destroy(reinterpret_cast(wl_shell)); ++ this->proxy_destroy(reinterpret_cast(xdg_wm_base)); + } + +- struct wl_shell_surface* shell_get_shell_surface(struct wl_shell* wl_shell, struct wl_surface* surface) const ++ struct xdg_surface* xdg_wm_base_get_xdg_surface(struct xdg_wm_base* xdg_wm_base, struct wl_surface* surface) const + { + struct wl_proxy* id; +- +- id = this->proxy_marshal_constructor(reinterpret_cast(wl_shell), +- WL_SHELL_GET_SHELL_SURFACE, ++ id = this->proxy_marshal_constructor(reinterpret_cast(xdg_wm_base), ++ XDG_WM_BASE_GET_XDG_SURFACE, + this->shell_surface_interface, + NULL, + surface); + +- return reinterpret_cast(id); ++ return reinterpret_cast(id); + } + +- int shell_surface_add_listener(struct wl_shell_surface* wl_shell_surface, +- struct wl_shell_surface_listener* listener, +- void* data) const ++ struct xdg_toplevel* xdg_surface_get_toplevel(struct xdg_surface* xdg_surface) const + { +- return this->proxy_add_listener(reinterpret_cast(wl_shell_surface), +- reinterpret_cast(listener), +- data); ++ struct wl_proxy *id; ++ id = this->proxy_marshal_constructor(reinterpret_cast(xdg_surface), ++ XDG_SURFACE_GET_TOPLEVEL, this->toplevel_interface, NULL); ++ ++ return reinterpret_cast(id); ++ } ++ ++ void xdg_toplevel_destroy(struct xdg_toplevel* xdg_toplevel) const ++ { ++ this->proxy_destroy(reinterpret_cast(xdg_toplevel)); + } + +- void shell_surface_destroy(struct wl_shell_surface* wl_shell_surface) const ++ void xdg_surface_destroy(struct xdg_surface *xdg_surface) const + { +- this->proxy_destroy(reinterpret_cast(wl_shell_surface)); ++ this->proxy_destroy(reinterpret_cast(xdg_surface)); + } + +- void shell_surface_move(struct wl_shell_surface* wl_shell_surface, struct wl_seat* seat, uint32_t serial) const ++ void xdg_toplevel_move(struct xdg_toplevel* xdg_toplevel, struct wl_seat* seat, uint32_t serial) const + { + this->proxy_marshal( +- reinterpret_cast(wl_shell_surface), WL_SHELL_SURFACE_MOVE, seat, serial); ++ reinterpret_cast(xdg_toplevel), XDG_TOPLEVEL_MOVE, seat, serial); ++ } ++ int xdg_wm_base_add_listener(struct xdg_wm_base* xdg_wm_base, ++ struct xdg_wm_base_listener *listener, ++ void *data) const ++ { ++ return this->proxy_add_listener(reinterpret_cast(xdg_wm_base), ++ reinterpret_cast(listener), ++ data); ++ } ++ void xdg_surface_ack_configure(struct xdg_surface *xdg_surface, uint32_t serial) const ++ { ++ this->proxy_marshal(reinterpret_cast(xdg_surface), XDG_SURFACE_ACK_CONFIGURE, serial); + } + +- void shell_surface_pong(struct wl_shell_surface* wl_shell_surface, uint32_t serial) const ++ void xdg_wm_base_pong(struct xdg_wm_base* xdg_wm_base, uint32_t serial) const + { +- this->proxy_marshal(reinterpret_cast(wl_shell_surface), WL_SHELL_SURFACE_PONG, serial); ++ this->proxy_marshal(reinterpret_cast(xdg_wm_base), XDG_WM_BASE_PONG, serial); + } + +- void shell_surface_set_fullscreen(struct wl_shell_surface* wl_shell_surface, +- uint32_t method, +- uint32_t framerate, +- struct wl_output* output) const ++ void xdg_toplevel_set_fullscreen(struct xdg_toplevel *xdg_toplevel, struct wl_output *output) const + { +- this->proxy_marshal(reinterpret_cast(wl_shell_surface), WL_SHELL_SURFACE_SET_FULLSCREEN); ++ this->proxy_marshal(reinterpret_cast(xdg_toplevel), XDG_TOPLEVEL_SET_FULLSCREEN, output); + } + +- void shell_surface_set_title(struct wl_shell_surface* wl_shell_surface, const char* title) const ++ void xdg_toplevel_set_title(struct xdg_toplevel* xdg_toplevel, const char* title) const + { + this->proxy_marshal( +- reinterpret_cast(wl_shell_surface), WL_SHELL_SURFACE_SET_TITLE, title); ++ reinterpret_cast(xdg_toplevel), XDG_TOPLEVEL_SET_TITLE, title); + } + +- void shell_surface_set_toplevel(struct wl_shell_surface* wl_shell_surface) const ++ void shell_surface_set_toplevel(struct xdg_toplevel* xdg_toplevel) const + { +- this->proxy_marshal(reinterpret_cast(wl_shell_surface), WL_SHELL_SURFACE_SET_TOPLEVEL); ++ this->proxy_marshal(reinterpret_cast(xdg_toplevel), WL_SHELL_SURFACE_SET_TOPLEVEL); + } + +- int surface_add_listener(struct wl_surface* wl_surface, struct wl_surface_listener* listener, void* data) const ++ int xdg_surface_add_listener(struct xdg_surface* xdg_surface, struct xdg_surface_listener* listener, void* data) const + { + return this->proxy_add_listener( +- reinterpret_cast(wl_surface), reinterpret_cast(listener), data); ++ reinterpret_cast(xdg_surface), reinterpret_cast(listener), data); + } + + void surface_set_buffer_scale(struct wl_surface* wl_surface, int32_t scale) const +-- +2.34.1 + diff --git a/meta-digi-dey/recipes-graphics/vulkan/gfxreconstruct/0003-MGS-7104-ccc-gfxreconstruct-Generate-xdg-shell-proto.patch b/meta-digi-dey/recipes-graphics/vulkan/gfxreconstruct/0003-MGS-7104-ccc-gfxreconstruct-Generate-xdg-shell-proto.patch new file mode 100644 index 000000000..0a7e47fa6 --- /dev/null +++ b/meta-digi-dey/recipes-graphics/vulkan/gfxreconstruct/0003-MGS-7104-ccc-gfxreconstruct-Generate-xdg-shell-proto.patch @@ -0,0 +1,65 @@ +From 7ab6040ea9b7a0c93d3df918d7164b25940c925a Mon Sep 17 00:00:00 2001 +From: Kratika Jain +Date: Tue, 6 Jun 2023 13:19:49 +0530 +Subject: [PATCH 2/2] MGS-7104 [#ccc] gfxreconstruct: Generate xdg-shell + protocol files + +Work is derived from https://github.com/LunarG/gfxreconstruct/pull/698 + +Upstream-Status: Inappropriate [not author] +Signed-off-by: Kratika Jain +--- + framework/util/CMakeLists.txt | 31 ++++++++++++++++++++++++++++++- + 1 file changed, 30 insertions(+), 1 deletion(-) + +Index: git/framework/util/CMakeLists.txt +=================================================================== +--- git.orig/framework/util/CMakeLists.txt ++++ git/framework/util/CMakeLists.txt +@@ -27,9 +27,36 @@ + ############################################################################### + + add_library(gfxrecon_util STATIC "") ++add_library(gfxrecon_xdg STATIC "") ++project(gfxrecon_xdg C) ++ ++find_library(WAYLAND_CLIENT_LIBRARY NAMES wayland-client libwayland-client) ++find_library(WAYLAND_EGL_LIBRARY NAMES wayland-egl libwayland-egl ) ++find_library(WAYLAND_CURSOR_LIBRARY NAMES wayland-cursor libwayland-cursor) ++ ++add_custom_command( ++ OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/xdg-shell-client-protocol.h ++ COMMAND wayland-scanner client-header ++ $ENV{SDKTARGETSYSROOT}/usr/share/wayland-protocols/stable/xdg-shell/xdg-shell.xml ++ ${CMAKE_CURRENT_SOURCE_DIR}/xdg-shell-client-protocol.h ++ COMMENT "Generating sources...") ++ ++add_custom_command( ++ OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/xdg-shell-protocol.c ++ COMMAND wayland-scanner private-code ++ $ENV{SDKTARGETSYSROOT}/usr/share/wayland-protocols/stable/xdg-shell/xdg-shell.xml ++ ${CMAKE_CURRENT_SOURCE_DIR}/xdg-shell-protocol.c ++ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/xdg-shell-client-protocol.h ++ COMMENT "Generating sources...") ++ ++set_source_files_properties(${CMAKE_CURRENT_LIST_DIR}/xdg-shell-protocol.c PROPERTIES GENERATED 1) ++ ++target_sources(gfxrecon_xdg PRIVATE ${CMAKE_CURRENT_LIST_DIR}/xdg-shell-protocol.c) + + target_sources(gfxrecon_util + PRIVATE ++ ${CMAKE_CURRENT_LIST_DIR}/xdg-shell-client-protocol.h ++ ${CMAKE_CURRENT_LIST_DIR}/xdg-shell-protocol.c + ${CMAKE_CURRENT_LIST_DIR}/argument_parser.h + ${CMAKE_CURRENT_LIST_DIR}/argument_parser.cpp + ${CMAKE_CURRENT_LIST_DIR}/compressor.h +@@ -112,6 +139,9 @@ target_include_directories(gfxrecon_util + PUBLIC + ${CMAKE_SOURCE_DIR}/framework + $<$:${CMAKE_SOURCE_DIR}/external/AgilitySDK/inc>) ++ ++target_link_libraries(gfxrecon_xdg ${WAYLAND_CLIENT_LIBRARY} ${WAYLAND_EGL_LIBRARY} ${WAYLAND_CURSOR_LIBRARY}) ++target_link_libraries(gfxrecon_util gfxrecon_xdg) + target_link_libraries(gfxrecon_util platform_specific vulkan_registry nlohmann_json::nlohmann_json ${CMAKE_DL_LIBS}) + target_link_libraries(gfxrecon_util $<$:version.lib>) + diff --git a/meta-digi-dey/recipes-graphics/vulkan/gfxreconstruct/0004-Change-gfxreconstruct-layer-to-implicit-layer.patch b/meta-digi-dey/recipes-graphics/vulkan/gfxreconstruct/0004-Change-gfxreconstruct-layer-to-implicit-layer.patch new file mode 100644 index 000000000..11ede1965 --- /dev/null +++ b/meta-digi-dey/recipes-graphics/vulkan/gfxreconstruct/0004-Change-gfxreconstruct-layer-to-implicit-layer.patch @@ -0,0 +1,87 @@ +From 2f0b7d10e49d0156afe9f20f8847a25fcc32e5d9 Mon Sep 17 00:00:00 2001 +From: Yuan Tian +Date: Mon, 25 Mar 2024 15:40:15 +0800 +Subject: [PATCH] Change gfxreconstruct layer to implicit layer + +Upstream-Status: Inappropriate [i.MX specific] +Signed-off-by: Yuan Tian +--- + layer/CMakeLists.txt | 2 +- + layer/json/VkLayer_gfxreconstruct.json.in | 6 +++++ + .../capture-vulkan/gfxrecon-capture-vulkan.py | 23 +++---------------- + 3 files changed, 10 insertions(+), 21 deletions(-) + +diff --git a/layer/CMakeLists.txt b/layer/CMakeLists.txt +index 856b72f3..29be8159 100644 +--- a/layer/CMakeLists.txt ++++ b/layer/CMakeLists.txt +@@ -91,7 +91,7 @@ endif() + + install(TARGETS VkLayer_gfxreconstruct RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) + if (UNIX) +- install(FILES $/staging-json/VkLayer_gfxreconstruct.json DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/vulkan/explicit_layer.d) ++ install(FILES $/staging-json/VkLayer_gfxreconstruct.json DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}/vulkan/implicit_layer.d) + else() + install(FILES $/VkLayer_gfxreconstruct.json DESTINATION ${CMAKE_INSTALL_BINDIR}) + endif() +diff --git a/layer/json/VkLayer_gfxreconstruct.json.in b/layer/json/VkLayer_gfxreconstruct.json.in +index 914f8e62..e568c8b3 100644 +--- a/layer/json/VkLayer_gfxreconstruct.json.in ++++ b/layer/json/VkLayer_gfxreconstruct.json.in +@@ -473,6 +473,12 @@ + ] + } + ] ++ }, ++ "enable_environment": { ++ "ENABLE_VULKAN_GFXRECONSTRUCT_CAPTURE": "1" ++ }, ++ "disable_environment": { ++ "DISABLE_VULKAN_GFXRECONSTRUCT_CAPTURE": "1" + } + } + } +diff --git a/tools/capture-vulkan/gfxrecon-capture-vulkan.py b/tools/capture-vulkan/gfxrecon-capture-vulkan.py +index 6ad804c4..93937918 100644 +--- a/tools/capture-vulkan/gfxrecon-capture-vulkan.py ++++ b/tools/capture-vulkan/gfxrecon-capture-vulkan.py +@@ -250,24 +250,8 @@ def validate_args(args): + def set_env_vars(args): + '''Set environment variables for capture layer + ''' +- # Set VK_INSTANCE_LAYERS +- # If gfxr layer is not already in VK_INSTANCE_LAYER, append gfxr layer +- # to VK_INSTANCE_LAYERS +- if os.getenv('VK_INSTANCE_LAYERS') is None: +- os.environ['VK_INSTANCE_LAYERS'] = 'VK_LAYER_LUNARG_gfxreconstruct' +- elif (not ('VK_LAYER_LUNARG_gfxreconstruct' in os.getenv('VK_INSTANCE_LAYERS'))): +- os.environ['VK_INSTANCE_LAYERS'] = os.environ['VK_INSTANCE_LAYERS'] + \ +- os.pathsep + 'VK_LAYER_LUNARG_gfxreconstruct' +- if args.capture_layer is not None: +- # Prefix the layer path provided by the user to the layer search path +- path_delimiter = ':' +- if 'windows' == platform.system().lower(): +- path_delimiter = ';' +- vk_layer_path = '' +- if 'VK_LAYER_PATH' in os.environ: +- vk_layer_path = os.environ['VK_LAYER_PATH'] +- os.environ['VK_LAYER_PATH'] = path_delimiter.join([ +- args.capture_layer, vk_layer_path]) ++ # Set ENABLE_VULKAN_GFXRECONSTRUCT_CAPTURE ++ os.environ['ENABLE_VULKAN_GFXRECONSTRUCT_CAPTURE'] = '1' + + # Set GFXRECON_* capture options + # The capture layer will validate these options and generate errors as needed +@@ -311,8 +295,7 @@ def PrintLayerEnv(): + print_env_var('GFXRECON_LOG_LEVEL') + print_env_var('GFXRECON_LOG_OUTPUT_TO_OS_DEBUG_STRING') + print_env_var('GFXRECON_MEMORY_TRACKING_MODE') +- print_env_var('VK_INSTANCE_LAYERS') +- print_env_var('VK_LAYER_PATH') ++ print_env_var('ENABLE_VULKAN_GFXRECONSTRUCT_CAPTURE') + + + if '__main__' == __name__: +-- +2.17.1 + diff --git a/meta-digi-dey/recipes-graphics/vulkan/gfxreconstruct_1.3.275.0.bb b/meta-digi-dey/recipes-graphics/vulkan/gfxreconstruct_1.3.275.0.bb new file mode 100644 index 000000000..85c37f098 --- /dev/null +++ b/meta-digi-dey/recipes-graphics/vulkan/gfxreconstruct_1.3.275.0.bb @@ -0,0 +1,34 @@ +SUMMARY = "Tools for the capture and replay of Vulkan API calls" +SECTION = "graphics" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=d2ddcd9b5c3b713fcf90c3223f6b10bd" +DEPENDS = "vulkan-headers zstd" + +SRC_URI = " \ + git://github.com/LunarG/gfxreconstruct.git;protocol=https;branch=vulkan-sdk-1.3.275 \ + file://0001-FindVulkanVersion.cmake-Look-for-vulkan-headers-in-s.patch \ + file://0002-MGS-7104-ccc-gfxreconstruct-Add-support-for-xdg-shel.patch \ + file://0003-MGS-7104-ccc-gfxreconstruct-Generate-xdg-shell-proto.patch \ + file://0004-Change-gfxreconstruct-layer-to-implicit-layer.patch \ +" +SRCREV = "ad85498e33a53f4c89979e0af8e3fe3b512aa47c" +S = "${WORKDIR}/git" + +inherit cmake features_check + +ANY_OF_DISTRO_FEATURES = "wayland x11" + +PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'wayland x11', d)}" + +PACKAGECONFIG[wayland] = "-DBUILD_WSI_WAYLAND_SUPPORT=ON,-DBUILD_WSI_WAYLAND_SUPPORT=OFF,wayland-native wayland wayland-protocols" +PACKAGECONFIG[x11] = "-DBUILD_WSI_XCB_SUPPORT=ON,-DBUILD_WSI_XCB_SUPPORT=OFF,libxcb libx11 xcb-util-keysyms" + +EXTRA_OECMAKE += "\ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_SYSROOT=${PKG_CONFIG_SYSROOT_DIR} \ +" + +export SDKTARGETSYSROOT = "${STAGING_DIR_HOST}" + +FILES:${PN} += "${datadir}/vulkan" +INSANE_SKIP:${PN}-dev += "dev-elf" diff --git a/meta-digi-dey/recipes-graphics/vulkan/vkmark/0001-scenes-Use-depth-format-supported-by-i.MX.patch b/meta-digi-dey/recipes-graphics/vulkan/vkmark/0001-scenes-Use-depth-format-supported-by-i.MX.patch index d1c71897f..daaa2b036 100644 --- a/meta-digi-dey/recipes-graphics/vulkan/vkmark/0001-scenes-Use-depth-format-supported-by-i.MX.patch +++ b/meta-digi-dey/recipes-graphics/vulkan/vkmark/0001-scenes-Use-depth-format-supported-by-i.MX.patch @@ -1,4 +1,4 @@ -From 436b5b09a0f5fcd3b4f2c1711e850b52b357befb Mon Sep 17 00:00:00 2001 +From d88b1869c51581c56624eaf6cbedfdf6bdb19a41 Mon Sep 17 00:00:00 2001 From: Tom Hochstein Date: Wed, 13 Jun 2018 22:02:20 +0000 Subject: [PATCH] scenes: Use depth format supported by i.MX @@ -6,6 +6,7 @@ Subject: [PATCH] scenes: Use depth format supported by i.MX Upstream-Status: Inappropriate [i.MX-specific] Signed-off-by: Tom Hochstein + --- src/scenes/shading_scene.cpp | 2 +- src/scenes/texture_scene.cpp | 2 +- @@ -51,6 +52,3 @@ index 0fd7fe7..4f6d49a 100644 aspect = static_cast(extent.height) / extent.width; mesh = Model{"horse.3ds"}.to_mesh( --- -2.7.4 - diff --git a/meta-digi-dey/recipes-graphics/vulkan/vkmark/0001-src-meson.build-Prepend-sysroot-for-the-includedir.patch b/meta-digi-dey/recipes-graphics/vulkan/vkmark/0002-src-meson.build-Prepend-sysroot-for-the-includedir.patch similarity index 92% rename from meta-digi-dey/recipes-graphics/vulkan/vkmark/0001-src-meson.build-Prepend-sysroot-for-the-includedir.patch rename to meta-digi-dey/recipes-graphics/vulkan/vkmark/0002-src-meson.build-Prepend-sysroot-for-the-includedir.patch index 72da97484..7bb5e096a 100644 --- a/meta-digi-dey/recipes-graphics/vulkan/vkmark/0001-src-meson.build-Prepend-sysroot-for-the-includedir.patch +++ b/meta-digi-dey/recipes-graphics/vulkan/vkmark/0002-src-meson.build-Prepend-sysroot-for-the-includedir.patch @@ -1,4 +1,4 @@ -From 3e3da71c62a36516fa16cfb1d5d55e9e5c86e573 Mon Sep 17 00:00:00 2001 +From 316d477d0f8dc0936b4e057545ff83f1993047a6 Mon Sep 17 00:00:00 2001 From: Neena Busireddy Date: Mon, 3 May 2021 11:44:46 -0700 Subject: [PATCH] src/meson.build: Prepend sysroot for the includedir @@ -8,6 +8,7 @@ Need to prepend PKG_CONFIG_SYSROOT_DIR to the dir path for cross compilation Upstream-Status: Inappropriate [OE-specific] Signed-off-by: Neena Busireddy + --- src/meson.build | 3 +++ 1 file changed, 3 insertions(+) @@ -26,6 +27,3 @@ index 35813c5..9032706 100644 format_map_gen_h = custom_target( 'format_map_gen.h', output: 'format_map_gen.h', --- -2.17.1 - diff --git a/meta-digi-dey/recipes-graphics/vulkan/vkmark/0003-meson.build-Enable-native-wayland-scanner.patch b/meta-digi-dey/recipes-graphics/vulkan/vkmark/0003-meson.build-Enable-native-wayland-scanner.patch new file mode 100644 index 000000000..667ca2a8e --- /dev/null +++ b/meta-digi-dey/recipes-graphics/vulkan/vkmark/0003-meson.build-Enable-native-wayland-scanner.patch @@ -0,0 +1,37 @@ +From ec56eaab16cb99dad7d9b3fa45ddbcd3a3bc469c Mon Sep 17 00:00:00 2001 +From: Neena Busireddy +Date: Tue, 11 Oct 2022 12:42:10 -0700 +Subject: [PATCH] meson.build: Enable native wayland scanner + +With openembedded commit e525db4eb9 ("wayland: update 1.20.0 -> 1.21.0") +package config seems no longer to provide the path to the native +wayland scanner. + +This patch fixes the following build break: + +Program /usr/bin/wayland-scanner found: NO +| +| ../git/src/meson.build:93:4: ERROR: Program '/usr/bin/wayland-scanner' not found or not executable +| + +Upstream-Status: Inappropriate [imx specific] + +Signed-off-by: Neena Busireddy + +--- + meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/meson.build b/meson.build +index 0d83918..9c33652 100644 +--- a/meson.build ++++ b/meson.build +@@ -29,7 +29,7 @@ xcb_icccm_dep = dependency('xcb-icccm', required : get_option('xcb') == 'true') + wayland_client_dep = dependency('wayland-client', required : get_option('wayland') == 'true') + wayland_protocols_dep = dependency('wayland-protocols', version : '>= 1.12', + required : get_option('wayland') == 'true') +-wayland_scanner_dep = dependency('wayland-scanner', required : get_option('wayland') == 'true') ++wayland_scanner_dep = dependency('wayland-scanner', required : get_option('wayland') == 'true', native: true) + libdrm_dep = dependency('libdrm', required : get_option('kms') == 'true') + gbm_dep = dependency('gbm', required : get_option('kms') == 'true') + diff --git a/meta-digi-dey/recipes-graphics/vulkan/vkmark_git.bb b/meta-digi-dey/recipes-graphics/vulkan/vkmark_git.bb index 5b3f857e9..d5dd8b839 100644 --- a/meta-digi-dey/recipes-graphics/vulkan/vkmark_git.bb +++ b/meta-digi-dey/recipes-graphics/vulkan/vkmark_git.bb @@ -10,12 +10,13 @@ DEPENDS = "vulkan-loader assimp glm" SRC_URI = " \ git://github.com/vkmark/vkmark;protocol=https;branch=master \ file://0001-scenes-Use-depth-format-supported-by-i.MX.patch \ - file://0001-src-meson.build-Prepend-sysroot-for-the-includedir.patch \ + file://0002-src-meson.build-Prepend-sysroot-for-the-includedir.patch \ + file://0003-meson.build-Enable-native-wayland-scanner.patch \ " -SRCREV = "53abc4f660191051fba91ea30de084f412e7c68e" +SRCREV = "ab6e6f34077722d5ae33f6bd40b18ef9c0e99a15" S = "${WORKDIR}/git" -inherit meson +inherit meson pkgconfig PACKAGECONFIG ?= " \ ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', \ diff --git a/meta-digi-dey/recipes-graphics/vulkan/vulkan-demos/0001-Don-t-build-demos-with-questionably-licensed-data.patch b/meta-digi-dey/recipes-graphics/vulkan/vulkan-demos/0001-Don-t-build-demos-with-questionably-licensed-data.patch index c4a8dff01..d5ceefd80 100644 --- a/meta-digi-dey/recipes-graphics/vulkan/vulkan-demos/0001-Don-t-build-demos-with-questionably-licensed-data.patch +++ b/meta-digi-dey/recipes-graphics/vulkan/vulkan-demos/0001-Don-t-build-demos-with-questionably-licensed-data.patch @@ -41,27 +41,27 @@ Index: git/examples/CMakeLists.txt =================================================================== --- git.orig/examples/CMakeLists.txt +++ git/examples/CMakeLists.txt -@@ -72,9 +72,6 @@ set(EXAMPLES +@@ -89,9 +89,6 @@ set(EXAMPLES conditionalrender conservativeraster debugmarker - deferred - deferredmultisampling - deferredshadows + descriptorbuffer descriptorindexing descriptorsets - displacement -@@ -85,9 +82,6 @@ set(EXAMPLES - gltfloading +@@ -106,9 +103,6 @@ set(EXAMPLES gltfscenerendering gltfskinning + graphicspipelinelibrary - hdr - imgui - indirectdraw inlineuniformblocks inputattachments instancing -@@ -101,8 +95,6 @@ set(EXAMPLES +@@ -123,8 +117,6 @@ set(EXAMPLES parallaxmapping particlefire pbrbasic @@ -70,10 +70,10 @@ Index: git/examples/CMakeLists.txt pipelines pipelinestatistics pushconstants -@@ -115,12 +107,8 @@ set(EXAMPLES - raytracingshadows +@@ -141,12 +133,8 @@ set(EXAMPLES renderheadless screenshot + shaderobjects - shadowmapping - shadowmappingomni - shadowmappingcascade @@ -83,9 +83,9 @@ Index: git/examples/CMakeLists.txt stencilbuffer subpasses terraintessellation -@@ -136,7 +124,6 @@ set(EXAMPLES - triangle +@@ -163,7 +151,6 @@ set(EXAMPLES variablerateshading + vertexattributes viewportarray - vulkanscene ) diff --git a/meta-digi-dey/recipes-graphics/vulkan/vulkan-demos/0001-Modify-parameter-in-vulkan-demo-computenbody.patch b/meta-digi-dey/recipes-graphics/vulkan/vulkan-demos/0002-Modify-parameter-in-vulkan-demo-computenbody.patch similarity index 67% rename from meta-digi-dey/recipes-graphics/vulkan/vulkan-demos/0001-Modify-parameter-in-vulkan-demo-computenbody.patch rename to meta-digi-dey/recipes-graphics/vulkan/vulkan-demos/0002-Modify-parameter-in-vulkan-demo-computenbody.patch index 56d1e2c18..ec1fb8b9a 100644 --- a/meta-digi-dey/recipes-graphics/vulkan/vulkan-demos/0001-Modify-parameter-in-vulkan-demo-computenbody.patch +++ b/meta-digi-dey/recipes-graphics/vulkan/vulkan-demos/0002-Modify-parameter-in-vulkan-demo-computenbody.patch @@ -10,10 +10,10 @@ Upstream-Status: Inappropriate [i.MX-specific] examples/computenbody/computenbody.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -diff --git a/examples/computenbody/computenbody.cpp b/examples/computenbody/computenbody.cpp -index 84d1c278..0837d424 100644 ---- a/examples/computenbody/computenbody.cpp -+++ b/examples/computenbody/computenbody.cpp +Index: git/examples/computenbody/computenbody.cpp +=================================================================== +--- git.orig/examples/computenbody/computenbody.cpp ++++ git/examples/computenbody/computenbody.cpp @@ -14,7 +14,7 @@ // Lower particle count on Android for performance reasons #define PARTICLES_PER_ATTRACTOR 3 * 1024 @@ -23,13 +23,3 @@ index 84d1c278..0837d424 100644 #endif class VulkanExample : public VulkanExampleBase -@@ -902,4 +902,4 @@ public: - } - }; - --VULKAN_EXAMPLE_MAIN() -\ No newline at end of file -+VULKAN_EXAMPLE_MAIN() --- -2.17.1 - diff --git a/meta-digi-dey/recipes-graphics/vulkan/vulkan-demos_git.bb b/meta-digi-dey/recipes-graphics/vulkan/vulkan-demos_git.bb index c035879f4..fcaba476f 100644 --- a/meta-digi-dey/recipes-graphics/vulkan/vulkan-demos_git.bb +++ b/meta-digi-dey/recipes-graphics/vulkan/vulkan-demos_git.bb @@ -1,38 +1,38 @@ -DESCRIPTION = "Collection of Vulkan examples" +DESCRIPTION = "Vulkan C++ examples and demos" LICENSE = "MIT" -DEPENDS = "zlib" - LIC_FILES_CHKSUM = "file://LICENSE.md;md5=dcf473723faabf17baa9b5f2207599d0 \ - file://examples/triangle/triangle.cpp;endline=12;md5=bccd1bf9cadd9e10086cf7872157e4fa" + file://examples/triangle/triangle.cpp;endline=12;md5=6ff76c9a8e7b7dd640157f5d77b79339" +DEPENDS = "assimp vulkan-loader zlib" +SRC_URI = "git://github.com/SaschaWillems/Vulkan.git;protocol=https;branch=master \ + git://github.com/g-truc/glm;destsuffix=git/external/glm;name=glm;protocol=https;branch=master \ + git://github.com/KhronosGroup/KTX-Software;destsuffix=git/external/ktx;name=ktx;lfs=0;protocol=https;branch=master \ + file://0001-Don-t-build-demos-with-questionably-licensed-data.patch \ + file://0002-Modify-parameter-in-vulkan-demo-computenbody.patch \ + " +SRCREV = "054a765eaaa552d5d12d869373dea211eda6fb16" SRCREV_glm = "1ad55c5016339b83b7eec98c31007e0aee57d2bf" SRCREV_ktx = "726d14d02c95bb21ec9e43807751b491d295dd3c" -SRC_URI = "git://github.com/SaschaWillems/Vulkan.git;branch=master;protocol=https \ - git://github.com/g-truc/glm;destsuffix=git/external/glm;name=glm;branch=master;protocol=https \ - git://github.com/KhronosGroup/KTX-Software;destsuffix=git/external/ktx;name=ktx;lfs=0;branch=master;protocol=https \ - file://0001-Don-t-build-demos-with-questionably-licensed-data.patch \ - " -UPSTREAM_CHECK_COMMITS = "1" -SRCREV = "a2a604be473c829763854ffb34f7978bc0358afb" -UPSTREAM_CHECK_GITTAGREGEX = "These are not the releases you're looking for" +SRCREV_FORMAT = "default_glm_ktx" + S = "${WORKDIR}/git" +UPSTREAM_CHECK_COMMITS = "1" +UPSTREAM_CHECK_GITTAGREGEX = "These are not the releases you're looking for" + +inherit cmake features_check pkgconfig + +ANY_OF_DISTRO_FEATURES = "wayland x11" REQUIRED_DISTRO_FEATURES = 'vulkan' -inherit cmake features_check -DEPENDS = "vulkan-loader assimp wayland-protocols wayland-native" +PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', 'xcb', d)}" -do_install:append () { - - mv ${D}${bindir}/screenshot ${D}${bindir}/vulkan-screenshot -} +PACKAGECONFIG[wayland] = "-DUSE_WAYLAND_WSI=ON,-DUSE_WAYLAND_WSI=OFF,wayland-native wayland wayland-protocols" +PACKAGECONFIG[xcb] = ",,libxcb" EXTRA_OECMAKE = "-DRESOURCE_INSTALL_DIR=${datadir}/vulkan-demos" -ANY_OF_DISTRO_FEATURES = "x11 wayland" - -# Can only pick one of [wayland,xcb] -PACKAGECONFIG = "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', 'xcb', d)}" -PACKAGECONFIG[wayland] = "-DUSE_WAYLAND_WSI=ON, -DUSE_WAYLAND_WSI=OFF, wayland" -PACKAGECONFIG[xcb] = ",,libxcb" +do_install:append () { + mv ${D}${bindir}/screenshot ${D}${bindir}/vulkan-screenshot +} diff --git a/meta-digi-dey/recipes-graphics/vulkan/vulkan-demos_git.bbappend b/meta-digi-dey/recipes-graphics/vulkan/vulkan-demos_git.bbappend deleted file mode 100644 index 1bcadd34d..000000000 --- a/meta-digi-dey/recipes-graphics/vulkan/vulkan-demos_git.bbappend +++ /dev/null @@ -1,5 +0,0 @@ -FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" - -SRC_URI += " \ - file://0001-Modify-parameter-in-vulkan-demo-computenbody.patch \ -" diff --git a/meta-digi-dey/recipes-graphics/vulkan/vulkan-loader/0001-LF-11869-change-mali-wsi-layer-activating-order.patch b/meta-digi-dey/recipes-graphics/vulkan/vulkan-loader/0001-LF-11869-change-mali-wsi-layer-activating-order.patch new file mode 100644 index 000000000..da738aabe --- /dev/null +++ b/meta-digi-dey/recipes-graphics/vulkan/vulkan-loader/0001-LF-11869-change-mali-wsi-layer-activating-order.patch @@ -0,0 +1,52 @@ +From 3448c245b15928aa5a5a3695d9271fb201eb2e3b Mon Sep 17 00:00:00 2001 +From: Yuan Tian +Date: Sat, 27 Apr 2024 06:06:54 +0800 +Subject: [PATCH] LF-11869 change mali wsi layer activating order + +Upstream-Status: Inappropriate [i.MX specific] + +Signed-off-by: Yuan Tian +--- + loader/loader.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/loader/loader.c b/loader/loader.c +index e646b28b4..55912c178 100644 +--- a/loader/loader.c ++++ b/loader/loader.c +@@ -2906,6 +2906,7 @@ VkResult add_data_files(const struct loader_instance *inst, char *search_path, s + #if !defined(_WIN32) + char temp_path[2048]; + #endif ++ bool has_wsi_layer = false; + + // Now, parse the paths + next_file = search_path; +@@ -2965,6 +2966,10 @@ VkResult add_data_files(const struct loader_instance *inst, char *search_path, s + name = full_path; + + VkResult local_res; ++ if(!strcmp(name,"/etc/vulkan/implicit_layer.d/VkLayer_window_system_integration.json")) { ++ has_wsi_layer = true; ++ continue; ++ } + local_res = add_if_manifest_file(inst, name, out_files); + + // Incomplete means this was not a valid data file. +@@ -2975,6 +2980,13 @@ VkResult add_data_files(const struct loader_instance *inst, char *search_path, s + break; + } + } ++ ++ if(has_wsi_layer) { ++ name = "/etc/vulkan/implicit_layer.d/VkLayer_window_system_integration.json"; ++ vk_result = add_if_manifest_file(inst, name, out_files); ++ has_wsi_layer = false; ++ } ++ + loader_closedir(inst, dir_stream); + if (vk_result != VK_SUCCESS) { + goto out; +-- +2.34.1 + diff --git a/meta-digi-dey/recipes-graphics/vulkan/vulkan-loader_1.3.275.0.bbappend b/meta-digi-dey/recipes-graphics/vulkan/vulkan-loader_1.3.275.0.bbappend new file mode 100644 index 000000000..d455c8c23 --- /dev/null +++ b/meta-digi-dey/recipes-graphics/vulkan/vulkan-loader_1.3.275.0.bbappend @@ -0,0 +1,13 @@ +FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" + +SRC_URI += "file://0001-LF-11869-change-mali-wsi-layer-activating-order.patch" + +# libvulkan.so is loaded dynamically, so put it in the main package +SOLIBS = ".so*" +FILES_SOLIBSDEV = "" +INSANE_SKIP:${PN} += "dev-so" + +# Override default mesa drivers with i.MX GPU drivers +RRECOMMENDS:${PN}:imxvulkan = "libvulkan-imx" +# Override default mesa drivers with i.MX GPU drivers +RRECOMMENDS:${PN}:mx95-nxp-bsp = "mali-imx-libvulkan" diff --git a/meta-digi-dey/recipes-graphics/vulkan/vulkan-samples/0001-Add-support-for-wayland.patch b/meta-digi-dey/recipes-graphics/vulkan/vulkan-samples/0001-Add-support-for-wayland.patch deleted file mode 100644 index 66681f7fb..000000000 --- a/meta-digi-dey/recipes-graphics/vulkan/vulkan-samples/0001-Add-support-for-wayland.patch +++ /dev/null @@ -1,87 +0,0 @@ -From 7b27a46d14acf050e6e836c41ca2f286680e6edc Mon Sep 17 00:00:00 2001 -From: Prabhu Sundararaj -Date: Tue, 11 May 2021 17:28:06 -0500 -Subject: [PATCH 1/3] Add support for wayland. - -Use VKB_BUILD_WAYLAND=1 and GLFW_USE_WAYLAND=1 to enable wayland - -Signed-off-by: Hugo Osornio -Signed-off-by: Prabhu Sundararaj ---- - bldsys/cmake/template/entrypoint_main.cpp.in | 2 ++ - framework/platform/unix/unix_platform.cpp | 7 +++++++ - third_party/CMakeLists.txt | 19 ++++++++++++------- - 3 files changed, 21 insertions(+), 7 deletions(-) - -diff --git a/bldsys/cmake/template/entrypoint_main.cpp.in b/bldsys/cmake/template/entrypoint_main.cpp.in -index 92ec703..eaf158e 100644 ---- a/bldsys/cmake/template/entrypoint_main.cpp.in -+++ b/bldsys/cmake/template/entrypoint_main.cpp.in -@@ -47,6 +47,8 @@ int main(int argc, char *argv[]) - vkb::UnixPlatform platform{vkb::UnixType::Mac, argc, argv}; - # elif defined(VK_USE_PLATFORM_XCB_KHR) - vkb::UnixPlatform platform{vkb::UnixType::Linux, argc, argv}; -+# elif defined(VK_USE_PLATFORM_WAYLAND_KHR) -+ vkb::UnixPlatform platform{vkb::UnixType::Linux, argc, argv}; - # endif - #endif - -diff --git a/framework/platform/unix/unix_platform.cpp b/framework/platform/unix/unix_platform.cpp -index 53a0502..84e8f79 100644 ---- a/framework/platform/unix/unix_platform.cpp -+++ b/framework/platform/unix/unix_platform.cpp -@@ -35,6 +35,10 @@ VKBP_ENABLE_WARNINGS() - # define VK_KHR_XCB_SURFACE_EXTENSION_NAME "VK_KHR_xcb_surface" - #endif - -+#ifndef VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME -+# define VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME "VK_KHR_wayland_surface" -+#endif -+ - namespace vkb - { - namespace -@@ -95,6 +99,9 @@ const char *UnixPlatform::get_surface_extension() - } - else - { -+#ifdef VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME -+ return VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME; -+#endif - return VK_KHR_XCB_SURFACE_EXTENSION_NAME; - } - } -diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt -index 499fe9a..de13c11 100644 ---- a/third_party/CMakeLists.txt -+++ b/third_party/CMakeLists.txt -@@ -57,14 +57,19 @@ elseif(WIN32) - elseif(APPLE) - target_compile_definitions(vulkan INTERFACE VK_USE_PLATFORM_MACOS_MVK) - elseif(UNIX) -- # See whether X11 is available. If not, fall back to direct-to-display mode. -- find_package(X11 QUIET) -- if (X11_FOUND) -- target_compile_definitions(vulkan INTERFACE VK_USE_PLATFORM_XCB_KHR) -+ if (VKB_BUILD_WAYLAND) -+ message(STATUS "Using Vulkan platform wayland") -+ target_compile_definitions(vulkan INTERFACE VK_USE_PLATFORM_WAYLAND_KHR) - else() -- set(DIRECT_TO_DISPLAY TRUE) -- set(DIRECT_TO_DISPLAY TRUE PARENT_SCOPE) -- target_compile_definitions(vulkan INTERFACE VK_USE_PLATFORM_DISPLAY_KHR) -+ # See whether X11 is available. If not, fall back to direct-to-display mode. -+ find_package(X11 QUIET) -+ if (X11_FOUND) -+ target_compile_definitions(vulkan INTERFACE VK_USE_PLATFORM_XCB_KHR) -+ else() -+ set(DIRECT_TO_DISPLAY TRUE) -+ set(DIRECT_TO_DISPLAY TRUE PARENT_SCOPE) -+ target_compile_definitions(vulkan INTERFACE VK_USE_PLATFORM_DISPLAY_KHR) -+ endif() - endif() - endif() - --- -2.25.1 - diff --git a/meta-digi-dey/recipes-graphics/vulkan/vulkan-samples/0001-The-workload-of-case-16bit_arithmetic-is-heavy-for-8.patch b/meta-digi-dey/recipes-graphics/vulkan/vulkan-samples/0001-The-workload-of-case-16bit_arithmetic-is-heavy-for-8.patch new file mode 100644 index 000000000..b685bdc0c --- /dev/null +++ b/meta-digi-dey/recipes-graphics/vulkan/vulkan-samples/0001-The-workload-of-case-16bit_arithmetic-is-heavy-for-8.patch @@ -0,0 +1,44 @@ +From c4fdd52842b1ce80c2531c00b43e40d173757e93 Mon Sep 17 00:00:00 2001 +From: Yuan Tian +Date: Tue, 24 Oct 2023 17:32:08 +0800 +Subject: [PATCH] The workload of case 16bit_arithmetic is heavy for 8ulp and + 8mn board. It caused TIMEOUT and running aborted. Increase timeout value to + resolve the issue. + +Upstream-Status: Inappropriate [i.MX specific] + +Signed-off-by: Yuan Tian +--- + framework/fence_pool.cpp | 2 +- + framework/fence_pool.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/framework/fence_pool.cpp b/framework/fence_pool.cpp +index f2fecd2..a0b77ed 100644 +--- a/framework/fence_pool.cpp ++++ b/framework/fence_pool.cpp +@@ -66,7 +66,7 @@ VkFence FencePool::request_fence() + return fences.back(); + } + +-VkResult FencePool::wait(uint32_t timeout) const ++VkResult FencePool::wait(uint64_t timeout) const + { + if (active_fence_count < 1 || fences.empty()) + { +diff --git a/framework/fence_pool.h b/framework/fence_pool.h +index 934990e..8a5037c 100644 +--- a/framework/fence_pool.h ++++ b/framework/fence_pool.h +@@ -40,7 +40,7 @@ class FencePool + + VkFence request_fence(); + +- VkResult wait(uint32_t timeout = std::numeric_limits::max()) const; ++ VkResult wait(uint64_t timeout = std::numeric_limits::max()) const; + + VkResult reset(); + +-- +2.17.1 + diff --git a/meta-digi-dey/recipes-graphics/vulkan/vulkan-samples/0002-Wayland-support-Use-local-context-window-size.patch b/meta-digi-dey/recipes-graphics/vulkan/vulkan-samples/0002-Wayland-support-Use-local-context-window-size.patch deleted file mode 100644 index 8584241e2..000000000 --- a/meta-digi-dey/recipes-graphics/vulkan/vulkan-samples/0002-Wayland-support-Use-local-context-window-size.patch +++ /dev/null @@ -1,66 +0,0 @@ -From 49198f6ccb388e511e40c963744033b9732b4de8 Mon Sep 17 00:00:00 2001 -From: Prabhu Sundararaj -Date: Tue, 11 May 2021 17:29:48 -0500 -Subject: [PATCH 2/3] Wayland support : Use local context window size. - -The default extent will use 0xFFFFFFFF for W and H. - -Signed-off-by: Hugo Osornio -Signed-off-by: Prabhu Sundararaj ---- - framework/core/swapchain.cpp | 4 +++- - framework/rendering/render_target.cpp | 9 +++++---- - 2 files changed, 8 insertions(+), 5 deletions(-) - -diff --git a/framework/core/swapchain.cpp b/framework/core/swapchain.cpp -index 3821889..bed25a5 100644 ---- a/framework/core/swapchain.cpp -+++ b/framework/core/swapchain.cpp -@@ -356,7 +356,9 @@ Swapchain::Swapchain(Swapchain & old_swapchain, - - // Chose best properties based on surface capabilities - properties.image_count = choose_image_count(image_count, surface_capabilities.minImageCount, surface_capabilities.maxImageCount); -- properties.extent = choose_extent(extent, surface_capabilities.minImageExtent, surface_capabilities.maxImageExtent, surface_capabilities.currentExtent); -+ VkExtent2D localExtent{800,800}; -+ LOGI("Using local Extent"); -+ properties.extent = localExtent;//choose_extent(extent, surface_capabilities.minImageExtent, surface_capabilities.maxImageExtent, surface_capabilities.currentExtent); - properties.array_layers = choose_image_array_layers(1U, surface_capabilities.maxImageArrayLayers); - properties.surface_format = choose_surface_format(properties.surface_format, surface_formats, surface_format_priority_list); - VkFormatProperties format_properties; -diff --git a/framework/rendering/render_target.cpp b/framework/rendering/render_target.cpp -index f9940b2..068cafa 100644 ---- a/framework/rendering/render_target.cpp -+++ b/framework/rendering/render_target.cpp -@@ -40,8 +40,9 @@ Attachment::Attachment(VkFormat format, VkSampleCountFlagBits samples, VkImageUs - } - const RenderTarget::CreateFunc RenderTarget::DEFAULT_CREATE_FUNC = [](core::Image &&swapchain_image) -> std::unique_ptr { - VkFormat depth_format = get_suitable_depth_format(swapchain_image.get_device().get_gpu().get_handle()); -- -- core::Image depth_image{swapchain_image.get_device(), swapchain_image.get_extent(), -+ VkExtent3D localExtent{800,800,1}; // = swapchain_image.get_extent(); -+ LOGI("About to create Depth Image {}, {}, {}", localExtent.width, localExtent.height, localExtent.depth); -+ core::Image depth_image{swapchain_image.get_device(), /*swapchain_image.get_extent()*/ localExtent, - depth_format, - VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT, - VMA_MEMORY_USAGE_GPU_ONLY}; -@@ -70,7 +71,7 @@ vkb::RenderTarget::RenderTarget(std::vector &&images) : - // Allow only one extent size for a render target - if (unique_extent.size() != 1) - { -- throw VulkanException{VK_ERROR_INITIALIZATION_FAILED, "Extent size is not unique"}; -+ //throw VulkanException{VK_ERROR_INITIALIZATION_FAILED, "Extent size is not unique"}; - } - - extent = *unique_extent.begin(); -@@ -109,7 +110,7 @@ vkb::RenderTarget::RenderTarget(std::vector &&image_views) : - std::transform(views.begin(), views.end(), std::inserter(unique_extent, unique_extent.end()), get_view_extent); - if (unique_extent.size() != 1) - { -- throw VulkanException{VK_ERROR_INITIALIZATION_FAILED, "Extent size is not unique"}; -+ //throw VulkanException{VK_ERROR_INITIALIZATION_FAILED, "Extent size is not unique"}; - } - extent = *unique_extent.begin(); - --- -2.25.1 - diff --git a/meta-digi-dey/recipes-graphics/vulkan/vulkan-samples/0003-wayland-support-for-Hello-triangle-sample.patch b/meta-digi-dey/recipes-graphics/vulkan/vulkan-samples/0003-wayland-support-for-Hello-triangle-sample.patch deleted file mode 100644 index 2c4bdf3a4..000000000 --- a/meta-digi-dey/recipes-graphics/vulkan/vulkan-samples/0003-wayland-support-for-Hello-triangle-sample.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 01cc6cdf6ceb6a8b20dab4338adb771373cdbbfe Mon Sep 17 00:00:00 2001 -From: Prabhu Sundararaj -Date: Tue, 11 May 2021 17:31:25 -0500 -Subject: [PATCH 3/3] wayland support for Hello triangle sample - -Signed-off-by: Hugo Osornio -Signed-off-by: Prabhu Sundararaj ---- - samples/api/hello_triangle/hello_triangle.cpp | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/samples/api/hello_triangle/hello_triangle.cpp b/samples/api/hello_triangle/hello_triangle.cpp -index 3f2b8e7..b62ef82 100644 ---- a/samples/api/hello_triangle/hello_triangle.cpp -+++ b/samples/api/hello_triangle/hello_triangle.cpp -@@ -187,6 +187,8 @@ void HelloTriangle::init_instance(Context & context, - active_instance_extensions.push_back(VK_MVK_MACOS_SURFACE_EXTENSION_NAME); - #elif defined(VK_USE_PLATFORM_XCB_KHR) - active_instance_extensions.push_back(VK_KHR_XCB_SURFACE_EXTENSION_NAME); -+#elif defined(VK_USE_PLATFORM_WAYLAND_KHR) -+ active_instance_extensions.push_back(VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME); - #elif defined(VK_USE_PLATFORM_DISPLAY_KHR) - active_instance_extensions.push_back(VK_KHR_DISPLAY_EXTENSION_NAME); - #else -@@ -466,7 +468,7 @@ void HelloTriangle::init_swapchain(Context &context) - } - } - -- VkExtent2D swapchain_size = surface_properties.currentExtent; -+ VkExtent2D swapchain_size{800,800}; - - // FIFO must be supported by all implementations. - VkPresentModeKHR swapchain_present_mode = VK_PRESENT_MODE_FIFO_KHR; --- -2.25.1 - diff --git a/meta-digi-dey/recipes-graphics/vulkan/vulkan-samples/0004-glfw-define-GLFW_INCLUDE_NONE-to-avoid-using-default.patch b/meta-digi-dey/recipes-graphics/vulkan/vulkan-samples/0004-glfw-define-GLFW_INCLUDE_NONE-to-avoid-using-default.patch deleted file mode 100644 index 2d41482b6..000000000 --- a/meta-digi-dey/recipes-graphics/vulkan/vulkan-samples/0004-glfw-define-GLFW_INCLUDE_NONE-to-avoid-using-default.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 01e6667afa4b11e541f78d74076a780d046f5fa7 Mon Sep 17 00:00:00 2001 -From: Prabhu Sundararaj -Date: Wed, 12 May 2021 16:44:32 -0500 -Subject: [PATCH 4/4] glfw : define GLFW_INCLUDE_NONE to avoid using default GL - -Signed-off-by: Prabhu Sundararaj ---- - framework/platform/glfw_window.cpp | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/framework/platform/glfw_window.cpp b/framework/platform/glfw_window.cpp -index 0f2de95..91e9228 100644 ---- a/framework/platform/glfw_window.cpp -+++ b/framework/platform/glfw_window.cpp -@@ -22,6 +22,7 @@ - #include "common/error.h" - - VKBP_DISABLE_WARNINGS() -+#define GLFW_INCLUDE_NONE - #include - #include - #include --- -2.25.1 - diff --git a/meta-digi-dey/recipes-graphics/vulkan/vulkan-samples/0005-glfw-fix-glfw3.h-gl-error.patch b/meta-digi-dey/recipes-graphics/vulkan/vulkan-samples/0005-glfw-fix-glfw3.h-gl-error.patch deleted file mode 100644 index 11bbfb2a3..000000000 --- a/meta-digi-dey/recipes-graphics/vulkan/vulkan-samples/0005-glfw-fix-glfw3.h-gl-error.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 69bfc75b74c4b554fb576562684ba0b970771fb4 Mon Sep 17 00:00:00 2001 -From: Prabhu Sundararaj -Date: Wed, 12 May 2021 17:20:50 -0500 -Subject: [PATCH 5/5] glfw: fix glfw3.h gl error - -Signed-off-by: Prabhu Sundararaj ---- - samples/extensions/open_gl_interop/offscreen_context.h | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/samples/extensions/open_gl_interop/offscreen_context.h b/samples/extensions/open_gl_interop/offscreen_context.h -index c125aeb..7260c11 100644 ---- a/samples/extensions/open_gl_interop/offscreen_context.h -+++ b/samples/extensions/open_gl_interop/offscreen_context.h -@@ -57,6 +57,7 @@ struct ContextData - }; - #else - // Desktop -+#define GLFW_INCLUDE_ES31 - # include - # include - -@@ -87,4 +88,4 @@ class OffscreenContext - ContextData data; - - GLuint load_shader(const char *shader_source, GLenum shader_type); --}; -\ No newline at end of file -+}; --- -2.25.1 - diff --git a/meta-digi-dey/recipes-graphics/vulkan/vulkan-samples/Fix-gcc-13.patch b/meta-digi-dey/recipes-graphics/vulkan/vulkan-samples/Fix-gcc-13.patch new file mode 100644 index 000000000..e486200da --- /dev/null +++ b/meta-digi-dey/recipes-graphics/vulkan/vulkan-samples/Fix-gcc-13.patch @@ -0,0 +1,14 @@ +Upstream-Status: Pending + +Index: git/framework/platform/parser.h +=================================================================== +--- git.orig/framework/platform/parser.h ++++ git/framework/platform/parser.h +@@ -18,6 +18,7 @@ + #pragma once + + #include ++#include + #include + #include + #include diff --git a/meta-digi-dey/recipes-graphics/vulkan/vulkan-samples_%.bbappend b/meta-digi-dey/recipes-graphics/vulkan/vulkan-samples_%.bbappend deleted file mode 100644 index 27de9df12..000000000 --- a/meta-digi-dey/recipes-graphics/vulkan/vulkan-samples_%.bbappend +++ /dev/null @@ -1,24 +0,0 @@ -FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" - -SRC_URI += " \ - file://0001-Add-support-for-wayland.patch \ - file://0002-Wayland-support-Use-local-context-window-size.patch \ - file://0003-wayland-support-for-Hello-triangle-sample.patch \ - file://0004-glfw-define-GLFW_INCLUDE_NONE-to-avoid-using-default.patch \ - file://0005-glfw-fix-glfw3.h-gl-error.patch \ -" - -DEPENDS = "extra-cmake-modules" - -# Can only pick one of [wayland,xcb] -PACKAGECONFIG = "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', 'xcb', d)}" -PACKAGECONFIG[wayland] = "-DVKB_BUILD_WAYLAND=1 -DGLFW_USE_WAYLAND=1, ,wayland wayland-native wayland-protocols libxkbcommon" -PACKAGECONFIG[xcb] = ",,libxcb" - -do_install() { - install -d ${D}${bindir} - cp ${B}/app/bin/aarch64/vulkan_samples ${D}${bindir}/ - chmod a+x ${D}${bindir}/vulkan_samples - cp -r ${S}/assets ${D}${bindir}/ - cp -r ${S}/shaders ${D}${bindir}/ -} diff --git a/meta-digi-dey/recipes-graphics/vulkan/vulkan-samples_git.bbappend b/meta-digi-dey/recipes-graphics/vulkan/vulkan-samples_git.bbappend new file mode 100644 index 000000000..82fb79f0a --- /dev/null +++ b/meta-digi-dey/recipes-graphics/vulkan/vulkan-samples_git.bbappend @@ -0,0 +1,38 @@ +SRC_URI:remove = "gitsm://github.com/KhronosGroup/Vulkan-Samples.git;branch=main;protocol=https;lfs=0" +SRC_URI += " \ + gitsm://github.com/KhronosGroup/Vulkan-Samples.git;branch=main;protocol=https;lfs=0;name=main \ + git://github.com/glfw/glfw.git;branch=master;protocol=https;name=glfw;destsuffix=git/third_party/glfw" +SRC_URI:remove = "file://32bit.patch" +FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" +SRC_URI += "file://Fix-gcc-13.patch" +SRC_URI += "file://0001-The-workload-of-case-16bit_arithmetic-is-heavy-for-8.patch" +SRCREV_FORMAT = "main_glfw" +SRCREV_main = "8b945bebf8b2fd987dcf0eeca048068adf4ea44d" +SRCREV_glfw = "8f470597d625ae28758c16b4293dd42d63e8a83a" + +inherit pkgconfig + +# Can only pick one of [wayland,xcb] +PACKAGECONFIG = "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', 'xcb', d)}" +PACKAGECONFIG[wayland] = " \ + -DVKB_WSI_SELECTION=WAYLAND -DGLFW_BUILD_WAYLAND=true -DGLFW_BUILD_X11=false -DGLFW_INCLUDE_VULKAN=true, \ + , \ + wayland wayland-native wayland-protocols libxkbcommon, \ + , \ + , \ + xcb" +PACKAGECONFIG[xcb] = " \ + , \ + , \ + libxcb, \ + , \ + , \ + wayland" + +do_install() { + install -d ${D}${bindir} + cp ${B}/app/bin/aarch64/vulkan_samples ${D}${bindir}/ + chmod a+x ${D}${bindir}/vulkan_samples + cp -r ${S}/assets ${D}${bindir}/ + cp -r ${S}/shaders ${D}${bindir}/ +} diff --git a/meta-digi-dey/recipes-graphics/vulkan/vulkan-validationlayers/0001-CMakeLists.txt-Change-the-installation-path-of-JSON-.patch b/meta-digi-dey/recipes-graphics/vulkan/vulkan-validationlayers/0001-CMakeLists.txt-Change-the-installation-path-of-JSON-.patch deleted file mode 100644 index effe45326..000000000 --- a/meta-digi-dey/recipes-graphics/vulkan/vulkan-validationlayers/0001-CMakeLists.txt-Change-the-installation-path-of-JSON-.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 1f2837e05ed090ec553a3fc4fccee5618cf26d12 Mon Sep 17 00:00:00 2001 -From: Neena Busireddy -Date: Thu, 8 Aug 2019 11:27:01 -0500 -Subject: [PATCH] CMakeLists.txt: Change the installation path of JSON files - -Also modify the library path in JSON files to /usr/lib/libVK*.so - -Upstream-Status: Inappropriate [configuration] - -Signed-off-by: Neena Busireddy ---- - layers/CMakeLists.txt | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -Index: git/layers/CMakeLists.txt -=================================================================== ---- git.orig/layers/CMakeLists.txt -+++ git/layers/CMakeLists.txt -@@ -93,7 +93,7 @@ if(BUILD_LAYERS) - elseif(UNIX) # UNIX includes APPLE - foreach(TARGET_NAME ${TARGET_NAMES}) - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/staging-json/${TARGET_NAME}.json -- DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/vulkan/explicit_layer.d) -+ DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}/vulkan/explicit_layer.d) - endforeach() - endif() - endif() -@@ -270,7 +270,7 @@ if(BUILD_LAYERS) - -DVK_VERSION=1.2.${vk_header_version}) - # If this json file is not a metalayer, get the needed properties from that target - if(TARGET ${TARGET_NAME}) -- set(INSTALL_DEFINES ${INSTALL_DEFINES} -DRELATIVE_LAYER_BINARY="$") -+ set(INSTALL_DEFINES ${INSTALL_DEFINES} -DRELATIVE_LAYER_BINARY="${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/$") - endif() - add_custom_target(${TARGET_NAME}-staging-json ALL - COMMAND ${CMAKE_COMMAND} ${INSTALL_DEFINES} -P "${CMAKE_CURRENT_BINARY_DIR}/generator.cmake") diff --git a/meta-digi-dey/recipes-graphics/vulkan/vulkan-validationlayers/icd_VSI.json b/meta-digi-dey/recipes-graphics/vulkan/vulkan-validationlayers/icd_VSI.json deleted file mode 100644 index 05a8b23a6..000000000 --- a/meta-digi-dey/recipes-graphics/vulkan/vulkan-validationlayers/icd_VSI.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "file_format_version": "1.0.0", - "ICD": { - "library_path": "/usr/lib/libvulkan_VSI.so", - "api_version": "1.1.82" - } -} diff --git a/meta-digi-dey/recipes-graphics/vulkan/vulkan-validationlayers_1.2.170.0.bb b/meta-digi-dey/recipes-graphics/vulkan/vulkan-validationlayers_1.2.170.0.bb deleted file mode 100644 index 7a16e86fd..000000000 --- a/meta-digi-dey/recipes-graphics/vulkan/vulkan-validationlayers_1.2.170.0.bb +++ /dev/null @@ -1,42 +0,0 @@ -SUMMARY = "Vulkan ValidationLayers" -DESCRIPTION = "This project provides Vulkan validation layers that \ -can be enabled to assist development by enabling developers to verify \ -their applications 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=7dbefed23242760aa3475ee42801c5ac" -SRC_URI = "git://github.com/KhronosGroup/Vulkan-ValidationLayers.git;branch=sdk-1.2.170;protocol=https" - -SRCREV = "4fdcd0eebfed3505732720fc6fd98293e847d697" - -S = "${WORKDIR}/git" - -REQUIRED_DISTRO_FEATURES = "vulkan" - -inherit cmake features_check -ANY_OF_DISTRO_FEATURES = "x11 wayland" - -DEPENDS = "vulkan-headers glslang spirv-tools spirv-headers" - -EXTRA_OECMAKE = " \ - -DGLSLANG_INSTALL_DIR=${STAGING_DIR_HOST}/usr \ - -DSPIRV_HEADERS_INSTALL_DIR=${STAGING_DIR_HOST}/usr \ - -DSPIRV_TOOLS_INSTALL_DIR=${STAGING_DIR_HOST}/usr \ -" - -# 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 = "" - -RRECOMMENDS:${PN} = "mesa-vulkan-drivers" - -UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P\d+(\.\d+)+)" diff --git a/meta-digi-dey/recipes-graphics/vulkan/vulkan-validationlayers_1.2.170.0.bbappend b/meta-digi-dey/recipes-graphics/vulkan/vulkan-validationlayers_1.2.170.0.bbappend deleted file mode 100644 index 03b426ee7..000000000 --- a/meta-digi-dey/recipes-graphics/vulkan/vulkan-validationlayers_1.2.170.0.bbappend +++ /dev/null @@ -1,13 +0,0 @@ -FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" - -SRC_URI += " \ - file://icd_VSI.json \ - file://0001-CMakeLists.txt-Change-the-installation-path-of-JSON-.patch \ -" - -do_install:append () { - install -d ${D}${sysconfdir}/vulkan/icd.d - cp ${WORKDIR}/icd_VSI.json ${D}${sysconfdir}/vulkan/icd.d - sed -i "s,/usr/lib,${libdir}," ${D}${sysconfdir}/vulkan/icd.d/icd_VSI.json - sed -i "s,1.0.30,${PV}," ${D}${sysconfdir}/vulkan/icd.d/icd_VSI.json -}