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 mat3 splat_4 = mat3(4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0); 9*c8dee2aaSAndroid Build Coastguard Worker const mat3 splat_2 = mat3(2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0); 10*c8dee2aaSAndroid Build Coastguard Worker mat3 m = mat3(2.0); 11*c8dee2aaSAndroid Build Coastguard Worker m += splat_4; 12*c8dee2aaSAndroid Build Coastguard Worker ok = ok && m == mat3(6.0, 4.0, 4.0, 4.0, 6.0, 4.0, 4.0, 4.0, 6.0); 13*c8dee2aaSAndroid Build Coastguard Worker m = mat3(2.0); 14*c8dee2aaSAndroid Build Coastguard Worker m -= splat_4; 15*c8dee2aaSAndroid Build Coastguard Worker ok = ok && m == mat3(-2.0, -4.0, -4.0, -4.0, -2.0, -4.0, -4.0, -4.0, -2.0); 16*c8dee2aaSAndroid Build Coastguard Worker m = mat3(2.0); 17*c8dee2aaSAndroid Build Coastguard Worker m /= splat_4; 18*c8dee2aaSAndroid Build Coastguard Worker ok = ok && m == mat3(0.5); 19*c8dee2aaSAndroid Build Coastguard Worker m = splat_4; 20*c8dee2aaSAndroid Build Coastguard Worker m += mat3(2.0); 21*c8dee2aaSAndroid Build Coastguard Worker ok = ok && m == mat3(6.0, 4.0, 4.0, 4.0, 6.0, 4.0, 4.0, 4.0, 6.0); 22*c8dee2aaSAndroid Build Coastguard Worker m = splat_4; 23*c8dee2aaSAndroid Build Coastguard Worker m -= mat3(2.0); 24*c8dee2aaSAndroid Build Coastguard Worker ok = ok && m == mat3(2.0, 4.0, 4.0, 4.0, 2.0, 4.0, 4.0, 4.0, 2.0); 25*c8dee2aaSAndroid Build Coastguard Worker m = splat_4; 26*c8dee2aaSAndroid Build Coastguard Worker m /= splat_2; 27*c8dee2aaSAndroid Build Coastguard Worker ok = ok && m == mat3(2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0); 28*c8dee2aaSAndroid Build Coastguard Worker } 29*c8dee2aaSAndroid Build Coastguard Worker { 30*c8dee2aaSAndroid Build Coastguard Worker mat4 m = mat4(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0); 31*c8dee2aaSAndroid Build Coastguard Worker m += mat4(16.0, 15.0, 14.0, 13.0, 12.0, 11.0, 10.0, 9.0, 8.0, 7.0, 6.0, 5.0, 4.0, 3.0, 2.0, 1.0); 32*c8dee2aaSAndroid Build Coastguard Worker ok = ok && m == mat4(17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0); 33*c8dee2aaSAndroid Build Coastguard Worker } 34*c8dee2aaSAndroid Build Coastguard Worker { 35*c8dee2aaSAndroid Build Coastguard Worker mat2 m = mat2(10.0, 20.0, 30.0, 40.0); 36*c8dee2aaSAndroid Build Coastguard Worker m -= mat2(1.0, 2.0, 3.0, 4.0); 37*c8dee2aaSAndroid Build Coastguard Worker ok = ok && m == mat2(9.0, 18.0, 27.0, 36.0); 38*c8dee2aaSAndroid Build Coastguard Worker } 39*c8dee2aaSAndroid Build Coastguard Worker { 40*c8dee2aaSAndroid Build Coastguard Worker mat2 m = mat2(2.0, 4.0, 6.0, 8.0); 41*c8dee2aaSAndroid Build Coastguard Worker m /= mat2(2.0, 2.0, 2.0, 4.0); 42*c8dee2aaSAndroid Build Coastguard Worker ok = ok && m == mat2(1.0, 2.0, 3.0, 2.0); 43*c8dee2aaSAndroid Build Coastguard Worker } 44*c8dee2aaSAndroid Build Coastguard Worker { 45*c8dee2aaSAndroid Build Coastguard Worker mat2 m = mat2(1.0, 2.0, 7.0, 4.0); 46*c8dee2aaSAndroid Build Coastguard Worker m *= mat2(3.0, 5.0, 3.0, 2.0); 47*c8dee2aaSAndroid Build Coastguard Worker ok = ok && m == mat2(38.0, 26.0, 17.0, 14.0); 48*c8dee2aaSAndroid Build Coastguard Worker } 49*c8dee2aaSAndroid Build Coastguard Worker { 50*c8dee2aaSAndroid Build Coastguard Worker mat3 m = mat3(10.0, 4.0, 2.0, 20.0, 5.0, 3.0, 10.0, 6.0, 5.0); 51*c8dee2aaSAndroid Build Coastguard Worker m *= mat3(3.0, 3.0, 4.0, 2.0, 3.0, 4.0, 4.0, 9.0, 2.0); 52*c8dee2aaSAndroid Build Coastguard Worker ok = ok && m == mat3(130.0, 51.0, 35.0, 120.0, 47.0, 33.0, 240.0, 73.0, 45.0); 53*c8dee2aaSAndroid Build Coastguard Worker } 54*c8dee2aaSAndroid Build Coastguard Worker return ok; 55*c8dee2aaSAndroid Build Coastguard Worker} 56*c8dee2aaSAndroid Build Coastguard Workervec4 main() { 57*c8dee2aaSAndroid Build Coastguard Worker bool _0_ok = true; 58*c8dee2aaSAndroid Build Coastguard Worker { 59*c8dee2aaSAndroid Build Coastguard Worker const mat3 _1_splat_4 = mat3(4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0); 60*c8dee2aaSAndroid Build Coastguard Worker const mat3 _2_splat_2 = mat3(2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0); 61*c8dee2aaSAndroid Build Coastguard Worker mat3 _3_m = mat3(2.0); 62*c8dee2aaSAndroid Build Coastguard Worker _3_m += _1_splat_4; 63*c8dee2aaSAndroid Build Coastguard Worker _0_ok = _0_ok && _3_m == mat3(6.0, 4.0, 4.0, 4.0, 6.0, 4.0, 4.0, 4.0, 6.0); 64*c8dee2aaSAndroid Build Coastguard Worker _3_m = mat3(2.0); 65*c8dee2aaSAndroid Build Coastguard Worker _3_m -= _1_splat_4; 66*c8dee2aaSAndroid Build Coastguard Worker _0_ok = _0_ok && _3_m == mat3(-2.0, -4.0, -4.0, -4.0, -2.0, -4.0, -4.0, -4.0, -2.0); 67*c8dee2aaSAndroid Build Coastguard Worker _3_m = mat3(2.0); 68*c8dee2aaSAndroid Build Coastguard Worker _3_m /= _1_splat_4; 69*c8dee2aaSAndroid Build Coastguard Worker _0_ok = _0_ok && _3_m == mat3(0.5); 70*c8dee2aaSAndroid Build Coastguard Worker _3_m = _1_splat_4; 71*c8dee2aaSAndroid Build Coastguard Worker _3_m += mat3(2.0); 72*c8dee2aaSAndroid Build Coastguard Worker _0_ok = _0_ok && _3_m == mat3(6.0, 4.0, 4.0, 4.0, 6.0, 4.0, 4.0, 4.0, 6.0); 73*c8dee2aaSAndroid Build Coastguard Worker _3_m = _1_splat_4; 74*c8dee2aaSAndroid Build Coastguard Worker _3_m -= mat3(2.0); 75*c8dee2aaSAndroid Build Coastguard Worker _0_ok = _0_ok && _3_m == mat3(2.0, 4.0, 4.0, 4.0, 2.0, 4.0, 4.0, 4.0, 2.0); 76*c8dee2aaSAndroid Build Coastguard Worker _3_m = _1_splat_4; 77*c8dee2aaSAndroid Build Coastguard Worker _3_m /= _2_splat_2; 78*c8dee2aaSAndroid Build Coastguard Worker _0_ok = _0_ok && _3_m == mat3(2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0); 79*c8dee2aaSAndroid Build Coastguard Worker } 80*c8dee2aaSAndroid Build Coastguard Worker { 81*c8dee2aaSAndroid Build Coastguard Worker mat4 _4_m = mat4(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0); 82*c8dee2aaSAndroid Build Coastguard Worker _4_m += mat4(16.0, 15.0, 14.0, 13.0, 12.0, 11.0, 10.0, 9.0, 8.0, 7.0, 6.0, 5.0, 4.0, 3.0, 2.0, 1.0); 83*c8dee2aaSAndroid Build Coastguard Worker _0_ok = _0_ok && _4_m == mat4(17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0); 84*c8dee2aaSAndroid Build Coastguard Worker } 85*c8dee2aaSAndroid Build Coastguard Worker { 86*c8dee2aaSAndroid Build Coastguard Worker mat2 _5_m = mat2(10.0, 20.0, 30.0, 40.0); 87*c8dee2aaSAndroid Build Coastguard Worker _5_m -= mat2(1.0, 2.0, 3.0, 4.0); 88*c8dee2aaSAndroid Build Coastguard Worker _0_ok = _0_ok && _5_m == mat2(9.0, 18.0, 27.0, 36.0); 89*c8dee2aaSAndroid Build Coastguard Worker } 90*c8dee2aaSAndroid Build Coastguard Worker { 91*c8dee2aaSAndroid Build Coastguard Worker mat2 _6_m = mat2(2.0, 4.0, 6.0, 8.0); 92*c8dee2aaSAndroid Build Coastguard Worker _6_m /= mat2(2.0, 2.0, 2.0, 4.0); 93*c8dee2aaSAndroid Build Coastguard Worker _0_ok = _0_ok && _6_m == mat2(1.0, 2.0, 3.0, 2.0); 94*c8dee2aaSAndroid Build Coastguard Worker } 95*c8dee2aaSAndroid Build Coastguard Worker { 96*c8dee2aaSAndroid Build Coastguard Worker mat2 _7_m = mat2(1.0, 2.0, 7.0, 4.0); 97*c8dee2aaSAndroid Build Coastguard Worker _7_m *= mat2(3.0, 5.0, 3.0, 2.0); 98*c8dee2aaSAndroid Build Coastguard Worker _0_ok = _0_ok && _7_m == mat2(38.0, 26.0, 17.0, 14.0); 99*c8dee2aaSAndroid Build Coastguard Worker } 100*c8dee2aaSAndroid Build Coastguard Worker { 101*c8dee2aaSAndroid Build Coastguard Worker mat3 _8_m = mat3(10.0, 4.0, 2.0, 20.0, 5.0, 3.0, 10.0, 6.0, 5.0); 102*c8dee2aaSAndroid Build Coastguard Worker _8_m *= mat3(3.0, 3.0, 4.0, 2.0, 3.0, 4.0, 4.0, 9.0, 2.0); 103*c8dee2aaSAndroid Build Coastguard Worker _0_ok = _0_ok && _8_m == mat3(130.0, 51.0, 35.0, 120.0, 47.0, 33.0, 240.0, 73.0, 45.0); 104*c8dee2aaSAndroid Build Coastguard Worker } 105*c8dee2aaSAndroid Build Coastguard Worker return _0_ok && test_matrix_op_matrix_half_b() ? colorGreen : colorRed; 106*c8dee2aaSAndroid Build Coastguard Worker} 107