Fix T78793, T79707: Cycles crash on macOS with older CPUs

Embree static libraries need additional linking flags to avoid SSE and
AVX symbols getting mixed up.
This commit is contained in:
Brecht Van Lommel 2020-09-18 17:07:11 +02:00
parent ff44429421
commit 007e90e8c0
Notes: blender-bot 2023-02-14 06:00:49 +01:00
Referenced by issue #80396, Potential candidates for corrective releases
Referenced by issue #79707, blender 2.9 macOS 10.15.3 crash cycles rendering with viewport / into image
Referenced by issue #78793, Mac crash with cycles and any mesh (T 78581 revisited with new video card)
2 changed files with 11 additions and 1 deletions

View File

@ -37,9 +37,9 @@ FIND_PATH(EMBREE_INCLUDE_DIR
SET(_embree_FIND_COMPONENTS
embree3
embree_sse42
embree_avx
embree_avx2
embree_sse42
lexers
math
simd

View File

@ -392,6 +392,16 @@ endif()
if(WITH_CYCLES_EMBREE)
find_package(Embree 3.8.0 REQUIRED)
set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -Xlinker -stack_size -Xlinker 0x100000")
# Embree static library linking can mix up SSE and AVX symbols, causing
# crashes on macOS systems with older CPUs that don't have AVX. Using
# force load avoids that. The Embree shared library does not suffer from
# this problem, precisely because linking a shared library uses force load.
set(_embree_libraries_force_load)
foreach(_embree_library ${EMBREE_LIBRARIES})
list(APPEND _embree_libraries_force_load "-Wl,-force_load,${_embree_library}")
endforeach()
set(EMBREE_LIBRARIES ${_embree_libraries_force_load})
endif()
if(WITH_OPENIMAGEDENOISE)