mirror of
https://github.com/gfx-rs/wgpu.git
synced 2026-04-22 03:02:01 -04:00
79e9ab748d753fa05a8e4e344ca749d00592fd4c
512: Add PresentMode::Mailbox r=kvark a=aloucks
@kvark
Would you be open to renaming the presents modes to match the vulkan/gfx-hal nomenclature? Considering these aren't part of the webgpu spec, I think it would make more sense to keep things consistent.
I can update this PR if you're good with it.
```rust
pub enum PresentMode {
/// The presentation engine does **not** wait for a vertical blanking period and
/// the request is presented immediately. This is a low-latency presentation mode,
/// but visible tearing may be observed. Will fallback to `Fifo` if unavailable on the
/// selected platform and backend. Not optimal for mobile.
Immediate = 0,
/// The presentation engine waits for the next vertical blanking period to update
/// the current image, but frames may be submitted without delay. This is a low-latency
/// presentation mode and visible tearing will **not** be observed. Will fallback to `Fifo`
/// if unavailable on the selected platform and backend. Not optimal for mobile.
Mailbox = 1,
/// The presentation engine waits for the next vertical blanking period to update
/// the current image. The framerate will be capped at the display refresh rate,
/// corresponding to the `VSync`. Tearing cannot be observed. Optimal for mobile.
Fifo = 2,
}
```
Co-authored-by: Aaron Loucks <aloucks@cofront.net>
This is an active GitHub mirror of the WebGPU implementation in Rust, which now lives in "gfx/wgpu" of Mozilla-central. Issues and pull requests are accepted, but some bidirectional synchronization may be involved.
WebGPU
This is an experimental WebGPU implementation, exposing both Rust and C interfaces as a native static library. It's written in Rust and is based on gfx-hal and a few Rendy bits. See the upstream WebGPU specification (work in progress).
The implementation consists of the following parts:
wgpu-core- internal Rust API for WebGPU implementations to usewgpu-native- the native implementation of WebGPU as a C API librarywgpu-remote- remoting layer to work with WebGPU across the process boundary, as a C API library used by Geckoffi- the C headers generated by cbindgen for the native headers
Bindings
- gfx-rs/wgpu-rs - idiomatic Rust wrapper with a few more examples to get a feel of the API
- almarklein/wgpu-py - experimental Python wrapper
- porky11/wgpu - experimental Scopes wrapper
- cshenton/WebGPU.jl - experimental Julia wrapper
Supported Platforms
| API | Windows | Linux | macOS & iOS |
|---|---|---|---|
| DX11 | ✅ | ||
| DX12 | ✔️ | ||
| Vulkan | ✔️ | ✔️ | |
| Metal | ✔️ | ||
| OpenGL | 🚧 | 🚧 | 🚧 |
Usage
This repository contains C-language examples that link to the native library targets and perform basic rendering and computation. Please refer to our Getting Started page at the wiki for more information.
Description
Languages
Rust
79.9%
WGSL
16.2%
HLSL
2%
GLSL
1.7%
JavaScript
0.2%