Commit Graph

749 Commits

Author SHA1 Message Date
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