933 Commits

Author SHA1 Message Date
Connor Fitzgerald
dc01e6e213
Normalize logging levels (#8579) 2025-11-27 10:55:02 +01:00
Martin Svanberg
f114138e52
Support STORAGE_RESOURCE_BINDING_ARRAY on Metal (#8464) 2025-11-26 20:18:10 -05:00
Moritz Zielke
3a157f7497
test(naga): assert error for ImageStore type mismatch (#8494) 2025-11-26 12:51:58 -05:00
Andy Leiserson
119b4efada
[naga wgsl-in] Short-circuiting of && and || operators (#7339)
Addresses parts of #4394 and #6302
2025-11-19 17:06:49 -08:00
David Rivera
1f99103be8 [naga msl-out] Annotate dot product functions as wrapped functions 2025-11-19 10:40:21 -08:00
Andy Leiserson
e620027f95 [naga] Move some helper functions to type_methods 2025-11-19 10:40:21 -08:00
Vecvec
7ba1a0e41c
Add enable extensions for ray queries and ray query vertex returns. (#8545) 2025-11-18 15:56:47 -05:00
Vecvec
efca3f5066
[spirv] Make ray queries safer (#8390) 2025-11-13 00:33:32 -05:00
Inner Daemons
a05c70cef7
WGSL parsing for mesh shaders (#8370)
Co-authored-by: Jim Blandy <jimb@red-bean.com>
Co-authored-by: Erich Gubler <erichdongubler@gmail.com>
Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
Co-authored-by: SupaMaggie70Incorporated <85136135+SupaMaggie70Incorporated@users.noreply.github.com>
2025-11-12 21:06:20 -05:00
Jim Blandy
2e34322f9a
[naga] De-indent mainline control flow in interface validation. (#8359)
In `naga::valid::interface::VaryingContext::validate`, use `let else`
instead of `match`, to promote the main flow of control to a lower
indentation level, and move error reporting closer to the check that
failed.
2025-11-05 13:45:38 -05:00
Inner Daemons
ad0f3111b7
Add multiview limits and tests (#8206)
Co-authored-by: Andreas Reich <r_andreas2@web.de>
Co-authored-by: Magnus <85136135+SupaMaggie70Incorporated@users.noreply.github.com>
2025-11-01 12:08:15 +00:00
Inner Daemons
bf9f7524ec
Add mesh shading info to naga IR (#8104)
Co-authored-by: Jim Blandy <jimb@red-bean.com>
Co-authored-by: SupaMaggie70Incorporated <85136135+SupaMaggie70Incorporated@users.noreply.github.com>
2025-10-29 14:49:51 -04:00
atlv
7a2afeb014
fix(vulkan): remove atomic memory semantics (#8391) 2025-10-29 13:21:56 -04:00
atlv
ddcd89fd69
Implement shader barycentrics (#8320) 2025-10-29 13:15:21 -04:00
Erich Gubler
18f4ed66c0
chore: satisfy unused_parens lint (#8424) 2025-10-23 18:35:18 -04:00
withtimezone
4ea04a69c9
chore: remove repetitive words in comment (#8385) 2025-10-20 14:42:54 -04:00
Sam
6e76a98c99
[naga const-eval] LiteralVector and some demo builtins (#8223)
* [naga] Add `LiteralVector` and `match_literal_vector!`

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

* [naga] Implement builtins dot, length, distance, normalize in const using LiteralVector

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

* Update snapshots

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

---------

Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
Co-authored-by: SelkoSays <70065171+SelkoSays@users.noreply.github.com>
2025-10-18 07:28:09 -04:00
Teodor Tanasoaia
1072b87894
Fix stray comma in function signatures in Metal (#8311)
Fixes a regression introduced by #8265 where we were mistakenly writing a comma before the first buffer argument (if no other arguments were printed before it).
2025-10-06 18:59:45 +00:00
Connor Fitzgerald
ad15442b89
Improve error message when image write without format used (#8294) 2025-10-06 19:25:25 +02:00
Connor Fitzgerald
482a983e10
Release v27 (#8287) 2025-10-01 19:36:18 -04:00
renovate[bot]
9380b87755
chore(deps): update cargo.lock (#8229)
Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
2025-10-01 22:42:49 +00:00
Jim Blandy
43eccd28f8
[naga] Remove naga::path_like. Use String instead. (#8284)
Delete the `naga::path_like` module, and simply using `String` and
`str` instead.

Nothing in Naga uses `Path` or `PathBuf` methods; indeed, Naga only
converts these values back and forth from string-like types with
`to_string_lossy` and `into`, such that using string-like, rather than
path-like, types actually simplifies the code.

This also avoids dead code warnings starting in Rust 1.89 that would
otherwise require distracting `#[cfg_attr]` conditionals.
2025-10-01 18:08:18 +02:00
Erich Gubler
5146b3f8ae fix(namer): normalize ":<>," characters to a snake case separator 2025-10-01 08:50:37 -04:00
Erich Gubler
90702156af fix(namer): escape, rather than strip, non-ASCII ident. characters
Escape non-ASCII identifier characters with `write!(…, "u{:04x}", …)`,
surrounding with `_` as appropriate. This solves (1) a debugging issue
where stripped characters would otherwise be invisible, and (2) failure
to re-validate that stripped identifiers didn't start with an ASCII
digit.

I've confirmed that this fixes [bug
1978197](https://bugzilla.mozilla.org/show_bug.cgi?id=1978197) on the
Firefox side.
2025-10-01 08:50:37 -04:00
Erich Gubler
06fc6f7345
feat(wgsl): recognize enable primitive-index; (#8237) 2025-09-30 22:02:10 +00:00
Nils Hasenbanck
8c4aebc0c1
(Naga) Implement OpImageGather and OpImageDrefGather when ingesting SPIR-V (#8280) 2025-09-29 13:15:32 -04:00
Nils Hasenbanck
8cb94db802
(Naga) Add support for Storage Image Multisample when ingesting SPIR-V (#8270) 2025-09-29 11:45:39 -04:00
Andy Leiserson
a01ffb7967
Fix unused warning in a specific feature config (#8271) 2025-09-29 11:44:05 -04:00
Teodor Tanasoaia
ce96254f4f
[msl] fix vertex pulling with a stride of 0 (#8265) 2025-09-26 13:37:37 -04:00
Nils Hasenbanck
2f7ebf1401
(Naga) Add support for Descriptor Runtime Indexing when ingesting SPIR-V (#8256) 2025-09-25 08:25:04 -04:00
Magnus
05cc6dca82
[hal/dx12] Mesh Shaders (#8110)
* Features and draw commands added

* Tried to implement the pipeline creation (completely untested)

* Fixed clippy issues

* Fixed something I think

* A little bit of work on the mesh shader example (currently doesn't work on dx12)

* Reached a new kind of error state

* Fixed an alignment issue

* DirectX 12 mesh shaders working :party:

* Removed stupid change and updated changelog

* Fixed typo

* Added backends option to example framework

* Removed silly no write fragment shader from tests to see if anything breaks

* Tried to make mesh shader tests run elsewhere too

* Removed printlns and checked that dx12 mesh shader tests run

* Documented very strange issue

* I'm so lost

* Fixed stupid typos

* Fixed all issues

* Removed unnecessary example stuff, updated tests

* Updated typos.toml

* Updated limits

* Apply suggestion from @cwfitzgerald

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

* Apply suggestion from @cwfitzgerald

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

* Removed supported backends, made example & tests always pass the filename to shader compilers

* Removed excessive bools in test params

* Added new tests to the list

* I'm a sinner for this one (unused import)

* Replaced random stuff with test params hashing

* Updated typos.toml

* Updated -Fo typo thing

* Actually fixed typo issue this time

* Update CHANGELOG.md

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

* Update tests/tests/wgpu-gpu/mesh_shader/mod.rs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update wgpu-hal/src/dx12/mod.rs

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

* Addressed comments

* Lmao

---------

Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-25 03:24:56 +00:00
Andy Leiserson
1f10d0ce8a
[naga] Don't report shader errors as their own source (#8258) 2025-09-24 22:42:24 -04:00
Sam
084431b548
[naga] Implement atan2 in const (#8222)
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
2025-09-24 11:23:25 -07:00
Cai Bear
d2ee4b8be5
Fix #8151. (#8215) 2025-09-24 16:03:58 +00:00
Jamie Nicol
ba0b6b9b0e [vulkan, naga spv-out] Remap resource bindings
In order to support external textures, we must be able to map a single
external texture resource binding to multiple Vulkan descriptors. This
means we must be able to override the `Binding` and `DescriptorSet`
values for global variables when generating SPIR-V, rather than simply
passing through the group and binding values from Naga IR.

This patch extends the existing SPIR-V Naga backend's `BindingMap` to
contain a descriptor set and binding value in addition to the existing
array size. When creating BindGroupLayouts/BindGroups we use a
sequentially incrementing value for each entry's binding value,
continuing to just use the bind group index as the descriptor set
value.

The Naga backend looks up each resource in the map when emitting its
`Binding` and `DescriptorSet` decorations. If the entry cannot be
found in the map, it will either error or emit fake bindings based on
its configuration.
2025-09-24 17:55:35 +02:00
EriKWDev
3efd640178
naga: Correct spelling in wgsl parsing rg11b10float -> rg11b10ufloat (#8219) 2025-09-21 10:41:17 +00:00
Teodor Tanasoaia
0b38e96379
[msl] vertex pulling: fix unpacking snorm16x2 & snorm16x4 (#8249) 2025-09-19 18:11:31 -04:00
Matthias Reitinger
b55c24cf27
[naga wgsl-in] Allow trailing comma in switch cases (#8165) 2025-09-16 07:58:23 -04:00
Magnus
54ce9f7f98
Update shader bencher to share some logic with snapshots (#8108)
Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
2025-09-11 00:55:42 +00:00
Andy Leiserson
d31d944ed5
Clarify the effect of the SUBGROUP features and capabilities (#8203) 2025-09-10 20:53:56 -04:00
Jamie Nicol
12c8b378a1
[naga wgsl-in] add "texture_external" to reserved keyword list (#8178) 2025-09-01 08:37:42 -04:00
Andy Leiserson
03513e8f90 chore(tests): add issue links for TODOs 2025-08-28 13:58:36 -07:00
Andy Leiserson
4a7b6abb19 Add F16_IN_F32 downlevel flag for pack/unpack/quantize f16 (#8130)
Although the operation of these functions is defined in terms of f16
semantics, the input/output types are not f16, and they are generally
available even when native `f16` support is not. But in at least one
case, they are only available with `f16` support, so add a new downlevel
flag that is cleared when these functions are not available.

Add some infrastructure to simplify testing of missing
capabilities/extensions, and add tests for a few more kinds of f16
usage.

Co-authored-by: Erich Gubler <erichdongubler@gmail.com>
2025-08-28 13:58:36 -07:00
Andy Leiserson
1689c56ee3 refactor(naga): use explicit \x20 in error output instead of trailing spaces 2025-08-28 13:58:36 -07:00
Andy Leiserson
e939bf273a feat(naga): expose {,Implemented}EnableExtension 2025-08-28 13:58:36 -07:00
Andy Leiserson
2e78c5b061 typo: s/investiagate/investigate 2025-08-28 13:58:36 -07:00
Kevin Reid
1c8d769b67
[naga] Introduce KeywordSet and CaseInsensitiveKeywordSet. (#8136) 2025-08-27 23:42:02 -04:00
Erich Gubler
dd73743e78
fix(wgsl-in): accept trailing comma in @blend_src(…) attr. (#8137) 2025-08-24 11:37:19 -07:00
Jamie Nicol
2c6f06a82b [naga msl-out] Implement support for external textures
This adds MSL backend support for `ImageClass::External`. (ie WGSL's
`external_texture` texture type). This is implemented very similarily
to the HLSL implementation in #7826.

Each external texture global variable is lowered to 3 `texture2d`s and
a buffer of type NagaExternalTextureParams. As usual in Naga's MSL
backend, these are passed as arguments to the entry point. The
bindings for each of these arguments are provided via the usual
binding map, using a new `BindExternalTextureTarget` variant of
`BindTarget`.

Unlike HLSL, MSL allows textures to be used as fields in structs. We
therefore immediately wrap these variables in a
`NagaExternalTextureWrapper` struct. This wrapper can then
conveniently be passed to either user-defined functions or builtin
implementations that accept an external texture.

The WGSL builtins `textureDimensions()`, `textureLoad()`, and
`textureSampleBaseClampToEdge()` are implemented using wrapper
functions using the regular `write_wrapped_functions()` machinery.
2025-08-21 12:35:19 +01:00
Jamie Nicol
2cada72dfb [naga] Make external texture snapshot test call textureLoad() with both vec2<i32> and vec2<i32> coordinates
The HLSL external texture implementation didn't have to do anything in
particular to handle both coordinate types, as int2 automatically gets
promoted to uint2. But in MSL this is not the case, and it is
therefore important to test that we correctly handle both coordinate
types.
2025-08-21 12:35:19 +01:00