diff --git a/modules/jolt_physics/SCsub b/modules/jolt_physics/SCsub index 08500d8fc1..5c2db5b074 100644 --- a/modules/jolt_physics/SCsub +++ b/modules/jolt_physics/SCsub @@ -6,6 +6,12 @@ Import("env_modules") env_jolt = env_modules.Clone() +# Platform specific flags. +if env["platform"] == "web" and env["wasm_simd"]: + # Enable SSE 4.2 so that WebAssembly SIMD can benefit from it. + # SSE 4.2 is the highest version supported by WebAssembly SIMD. + env_jolt.Append(CCFLAGS=["-msse4.2"]) + # Thirdparty source files thirdparty_dir = "#thirdparty/jolt_physics/" diff --git a/platform/web/detect.py b/platform/web/detect.py index 27556926ff..2801659a41 100644 --- a/platform/web/detect.py +++ b/platform/web/detect.py @@ -57,6 +57,7 @@ def get_opts(): "Use Emscripten PROXY_TO_PTHREAD option to run the main application code to a separate thread", False, ), + BoolVariable("wasm_simd", "Use WebAssembly SIMD to improve CPU performance", True), ] @@ -276,6 +277,10 @@ def configure(env: "SConsEnvironment"): # https://github.com/emscripten-core/emscripten/issues/18034#issuecomment-1277561925 env.Append(LINKFLAGS=["-sTEXTDECODER=0"]) + # Enable WebAssembly SIMD + if env["wasm_simd"]: + env.Append(CCFLAGS=["-msimd128"]) + # Reduce code size by generating less support code (e.g. skip NodeJS support). env.Append(LINKFLAGS=["-sENVIRONMENT=web,worker"])