skia2/resources/sksl/folding/ArraySizeFolding.sksl
John Stiles 6fae052362 Implement constant folding for index expressions into matrices.
Indexing into a constant matrix is a constant expression, so we are
obligated to support it for ES2 compatibility.

Change-Id: Ibe1e5bac39d9a88ce0222997a38e8b6952fdb336
Bug: skia:12472
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/469819
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2021-11-10 21:38:56 +00:00

32 lines
707 B
Plaintext

uniform half4 colorRed, colorGreen;
bool check_array_is_int_2(int[2] x) {
return true;
}
bool test() {
const int two = 2;
int a[int4(1, 2, 3, 4).y];
int b[int(max(-5.5, 2.0))];
int c[two];
int d[int2(float2x2(1, 2, 3, 4)[0]).y];
return check_array_is_int_2(a) &&
check_array_is_int_2(b) &&
check_array_is_int_2(c) &&
check_array_is_int_2(d);
}
bool check_array_is_float_3(float[3] x) {
return true;
}
bool test_param(float a[5*5-22], float b[1+1+1]) {
return check_array_is_float_3(a) && check_array_is_float_3(b);
}
half4 main(float2 coords) {
float f[3], g[3];
return test() && test_param(f, g) ? colorGreen : colorRed;
}