1*c8dee2aaSAndroid Build Coastguard Worker 2*c8dee2aaSAndroid Build Coastguard Workerout vec4 sk_FragColor; 3*c8dee2aaSAndroid Build Coastguard Workeruniform vec4 colorRed; 4*c8dee2aaSAndroid Build Coastguard Workeruniform vec4 colorGreen; 5*c8dee2aaSAndroid Build Coastguard Workerbool test_matrix_op_matrix_half_b() { 6*c8dee2aaSAndroid Build Coastguard Worker bool ok = true; 7*c8dee2aaSAndroid Build Coastguard Worker { 8*c8dee2aaSAndroid Build Coastguard Worker const mat3x2 splat_4 = mat3x2(4.0, 4.0, 4.0, 4.0, 4.0, 4.0); 9*c8dee2aaSAndroid Build Coastguard Worker mat3x2 m = mat3x2(2.0); 10*c8dee2aaSAndroid Build Coastguard Worker m += splat_4; 11*c8dee2aaSAndroid Build Coastguard Worker ok = ok && m == mat3x2(6.0, 4.0, 4.0, 6.0, 4.0, 4.0); 12*c8dee2aaSAndroid Build Coastguard Worker m = mat3x2(2.0); 13*c8dee2aaSAndroid Build Coastguard Worker m -= splat_4; 14*c8dee2aaSAndroid Build Coastguard Worker ok = ok && m == mat3x2(-2.0, -4.0, -4.0, -2.0, -4.0, -4.0); 15*c8dee2aaSAndroid Build Coastguard Worker m = mat3x2(2.0); 16*c8dee2aaSAndroid Build Coastguard Worker m /= splat_4; 17*c8dee2aaSAndroid Build Coastguard Worker ok = ok && m == mat3x2(0.5); 18*c8dee2aaSAndroid Build Coastguard Worker } 19*c8dee2aaSAndroid Build Coastguard Worker { 20*c8dee2aaSAndroid Build Coastguard Worker const mat2x3 splat_4 = mat2x3(4.0, 4.0, 4.0, 4.0, 4.0, 4.0); 21*c8dee2aaSAndroid Build Coastguard Worker mat2x3 m = splat_4; 22*c8dee2aaSAndroid Build Coastguard Worker m += mat2x3(2.0); 23*c8dee2aaSAndroid Build Coastguard Worker ok = ok && m == mat2x3(6.0, 4.0, 4.0, 4.0, 6.0, 4.0); 24*c8dee2aaSAndroid Build Coastguard Worker m = splat_4; 25*c8dee2aaSAndroid Build Coastguard Worker m -= mat2x3(2.0); 26*c8dee2aaSAndroid Build Coastguard Worker ok = ok && m == mat2x3(2.0, 4.0, 4.0, 4.0, 2.0, 4.0); 27*c8dee2aaSAndroid Build Coastguard Worker m = splat_4; 28*c8dee2aaSAndroid Build Coastguard Worker m /= mat2x3(2.0, 2.0, 2.0, 2.0, 2.0, 2.0); 29*c8dee2aaSAndroid Build Coastguard Worker ok = ok && m == mat2x3(2.0, 2.0, 2.0, 2.0, 2.0, 2.0); 30*c8dee2aaSAndroid Build Coastguard Worker } 31*c8dee2aaSAndroid Build Coastguard Worker { 32*c8dee2aaSAndroid Build Coastguard Worker mat4x3 m = mat4x3(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0); 33*c8dee2aaSAndroid Build Coastguard Worker m += mat4x3(16.0, 15.0, 14.0, 13.0, 12.0, 11.0, 10.0, 9.0, 8.0, 7.0, 6.0, 5.0); 34*c8dee2aaSAndroid Build Coastguard Worker ok = ok && m == mat4x3(17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0); 35*c8dee2aaSAndroid Build Coastguard Worker } 36*c8dee2aaSAndroid Build Coastguard Worker { 37*c8dee2aaSAndroid Build Coastguard Worker mat4x2 m = mat4x2(10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0); 38*c8dee2aaSAndroid Build Coastguard Worker m -= mat4x2(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0); 39*c8dee2aaSAndroid Build Coastguard Worker ok = ok && m == mat4x2(9.0, 18.0, 27.0, 36.0, 45.0, 54.0, 63.0, 72.0); 40*c8dee2aaSAndroid Build Coastguard Worker } 41*c8dee2aaSAndroid Build Coastguard Worker { 42*c8dee2aaSAndroid Build Coastguard Worker mat2x4 m = mat2x4(10.0, 20.0, 30.0, 40.0, 10.0, 20.0, 30.0, 40.0); 43*c8dee2aaSAndroid Build Coastguard Worker m /= mat2x4(10.0, 10.0, 10.0, 10.0, 5.0, 5.0, 5.0, 5.0); 44*c8dee2aaSAndroid Build Coastguard Worker ok = ok && m == mat2x4(1.0, 2.0, 3.0, 4.0, 2.0, 4.0, 6.0, 8.0); 45*c8dee2aaSAndroid Build Coastguard Worker } 46*c8dee2aaSAndroid Build Coastguard Worker { 47*c8dee2aaSAndroid Build Coastguard Worker mat2x3 m = mat2x3(7.0, 9.0, 11.0, 8.0, 10.0, 12.0); 48*c8dee2aaSAndroid Build Coastguard Worker m *= mat2(1.0, 4.0, 2.0, 5.0); 49*c8dee2aaSAndroid Build Coastguard Worker ok = ok && m == mat2x3(39.0, 49.0, 59.0, 54.0, 68.0, 82.0); 50*c8dee2aaSAndroid Build Coastguard Worker } 51*c8dee2aaSAndroid Build Coastguard Worker return ok; 52*c8dee2aaSAndroid Build Coastguard Worker} 53*c8dee2aaSAndroid Build Coastguard Workervec4 main() { 54*c8dee2aaSAndroid Build Coastguard Worker bool _0_ok = true; 55*c8dee2aaSAndroid Build Coastguard Worker { 56*c8dee2aaSAndroid Build Coastguard Worker const mat3x2 _1_splat_4 = mat3x2(4.0, 4.0, 4.0, 4.0, 4.0, 4.0); 57*c8dee2aaSAndroid Build Coastguard Worker mat3x2 _2_m = mat3x2(2.0); 58*c8dee2aaSAndroid Build Coastguard Worker _2_m += _1_splat_4; 59*c8dee2aaSAndroid Build Coastguard Worker _0_ok = _0_ok && _2_m == mat3x2(6.0, 4.0, 4.0, 6.0, 4.0, 4.0); 60*c8dee2aaSAndroid Build Coastguard Worker _2_m = mat3x2(2.0); 61*c8dee2aaSAndroid Build Coastguard Worker _2_m -= _1_splat_4; 62*c8dee2aaSAndroid Build Coastguard Worker _0_ok = _0_ok && _2_m == mat3x2(-2.0, -4.0, -4.0, -2.0, -4.0, -4.0); 63*c8dee2aaSAndroid Build Coastguard Worker _2_m = mat3x2(2.0); 64*c8dee2aaSAndroid Build Coastguard Worker _2_m /= _1_splat_4; 65*c8dee2aaSAndroid Build Coastguard Worker _0_ok = _0_ok && _2_m == mat3x2(0.5); 66*c8dee2aaSAndroid Build Coastguard Worker } 67*c8dee2aaSAndroid Build Coastguard Worker { 68*c8dee2aaSAndroid Build Coastguard Worker const mat2x3 _3_splat_4 = mat2x3(4.0, 4.0, 4.0, 4.0, 4.0, 4.0); 69*c8dee2aaSAndroid Build Coastguard Worker mat2x3 _4_m = _3_splat_4; 70*c8dee2aaSAndroid Build Coastguard Worker _4_m += mat2x3(2.0); 71*c8dee2aaSAndroid Build Coastguard Worker _0_ok = _0_ok && _4_m == mat2x3(6.0, 4.0, 4.0, 4.0, 6.0, 4.0); 72*c8dee2aaSAndroid Build Coastguard Worker _4_m = _3_splat_4; 73*c8dee2aaSAndroid Build Coastguard Worker _4_m -= mat2x3(2.0); 74*c8dee2aaSAndroid Build Coastguard Worker _0_ok = _0_ok && _4_m == mat2x3(2.0, 4.0, 4.0, 4.0, 2.0, 4.0); 75*c8dee2aaSAndroid Build Coastguard Worker _4_m = _3_splat_4; 76*c8dee2aaSAndroid Build Coastguard Worker _4_m /= mat2x3(2.0, 2.0, 2.0, 2.0, 2.0, 2.0); 77*c8dee2aaSAndroid Build Coastguard Worker _0_ok = _0_ok && _4_m == mat2x3(2.0, 2.0, 2.0, 2.0, 2.0, 2.0); 78*c8dee2aaSAndroid Build Coastguard Worker } 79*c8dee2aaSAndroid Build Coastguard Worker { 80*c8dee2aaSAndroid Build Coastguard Worker mat4x3 _5_m = mat4x3(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0); 81*c8dee2aaSAndroid Build Coastguard Worker _5_m += mat4x3(16.0, 15.0, 14.0, 13.0, 12.0, 11.0, 10.0, 9.0, 8.0, 7.0, 6.0, 5.0); 82*c8dee2aaSAndroid Build Coastguard Worker _0_ok = _0_ok && _5_m == mat4x3(17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0); 83*c8dee2aaSAndroid Build Coastguard Worker } 84*c8dee2aaSAndroid Build Coastguard Worker { 85*c8dee2aaSAndroid Build Coastguard Worker mat4x2 _6_m = mat4x2(10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0); 86*c8dee2aaSAndroid Build Coastguard Worker _6_m -= mat4x2(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0); 87*c8dee2aaSAndroid Build Coastguard Worker _0_ok = _0_ok && _6_m == mat4x2(9.0, 18.0, 27.0, 36.0, 45.0, 54.0, 63.0, 72.0); 88*c8dee2aaSAndroid Build Coastguard Worker } 89*c8dee2aaSAndroid Build Coastguard Worker { 90*c8dee2aaSAndroid Build Coastguard Worker mat2x4 _7_m = mat2x4(10.0, 20.0, 30.0, 40.0, 10.0, 20.0, 30.0, 40.0); 91*c8dee2aaSAndroid Build Coastguard Worker _7_m /= mat2x4(10.0, 10.0, 10.0, 10.0, 5.0, 5.0, 5.0, 5.0); 92*c8dee2aaSAndroid Build Coastguard Worker _0_ok = _0_ok && _7_m == mat2x4(1.0, 2.0, 3.0, 4.0, 2.0, 4.0, 6.0, 8.0); 93*c8dee2aaSAndroid Build Coastguard Worker } 94*c8dee2aaSAndroid Build Coastguard Worker { 95*c8dee2aaSAndroid Build Coastguard Worker mat2x3 _8_m = mat2x3(7.0, 9.0, 11.0, 8.0, 10.0, 12.0); 96*c8dee2aaSAndroid Build Coastguard Worker _8_m *= mat2(1.0, 4.0, 2.0, 5.0); 97*c8dee2aaSAndroid Build Coastguard Worker _0_ok = _0_ok && _8_m == mat2x3(39.0, 49.0, 59.0, 54.0, 68.0, 82.0); 98*c8dee2aaSAndroid Build Coastguard Worker } 99*c8dee2aaSAndroid Build Coastguard Worker return _0_ok && test_matrix_op_matrix_half_b() ? colorGreen : colorRed; 100*c8dee2aaSAndroid Build Coastguard Worker} 101