bf282c05e5
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>
34 lines
650 B
Plaintext
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();
|
|
}
|