Commit Graph

1366 Commits

Author SHA1 Message Date
bors[bot]
44a41dc9a4 Merge #970
970: Fix coalescing of descriptor sets r=grovesNL a=kvark

**Connections**
Fixes https://github.com/gfx-rs/wgpu-rs/issues/592

**Description**
I forgot that all the descriptors in a write have to be the same type and visibility. This should be fixed now.

**Testing**
Tested on wgpu-rs examples, see https://github.com/gfx-rs/wgpu-rs/pull/593

Co-authored-by: Dzmitry Malyshau <kvark@fastmail.com>
2020-10-12 02:48:18 +00:00
Dzmitry Malyshau
56df63b122 Fix coalescing of descriptor sets 2020-10-11 22:47:41 -04:00
bors[bot]
f963193be1 Merge #966
966: Immediate resource destruction and freeing r=cwfitzgerald a=kvark

**Connections**
Fixes #964

**Description**
We are making it so a buffer or a texture can have their native resources freed while they are still referenced, so without waiting for GC.

In addition, the PR adds a few missing cases where error IDs should have been handled, like at render pass encoding.

**Testing**
Tested on wgpu-rs examples, see https://github.com/gfx-rs/wgpu-rs/pull/591

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-10-11 17:10:42 +00:00
Dzmitry Malyshau
c87a94f976 Early texture destruction 2020-10-08 23:21:11 -04:00
PENGUINLIONG
6f4508523a Pass [u8] instead of [u32] for push constants (#918)
* Pass [u8] instead of [u32] for push constants

Use 2-instruction aligner

Fixed alignment

Fixed offsets

Added alignment checks and fixed size

Use semantic constants

* Replaced all magic number with constant

* Fixed type cast
2020-10-08 23:13:18 -04:00
bors[bot]
7377552828 Merge #968
968: CI playtests for Dx12, Vulkan r=kvark a=DevOrc

**Connections**
#950

**Description**
Implements CI testing for Vulkan and DX12. Also, cargo test stdout will no longer be captured so that people can verify that the playtests actually ran. 

Note: If no adapters are found, nothing will run and the tests will pass. This might become a problem if the installation no longer works and no one notices. 

**Testing**
Passed CI Tests


Co-authored-by: Noah Charlton <ncharlton002@gmail.com>
2020-10-09 03:06:30 +00:00
Dzmitry Malyshau
c4c8e3b224 Early buffer destruction logic 2020-10-08 22:28:52 -04:00
Noah Charlton
5ff6b11daf CI playtests for Dx12, Vulkan 2020-10-08 17:17:16 -04:00
Dzmitry Malyshau
0a7d81351c Handle cases where buffer contents are destroyed 2020-10-08 12:57:17 -04:00
bors[bot]
8059c03273 Merge #962
962: Refactor and optimize bind group creation r=cwfitzgerald a=kvark

**Connections**
Fixes #960

**Description**
There is a small bag of things all related in here:
  1. It detects duplicate bindings in the `BindGroupDescriptor`. Previously, we compared the count, and formed the write array. If the expected bindings were [0, 1], and the given bindings were [0, 0], it would pass, erroneously. Now it properly errors out.
  2. It defers the *actual* descriptor set creation to after we iterate the bindings. This means any error would not make use leak descriptors any more.
  3. Finally, we form a single descriptor set write instead of having a write per binding. This is much more friendly to gfx-hal, which does the work per write, and should optimize bind group creation a bit.

**Testing**
Tested on wgpu-rs examples - https://github.com/gfx-rs/wgpu-rs/pull/589

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-10-07 20:15:25 +00:00
Dzmitry Malyshau
50594a747d Another small Naga update 2020-10-07 16:14:25 -04:00
Dzmitry Malyshau
0070bf703c Coalesce bindings into a single write 2020-10-07 16:14:25 -04:00
Dzmitry Malyshau
962e4dbaf7 Defer bind group creation to after validation 2020-10-07 16:14:25 -04:00
bors[bot]
aee0bead78 Merge #963
963: Add repr(C) on mapping structs r=trivial a=kvark

**Connections**
Required for https://phabricator.services.mozilla.com/D92636

**Description**
Allows C clients to avoid redefining those structs.

**Testing**
No need

Co-authored-by: Dzmitry Malyshau <dmalyshau@mozilla.com>
2020-10-06 17:37:45 +00:00
Dzmitry Malyshau
dc2d581c8d Add repr(C) on mapping structs 2020-10-06 13:36:17 -04:00
bors[bot]
b6e1170163 Merge #959
959: Only request features that are needed r=cwfitzgerald a=kvark

Core part of #958 for master

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-10-05 23:13:33 +00:00
Dzmitry Malyshau
45ade807cc Only request features that are needed 2020-10-05 14:51:32 -04:00
bors[bot]
1bac63c654 Merge #957
957: Enable RBA feature where available r=grovesNL a=kvark

**Connections**
Related to https://github.com/gpuweb/gpuweb/issues/955

**Description**
Until we have a better plan in place, enabling RBA is the least we can do.

**Testing**
Should work!


Co-authored-by: Dzmitry Malyshau <dmalyshau@mozilla.com>
2020-10-05 18:40:45 +00:00
Dzmitry Malyshau
0a67d6a7be Enable RBA feature where available 2020-10-05 10:21:39 -04:00
bors[bot]
bcb3162b2b Merge #947
947: Update naga with the new usage validation r=cwfitzgerald a=kvark

**Connections**
Includes https://github.com/gfx-rs/naga/pull/200, https://github.com/gfx-rs/naga/pull/203, https://github.com/gfx-rs/naga/pull/214, and others

**Description**
We get more comprehensive validation, which can sometimes be annoying :)

**Testing**
Tested on wgpu-rs examples.

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-10-01 16:05:42 +00:00
Dzmitry Malyshau
c18ac58fd8 Update naga with the new usage validation 2020-09-28 10:18:35 -04:00
bors[bot]
97d1a7eeb9 Merge #942
942: Fix clippy warnings about using if-let over match r=kvark a=lberrymage

The specific lint triggered was [clippy::single_match](https://rust-lang.github.io/rust-clippy/master/index.html#single_match).

**Description**
Details found in the link above

**Testing**
N/A


Co-authored-by: lberrymage <mageelog@gmail.com>
2020-09-28 13:05:36 +00:00
lberrymage
41228ef1a4 Fix clippy warnings about using if-let over match
The specific lint triggered was
https://rust-lang.github.io/rust-clippy/master/index.html#single_match.
2020-09-25 23:02:51 -08:00
bors[bot]
49cf466dc4 Merge #941
941: Use self where possible r=kvark a=adamnemecek



Co-authored-by: Adam Nemecek <adamnemecek@gmail.com>
2020-09-26 03:13:22 +00:00
Adam Nemecek
db1870e7fc use self 2020-09-25 19:11:46 -07:00
bors[bot]
645c121dda Merge #940
940: Fixed typo in texture size check r=kvark a=Fruup

**Connections**
https://github.com/gfx-rs/wgpu/issues/937

**Description**
The texture's depth was omitted in the check.

**Testing**
No tests needed.


Co-authored-by: Leon Scherer <scherer-leon@web.de>
2020-09-25 13:28:58 +00:00
Leon Scherer
1fecbe18ed Fixed typo in texture size check 2020-09-25 14:21:38 +02:00
bors[bot]
a56f9949ec Merge #938
938: Remove erroneous extra feature check r=kvark a=cwfitzgerald

**Connections**

None, found during investigation of DI issue.

**Description**

This line of code just shows up twice in a row, checking the same feature and setting the same feature.

**Testing**

Untested, but shouldn't affect anything.


Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
2020-09-24 13:18:04 +00:00
bors[bot]
cc169af549 Merge #935
935: Properly implement compute pass usage scopes r=cwfitzgerald a=kvark

**Connections**
Fixes #934 
Closes #933

**Description**
The old barriers in a compute pass were totally wrong. They didn't combine usages across the bind groups, or with indirect buffer.
This change implements the *actual* semantics as seen by the spec. At dispatch time we gather the usages across bind groups needed by the active pipeline, possibly add the indirect buffer into the mix, and that combined used is what we transition into.

I think we can find a few interesting ideas on how to make this faster. In particular - how to avoid a separate `TrackerSet` per pass. But for now correctness is more important.

**Testing**
Tested on wgpu-rs examples

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-09-23 23:09:06 +00:00
Dzmitry Malyshau
0345c56758 Properly implement compute pass usage scopes 2020-09-23 19:01:47 -04:00
Connor Fitzgerald
a9750f83bc Remove erroneous extra feature check 2020-09-23 18:13:54 -04:00
bors[bot]
e72724a6e3 Merge #936
936: Prevent an invalid texture from being registered in device_create_texture r=kvark a=kunalmohan

**Connections**
_Link to the issues addressed by this PR, or dependent PRs in other repositories_

**Description**
_Describe what problem this is solving, and how it's solved._
Since we checked the usage of a `Feature` in `device_create_texture()` after registering the new `Id`, there could be a case where it returns an error after registering the texture as a valid one, which further panics when the client tries to register it as an `error_id`.

To solve this, the check for the usage of a `Feature` is now done before registering the new `Id`.

**Testing**
_Explain how this change is tested._
Tested with wgpu-rs examples and CTS in Servo.
<!--
Non-trivial functional changes would need to be tested through:
  - [wgpu-rs](https://github.com/gfx-rs/wgpu-rs) - test the examples.
  - [wgpu-native](https://github.com/gfx-rs/wgpu-native/) - check the generated C header for sanity.

Ideally, a PR needs to link to the draft PRs in these projects with relevant modifications.
See https://github.com/gfx-rs/wgpu/pull/666 for an example.
If you can add a unit/integration test here in `wgpu`, that would be best.
-->


Co-authored-by: Kunal Mohan <kunalmohan99@gmail.com>
2020-09-22 20:28:29 +00:00
Kunal Mohan
485dab9a52 Prevent an invalid texture from being registered in device_create_texture 2020-09-23 00:30:50 +05:30
bors[bot]
a0cef40550 Merge #928
928: Reverts the addition of LabeledContextError r=kvark a=scoopr

Removed as discussed, moving them to wgpu-rs side


Co-authored-by: Mikko Lehtonen <scoopr@iki.fi>
2020-09-14 20:11:12 +00:00
Mikko Lehtonen
8252758674 Reverts the addition of LabeledContextError
Removed as discussed, moving them to wgpu-rs side
2020-09-14 22:45:10 +03:00
Kunal Mohan
d423d3d5d7 Allow dropping of error resources (#925)
* Allow dropping of error resources

* Unregister error resources without panic
Panic when removing Vacant element or when index is out of range

* address review comments
2020-09-13 21:17:53 -04:00
bors[bot]
43adcbcf68 Merge #926
926: Update naga with new image API r=cwfitzgerald a=kvark

**Connections**
Gets us https://github.com/gfx-rs/naga/pull/187, https://github.com/gfx-rs/naga/pull/185, https://github.com/gfx-rs/naga/pull/182, partially https://github.com/gfx-rs/naga/pull/169, and https://github.com/gfx-rs/naga/pull/167

**Description**
Brings us to a point where all wgpu-rs shaders are successfully validated 🎉 

**Testing**
wgpu-rs examples

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-09-13 03:59:44 +00:00
Dzmitry Malyshau
6a3c106cc4 Update naga with new image API 2020-09-11 12:34:20 -04:00
bors[bot]
f6f7210b63 Merge #924
924: Unlock nightly builds on CI r=kvark a=kvark

See https://github.com/Xudong-Huang/generator-rs/issues/24

Co-authored-by: Dzmitry Malyshau <dmalyshau@mozilla.com>
2020-09-10 15:07:13 +00:00
Dzmitry Malyshau
fc27920fde Unlock nightly builds on CI 2020-09-10 11:04:24 -04:00
bors[bot]
2972212d42 Merge #921
921: add `polygon_mode: PolyonMode` to `RasterizationStateDescriptor` to allow drawing wireframes r=kvark a=manuel-woelker

**Description**
This adds `polygon_mode: PolyonMode` to `RasterizationStateDescriptor` to allow drawing in wireframes and point mode

I added `hal::Features::NON_FILL_POLYGON_MODE` to the `wishful_features` in `instance.rs`. I don't know what side effects this might have.

**Testing**
Tested locally on my Windows machine with Vulkan backend.

Co-authored-by: Manuel Woelker <github@manuel.woelker.org>
2020-09-09 19:50:33 +00:00
Manuel Woelker
336d070b26 add polygon_mode: PolyonMode to RasterizationStateDescriptor to allow drawing wireframes 2020-09-09 21:34:37 +02:00
bors[bot]
8db3af7286 Merge #922
922: Add LabeledContextError r=kvark a=scoopr

Purpose for this is to add more context to an error.
create_render_pipeline error is improved, by showing the action
(creating render pipeline) and the user provided label, to aid with
the investigation.

Example error
before:
```
wgpu error: Validation error

Caused by:
    error in stage VERTEX: unable to find an entry point matching the Vertex execution model

thread 'main' panicked at 'Handling wgpu errors as fatal by default', src/backend/direct.rs:1457:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
```

after:
```
wgpu error: Validation error

Caused by:
    Creating render pipeline (label: Some("hello-triangle pipeline"))
    error in stage VERTEX
    unable to find an entry point matching the Vertex execution model

thread 'main' panicked at 'Handling wgpu errors as fatal by default', src/backend/direct.rs:1457:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
```

Co-authored-by: Mikko Lehtonen <scoopr@iki.fi>
2020-09-09 17:56:10 +00:00
Mikko Lehtonen
2fb8fc34d2 Add LabeledContextError
Purpose for this is to add more context to an error.
create_render_pipeline error is improved, by showing the action
(creating render pipeline) and the user provided label, to aid with
the investigation.
2020-09-08 17:44:53 +03:00
bors[bot]
730313177e Merge #923
923: Fix invalid mip level count check r=kvark a=benfrankel

**Connections**
Fixes https://github.com/gfx-rs/wgpu/issues/894
Continues from https://github.com/gfx-rs/wgpu/pull/893

**Description**
Invalid mip level counts are allowed through `Device::create_texture`, triggering Vulkan validation errors. A fix was applied in https://github.com/gfx-rs/wgpu/pull/893, but the fix needs a minor correction to work properly.

Also added back the `MAX_MIP_LEVELS` check, because it's technically possible for `MAX_MIP_LEVELS` to be less than `kind.compute_num_levels()`, e.g. if one of the given dimensions is very big (2^16). 

Error message is updated to reflect the change in behavior: there are now three ways for a mip level count to be invalid: it's equal to zero; it's greater than `MAX_MIP_LEVELS`; or it's greater than the largest mip level count allowed for the given size.

**Testing**
Tested by manually modifying the `mipmap` example in `wgpu-rs` to pass various edge case values for `size` and `mip_level_count`.


Co-authored-by: Ben Frankel <ben.frankel7@gmail.com>
2020-09-08 12:20:50 +00:00
Ben Frankel
2ee07a2a47 Fix invalid mip level count check 2020-09-07 16:49:06 -07:00
Dzmitry Malyshau
68bf10a3a5 Fix invalidated segment of the staging memory 2020-09-06 20:37:03 -04:00
bors[bot]
5cfdd4a135 Merge #920
920: Don't bind groups that aren't expected by the layout  r=grovesNL a=kvark

**Connections**
Sibling of #919 for master.

**Description**

**Testing**
In addition to the fix itself, this comes with a new regression playtest!

Co-authored-by: Dzmitry Malyshau <dmalyshau@mozilla.com>
2020-09-06 02:22:02 +00:00
Dzmitry Malyshau
eed8bf84ef Playtest for binding a group 2020-09-04 23:47:24 -04:00
Dzmitry Malyshau
1886149cae Don't bind groups that aren't expected by the layout 2020-09-04 23:47:24 -04:00