From 4d14ffb80159d46a422d0aacf1b0bc45200d70cd Mon Sep 17 00:00:00 2001 From: Markus Fritsche Date: Sat, 25 Apr 2026 21:54:19 +0000 Subject: [PATCH] src/tiled_yuv.S: stub tiled_to_planar on aarch64 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The whole body of tiled_yuv.S is wrapped in #ifndef __aarch64__ — the ARMv7 NEON Thumb code doesn't assemble on aarch64. On 64-bit ARM the .S object is therefore empty and tiled_to_planar comes out as an undefined symbol in the .so, which dlopen rejects at vainfo time: libva error: dlopen ... failed: undefined symbol: tiled_to_planar Runtime-wise, tiled_to_planar is only called when video_format_is_linear() returns false, which only happens for the sunxi-cedrus DRM_FORMAT_MOD_ALLWINNER_TILED NV12 entry — never on hantro/rkvdec. So the right fix is a no-op stub on aarch64 just to satisfy the linker. Co-Authored-By: Claude Opus 4.7 (1M context) --- src/tiled_yuv.S | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/tiled_yuv.S b/src/tiled_yuv.S index c6fa833..779801a 100644 --- a/src/tiled_yuv.S +++ b/src/tiled_yuv.S @@ -182,4 +182,19 @@ thumb_function tiled_deinterleave_to_planar b 7b end_function tiled_deinterleave_to_planar +#else /* __aarch64__ */ + +/* Fourier-local: aarch64 stub. The body of this file is ARMv7 NEON Thumb + * assembly used by sunxi-cedrus (Allwinner-tiled NV12 → linear NV12) and + * is never reached on aarch64 hosts because video_format_is_linear() + * returns true for our NV12 entries. Provide a stub so the shared object + * still resolves the symbol; if ever actually called, return immediately. */ +.text +.global tiled_to_planar +.type tiled_to_planar, %function +.hidden tiled_to_planar +tiled_to_planar: + ret +.size tiled_to_planar, .-tiled_to_planar + #endif