SYSTEM Cited by 1 source
Dawn¶
Dawn is the open-source WebGPU implementation shared by Chromium. It exposes a stable C/C++ API that accepts WebGPU calls and translates them into the underlying platform's native graphics API — Metal on macOS/iOS, Vulkan on Linux/Android, D3D12 on Windows.
Source: dawn.googlesource.com/dawn.
Role in WebGPU deployments¶
- In Chromium (browsers): Dawn is the WebGPU backend; JS WebGPU calls in a tab ultimately drive Dawn.
- In native C++ / Rust apps: link Dawn directly and write to the WebGPU API in native code. The same application code can then run (a) in a browser as WebAssembly with its WebGPU calls dispatched to the browser's Dawn, and (b) as a native binary with WebGPU calls dispatched to the app's own bundled Dawn.
- Via
emdawnwebgpu— Dawn's Emscripten bindings (src/emdawnwebgpu) replace Emscripten's (deprecated) built-in WebGPU bindings. This is the currently-recommended bridge from C++ WebGPU code compiled to Wasm back to the browser's WebGPU API.
Why it matters for cross-platform apps¶
Dawn gives C++/Rust codebases a single graphics API surface that works in browsers and on native. No per-platform branching between browser-WebGPU calls and OS-specific Vulkan/Metal/D3D12 code — Dawn is the shim.
Seen in¶
- sources/2026-04-21-figma-rendering-powered-by-webgpu —
Figma's WebGPU migration uses Dawn in both tiers of the
C++ renderer: the Wasm build (for browser clients) via
Emscripten → Dawn bindings, and the native x64/arm64 build
(for server-side rendering, testing, debugging) via direct
Dawn linkage. "A benefit of this setup is that both our Wasm
and native app use Dawn for translating WebGPU into
lower-level graphics APIs." The post also notes the
in-progress migration to
emdawnwebgpusince Emscripten's built-in bindings are deprecated.