Commit Graph

3231 Commits

Author SHA1 Message Date
Dzmitry Malyshau
b9d18a1699
Remove bors config (#1759) 2021-08-03 11:57:55 -04:00
Dzmitry Malyshau
50da3f33ba
Merge pull request #1758 from kvark/windows-error
Fix error with resolver=1 on non-Windows
2021-08-03 11:52:54 -04:00
Mikko Lehtonen
78e4cd5dbc Remove AsDisplay trait in error formatting 2021-08-03 11:51:52 -04:00
Mikko Lehtonen
019dca3cfa Error formatting impls closer to errors
This is achieved by making a ErrorFormatter helper that is passed to
fmt_pretty, making the impls a lot simpler.
2021-08-03 11:51:52 -04:00
Mikko Lehtonen
e4cdddc639 Move error formatting to wgpu-core 2021-08-03 11:51:52 -04:00
Connor Fitzgerald
11d31d5377
Merge pull request #1753 from euclio/wiki-link
update link to wgpu users wiki
2021-08-01 19:56:59 -04:00
Connor Fitzgerald
61b1a36225
Merge pull request #1754 from katharostech/bytemuck-hello-compute-output
Use Bytemuck to Cast Hello Compute Output
2021-08-01 19:56:36 -04:00
Zicklag
70093eca9e Use Bytemuck to Cast Hello Compute Output
This makes the cast of the output data in the hello-compute example
easier to read and it matches the way we cast the input data as well.
2021-08-01 16:23:14 -05:00
Andy Russell
2163d90c76
update link to wgpu users wiki 2021-08-01 17:11:19 -04:00
Connor Fitzgerald
5c9f1ad319
Merge pull request #1749 from euclio/wiki-link
update link to WebGPU wiki
2021-08-01 02:33:28 -04:00
Andy Russell
943e2ace99
update link to WebGPU wiki 2021-08-01 02:07:55 -04:00
Connor Fitzgerald
bbeb30a2c9
Merge pull request #1745 from katharostech/new-clippy-lints
Fix New Clippy Lints From Rust 1.54.0
2021-07-29 18:27:18 -04:00
Zicklag
07cd75a36b Fix New Clippy Lints From Rust 1.54.0
Fixes a number of new lints introduce in the updated clippy that
CI is now using.
2021-07-29 16:29:46 -05:00
bors[bot]
7c4ab4e611
Merge #1739
1739: Run Reftests on WARP r=kvark a=cwfitzgerald

**Connections**

#1551.

**Description**

All the segmentation faults on linux, none of them on windows.

**Testing**

It is!


Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
2021-07-29 13:34:17 +00:00
Connor Fitzgerald
b2080bf2ad
Add --no-fail-fast to CI 2021-07-29 09:24:07 -04:00
Connor Fitzgerald
ebf049bcee
Adjust limits for WARP on CI 2021-07-29 09:24:07 -04:00
Connor Fitzgerald
3c8de92ba0
Run reftests on WARP 2021-07-29 09:24:03 -04:00
bors[bot]
c1a305c006
Merge #1744
1744: hal/dx12: fix depth formats and pipeline layout r=kvark a=kvark

**Connections**
Closes #1727

**Description**
There were 2 problems. One was that the reversing of the pipeline layout was done wrong (again). I don't know how it still worked on one of my machines :/
The other was that the backend relied on the depth format reinterpretation without using a typeless format. This is OK on higher-level platforms, but we should be doing it more careful. I tried to approach this maximally efficient: we only use the typeless format if all of the following are true:
  1. it's a depth/stencil format
  2. it needs to be seen as SRV/UAV

So in the case of a simple depth texture, we are still going to be using a fully-qualified format, and therefore get all of the benefit of HW compression on it.

**Testing**
Ran the examples on Intel


Co-authored-by: Dzmitry Malyshau <dmalyshau@mozilla.com>
2021-07-29 05:15:43 +00:00
Dzmitry Malyshau
3a004ecf9a hal/dx12: fix depth formats and pipeline layout 2021-07-29 01:13:37 -04:00
bors[bot]
b79c910b0f
Merge #1741
1741: Improve Docs for DownlevelFlags r=cwfitzgerald a=zicklag

**Connections**
None

**Description**
Clarifies the documentation on the `DownlevelFlags`, and wraps the documentation of some of the flags to 100 chars.

**Testing**
Tested on Ubuntu 20.04


Co-authored-by: Zicklag <zicklag@katharostech.com>
2021-07-29 00:05:59 +00:00
Zicklag
88c58d2b20 Improve Docs for DownlevelFlags 2021-07-28 19:00:43 -05:00
bors[bot]
258e685ecb
Merge #1742
1742: Mention WGPU_ADAPTER_NAME Env Var in WGPU README r=cwfitzgerald a=zicklag

**Connections**
None

**Description**
Mentions the new `WGPU_ADAPTER_NAME` environment variable in the WGPU readme.

**Testing**



Co-authored-by: Zicklag <zicklag@katharostech.com>
2021-07-28 20:13:58 +00:00
Zicklag
89b1dbcb5a Mention WGPU_ADAPTER_NAME Env Var in WGPU README 2021-07-28 14:08:44 -05:00
bors[bot]
efba648c35
Merge #1737
1737: Use Bitshift Style for All Bitflag Consts r=cwfitzgerald a=zicklag

**Connections**
None exactly, but somewhat related to https://github.com/gfx-rs/wgpu/pull/1686 as I was going to put some of this change into that PR, but am splitting it out for ease of review.

**Description**
This is purely code-style related, but it makes it easier to read bitflag constants and much eaiser to add bitflags in the future.

**Testing**
Tested on Ubuntu 20.04


Co-authored-by: Zicklag <zicklag@katharostech.com>
2021-07-28 16:31:50 +00:00
Zicklag
fd460fa1e4 Use Bitshift Style for All Bitflag Consts
This makes existing bitflags easier to read and makes it eaiser to add
new flags later.
2021-07-28 11:28:54 -05:00
bors[bot]
b8d5c9d9ac
Merge #1738
1738: Rename texture usage names according to binding r=kvark a=kvark

**Connections**
Matches https://github.com/gpuweb/gpuweb/pull/1989

**Description**
The `SAMPLED` usage name was confusing because integer and MSAA textures can't be sampled (with a sampler), but fetching data from them is under this usage.

**Testing**
No need


Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2021-07-28 04:22:21 +00:00
Dzmitry Malyshau
552a5f138e Rename texture usage names 2021-07-28 00:17:54 -04:00
bors[bot]
5c2461fd53
Merge #1722
1722: Document coordinate systems in README r=cwfitzgerald a=MichaelMMacLeod

I had to do a bit of digging to find information about coordinate systems in
wgpu (asking on Matrix). This commit adds a table of coordinate systems to help
clarify the issue.

The table comes from the DX12 backend documentation of gfx-rs:
https://github.com/gfx-rs/gfx/tree/master/src/backend/dx12

**Connections**
(none)

**Description**
It was difficult for me to find information about what coordinate systems wgpu uses. This commit addresses this issue by adding documentation about wgpu's coordinate systems to the README.

**Testing**
This is purely a documentation change (I have written no tests).

If you want to see how the table looks on Github, check out my fork at https://github.com/MichaelMMacLeod/wgpu/tree/add-coords-to-readme


Co-authored-by: Michael MacLeod <michaelmmacleod@gmail.com>
2021-07-28 03:51:16 +00:00
bors[bot]
451cd217bb
Merge #1729
1729: Handle Multi-threaded EGL Context Access r=cwfitzgerald,kvark a=zicklag

**Connections**
https://github.com/gfx-rs/wgpu/discussions/1630, https://github.com/bevyengine/bevy/issues/841

**Description**
Implements the synchronization necessary to use the GL backend from multiple threads. Accomplishes this by using a mutex around the GL context with extra wrapping to bind and unbind the EGL context when locking and unlocking.

**Testing**
Tested on Ubunty 20.04 with a fork of the Bevy game engine and the WGPU examples ( not that the examples test the multi-threading ).

## Remaining Issues

There is only one Bevy example I cannot get to run yet and it's the `load_gltf` example. It fails with a shader translation error:

```
Jul 26 20:36:50.949 ERROR naga:🔙:glsl: Conflicting samplers for _group_3_binding_10    
Jul 26 20:36:50.950  WARN wgpu::backend::direct: Shader translation error for stage FRAGMENT: A image was used with multiple samplers    
Jul 26 20:36:50.950  WARN wgpu::backend::direct: Please report it to https://github.com/gfx-rs/naga    
Jul 26 20:36:50.950 ERROR wgpu::backend::direct: wgpu error: Validation Error

Caused by:
    In Device::create_render_pipeline
    Internal error in FRAGMENT shader: A image was used with multiple samplers
```

Interestingly, I think the shader in question doesn't have a `group(3), binding(10)` anywhere that I know of so I'm going to have to drill down a bit more and find out exactly which shader translation is failing more.

This could potentially be fixed in a separate PR. I think the rest of this PR is rather straight-forward and the fix for the error above is probably mostly unrelated to the primary changes made in this PR.

Co-authored-by: Zicklag <zicklag@katharostech.com>
2021-07-27 19:43:12 +00:00
Zicklag
671e393fa1 Handle Multi-threaded EGL Context Access
Implements the synchronization necessary to use the GL backend from
multiple threads.
2021-07-27 14:02:39 -05:00
bors[bot]
9ce884c384
Merge #1732
1732: Fix Tests on DX12/GL r=kvark a=cwfitzgerald

**Connections**

Marks #1730 as known failure

Closes #1695

**Description**

This fixes up tests on both DX12 and GL

**Testing**

Tests


Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
2021-07-27 13:10:45 +00:00
bors[bot]
2940347ba3
Merge #1731
1731: hal/dx12: support base vertex/instance r=cwfitzgerald a=kvark

**Connections**
Fixes #1725
Depends on https://github.com/gfx-rs/naga/pull/1141, https://github.com/gfx-rs/d3d12-rs/pull/34, and https://github.com/gfx-rs/d3d12-rs/pull/35 (thanks `@msiglreith` for quick reviews!).

**Description**
We allocate one root parameter covering the special constant buffer view with root constants. We set the root constants for each draw, but only on change.

This PR does *not* handle the indirect case. I'll follow-up with this.

**Testing**
Not thoroughly tested, but `@cwfitzgerald` already implemented a test for this, and this PR enables it on DX12.
Also, examples still seem to work :)


Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2021-07-27 13:01:30 +00:00
Dzmitry Malyshau
69f808c54a hal/dx12: support base vertex/instance 2021-07-27 08:59:41 -04:00
Connor Fitzgerald
d6a8ab7b34
Allow vertex_storage_textures to be 0 2021-07-27 02:37:15 -04:00
Connor Fitzgerald
eb33efb110
Mark WARP as known failure on water 2021-07-27 02:15:46 -04:00
bors[bot]
6cfe8bdb28
Merge #1724
1724: hal/dx12: compact register allocation, naga update r=kvark a=kvark

**Connections**
Heavily depends on https://github.com/gfx-rs/naga/pull/1136

**Description**
Makes DX12 to run all of the examples 🎉 .

**Testing**
Re-enables DX12 in `PRIMARY` set, which also enables the reference tests on it.

![wgpu-dx12-shadow](https://user-images.githubusercontent.com/107301/126940717-aefad5b2-1eba-4523-ba6a-53a5744ba313.JPG)



Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2021-07-26 06:14:05 +00:00
Dzmitry Malyshau
405cf57955 hal/dx12: compact register allocation, naga update 2021-07-26 02:01:14 -04:00
bors[bot]
3eb3eed8cf
Merge #1609
1609: [Vulkan] Initialize wgpu objects from raw handles r=kvark a=zarik5

**Connections**
This PR is a successor of https://github.com/gfx-rs/gfx/pull/3762

**Description**
The `handle_is_external` flag mechanism was not enough to ensure safety, when for example the Instance is wrapped in `Arc<>` and a library cannot keep track of all its clones. This is the case with the bevy render rewrite. The solution was to let wgpu be in charge of destroying the handles, but it also has to keep a reference to a "drop guard" which is always dropped after the handle is destroyed. For the OpenXR integration, this drop guard will be `xr::Instance`.

For now this is just a proof of concept. Only instance creation is handled, and there is even type error in `wgc::Instance::from_hal()`.

I have a few concerns:
* Is it ok to expose `hal::Instance` from the wgpu crate? Or should the user pass all the parameters so `hal::Instance` can be constructed internally? This second options is more disruptive, since the wgpu-types crate would need to import all platform-specific crates to define the structure/enum to hold the raw handles.
* Without counting the call to create the `hal::Instance`, there are 4 indirection calls to save the raw instance. Can this be optimized in any way?

Do you think it is possible to merge wgpu-hal into wgpu-core? This could help with reducing the distance from the surface level API to the platform specific APIs even more.

**Testing**
Vulkan/Android (Oculus Quest) using [this sample](https://github.com/zarik5/openxrs/blob/wgpu-test/openxr/examples/vulkan.rs).


Co-authored-by: Riccardo Zaglia <riccardo.zaglia5@gmail.com>
2021-07-26 05:03:13 +00:00
bors[bot]
ee9e1452d5
Merge #1717
1717: Work Around Fastclear Bug for Web and Native GL r=cwfitzgerald,kvark a=zicklag

**Connections**
Resolves #1627 

**Description**
Works around Mesa fastclear bug by doing a manual shader clear on effected platforms

**Testing**
Tested on Mesa Intel(R) UHD Graphics (CML GT2) (Gl)


Co-authored-by: Zicklag <zicklag@katharostech.com>
2021-07-26 04:57:17 +00:00
Riccardo Zaglia
2657849977 [Vulkan] Initialize wgpu objects from raw handles 2021-07-25 21:51:40 +02:00
Zicklag
0a66eef822 Work Around Fastclear Bug for Web and Native GL 2021-07-24 15:36:49 -05:00
Michael MacLeod
fd33ac36d4
Document coordinate systems in README
I had to do a bit of digging to find information about coordinate systems in
wgpu (asking on Matrix). This commit adds a table of coordinate systems to help
clarify the issue.

The table comes from the DX12 backend documentation of gfx-rs:
https://github.com/gfx-rs/gfx/tree/master/src/backend/dx12

Remove trailing newlines from README

Host coordinate images locally
2021-07-24 13:17:04 -07:00
bors[bot]
dd1be1ff62
Merge #1721
1721: Tweak Water Example to Show Off Water Shader a bit More r=cwfitzgerald a=zicklag

**Connections**
None

**Description**
Tweaks the water shader example terain and camera to show off the cool water shader a little bit more. 😄


https://user-images.githubusercontent.com/25393315/126842645-e353c0eb-57fc-4b8e-9e0d-901f08c7e9f7.mp4



**Testing**
Tested on vulkan and GL on linux.


Co-authored-by: Zicklag <zicklag@katharostech.com>
2021-07-24 20:16:51 +00:00
Zicklag
7fab8e213c Tweak Water Example to Show Off Water Shader More 2021-07-24 15:04:42 -05:00
bors[bot]
d5a477fe60
Merge #1719
1719: hal/dx12: pass null to mapping rects r=kvark a=kvark

**Connections**
See https://github.com/baldurk/renderdoc/issues/2323

**Description**
Passing NULL rects is better for tooling, as it turns out.

**Testing**
Ran the examples


Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2021-07-23 16:24:12 +00:00
Dzmitry Malyshau
2158cdd43b hal/dx12: pass null to mapping rects 2021-07-23 12:19:59 -04:00
bors[bot]
5dd3f6ba6b
Merge #1710
1710: Check render bundle encoding for RODS r=cwfitzgerald a=kvark

**Connections**
Matches https://github.com/gpuweb/gpuweb/pull/1979

**Description**
Allows render bundles to be encoded for RODS.
In addition, validates that bundle RODS matches the pass RODS when executing. This part of the spec isn't written yet, and it's safer to be on the strict side.

**Testing**
Untested


Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2021-07-23 15:36:32 +00:00
Dzmitry Malyshau
52734bf87a Fix tracing feature for RODS 2021-07-23 11:33:22 -04:00
Dzmitry Malyshau
34b68121c6 Check bundle RODS against pass RODS 2021-07-23 11:24:05 -04:00
Dzmitry Malyshau
bb218c1580 Check render bundle encoding for RODS 2021-07-23 11:24:05 -04:00