- Sep 27, 2021
-
-
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.
-
Jim Blandy authored
-
João Capucho authored
This allows removing many arguments from functions dealing with instruction parsing
-
Jim Blandy authored
The old filenames were probably based on the shader stage, not the shader function name, which the PR changed to do in response to a review suggestion.
-
Jim Blandy authored
`tests/out/glsl/operators.main.Fragment.glsl` is no longer generated because the function in question changed to a Compute entry point. `tests/out/wgsl/multiple_entry_points-glsl.wgsl` is no longer generated because the input test was removed in 057dc310.
-
- Sep 14, 2021
-
-
Jim Blandy authored
Make the parser code more closely follow the spec's grammar around `unary_expression`, `postfix_expression`, and `singular_expression`. Change the handling of postfix expressions (indexing, member/component access, and swizzling) to apply the indirection at the appropriate time, resulting in code improvements on all output formats. For example, where we used to generate the following MSL: metal::float4 _e13 = bar.matrix[3]; float b = _e13.x; we now generate, simply: float b = bar.matrix[3].x; Propagate WGSL reference types correctly, so that parenthesizing expressions no longer causes the Load Rule to be applied. Together with #1332 (already landed), this is a replacement for #1312, and unblocks #1352. Fixes #1351.
-