SPA audioconvert tests fail if machine does not support all optional CPU flags
Suppose the toolchain supports -mavx
etc., but the specific CPU we are running on does not support all of the instruction set extensions like AVX. For example this is true when running a modern OS distribution like Debian unstable on older hardware, or on a virtual machine with not all of the host's CPU extensions exposed to the guest.
In this situation, production use of PipeWire appears to work fine, because PipeWire correctly only uses -mavx
when compiling the AVX code path (etc.), and correctly checks whether the CPU supports AVX etc. before using the AVX code path.
However, the tests benchmark-fmt-ops
, benchmark-resample
and test-fmt-ops
unconditionally try every CPU-specific code path that was compiled, regardless of whether the current CPU supports them; so they crash with SIGILL if one of the code paths under test is not possible on this particular CPU.
I tried to fix this for !262 (merged), but I'm not sure how/whether the SPA support plugin can be used in these tests. Perhaps it would be reasonable to extract CPU detection into its own source file(s) that get compiled into the support plugin, but also, separately, into each test that needs them?