1558: Update naga to 57b3256020 r=kvark a=kvark
**Connections**
Needed for #1510
Picks up https://github.com/gfx-rs/naga/pull/1039 and https://github.com/gfx-rs/naga/pull/916
**Description**
Updates Naga to latest on Git. Refactors the use of `ResourceBinding` and Metal's binding map.
Also enables safe bound check handling on Vulkan (`Restrict` policy, cc @jimblandy).
**Testing**
Examples.
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
1550: Update submission indices on all stateless resources r=pythonesque a=kvark
**Connections**
This is partially a regression by #1547, but also fixing more things.
**Description**
We stopped tracking the stateless resources included in bind groups. But we still need to update their submission indices, so that they don't get removed too early.
The PR also does the same for render bundles, but with a twist: bind groups used in a bundle are merged early.
**Testing**
untested
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
1554: Remove gfx-rs development section from wgpu README r=grovesNL a=Gordon-F
Outdated part of README.
Co-authored-by: Igor Shaposhnik <Gordon-F@users.noreply.github.com>
1549: Fix cargo-tarpaulin r=kvark a=cwfitzgerald
I have no way of actually testing this is tarpaulin is linux only, but this should work
Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
1538: Implement Integration and Example Tests r=kvark a=cwfitzgerald
**Connections**
Closes#1379! Closes#1465.
**Description**
This adds a testing framework for wgpu. This includes testing infrastructure for integration and example based reftests and other tests.
I have added env-based adapter and backend choices as a common utility in wgpu-rs. This is how the framework based examples choose their adapters, so WGPU_ADAPTER_NAME is how you can choose adapters based on a substring of the name.
I added explicit seeding to all examples that use random numbers so reftesting was deterministic. conservative-raster, mipmap, and texture-arrays (#1532) are broken and are marked as such. This testing framework will make CI fails if this is fixed, so tests don't fall out of date.
Note: as we get more integration tests, we can factor out more of the `pulling_common` to be common between all the tests.
**Testing**
It is testing :)
Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
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>
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>