- Sep 27, 2021
-
-
Jim Blandy authored
Treat `TypeInner::ValuePointer` and `TypeInner::Pointer` as equivalent by converting them to a canonical form before comparison. Support `ValuePointer` in WGSL type output. Fixes #1318.
-
Jim Blandy authored
`UniqueArena::fetch_or_append` becomes `insert`. `UniqueArena::try_get` becomes `get_handle`, by analogy with `get`, that takes a type as a key.
-
Jim Blandy authored
Ensure that each distinct type occurs only once in `Module::types`, so that we can use `Eq` on `Type` or `TypeInner` for type equivalence, without being confused by differing `Handle<Type>` values that point to identical types. This removes a number of duplicate types from the ir snapshots. Fixes #1385.
-
Jim Blandy authored
-
Jim Blandy authored
-
Jim Blandy authored
Replace `Module::apply_common_default_interpolation` with a simpler function that handles a single `Binding` at a time. In exchange for the simplicity, the function must be called at each point function arguments, function results, and struct members are prepared. (Any missed spots will be caught by the verifier.) This approach no longer requires mutating types in the arena, a prerequisite for properly handling type identity. Applying defaults to struct members when the struct declaration is parsed does have a disadvantage, compared to the old whole-module pass: at struct parse time, we don't yet know which pipeline stages the struct will be used in. The best we can do is apply defaults to anything with a `Location` binding. This causes needless qualifiers to appear in some output. However, it seems that our back end languages all tolerate such qualifiers.
-
João Capucho authored
Previously the typifier flagged all relational functions as producing a scalar boolean but with the exception of `all` and `any`, according to the wgsl spec, all other relational functions output a type the same size as the input.
-
- Sep 23, 2021
-
-
João Capucho authored
-
- Sep 22, 2021
-
-
João Capucho authored
-
João Capucho authored
-
- Sep 21, 2021
-
-
João Capucho authored
-
João Capucho authored
Adds checks that it isn't used in an unsupported function and emits the depth_ref as a separate argument.
-
João Capucho authored
-
Dzmitry Malyshau authored
-
João Capucho authored
-
Aleksi Sapon authored
-
- Sep 20, 2021
-
-
João Capucho authored
-
Aleksi Sapon authored
-
- Sep 19, 2021
-
-
João Capucho authored
-
João Capucho authored
-
João Capucho authored
-
João Capucho authored
-
João Capucho authored
-
- Sep 17, 2021
-
-
João Capucho authored
Add support for float, vector and matrices targets. Fix prefix and postfix being inverted (one was returning the value of the other). Remove an unneeded local indirection for prefix handling. Add tests.
-
João Capucho authored
-
João Capucho authored
-
João Capucho authored
This caused arrayed textures to not be accepted
-
Jasper St. Pierre authored
-
João Capucho authored
Constants that are to be dynamically indexed now are first transformed into locals with them as the initializer.
-
Jasper St. Pierre authored
-
- Sep 16, 2021
-
-
João Capucho authored
-
Jim Blandy authored
-
Jim Blandy authored
-
Dzmitry Malyshau authored
-
Jim Blandy authored
Fixes #1352.
-
Jim Blandy authored
-
Jim Blandy authored
-
- Sep 15, 2021
-
-
Jim Blandy authored
Without this change, the `to_range` method method returns `None` even when spans are enabled.
-
Jim Blandy authored
Fixes #1356. Output for the test case in that issue is now: error: the value indexed by a `[]` subscripting expression must not be a pointer ┌─ wgsl:5:14 │ 5 │ let a = *pv[3]; // Problematic line │ ^^ expression is a pointer Could not parse WGSL
-
Jim Blandy authored
Both a `var` binding and a `let` binding of a pointer to a variable create entries in the `lookup_ident` tables whose expression is a `LocalVariable`. However, the `let` should be a pointer, whereas the `var` should be a reference. This patch changes the tables to hold `TypedExpression` values, thus preserving the distinction.
-