Re-implement `naga` development workflows using [`cargo xtask`]. Convert
`make` logic and shader test configuration as file with Bash variables
into an `xtask` crate and YAML files, respectively.
Pros:
* We now have a _portable_ workflow everywhere, which means Windows
folks and people who don't install `make` don't have to suffer.
😮💨
* Workflow logic is now relatively easy to inspect and change. Whew!
💁🏻♂️💦
* Contributors can use their existing Rust knowledge to contribute to
developer experience. 🎉
* `cargo xtask` is a relatively well-known convention for workflows in
the ecosystem.
* We can do fancy things like allow folks to run at different log levels
for workflows, depending on their tastes.
Cons:
* There's now a non-trivial compile step to project workflow.
Incremental rebuilds seem to be pretty short, though!
* Code is much more verbose than the (very) terse `make` implementation.
[`cargo xtask`]: https://github.com/matklad/cargo-xtask
* fix setup-dxc not found
* run validation-windows if its workflow file was changed
* run validation-macos if its workflow file was changed
* run validation-linux if its workflow file was changed
* run lazy if its workflow file was changed
* update to actions/checkout@v3
* update to actions/upload-artifact@v3
* remove minor version
* remove unmaintained actions-rs actions
* update to codecov/codecov-action@v3
* use ubuntu-latest
* use extra cargo/rust env vars
* use cargo-nextest
* check naga-fuzz
* only check on MSRV and minimal-versions
* add whitespace between steps
* rename to CI
* use cargo-llvm-cov to generate code coverage