dawn-rs
Rust bindings for Dawn WebGPU, plus dawn-wgpu compatibility wrappers for wgpu.
Project Layout
dawn-rs(src/): generated + thin handwritten bindings over Dawn C API.dawn-wgpu(dawn-wgpu/):wgpucustom backend compatibility layer.codegen/: generator for Rust bindings fromdawn.json+webgpu.h.
Requirements
- Rust stable toolchain.
DAWN_ROOTpointing to a Dawn build/prebuilt root that contains dawn binaries and headers.
Example:
DAWN_ROOT=/path/to/dawn
Link Modes
- Default: static Dawn linkage.
- Optional dynamic linkage: enable
dawn-dynamicfeature where needed.
Quick Start
dawn-rs adapter info:
DAWN_ROOT=/path/to/dawn
dawn-rs triangle:
DAWN_ROOT=/path/to/dawn
dawn-wgpu triangle:
DAWN_ROOT=/path/to/dawn
Wire examples:
DAWN_ROOT=/path/to/dawn
DAWN_ROOT=/path/to/dawn
Code Generation
Inputs:
--dawn-json: Dawn schema file (src/dawn/dawn.jsonfrom Dawn source).--api-header:include/webgpu/webgpu.hfrom Dawn build/prebuilt.--out-dir: usuallysrc/generated.--target-os/--target-arch(optional): override target file naming.
Host-target generation:
Explicit single-target generation:
Notes:
- One invocation updates one OS/arch generated file.
- Dispatch modules live in
src/generated/mod.rsandsrc/ffi/mod.rs. - Codegen is explicit and not run automatically by
cargo build.
Update Dawn Snapshot
Regenerate against latest Dawn release:
Optional:
--force: regenerate even ifDAWN_VERSIONis already current.DAWN_TAGS: override generator tags (defaultdawn,native).DAWN_CODEGEN_TARGET_OS/DAWN_CODEGEN_TARGET_ARCH: pin single target output.
Upstream References
- Dawn schema: dawn.json
- Dawn codegen docs: docs/dawn/codegen.md
- Dawn C++ API template: generator/templates/api_cpp.h
License
BSD 3-Clause. See LICENSE.