Cross-platform, safe, pure-rust graphics api.
Go to file
bors[bot] 9cd01635d7
Merge #1417
1417: Split the tracker into stateful/stateless to reduce the overhead r=cwfitzgerald a=kvark

**Connections**
Implements https://github.com/gfx-rs/wgpu/issues/1413#issuecomment-851604344
Reduces the overhead for resource tracking in the Animometer benchmark by up to 50%.

**Description**
We used to use the full tracker set on the usage scopes associated with compute/render passes. A resource tracker has 2 responsibilities: ensuring the resource is held alive, and validating and recording the state transitions. This PR exploits the fact that the latter responsibility is only applicable for buffers and textures. So doing all the lifetime tracking for a pass is a waste: we can instead just attach the lifetimes to the parent command buffer, straight.

In the Animometer benchmark, there is one large buffer, and thousands of bind groups pointing to different offsets into it. The old code would fill up the pass tracker with those bind groups, and then merge it into the command buffer tracker. The new code would just fill up the command buffer tracker instead. Since there is only one buffer, the pass tracking becomes much lighter.

**Testing**
Untested. It would be nice to have some benchmarks here, possibly after #1397 ?

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2021-06-01 06:45:05 +00:00
.github Make player automatically start/stop the capture 2021-05-18 17:42:49 -04:00
dummy Update gfx and naga to gfx-12 2021-02-21 11:25:45 -05:00
etc Add license to big-picture.xml 2020-12-03 14:52:38 -05:00
player Native Extension: Expose fill buffer & clear image (#1335) 2021-05-30 11:03:33 -04:00
wgpu-core Merge #1417 2021-06-01 06:45:05 +00:00
wgpu-types Native Extension: Expose fill buffer & clear image (#1335) 2021-05-30 11:03:33 -04:00
.gitignore Update naga and gfx, move the shader validation into a shader descriptor bit 2020-12-17 11:33:47 -05:00
.monocodus Add monocodus config with clippy support 2020-07-16 09:57:13 -04:00
bors.toml Unlock nightly builds on CI 2020-09-10 11:04:24 -04:00
Cargo.lock Make player automatically start/stop the capture 2021-05-18 17:42:49 -04:00
Cargo.toml Update render pass and framebuffers logic to the latest gfx-hal 2021-01-15 00:53:28 -05:00
CHANGELOG.md Expand 0.8.0 Changelog (#1420) 2021-06-01 02:03:59 -04:00
LICENSE Initial commit 2018-09-13 15:18:51 -04:00
logo.png Update logo and move bindings section 2020-03-03 00:10:04 -03:30
README.md Integrate codecov.io on CI 2021-05-06 13:29:14 -04:00
rustfmt.toml Rustfmt stable pass 2020-04-06 08:55:39 -04:00

This github project is mirrored in "gfx/wgpu" of Mozilla-central. Issues and pull requests are welcome, but some bidirectional synchronization may be involved.

wgpu

Matrix Matrix Build Status codecov.io

This is the core logic of an experimental WebGPU implementation. It's written in Rust and is based on gfx-hal with help of gpu-alloc and gpu-descriptor. See the upstream WebGPU specification (work in progress).

The implementation consists of the following parts:

  • Crates.io docs.rs - internal Rust API for WebGPU implementations to use
  • Crates.io docs.rs - Rust types shared between wgpu-core and wgpu-rs
  • player - standalone application for replaying the API traces, uses winit

This repository contains the core of wgpu, and is not usable directly by applications. If you are looking for the user-facing Rust API, you need wgpu-rs. If you are looking for the native implementation or bindings to the API in other languages, you need wgpu-native.

Supported Platforms

API Windows 7/10 Linux & Android macOS & iOS
DX11 🆗
DX12
Vulkan
Metal
GL ES3 🚧

= Primary support — 🆗 = Secondary support — 🚧 = Unsupported, but support in progress