]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
vulkan-samples: fix build on 32-bit platforms
authorRoss Burton <ross.burton@arm.com>
Mon, 5 Jun 2023 13:52:38 +0000 (14:52 +0100)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 6 Jun 2023 06:41:03 +0000 (07:41 +0100)
Backport a patch from upstream to fix the build on 32-bit platforms, and
remove the COMPATIBLE_HOST restriction.

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/recipes-graphics/vulkan/vulkan-samples/32bit.patch [new file with mode: 0644]
meta/recipes-graphics/vulkan/vulkan-samples_git.bb

diff --git a/meta/recipes-graphics/vulkan/vulkan-samples/32bit.patch b/meta/recipes-graphics/vulkan/vulkan-samples/32bit.patch
new file mode 100644 (file)
index 0000000..644c3b6
--- /dev/null
@@ -0,0 +1,101 @@
+From 49761ca63797014223d8e3ff6fb2c0235803c19c Mon Sep 17 00:00:00 2001
+From: asuessenbach <asuessenbach@nvidia.com>
+Date: Wed, 3 May 2023 09:50:08 +0200
+Subject: [PATCH] Resolve some Vulkan-Hpp-related issues on Win32.
+
+This patch fixes vulkan-samples compilation on 32-bit hosts.
+
+Upstream-Status: Backport
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+---
+ framework/common/hpp_vk_common.h                        | 4 ++--
+ framework/core/hpp_buffer.cpp                           | 4 ++--
+ framework/core/hpp_buffer.h                             | 2 +-
+ framework/core/hpp_image.cpp                            | 2 +-
+ samples/api/hpp_texture_loading/hpp_texture_loading.cpp | 2 +-
+ 5 files changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/framework/common/hpp_vk_common.h b/framework/common/hpp_vk_common.h
+index 39ed3dcde..0cbbe479e 100644
+--- a/framework/common/hpp_vk_common.h
++++ b/framework/common/hpp_vk_common.h
+@@ -92,7 +92,7 @@ inline bool is_dynamic_buffer_descriptor_type(vk::DescriptorType descriptor_type
+ inline vk::ShaderModule load_shader(const std::string &filename, vk::Device device, vk::ShaderStageFlagBits stage)
+ {
+-      return vkb::load_shader(filename, device, static_cast<VkShaderStageFlagBits>(stage));
++      return static_cast<vk::ShaderModule>(vkb::load_shader(filename, device, static_cast<VkShaderStageFlagBits>(stage)));
+ }
+ inline void set_image_layout(vk::CommandBuffer         command_buffer,
+@@ -104,7 +104,7 @@ inline void set_image_layout(vk::CommandBuffer         command_buffer,
+                              vk::PipelineStageFlags    dst_mask = vk::PipelineStageFlagBits::eAllCommands)
+ {
+       vkb::set_image_layout(command_buffer,
+-                            image,
++                            static_cast<VkImage>(image),
+                             static_cast<VkImageLayout>(old_layout),
+                             static_cast<VkImageLayout>(new_layout),
+                             static_cast<VkImageSubresourceRange>(subresource_range),
+diff --git a/framework/core/hpp_buffer.cpp b/framework/core/hpp_buffer.cpp
+index 8da265acb..e6509b9f4 100644
+--- a/framework/core/hpp_buffer.cpp
++++ b/framework/core/hpp_buffer.cpp
+@@ -84,7 +84,7 @@ HPPBuffer::~HPPBuffer()
+       if (get_handle() && (allocation != VK_NULL_HANDLE))
+       {
+               unmap();
+-              vmaDestroyBuffer(get_device().get_memory_allocator(), get_handle(), allocation);
++              vmaDestroyBuffer(get_device().get_memory_allocator(), static_cast<VkBuffer>(get_handle()), allocation);
+       }
+ }
+@@ -93,7 +93,7 @@ VmaAllocation HPPBuffer::get_allocation() const
+       return allocation;
+ }
+-VkDeviceMemory HPPBuffer::get_memory() const
++vk::DeviceMemory HPPBuffer::get_memory() const
+ {
+       return memory;
+ }
+diff --git a/framework/core/hpp_buffer.h b/framework/core/hpp_buffer.h
+index 7a243c265..bad47406d 100644
+--- a/framework/core/hpp_buffer.h
++++ b/framework/core/hpp_buffer.h
+@@ -55,7 +55,7 @@ class HPPBuffer : public vkb::core::HPPVulkanResource<vk::Buffer>
+       VmaAllocation  get_allocation() const;
+       const uint8_t *get_data() const;
+-      VkDeviceMemory get_memory() const;
++      vk::DeviceMemory get_memory() const;
+       /**
+        * @return Return the buffer's device address (note: requires that the buffer has been created with the VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT usage fla)
+diff --git a/framework/core/hpp_image.cpp b/framework/core/hpp_image.cpp
+index 00fa89ba7..5e6f27363 100644
+--- a/framework/core/hpp_image.cpp
++++ b/framework/core/hpp_image.cpp
+@@ -138,7 +138,7 @@ HPPImage::~HPPImage()
+       if (get_handle() && memory)
+       {
+               unmap();
+-              vmaDestroyImage(get_device().get_memory_allocator(), get_handle(), memory);
++              vmaDestroyImage(get_device().get_memory_allocator(), static_cast<VkImage>(get_handle()), memory);
+       }
+ }
+diff --git a/samples/api/hpp_texture_loading/hpp_texture_loading.cpp b/samples/api/hpp_texture_loading/hpp_texture_loading.cpp
+index 11a1f24c1..cbdd22773 100644
+--- a/samples/api/hpp_texture_loading/hpp_texture_loading.cpp
++++ b/samples/api/hpp_texture_loading/hpp_texture_loading.cpp
+@@ -170,7 +170,7 @@ void HPPTextureLoading::load_texture()
+               memory_allocate_info  = {memory_requirements.size,
+                                        get_device()->get_gpu().get_memory_type(memory_requirements.memoryTypeBits, vk::MemoryPropertyFlagBits::eDeviceLocal)};
+               texture.device_memory = get_device()->get_handle().allocateMemory(memory_allocate_info);
+-              VK_CHECK(vkBindImageMemory(get_device()->get_handle(), texture.image, texture.device_memory, 0));
++              get_device()->get_handle().bindImageMemory(texture.image, texture.device_memory, 0);
+               vk::CommandBuffer copy_command = get_device()->create_command_buffer(vk::CommandBufferLevel::ePrimary, true);
index 52a9ee75fe97f2443d91d6df7dd9af87614f27c9..458d1405aee9be4bf9f3a1e613ab9bd9e0d25bfb 100644 (file)
@@ -9,6 +9,7 @@ SRC_URI = "gitsm://github.com/KhronosGroup/Vulkan-Samples.git;branch=main;protoc
            file://debugfix.patch \
            file://0001-Do-not-use-LFS64-functions-on-linux-musl.patch;patchdir=third_party/spdlog \
            file://0001-Deprecate-u8string_view.patch;patchdir=third_party/spdlog \
+           file://32bit.patch \
            "
 
 UPSTREAM_CHECK_COMMITS = "1"
@@ -18,7 +19,6 @@ UPSTREAM_CHECK_GITTAGREGEX = "These are not the releases you're looking for"
 S = "${WORKDIR}/git"
 
 REQUIRED_DISTRO_FEATURES = 'vulkan'
-COMPATIBLE_HOST = "(x86_64|aarch64|mips64|powerpc64|riscv64|loongarch64).*-linux"
 
 inherit cmake features_check