xref: /aosp_15_r20/external/skia/resources/sksl/shared/DeadStripFunctions.sksl (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Worker/*#pragma settings NoInline*/
2*c8dee2aaSAndroid Build Coastguard Worker
3*c8dee2aaSAndroid Build Coastguard Workeruniform half4 colorGreen, colorRed;
4*c8dee2aaSAndroid Build Coastguard Worker
5*c8dee2aaSAndroid Build Coastguard Workerhalf4 dead_fn(half4 a, half4 b) {
6*c8dee2aaSAndroid Build Coastguard Worker    return a * b;
7*c8dee2aaSAndroid Build Coastguard Worker}
8*c8dee2aaSAndroid Build Coastguard Worker
9*c8dee2aaSAndroid Build Coastguard Workerhalf4 live_fn(half4 a, half4 b) {
10*c8dee2aaSAndroid Build Coastguard Worker    return a + b;
11*c8dee2aaSAndroid Build Coastguard Worker}
12*c8dee2aaSAndroid Build Coastguard Worker
13*c8dee2aaSAndroid Build Coastguard Workerhalf4 main(float2 coords) {
14*c8dee2aaSAndroid Build Coastguard Worker    const bool TRUE = true, FALSE = false;
15*c8dee2aaSAndroid Build Coastguard Worker    half4 a, b;
16*c8dee2aaSAndroid Build Coastguard Worker
17*c8dee2aaSAndroid Build Coastguard Worker    if (FALSE) {
18*c8dee2aaSAndroid Build Coastguard Worker        // Dead stripping a user function.
19*c8dee2aaSAndroid Build Coastguard Worker        half4 unused = dead_fn(half4(0.5), half4(2));
20*c8dee2aaSAndroid Build Coastguard Worker    } else {
21*c8dee2aaSAndroid Build Coastguard Worker        // A live user function.
22*c8dee2aaSAndroid Build Coastguard Worker        a = live_fn(half4(3), half4(-5));
23*c8dee2aaSAndroid Build Coastguard Worker    }
24*c8dee2aaSAndroid Build Coastguard Worker
25*c8dee2aaSAndroid Build Coastguard Worker    if (TRUE) {
26*c8dee2aaSAndroid Build Coastguard Worker        // A live built-in function.
27*c8dee2aaSAndroid Build Coastguard Worker        b = unpremul(half4(1));
28*c8dee2aaSAndroid Build Coastguard Worker    } else {
29*c8dee2aaSAndroid Build Coastguard Worker        // Dead stripping a built-in function. (This is a separate overload of `unpremul`.)
30*c8dee2aaSAndroid Build Coastguard Worker        float4 unused = unpremul(float4(-1));
31*c8dee2aaSAndroid Build Coastguard Worker    }
32*c8dee2aaSAndroid Build Coastguard Worker
33*c8dee2aaSAndroid Build Coastguard Worker    return (a != half4(0) && b != half4(0)) ? colorGreen : colorRed;
34*c8dee2aaSAndroid Build Coastguard Worker}
35