920: Don't bind groups that aren't expected by the layout r=grovesNL a=kvark
**Connections**
Sibling of #919 for master.
**Description**
**Testing**
In addition to the fix itself, this comes with a new regression playtest!
Co-authored-by: Dzmitry Malyshau <dmalyshau@mozilla.com>
908: Clarify usage of SAMPLED_TEXTURE_ARRAY_NON_UNIFORM_INDEXING r=cwfitzgerald a=im-0
**Connections**
https://github.com/gfx-rs/wgpu-rs/pull/540
**Description**
This clarifies usage of SAMPLED_TEXTURE_ARRAY_NON_UNIFORM_INDEXING with GLSL.
**Testing**
This commit only changes documentation.
Co-authored-by: Ivan Mironov <mironov.ivan@gmail.com>
916: Flush staging init buffers r=cwfitzgerald a=kvark
**Connections**
Related to https://github.com/gfx-rs/gfx/pull/3362
With the new use of `write_buffer`/`write_texture`, the results on D3D11 regressed.
**Description**
It just happened to be the case that all the backends returned coherent staging buffers, used internally for `write_*` and `mapped_at_creation == true`. However, D3D11 backend currently doesn't have the coherent memory at all, and it helped me to see that we were missing a flush() on the staging buffer.
**Testing**
Untested, but should work (tm).
Co-authored-by: Dzmitry Malyshau <dmalyshau@mozilla.com>
909: Add Quad play test r=kvark a=DevOrc
**Connections**
#807
**Description**
Adds a play test that renders a white quad to a texture. The texture is then copied to a buffer and checked for accuracy with a file of expected bytes (All 0xFF).
**Testing**
Cargo test succeeds
Co-authored-by: Noah Charlton <ncharlton002@gmail.com>
910: Replace backends! Macro with CFG Aliases r=kvark a=zicklag
**Connections**
Needs to be merged before: https://github.com/gfx-rs/wgpu/pull/907
**Description**
This change makes it easier to conditionally compile code based on graphics backends by adding `#[cfg]` aliases for the backends such as `vulkan`, `metal`, etc. This makes the code easier to read and maintain.
**Testing**
Tested the WGPU-rs cube and boids examples and they work as normal on a Linux machine with Vulkan.
Co-authored-by: Zicklag <zicklag@katharostech.com>
912: Fix write-only stencil state descriptors from not working - fixes#911 r=kvark a=Dinnerbone
**Connections**
This fixes [#911 - Stencil testing broken between v0.5 and v0.6](https://github.com/gfx-rs/wgpu/issues/911).
**Description**
Write-only stencil states (read 0, write >0) are being treated as if they are disabled, which causes pipelines to act as though they don't have any stencil state set at all. This worked prior to commit 2473c25971 (introduced in PR #873). As far as I can tell, this works fine in Vulkan, Metal, DX12 and DX11 as we've been using this approach over at Ruffle for a while now.
**Testing**
You can view the reproduction case in #911 for manual testing. I have confirmed that this fix makes that case work as expected.
I couldn't find any automated tests for wgpu-types to copy and add for this case. If that's wanted then please let me know what the best approach is.
Co-authored-by: Nathan Adams <dinnerbone@dinnerbone.com>
903: fix for mixed STORAGE_STORE and STORAGE_LOAD r=kvark a=kocsis1david
**Connections**
None
**Description**
A buffer that contains dynamic data is used for both uniforms and storage read. This was a problem for wgpu and it gave a `PendingTransition` error.
**Testing**
It's a trivial fix, but I don't know if there's an example for it in wgpu-rs that can be used for testing.
It seems that the PR "Sync changes from mozilla-central" is already solving the same issue.
Co-authored-by: Dávid Kocsis <kocsis1david@windowslive.com>
* Allow copying from depth textures
* Rename TextureFormat::is_depth_format to just is_depth
* Only allow Depth32Float format for copying, and only as source
897: Improve diagnostics of incompatible attachments r=kvark a=scoopr
**Description**
Attempt to improve the diagnostics of incompatible attachments
Co-authored-by: Mikko Lehtonen <scoopr@iki.fi>
895: Improve validation in B2B copies and RenderCommands r=kvark a=kunalmohan
**Connections**
_Link to the issues addressed by this PR, or dependent PRs in other repositories_
**Description**
_Describe what problem this is solving, and how it's solved._
Validation for the following have been added-
- Validate all parameters in B2B copy even if `copy_size == 0`.
- Check for copy operations issued within same buffer.
- `RenderPass.setViewport()`
- `RenderPass.setScissorRect()`
**Testing**
_Explain how this change is tested._
Tested with CTS in Servo. More tests pass now. Will test on wgpu-rs now.
<!--
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: Kunal Mohan <kunalmohan99@gmail.com>
893: Improve texture creation validation r=cwfitzgerald a=kvark
**Connections**
Fixes https://github.com/gfx-rs/wgpu-rs/issues/528#issuecomment-678853886
**Description**
Improves the mipmap levels check.
Note that it also removes the `TooManyLayers` error, and instead produces max `u16` value. This is to be followed up with a check for *real* limits, which has to happen regardless, and trying to catch it on the number conversion step seems wasteful.
**Testing**
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
891: Add AddressMode::ClampToBorder behind a feature r=kvark a=jshrake
**Connections**
Closes#890
Linked to https://github.com/gfx-rs/wgpu-rs/pull/526
**Description**
- Adds support for border sampler addressing behind a new feature Features::ADDRESS_MODE_CLAMP_TO_BORDER.
- Adds a new enum SamplerBorderColor so that users can optionally specify a supported border color on the SamplerDescriptor.
**Testing**
Tested against the Metal (MacOS 10.15) and Vulkan (Ubuntu 18.04) backends.
Ran the wgpu-rs/cube example and switched the address modes to AddressMode::ClampToBorder, without enabling the feature, and confirmed I received an error message. Ran the same example with the new feature specified in the optional_features return and confirmed that the example ran and looks reasonable.
Co-authored-by: Justin Shrake <justinshrake@gmail.com>
889: Fix swapchain preferred format r=kvark a=kvark
**Connections**
**Description**
The old API was wrong because the idea is to query the format *before* creating a swapchain, not after it:)
**Testing**
nah, should just work
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
885: Improve buffer and texture overrun error messages r=kvark a=cwfitzgerald
**Connections**
Closes#884.
**Description**
The previous errors about buffer and texture overruns didn't tell the user any information about which buffer, how long wgpu thought the copy was, or how long it thought the buffer was. This makes the error message much better.
Unfortunately a braking change, so can't backport :(
**Testing**
Tested on #884's issue.
Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
881: Factor wgpu-subscriber into its own repo r=kvark a=cwfitzgerald
**Connections**
Closes#871
**Description**
Removes wgpu-subscriber crate into its own repo.
**Testing**
Compile only change.
Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
880: Port to gfx-hal-0.6 r=kvark a=kvark
This got a little more involved than I hoped, because of https://github.com/rust-lang/rust/issues/34433 which is unfortunately closed.
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
877: Add image cube array feature. r=kvark a=StarArawn
**Connections**
None
**Description**
Enable `IMAGE_CUBE_ARRAY` in vulkan and dx12. Note: Currently this will cause metal to break as the `available_features` from the physical device will never include `IMAGE_CUBE_ARRAY`. Thus I'm opening this as a draft until gfx-hal metal can check and pass the feature on.
**Testing**
<!--
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.
-->
I can test this with my repo using wgpu-rs here which uses cube arrays:
https://github.com/StarArawn/harmony/
Co-authored-by: John Mitchell <toasterthegamer@gmail.com>