Details
Description
Using GCC 14.2.0, quick3d build fails to link with bundled embree for x86 targets.
| /usr/src/debug/qtquick3d/6.9.0/src/3rdparty/embree/kernels/common/scene.cpp:205: error: undefined reference to 'embree::BVH8Factory::BVH8Triangle4vMB(embree::Scene*, embree::BVHFactory::BuildVariant, embree::BVHFactory::IntersectVaria
nt)'
| /usr/src/debug/qtquick3d/6.9.0/src/3rdparty/embree/kernels/common/scene.cpp:204: error: undefined reference to 'embree::BVH8Factory::BVH8Triangle4iMB(embree::Scene*, embree::BVHFactory::BuildVariant, embree::BVHFactory::IntersectVaria
nt)'
| /usr/src/debug/qtquick3d/6.9.0/src/3rdparty/embree/kernels/common/scene.cpp:167: error: undefined reference to 'embree::BVH8Factory::BVH8QuantizedTriangle4(embree::Scene*)'
The AVX code paths are not correctly disabled. This is caused by change of behavior in GCC 14 (bug or feature?), where undef'ing _AVX_ is reversed by GCC pragmas from GCC headers.
GCC issue can be reproduced with simple test code
#undef __AVX__ // from gcc/x86_64-poky-linux/14.2.0/include/x86gprintrin.h #pragma GCC push_options #pragma GCC target("general-regs-only") #pragma GCC pop_options #ifdef __AVX__ #error avx defined again #endif
Attachments
For Gerrit Dashboard: QTBUG-130381 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
599473,2 | embree: properly disable avx for GCC14 | dev | qt/qtquick3d | Status: MERGED | +2 | 0 |
601934,2 | embree: properly disable avx for GCC14 | 6.8 | qt/qtquick3d | Status: MERGED | +2 | 0 |
602073,2 | embree: properly disable avx for GCC14 | tqtc/lts-6.5 | qt/tqtc-qtquick3d | Status: MERGED | +2 | 0 |