summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta-oe/recipes-graphics/vk-gl-cts/files/0001-decode-fix-building-for-non-NEON-enabled-ARM-targets.patch89
-rw-r--r--meta-oe/recipes-graphics/vk-gl-cts/vulkan-cts_1.4.4.0.bb5
2 files changed, 93 insertions, 1 deletions
diff --git a/meta-oe/recipes-graphics/vk-gl-cts/files/0001-decode-fix-building-for-non-NEON-enabled-ARM-targets.patch b/meta-oe/recipes-graphics/vk-gl-cts/files/0001-decode-fix-building-for-non-NEON-enabled-ARM-targets.patch
new file mode 100644
index 0000000000..d51ccafc94
--- /dev/null
+++ b/meta-oe/recipes-graphics/vk-gl-cts/files/0001-decode-fix-building-for-non-NEON-enabled-ARM-targets.patch
@@ -0,0 +1,89 @@
1From 95b4ea5b8a5044fed7aeb1c279eddae709a6ce5f Mon Sep 17 00:00:00 2001
2From: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
3Date: Tue, 28 Oct 2025 19:27:21 +0200
4Subject: [PATCH] decode: fix building for non-NEON-enabled ARM targets
5
6Building for non-NEON ARM targets fails with the cryptic message. Verify
7that it is possible to build NEON code at all.
8
9.../work/armv7at2hf-vfp-oe-linux-gnueabi/vulkan-cts/1.4.4.0/recipe-sysroot-native/usr/lib/arm-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/15.2.0/include/arm_neon.h:11019:1:
10error: inlining failed in call to 'always_inline' 'uint8x16_t
11vld1q_u8(const uint8_t*)': target specific option mismatch
1211019 | vld1q_u8 (const uint8_t * __a)
13 | ^~~~~~~~
14.../work/armv7at2hf-vfp-oe-linux-gnueabi/vulkan-cts/1.4.4.0/sources/vulkan-cts-1.4.4.0/external/vulkan-video-samples/src/vk_video_decoder/libs/NvVideoParser/src/NextStartCodeNEON.cpp:22:36:
15note: called from here
16 22 | uint8x16_t vdata = vld1q_u8(pdatain);
17 | ~~~~~~~~^~~~~~~~~
18
19Reported-by: Ryan Eatmon <reatmon@ti.com>
20Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
21Upstream-Status: Submitted [https://github.com/KhronosGroup/Vulkan-Video-Samples/pull/112]
22---
23 .../libs/NvVideoParser/CMakeLists.txt | 18 +++++++++++++++++-
24 .../NvVideoParser/src/VulkanVideoDecoder.cpp | 2 ++
25 2 files changed, 19 insertions(+), 1 deletion(-)
26
27diff --git a/vk_video_decoder/libs/NvVideoParser/CMakeLists.txt b/vk_video_decoder/libs/NvVideoParser/CMakeLists.txt
28index 84251ed60ab9..65da635e2929 100644
29--- a/vk_video_decoder/libs/NvVideoParser/CMakeLists.txt
30+++ b/vk_video_decoder/libs/NvVideoParser/CMakeLists.txt
31@@ -65,6 +65,13 @@ check_cxx_source_compiles("
32 #endif
33 " IS_ARM)
34
35+check_cxx_source_compiles("
36+ #include <arm_neon.h>
37+ uint8_t *pin;
38+ uint8x16_t vdata;
39+ int main() { vdata = vld1q_u8(pin); return 0; }
40+ " HAS_ARM_NEON)
41+
42 check_cxx_source_compiles("
43 #if defined(__x86_64__) || defined(_M_X64) || defined(__i386__) || defined(_M_IX86)
44 int main() { return 0; }
45@@ -85,6 +99,7 @@ if (IS_AARCH64 OR (CMAKE_GENERATOR_PLATFORM MATCHES "^aarch64") OR (CMAKE_GENERA
46 set(SVE_CPU_FEATURE "-march=armv8-a+sve")
47 endif()
48 MESSAGE(STATUS "Parser optimizations selected for generic ARM NEON")
49+ add_compile_definitions(HAS_ARM_NEON=1)
50 add_library(next_start_code_c OBJECT ${CMAKE_CURRENT_SOURCE_DIR}/src/NextStartCodeC.cpp include)
51 target_include_directories(next_start_code_c PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
52 add_library(next_start_code_neon OBJECT ${CMAKE_CURRENT_SOURCE_DIR}/src/NextStartCodeNEON.cpp include)
53@@ -102,7 +117,7 @@ if (IS_AARCH64 OR (CMAKE_GENERATOR_PLATFORM MATCHES "^aarch64") OR (CMAKE_GENERA
54 target_link_libraries(${VULKAN_VIDEO_PARSER_LIB} next_start_code_c next_start_code_neon next_start_code_sve)
55 target_link_libraries(${VULKAN_VIDEO_PARSER_STATIC_LIB} next_start_code_c next_start_code_neon next_start_code_sve)
56 endif()
57-elseif (IS_ARM OR (CMAKE_GENERATOR_PLATFORM MATCHES "^arm") OR (CMAKE_GENERATOR_PLATFORM MATCHES "^ARM"))
58+elseif ((IS_ARM OR (CMAKE_GENERATOR_PLATFORM MATCHES "^arm") OR (CMAKE_GENERATOR_PLATFORM MATCHES "^ARM")) AND HAS_ARM_NEON)
59 MESSAGE(STATUS "Parser optimization for ARM ${CMAKE_SYSTEM_PROCESSOR}")
60 if(WIN32)
61 MESSAGE(STATUS "Parser optimizations selected for WIN32 VFPv4")
62@@ -111,6 +126,7 @@ elseif (IS_ARM OR (CMAKE_GENERATOR_PLATFORM MATCHES "^arm") OR (CMAKE_GENERATOR_
63 MESSAGE(STATUS "Parser optimizations selected for UNIX armv7-a+simd")
64 set(NEON_CPU_FEATURE "-march=armv7-a+simd")
65 endif()
66+ add_compile_definitions(HAS_ARM_NEON=1)
67 add_library(next_start_code_c OBJECT ${CMAKE_CURRENT_SOURCE_DIR}/src/NextStartCodeC.cpp include)
68 target_include_directories(next_start_code_c PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
69 add_library(next_start_code_neon OBJECT ${CMAKE_CURRENT_SOURCE_DIR}/src/NextStartCodeNEON.cpp include)
70diff --git a/vk_video_decoder/libs/NvVideoParser/src/VulkanVideoDecoder.cpp b/vk_video_decoder/libs/NvVideoParser/src/VulkanVideoDecoder.cpp
71index 83b968ef55df..eced7fcd7bba 100644
72--- a/vk_video_decoder/libs/NvVideoParser/src/VulkanVideoDecoder.cpp
73+++ b/vk_video_decoder/libs/NvVideoParser/src/VulkanVideoDecoder.cpp
74@@ -335,10 +335,12 @@ bool VulkanVideoDecoder::ParseByteStream(const VkParserBitstreamPacket* pck, siz
75 return ParseByteStreamSVE(pck, pParsedBytes);
76 } else
77 #endif //__aarch64__
78+#if defined(HAS_ARM_NEON)
79 if (m_NextStartCode == SIMD_ISA::NEON)
80 {
81 return ParseByteStreamNEON(pck, pParsedBytes);
82 } else
83+#endif // HAS_ARM_NEON
84 #endif
85 {
86 return ParseByteStreamC(pck, pParsedBytes);
87--
882.51.0
89
diff --git a/meta-oe/recipes-graphics/vk-gl-cts/vulkan-cts_1.4.4.0.bb b/meta-oe/recipes-graphics/vk-gl-cts/vulkan-cts_1.4.4.0.bb
index 465ac981f9..4d2f223a39 100644
--- a/meta-oe/recipes-graphics/vk-gl-cts/vulkan-cts_1.4.4.0.bb
+++ b/meta-oe/recipes-graphics/vk-gl-cts/vulkan-cts_1.4.4.0.bb
@@ -6,7 +6,10 @@ SRCREV_vk-gl-cts = "03c0746a55b78eab63c664a11948b52419e1f309"
6 6
7require vulkan-cts-sources.inc 7require vulkan-cts-sources.inc
8 8
9SRC_URI:append = " file://0001-decode-fix-build-on-ARMv7-targets.patch;patchdir=external/vulkan-video-samples/src" 9SRC_URI:append = " \
10 file://0001-decode-fix-build-on-ARMv7-targets.patch;patchdir=external/vulkan-video-samples/src \
11 file://0001-decode-fix-building-for-non-NEON-enabled-ARM-targets.patch;patchdir=external/vulkan-video-samples/src \
12"
10 13
11# Workaround an optimization bug that breaks createMeshShaderMiscTestsEXT 14# Workaround an optimization bug that breaks createMeshShaderMiscTestsEXT
12OECMAKE_CXX_FLAGS:remove:toolchain-gcc = "-O2" 15OECMAKE_CXX_FLAGS:remove:toolchain-gcc = "-O2"