xref: /aosp_15_r20/external/skia/resources/sksl/shared/InoutParameters.sksl (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Workeruniform half4 colorGreen;
2*c8dee2aaSAndroid Build Coastguard Worker
3*c8dee2aaSAndroid Build Coastguard Workerinline void outParameterWrite(out half4 x) {
4*c8dee2aaSAndroid Build Coastguard Worker    x = colorGreen;
5*c8dee2aaSAndroid Build Coastguard Worker}
6*c8dee2aaSAndroid Build Coastguard Worker
7*c8dee2aaSAndroid Build Coastguard Workerinline void outParameterWriteIndirect(out half4 c) {
8*c8dee2aaSAndroid Build Coastguard Worker    outParameterWrite(c);
9*c8dee2aaSAndroid Build Coastguard Worker}
10*c8dee2aaSAndroid Build Coastguard Worker
11*c8dee2aaSAndroid Build Coastguard Workerinline void inoutParameterWrite(inout half4 x) {
12*c8dee2aaSAndroid Build Coastguard Worker    x *= x;
13*c8dee2aaSAndroid Build Coastguard Worker}
14*c8dee2aaSAndroid Build Coastguard Worker
15*c8dee2aaSAndroid Build Coastguard Workerinline void inoutParameterWriteIndirect(inout half4 x) {
16*c8dee2aaSAndroid Build Coastguard Worker    inoutParameterWrite(x);
17*c8dee2aaSAndroid Build Coastguard Worker}
18*c8dee2aaSAndroid Build Coastguard Worker
19*c8dee2aaSAndroid Build Coastguard Workerinline void inoutParameterRead(inout half4 x) {
20*c8dee2aaSAndroid Build Coastguard Worker    half4 scratch = x * x;
21*c8dee2aaSAndroid Build Coastguard Worker}
22*c8dee2aaSAndroid Build Coastguard Worker
23*c8dee2aaSAndroid Build Coastguard Workerinline void inoutParameterIgnore(inout half4 x) {
24*c8dee2aaSAndroid Build Coastguard Worker    half4 scratch = colorGreen * colorGreen;
25*c8dee2aaSAndroid Build Coastguard Worker}
26*c8dee2aaSAndroid Build Coastguard Worker
27*c8dee2aaSAndroid Build Coastguard Workerhalf4 main(float2 coords) {
28*c8dee2aaSAndroid Build Coastguard Worker    half4 c;
29*c8dee2aaSAndroid Build Coastguard Worker
30*c8dee2aaSAndroid Build Coastguard Worker    // These functions write to their `out` param.
31*c8dee2aaSAndroid Build Coastguard Worker    outParameterWrite(c);
32*c8dee2aaSAndroid Build Coastguard Worker    outParameterWriteIndirect(c);
33*c8dee2aaSAndroid Build Coastguard Worker    inoutParameterWrite(c);
34*c8dee2aaSAndroid Build Coastguard Worker    inoutParameterWriteIndirect(c);
35*c8dee2aaSAndroid Build Coastguard Worker
36*c8dee2aaSAndroid Build Coastguard Worker    // These functions don't write to their `out` param.
37*c8dee2aaSAndroid Build Coastguard Worker    inoutParameterRead(c);
38*c8dee2aaSAndroid Build Coastguard Worker    inoutParameterIgnore(c);
39*c8dee2aaSAndroid Build Coastguard Worker
40*c8dee2aaSAndroid Build Coastguard Worker    return c;
41*c8dee2aaSAndroid Build Coastguard Worker}
42