Jim Blandy
6b85e65f51
[naga spv-out] Rename write_expression_pointer
to write_access_chain
.
...
This function's sole purpose is to generate `OpAccessChain`
instructions, so there's no point in being coy about it.
2024-10-30 21:45:39 -07:00
Erich Gubler
82f9ca6da8
chore(wgsl-in): remove unimplemented directive kinds
2024-10-30 21:40:05 -07:00
Erich Gubler
8c13d8ff56
feat(wgsl-in): parse diagnostic(…)
directives (with unimpl. err.)
2024-10-30 15:39:16 -07:00
Erich Gubler
6934f5ae91
test(naga): add missing variants to DirectiveKind::iter
2024-10-30 15:39:16 -07:00
Erich Gubler
08c9d8c397
chore: bump WGPU workspace crates to 23
2024-10-30 07:14:10 -07:00
dependabot[bot]
1616c24561
build(deps): bump the patch-updates group with 24 updates ( #6470 )
...
Bumps the patch-updates group with 24 updates:
| Package | From | To |
| --- | --- | --- |
| [anyhow](https://github.com/dtolnay/anyhow ) | `1.0.90` | `1.0.91` |
| [serde](https://github.com/serde-rs/serde ) | `1.0.210` | `1.0.213` |
| [thiserror](https://github.com/dtolnay/thiserror ) | `1.0.64` | `1.0.65` |
| [tokio](https://github.com/tokio-rs/tokio ) | `1.40.0` | `1.41.0` |
| [syn](https://github.com/dtolnay/syn ) | `2.0.82` | `2.0.85` |
| [anstream](https://github.com/rust-cli/anstyle ) | `0.6.15` | `0.6.17` |
| [anstyle](https://github.com/rust-cli/anstyle ) | `1.0.8` | `1.0.9` |
| [anstyle-parse](https://github.com/rust-cli/anstyle ) | `0.2.5` | `0.2.6` |
| [anstyle-query](https://github.com/rust-cli/anstyle ) | `1.1.1` | `1.1.2` |
| [anstyle-wincon](https://github.com/rust-cli/anstyle ) | `3.0.4` | `3.0.6` |
| [bytes](https://github.com/tokio-rs/bytes ) | `1.7.2` | `1.8.0` |
| [colorchoice](https://github.com/rust-cli/anstyle ) | `1.0.2` | `1.0.3` |
| [fdeflate](https://github.com/image-rs/fdeflate ) | `0.3.5` | `0.3.6` |
| [minicov](https://github.com/Amanieu/minicov ) | `0.3.5` | `0.3.6` |
| [pin-project](https://github.com/taiki-e/pin-project ) | `1.1.6` | `1.1.7` |
| [pin-project-internal](https://github.com/taiki-e/pin-project ) | `1.1.6` | `1.1.7` |
| [pin-project-lite](https://github.com/taiki-e/pin-project-lite ) | `0.2.14` | `0.2.15` |
| [proc-macro2](https://github.com/dtolnay/proc-macro2 ) | `1.0.88` | `1.0.89` |
| [regex](https://github.com/rust-lang/regex ) | `1.11.0` | `1.11.1` |
| [rustix](https://github.com/bytecodealliance/rustix ) | `0.38.37` | `0.38.38` |
| [serde_derive](https://github.com/serde-rs/serde ) | `1.0.210` | `1.0.213` |
| [thiserror-impl](https://github.com/dtolnay/thiserror ) | `1.0.64` | `1.0.65` |
| [wayland-client](https://github.com/smithay/wayland-rs ) | `0.31.6` | `0.31.7` |
| [wayland-cursor](https://github.com/smithay/wayland-rs ) | `0.31.6` | `0.31.7` |
Updates `anyhow` from 1.0.90 to 1.0.91
- [Release notes](https://github.com/dtolnay/anyhow/releases )
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.90...1.0.91 )
Updates `serde` from 1.0.210 to 1.0.213
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.210...v1.0.213 )
Updates `thiserror` from 1.0.64 to 1.0.65
- [Release notes](https://github.com/dtolnay/thiserror/releases )
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.64...1.0.65 )
Updates `tokio` from 1.40.0 to 1.41.0
- [Release notes](https://github.com/tokio-rs/tokio/releases )
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.40.0...tokio-1.41.0 )
Updates `syn` from 2.0.82 to 2.0.85
- [Release notes](https://github.com/dtolnay/syn/releases )
- [Commits](https://github.com/dtolnay/syn/compare/2.0.82...2.0.85 )
Updates `anstream` from 0.6.15 to 0.6.17
- [Commits](https://github.com/rust-cli/anstyle/compare/anstream-v0.6.15...anstream-v0.6.17 )
Updates `anstyle` from 1.0.8 to 1.0.9
- [Commits](https://github.com/rust-cli/anstyle/compare/v1.0.8...v1.0.9 )
Updates `anstyle-parse` from 0.2.5 to 0.2.6
- [Commits](https://github.com/rust-cli/anstyle/compare/anstyle-parse-v0.2.5...anstyle-parse-v0.2.6 )
Updates `anstyle-query` from 1.1.1 to 1.1.2
- [Commits](https://github.com/rust-cli/anstyle/compare/anstyle-query-v1.1.1...anstyle-query-v1.1.2 )
Updates `anstyle-wincon` from 3.0.4 to 3.0.6
- [Commits](https://github.com/rust-cli/anstyle/compare/anstyle-wincon-v3.0.4...anstyle-wincon-v3.0.6 )
Updates `bytes` from 1.7.2 to 1.8.0
- [Release notes](https://github.com/tokio-rs/bytes/releases )
- [Changelog](https://github.com/tokio-rs/bytes/blob/master/CHANGELOG.md )
- [Commits](https://github.com/tokio-rs/bytes/compare/v1.7.2...v1.8.0 )
Updates `colorchoice` from 1.0.2 to 1.0.3
- [Commits](https://github.com/rust-cli/anstyle/compare/colorchoice-v1.0.2...colorchoice-v1.0.3 )
Updates `fdeflate` from 0.3.5 to 0.3.6
- [Changelog](https://github.com/image-rs/fdeflate/blob/main/CHANGES.md )
- [Commits](https://github.com/image-rs/fdeflate/compare/v0.3.5...v0.3.6 )
Updates `minicov` from 0.3.5 to 0.3.6
- [Changelog](https://github.com/Amanieu/minicov/blob/master/CHANGELOG.md )
- [Commits](https://github.com/Amanieu/minicov/compare/v0.3.5...v0.3.6 )
Updates `pin-project` from 1.1.6 to 1.1.7
- [Release notes](https://github.com/taiki-e/pin-project/releases )
- [Changelog](https://github.com/taiki-e/pin-project/blob/main/CHANGELOG.md )
- [Commits](https://github.com/taiki-e/pin-project/compare/v1.1.6...v1.1.7 )
Updates `pin-project-internal` from 1.1.6 to 1.1.7
- [Release notes](https://github.com/taiki-e/pin-project/releases )
- [Changelog](https://github.com/taiki-e/pin-project/blob/main/CHANGELOG.md )
- [Commits](https://github.com/taiki-e/pin-project/compare/v1.1.6...v1.1.7 )
Updates `pin-project-lite` from 0.2.14 to 0.2.15
- [Release notes](https://github.com/taiki-e/pin-project-lite/releases )
- [Changelog](https://github.com/taiki-e/pin-project-lite/blob/main/CHANGELOG.md )
- [Commits](https://github.com/taiki-e/pin-project-lite/compare/v0.2.14...v0.2.15 )
Updates `proc-macro2` from 1.0.88 to 1.0.89
- [Release notes](https://github.com/dtolnay/proc-macro2/releases )
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.88...1.0.89 )
Updates `regex` from 1.11.0 to 1.11.1
- [Release notes](https://github.com/rust-lang/regex/releases )
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/regex/compare/1.11.0...1.11.1 )
Updates `rustix` from 0.38.37 to 0.38.38
- [Release notes](https://github.com/bytecodealliance/rustix/releases )
- [Changelog](https://github.com/bytecodealliance/rustix/blob/main/CHANGELOG.md )
- [Commits](https://github.com/bytecodealliance/rustix/compare/v0.38.37...v0.38.38 )
Updates `serde_derive` from 1.0.210 to 1.0.213
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.210...v1.0.213 )
Updates `thiserror-impl` from 1.0.64 to 1.0.65
- [Release notes](https://github.com/dtolnay/thiserror/releases )
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.64...1.0.65 )
Updates `wayland-client` from 0.31.6 to 0.31.7
- [Release notes](https://github.com/smithay/wayland-rs/releases )
- [Changelog](https://github.com/Smithay/wayland-rs/blob/master/historical_changelog.md )
- [Commits](https://github.com/smithay/wayland-rs/commits )
Updates `wayland-cursor` from 0.31.6 to 0.31.7
- [Release notes](https://github.com/smithay/wayland-rs/releases )
- [Changelog](https://github.com/Smithay/wayland-rs/blob/master/historical_changelog.md )
- [Commits](https://github.com/smithay/wayland-rs/commits )
---
updated-dependencies:
- dependency-name: anyhow
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: patch-updates
- dependency-name: serde
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: patch-updates
- dependency-name: thiserror
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: patch-updates
- dependency-name: tokio
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: anstream
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: patch-updates
- dependency-name: anstyle
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: patch-updates
- dependency-name: anstyle-parse
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: patch-updates
- dependency-name: anstyle-query
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: patch-updates
- dependency-name: anstyle-wincon
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: patch-updates
- dependency-name: bytes
dependency-type: indirect
update-type: version-update:semver-minor
dependency-group: patch-updates
- dependency-name: colorchoice
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: patch-updates
- dependency-name: fdeflate
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: patch-updates
- dependency-name: minicov
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: patch-updates
- dependency-name: pin-project
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: patch-updates
- dependency-name: pin-project-internal
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: patch-updates
- dependency-name: pin-project-lite
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: regex
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: patch-updates
- dependency-name: rustix
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: patch-updates
- dependency-name: serde_derive
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: patch-updates
- dependency-name: thiserror-impl
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: patch-updates
- dependency-name: wayland-client
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: patch-updates
- dependency-name: wayland-cursor
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: patch-updates
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-29 08:25:41 +01:00
atlv
64a61ee5c6
refactor texture format to scalar conversion ( #6451 )
...
Co-authored-by: Erich Gubler <erichdongubler@gmail.com>
2024-10-23 20:06:40 +00:00
Erich Gubler
a8c9356023
docs(naga): docs. link for language_extension
mod.
2024-10-23 11:20:17 -04:00
Erich Gubler
77a757ba9e
diag(naga): add def. article and noun qual. to DirectiveNotYetImplemented
2024-10-23 11:20:17 -04:00
Erich Gubler
fc0a488246
docs(naga): use hyphenated "enable-extension" noun like spec.
2024-10-23 11:20:17 -04:00
Erich Gubler
64884d1eba
diag(naga): add def. article to EnableExtensionNotYetImplemented
2024-10-23 11:20:17 -04:00
Erich Gubler
18f33b0474
feat: implement requires
directives
2024-10-23 11:01:46 -04:00
Erich Gubler
bdd923d3a7
refactor: narrow {,Unimplemented}DirectiveKind
to pub(crate)
2024-10-23 10:59:29 -04:00
teoxoy
207747cab5
[hlsl-out] add support for restricting indexing to avoid OOB accesses
2024-10-23 16:51:44 +02:00
teoxoy
3199a3a6b0
refactor access_needs_check
to take a reference to the expression arena
2024-10-23 16:51:44 +02:00
Erich Gubler
d539466997
feat(wgsl-in): use more general enable
-not-set diag. w/ unimpl. hint
2024-10-22 16:31:07 -04:00
Erich Gubler
bf4cd9cd31
feat(wgsl-in): create skeleton for enable
directives
...
Co-Authored-By: FL33TW00D <chris@fleetwood.dev>
2024-10-22 16:31:07 -04:00
Erich Gubler
54861b712c
refactor: add Parser::directive_ident_list
helper
2024-10-22 16:31:07 -04:00
Erich Gubler
6f43ee9f17
fix(naga): use Diagnostic
from inner
in valid. err. presentation
...
For some reason, the implementation of `Display` for
`ShaderError<WithSpan<ValidationError>>>` is building its own
`Diagnostic` with _only_ the labels populated: no messages or notes.
I don't know why this is, but it seems to have a strict subset of the
information already present in the private implementation of
`WithSpan::diagnostic`.
Fix this by exposing `WithSpan::diagnostic` as `pub(crate)`, and
re-using its output in `impl Display for
ShaderError<WithSpan<ValidationError>>>`.
2024-10-22 14:42:27 -04:00
Erich Gubler
36fab5ce3d
fix(msl-out): use namer
for <fun>{Input,Output}
structs
2024-10-22 10:14:26 -04:00
Erich Gubler
2302b5fac6
test: add regr. cvg. for conflicting idents. in shader I/O and locals
2024-10-22 10:14:26 -04:00
dependabot[bot]
e06f10e0a4
build(deps): bump crate-ci/typos from 1.24.6 to 1.26.0 ( #6399 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
2024-10-21 00:23:43 +00:00
Erich Gubler
b3f665be7d
feat(wgsl-in): create skeleton for parsing directives
2024-10-18 16:08:46 -04:00
Erich Gubler
cb31465811
refactor(wgsl-in): add Lexer::peek_ident_with_span
...
1. Break out `word_as_ident*` helpers to keep validation of identifiers
DRY.
2. Add `peek_*` variant of `Lexer::next_ident_with_span`.
This will be consumed immediately in the subsequent commit.
2024-10-18 16:08:46 -04:00
Jasper St. Pierre
1b2ef8612d
naga: Add support for textureQueryLevels to GLSL parser ( #6415 )
2024-10-18 10:07:58 +02:00
Xiaopeng Li
74ef445bca
ADD metal namespace for uint4 ( #6417 )
2024-10-17 11:45:29 +02:00
Erich Gubler
f2faf609af
refactor(glsl-out): hoist new if let TypeInner::Struct
out of varying_required_features
( #6230 )
2024-10-14 12:45:32 +02:00
FL33TW00D
f842d80f52
chore: note: round_ties_even
is on stable, but not MSRV yet
...
Co-Authored-By: Erich Gubler <erichdongubler@gmail.com>
2024-10-14 06:43:53 -04:00
Erich Gubler
a13e710956
chore: satisfy unused_qualifications
(again)
...
Regressed by
[#6354 ](https://github.com/gfx-rs/wgpu/pull/6354/files#diff-1dd0973ceb242a02442d33e422f9dff40e007b505d0ee726613e1763e61e768dR2809 )
(CC @jimb). Hopefully will get plugged by
[#6105 ](https://github.com/gfx-rs/wgpu/pull/6105/ ).
2024-10-11 12:27:34 -07:00
Erich Gubler
d22aa2eb55
chore: format TOML files with taplo
0.9.3
2024-10-11 14:40:01 -04:00
Schell Carl Scivally
76b1605090
[spv-in] sampling from depth textures returns a scalar and is splatted ( #6384 )
2024-10-11 20:24:16 +02:00
Jim Blandy
1047fa57f0
[naga] Move array-by-value snapshot tests to index-by-value.wgsl.
2024-10-11 08:27:15 -07:00
Jim Blandy
ed3006ccc6
[naga spv-out] Spill arrays and matrices for runtime indexing.
...
Improve handling of `Access` expressions whose base is an array or
matrix (not a pointer to such), and whose index is not known at
compile time. SPIR-V does not have instructions that can do this
directly, so spill such values to temporary variables, and perform the
accesses using `OpAccessChain` instructions applied to the
temporaries.
When performing chains of accesses like `a[i].x[j]`, do not reify
intermediate values; generate a single `OpAccessChain` for the entire
thing.
Remove special cases for arrays; the same code now handles arrays and
matrices.
Update validation to permit dynamic indexing of matrices.
For details, see the comments on the new tracking structures in
`naga:🔙 :spv::Function`.
Add snapshot test `index-by-value.wgsl`.
Fixes #6358 .
Fixes #4337 .
Alternative to #6362 .
2024-10-11 08:27:15 -07:00
Jim Blandy
475a716822
[naga spv-out] Let write_checked_load
take AccessTypeAdjustment
.
...
Let `BlockContext::write_checked_load` take an `AccessTypeAdjustment`
argument, so that the caller can choose what adjustment to apply to
`pointer`.
2024-10-11 08:27:15 -07:00
Jim Blandy
26a95fd270
[naga spv-out] Add some tracing output to Writer::write_function
.
2024-10-11 08:27:15 -07:00
Jim Blandy
436ffba77a
[naga spv-out] Introduce Writer::get_resolution_pointer_id
.
...
Introduce a new helper function,
`naga:🔙 :spv::Writer::get_resolution_pointer_id`. Use it in
`BlockContext::write_expression_pointer`.
2024-10-11 08:27:15 -07:00
Jim Blandy
0f17ad6455
[naga] Add new function, GuardedIndex::from_expression
.
...
Pull out the code to build a `naga::proc::index::GuardedIndex` from a
`Handle<Expression>` into its own function,
`GuardedIndex::from_expression`. Use that function in
`GuardedIndex::try_resolve_to_constant`.
2024-10-11 08:27:15 -07:00
Jim Blandy
0392613b5a
[naga spv-out] Abstract out NumericType::from_inner
.
...
Pull out the code for building a `naga:🔙 :spv::NumericType` from a
`TypeInner` into its own function, `NumericType::from_inner`. Use that
in `LocalType::from_inner`.
2024-10-11 08:27:15 -07:00
Jim Blandy
4427ff9622
[naga spv-out] Use crate::proc::index::GuardedIndex
.
...
Replace qualified paths with a `use` directive.
2024-10-11 08:27:15 -07:00
Jim Blandy
57b8858f96
[naga spv-out] Gather array, matrix, and vector cases.
...
This commit is just code motion.
2024-10-11 08:27:15 -07:00
Jim Blandy
f9075fc4b8
[naga] Test access to a member/element through a pointer.
2024-10-11 08:27:15 -07:00
Jim Blandy
b9f1e4a266
[naga spv-out] Clean up write_expression_pointer
type adjustment.
...
Replace the `return_type_override` argument of
`BlockContext::write_expression_pointer` with an enum that says how to
derive the return type from `expr_handle`'s type.
Introduce a new type, `AccessTypeAdjustment`, that covers possible
derivation rules.
This simplifies callers and the callee, in part by making the possible
alternatives less general, and by giving them explicit names (the
variants of the `AccessTypeAdjustment` enum).
2024-10-11 08:27:15 -07:00
Jim Blandy
d034c4b428
[naga spv-out] Move code to load a pointer into its own function.
...
Introduce a new function,
`naga:🔙 :spv::BlockContext::write_checked_load`, that does the
work of `Expression::Load`.
This change is just code motion, and should have no effect on
behavior. The new function will be used in later commits.
2024-10-11 08:27:15 -07:00
Ronny Chan
73764fdc6a
[naga/wgsl-out]: polyfill inverse
function ( #6385 )
2024-10-11 15:56:12 +02:00
Jim Blandy
ae52e5dc96
[naga spv-out] Delete BlockContext::is_intermediate
; use types.
...
Delete the function `BlockContext::is_intermediate`. Instead, have
`Access` and `AccessIndex` instructions decide whether to defer code
generation based on the type of the base expression: indexing
operations on pointers are deferred; anything else is not.
2024-10-10 07:42:02 -07:00
Jim Blandy
5c6b00886e
[naga spv-out] Simplify Writer::get_pointer_id
.
...
Simplify the definition of `naga:🔙 :spv::Writer::get_pointer_id`
by using `get_type_id`'s ability to handle `LocalType::Pointer`.
This means that `get_pointer_id` is no longer fallible, and no longer
needs a type arena. Simplify callers, as well as the
`BlockContext::get_pointer_id` convenience function.
2024-10-10 07:41:35 -07:00
Jim Blandy
908e8353a8
[naga spv-out] Expand LocalType to permit pointers to matrices.
...
In `back::spv`:
- Factor out the numeric variants of `LocalType` into a
new enum, `NumericType`.
- Split the `Value` variant into `Numeric` and `LocalPointer`
variants, and let `LocalPointer` point to any numeric type,
including matrices.
In subsequent commits, we'll need to spill matrices out into temporary
local variables. This means we'll need to generate SPIR-V
pointer-to-matrix types, so `LocalType` needs to be able to represent
that.
2024-10-10 07:41:15 -07:00
Jim Blandy
0392cb783d
[naga spv-out] Rename make_local
to LocalType::from_inner
.
...
Change the free function `back::spv::make_local` into an associated
function `LocalType::from_inner`.
2024-10-10 07:41:15 -07:00
Asher Jingkong Chen
bf33e481f3
[naga msl-out] Implement atomicCompareExchangeWeak for MSL backend ( #6265 )
2024-10-10 12:45:24 +02:00
Jim Blandy
3693da27f9
[naga spv-out] Bounds-check runtime-sized array access correctly.
...
Do not neglect to apply bounds checks to indexing operations on
runtime-sized arrays, even when they are accessed via an `AccessIndex`
instruction.
Before this commit, `BlockContext::write_expression_pointer` would not
apply bounds checks to `OpAccessChain` indices provided by an
`AccessIndex` instruction, apparently with the rationale that any
out-of-bounds accesses should have been reported by constant
evaluation.
While it is true that the `index` operand of an `AccessIndex`
expression is known at compile time, and that the WGSL constant
evaluation rules require accesses that can be statically determined to
be out-of-bounds to be shader creation or pipeline creation time
errors, accesses to runtime-sized arrays don't follow this pattern:
even if the index is known, the length with which it must be compared
is not.
Fixes #4441 .
2024-10-08 11:53:15 -07:00