xref: /aosp_15_r20/external/skia/resources/sksl/shared/VectorToMatrixCast.sksl (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Workeruniform half4 colorGreen, colorRed;
2*c8dee2aaSAndroid Build Coastguard Workeruniform half4 testInputs;
3*c8dee2aaSAndroid Build Coastguard Worker
4*c8dee2aaSAndroid Build Coastguard Workerhalf4 main(float2 coords) {
5*c8dee2aaSAndroid Build Coastguard Worker    bool ok = true;
6*c8dee2aaSAndroid Build Coastguard Worker
7*c8dee2aaSAndroid Build Coastguard Worker    const half4 vec1234 = half4(1, 2, 3, 4);
8*c8dee2aaSAndroid Build Coastguard Worker
9*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && half2x2(testInputs)         == half2x2(-1.25, 0, 0.75, 2.25);
10*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && half2x2(half4(1, 2, 3, 4))  == half2x2(1, 2, 3, 4);
11*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && half2x2(vec1234)            == half2x2(1, 2, 3, 4);
12*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && half2x2(half4(2, 0, 0, 2))  == half2x2(2);
13*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && half2x2(half4(2))           == half2x2(2, 2, 2, 2);
14*c8dee2aaSAndroid Build Coastguard Worker
15*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && float2x2(testInputs)        == float2x2(-1.25, 0, 0.75, 2.25);
16*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && float2x2(half4(1, 2, 3, 4)) == float2x2(1, 2, 3, 4);
17*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && float2x2(vec1234)           == float2x2(1, 2, 3, 4);
18*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && float2x2(half4(4, 0, 0, 4)) == float2x2(4);
19*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && float2x2(half4(4))          == float2x2(4, 4, 4, 4);
20*c8dee2aaSAndroid Build Coastguard Worker
21*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && half2x2(colorGreen)         == half2x2(0, 1, 0, 1);
22*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && half2x2(colorGreen)         == half2x2(int4(0, 1, 0, 1));
23*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && half2x2(int4(colorGreen))   == half2x2(int4(0, 1, 0, 1));
24*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && half2x2(0, 1, 0, 1)         == half2x2(int4(0, 1, 0, 1));
25*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && half2x2(8, 8, 8, 8)         == half2x2(int4(8));
26*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && half2x2(8)                  == half2x2(int4(8, 0, 0, 8));
27*c8dee2aaSAndroid Build Coastguard Worker
28*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && half2x2(colorGreen)               == half2x2(false, true, false, true);
29*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && half2x2(colorGreen)               == half2x2(bool4(false, true, false, true));
30*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && half2x2(bool4(colorGreen))        == half2x2(bool4(false, true, false, true));
31*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && half2x2(false, true, false, true) == half2x2(bool4(false, true, false, true));
32*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && half2x2(true, false, false, true) == half2x2(bool4(true, false, false, true));
33*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && half2x2(true, true, true, true)   == half2x2(bool4(true));
34*c8dee2aaSAndroid Build Coastguard Worker
35*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && half2x2(colorGreen - colorRed)    == half2x2(-1, 1, 0, 0);
36*c8dee2aaSAndroid Build Coastguard Worker    ok = ok && half2x2(colorGreen + 5)           == half2x2(5, 6, 5, 6);
37*c8dee2aaSAndroid Build Coastguard Worker
38*c8dee2aaSAndroid Build Coastguard Worker    return ok ? colorGreen : colorRed;
39*c8dee2aaSAndroid Build Coastguard Worker}
40