Skip to content

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 emdawnwebgpu since Emscripten's built-in bindings are deprecated.
Last updated · 200 distilled / 1,178 read