Commit Graph

313 Commits

Author SHA1 Message Date
bors[bot]
71e853d6ce Merge #798
798: Fixed storage buffer counting towards storage textures for binding validation r=kvark a=Wumpf

See title.
(broke my group layout creation since my compute shaders need quite a few storage buffers _and_ storage textures bound... ;-))

Co-authored-by: Andreas Reich <r_andreas2@web.de>
2020-07-16 14:33:40 +00:00
Andreas Reich
ace186623e Fixed storage buffer counting towards storage textures for binding validation 2020-07-15 22:56:30 +02:00
bors[bot]
a0ed09a6a8 Merge #796
796: Safe error handling for command API r=kvark a=GabrielMajeri

**Connections**
Part of #638 

**Description**
Initially started to remove assertions from the `bundle.rs` file, but ended up implementing safe error handling for the whole `command` module.

**Testing**
Checked with core and player.

Co-authored-by: Gabriel Majeri <gabriel.majeri6@gmail.com>
2020-07-15 20:54:32 +00:00
Gabriel Majeri
6f6893244a Rename InvalidBufferUsage 2020-07-15 17:09:53 +03:00
Gabriel Majeri
8e9a7bd3a9 Detailed error messages for compute errors 2020-07-15 17:06:46 +03:00
Gabriel Majeri
a8608d8bcd Rename error variants 2020-07-15 17:06:36 +03:00
Gabriel Majeri
151e300635 Detailed messages for RenderPassError 2020-07-15 16:48:58 +03:00
Gabriel Majeri
7df69b2740 Error message display for RenderCommandError 2020-07-15 15:59:36 +03:00
Gabriel Majeri
52922a7a8f Detailed error messages for render bundle creation 2020-07-15 14:34:18 +03:00
Gabriel Majeri
b7dd6a194f Implement Display for BindError 2020-07-15 14:32:07 +03:00
bors[bot]
fc4baa3107 Merge #795
795: Move `RenderPass*AttachmentDescriptor` types into core r=kvark a=GabrielMajeri

**Connections**
Follow up to #791.

**Description**
I had the impression that these two types were already shared between `wgpu-core` and `wgpu-rs`, considering they were generic. Further investigation reveals that not to be the case.

This PR moves these types into `wgpu-core`, since they're specific to this crate.

**Testing**
Checked with core, player and `wgpu-rs`.

Co-authored-by: Gabriel Majeri <gabriel.majeri6@gmail.com>
2020-07-14 12:52:27 +00:00
Gabriel Majeri
1b03fbe9be Safe error handling for commands API 2020-07-14 11:40:54 +03:00
Gabriel Majeri
39ed7a008c Move RenderPass*AttachmentDescriptor types into core 2020-07-14 08:11:20 +03:00
Connor Fitzgerald
c8bcc50ed6 Implement PUSH_CONSTANTS feature 2020-07-13 12:47:09 -04:00
bors[bot]
2208048a89 Merge #789
789: Panic on using a pending buffer r=kvark a=kvark

**Connections**
Validates the use case of https://github.com/gfx-rs/wgpu-rs/issues/436

**Description**
We didn't detect if a buffer had pending *initial* mapping, previously, on submit.

**Testing**
Untested

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-07-13 15:51:50 +00:00
bors[bot]
d7ee89018b Merge #791
791: Unify `wgpu-core` and `wgpu-rs` types r=kvark a=GabrielMajeri

**Connections**
Closes #689.

**Description**
Moves a lot of types from `wgpu-rs` which were duplicated in `wgpu-core` to `wgpu-types`.

**Testing**
Checked with core, player and `wgpu-rs`.

Corresponding `wgpu-rs` PR: https://github.com/gfx-rs/wgpu-rs/pull/437

Co-authored-by: Gabriel Majeri <gabriel.majeri6@gmail.com>
2020-07-13 15:45:09 +00:00
Gabriel Majeri
f3b80f1d8d Unify wgpu-core and wgpu-rs types 2020-07-13 18:39:49 +03:00
bors[bot]
08c873969c Merge #790
790: core: make DeviceType repr(u8) r=kvark a=DavidPeicho

**Connections**

This PR will make gfx-rs/wgpu-native#43 mergeable.

**Description**

`DeviceType` wasn't made to be used in FFI. The enum is now set to `#[repr(u8)]`.

**Testing**

It's not tested 💯 


Co-authored-by: David Peicho <david.peicho@gmail.com>
2020-07-13 13:55:35 +00:00
David Peicho
257151b9a4 core: make DeviceType repr(u8) 2020-07-13 10:45:47 +01:00
Dzmitry Malyshau
b7695ceac3 Panic on using a pending buffer 2020-07-13 00:54:24 -04:00
Dzmitry Malyshau
dd38c7ba03 Make register methods public again 2020-07-12 14:39:38 -04:00
bors[bot]
ea680b964d Merge #787
787: Remove non-exhaustive markers r=kvark a=GabrielMajeri

Based on the previous [discussion](https://github.com/gfx-rs/wgpu/pull/774#issuecomment-657171354), this PR removes the `NonExhaustive` structure and any `#[non_exhaustive]` attribute since it's too early to decide how to ensure forward compatibility.

**Testing**
Checked the `core`, `types` and `player` crates.

Co-authored-by: Gabriel Majeri <gabriel.majeri6@gmail.com>
2020-07-12 18:22:21 +00:00
Gabriel Majeri
9cd3d47ce7 Remove non-exhaustive markers 2020-07-12 19:56:04 +03:00
Dzmitry Malyshau
967217f89b Basic use of Error for bind groups 2020-07-11 23:41:43 -04:00
Kunal Mohan
4a116fca38 Add check while removing uninserted Ids 2020-07-12 01:13:34 +05:30
Dzmitry Malyshau
aa5676b1f2 Fix hub insertion 2020-07-11 10:30:26 -04:00
bors[bot]
7d5082753b Merge #773
773: Error handling for data transfer API r=kvark a=GabrielMajeri

**Connections**
Work on the error model described in #376 

**Description**
Removes assertions from the transfer functions, instead returning a custom error type.

**Testing**
Checked with `player` and `wgpu-rs`: https://github.com/gfx-rs/wgpu-rs/pull/430

Co-authored-by: Gabriel Majeri <gabriel.majeri6@gmail.com>
2020-07-11 02:28:25 +00:00
Gabriel Majeri
98e4f73a10 Error handling for data transfer API 2020-07-10 21:50:22 +03:00
Kunal Mohan
26dcdaae59 Add Error State to Storages (#776)
* Add Error State to Storages
fix #772

* use resize function in insert

* address review comments
2020-07-10 14:29:22 -04:00
Dzmitry Malyshau
e693170aef Rename bindings to entries 2020-07-08 23:41:09 -04:00
bors[bot]
d3e204127c Merge #769
769: Implement and Validate all WebGPU Limits r=kvark a=cwfitzgerald

**Connections**

None?

**Description**

This adds all the limits that webgpu has currently. It also validates the values.

The main piece of code here is `BindingTypeMaxCountValidator` and `PerStageBindingTypeCounter` which provides the interface for figuring out the maximum per-stage counts in the pipeline. For each `BindGroupLayout` a `BindingTypeMaxCountValidator`is put together during creation using all of the bindings. Then the `BindingTypeMaxCountValidator`s are combined into a single max. This is then validated against the max limits.

Each commit should be independently testable and are grouped by responsibility.

**Testing**

I modified the wgpu-rs example framework to ask for extremely reduced limits and then tested various examples to verify it properly accepted/rejected based on the actual limit.

Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
2020-07-08 03:29:51 +00:00
Connor Fitzgerald
36fa3b81b4 Validate BindGroup based limits 2020-07-07 23:27:42 -04:00
Connor Fitzgerald
1d5d7ddc40 Validate PipelineLayout based limits 2020-07-07 23:26:23 -04:00
Dzmitry Malyshau
7686bb5cad Update gfx-extras for the memory changes 2020-07-07 16:41:26 -04:00
Connor Fitzgerald
238e6b74ee Populate limits struct 2020-07-07 16:12:03 -04:00
Connor Fitzgerald
f76b631961 Validate set_bind_group is within bounds of limit 2020-07-07 14:41:54 -04:00
bors[bot]
cfd21d4913 Merge #763
763: Remove raw pointers from the render pipelines API r=kvark a=GabrielMajeri

**Connections**
Rust-ification of API, as part of #689

**Description**
The objective is to get rid of raw pointers in the render pipeline descriptor and associated structures.

**Testing**
Checked with `player` and the `trace` feature, and with `wgpu-rs` with the changes in https://github.com/gfx-rs/wgpu-rs/pull/425

Co-authored-by: Gabriel Majeri <gabriel.majeri6@gmail.com>
2020-07-07 17:29:37 +00:00
Gabriel Majeri
d4eeea8118 Remove pointers from pipelines API 2020-07-07 19:37:04 +03:00
Dzmitry Malyshau
46230720b5 Remove UnsafeFeatures as we decided the top level guard is not useful 2020-07-06 23:46:46 -04:00
Oskar Nehlin
8a51f4bc7f Return result instead of panicking when requesting device. (#762)
* Return Result instead of panic for recoverable errors

* Update LimitsExceeded error variant

* Update LimitsExceeded error message
2020-07-06 16:45:11 -04:00
Oskar Nehlin
5b4b695ad3 Check parent adaptor limits instead of physical device limits (#761)
* Check parent adaptor limits instead of physical device limits

* Fix pr comment
2020-07-06 14:14:09 -04:00
Dzmitry Malyshau
15f3db7d83 Bump the maximum bind groups to 8 2020-07-04 11:17:51 -04:00
Dzmitry Malyshau
0929425477 Require mapped buffers to be aligned 2020-07-01 10:50:13 -04:00
Connor Fitzgerald
b4f2c02941 Validate dynamic bindings are in-bounds 2020-06-30 22:54:24 -04:00
bors[bot]
43c67ac59c Merge #754
754: Implement MultiDrawIndirect Extensions r=kvark a=cwfitzgerald

**Connections**

Closes #742.

**Description**

These extensions, especially when combined with binding indexing, allow the creation of extremely cpu-efficient gpu powered pipelines.

Adds two extensions allowing various types of multi-draw-indirect
- MULTI_DRAW_INDIRECT (giving `multi_draw_indirect` and `multi_draw_indexed_indirect`)
- MULTI_DRAW_INDIRECT_COUNT (giving `multi_draw_indirect_count` and `multi_draw_indexed_indirect_count`)

This adds what I believe to be an extra restriction on the `*count` family of functions when compared to the underlying api. The buffer _must_ be large enough to draw `max_count` draws, even if that many draws are never drawn. This makes these operations no more unsafe than indirect would be, which is currently safe.

I did not implement these for renderbundles, but there's no reason they couldn't work, so those branches are marked with `unimplemented` as opposed to `unreachable`.

Additional Changes:
- Added some validation to the normal `draw_*_indirect` functions to prevent buffer overruns.
- The DX12 gfx-hal backend requires the strides to _always_ be non-zero, so I modified the normal indirect draws to use explicit strides.
- Made device limits and features `pub(crate)` as they need to be checked in random places in the code.

**Testing**

The change was tested using a modified version of wgpu-rs's texture-array example using a variety of permutations. I have not been able to test regular MULTI_DRAW_INDIRECT on mac, but I see no reason why that wouldn't work.

https://github.com/gfx-rs/wgpu-rs/pull/414

Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
2020-06-28 04:47:13 +00:00
Connor Fitzgerald
441b6e0d04 Implement MultiDrawIndirect Extensions 2020-06-27 23:43:23 -04:00
Andreas Reich
cd87f1e80f added independent blending to the list of required features 2020-06-27 22:33:47 +02:00
Dzmitry Malyshau
925010d117 Revise the atomic ordering on refcounts 2020-06-27 13:00:12 -04:00
Dzmitry Malyshau
e3280aa643 Deduplicate BindGroupLayout by value 2020-06-27 11:13:18 -04:00
bors[bot]
3b6e128877 Merge #752
752: gfx-memory update r=trivial a=kvark

**Connections**
Switches gfx-extras to https://github.com/gfx-rs/gfx-extras/pull/18
Fixes #750

**Description**
Includes important correctness fixes.

**Testing**
Tested on wgpu-rs examples on macOS.
Also, by @cwfitzgerald having the repro case of #750 

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-06-26 05:16:53 +00:00