Bug 284354 - multimedia/qt5-multimedia: build error: 'qt_convert_BGRA32_to_ARGB32_avx2' that is compiled without support for 'avx'
Summary: multimedia/qt5-multimedia: build error: 'qt_convert_BGRA32_to_ARGB32_avx2' th...
Status: Closed Not A Bug
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Only Me
Assignee: freebsd-kde (group)
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-01-26 00:06 UTC by iron.udjin
Modified: 2025-02-04 10:56 UTC (History)
1 user (show)

See Also:
bugzilla: maintainer-feedback? (kde)


Attachments
qt5-multimedia-5.15.16p2_1.log (206.05 KB, text/plain)
2025-01-26 00:06 UTC, iron.udjin
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description iron.udjin 2025-01-26 00:06:13 UTC
Created attachment 256997 [details]
qt5-multimedia-5.15.16p2_1.log

OS: 14.2-STABLE
qt5-multimedia-5.15.16p2_1

What could cause this issue?


--- .obj/qvideoframeconversionhelper_avx2.o ---
video/qvideoframeconversionhelper_avx2.cpp:52:33: error: always_inline function '_mm256_set_epi8' requires target feature 'avx', but would be inlined into function 'qt_convert_BGRA32_to_ARGB32_avx2' that is compiled without support for 'avx'
   52 |     const __m256i shuffleMask = _mm256_set_epi8(12, 13, 14, 15, 8, 9, 10, 11, 4, 5, 6, 7, 0, 1, 2, 3,
      |                                 ^
video/qvideoframeconversionhelper_avx2.cpp:52:33: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
video/qvideoframeconversionhelper_avx2.cpp:66:33: error: always_inline function '_mm256_loadu_si256' requires target feature 'avx', but would be inlined into function 'qt_convert_BGRA32_to_ARGB32_avx2' that is compiled without support for 'avx'
   66 |             __m256i pixelData = _mm256_loadu_si256(reinterpret_cast<const __m256i*>(bgra));
      |                                 ^
video/qvideoframeconversionhelper_avx2.cpp:66:33: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
video/qvideoframeconversionhelper_avx2.cpp:67:34: error: always_inline function '_mm256_loadu_si256' requires target feature 'avx', but would be inlined into function 'qt_convert_BGRA32_to_ARGB32_avx2' that is compiled without support for 'avx'
   67 |             __m256i pixelData2 = _mm256_loadu_si256(reinterpret_cast<const __m256i*>(bgra + 8));
      |                                  ^
video/qvideoframeconversionhelper_avx2.cpp:67:34: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
video/qvideoframeconversionhelper_avx2.cpp:69:25: error: always_inline function '_mm256_shuffle_epi8' requires target feature 'avx2', but would be inlined into function 'qt_convert_BGRA32_to_ARGB32_avx2' that is compiled without support for 'avx2'
   69 |             pixelData = _mm256_shuffle_epi8(pixelData, shuffleMask);
      |                         ^
video/qvideoframeconversionhelper_avx2.cpp:69:25: error: AVX vector argument of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
video/qvideoframeconversionhelper_avx2.cpp:70:26: error: always_inline function '_mm256_shuffle_epi8' requires target feature 'avx2', but would be inlined into function 'qt_convert_BGRA32_to_ARGB32_avx2' that is compiled without support for 'avx2'
   70 |             pixelData2 = _mm256_shuffle_epi8(pixelData2, shuffleMask);
      |                          ^
video/qvideoframeconversionhelper_avx2.cpp:70:26: error: AVX vector argument of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
video/qvideoframeconversionhelper_avx2.cpp:71:13: error: always_inline function '_mm256_store_si256' requires target feature 'avx', but would be inlined into function 'qt_convert_BGRA32_to_ARGB32_avx2' that is compiled without support for 'avx'
   71 |             _mm256_store_si256(reinterpret_cast<__m256i*>(argb), pixelData);
      |             ^
video/qvideoframeconversionhelper_avx2.cpp:71:13: error: AVX vector argument of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
video/qvideoframeconversionhelper_avx2.cpp:72:13: error: always_inline function '_mm256_store_si256' requires target feature 'avx', but would be inlined into function 'qt_convert_BGRA32_to_ARGB32_avx2' that is compiled without support for 'avx'
   72 |             _mm256_store_si256(reinterpret_cast<__m256i*>(argb + 8), pixelData2);
      |             ^
video/qvideoframeconversionhelper_avx2.cpp:72:13: error: AVX vector argument of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
14 errors generated.
*** [.obj/qvideoframeconversionhelper_avx2.o] Error code 1

make[2]: stopped in /wrkdirs/usr/ports/multimedia/qt5-multimedia/work/kde-qtmultimedia-5.15.16p2/src/multimedia
--- .obj/qvideoframeconversionhelper_ssse3.o ---
video/qvideoframeconversionhelper_ssse3.cpp:68:25: error: always_inline function '_mm_shuffle_epi8' requires target feature 'ssse3', but would be inlined into function 'qt_convert_BGRA32_to_ARGB32_ssse3' that is compiled without support for 'ssse3'
   68 |             pixelData = _mm_shuffle_epi8(pixelData, shuffleMask);
      |                         ^
video/qvideoframeconversionhelper_ssse3.cpp:69:26: error: always_inline function '_mm_shuffle_epi8' requires target feature 'ssse3', but would be inlined into function 'qt_convert_BGRA32_to_ARGB32_ssse3' that is compiled without support for 'ssse3'
   69 |             pixelData2 = _mm_shuffle_epi8(pixelData2, shuffleMask);
      |                          ^
2 errors generated.
*** [.obj/qvideoframeconversionhelper_ssse3.o] Error code 1

make[2]: stopped in /wrkdirs/usr/ports/multimedia/qt5-multimedia/work/kde-qtmultimedia-5.15.16p2/src/multimedia
2 errors

make[2]: stopped in /wrkdirs/usr/ports/multimedia/qt5-multimedia/work/kde-qtmultimedia-5.15.16p2/src/multimedia
*** [sub-multimedia-all] Error code 2

make[1]: stopped in /wrkdirs/usr/ports/multimedia/qt5-multimedia/work/kde-qtmultimedia-5.15.16p2/src
1 error

make[1]: stopped in /wrkdirs/usr/ports/multimedia/qt5-multimedia/work/kde-qtmultimedia-5.15.16p2/src
*** [sub-src-all] Error code 2

make: stopped in /wrkdirs/usr/ports/multimedia/qt5-multimedia/work/kde-qtmultimedia-5.15.16p2
1 error

make: stopped in /wrkdirs/usr/ports/multimedia/qt5-multimedia/work/kde-qtmultimedia-5.15.16p2
===> Compilation failed unexpectedly.
Try to set MAKE_JOBS_UNSAFE=yes and rebuild before reporting the failure to
the maintainer.
*** Error code 1
Comment 1 Jason E. Hale freebsd_committer freebsd_triage 2025-02-04 08:47:54 UTC
Hi!

It seems like qmake is detecting SIMD extensions (SSSE3 and AVX2) that your CPU either doesn't support or were not enabled when the rest of the Qt stack or its dependencies were built. What do you have set for CPUTYPE in /etc/make.conf and which CPU are you building with?
Comment 2 iron.udjin 2025-02-04 09:43:14 UTC
I don't have CPUTYPE in make.conf. Only: CFLAGS+= -O2 -pipe
CPU where is poudriere running:

CPU microcode: updated from 0x5000024 to 0x5003707
CPU: Intel(R) Xeon(R) Silver 4214 CPU @ 2.20GHz (2200.00-MHz K8-class CPU)
  Origin="GenuineIntel"  Id=0x50657  Family=0x6  Model=0x55  Stepping=7
  Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE>
  Features2=0x7ffefbff<SSE3,PCLMULQDQ,DTES64,MON,DS_CPL,VMX,SMX,EST,TM2,SSSE3,SDBG,FMA,CX16,xTPR,PDCM,PCID,DCA,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,TSCDLT,AESNI,XSAVE,OSXSAVE,AVX,F16C,RDRAND>
  AMD Features=0x2c100800<SYSCALL,NX,Page1GB,RDTSCP,LM>
  AMD Features2=0x121<LAHF,ABM,Prefetch>
  Structured Extended Features=0xd39ffffb<FSGSBASE,TSCADJ,BMI1,HLE,AVX2,FDPEXC,SMEP,BMI2,ERMS,INVPCID,RTM,PQM,NFPUSG,MPX,PQE,AVX512F,AVX512DQ,RDSEED,ADX,SMAP,CLFLUSHOPT,CLWB,PROCTRACE,AVX512CD,AVX512BW,AVX512VL>
  Structured Extended Features2=0x818<PKU,OSPKE,AVX512VNNI>
  Structured Extended Features3=0xbc000400<MD_CLEAR,IBPB,STIBP,L1DFL,ARCH_CAP,SSBD>
  XSAVE Features=0xf<XSAVEOPT,XSAVEC,XINUSE,XSAVES>
  IA32_ARCH_CAPS=0xa0aacab<RDCL_NO,IBRS_ALL,SKIP_L1DFL_VME,MDS_NO,TSX_CTRL>
  VT-x: PAT,HLT,MTF,PAUSE,EPT,UG,VPID,VID,PostIntr
  TSC: P-state invariant, performance statistics
Comment 3 iron.udjin 2025-02-04 10:56:17 UTC
It seems I have found a reason of the issue. When I added -march=skylake to CFLAGS, the port compelled fine. It looks like some other libraries were built with -march=skylake and after some time I removed this flag and multimedia/qt5-multimedia started failing to build.

To people who will face the same issue: all Qt packages have to be built with the same -march= or without it.