8681 Commits

Author SHA1 Message Date
Connor Fitzgerald
779261e64d Release v24 (#6923) v24.0.0 2025-01-15 16:29:22 -05:00
caelunshun
30364134f3 Expose conversions between TextureFormat and naga::StorageFormat (#6185)
Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
2025-01-15 17:44:14 +00:00
Connor Fitzgerald
0f37714fb8 Separate Out Backend Options into Individual Structs (#6895) 2025-01-15 17:32:15 +00:00
Kent Slaney
a32467041d fix >= in template list matching for a<b>=c (#6898)
Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
2025-01-15 17:25:04 +00:00
atlv
be95178709 64 bit image atomics (#5537) 2025-01-15 08:05:13 -05:00
sagudev
6c10e0be73 Add changelog
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
2025-01-15 11:14:17 +01:00
sagudev
ea5d3b953f Add test
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
2025-01-15 11:14:17 +01:00
sagudev
a65216cabe [naga] wgsl automatic conversion for override initializers
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
2025-01-15 11:14:17 +01:00
sagudev
4576e4d0d2 Refactor init and type handling into separate function from var
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
2025-01-15 11:14:17 +01:00
Vecvec
21de7f7773 Support DXR in wgpu-hal & naga. (#6777)
Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
2025-01-14 21:28:37 -05:00
Connor Fitzgerald
2cfea40acc Fix bind group initialization in benchmarks (#6916) 2025-01-14 23:02:05 +00:00
Jim Blandy
90a97a1ed9 Add CHANGELOG.md entries for jimblandy's PRs. (#6918) 2025-01-14 22:45:03 +00:00
Vecvec
0b2c9e4f4b [Ray-tracing] Change index offset to first index (#6873)
Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
2025-01-14 16:56:24 -05:00
Jim Blandy
bd3e7b676e [naga] Consolidate entry point tracing code. (#6917) 2025-01-14 21:12:52 +00:00
Connor Fitzgerald
c71d67010f Fix Features when Depending on wgpu (#6915) 2025-01-14 18:19:43 +00:00
Jim Blandy
aa7bec65b9 [naga] Remove vestigial false. (#6909) 2025-01-13 23:02:47 +00:00
Erich Gubler
1963eb7c3f diag(wgsl-in): use backticks for code-like text in WGSL FE errors (#6908) 2025-01-13 22:13:40 +00:00
Erich Gubler
cc741735df fix(wgsl-in): print debug repr. of unexpected tokens (#6907) 2025-01-13 16:43:41 -05:00
teoxoy
f62090ed71 use StatelessTracker for acceleration structures 2025-01-13 20:52:55 +01:00
teoxoy
f17f10dcdd remove Tlas/Blas destroy methods
`Tlas.destroy` didn't check if the `Tlas` is used in a bind group of an active submission. The only reason we need the `destroy` methods for textures and buffers is because they allow users to eagerly release memory in browser implementations. I think we can remove the destroy methods on the acceleration structures for now as they complicate the picture without any gain. If they will be needed for Firefox we can add them back.
2025-01-13 20:52:55 +01:00
teoxoy
e066a23948 remove unused id 2025-01-13 20:52:55 +01:00
teoxoy
362e440552 add temp_resources to CommandBufferMutable, BakedCommands & EncoderInFlight, remove it from ActiveSubmission
Use `CommandBufferMutable.temp_resources` to store the ray tracing related staging buffers and scratch buffers. These shouldn't have been stored in `PendingWrites.temp_resources` because they can get destroyed early (before the command buffer that uses them has been submitted) if any other command buffer gets submitted first.
2025-01-13 20:52:55 +01:00
teoxoy
43e0ebde9f [wgpu-core] ray tracing: remove acceleration structures from pending writes
The acceleration structures are already being kept alive by the tracker in the command encoder.
2025-01-13 20:52:55 +01:00
teoxoy
fb9f91a668 [wgpu-core] ray tracing: use error handling helpers 2025-01-13 20:52:55 +01:00
Teodor Tanasoaia
214396a807 [spv] output the right capability for subgroupBroadcast (#6904) 2025-01-13 14:29:04 -05:00
Connor Fitzgerald
f6dd3a4ff2 Turn off Merge Queue (#6901) 2025-01-13 16:51:24 +00:00
atlv
18471d8e78 Image atomics support (#6706)
* Image atomics support

* Address feedback

* fix merge

* Fixes

* Add a couple tests

* Update wgpu-types/src/lib.rs

Co-authored-by: Teodor Tanasoaia <28601907+teoxoy@users.noreply.github.com>

* feedback

* feedback

* glsl

* glsl fix

* fix glsl

* fix fix

* fix fix fic

* fix?

* fix

---------

Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
Co-authored-by: Teodor Tanasoaia <28601907+teoxoy@users.noreply.github.com>
2025-01-13 15:37:12 +00:00
dependabot[bot]
a5704d9a1c chore(deps): bump the patch-updates group with 14 updates (#6899)
* chore(deps): bump the patch-updates group with 14 updates

Bumps the patch-updates group with 14 updates:

| Package | From | To |
| --- | --- | --- |
| [bitflags](https://github.com/bitflags/bitflags) | `2.6.0` | `2.7.0` |
| [futures-lite](https://github.com/smol-rs/futures-lite) | `2.5.0` | `2.6.0` |
| [thiserror](https://github.com/dtolnay/thiserror) | `2.0.10` | `2.0.11` |
| [glutin_wgl_sys](https://github.com/rust-windowing/glutin) | `0.6.0` | `0.6.1` |
| [petgraph](https://github.com/petgraph/petgraph) | `0.6.5` | `0.7.1` |
| [syn](https://github.com/dtolnay/syn) | `2.0.95` | `2.0.96` |
| [cc](https://github.com/rust-lang/cc-rs) | `1.2.7` | `1.2.9` |
| [clap](https://github.com/clap-rs/clap) | `4.5.24` | `4.5.26` |
| [clap_builder](https://github.com/clap-rs/clap) | `4.5.24` | `4.5.26` |
| [const_panic](https://github.com/rodrimati1992/const_panic) | `0.2.11` | `0.2.12` |
| [prettyplease](https://github.com/dtolnay/prettyplease) | `0.2.27` | `0.2.29` |
| [proc-macro2](https://github.com/dtolnay/proc-macro2) | `1.0.92` | `1.0.93` |
| [uuid](https://github.com/uuid-rs/uuid) | `1.11.0` | `1.11.1` |
| [winnow](https://github.com/winnow-rs/winnow) | `0.6.22` | `0.6.24` |


Updates `bitflags` from 2.6.0 to 2.7.0
- [Release notes](https://github.com/bitflags/bitflags/releases)
- [Changelog](https://github.com/bitflags/bitflags/blob/main/CHANGELOG.md)
- [Commits](https://github.com/bitflags/bitflags/compare/2.6.0...2.7.0)

Updates `futures-lite` from 2.5.0 to 2.6.0
- [Release notes](https://github.com/smol-rs/futures-lite/releases)
- [Changelog](https://github.com/smol-rs/futures-lite/blob/master/CHANGELOG.md)
- [Commits](https://github.com/smol-rs/futures-lite/compare/v2.5.0...v2.6.0)

Updates `thiserror` from 2.0.10 to 2.0.11
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/2.0.10...2.0.11)

Updates `glutin_wgl_sys` from 0.6.0 to 0.6.1
- [Release notes](https://github.com/rust-windowing/glutin/releases)
- [Changelog](https://github.com/rust-windowing/glutin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-windowing/glutin/commits)

Updates `petgraph` from 0.6.5 to 0.7.1
- [Changelog](https://github.com/petgraph/petgraph/blob/master/RELEASES.rst)
- [Commits](https://github.com/petgraph/petgraph/compare/petgraph@v0.6.5...petgraph@v0.7.1)

Updates `syn` from 2.0.95 to 2.0.96
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.95...2.0.96)

Updates `cc` from 1.2.7 to 1.2.9
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.7...cc-v1.2.9)

Updates `clap` from 4.5.24 to 4.5.26
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.24...clap_complete-v4.5.26)

Updates `clap_builder` from 4.5.24 to 4.5.26
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.5.24...v4.5.26)

Updates `const_panic` from 0.2.11 to 0.2.12
- [Release notes](https://github.com/rodrimati1992/const_panic/releases)
- [Changelog](https://github.com/rodrimati1992/const_panic/blob/main/Changelog.md)
- [Commits](https://github.com/rodrimati1992/const_panic/commits/0.2.12)

Updates `prettyplease` from 0.2.27 to 0.2.29
- [Release notes](https://github.com/dtolnay/prettyplease/releases)
- [Commits](https://github.com/dtolnay/prettyplease/compare/0.2.27...0.2.29)

Updates `proc-macro2` from 1.0.92 to 1.0.93
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.92...1.0.93)

Updates `uuid` from 1.11.0 to 1.11.1
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.11.0...1.11.1)

Updates `winnow` from 0.6.22 to 0.6.24
- [Changelog](https://github.com/winnow-rs/winnow/blob/main/CHANGELOG.md)
- [Commits](https://github.com/winnow-rs/winnow/compare/v0.6.22...v0.6.24)

---
updated-dependencies:
- dependency-name: bitflags
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: patch-updates
- dependency-name: futures-lite
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: patch-updates
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: patch-updates
- dependency-name: glutin_wgl_sys
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: patch-updates
- dependency-name: petgraph
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: patch-updates
- dependency-name: syn
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: patch-updates
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: patch-updates
- dependency-name: clap
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: patch-updates
- dependency-name: clap_builder
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: patch-updates
- dependency-name: const_panic
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: patch-updates
- dependency-name: prettyplease
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: patch-updates
- dependency-name: proc-macro2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: patch-updates
- dependency-name: uuid
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: patch-updates
- dependency-name: winnow
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: patch-updates
...

Signed-off-by: dependabot[bot] <support@github.com>

* Update naga/Cargo.toml

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
2025-01-13 03:15:57 +00:00
Zachary Harrold
05e62f96f9 Add no_std support to wgpu-types (#6892)
* Initial Commit

* Remove now-redundant `format` import

* Update CHANGELOG.md

* Appropriately feature-gate `texture_format_serialize` test

* Remove `alloc` feature

Also fixed some documentation links and a Wasm `std` import

* Revert change to `Serialize` for `TextureFormat`

* Combine use statements

* Switch from `PathBuf` to `String`

* Consider environmental flags as unset on `no_std`

* Fix missing `format!`

* Add new CI tasks for `no_std` testing

* Comment out known failing CI matrix option

* Update all usage of `Dx12Compiler::DynamicDxc`

* Added comments to CI

* Update .github/workflows/ci.yml

* Update .github/workflows/ci.yml

* Update .github/workflows/ci.yml

* CI Touchups

---------

Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
2025-01-12 05:03:47 +00:00
Eric Szentivanyi
4efc992d6d Add raw_handle method for metal texture (#6894)
* Add `raw_handle` method for metal texture

* Add raw_handle method for metal texture (#6894)
2025-01-11 02:45:09 +00:00
Connor Fitzgerald
44b23c396d Bump Nightly Version (#6896) 2025-01-10 21:42:42 -05:00
AbdullahElsheshtawy
55391f716d Added Texture Blitting Utility (#6852)
* Added TextureBlitter Utility

* Fixed Clippy and made TextureBlitter Public

* Written Documentation

* change cull_mode

Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>

* syntax error

Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>

* 1 formatting space in shader

Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>

* Applied suggestions

* fix test

* Fixed typos

* Fixed the tests

* Fixed the shader after trying it manually and looking at the output.

* Added `BlendState` customization parameter.

* Apply suggestions from code review

Documentation!

Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>

* Made it Load instead of Clear(Black)

* Added `TextureBlitterBuilder`

* Added feature wgsl feature flag for `pub use texture_blitter...;`

* Re-add file

---------

Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
2025-01-10 22:16:01 +00:00
Erich Gubler
d9cc72785b Use more Rust features allowed under REPO_MSRV (#6887)
* chore: remove `std::mem::*` imports now unnecessary with `REPO_MSRV`

`std::mem::{size,align}_of{,_val}` was added to `std::prelude` in Rust
1.80; see
[`rust`#123168](https://github.com/rust-lang/rust/pull/123168/).

* refactor(benches): s/once_cell::Lazy/std::sync::LazyLock

Weaken our dependence on the `once_cell` crate by using functionality
from `std` instead that was upstreamed from `once_cell`, this time with
what's available in Rust 1.80+.

It's not yet possible to eliminate this dependency entirely, but do what
we can with `REPO_MSRV` for now.

* chore: remove unnecessarily `allow`'d lint rules under `REPO_MSRV`

* chore: migrate easy `allow`s to `expect` under `REPO_MSRV`

Remove or `expect` clear-cut `allow` statements that were easy for me to
figure out.

* chore: `warn` on `clippy::allow_attributes` under `REPO_MSRV`
2025-01-10 22:06:26 +00:00
Connor Fitzgerald
450ac2d05d Fix Double Push (#6890) 2025-01-10 19:47:25 +00:00
Connor Fitzgerald
2088645b69 Fix Double Push (#6889) 2025-01-10 18:16:59 +00:00
Connor Fitzgerald
b0f1fa66ef Add VisionOS Support (#6888)
* Add visionos support

* Use `target_vendor = "apple"`

* Fixes

* Build VisionOS

* Gah

* Bleh

* Typos

---------

Co-authored-by: Guus Waals <_@guusw.nl>
2025-01-10 17:33:58 +00:00
the letter L
1aabf22e7a fix cts_runner (#6840)
* fix: unbreak compute_pass execution and state

* fix: cts_runner js_runtime needs Permissions struct

* fix: ColorWrites bitflags serde

---------

Co-authored-by: turbocrime <turbocrime@users.noreply.github.com>
Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
2025-01-10 16:46:10 +00:00
Connor Fitzgerald
c655d5290b Don't Run CI On Trunk (#6886) 2025-01-10 09:47:13 +00:00
Samson
dc9b2eb718 Add Instance::wgsl_language_features (#6814)
* docs(naga): clarify desc. for `LanguageExtension`

* feat(naga): expose `{,Implemented,Unimplemented}LanguageExtension`

* feat(naga): expose `ImplementedLanguageExtension` as `WgslLanguageExtension`

Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
Co-Authored-By: Erich Gubler <erichdongubler@gmail.com>

* feat: add `Instance::wgsl_language_features`

Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
Co-Authored-By: Erich Gubler <erichdongubler@gmail.com>

* refactor: reimpl. `ImplementedLanguageExtension::all` w/ `strum::VariantArray`

Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>

---------

Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
Co-authored-by: Erich Gubler <erichdongubler@gmail.com>
2025-01-10 04:02:39 +00:00
Connor Fitzgerald
98f1c728ed Turn #6827 Into Failing Regression Test (#6883)
* Turn 6827 Into Failing Regression Test

* Update tests/tests/regression/issue_6827.rs

Co-authored-by: Kevin Reid <kpreid@switchb.org>

* Format

* Fix Paravirtual Device

* DX12 Failure

* Validation Err

* Panick

---------

Co-authored-by: Kevin Reid <kpreid@switchb.org>
2025-01-09 16:53:29 +00:00
Asher Jingkong Chen
198762e5cc feat: Add 32-bit floating-point atomics (SHADER_FLOAT32_ATOMIC) (#6234)
* feat: Add 32-bit floating-point atomics

* Current supported platforms: Metal
* Platforms to support in the future: Vulkan

Related issues or PRs:

* gfx-rs/wgpu#1020

* Add changelog

* Edit changelog

* feat: Add 32-bit float atomics support for Vulkan (SPIR-V shaders)

* atomicSub for f32 in the previous commits is removed.

* Update test

* chore: doc type link

* refactor: Revise float atomics on msl and spv

* Make branches tidy
* Also revise old codes
* Ensure the implementations are supported by Metal and Vulkan backends

* refactor: Renaming flt32 atomics to float32 atomics

* chore: Add link to Vulkan feature

* fix: cargo fmt

* chore: hack comment

* Revert changelog

* Fix: Cargo advisory

* Update wgpu-hal/src/metal/adapter.rs

Co-authored-by: Teodor Tanasoaia <28601907+teoxoy@users.noreply.github.com>

* Update naga/src/lib.rs

Co-authored-by: Teodor Tanasoaia <28601907+teoxoy@users.noreply.github.com>

* Adjust feature flag position

---------

Co-authored-by: Teodor Tanasoaia <28601907+teoxoy@users.noreply.github.com>
2025-01-09 16:03:47 +00:00
Jim Blandy
6e2394b95e [naga] Validate override array sizes. (#6882)
When an array type `A`'s size is `PendingArraySize::Override(h)`,
verify that:

- `h` is a valid override handle,

- the override's type precedes `A` in the type arena, and

- the override's expression does not participate in a type/global
  expression cycle.

Fixes #6880.
2025-01-09 12:13:45 +00:00
Connor Fitzgerald
e6d2a6e92a Update Dependencies (#6881) 2025-01-08 21:25:49 +00:00
Jim Blandy
6351c2da96 [naga] Forbid cycles between global expressions and types. (#6800)
* [naga] Move type handle validation into its own function.

* [naga] Forbid cycles between global expressions and types.

Update `valid::handles` to traverse `Module::types` and
`Module::global_expressions` in tandem, to ensure that the types and
expressions are acyclic.

Fixes #6793.
2025-01-08 14:24:57 -05:00
Jim Blandy
0d69482ace [hal/vulkan] Don't advertise features without prerequisites present.
Don't advertise features like `STORAGE_RESOURCE_BINDING_ARRAY` unless
at least one of the features it extends, like `BUFFER_BINDING_ARRAY`
or `TEXTURE_BINDING_ARRAY`, is actually present.

Replace the calls to `all_features_supported` with the equivalent
inline code, and delete the function.
2025-01-08 08:40:19 -08:00
Eddie Hatfield
1f67474140 Add directive keywords to error message for parsing global item (#6723)
Notify the user that they can also use `diagnostic`, `enable`, or
`requires` in this context.

Co-authored-by: Erich Gubler <erichdongubler@gmail.com>
2025-01-08 16:24:03 +00:00
Jim Blandy
eeb79f3b04 [naga wgsl-in] Document front::wgsl::parse::lexer::Lexer. (#6805) 2025-01-08 11:13:06 -05:00
Connor Fitzgerald
a8a91737b2 Switch Binding Arrays on Metal to Argument Buffers (#6751) 2025-01-07 16:00:56 -05:00
Connor Fitzgerald
fabcba8f9a Refine Multi-Draw-Indirect (#6870) 2025-01-07 13:52:42 +01:00
Jamie Nicol
78e35c4a7e [naga wgsl-in] Disallow named component expression for matrix types
The WGSL spec only allows named component expressions when the base
type is a vector or a structure, so this patch removes support for it
for matrices. Additionally tests which used this for matrices have
been updated to use indexing expressions instead, and a test has been
added to ensure a named component expression on a matrix results in an
error.
2025-01-07 13:46:41 +01:00