Commit Graph

2761 Commits

Author SHA1 Message Date
Dzmitry Malyshau
2e9610e8c9 Request NDC_Y_FLIP feature 2020-03-27 00:54:01 -04:00
Dzmitry Malyshau
8aeeb8e318 Port to gfx-extras and gfx-hal-0.5 2020-03-27 00:54:01 -04:00
bors[bot]
49bcef0516 [rs] Merge #214
214: Rewrite GpuFuture to avoid blocking and to use less space r=kvark a=lachlansneff

Since `GpuFuture` doesn't blocking wait for the mapping to resolve anymore, we need to poll the device for it to actually work. ~~I haven't added that to the `hello-compute` example, so it doesn't work anymore.~~

Co-authored-by: Lachlan Sneff <lachlan.sneff@gmail.com>
2020-03-27 04:18:29 +00:00
Lachlan Sneff
d4b59f8e2e [rs] Rewrite GpuFuture to avoid blocking and to use less space
Remove odd patching matching

Replace std::sync::Mutex with spin::Mutex in GpuFuture

Reduce GpuFuture usage to one explicit allocation instead of two

Fix examples to poll the device in the background when using map_read or map_write

Remove device.poll from GpuFuture::poll and document future invariants

Massively simplify examples

Use Arc::clone(...) instead of arc.clone()

Switch println to log::info
2020-03-27 00:16:35 -04:00
bors[bot]
8d8f68418b Merge #538
538: Unbox unnecessarily boxed function r=kvark a=lachlansneff

Internally, the async buffer mapping callbacks were unnecessarily boxed. This was pretty easy to fix.

Co-authored-by: Lachlan Sneff <lachlan.sneff@gmail.com>
2020-03-27 03:07:34 +00:00
Lachlan Sneff
bcd7744c5b Unbox unnecessarily boxed function 2020-03-26 22:38:50 -04:00
bors[bot]
86981d9a80 Merge #528
528: Add buffer debug labels r=kvark a=aloucks

Related #404 

@kvark Is this what you had in mind? The webgpu headers have labels on all the descriptor structs and I didn't see any specific functions for altering/adding labels after creation. I'll add the rest if this looks good to you. 

I also went looking for [command buffer marker support](https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/chap41.html#debugging-command-buffer-markers) in [gfx-hal](https://docs.rs/gfx-hal/0.4.1/gfx_hal/command/trait.CommandBuffer.html) so that I could add [group labels and markers](https://gpuweb.github.io/gpuweb/#dom-gpuprogrammablepassencoder-pushdebuggroup).  Is this functionality absent in `hal` or did I miss it?





Co-authored-by: Aaron Loucks <aloucks@cofront.net>
2020-03-27 00:27:52 +00:00
Aaron Loucks
d64670aab1 Use ptr::null for default label 2020-03-26 20:26:03 -04:00
bors[bot]
25f70dc78a [rs] Merge #213
213: Cleanup user-interface around async buffer mapping r=grovesNL a=lachlansneff

This PR cleans up the interface for asynchronous buffer mapping a little. It turns `map_read` and `map_write` into `async` functions (instead of returning `impl Future<...>`). It also adds a standin error type and removes some confusing type aliases.

Co-authored-by: Lachlan Sneff <lachlan.sneff@gmail.com>
2020-03-27 00:12:20 +00:00
bors[bot]
82583e3749 [rs] Merge #219
219: Update Zerocopy to 0.3 r=kvark a=cwfitzgerald

In an effort to eliminate duplicate dependencies, especially on the proc-macro/syn stack, this updates zerocopy 0.2 (using syn 0.6) to zerocopy 0.3 (using syn 1). There appears to be no real api changes based on my skimming of the docs. Things compile on my windows machine, and hopefully it will pass on mac and linux.

Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
2020-03-26 17:58:55 +00:00
Connor Fitzgerald
7deefae6d9 [rs] Update zerocopy to 0.3 2020-03-26 13:22:44 -04:00
Aaron Loucks
fdcf9e7067 Add inital debug labels
- bind group
- bind group layout
- command encoder
- texture
2020-03-24 19:43:11 -04:00
Aaron Loucks
2700d1cc15 Add buffer debug labels 2020-03-24 19:38:07 -04:00
aloucks
e39aaa9cb3 Implement PartialEq, Eq, and Hash for more types (#535) 2020-03-24 19:29:18 -04:00
Dzmitry Malyshau
5e2f200223 Track GPU use of compute and render pipelines (#534) 2020-03-24 19:28:26 -04:00
Dzmitry Malyshau
0a30cf4b46 Recycled identity management (#533) 2020-03-24 19:18:42 -04:00
Dzmitry Malyshau
272e423a5c Improve shutdown cleanup (#532) 2020-03-24 18:03:25 -04:00
Lachlan Sneff
cc4e837792 [rs] Cleanup user-interface around async buffer mapping 2020-03-23 00:07:54 -04:00
bors[bot]
0fa4f114c8 [rs] Merge #210
210: Update WGPU deps to rev 08e8d406c1 r=kvark a=aloucks

I also moved the `path` chunks in `Cargo.toml` to a single `[patch]` section so that it's one block to commment/uncomment for local development. 

Co-authored-by: Aaron Loucks <aloucks@cofront.net>
2020-03-23 01:03:33 +00:00
bors[bot]
bf9e2db4b3 Merge #527
527: Add `Clone` and `PartialEq` implementations for `SamplerDescriptor` r=kvark a=mitchmindtree

Helps when attempting to support multiple samplers in an immediate mode
context (e.g. easily compare sampler descriptors and check if I need to
add a command to switch bind groups).

Co-authored-by: mitchmindtree <mitchell.nordine@gmail.com>
2020-03-22 20:25:48 +00:00
bors[bot]
980f5412c4 [rs] Merge #212
212: Improve BufferCopyView documentation r=kvark a=rukai

groves suggested that the alignment/multiple requirements are not implemented yet.
So I changed the documentation to reflect that.
Ideally we would change the examples to demonstrate how to work around this requirement, but I think its best to wait until we know for certain that this IS a requirement, currently the WebGPU spec does not have this as a requirement.

Additionally it seems like every example except for the skybox example failed to follow this part of the WebGPU spec.
"Note: rowsPerImage must be zero for copies with a copySize.depth of 1, and must be greater than zero otherwise."
So I fixed those examples and documented the requirement on the field.

Co-authored-by: Rukai <rubickent@gmail.com>
2020-03-22 19:02:48 +00:00
Rukai
2a3e6e572b [rs] Improve BufferCopyView documentation 2020-03-22 23:24:43 +11:00
Aaron Loucks
60f9c07e9e [rs] Update WGPU deps to rev 08e8d406c1 2020-03-20 21:48:25 -04:00
bors[bot]
514393ad05 [rs] Merge #208
208: Remove lifetime from SwapChainOutput r=kvark a=lachlansneff

The pr removes the lifetime from `SwapChainOutput`. It's not clear to me if the lifetime is necessary for soundness reasons, so let me know if so.

Resolves #207 

Co-authored-by: Lachlan Sneff <lachlan.sneff@gmail.com>
2020-03-20 20:25:04 +00:00
Lachlan Sneff
ac7809cdcb [rs] Note that get_next_texture will error if a previous output is still alive. 2020-03-20 14:34:17 -04:00
mitchmindtree
cce9d7a3f7 Add Clone and PartialEq implementations for SamplerDescriptor
Helps when attempting to support multiple samplers in an immediate mode
context (e.g. easily compare sampler descriptors and check if I need to
add a command to switch bind groups).
2020-03-19 19:44:11 +01:00
Lachlan Sneff
af7a4282f2 [rs] Remove lifetime from SwapChainOutput 2020-03-19 11:43:38 -04:00
bors[bot]
08e8d406c1 Merge #526
526: Expose more copy commands to the wgpu-remote r=kvark a=kvark



Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-03-18 12:51:19 +00:00
Dzmitry Malyshau
481b0db24d Expose more copy commands to the wgpu-remote 2020-03-17 18:57:23 -04:00
bors[bot]
d3e47fc5ae Merge #521
521: Texture component type r=kvark a=kvark

Matching the upstream spec...

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-03-17 16:58:34 +00:00
bors[bot]
f836db800a Merge #525
525: Add `Clone` and `PartialEq` derives for `Texture(View)Descriptor` r=kvark a=mitchmindtree

I've come across use cases for these in nannou so thought I would add
them!

Co-authored-by: mitchmindtree <mitchell.nordine@gmail.com>
2020-03-17 13:03:02 +00:00
mitchmindtree
f00ab00ad9 Add derive PartialEq to Extent3d 2020-03-17 13:05:13 +01:00
mitchmindtree
29d731f902 Add Clone and PartialEq derives for Texture(View)Descriptor
I've come across use cases for these in nannou so thought I would add
them!
2020-03-17 12:53:13 +01:00
bors[bot]
9c33efaad2 Merge #523
523: Move more types into wgpu-types r=kvark a=grovesNL



Co-authored-by: Joshua Groves <josh@joshgroves.com>
2020-03-17 03:07:50 +00:00
Joshua Groves
b9259c0c8c Move more types into wgpu-types 2020-03-16 23:57:50 -02:30
bors[bot]
5fa3a74061 [rs] Merge #204
204: Return futures from request adapter/request device r=kvark a=grovesNL

Relevant to #175

Backporting some parts of #193 for async request adapter and async request device.

Co-authored-by: Joshua Groves <josh@joshgroves.com>
2020-03-16 22:56:43 +00:00
bors[bot]
74bfc73158 Merge #522
522: Include `wgpu-types` in list of crates r=kvark a=grovesNL



Co-authored-by: Joshua Groves <josh@joshgroves.com>
2020-03-16 20:30:34 +00:00
Joshua Groves
1a2101e939 [rs] Return futures from request adapter/request device 2020-03-16 16:35:51 -02:30
Joshua Groves
db858dd89e Include wgpu-types in list of crates 2020-03-16 15:58:31 -02:30
Dzmitry Malyshau
c4e3fb4d36 Add texture component type field to BGL entry 2020-03-16 12:02:26 -04:00
bors[bot]
11d594750b [rs] Merge #203
203: Update winit r=kvark a=grovesNL

Use the latest version of winit (0.22)

Co-authored-by: Joshua Groves <josh@joshgroves.com>
2020-03-16 14:34:26 +00:00
bors[bot]
75fdfc0ef7 Merge #520
520: Update naming of bindings to entries r=kvark a=kvark

Matches https://github.com/gpuweb/gpuweb/pull/611

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-03-16 14:07:42 +00:00
Dzmitry Malyshau
7f966be455 Update naming of bindings to entries 2020-03-16 10:06:54 -04:00
bors[bot]
9564ae1f4d [rs] Merge #202
202: Remove `Hash` for ID types r=kvark a=grovesNL

Reverts some of the `Hash` derives added in #200 because we don't have a good way to support `Hash` for JavaScript objects (for the web backend) at the moment. JavaScript objects don't have a unique identifier that we can use for `Hash`, so any solution here would probably mean adding our own map of JS object<->unique ID.

Co-authored-by: Joshua Groves <josh@joshgroves.com>
2020-03-16 13:59:17 +00:00
Joshua Groves
2a640b9611 [rs] Fix typo in readme 2020-03-16 09:31:35 -02:30
Joshua Groves
90f8d74c99 [rs] Update winit 2020-03-16 09:26:51 -02:30
Joshua Groves
0d7d4a160f [rs] Remove Hash for ID types 2020-03-16 08:53:51 -02:30
bors[bot]
fff08d2c63 [rs] Merge #200
200: Derive `Hash` and `PartialEq` for unique identifier wrapper types r=kvark a=mitchmindtree

This is particularly useful downstream for distinguishing between
instances of these types.

I was unsure about `Device` as I noticed it has a `Temp` field that
looks like it might eventually store some non-PartialEq/Hash-friendly
fields.

Let me know if you'd like me to add a derive for `Device` or if there
are any issues with those I have updated.

Co-authored-by: mitchmindtree <mitchell.nordine@gmail.com>
2020-03-15 23:18:13 +00:00
bors[bot]
c91758dc4a [rs] Merge #201
201: Add note that `slot` refers to the index in RenderPipelineDescriptor r=kvark a=aloucks

Add note that `slot` refers to the index in `RenderPipelineDescriptor::vertex_buffers`

Also fixed intra-doc links for `set_vertex_buffer`.

Co-authored-by: Aaron Loucks <aloucks@cofront.net>
2020-03-15 23:04:27 +00:00
Aaron Loucks
c89d7edff5 [rs] Add note that slot refers to the index in RenderPipelineDescriptor::vertex_buffers
Also fixed intra-doc links for `set_vertex_buffer`.
2020-03-15 15:38:31 -04:00