skia / 
skia / 
4f6b9d08b6d1f2df8ce1b33767a82f55114f5bbc Add parentheses around ambiguous WGSL binary-op intrinsics.
Intrinsic ops like `equal(x, y)` and `lessThan(x, y)` are
implemented in WGSL as binary-ops like `x == y` or `x < y`.
This makes them subject to WGSL's unique associativity rules:
https://www.w3.org/TR/WGSL/#operator-precedence-associativity
In particular, relational and equality operators are lumped
together into one group which do _not_ associate with each
other, and generate a compile error if you try. For instance,
our `runtime_intrinsics_relational` slide has a test like
this:
`notEqual(lessThanEqual(p, v1), greaterThanEqual(p, v1))``
Which would expand in WGSL to:
`p <= v1 != p >= v1`
Note the lack of parentheses; SkSL/GLSL/C++ put (in)equality
and relational-comparison into separate precedence groups.
WGSL, however, just rejects this expression as invalid.
We are now more cautious when emitting binary-op intrinsics,
and emit parentheses whenever a relative op is used.
Change-Id: Ib8ee7ed84915c00040f02b5f5c1b45b8480377a4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/744664
Reviewed-by: Brian Osman <brianosman@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
17 files changed