813: Fix dropping for command encoders r=grovesNL a=kvark
We weren't dropping them properly, and since the ID is just an obfuscated `Box<RealStuff>` that made the contents leak.
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
809: Add overflow detection to hello-compute r=kvark a=danwilhelm
Description
The `hello-compute` example sometimes gives incorrect results if an intermediate Collatz value overflows.
Proposed Solution
We can detect overflows before they occur, since the `3n+1` step is the only possible overflow. (WGSL only supports u32.)
Example
`cargo run --example hello-compute 77031 837799 8400511 63728127`
> Incorrect Current Output: `[350, 524, 312, 346]`
> Correct Output: `[350, 524, 685, 949]`
> Proposed Solution: `[350, 524, OVERFLOW, OVERFLOW]`
Notes
- The `hello-compute` example appears to be [borrowed from naga](https://github.com/gfx-rs/naga/blob/master/tests/in/collatz.wgsl), so this would cause the implementations to differ.
- Hexadecimal literals are not yet implemented in naga for WGSL shaders, so the shader literals are not as pretty as they could be.
- Revised terminology `times` -> `steps` to be consistent with [Wikipedia](https://en.wikipedia.org/wiki/Collatz_conjecture).
Co-authored-by: Dan Wilhelm <dan@danwilhelm.com>
806: Remove "how to compile the shaders" section on README r=kvark a=yutannihilation
I believe all the examples now use WGSL, so this section is no longer needed.
Co-authored-by: Hiroaki Yutani <yutani.ini@gmail.com>
800: Schedule event waits after redraw events are cleared r=kvark a=kvark
As @adamnemecek pointed out, our examples were busy waiting.
I investigated a bit and figured that our `WaitScheduled` was always interrupted by `RedrawEventsCleared`. So scheduling the wait in it works. Tested on Linux and macOS. CPU time of the cube example drops from 100% to single-digit.
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
799: Update naga to gfx-16 r=kvark a=kvark
Makes WGSL constants much more ergonomic to write, and fixes the issues we had with the water example.
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
781: Mark BufferMappedRange Send/Sync on native r=kvark a=cwfitzgerald
This fixes an issue reported on the matrix where this was causing things to unnecessarily be !Send. There's no reason I can see that this couldn't be Send/Sync as we only use it like one would a slice. We might also consider backporting this to 0.7.
Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
778: Return None from get_swap_chain_preferred_format if the adapter does not support the surface r=kvark a=OlegOAndreev
Fixes#777
Almost every other method in wgpu panics on failure, so I decided to make the return value an `Option<TextureFormat>`, not a `Result<Option<TextureFormat>>`
Co-authored-by: Oleg Andreev <ooandreev@yandex-team.ru>
773: Panic on empty buffer slices r=kvark a=Wumpf
Fixes#735
Can't really pass through zero sizes, so panic it is.
I'm really just here to update to latest wgpu version to get my recent fix there in a more convenient manner, but doing a PR with just that felt a bit boring ;-). Now I'm of course guilty of conflating things 🤔
Co-authored-by: Andreas Reich <r_andreas2@web.de>
765: Update naga to gfx-11 r=cwfitzgerald a=kvark
Gets us https://github.com/gfx-rs/wgpu/pull/1220
Note that "cross" feature is not optional here. We could lift it up and add to `default = []` but that would make the Web backend to always unconditionally depend on `wgpu-core` (since enabling a feature on it automatically enables it). So we ideally need a way for Cargo to allow platform-specific default features...
About the shadow example - the experimental translation works on the main pipeline, but fails on the baking pipeline because of https://github.com/gfx-rs/naga/issues/483. Fortunately, it falls back to SPIRV-Cross gracefully here.
The new validation detected a flaw in our shader (comparison sampler mismatch), yay!
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>