xref: /aosp_15_r20/external/skia/resources/sksl/spirv/SpecializedSamplerFunctions.sksl (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Workerlayout(set = 0, binding = 0) sampler2D aSampler;
2*c8dee2aaSAndroid Build Coastguard Workerlayout(set = 0, binding = 1) sampler2D aSecondSampler;
3*c8dee2aaSAndroid Build Coastguard Workerlayout(set = 0, binding = 2) sampler2D aThirdSampler;
4*c8dee2aaSAndroid Build Coastguard Worker
5*c8dee2aaSAndroid Build Coastguard Workernoinline half4 baz(sampler2D s) {
6*c8dee2aaSAndroid Build Coastguard Worker    return sample(s, float2(0));
7*c8dee2aaSAndroid Build Coastguard Worker}
8*c8dee2aaSAndroid Build Coastguard Worker
9*c8dee2aaSAndroid Build Coastguard Workernoinline half4 bar(sampler2D s) {
10*c8dee2aaSAndroid Build Coastguard Worker    return baz(s);
11*c8dee2aaSAndroid Build Coastguard Worker}
12*c8dee2aaSAndroid Build Coastguard Worker
13*c8dee2aaSAndroid Build Coastguard Workernoinline half4 foo(sampler2D samplerA, sampler2D samplerB) {
14*c8dee2aaSAndroid Build Coastguard Worker    half4 a = bar(samplerA);
15*c8dee2aaSAndroid Build Coastguard Worker    half4 b = baz(samplerB);
16*c8dee2aaSAndroid Build Coastguard Worker    return a + b;
17*c8dee2aaSAndroid Build Coastguard Worker}
18*c8dee2aaSAndroid Build Coastguard Worker
19*c8dee2aaSAndroid Build Coastguard Workervoid main() {
20*c8dee2aaSAndroid Build Coastguard Worker    // foo_aSampler_aSecondSampler
21*c8dee2aaSAndroid Build Coastguard Worker    //   | -> bar_aSampler -> baz_aSampler
22*c8dee2aaSAndroid Build Coastguard Worker    //   | -> baz_aSecondSampler
23*c8dee2aaSAndroid Build Coastguard Worker    sk_FragColor = foo(aSampler, aSecondSampler);
24*c8dee2aaSAndroid Build Coastguard Worker
25*c8dee2aaSAndroid Build Coastguard Worker    // bar_aThirdSampler -> baz_aThirdSampler
26*c8dee2aaSAndroid Build Coastguard Worker    sk_FragColor = bar(aThirdSampler);
27*c8dee2aaSAndroid Build Coastguard Worker
28*c8dee2aaSAndroid Build Coastguard Worker    // foo_aSecondSampler_aThirdSampler
29*c8dee2aaSAndroid Build Coastguard Worker    //   | -> bar_aSecondSampler -> baz_aSecondSampler
30*c8dee2aaSAndroid Build Coastguard Worker    //   | -> baz_aThirdSampler
31*c8dee2aaSAndroid Build Coastguard Worker    sk_FragColor = foo(aSecondSampler, aThirdSampler);
32*c8dee2aaSAndroid Build Coastguard Worker}
33*c8dee2aaSAndroid Build Coastguard Worker
34