Commit Graph

9013 Commits

Author SHA1 Message Date
Dzmitry Malyshau
4c1ea02553 trace: hook up RON output 2020-04-30 09:55:52 -04:00
Dzmitry Malyshau
5035ffdfe2 Split limits and private features, add tracing module 2020-04-30 09:55:52 -04:00
Dzmitry Malyshau
0e533547a1 Split serde feature into trace+replay 2020-04-30 09:55:52 -04:00
Gabriel Majeri
d45323505c Add links to docs in README 2020-04-27 09:27:34 -04:00
bors[bot]
a60fc025aa [rs] Merge #281
281: The Context trait r=grovesNL a=kvark

The main motivation here is to avoid blocking the wgpu-core updates by `wgpu-native`. Instead, `wgpu-native` becomes a branch, and the dependency of `wgpu-rs` -> `wgpu-native` starts adhering to the contract/API of the standard webgpu-native headers.

The biggest change is the introduction of the Context trait. I recall us discussing 2 downsides to having this trait:
  1. inconvenient for the users to include. This is a non-issue here, since it's private.
  2. more code to maintain. This is less of an issue if we aim to have 3 backends.

What this gives in return is a well established contract with the backends. Unlike gfx-rs, the backend code is right here, a part of the crate, so the contract is only for internal use.

Fixes #156 : the "direct" implementation of it goes straight to wgpu-core. What this gives us is less overhead for command recording, since there is no longer an extra indirection on every command, and no heap allocation at the end of a render pass.

The downside of this PR is one extra `Arc` (with addref) per object.

This commit also has small improvements:
- consuming command buffers on submit (Fixes #267)
- Instance type
- proper call to destructors
- fallible `request_device`

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-04-27 04:12:38 +00:00
Dzmitry Malyshau
196e0dba7e [rs] Small comment on WebGPU backend bit, readme update 2020-04-27 00:11:22 -04:00
Dzmitry Malyshau
7633f48617 [rs] Port the Web backend to the Context trait 2020-04-26 19:18:24 -04:00
Dzmitry Malyshau
03258c2171 [rs] Move everything into Context trait, remove async 2020-04-26 19:18:24 -04:00
Dzmitry Malyshau
1fb8e7bb5e [rs] Rewire the backend system to remove wgpu-native step
Main change here is the introduction of the Context trait.
The "direct" implementation of it goes straight to wgpu-core.

This commit also has small improvements:
- consuming command buffers on submit
- Instance type
- proper call to destructors
2020-04-26 19:18:24 -04:00
Chinedu Francis Nwafili
35e07f4172 [rs] Add screenshots of examples
When looking into wgpu-rs as a replacement for WebGL I went to the
examples directory on GitHub to browse for a bit.

I wanted to see some of the examples at a glance without needing to
clone the repository.

This commit enables that by adding a README to each example with a
description of the example and screenshots / example output.

In a few cases the description is a bit redundant - but my hope is that
in the future we can improve all the READMEs.

Being a web API and thus very accessible, WebGPU could end up being many
people's first introduction to graphics programming so the lower we make
the barrier the better.
2020-04-26 18:59:48 -02:30
bors[bot]
455f5cb224 [rs] Merge #280
280: Add required wasm-bindgen patches to readme r=grovesNL a=rukai

Fixes https://github.com/gfx-rs/wgpu-rs/issues/279

Co-authored-by: Rukai <rubickent@gmail.com>
2020-04-25 03:03:56 +00:00
Rukai
1e8cc73e66 [rs] Add required wasm-bindgen patches to readme 2020-04-25 12:09:13 +10:00
bors[bot]
bc065e4abc Merge #615
615: Use General allocator at all times for now r=grovesNL a=kvark

In all user-managed resources, we don't have control of the lifetime. Since we don't know when it's released, we can't use any more specific allocator kind than `General`.

Previously, we assumed that buffers created for MAP_READ+COPY_SRC, for example, were one-time buffers created to copy data. However, there appear to be cases where they were used to fill data in once, and then persistently used as a copy source destination.

In the future, one WebGPU data transfer story is settled, we'll be able to use `Linear` kind again for all internally managed uploads. I.e. writeBuffer, writeTexture, and createBuffeMappedOnlyAtStart.

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-04-25 02:08:54 +00:00
Dzmitry Malyshau
fc68b5ef54 Use General allocator at all times for now 2020-04-24 21:59:41 -04:00
Dzmitry Malyshau
09d3623885 Minor error reporting fixes (#607) 2020-04-24 21:58:30 -04:00
Gabriel Majeri
b8f8dd78fd Run tests in CI 2020-04-24 22:43:14 -02:30
Gabriel Majeri
31726862c9 [rs] Build and deploy examples in CI 2020-04-24 22:32:26 -02:30
Igor Shaposhnik
94c06b0c9b [rs] Disable fail fast on CI 2020-04-24 22:31:21 -02:30
Christophe Massolin
e8244ae5e3 [rs] Update README.md for running examples on the web (#275)
* [readme] add details for running on wasm32 target

* [readme] update

* [readme] [web] Running instruction on webgpu.io
2020-04-24 09:42:15 -04:00
Igor Shaposhnik
1088683643 Fix windows nightly CI 2020-04-24 10:34:13 -02:30
Igor Shaposhnik
84cb39ee73 Install clippy on CI 2020-04-24 01:22:40 -02:30
bors[bot]
e0ec201ee5 [rs] Merge #271
271: Improve docs for BindingType r=kvark a=HalfVoxel

I think everything should be correct.

The readonly flags seem obvious at face value, but I couldn't find anything in the specifications about them (other than some unrelated validation), so I didn't add any documentation for those fields.

Co-authored-by: Aron Granberg <aron.granberg@gmail.com>
2020-04-22 13:08:31 +00:00
Aron Granberg
8219a64ecb [rs] Improve docs for BindingType 2020-04-22 15:07:11 +02:00
Igor Shaposhnik
5c172dd475 Migrate CI to GitHub Actions (#605) 2020-04-22 09:03:26 -04:00
bors[bot]
4f1dbaf9ef [rs] Merge #268
268: Fix hello-triangle example format and bind group r=kvark a=kvark



Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-04-21 23:10:18 +00:00
Dzmitry Malyshau
628af82d4c [rs] Fix hello-triangle example format and bind group 2020-04-21 19:08:42 -04:00
Dzmitry Malyshau
baf435d8b8 Add is_power_of_two function (#603) 2020-04-21 09:29:10 -04:00
Dzmitry Malyshau
5e458b5d45 Separate public usage from internal use (#601) 2020-04-21 09:12:40 -04:00
Aron Granberg
21b441d087 Improve error messages for mismatched binding types (#593) 2020-04-20 14:41:40 -04:00
bors[bot]
0f8c0947d9 [rs] Merge #262
262: Reverse srgb in hello-triangle r=kvark a=grovesNL

Reverse srgb support in hello-triangle (these were backwards by mistake)

Co-authored-by: Joshua Groves <josh@joshgroves.com>
2020-04-20 02:18:30 +00:00
bors[bot]
ec8b028326 [rs] Merge #264
264: Use opaque texels in mipmap example r=kvark a=grovesNL

This fixes rendering for the mipmap example in Nightly

Co-authored-by: Joshua Groves <josh@joshgroves.com>
2020-04-20 02:13:07 +00:00
Joshua Groves
3a121231b7 [rs] Use opaque texels in mipmap example 2020-04-19 23:38:58 -02:30
Joshua Groves
8f7d7ce028 [rs] Reverse srgb support in hello-triangle 2020-04-19 16:32:50 -02:30
bors[bot]
1234c96373 Merge #596
596: Remove wgpu-native and wgpu-remote r=grovesNL a=kvark

Closes #587 

I'm still not sure if it's a good idea. Feedback is welcome!
For instance, even after we remove these two things, the repo will still contain a bunch of logic that Gecko wouldn't necessarily be interested in, such as the surface/swapchains logic.

It's also not clear to me how to properly organize the workflow with the wgpu-native being separate (btw, it's https://github.com/gfx-rs/wgpu-native). Do we still have the workspace here? Or do we just introduce a separate repo that will include all the stuff as sub-modules and have a single workspace?

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-04-18 21:40:51 +00:00
bors[bot]
e612ac1fe2 Merge #600
600: Fix host mapping buffer barriers r=kvark a=kvark



Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-04-18 20:58:52 +00:00
Dzmitry Malyshau
df2c97ff0c Fix host mapping buffer barriers 2020-04-18 16:56:05 -04:00
bors[bot]
f4550cc4e3 Merge #598
598: Enable READ access for texture storage r=kvark a=kvark

This is a short-term workaround until we properly implement #597 

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-04-18 17:30:21 +00:00
Dzmitry Malyshau
75d0157aa7 Enable READ access for texture storage 2020-04-18 13:29:17 -04:00
Dzmitry Malyshau
0b20277396 [rs] Add harmony to README 2020-04-18 11:21:08 -04:00
Joshua Groves
930d2cd791 [rs] Use srgb for swapchain when possible 2020-04-18 01:04:28 -02:30
Joshua Groves
f35c3fb3cd [rs] Add wasm to CI 2020-04-18 01:04:28 -02:30
Joshua Groves
1d72176b1d [rs] Add labels to mapped descriptors where possible 2020-04-18 01:04:28 -02:30
Joshua Groves
6aa83a526b [rs] Fix some remaining TODOs in the web backend 2020-04-18 01:04:28 -02:30
Joshua Groves
0fbb75ea95 [rs] Expose more functions on the web backend 2020-04-18 01:04:28 -02:30
Joshua Groves
1f4b8801f5 [rs] Combine wasm_main/main and add console_log 2020-04-18 01:04:28 -02:30
Joshua Groves
c3c5d3927a [rs] Switch event loop back to ControlFlow::Poll 2020-04-18 01:04:28 -02:30
Joshua Groves
c4be28fcd9 [rs] Allow describe example to run on the web 2020-04-18 01:04:28 -02:30
Joshua Groves
095d682a5b [rs] Get shadow mostly working
Some of the implementation is still missing in Canary
2020-04-18 01:04:28 -02:30
Joshua Groves
3b8e0db62a [rs] Update to latest winit and wasm-bindgen 2020-04-18 01:04:28 -02:30
Joshua Groves
44083411d9 [rs] Only expose adapter info on native 2020-04-18 01:04:28 -02:30