Commit Graph

2761 Commits

Author SHA1 Message Date
Dzmitry Malyshau
6714c4fe7e Update players readme 2020-11-05 16:58:40 -05:00
bors[bot]
6d8dfaca84 [rs] Merge #606
606: Enable GL backend r=kvark a=kvark

Replaces #182
Depends on https://github.com/gfx-rs/wgpu/pull/907

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-11-05 04:13:45 +00:00
bors[bot]
4d378d6315 [rs] Merge #605
605: Enable X11 Support for the GL Backend r=kvark a=zicklag



Co-authored-by: Zicklag <zicklag@katharostech.com>
2020-11-05 04:05:27 +00:00
Dzmitry Malyshau
58d2b36d13 [rs] Enable GL backend 2020-11-04 23:02:01 -05:00
bors[bot]
99ff41bb99 Merge #907
907: Implement OpenGL Backend For Unix Platforms r=kvark a=zicklag

**Connections**
Requires: https://github.com/gfx-rs/gfx/pull/3340 ( merged )
Should be merged first: https://github.com/gfx-rs/wgpu/pull/910
Works towards: https://github.com/gfx-rs/wgpu/issues/450

**Description**
Integrates the GFX GL backend for Unix platforms

**Testing**
Runs the basic cube and triangle examples  for wgpu-rs, but not without rendering artifacts on the cube.
<!--
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: Zicklag <zicklag@katharostech.com>
2020-11-05 02:54:37 +00:00
Zicklag
f7f1ff699a Implement OpenGL Backend For Unix Platforms 2020-11-04 20:32:33 -06:00
Zicklag
cd2e2cc61e [rs] Enable X11 Support for the GL Backend 2020-11-03 16:14:58 -06:00
Zicklag
7beb7c3411 Update For Latest GFX
Using a specific Git commit for now because it is unreleased.
2020-11-02 20:25:07 -06:00
Zicklag
165d7717b4 Add Error Message When Surface Creation Fails 2020-11-02 20:24:30 -06:00
bors[bot]
7b9abf0fef Merge #1008
1008: Add helpers to convert passes to serialized forms r=grovesNL a=kvark

**Connections**
Stuff I needed to fix in the upcoming Gecko WebGPU update.

**Description**
It allows us to use the tracing `Command` more aggressively.

**Testing**
Tested in Gecko, doesn't need testing in wgpu

Co-authored-by: Dzmitry Malyshau <dmalyshau@mozilla.com>
Co-authored-by: Dzmitry Malyshau <kvark@fastmail.com>
2020-11-02 23:15:03 +00:00
Dzmitry Malyshau
367735d085 Rename the lint to broken_intra_doc_links 2020-11-02 18:00:56 -05:00
bors[bot]
dd4a71d31d Merge #1012
1012: Check array layer counts r=cwfitzgerald a=kvark

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

**Description**
Follows the spec, yo!

**Testing**
Not tested, but not terribly complicated either.

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-10-31 00:51:06 +00:00
Dzmitry Malyshau
5e1e3314cd Check array layer counts 2020-10-30 17:31:43 -04:00
Dzmitry Malyshau
6e3c7b359f Add missing license headers 2020-10-28 13:40:41 -04:00
Dzmitry Malyshau
a168886497 Add helpers to convert passes to serialized forms 2020-10-27 13:19:05 -04:00
bors[bot]
c6c50e9670 Merge #1007
1007: Improve cubemap validation r=kvark a=cwfitzgerald

**Connections**

Closes #952.

**Description**

We were missing depth-size and texture dimension validation when creating Cubemap and CubemapArray views.

I split the depth-size errors so I can give a more helpful error message in both cases.

**Testing**

Tested on the skybox example when made intensionally incorrect.

Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
2020-10-26 03:16:31 +00:00
Connor Fitzgerald
dcc14fe645 Improve cubemap validation 2020-10-25 17:14:14 -04:00
bors[bot]
6c519e0d92 Merge #1000
1000: Elide redundant set_pipeline calls. r=kvark a=Kimundi

**Description**
This adds an check in each `set_pipeline()` call for wether the same pipeline id has already been set previously. This should cause free performance wins for suboptimal usage of the wgpu API, while having neglible overhead otherwise.

An example scenario for where this would be useful is a game that just blindly sets all render state for each object, but has few actually different objects:

```rust
for game_obj in game_objs {
    rpass.set_pipeline(...);
    rpass.set_bind_group(...);
    rpass.set_vertex_buffer(...);
    rpass.draw(...);
}
```

**Testing**
Ideally we would have tests that check that pipeline changes have been ellided, but I'm not sure how to write them in the current codebase.

**Future work**
- We could extend this kind of redundant state change detection to most `.set_*` methods on `RenderPass`es.
- If we want to guarantee this behavior in the API, we should also document it.

Co-authored-by: Marvin Löbel <loebel.marvin@gmail.com>
2020-10-22 17:18:24 +00:00
bors[bot]
bcaae6a962 [rs] Merge #598
598: Clarify docs for Queue::write methods r=kvark a=Kimundi



Co-authored-by: Marvin Löbel <loebel.marvin@gmail.com>
2020-10-22 16:17:26 +00:00
Marvin Löbel
9073d18c70 [rs] Clarify docs for Queue::write methods 2020-10-22 17:40:23 +02:00
bors[bot]
464571ac1f Merge #998
998: Fix regression in device_create_swap_chain r=kvark a=qthree

**Description**
My app works fine with wgpu 0.6 but after upgrade to master branch of `wgpu-rs` it started to panic inside `Device::create_swap_chain`.

**Repro steps**
That happens when there are at least 3 windows opened right after app's startup. My [viewports](https://github.com/qthree/viewports) crate can reproduce this issue. Steps:
```
git clone -b wgpu-master https://github.com/qthree/viewports
cd viewports
RUST_BACKTRACE=1 cargo run --example wgpu --all-features
```
First run is OK, but if you drag two "virtual" windows out of native window and then restart app, it panics.

**Connections**
It's caused by the new behavior of `hub::Storage::remove` introduced in #925, it panics while trying to remove Element::Vacant.

**Proposed solution**
Previously `Storage::remove` returned `None` on `Element::Vacant` and this behavior was expected by `device::Global::device_create_swap_chain`. At least, [this code](8ce2530b69/wgpu-core/src/device/mod.rs (L3561)) doesn't look like it should panic implicitly.
After #925 `device::Global::device_create_swap_chain` was changed to use new `Storage::try_remove`, and it takes into account out of range access, but panics on Element::Vacant.
Since that's the only place where `Storage::try_remove` is used, i changed this function's body back to the body of old `Storage::remove`, and left new `Storage::remove` as is, because it's used in other places.

**Testing**
Since `Storage::try_remove` is used only in one place, `device::Global::device_create_swap_chain`, there shouldn't be any impact on another pieces of code. Also, function code is as same as on stable wgpu 0.6, so there shouldn't be any new bugs. Still, this fixed  regression encountered by me, and `cargo test` of `wgpu-core` is passing.
I'm not sure if I should add unit test to cover this case, to save it from regressions in future (and what meaningful test would look like).

**Alternatives**
Don't call `Storage::try_remove` if it's first swapchain creation for surface. Probably, by checking id returned by `surface_id.to_swap_chain_id(B::VARIANT)` with `Storage::contains`. But `Storage::contains` will panic on out of range id.

Co-authored-by: qthree <qthree3@gmail.com>
2020-10-22 14:54:36 +00:00
Dzmitry Malyshau
c230988caa Add repr(C) on copy views 2020-10-21 16:39:27 -04:00
Marvin Löbel
752c1aad33 Elide redundant set_pipeline calls.
Add a small abstraction over state changes

Deduplicate redundant pipeline state checking
2020-10-21 19:25:21 +02:00
qthree
c3a5144ae0 Fix regression in device_create_swap_chain
It was caused by new behavior of Storage::remove.
2020-10-20 13:33:03 +07:00
Dzmitry Malyshau
8ce2530b69 Save an allocation of raw bindings in create_bind_group 2020-10-15 16:37:10 -04:00
bors[bot]
7ecd9b477f Merge #990
990: Simplify descriptor writes r=cwfitzgerald a=kvark

**Connections**
Reverts #980 and #970
Takes advantage of https://github.com/gfx-rs/gfx/pull/3410

**Description**
Weighting all the pros and cons, I figured it's easier to adjust the Vulkan backend a little than treating it as a lowest common denominator for this issue.

**Testing**
Tested on wgpu-rs examples (on Vulkan).

Co-authored-by: Dzmitry Malyshau <kvark@fastmail.com>
2020-10-15 20:19:20 +00:00
Dzmitry Malyshau
a4e8d58144 Update gfx-backend-vulkan to 0.6.4 2020-10-15 16:03:30 -04:00
Dzmitry Malyshau
6d40a81833 Revert "Fix coalescing of descriptor sets"
This reverts commit 56df63b122.
2020-10-15 15:53:26 -04:00
Dzmitry Malyshau
8a364d3c69 Revert "Group binding writes by wgt::BindingType"
This reverts commit 98c3de7884.
2020-10-15 15:52:58 -04:00
bors[bot]
3c801eeafa Merge #987
987: Align stencil reference flags between pipeline creation and setting r=cwfitzgerald a=kvark

Sibling of #986 for master

Co-authored-by: Dzmitry Malyshau <dmalyshau@mozilla.com>
2020-10-14 21:05:56 +00:00
Dzmitry Malyshau
150ee25c01 Align stencil reference flags between pipeline creation and setting 2020-10-14 16:54:15 -04:00
bors[bot]
3be2c452c4 Merge #982
982: Fix debug markers in render passes (#981) r=kvark a=kazimuth

Hey, that was easy. Didn't change anything in the debug groups markers / command pass markers, since afaict they work correctly.

I didn't add a test here because I'm not sure how to use the `player` testing apparatus, but I figure since I'm just adding a line of code that's already there for compute passes ([here](https://github.com/gfx-rs/wgpu/blob/master/wgpu-core/src/command/compute.rs#L452)) it should be alright. Let me know if there's anything else I should add.

Co-authored-by: James Gilles <jameshgilles@gmail.com>
2020-10-13 22:45:14 +00:00
bors[bot]
0f16fb096f Merge #984
984: Fix locking of device lifetime tracker on resource drop r=kvark a=kvark

**Connections**
Fixes the player hang in #983

**Description**
It turns out the current type-level protection from locking device's lifetime tracker is not working properly. TODO is left.

**Testing**
Tested on the trace from #983

Co-authored-by: Dzmitry Malyshau <dmalyshau@mozilla.com>
2020-10-13 22:38:58 +00:00
Dzmitry Malyshau
ecbf81f4c9 Fix locking of device lifetime tracker on resource drop 2020-10-13 18:37:20 -04:00
James Gilles
05c58e805b Fix garbled debug markers in render passes 2020-10-13 17:34:25 -04:00
bors[bot]
1a556facab [rs] Merge #596
596: Update wgpu with another bind group fix, updated power preference r=kvark a=kvark

Includes https://github.com/gfx-rs/wgpu/pull/973 and https://github.com/gfx-rs/wgpu/pull/980

Co-authored-by: Dzmitry Malyshau <dmalyshau@mozilla.com>
2020-10-13 20:58:27 +00:00
Dzmitry Malyshau
c115aed4cc [rs] Update wgpu with another bind group fix, updated power preference 2020-10-13 16:57:52 -04:00
bors[bot]
7ac706f0a9 Merge #980
980: Group binding writes by wgt::BindingType r=cwfitzgerald a=kvark

**Connections**
Follows up https://github.com/gfx-rs/wgpu/pull/970
Fixes #979

**Description**
The problem was that Vulkan restriction applies to its own descriptor types, as specified in the layout. I originally interpret this as types specified in the descriptor set. So we erroneously considered `StorageTexture` and `SampledTexture` to be in the same descriptor write.

This PR makes it use the `wgt::BindingType` instead. It's a bit richer than Vulkan side, but still correct. We are just more conservative than we have to be.

I think gfx-hal API could be better here. Filed https://github.com/gfx-rs/gfx/issues/3408 to look more.

**Testing**
Tested on #979 test case (thanks!)

Co-authored-by: Dzmitry Malyshau <dmalyshau@mozilla.com>
2020-10-13 20:18:37 +00:00
Dzmitry Malyshau
98c3de7884 Group binding writes by wgt::BindingType 2020-10-13 16:06:50 -04:00
bors[bot]
42bb7ca65f [rs] Merge #594
594: Fix mipmap example which was y-flipped r=kvark a=Uriopass

Mipmap rendering was y-flipped, hence making one out of every two mipmaps wrong. See:

![image](https://user-images.githubusercontent.com/5420739/95760589-7eba1f80-0cab-11eb-8a5f-bfe9e228b480.png)

(look at the black dots)

Co-authored-by: Paris DOUADY <paris.douady@hotmail.fr>
2020-10-12 14:56:08 +00:00
bors[bot]
c933b9766a Merge #973
973: remove PowerPreference::Default r=kvark a=frbimo


**Connections**
Issue: #971 

**Description**
remove `PowerPreference::Default` and change related value to use `PowerPreference::LowPower` .
`PowerPreference::default()` is remain.

**Testing**
`cargo test` and `cargo build` passed


Co-authored-by: frbimo <fr.bimo@gmail.com>
2020-10-12 14:52:57 +00:00
Paris DOUADY
d66ffc2902 [rs] Fix mipmap example which was y-flipped 2020-10-12 16:51:24 +02:00
frbimo
fdd561e69e remove PowerPreference::Default
Signed-off-by: frbimo <fr.bimo@gmail.com>
2020-10-12 19:17:44 +08:00
Dzmitry Malyshau
5507e16718 [rs] Really fix the environment to WGPU_BACKEND this time 2020-10-11 23:43:39 -04:00
bors[bot]
a028a6f5d1 [rs] Merge #593
593: Update wgpu with push constants API r=kvark a=kvark

Includes https://github.com/gfx-rs/wgpu/pull/966, https://github.com/gfx-rs/wgpu/pull/969, and https://github.com/gfx-rs/wgpu/pull/970

Co-authored-by: Dzmitry Malyshau <kvark@fastmail.com>
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-10-12 03:20:17 +00:00
Dzmitry Malyshau
f6858fa109 [rs] Support WGPU_BACKEND environment in the examples 2020-10-11 23:17:38 -04:00
Dzmitry Malyshau
c92dbae57e [rs] Immediate resource destruction 2020-10-11 23:17:37 -04:00
Dzmitry Malyshau
d6843fca7b [rs] Update wgpu with push constants API 2020-10-11 23:17:37 -04:00
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