Jim Blandy
6701e2bf96
Avoid non-exhaustive matches on Expression.
...
Non-exhaustive matches on `Expression` make it harder to review changes that add
new enum variants, because the compiler can't tell you that you've missed a
case.
Although I believe Clippy is able to do so, I don't think we should make a
blanket rule of forbidding wildcard match arms against `Expression`. There are a
few matches that are only concerned with a handful of variants, or a single
variant. For example, variant, naga::front::spv::Parser::next_block is only
concerned with whether an expression is a constant or not. In principle, these
sites should also be checked when adding a new variant, but it seems too
burdensome to require them to list all the `Expression` variants they don't care
about. The principle should be applied only to matches that are already handling
most variants.
At the moment, there is only one such match on `Expression` in the code base,
and it's only missing a few variants, so this is quick to fix.
2021-04-14 16:11:37 -04:00
Dzmitry Malyshau
c2c93e4ecd
Remove cargo-insta
2021-04-14 16:10:31 -04:00
Jim Blandy
f7fdf6b560
Makefile: Be more flexible in removing YAML headers from snapshots.
...
The snapshot files in tests/out start with headers like this:
---
source: tests/snapshots.rs
expression: dis
---
; SPIR-V
; Version: 1.0
; Generator: rspirv
...
The Makefile's `validate-foo` targets trim off those lines with `tail -n +5`
before submitting their test to the validators.
However, some versions of the `insta` crate seem to generate headers with an
extra blank line, like this:
---
source: tests/snapshots.rs
expression: dis
---
This makes the `validate-foo` targets unhappy.
This commit changes the `validate-foo` targets to use `sed` to cope with both
kinds of headers.
2021-04-13 23:43:55 -04:00
Dzmitry Malyshau
3f57e4db5a
Enable texture-array snapshot on Metal
2021-04-13 01:31:57 -04:00
Dzmitry Malyshau
2923cfb3aa
[spv-in] claim Vulkan Memory Model support
2021-04-13 01:31:57 -04:00
Dzmitry Malyshau
270feb3c0f
[msl] map push constants to buffers
2021-04-13 01:31:57 -04:00
Dzmitry Malyshau
9cd2b04c04
[spv-out] put matrix decorations on arrays of matrices ( #712 )
2021-04-12 12:12:19 -04:00
Ashley
202d3a6912
Add metal constants to keywords ( #709 )
2021-04-11 14:36:29 -04:00
Ashley
640bfb1f26
[Metal] Make constant composites non-constexpr ( #707 )
...
* Make constant composites non-constexpr
* Update shadow test
2021-04-11 14:21:47 -04:00
Ashley
98db1dedcd
Add a note about references and pointers to Expression::Load ( #708 )
...
* Add a note about references and pointers to Expression::Load
* Formatting
* Remove comma
* Clearer English
2021-04-11 14:21:02 -04:00
Ashley
3b4acc5300
[Metal] Handle length(float) and distance(float, float) ( #706 )
...
* Handle length(float x)
* Handle length(float) and distance(float, float)
* Apply suggestions
* Apply suggestions
* Move stack size range up by 1000
2021-04-11 13:01:31 -04:00
Ashley
30180c008b
[Metal] Change the function argument pointer type to use & instead of * ( #693 )
...
* Take references in function calls if thats what the funciton wants
* Use references instead of pointers the function argument list
2021-04-11 12:48:22 -04:00
Ashley
9549b26a90
Add the reserved types in metal_types to metal keywords ( #705 )
2021-04-11 12:32:01 -04:00
Timo de Kort
5d487941b2
Start hlsl-out ( #408 )
...
* Add hlsl-out feature
* Integrate hlsl-out with snapshots
* Add snapshot
2021-04-11 11:36:26 -04:00
Ashley
a8f1022b12
[Metal] Handle NaN and inf correctly in constants ( #704 )
...
* Handle NaN and inf
* Handle negative infinity
2021-04-11 11:06:23 -04:00
Mehmet Oguz Derin
142038c85b
WGSL: const to let
2021-04-11 01:24:19 -04:00
Simas Toleikis
98252cf5d2
Fix validation for textureDimensions(t) call.
2021-04-10 18:19:42 -04:00
Ashley Ruglys
1fc88319e8
Serialize mtl EntryPointError
2021-04-09 19:57:12 -04:00
Matúš Talčík
44a6c02cda
spv-in: special-case a loop with true/false node == merge node
...
beautify
beautify #2
2021-04-09 17:17:02 -04:00
Dzmitry Malyshau
67e3e0a697
[spv-in] work around row-major matrices
2021-04-09 11:22:13 -04:00
Dzmitry Malyshau
0cc22c8c65
[spv-in] move the matrix decoration handling to structure parsing
2021-04-09 11:22:13 -04:00
Dzmitry Malyshau
425c75eb3f
[msl-out] emit packed vectors if necessary
2021-04-09 00:48:18 -04:00
Dzmitry Malyshau
f3ba6e91c2
[msl-out] shorten the expression name
2021-04-09 00:48:18 -04:00
Dzmitry Malyshau
4ff5fa4568
[msl-out] add support for matrix value types
2021-04-09 00:48:18 -04:00
Dzmitry Malyshau
604e10e19b
Rewrite IR to have member offsets, full structure span and alignment
2021-04-08 23:15:03 -04:00
Dzmitry Malyshau
7326ba6ddb
New struct layout IR
2021-04-08 23:15:03 -04:00
Jim Blandy
5a0e3ad5ff
[spv-out]: Add some local use declarations to the SPIR-V writer.
...
This adds `use` declarations for `spirv::Decoration` and `spirv::BuiltIn` local
to functions where those are used repeatedly.
2021-04-08 20:27:48 -04:00
LaughingMan
d0d9e09cdb
[spv-in] Copy less bytes in parse_function
...
The initial intention was to make the code a little more elegant and match on
the Vec itself instead of its length, however there's also a - probably
minuscule - performance advantage:
`Vec::remove` internally copies the removed element onto the stack. In this case
that's a `StructMember` weighting 48 bytes. The `Binding` we are actually
interested in is only 8 bytes tough.
Cloning just the `Binding` saves us from copying 40 bytes for nothing.
2021-04-08 13:10:56 -04:00
Dzmitry Malyshau
6166b95b6a
[msl] inline some of the constants
2021-04-08 12:36:43 -04:00
Dzmitry Malyshau
2774dcb403
[msl] inline some of the types
2021-04-08 11:10:52 -04:00
Dzmitry Malyshau
f1c5e04b89
[msl] fix select() arguments
2021-04-08 11:10:52 -04:00
Dzmitry Malyshau
e06451777e
[msl] address review comments, rename SubOptions to PipelineOptions, add more inlined states
2021-04-07 22:49:13 -04:00
Dzmitry Malyshau
499f2e3cbe
[msl] add a snapshot test for inline sampler
2021-04-07 22:49:13 -04:00
Dzmitry Malyshau
7c11759041
Re-use the MSL types in snapshot code
2021-04-07 22:49:13 -04:00
Dzmitry Malyshau
9e09c792dc
[msl] write down inline samplers
2021-04-07 22:49:13 -04:00
Dzmitry Malyshau
dcbedd17d0
[msl] basic infrastructure for inline samplers
...
Also move out "allow_point_size" into SubOptions to allow
main Options to not be cloned.
2021-04-07 22:49:13 -04:00
Jim Blandy
2da7477322
[wgsl-in] Decorations are now called attributes. ( #671 )
...
Renames:
Error::UnknownDecoration => Error::UnknownAttribute
TypeDecoration => TypeAttributes
Scope::Decoration => Scope::Attribute
various argument names, string literals, comments
2021-04-07 22:45:38 -04:00
Zakarum
ccb6dc9088
Panic to prevent arena Handle overflow ( #667 )
...
* Panic to prevent arena Handle overflow
* Use `NonZeroU32::new` to detect overflow
2021-04-07 14:00:40 -04:00
adamnemecek
0058ce5a7d
fixed bug where metal backend would make all switch cases fallthrough
2021-04-04 18:30:04 -04:00
Dzmitry Malyshau
0369ee181e
[spv-out] fix sampling from depth textures
2021-04-04 10:25:46 -04:00
Dzmitry Malyshau
a9bde26785
[spv-out] fix incorrect dummy result
2021-04-04 10:25:46 -04:00
Dzmitry Malyshau
410c242daf
[spv-out] add a flag to adjust the coordinate space
2021-04-03 11:27:21 -04:00
Dzmitry Malyshau
ead052b773
[spv-in] add a flag to adjust the coordinate space
2021-04-03 11:27:21 -04:00
Dzmitry Malyshau
100c2f42ed
[spv-out] cache access index constants
2021-04-03 11:27:21 -04:00
Dzmitry Malyshau
5673603bab
[spv-out] flip position Y
2021-04-03 11:27:21 -04:00
Dzmitry Malyshau
ab54f683be
[spv-in] flip Y axis
2021-04-03 11:27:21 -04:00
Dzmitry Malyshau
4389a86787
Fix layout roundup
2021-04-03 00:41:32 -04:00
Dzmitry Malyshau
d4d9d7814f
[msl-out] option to omit point size output
2021-04-02 00:19:52 -04:00
Dzmitry Malyshau
8ff27187d1
Fix matrix multiplication types
2021-04-01 15:49:37 -04:00
Dzmitry Malyshau
cbdfbed32e
[msl-out] move return value statement into a function
2021-04-01 15:45:08 -04:00