xref: /aosp_15_r20/external/skia/resources/sksl/shared/OutParams.sksl (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Workeruniform half4 colorGreen, colorRed, colorWhite;
2*c8dee2aaSAndroid Build Coastguard Worker
3*c8dee2aaSAndroid Build Coastguard Workervoid out_half (out half  v) { v = colorWhite.r; }
4*c8dee2aaSAndroid Build Coastguard Workervoid out_half2(out half2 v) { v = half2(colorWhite.g); }
5*c8dee2aaSAndroid Build Coastguard Workervoid out_half3(out half3 v) { v = half3(colorWhite.b); }
6*c8dee2aaSAndroid Build Coastguard Workervoid out_half4(out half4 v) { v = half4(colorWhite.a); }
7*c8dee2aaSAndroid Build Coastguard Worker
8*c8dee2aaSAndroid Build Coastguard Workervoid out_half2x2(out half2x2 v) { v = half2x2(colorWhite.r); }
9*c8dee2aaSAndroid Build Coastguard Workervoid out_half3x3(out half3x3 v) { v = half3x3(colorWhite.g); }
10*c8dee2aaSAndroid Build Coastguard Workervoid out_half4x4(out half4x4 v) { v = half4x4(colorWhite.b); }
11*c8dee2aaSAndroid Build Coastguard Worker
12*c8dee2aaSAndroid Build Coastguard Workervoid out_int (out int  v) { v = int(colorWhite.r); }
13*c8dee2aaSAndroid Build Coastguard Workervoid out_int2(out int2 v) { v = int2(colorWhite.g); }
14*c8dee2aaSAndroid Build Coastguard Workervoid out_int3(out int3 v) { v = int3(colorWhite.b); }
15*c8dee2aaSAndroid Build Coastguard Workervoid out_int4(out int4 v) { v = int4(colorWhite.a); }
16*c8dee2aaSAndroid Build Coastguard Worker
17*c8dee2aaSAndroid Build Coastguard Workervoid out_float (out float  v) { v = float(colorWhite.r); }
18*c8dee2aaSAndroid Build Coastguard Workervoid out_float2(out float2 v) { v = float2(colorWhite.g); }
19*c8dee2aaSAndroid Build Coastguard Workervoid out_float3(out float3 v) { v = float3(colorWhite.b); }
20*c8dee2aaSAndroid Build Coastguard Workervoid out_float4(out float4 v) { v = float4(colorWhite.a); }
21*c8dee2aaSAndroid Build Coastguard Worker
22*c8dee2aaSAndroid Build Coastguard Workervoid out_float2x2(out float2x2 v) { v = float2x2(colorWhite.r); }
23*c8dee2aaSAndroid Build Coastguard Workervoid out_float3x3(out float3x3 v) { v = float3x3(colorWhite.g); }
24*c8dee2aaSAndroid Build Coastguard Workervoid out_float4x4(out float4x4 v) { v = float4x4(colorWhite.b); }
25*c8dee2aaSAndroid Build Coastguard Worker
26*c8dee2aaSAndroid Build Coastguard Workervoid out_bool (out bool  v) { v = bool(colorWhite.r); }
27*c8dee2aaSAndroid Build Coastguard Workervoid out_bool2(out bool2 v) { v = bool2(colorWhite.g); }
28*c8dee2aaSAndroid Build Coastguard Workervoid out_bool3(out bool3 v) { v = bool3(colorWhite.b); }
29*c8dee2aaSAndroid Build Coastguard Workervoid out_bool4(out bool4 v) { v = bool4(colorWhite.a); }
30*c8dee2aaSAndroid Build Coastguard Worker
31*c8dee2aaSAndroid Build Coastguard Workerhalf4 main(float2 coords) {
32*c8dee2aaSAndroid Build Coastguard Worker    half4 result;
33*c8dee2aaSAndroid Build Coastguard Worker
34*c8dee2aaSAndroid Build Coastguard Worker    half     h;    out_half (h);
35*c8dee2aaSAndroid Build Coastguard Worker    half2    h2;   out_half2(h2);
36*c8dee2aaSAndroid Build Coastguard Worker    half3    h3;   out_half3(h3);
37*c8dee2aaSAndroid Build Coastguard Worker    half4    h4;   out_half4(h4);
38*c8dee2aaSAndroid Build Coastguard Worker                   out_half(h3[1]);
39*c8dee2aaSAndroid Build Coastguard Worker                   out_half2(h3.xz);
40*c8dee2aaSAndroid Build Coastguard Worker                   out_half4(h4.zwxy);
41*c8dee2aaSAndroid Build Coastguard Worker
42*c8dee2aaSAndroid Build Coastguard Worker    half2x2  h2x2; out_half2x2(h2x2);
43*c8dee2aaSAndroid Build Coastguard Worker    half3x3  h3x3; out_half3x3(h3x3);
44*c8dee2aaSAndroid Build Coastguard Worker    half4x4  h4x4; out_half4x4(h4x4);
45*c8dee2aaSAndroid Build Coastguard Worker                   out_half3(h3x3[1]);
46*c8dee2aaSAndroid Build Coastguard Worker                   out_half(h4x4[3].w);
47*c8dee2aaSAndroid Build Coastguard Worker                   out_half(h2x2[0][0]);
48*c8dee2aaSAndroid Build Coastguard Worker
49*c8dee2aaSAndroid Build Coastguard Worker    int      i;    out_int (i);
50*c8dee2aaSAndroid Build Coastguard Worker    int2     i2;   out_int2(i2);
51*c8dee2aaSAndroid Build Coastguard Worker    int3     i3;   out_int3(i3);
52*c8dee2aaSAndroid Build Coastguard Worker    int4     i4;   out_int4(i4);
53*c8dee2aaSAndroid Build Coastguard Worker                   out_int3(i4.xyz);
54*c8dee2aaSAndroid Build Coastguard Worker                   out_int(i2[1]);
55*c8dee2aaSAndroid Build Coastguard Worker
56*c8dee2aaSAndroid Build Coastguard Worker    float    f;    out_float (f);
57*c8dee2aaSAndroid Build Coastguard Worker    float2   f2;   out_float2(f2);
58*c8dee2aaSAndroid Build Coastguard Worker    float3   f3;   out_float3(f3);
59*c8dee2aaSAndroid Build Coastguard Worker    float4   f4;   out_float4(f4);
60*c8dee2aaSAndroid Build Coastguard Worker                   out_float2(f3.xy);
61*c8dee2aaSAndroid Build Coastguard Worker                   out_float(f2[0]);
62*c8dee2aaSAndroid Build Coastguard Worker
63*c8dee2aaSAndroid Build Coastguard Worker    float2x2 f2x2; out_float2x2(f2x2);
64*c8dee2aaSAndroid Build Coastguard Worker    float3x3 f3x3; out_float3x3(f3x3);
65*c8dee2aaSAndroid Build Coastguard Worker    float4x4 f4x4; out_float4x4(f4x4);
66*c8dee2aaSAndroid Build Coastguard Worker                   out_float(f2x2[0][0]);
67*c8dee2aaSAndroid Build Coastguard Worker
68*c8dee2aaSAndroid Build Coastguard Worker    bool     b;    out_bool (b);
69*c8dee2aaSAndroid Build Coastguard Worker    bool2    b2;   out_bool2(b2);
70*c8dee2aaSAndroid Build Coastguard Worker    bool3    b3;   out_bool3(b3);
71*c8dee2aaSAndroid Build Coastguard Worker    bool4    b4;   out_bool4(b4);
72*c8dee2aaSAndroid Build Coastguard Worker                   out_bool2(b4.xw);
73*c8dee2aaSAndroid Build Coastguard Worker                   out_bool(b3[2]);
74*c8dee2aaSAndroid Build Coastguard Worker
75*c8dee2aaSAndroid Build Coastguard Worker    bool ok = true;
76*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && 1 == (h * h2.x * h3.x * h4.x * h2x2[0][0] * h3x3[0][0] * h4x4[0][0]);
77*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && 1 == (f * f2.x * f3.x * f4.x * f2x2[0][0] * f3x3[0][0] * f4x4[0][0]);
78*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && 1 == (i * i2.x * i3.x * i4.x);
79*c8dee2aaSAndroid Build Coastguard Worker    ok = ok &&      (b && b2.x && b3.x && b4.x);
80*c8dee2aaSAndroid Build Coastguard Worker
81*c8dee2aaSAndroid Build Coastguard Worker    return ok ? colorGreen : colorRed;
82*c8dee2aaSAndroid Build Coastguard Worker}
83