Commit Graph

684 Commits

Author SHA1 Message Date
Dzmitry Malyshau
77a64da189 [spv-out] support function arguments as pointers 2021-04-24 01:54:48 -04:00
Dzmitry Malyshau
34b830da17 [spv-in] work around sign differences in OpIAdd and OpISubtract 2021-04-24 01:00:33 -04:00
Dzmitry Malyshau
64856a808e [spv-in] refactor image coordinate extraction 2021-04-24 00:12:31 -04:00
João Capucho
7135c051b4 [glsl-in] Support for function parameters with In 2021-04-23 22:15:16 -04:00
João Capucho
2b8b5a271d [glsl-in] Implement textureLod 2021-04-23 22:15:16 -04:00
João Capucho
62e3ba4bcc [glsl-in] Fix type constructor of vec/matrix 2021-04-23 22:15:16 -04:00
João Capucho
6247f2c822 [glsl-in] Load local variables 2021-04-23 22:15:16 -04:00
João Capucho
076349ddf7 [glsl-in] Export types to allow for error handling 2021-04-23 22:15:16 -04:00
Gordon-F
3accf4dc15 Improve wgsl-out 2021-04-23 16:36:49 -04:00
Dzmitry Malyshau
02105db045 [spv-out] image queries (#749) 2021-04-23 12:31:33 -04:00
Ashley
36bace2b41 Set is_scoped to false when evaluating a swizzle subexpression (#761) 2021-04-23 11:53:07 -04:00
Dzmitry Malyshau
0725417193 Allow indexing value pointers (#758) 2021-04-23 01:19:48 -04:00
Dzmitry Malyshau
0917e3740b [msl] don't use sample level on 1D textures (#757) 2021-04-23 01:15:04 -04:00
Dzmitry Malyshau
b15a23c61f [spv-in] fix integer constants parsing (#756) 2021-04-23 01:05:10 -04:00
Dzmitry Malyshau
f0cf6a6772 [spv-in] support OpModuleProcessed (#753) 2021-04-22 14:43:14 -04:00
Dzmitry Malyshau
24eaad10fc Follow up on the swizzle PR review notes (#750) 2021-04-22 11:17:44 -04:00
Dzmitry Malyshau
a2e5284f82 WGSL trailing commas (#743)
* [wgsl-in] typedef Span

* [wgsl-in] trailing comma for case list

* [wgsl-in] trailing comma for constructors

* Review fixes
2021-04-21 22:38:26 -04:00
Dzmitry Malyshau
bc344579e8 [spv-in] fix signed/unsigned casting for builtins (#746) 2021-04-21 11:04:53 -04:00
Ashley
4664cd301a [Metal] Wrap a packed_float3 with float3 when loading from struct (#740)
* Implement the wrapping in Expression::Load instead

* Add changes to stack size

* stable and nightly can't seem to agree on a stack size

* Apply suggestions

* Add a comment about unexpected path

* Update skybox snapshot

* should_pack_struct_member returns an Option<ScalarKind>

* Remove accidental file
2021-04-21 09:16:11 -04:00
Dzmitry Malyshau
5d1746b0b4 Swizzle expression (#734) 2021-04-20 22:03:54 -04:00
Ashley
b08dfe5146 [Metal] Impl Expression::Splat (#738)
* [Metal] Impl `Expression::Splat`

* Add changes to the snapshots

* Apply suggestions
2021-04-20 11:41:13 -04:00
Ashley Ruglys
a4ac7b38b2 Don't use an interpolation on fake bindings 2021-04-20 10:51:45 -04:00
Gordon-F
c37ae5e2a0 [glsl-out] Use fmt::Writer instead of io::Writer 2021-04-20 09:09:35 -04:00
Gordon-F
446f5dad6f [hlsl-out] Use fmt::Writer instead of io::Writer 2021-04-20 09:09:35 -04:00
François
79bcfb1206 [glsl-in] add support for array variables (#731)
* [glsl-in] add support for array variables

* clippy

* more clippy
2021-04-19 13:37:25 -04:00
Jim Blandy
9cd6fd9c20 [msl-out]: Generate interpolation qualifiers. 2021-04-19 09:42:00 -04:00
Jim Blandy
fc39ea8877 [msl-out]: ResolvedBinding::try_fmt: Simplify error handling. 2021-04-19 09:42:00 -04:00
Jim Blandy
4f442ff8cc Require binding interpolation to be resolved by the front end.
When validating IR, verify that all `Binding`s for vertex shader outputs and
fragment shader inputs, whether directly in the argument or result, or applied
to a struct member, has specified an interpolation and sampling, not `None`.
This ensures that front ends explicitly state their policies, rather than
coasting through on back ends' default behavior.

In practice, all our front ends have very similar defaults, so provide a utility
function on `Module` to apply these rules. Use this utility function in the
SPIR-V and WGSL front ends; GLSL seems to already fill in interpolation as
required.
2021-04-19 09:42:00 -04:00
Jim Blandy
0910af2718 [wgsl-in] Implement WGSL interpolate syntax from gpuweb PR #1605.
Fixes: #670
2021-04-19 09:42:00 -04:00
Jim Blandy
99a9e1e78e Change Binding::Location to a struct-style enum variant.
This commit makes no other changes. This is in preparation for adding a third
field, at which point tuple variants start to get obscure.
2021-04-19 09:42:00 -04:00
Jim Blandy
45ee5f5113 [spv-out] Writer: Introduce decorate helper method.
The `Writer::decorate` private method neatens up eight call sites.
2021-04-19 09:42:00 -04:00
Igor Shaposhnik
c1675d06f9 Start wgsl-out (#727) 2021-04-19 00:23:27 -04:00
Dzmitry Malyshau
62c2cf7332 Validate composite constants (#729) 2021-04-18 23:19:09 -04:00
Ashley
a584ec8185 Impl Eq for msl::Options (#725) 2021-04-18 01:19:12 -04:00
Lachlan Sneff
4cbef59dd6 Add struct instantiation support to wgsl-in (#507)
* Add struct instantiation support to wgsl-in

* Readd type matching and move struct test

* rebase onto master and update tests

* Update tests to upstream

* Fix merge errors

* Rebase onto master

* [wgsl-in] delay composite type creation

* Use the new WGSL construction syntax in the tests

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2021-04-17 01:14:07 -04:00
Dzmitry Malyshau
bb716f9c10 [spv-out] implement array value indexing (#723) 2021-04-16 17:11:18 -04:00
Dzmitry Malyshau
daf4c82376 Allow stepping on floats in the validator (#724) 2021-04-16 16:16:15 -04:00
Ashley
285a855e19 Impl Hash for msl::Options (#716)
* Impl `Hash` for `msl::Options`

* Remove ordered float

* [msl] derive everything on Options manually

* [msl] switch from Arena to Vec for the options

* Fix the clippy error by allowing derive_hash_xor_eq

* Fix skybox test

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2021-04-16 14:11:26 -04:00
Jim Blandy
2eb3e81e19 [wgsl-in] Add basic test for interpolate attribute. 2021-04-15 17:19:20 -04:00
Jim Blandy
576723960e Permit interpolation qualifiers on both vertex outputs and fragment inputs. 2021-04-15 17:19:20 -04:00
Jim Blandy
7fda34c4fd [glsl-out] Add version checks for qualifiers.
Use `back::glsl::features::FeaturesManager` to detect which qualifiers the given
module actually uses, and check them against the requested GLSL version.

The `linear` and `sample` qualifiers for fragment shader inputs are not
supported in all versions of GLSL that Naga can generate.
2021-04-15 17:19:20 -04:00
Dzmitry Malyshau
2eae37f7e5 [spv-out] rename temp_chain to temp_list, run a cargo fmt pass 2021-04-14 19:26:20 -04:00
Dzmitry Malyshau
96f9cb4ce1 [wgsl] Add support for simplified vector construction, add a snapshot test 2021-04-14 19:26:20 -04:00
Dzmitry Malyshau
c8d26a1f47 Splat support for WGSL and SPV in/out, updated snapshots 2021-04-14 19:26:20 -04:00
Dzmitry Malyshau
d3b39d9e58 Splat expression in the IR 2021-04-14 19:26:20 -04:00
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
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