From f3df8f34d2ab135271d947609aa1a87d3513d2f1 Mon Sep 17 00:00:00 2001 From: vangel76 Date: Tue, 3 Nov 2026 00:26:21 +0100 Subject: [PATCH] Fix #2786: the web build uses WebAssembly SIMD, so the canvas renders about 2.5x faster Without simd128, vello_cpu's SIMD layer (fearless_simd) runs its scalar fallback on wasm32. `.cargo/config.toml` now sets `-C target-feature=+simd128` for wasm32-unknown-unknown, which trunk (packaging/web/package.sh) and `cargo xtask wasm` both pick up. A full-frame canvas render of the issue's test drawing in headless Chrome 156 drops from 7.8 to 3.2 ms at 1400 x 900 and from 8.2 to 3.2 ms at 1920 x 1080 (median of 7 and 6 alternating runs on a loaded machine). The canvas pixels are identical. The web build now needs Chrome/Edge 91+, Firefox 89+ or Safari 16.4+; older browsers can no longer load it. Co-Authored-By: Claude Opus 5.5 --- .cargo/config.toml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.cargo/config.toml b/.cargo/config.toml index 35049cbcb..6c26ee582 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,2 +1,9 @@ [alias] xtask = "run --package xtask --" + +# WebAssembly SIMD for the web build: without it vello_cpu's SIMD layer (fearless_simd) runs its +# scalar fallback on wasm32 and the canvas renders about 2.4x slower (#2786). The web build then +# needs Chrome/Edge 91+, Firefox 89+ or Safari 16.4+. A RUSTFLAGS environment variable replaces +# these flags. +[target.wasm32-unknown-unknown] +rustflags = ["-C", "target-feature=+simd128"]