1547: Don't merge stateless trackers from bind groups r=cwfitzgerald a=kvark
**Connections**
Hinted by @pythonesque on the matrix
Follow-up to #1417
**Description**
This is an optimization only.
When a bind group is used, we need to ensure two things:
1. stateful usages are merged in (buffers and textures)
2. other resources are help alive by the command buffer
We used to merge all of the states into the local trackers. However, the local tracker already
keeps a strong reference to the whole bind group, so the resources in it are not going away.
Therefore, we can skip having them separately in the local trackers.
**Testing**
Untested.
Co-authored-by: Dzmitry Malyshau <dmalyshau@mozilla.com>
1546: Fix readme in wgpu r=kvark a=Dispersia
**Description**
Just fixes the logo image in the wgpu/wgpu directory, didn't move the logo.png down because several other places reference it still as well.
Co-authored-by: Dispersia <dispersias@gmail.com>
1540: Test wgpu-rs more on CI r=scoopr a=kvark
**Connections**
https://github.com/gfx-rs/wgpu/pull/1539#issuecomment-866269882
**Description**
Enabling the build of `wgpu` with examples on all platforms, also covering by clippy.
**Testing**
Self-tested
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
1518: Make spirv an optional feature r=cwfitzgerald a=kvark
**Connections**
https://github.com/gfx-rs/naga/issues/940 shows how much SPIR-V parsing can be a pain.
**Description**
Keep it supported natively, but put it behind a feature flag. This allows to skip compilation of parts of Naga as well as dependencies like `petgraph`.
On my machine, compiling `wgpu-core` time is reduced from 40.87s to 35.36s, which is about 13% improvement.
**Testing**
Just compiling
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
1534: web: Restore WebGPU CI r=kvark a=grovesNL
**Connections**
Depends on/currently includes #1533
**Description**
Even though the WebGL backend needs to be temporarily disabled, we should be able to continue checking WebGPU on wasm.
**Testing**
Manually ran the CI command `cargo check --package wgpu --examples --target=wasm32-unknown-unknown` locally which seems to catch the mistake in #1533 without building wgpu-core/wgpu-hal.
Co-authored-by: grovesNL <josh@joshgroves.com>
1533: web: add empty `device_create_shader_module_spirv` r=kvark a=grovesNL
**Description**
We added a SPIR-V passthrough function to the `Context` trait shared between web/native backends, but the web backend also needs an implementation of this function to fully implement the trait.
**Testing**
Compiling the web backend for WebGPU.
Co-authored-by: grovesNL <josh@joshgroves.com>
1525: Add Naga bypass to allow feeding raw SPIR-V shader data to the backend. r=kvark a=ElectronicRU
**Connections**
Fixes#1520 .
**Description**
While Naga checking is undoubtedly very useful, it currently lags behind
what is possible in SPIR-V and even what is promised by WGPU (ie binding
arrays). This adds an unsafe method to wgpu::Device to allow feeding
raw SPIR-V data into the backend, and adds a feature flag to request a
backend supporting this operation.
**Testing**
`texture_arrays` example is runnable now, which uncovers an additional bug in Vulkan backend - binding arrays are instead treated like sole bindings, and indices shift, too. Lots of errors from validation layer ensue.
Co-authored-by: Alex S <alex0player@gmail.com>
1530: Fix wgpu downlevel check r=kvark a=kvark
**Connections**
Fixes#1529
**Description**
The anisotropic flag is not in the compliant set, but the check was made for equality of the flags (instead of inclusion).
**Testing**
Untested
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
- Remove Cow from wgpu-hal API surface. You graze on in our hearts.
- Rename feature flag to SPIRV_SHADER_PASSTHROUGH in anticipation
of crate feature `spirv` to reduce confusion.
- Add some more documentation about behaviour and intended avenues of
use to the feature.
1528: Support TEXTURE_SPECIFIC_FORMAT_CAPABILITIES for rendertargets. r=kvark a=ElectronicRU
**Description**
With TEXTURE_SPECIFIC_FORMAT_FEATURES enabled, one would assume that render pipeline creation would use extended features
for color/depth-stencil render targets. However, it does not. This aims to fix that discrepancy.
Co-authored-by: Alex S <alex0player@gmail.com>
1527: Fix wgpu-hal incorrectly ignoring arrays of bindings. r=kvark a=ElectronicRU
**Connections**
Fixes#1526.
**Description**
Even though binding sizes could potentially be derived from resource array lengths and binding indices, current implementation
flat out ignored that. Metal did a more sensible (?) thing and bound only the first resource in each array, Vulkan did a less
sensible thing and bound as many resources as there are bindings, obtaining them from unwrapped arrays.
(IE on Vulkan, if you bound two arrays, [view1, view2] and [view3, view4], it would actually bind [view1, <invalid>] and [view2, <invalid>]).
This aims to fix the issue.
**Testing**
After #1525 is merged, `cargo run --example texture-arrays` would be working as intended for Vulkan. Unfortunately, I can think of no easy way to test this on Metal - the shader support isn't there yet.
Co-authored-by: Alex S <alex0player@gmail.com>
- rename ShaderInput variants
- rename feature flag
- hard error on Metal backend trying to compile SPIR-V
- fix test failing because of feature flag bits changing
Potentially needs more testing - Metal's binding model is quite
different from Vulkan and WGPU, but as far as I understand from the
documentation, arrays of textures occupy a contiguous range of binding
slots, so unwrapping and binding one-by-one should be fine.
Someone should actually go and test this on a Mac, maybe.
While Naga checking is undoubtedly very useful, it currently lags behind
what is possible in SPIR-V and even what is promised by WGPU (ie binding
arrays). This adds an unsafe method to wgpu::Device to allow feeding
raw SPIR-V data into the backend, and adds a feature flag to request a
backend supporting this operation.
1524: Remove MPL 2.0 header in files r=kvark a=Gordon-F
This is no more required since the repository is licensed under `MIT` and `Apache 2.0`.
Co-authored-by: Gordon-F <ishaposhnik@icloud.com>
1521: Better compile error for not using resolver=2. r=kvark a=ElectronicRU
**Connections**
Usability fix proposed in #1517 with some re-wording to make the intent clearer.
**Description**
Provide a useful compile error in case a downstream project is using old Cargo resolver, instead of the deluge of obscure errors they get r/n if not on MacOS.
**Limitations**
On MacOS, vulkan feature is totally valid, so we cannot detect resolver=1 on Mac.
Co-authored-by: Alex S <alex0player@gmail.com>
1519: Add TEXTURE_ADAPTER_SPECIFIC_FORMAT_FEATURES to supported for Vulkan and Metal. r=kvark a=ElectronicRU
Adapter callbacks are already there, so this is likely an oversight.
**Description**
Adapter callbacks for texture capabilities were there, but feature flags weren't enabled, which prevented use of them.
Co-authored-by: Alex S <alex0player@gmail.com>
1511: Added storage texture array support. r=kvark a=ElectronicRU
**Description**
Arrays of storage images (*f*image*n*D in GLSL parlance) should now be supported.
I also took the liberty to refactor texture format checking a bit,
and tighten up sampled texture support detection for Metal as well.
**Testing**
Not completely sure what's the proper testing approach here, open to suggestions.
Co-authored-by: Alex S <alex0player@gmail.com>