skia2/resources/sksl/folding/SelfAssignment.sksl
John Stiles 9191e813a0 Enforce consistency in swizzle domains.
GLSL disallows mixing swizzle domains within a single swizzle:
http://screen/93eHNQDbx35hMdk
SkSL now disallows it as well.

Change-Id: Ied2e11ee04285b143a864e28cac30335f01aad0e
Bug: skia:10621
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/426458
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2021-07-09 20:30:22 +00:00

35 lines
562 B
Plaintext

uniform half4 colorRed, colorGreen;
struct S {
half i;
half j;
};
half4 main(float2 coords) {
// All of these assignments can be preserved.
half4 x = half4(3, 2, 1, 0);
x.xyz = x.zyx;
S s;
s.i = 2;
s.j = 2;
s.i = s.j;
s.j = s.i;
half a[2];
a[0] = 1;
a[1] = 0;
a[1] = a[0];
// All of these assignments should be eliminated.
x.wy = x.wy;
x.xyz = x.xyz;
x = x;
s.i = s.i;
s.j = s.j;
a[0] = a[0];
a[1] = a[1];
return half4(x.w, s.i / s.j, a[0] - a[1], a[0] * a[1]);
}