[Bf-blender-cvs] [c65e4f4e397] blender-v2.90-release: Fix T78793, T79707: Cycles crash on macOS with older CPUs

Brecht Van Lommel noreply at git.blender.org
Mon Sep 21 09:50:38 CEST 2020


Commit: c65e4f4e3970b192ec4f6033bd8253ca07411628
Author: Brecht Van Lommel
Date:   Fri Sep 18 17:07:11 2020 +0200
Branches: blender-v2.90-release
https://developer.blender.org/rBc65e4f4e3970b192ec4f6033bd8253ca07411628

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 0c8def9ad22..54ecb03e4dd 100644
--- a/build_files/cmake/Modules/FindEmbree.cmake
+++ b/build_files/cmake/Modules/FindEmbree.cmake
@@ -40,9 +40,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 2dc724f8376..2d906b0f94e 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