skia2/tests/sksl/shared/SwizzleByIndex.sksl
John Stiles bf282c05e5 Replace array indexing on vector types with swizzles.
Our optimizer ignores index expressions, but has a few simplifications
that it can perform on swizzles. (Added extra code to SwizzleByIndex
which demonstrates this.)

Change-Id: If3c85a0456d98749008d796e422944b602ee6933
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/341460
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
2020-12-07 21:16:40 +00:00

34 lines
650 B
Plaintext

void non_constant_swizzle() {
int4 i = int4(int(sqrt(1)));
half4 v = half4(half(sqrt(1)));
half x = v[i[0]];
half y = v[i[1]];
half z = v[i[2]];
half w = v[i[3]];
sk_FragColor = half4(x, y, z, w);
}
void constant_swizzle() {
half4 v = half4(half(sqrt(1)));
half x = v[0];
half y = v[1];
half z = v[2];
half w = v[3];
sk_FragColor = half4(x, y, z, w);
}
void foldable() {
half4 v = half4(2);
half x = v[0];
half y = v[1];
half z = v[2];
half w = v[3];
sk_FragColor = half4(x, y, z, w);
}
void main() {
non_constant_swizzle();
constant_swizzle();
foldable();
}