xref: /aosp_15_r20/external/skia/resources/sksl/shared/CommaSideEffects.sksl (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Worker/*#pragma settings NoInline*/
2*c8dee2aaSAndroid Build Coastguard Worker
3*c8dee2aaSAndroid Build Coastguard Workeruniform half4 colorRed, colorGreen, colorWhite, colorBlack;
4*c8dee2aaSAndroid Build Coastguard Worker
5*c8dee2aaSAndroid Build Coastguard Workervoid setToColorBlack(out half4 x) {
6*c8dee2aaSAndroid Build Coastguard Worker    x = colorBlack;
7*c8dee2aaSAndroid Build Coastguard Worker}
8*c8dee2aaSAndroid Build Coastguard Worker
9*c8dee2aaSAndroid Build Coastguard Workerhalf4 main(float2 coords) {
10*c8dee2aaSAndroid Build Coastguard Worker    half4 a, b, c, d;
11*c8dee2aaSAndroid Build Coastguard Worker
12*c8dee2aaSAndroid Build Coastguard Worker    (b = colorRed), (c = colorGreen);
13*c8dee2aaSAndroid Build Coastguard Worker    a = (setToColorBlack(d), colorWhite);
14*c8dee2aaSAndroid Build Coastguard Worker
15*c8dee2aaSAndroid Build Coastguard Worker    // These uniforms only contain 1s and 0s so these multiplies should be no-ops.
16*c8dee2aaSAndroid Build Coastguard Worker    a *= a;
17*c8dee2aaSAndroid Build Coastguard Worker    b *= b;
18*c8dee2aaSAndroid Build Coastguard Worker    c *= c;
19*c8dee2aaSAndroid Build Coastguard Worker    d *= d;
20*c8dee2aaSAndroid Build Coastguard Worker
21*c8dee2aaSAndroid Build Coastguard Worker    return (a == colorWhite &&
22*c8dee2aaSAndroid Build Coastguard Worker            b == colorRed &&
23*c8dee2aaSAndroid Build Coastguard Worker            c == colorGreen &&
24*c8dee2aaSAndroid Build Coastguard Worker            d == colorBlack) ? colorGreen : colorRed;
25*c8dee2aaSAndroid Build Coastguard Worker}
26