Merge pull request #106319 from adamscott/web-simd

[Web] Add WebAssembly SIMD support (`wasm_simd`) and enable it by default
This commit is contained in:
Thaddeus Crews 2025-05-13 16:22:18 -05:00
commit d3cd48cb51
No known key found for this signature in database
GPG key ID: 8C6E5FEB5FC03CCC
2 changed files with 11 additions and 0 deletions

View file

@ -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/"

View file

@ -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"])