xref: /aosp_15_r20/external/skia/resources/sksl/shared/SwitchWithFallthroughGroups.sksl (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Worker/*#pragma settings RewriteSwitchStatements*/
2*c8dee2aaSAndroid Build Coastguard Worker
3*c8dee2aaSAndroid Build Coastguard Workeruniform half4 colorGreen, colorRed;
4*c8dee2aaSAndroid Build Coastguard Worker
5*c8dee2aaSAndroid Build Coastguard Workerbool switch_fallthrough_groups(int value) {
6*c8dee2aaSAndroid Build Coastguard Worker    bool ok = false;
7*c8dee2aaSAndroid Build Coastguard Worker    switch (value) {
8*c8dee2aaSAndroid Build Coastguard Worker        case -1: ok = false;
9*c8dee2aaSAndroid Build Coastguard Worker        case  0: return false;
10*c8dee2aaSAndroid Build Coastguard Worker
11*c8dee2aaSAndroid Build Coastguard Worker        case  1: ok = true;
12*c8dee2aaSAndroid Build Coastguard Worker        case  2:
13*c8dee2aaSAndroid Build Coastguard Worker        case  3: break;
14*c8dee2aaSAndroid Build Coastguard Worker
15*c8dee2aaSAndroid Build Coastguard Worker        case  4: ok = false;
16*c8dee2aaSAndroid Build Coastguard Worker        case  5:
17*c8dee2aaSAndroid Build Coastguard Worker        case  6:
18*c8dee2aaSAndroid Build Coastguard Worker        case  7:
19*c8dee2aaSAndroid Build Coastguard Worker        default: break;
20*c8dee2aaSAndroid Build Coastguard Worker    }
21*c8dee2aaSAndroid Build Coastguard Worker    return ok;
22*c8dee2aaSAndroid Build Coastguard Worker}
23*c8dee2aaSAndroid Build Coastguard Worker
24*c8dee2aaSAndroid Build Coastguard Workerhalf4 main(float2 coords) {
25*c8dee2aaSAndroid Build Coastguard Worker    int x = int(colorGreen.g);
26*c8dee2aaSAndroid Build Coastguard Worker    return switch_fallthrough_groups(x) ? colorGreen : colorRed;
27*c8dee2aaSAndroid Build Coastguard Worker}
28