1*c8dee2aaSAndroid Build Coastguard Workeruniform float2x2 testMatrix2x2; 2*c8dee2aaSAndroid Build Coastguard Workeruniform float3x3 testMatrix3x3; 3*c8dee2aaSAndroid Build Coastguard Workeruniform float4 testInputs; 4*c8dee2aaSAndroid Build Coastguard Workeruniform half4 colorRed, colorGreen; 5*c8dee2aaSAndroid Build Coastguard Workeruniform half unknownInput; 6*c8dee2aaSAndroid Build Coastguard Worker 7*c8dee2aaSAndroid Build Coastguard Workerbool test_mat2_mat2() { 8*c8dee2aaSAndroid Build Coastguard Worker float2x2 m, mm; 9*c8dee2aaSAndroid Build Coastguard Worker const float2x2 i = float2x2(1.0); 10*c8dee2aaSAndroid Build Coastguard Worker const float2x2 z = float2x2(0.0); 11*c8dee2aaSAndroid Build Coastguard Worker const float2x2 s = float2x2(float4(1.0)); 12*c8dee2aaSAndroid Build Coastguard Worker 13*c8dee2aaSAndroid Build Coastguard Worker m = testMatrix2x2 * i; 14*c8dee2aaSAndroid Build Coastguard Worker m = i * testMatrix2x2; 15*c8dee2aaSAndroid Build Coastguard Worker 16*c8dee2aaSAndroid Build Coastguard Worker m = m * i; 17*c8dee2aaSAndroid Build Coastguard Worker m = i * m; 18*c8dee2aaSAndroid Build Coastguard Worker m *= i; 19*c8dee2aaSAndroid Build Coastguard Worker 20*c8dee2aaSAndroid Build Coastguard Worker m = m / s; 21*c8dee2aaSAndroid Build Coastguard Worker m /= s; 22*c8dee2aaSAndroid Build Coastguard Worker 23*c8dee2aaSAndroid Build Coastguard Worker m = m + z; 24*c8dee2aaSAndroid Build Coastguard Worker m = z + m; 25*c8dee2aaSAndroid Build Coastguard Worker m += z; 26*c8dee2aaSAndroid Build Coastguard Worker 27*c8dee2aaSAndroid Build Coastguard Worker m = m - z; 28*c8dee2aaSAndroid Build Coastguard Worker m = z - m; // negates 29*c8dee2aaSAndroid Build Coastguard Worker m -= z; 30*c8dee2aaSAndroid Build Coastguard Worker 31*c8dee2aaSAndroid Build Coastguard Worker mm = m * z; 32*c8dee2aaSAndroid Build Coastguard Worker mm = z * m; 33*c8dee2aaSAndroid Build Coastguard Worker 34*c8dee2aaSAndroid Build Coastguard Worker return m == -testMatrix2x2 && mm == z; 35*c8dee2aaSAndroid Build Coastguard Worker} 36*c8dee2aaSAndroid Build Coastguard Worker 37*c8dee2aaSAndroid Build Coastguard Workerbool test_mat3_mat3() { 38*c8dee2aaSAndroid Build Coastguard Worker float3x3 m, mm; 39*c8dee2aaSAndroid Build Coastguard Worker const float3x3 i = float3x3(1.0); 40*c8dee2aaSAndroid Build Coastguard Worker const float3x3 z = float3x3(0.0); 41*c8dee2aaSAndroid Build Coastguard Worker const float3x3 s = float3x3(float3(1.0), float3(1.0), float3(1.0)); 42*c8dee2aaSAndroid Build Coastguard Worker 43*c8dee2aaSAndroid Build Coastguard Worker m = testMatrix3x3 * i; 44*c8dee2aaSAndroid Build Coastguard Worker m = i * testMatrix3x3; 45*c8dee2aaSAndroid Build Coastguard Worker 46*c8dee2aaSAndroid Build Coastguard Worker m = m * i; 47*c8dee2aaSAndroid Build Coastguard Worker m = i * m; 48*c8dee2aaSAndroid Build Coastguard Worker m *= i; 49*c8dee2aaSAndroid Build Coastguard Worker 50*c8dee2aaSAndroid Build Coastguard Worker m = m / s; 51*c8dee2aaSAndroid Build Coastguard Worker m /= s; 52*c8dee2aaSAndroid Build Coastguard Worker 53*c8dee2aaSAndroid Build Coastguard Worker m = m + z; 54*c8dee2aaSAndroid Build Coastguard Worker m = z + m; 55*c8dee2aaSAndroid Build Coastguard Worker m += z; 56*c8dee2aaSAndroid Build Coastguard Worker 57*c8dee2aaSAndroid Build Coastguard Worker m = m - z; 58*c8dee2aaSAndroid Build Coastguard Worker m = z - m; // negates 59*c8dee2aaSAndroid Build Coastguard Worker m -= z; 60*c8dee2aaSAndroid Build Coastguard Worker 61*c8dee2aaSAndroid Build Coastguard Worker mm = m * z; 62*c8dee2aaSAndroid Build Coastguard Worker mm = z * m; 63*c8dee2aaSAndroid Build Coastguard Worker 64*c8dee2aaSAndroid Build Coastguard Worker return m == -testMatrix3x3 && mm == z; 65*c8dee2aaSAndroid Build Coastguard Worker} 66*c8dee2aaSAndroid Build Coastguard Worker 67*c8dee2aaSAndroid Build Coastguard Workerbool test_mat4_mat4() { 68*c8dee2aaSAndroid Build Coastguard Worker float4x4 testMatrix4x4 = float4x4(testInputs, testInputs, testInputs, testInputs); 69*c8dee2aaSAndroid Build Coastguard Worker 70*c8dee2aaSAndroid Build Coastguard Worker float4x4 m, mm; 71*c8dee2aaSAndroid Build Coastguard Worker const float4x4 i = float4x4(1.0); 72*c8dee2aaSAndroid Build Coastguard Worker const float4x4 z = float4x4(0.0); 73*c8dee2aaSAndroid Build Coastguard Worker const float4x4 s = float4x4(float4(1.0), float4(1.0), float4(1.0), float4(1.0)); 74*c8dee2aaSAndroid Build Coastguard Worker 75*c8dee2aaSAndroid Build Coastguard Worker m = testMatrix4x4 * i; 76*c8dee2aaSAndroid Build Coastguard Worker m = i * testMatrix4x4; 77*c8dee2aaSAndroid Build Coastguard Worker 78*c8dee2aaSAndroid Build Coastguard Worker m = m * i; 79*c8dee2aaSAndroid Build Coastguard Worker m = i * m; 80*c8dee2aaSAndroid Build Coastguard Worker m *= i; 81*c8dee2aaSAndroid Build Coastguard Worker 82*c8dee2aaSAndroid Build Coastguard Worker m = m / s; 83*c8dee2aaSAndroid Build Coastguard Worker m /= s; 84*c8dee2aaSAndroid Build Coastguard Worker 85*c8dee2aaSAndroid Build Coastguard Worker m = m + z; 86*c8dee2aaSAndroid Build Coastguard Worker m = z + m; 87*c8dee2aaSAndroid Build Coastguard Worker m += z; 88*c8dee2aaSAndroid Build Coastguard Worker 89*c8dee2aaSAndroid Build Coastguard Worker m = m - z; 90*c8dee2aaSAndroid Build Coastguard Worker m = z - m; // negates 91*c8dee2aaSAndroid Build Coastguard Worker m -= z; 92*c8dee2aaSAndroid Build Coastguard Worker 93*c8dee2aaSAndroid Build Coastguard Worker mm = m * z; 94*c8dee2aaSAndroid Build Coastguard Worker mm = z * m; 95*c8dee2aaSAndroid Build Coastguard Worker 96*c8dee2aaSAndroid Build Coastguard Worker return m == -testMatrix4x4 && mm == z; 97*c8dee2aaSAndroid Build Coastguard Worker} 98*c8dee2aaSAndroid Build Coastguard Worker 99*c8dee2aaSAndroid Build Coastguard Workerhalf4 main(float2 coords) { 100*c8dee2aaSAndroid Build Coastguard Worker return test_mat2_mat2() && 101*c8dee2aaSAndroid Build Coastguard Worker test_mat3_mat3() && 102*c8dee2aaSAndroid Build Coastguard Worker test_mat4_mat4() ? colorGreen : colorRed; 103*c8dee2aaSAndroid Build Coastguard Worker} 104