261: streamline Makefile r=kvark a=Napokue Changes: - Streamlining the Make commands to make it look better - Introduced two new variables: `WILDCARD_WGPU_NATIVE` & `WILDCARD_WGPU_NATIVE_AND_REMOTE` to reduce duplicate code. Will continue to reduce duplicate after my compute example is merged, to avoid unnecessary merge conflicts Maybe I am not too familiar with the concept FFI, but wouldn't it be easier to understand that we just generate headers and not foreign function interfaces. Basically the same, but the latter one sounds a lot more complex. We want to reach as much as possible people, so maybe renaming this would be beneficial? So I was thinking to have the commands: `header-wgpu` and `header-wgpu-remote`, instead of `ffi-wgpu` and `ffi-wgpu-remote`. Co-authored-by: Timo de Kort <dekort.timo@gmail.com>
This is an active GitHub mirror of the WebGPU native implementation in Rust, which now lives in Mozilla-central. Issues and pull requests are accepted, but we merge them in m-c manually and then sync to GitHub instead of landing directly here.
WebGPU
This is an experimental WebGPU implementation as a native static library. It's written in Rust and is based on gfx-hal and Rendy libraries. The corresponding WebIDL specification can be found at gpuweb project.
The implementation consists of the following parts:
wgpu-native- the native implementation of WebGPU as a C API librarywgpu-remote- remoting layer to work with WebGPU across the process boundaryffi- the C headers generated by cbindgen for both of the libraries
Supported platforms:
- Vulkan on Windows and Linux
- D3D12 and D3D11 on Windows
- Metal on macOS and iOS
Usage
This repository contains C-language examples that link to the native library targets and perform basic rendering and computation.
Prerequisites
- C compiler
- GLFW 3
- Rust nightly toolchain
rustup toolchain install nightly - Cbindgen
cargo install cbindgen
Running an example
The examples are located under the examples directory. We are using a Makefile for running the examples.
Triangle
make example-triangle
Compute
make example-compute
Remote
make example-remote
The idiomatic Rust wrapper lives in https://github.com/gfx-rs/wgpu-rs and provides a number of more complex examples to get a feel of the API.