1647: Check for blendable flag in filtering r=cwfitzgerald a=kvark
**Connections**
Discussion on the matrix.
**Description**
The validation is written in a way that considers "filterable" to be responsible for both linear sampling and rendering.
But we didn't take blending into account when determining this filtering flag.
**Testing**
Untested
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
1645: Disable Intel Fastclear in GL Backend r=kvark a=zicklag
This works around a Mesa bug on Intel cards:
- https://gitlab.freedesktop.org/mesa/mesa/-/issues/2565
- https://github.com/gfx-rs/wgpu/issues/1627#issuecomment-877854185
**Connections**
Related to pixelated edges in GL backend brought up in #1627.
**Description**
This just adds the `INTEL_DEBUG=nofc` environment variable setting when creating an `Instance` using the GL backend in `wgpu_hal`. This is just a workaround until the mesa bug is fixed.
I wanted to wait until adapters were enumerated to determine that the user wanted to use an Intel Mesa adapter, but the environment variable has to be set before the x11 display was opened so that wasn't an option.
This may not be the strategy we want to take with this one, but it seems relatively harmless. Because the environment variable prefixed with `INTEL` anyway, it might not effect devices other than the ones we want to, which would be good.
**Testing**
I tested this on Ubuntu 20.04 with Mesa Intel(R) UHD Graphics (CML GT2) on using the GL backend.
Co-authored-by: Zicklag <zicklag@katharostech.com>
1644: Fix Example Resolution Limits r=kvark a=cwfitzgerald
**Connections**
Closes#1616.
**Description**
This change automatically expands resolution to the adapter's limits so examples always work.
**Testing**
Ran locally, but couldn't make it bigger than the screen
Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
1643: Check docs in CI r=kvark a=cwfitzgerald
**Connections**
Closes#1637.
**Description**
Doc links will now fail. `cargo doc` doesn't let you pass through flags, so you have to use RUSTDOCFLAGS.
**Testing**
It is.
Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
1641: Enable VK_KHR_timeline_semaphore On Vulkan < 1.2 r=kvark a=zicklag
**Connections**
Fixes#1640
**Description**
This is my attempt to fix#1640.
**Testing**
Test the `cube` example on:
- `Intel(R) UHD Graphics (CML GT2) (Vulkan)`
- `Using GeForce GTX 1650 (Vulkan)`
Co-authored-by: Zicklag <zicklag@katharostech.com>
1639: Doc fixes for wgpu r=cwfitzgerald a=jimblandy
This PR makes `cargo doc --all-features` work without errors.
Commits are organized for ease of review (and for revision, if I screwed something up).
Co-authored-by: Jim Blandy <jimb@red-bean.com>
Change references to `RenderBundleEncoder` in descriptions of `RenderEncoder`
methods to `RenderEncoder` instead, since they all seem to be referring to
methods of this trait, and presumably apply to `RenderPass`es as well.
1634: Improve documentation of ImageDataLayout r=kvark a=cwfitzgerald
**Connections**
Fixes#1626.
**Description**
Just improves the docs.
**Testing**
Docs. @StarArawn take a look if that clears things up.
Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
1633: Always use EXT Robustness with EGL r=kvark a=cwfitzgerald
**Connections**
Closes#1631. Closes#1577.
**Description**
KHR robustness doesn't seem to work on any real platform. This unconditionally uses EXT robustness.
**Testing**
Works on rpi and my haswell rig. @Gordon-F could you check your android?
Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
1623: Enable All Backends for Trace Player r=cwfitzgerald a=zicklag
**Connections**
None
**Description**
I just spent a bit of time trying to figure out how to get the trace player to play an OpenGL trace before realizing that only the primary backends were enabled at instance creation. This just enables all backends in the trace player. I believe that this should be harmless as it shouldn't change anything for traces on the primary supported backends.
**Testing**
It's not tested specifically, but it's such a minor change it shouldn't matter, I think.
Co-authored-by: Zicklag <zicklag@katharostech.com>
1612: Update `web-sys` r=grovesNL a=a1phyr
`wgpu` uses unstable APIs so the version has to be pinned and manually updated.
No breaking changes happened in `0.3.51` so this update is easy.
Co-authored-by: Benoît du Garreau <bdgdlm@outlook.com>
1607: Fix Downlevel Vertex Stage Storage Buffer Check r=kvark a=cwfitzgerald
**Connections**
Fixes a bug in #1599. Also follows up on #1583 marking all of hello-compute as a failure.
**Testing**
Tests now pass on rpi4.
Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
1604: Upgrade `arrayvec` to 0.7 r=kvark a=a1phyr
Upgrade `arrayvec` to version 0.7 (using const generics).
Co-authored-by: Benoît du Garreau <bdgdlm@outlook.com>
1606: Fix macos build r=cwfitzgerald a=scoopr
Building on macos failed with
```
Compiling wgpu-hal v0.9.0 (/Users/scoopr/Code/ext/wgpu/wgpu-hal)
error[E0609]: no field `entry` on type `&vulkan::Instance`
--> /Users/scoopr/Code/ext/wgpu/wgpu-hal/src/vulkan/instance.rs:267:61
|
267 | let metal_loader = ext::MetalSurface::new(&self.entry, &self.shared.raw);
| ^^^^^ unknown field
|
= note: available fields are: `shared`, `extensions`
error: aborting due to previous error
```
The PR fixes the issue.
Co-authored-by: Mikko Lehtonen <scoopr@iki.fi>
1599: Fix Limits for lava/llvmpipe and re-enable and re-work CI r=kvark,groves,wumpf a=cwfitzgerald
**Connections**
No longer fixes#1551.
**Description**
This PR has a couple things going on at once.
- Fixes limits for llvmpipe, lavapipe, and rpi4.
- Added a downlevel limit to express that RPI4 does not allow storage buffers in vertex shaders on GL.
- Added a `Limits::downlevel_default()` that takes minimum limits from GLES and adds some more documentation on how to choose limits.
- Moved all examples to the new downlevel limits
- Reworks CI to re-enable software testing and unify instructions.
**Testing**
It is
Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
1600: Vulkan Timeline Semaphores r=kvark a=kvark
**Connections**
None
**Description**
One of the non-straightforward design decisions in wgpu-hal was to expose the fences with `D3D12Fence` semantics. Now that we got Vulkan, Metal, and GLES3, it became a bit concerning that all of these backends implemented this new fence API in the same convoluted way: via managing a pool of binary fences internally, which requires maintenance (done on submit() only). If that's the expected implementation, then the abstraction is wrong.
For this reason, it was important for me to try implementing this new semantics in a modern Vulkan way - via timeline semaphores. With this, we have 1:1 relation between `Api::Fence` and a Vulkan object. I believe the experiment is a success: Vulkan is now very efficient at fences!
**Testing**
Works on the examples!
Co-authored-by: Dzmitry Malyshau <dmalyshau@mozilla.com>
1598: Fix memory leak in acquiring encoders r=kvark a=kvark
**Connections**
Fixes#1501Fixes#1531
**Description**
It was ... interesting. We were creating new command encoders all the time, but still trying to add them to the pool to re-use later. So we were constantly allocating and never freeing them, up until the end. Therefore, program as a whole was valid and non-leaking, if analyzed after termination.
**Testing**
Observed memory manually
Co-authored-by: Dzmitry Malyshau <dmalyshau@mozilla.com>