[Bf-blender-cvs] [007e90e8c0a] master: Fix T78793, T79707: Cycles crash on macOS with older CPUs
Brecht Van Lommel
noreply at git.blender.org
Fri Sep 18 18:13:41 CEST 2020
Commit: 007e90e8c0a9176e16e70861d87dc7f883cc78ba
Author: Brecht Van Lommel
Date: Fri Sep 18 17:07:11 2020 +0200
Branches: master
https://developer.blender.org/rB007e90e8c0a9176e16e70861d87dc7f883cc78ba
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.
===================================================================
M build_files/cmake/Modules/FindEmbree.cmake
M build_files/cmake/platform/platform_apple.cmake
===================================================================
diff --git a/build_files/cmake/Modules/FindEmbree.cmake b/build_files/cmake/Modules/FindEmbree.cmake
index 2b3cd8e20c4..bc82d5c333a 100644
--- a/build_files/cmake/Modules/FindEmbree.cmake
+++ b/build_files/cmake/Modules/FindEmbree.cmake
@@ -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
diff --git a/build_files/cmake/platform/platform_apple.cmake b/build_files/cmake/platform/platform_apple.cmake
index 11628da39a7..6bcb3ef5d8c 100644
--- a/build_files/cmake/platform/platform_apple.cmake
+++ b/build_files/cmake/platform/platform_apple.cmake
@@ -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)
More information about the Bf-blender-cvs
mailing list