Merge pull request #48637 from akien-mga/embree-raycaster-check-sse2
This commit is contained in:
commit
9fdcab77ff
2 changed files with 13 additions and 1 deletions
|
@ -1,10 +1,16 @@
|
|||
def can_build(env, platform):
|
||||
# Depends on Embree library, which supports only x86_64 (originally)
|
||||
# and aarch64 (thanks to the embree-aarch64 fork).
|
||||
|
||||
if platform == "android":
|
||||
return env["android_arch"] in ["arm64v8", "x86", "x86_64"]
|
||||
return env["android_arch"] in ["arm64v8", "x86_64"]
|
||||
|
||||
if platform == "javascript":
|
||||
return False # No SIMD support yet
|
||||
|
||||
if env["bits"] == "32":
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
|
||||
|
|
|
@ -32,7 +32,9 @@
|
|||
|
||||
#include "lightmap_raycaster.h"
|
||||
|
||||
#ifdef __SSE2__
|
||||
#include <pmmintrin.h>
|
||||
#endif
|
||||
|
||||
LightmapRaycaster *LightmapRaycasterEmbree::create_embree_raycaster() {
|
||||
return memnew(LightmapRaycasterEmbree);
|
||||
|
@ -171,8 +173,10 @@ void embree_error_handler(void *p_user_data, RTCError p_code, const char *p_str)
|
|||
}
|
||||
|
||||
LightmapRaycasterEmbree::LightmapRaycasterEmbree() {
|
||||
#ifdef __SSE2__
|
||||
_MM_SET_FLUSH_ZERO_MODE(_MM_FLUSH_ZERO_ON);
|
||||
_MM_SET_DENORMALS_ZERO_MODE(_MM_DENORMALS_ZERO_ON);
|
||||
#endif
|
||||
|
||||
embree_device = rtcNewDevice(nullptr);
|
||||
rtcSetDeviceErrorFunction(embree_device, &embree_error_handler, nullptr);
|
||||
|
@ -180,8 +184,10 @@ LightmapRaycasterEmbree::LightmapRaycasterEmbree() {
|
|||
}
|
||||
|
||||
LightmapRaycasterEmbree::~LightmapRaycasterEmbree() {
|
||||
#ifdef __SSE2__
|
||||
_MM_SET_FLUSH_ZERO_MODE(_MM_FLUSH_ZERO_OFF);
|
||||
_MM_SET_DENORMALS_ZERO_MODE(_MM_DENORMALS_ZERO_OFF);
|
||||
#endif
|
||||
|
||||
if (embree_scene != nullptr) {
|
||||
rtcReleaseScene(embree_scene);
|
||||
|
|
Loading…
Reference in a new issue