Commit Graph

1582 Commits

Author SHA1 Message Date
Dzmitry Malyshau
6a684e5cdf Don't build shader interface without the validation flag 2021-01-25 14:15:27 -05:00
Jonathan Behrens
a97ec9df91 Add SHADER_FLOAT64 feature (#1154)
* Add SHADER_FLOAT64 feature

* Also enable SHADER_FLOAT64 hal feature when creating the device

* Update wgpu-core/src/instance.rs

Co-authored-by: monocodus[bot] <49363530+monocodus[bot]@users.noreply.github.com>

* Add warning about 64-bit float performance

* Add (currently unsupported) VERTEX_ATTRIBUTE_64BIT feature

Co-authored-by: monocodus[bot] <49363530+monocodus[bot]@users.noreply.github.com>
2021-01-24 21:59:09 -05:00
bors[bot]
ab6af6ed4f Merge #1167
1167: Remove temporary allocation for gpu-descriptor r=kvark a=kvark

This is no longer needed as https://github.com/zakarumych/gpu-descriptor/pull/10 is merged

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2021-01-24 17:25:23 +00:00
Dzmitry Malyshau
6538ac5d26 Remove temporary allocation for gpu-descriptor 2021-01-24 12:24:37 -05:00
bors[bot]
0e68554c52 Merge #1164
1164: Update naga to gfx-7 r=kvark a=kvark

**Connections**
Includes https://github.com/gfx-rs/gfx/pull/3612

**Description**
Carries a bunch of important Naga improvements.

**Testing**
Just local playtests

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2021-01-24 03:18:39 +00:00
Dzmitry Malyshau
952ccbcf85 Update naga to gfx-7 2021-01-23 22:17:09 -05:00
bors[bot]
b23ece55e7 Merge #1163
1163: Bump gfx to latest master r=kvark a=mkeeter

**Connections**
- This bumps `gfx` to [#3610](https://github.com/gfx-rs/gfx/pull/3610), and also includes [#3608](https://github.com/gfx-rs/gfx/pull/3608) and [#3609](https://github.com/gfx-rs/gfx/pull/3608)
- [Here](https://github.com/gfx-rs/wgpu-native/pull/66) is a draft PR to `wgpu-native`
- `wgpu-rs` requires a one-line fix to the `texture_view_drop` call (which now takes a boolean); I can PR this next.

**Description**
This fixes [pathological shader complexity in SPIRV-Cross](https://github.com/KhronosGroup/SPIRV-Cross/pull/1594), as well as a few other `gfx` PRs.

**Testing**
I updated `wgpu-native` to use this branch, then updated my [toy raytracer](https://github.com/mkeeter/rayray) to use the resulting `dylibs` and confirmed that it no longer takes forever to compile the pathological shader.

In addition, I updated `wgpu-rs` and went through the examples; nothing seems out of place.

Co-authored-by: Matt Keeter <matt.j.keeter@gmail.com>
2021-01-23 16:57:10 +00:00
Matt Keeter
38b184428d Bump gfx to latest master 2021-01-22 08:58:51 -05:00
bors[bot]
7f52bea027 Merge #1161
1161: Fix replaying issues with dropped texture views r=urgent a=kvark

**Connections**
Fixes replaying of https://github.com/gfx-rs/wgpu/issues/1158#issuecomment-763272796

**Description**
The main fix is calling `maintain` in the player before getting the new view from the swapchain. That allows the device to properly remove the ID that is just about to be used.

**Testing**
Tested on that API trace.

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2021-01-20 03:06:20 +00:00
Dzmitry Malyshau
05bb482e49 Fix replaying issues with dropped texture views 2021-01-19 22:03:55 -05:00
bors[bot]
7c9e239a24 Merge #1160
1160: Update gpu-alloc and remove the associated locking r=kvark a=kvark

**Connections**
Takes advantage of https://github.com/zakarumych/gpu-alloc/pull/34

**Description**
This PR removes the locking from our gpu-alloc wrapper.

**Testing**
Untested

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2021-01-20 02:27:31 +00:00
Dzmitry Malyshau
5fccabf3b8 Update gpu-alloc and remove the associated locking 2021-01-19 20:59:50 -05:00
bors[bot]
e219f3b657 Merge #1157
1157: Handle read-only storage + sampled combination r=cwfitzgerald a=kvark

**Connections**
Fixes #724

**Description**
We now keep the internal use flags for sampled textures inside the view.

**Testing**
Untested

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2021-01-19 15:22:20 +00:00
Dzmitry Malyshau
618bd9e53a Handle read-only storage + sampled combination 2021-01-19 09:54:41 -05:00
bors[bot]
51539124de Merge #1156
1156: Update gfx to unborrowed APIs r=kvark a=kvark

**Connections**
Depends on https://github.com/gfx-rs/gfx/pull/3586
Depends on https://github.com/zakarumych/gpu-descriptor/pull/10

**Description**
Just an update.

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

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2021-01-19 05:35:17 +00:00
Dzmitry Malyshau
7f8c776a85 Update gfx to unborrowed APIs 2021-01-19 00:33:45 -05:00
bors[bot]
14d1a4f222 Merge #1155
1155: fix the size checks in transfer buffer to image commands r=cwfitzgerald a=Vengarioth

**Connections**
_none_

**Description**
It's fixing a trivial bug in which Extend3d was checked against a with of 0 two times, presumably instread checking depth as well.

**Testing**
Ran the tests and ran it with bevy - still worked.



Co-authored-by: Vengarioth | Andreas Fischer <opensource@deviru.de>
2021-01-18 18:11:48 +00:00
Vengarioth | Andreas Fischer
6adaef6512 fix the size checks in transfer buffer to image commands 2021-01-18 18:46:37 +01:00
bors[bot]
4f2d0bb8c8 Merge #1151
1151: Update gfx and naga to gfx-6 tag r=cwfitzgerald a=kvark

**Connections**
Fixes #1149 
Regression from https://github.com/gfx-rs/gfx/pull/3573

**Description**
The physical devices held references to `RawInstance` in Vulkan backend, and we weren't cleaning them up.
Note: an alternative fix could be in `gfx-backend-vulkan` - to move the `Entry` into `RawInstance`, thus delaying the shutdown. I didn't go this way because that would be less explicit.

**Testing**
Tested on wgpu-rs examples

Co-authored-by: Dzmitry Malyshau <dmalyshau@mozilla.com>
2021-01-16 06:39:44 +00:00
Dzmitry Malyshau
87c8cb8fde Update gfx and naga to gfx-6 tag, fix the hub clears 2021-01-16 01:38:57 -05:00
bors[bot]
9dce0afa74 Merge #1128
1128: Add pipeline statistics and timeline queries r=kvark a=cwfitzgerald

**Connections**

Closes #721 

**Description**

This adds Pipeline Statistics queries and Timeline queries. Shoutout to @z2oh for doing a good chunk of the work to enable this feature.

Currently blocked on both https://github.com/gfx-rs/gfx/pull/3563 and rollup of gfx-hal mutability changes, but is ready to review.

**Testing**

Tested in various ways on the hello-compute and hello-triangle example, tested validation extensively. Queries will be permanently added to the mipmap example once the wgpu-rs PR is finished.

Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
2021-01-16 05:49:42 +00:00
Connor Fitzgerald
a22037ced0 Add pipeline statistics and timeline queries 2021-01-16 00:48:54 -05:00
bors[bot]
0491d00d70 Merge #1147
1147: Update render pass and framebuffers logic to the latest gfx-hal r=cwfitzgerald a=kvark

**Connections**
Updates gfx-hal with the latest major changes of https://github.com/gfx-rs/gfx/pull/3571

**Description**
There is no need to track framebuffers at all any more! Since they don't contain images, we can keep them permanently.
There is no need to create and delete framebuffers for the swapchain either. Lots of non-trivial code is gone 🎉
The PR also removes one of the mutexes that the device holds. 

**Testing**
Will be tested on wgpu-rs

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2021-01-15 20:59:38 +00:00
Dzmitry Malyshau
6c05470db0 Minor dependencies bumps 2021-01-15 01:11:28 -05:00
Dzmitry Malyshau
a4f897b5d7 Include the extent into the framebuffer map key 2021-01-15 00:53:51 -05:00
Dzmitry Malyshau
012569845d Update render pass and framebuffers logic to the latest gfx-hal 2021-01-15 00:53:28 -05:00
bors[bot]
4ce449c89f Merge #1148
1148: Remove comment introduced in #1144 r=cwfitzgerald a=DasEtwas

Tested to be unnecessary by reading

Co-authored-by: dasetwas <dasetwas@dasetwas.dasetwas>
2021-01-13 23:28:23 +00:00
dasetwas
c01e2d10ce Remove comment introduced in https://github.com/gfx-rs/wgpu/pull/1144 2021-01-13 23:28:44 +01:00
bors[bot]
c788b1cef6 Merge #1132
1132: Include pipeline id in some pass error scopes r=kvark a=scoopr



Co-authored-by: Mikko Lehtonen <scoopr@iki.fi>
2021-01-12 21:16:30 +00:00
Mikko Lehtonen
6c56613045 Merge PassErrorScope::Draw* and Dispatch* variants 2021-01-12 22:23:17 +02:00
Mikko Lehtonen
0d60bd80c5 Include pipeline id in some pass error scopes 2021-01-12 17:58:44 +02:00
bors[bot]
ec9c8a2e84 Merge #1145
1145: Support trailing render passes after the swapchain rendering r=kvark a=kvark

**Connections**
Discussed on the matrix.

**Description**
Fixes a case where we have any other render pass in a command encoder that draws to the swapchain (after the pass that draws to the swapchain).

**Testing**
Tested on a modified hello-triangle example.

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2021-01-12 02:56:46 +00:00
Dzmitry Malyshau
389a848dea Support trailing render passes after the swapchain rendering 2021-01-11 21:40:41 -05:00
bors[bot]
09ba19b265 Merge #1144
1144: Fix and simplify attachment dimension mismatch check r=kvark a=DasEtwas

This also improves error messages with detailed dimension and attachment type name info which developers can hopefully recognize.

**Connections**
None

**Description**
Before this commit, depth/stencil attachments are not considered when evaluating the renderpasses' dimension, which will result in a "NoAttachment" error with a confusing display message.

**Testing**
Tested by running an application making use of color-only and depth/stencil-only attachment renderpasses.

Tested by running boids, hello-triangle and shadow examples.


Co-authored-by: DasEtwas <18222134+DasEtwas@users.noreply.github.com>
2021-01-11 23:05:10 +00:00
DasEtwas
93f68add27 Decrease error variant code verbosity, apply reviews 2021-01-11 23:46:26 +01:00
DasEtwas
151d521ad9 Fix and simplify attachment dimension mismatch check
This also improves error messages with detailed dimension and attachment type name info which should help developers can hopefully recognize.
2021-01-11 20:13:14 +01:00
bors[bot]
ae3e5057af Merge #1142
1142: Move get_swap_chain_preferred_format from device to adapter and check formats r=kvark a=niklaskorz

**Connections**

https://github.com/gfx-rs/wgpu-rs/issues/123#issuecomment-757831458

**Description**

Not all devices actually support `Bgra8UnormSrgb`. If this is the case, a similar format like `Rgba8UnormSrgb` can be used.

**Testing**

e5ebfa70a4/learn-wgpu/src/lib.rs (L137)

- Output on MacBook Pro 13" Intel 2020 macOS Metal: `Format: Bgra8UnormSrgb`
- Output on OnePlus 7 Pro Android Vulkan: `Format: Rgba8UnormSrgb`


Co-authored-by: Niklas Korz <niklas@niklaskorz.de>
2021-01-11 19:03:40 +00:00
Niklas Korz
ac98c0bdfa Move get_swap_chain_preferred_format from device to adapter and check formats
Squashed commit of the following:

commit 16e9c89dbccda3e37d05f7548dc8b9ddfb1d8613
Author: Niklas Korz <niklas@niklaskorz.de>
Date:   Mon Jan 11 19:15:43 2021 +0100

    format

commit 8c69a70ec22427b6a030915e06654bb0fc9b3c69
Author: Niklas Korz <niklas@niklaskorz.de>
Date:   Mon Jan 11 19:12:24 2021 +0100

    Implement Global::adapter_get_swap_chain_preferred_format

commit 63efae1cff508d060eaa6ccafe80c02af6af21f4
Author: Niklas Korz <niklas@niklaskorz.de>
Date:   Mon Jan 11 17:25:42 2021 +0100

    Move get_swap_chain_preferred_format to adapter

commit 1e72a876994820aec9b18f9dac7f1a9ae82d7cee
Author: Niklas Korz <niklas@niklaskorz.de>
Date:   Mon Jan 11 15:49:10 2021 +0100

    Add fallback to device_get_swap_chain_preferred_format
2021-01-11 19:50:32 +01:00
bors[bot]
5a29e010e2 Merge #1140
1140: Enable storage read/write format feature r=kvark a=Wumpf

**Connections**
#1112

**Description**
Use `wgt::TextureFormatFeatureFlags::STORAGE_READ_WRITE` in `get_texture_format_features`.
This has been waiting for a gfx update which was enabled by @ElArtista 's workaround in #1136 \o/

Co-authored-by: Andreas Reich <r_andreas2@web.de>
2021-01-10 22:26:58 +00:00
Andreas Reich
78466fbb31 Enable storage read/write format feature 2021-01-10 22:12:09 +01:00
bors[bot]
8920e8b2ba Merge #1135
1135: Make all textures support usage COPY_SRC and COPY_DST r=kvark a=fintelia

**Connections**
N/A

**Description**
In WebGPU, all textures should be allowed to have usages COPY_SRC and COPY_DST. However, right now when Features::TEXTURE_ADAPTER_SPECIFIC_FORMAT_FEATURES is enabled any features that the backend says can't be blitted to/from will not gain these capabilities. In particular, compressed textures may not support blitting while still allowing access via copies to/from buffers.

You can also see the defaults used when TEXTURE_ADAPTER_SPECIFIC_FORMAT_FEATURES is not requested:
8c00cbcc8e/wgpu-types/src/lib.rs (L1224-L1342)

**Testing**
I ran a [patched version of the wgpu-rs cube example](https://github.com/fintelia/wgpu-rs/tree/cube-bc4/examples/cube).

Co-authored-by: Jonathan Behrens <fintelia@gmail.com>
2021-01-10 16:09:13 +00:00
Jonathan Behrens
1e7fa480a1 Make all textures support their guaranteed usages 2021-01-10 10:59:42 -05:00
bors[bot]
5b9cfeb941 Merge #1136
1136: Changed Arc<B::Memory> to Arc<Mutex<B::Memory>> in GpuAllocator r=kvark a=ElArtista

Work around for blocker https://github.com/zakarumych/gpu-alloc/issues/33, makes wgpu compatible with latest gfx

Co-authored-by: TheArtist <agorglouk@gmail.com>
2021-01-09 23:17:03 +00:00
TheArtist
ce908c5f57 Changed Arc<B::Memory> to Arc<Mutex<B::Memory>> in GpuAllocator 2021-01-09 19:53:13 +02:00
bors[bot]
8c00cbcc8e Merge #1112
1112: Expose adapter specific formats features via Extension, support for storage read+write r=kvark a=Wumpf

**Connections**
Draft until https://github.com/gfx-rs/gfx/pull/3559 landed (then update and comment two lines in)
New & improved replacement for #1109

PR for wgpu-rs to be opened once there's some confidence that this is that it should look like. [Preview](https://github.com/gfx-rs/wgpu-rs/compare/master...Wumpf:texture-format-feature-query?expand=1)

**Description**
Adapter exposes now per texture format specific features. Feature struct defined as allowed usages + flags. Flags describe only storage texture usage so far.

Query not used for validation unless `TEXTURE_ADAPTER_SPECIFIC_FORMAT_FEATURES` feature is enabled on a device. Otherwise uses hardcoded feature set guaranteed by webgpu.
Storage read/write binding can then be used as a consequence (storage atomic has no effect yet).

**Testing**
Manual testing with my fluid sim project through wgpu-rs which covers storage r/w for a few different formats and storage in general for formats that don't support this usage by default at all.
Ran tests and a couple of samples to see if anything broke with the feature disabled.

Co-authored-by: Andreas Reich <r_andreas2@web.de>
2021-01-06 18:56:30 +00:00
Andreas Reich
30c96bfead Added note on why hal update needed for STORAGE_READ_WRITE is blocked atm 2021-01-06 17:59:53 +01:00
bors[bot]
4c81941989 Merge #1134
1134: Never prefer CPU devices over GPUs r=kvark a=myfreeweb

**Connections**
Rebase of #969 onto master

**Description**
See #969

Co-authored-by: Greg V <greg@unrelenting.technology>
2021-01-06 16:32:54 +00:00
Greg V
072b94c9fd Never prefer CPU devices over GPUs 2021-01-06 19:19:39 +03:00
Andreas Reich
e29d17a13f wgpu format features are again part of TextureFormatInfo
+ some cleanup/fix indentations
2021-01-05 23:54:50 +01:00
bors[bot]
c691570c60 Merge #1127
1127: Fix API traced dynamic offsets and markers r=critical a=kvark

**Connections**
This was a regression from #1106, discovered while investigating #1123

**Description**
When running a pass, it was mutably used for "convenience". Once we moved the tracing of that pass from the beginning of the function to the end, the "convenience" eliminated our dynamic offsets and markers.
The solution is to stop mutating the passes inside our big functions.

**Testing**
Re-traced Terra

Co-authored-by: Dzmitry Malyshau <dmalyshau@mozilla.com>
2021-01-04 22:58:50 +00:00