1*c8dee2aaSAndroid Build Coastguard Workerdiagnostic(off, derivative_uniformity); 2*c8dee2aaSAndroid Build Coastguard Workerdiagnostic(off, chromium.unreachable_code); 3*c8dee2aaSAndroid Build Coastguard Workerstruct _GlobalUniforms { 4*c8dee2aaSAndroid Build Coastguard Worker testMatrix2x2: mat2x2<f32>, 5*c8dee2aaSAndroid Build Coastguard Worker testMatrix3x3: mat3x3<f32>, 6*c8dee2aaSAndroid Build Coastguard Worker testInputs: vec4<f32>, 7*c8dee2aaSAndroid Build Coastguard Worker colorRed: vec4<f32>, 8*c8dee2aaSAndroid Build Coastguard Worker colorGreen: vec4<f32>, 9*c8dee2aaSAndroid Build Coastguard Worker unknownInput: f32, 10*c8dee2aaSAndroid Build Coastguard Worker}; 11*c8dee2aaSAndroid Build Coastguard Worker@binding(0) @group(0) var<uniform> _globalUniforms: _GlobalUniforms; 12*c8dee2aaSAndroid Build Coastguard Workerfn test_no_op_mat2_X_vec2_b() -> bool { 13*c8dee2aaSAndroid Build Coastguard Worker { 14*c8dee2aaSAndroid Build Coastguard Worker var v: vec2<f32>; 15*c8dee2aaSAndroid Build Coastguard Worker var vv: vec2<f32>; 16*c8dee2aaSAndroid Build Coastguard Worker v = _globalUniforms.testInputs.xy; 17*c8dee2aaSAndroid Build Coastguard Worker v = _globalUniforms.testInputs.xy; 18*c8dee2aaSAndroid Build Coastguard Worker if any(v != _globalUniforms.testInputs.xy) { 19*c8dee2aaSAndroid Build Coastguard Worker return false; 20*c8dee2aaSAndroid Build Coastguard Worker } 21*c8dee2aaSAndroid Build Coastguard Worker if any(v != _globalUniforms.testInputs.xy) { 22*c8dee2aaSAndroid Build Coastguard Worker return false; 23*c8dee2aaSAndroid Build Coastguard Worker } 24*c8dee2aaSAndroid Build Coastguard Worker v = -_globalUniforms.testInputs.xy; 25*c8dee2aaSAndroid Build Coastguard Worker v = -_globalUniforms.testInputs.xy; 26*c8dee2aaSAndroid Build Coastguard Worker if any(v != (-_globalUniforms.testInputs.xy)) { 27*c8dee2aaSAndroid Build Coastguard Worker return false; 28*c8dee2aaSAndroid Build Coastguard Worker } 29*c8dee2aaSAndroid Build Coastguard Worker vv = vec2<f32>(0.0); 30*c8dee2aaSAndroid Build Coastguard Worker vv = vec2<f32>(0.0); 31*c8dee2aaSAndroid Build Coastguard Worker return all(vv == vec2<f32>(0.0)); 32*c8dee2aaSAndroid Build Coastguard Worker } 33*c8dee2aaSAndroid Build Coastguard Worker} 34*c8dee2aaSAndroid Build Coastguard Workerfn test_no_op_mat3_X_vec3_b() -> bool { 35*c8dee2aaSAndroid Build Coastguard Worker { 36*c8dee2aaSAndroid Build Coastguard Worker var v: vec3<f32>; 37*c8dee2aaSAndroid Build Coastguard Worker var vv: vec3<f32>; 38*c8dee2aaSAndroid Build Coastguard Worker v = _globalUniforms.testInputs.xyz; 39*c8dee2aaSAndroid Build Coastguard Worker v = _globalUniforms.testInputs.xyz; 40*c8dee2aaSAndroid Build Coastguard Worker if any(v != _globalUniforms.testInputs.xyz) { 41*c8dee2aaSAndroid Build Coastguard Worker return false; 42*c8dee2aaSAndroid Build Coastguard Worker } 43*c8dee2aaSAndroid Build Coastguard Worker if any(v != _globalUniforms.testInputs.xyz) { 44*c8dee2aaSAndroid Build Coastguard Worker return false; 45*c8dee2aaSAndroid Build Coastguard Worker } 46*c8dee2aaSAndroid Build Coastguard Worker v = -_globalUniforms.testInputs.xyz; 47*c8dee2aaSAndroid Build Coastguard Worker v = -_globalUniforms.testInputs.xyz; 48*c8dee2aaSAndroid Build Coastguard Worker if any(v != (-_globalUniforms.testInputs.xyz)) { 49*c8dee2aaSAndroid Build Coastguard Worker return false; 50*c8dee2aaSAndroid Build Coastguard Worker } 51*c8dee2aaSAndroid Build Coastguard Worker vv = vec3<f32>(0.0); 52*c8dee2aaSAndroid Build Coastguard Worker vv = vec3<f32>(0.0); 53*c8dee2aaSAndroid Build Coastguard Worker return all(vv == vec3<f32>(0.0)); 54*c8dee2aaSAndroid Build Coastguard Worker } 55*c8dee2aaSAndroid Build Coastguard Worker} 56*c8dee2aaSAndroid Build Coastguard Workerfn test_no_op_mat4_X_vec4_b() -> bool { 57*c8dee2aaSAndroid Build Coastguard Worker { 58*c8dee2aaSAndroid Build Coastguard Worker var v: vec4<f32>; 59*c8dee2aaSAndroid Build Coastguard Worker var vv: vec4<f32>; 60*c8dee2aaSAndroid Build Coastguard Worker v = _globalUniforms.testInputs; 61*c8dee2aaSAndroid Build Coastguard Worker v = _globalUniforms.testInputs; 62*c8dee2aaSAndroid Build Coastguard Worker if any(v != _globalUniforms.testInputs) { 63*c8dee2aaSAndroid Build Coastguard Worker return false; 64*c8dee2aaSAndroid Build Coastguard Worker } 65*c8dee2aaSAndroid Build Coastguard Worker if any(v != _globalUniforms.testInputs) { 66*c8dee2aaSAndroid Build Coastguard Worker return false; 67*c8dee2aaSAndroid Build Coastguard Worker } 68*c8dee2aaSAndroid Build Coastguard Worker v = -_globalUniforms.testInputs; 69*c8dee2aaSAndroid Build Coastguard Worker v = -_globalUniforms.testInputs; 70*c8dee2aaSAndroid Build Coastguard Worker if any(v != (-_globalUniforms.testInputs)) { 71*c8dee2aaSAndroid Build Coastguard Worker return false; 72*c8dee2aaSAndroid Build Coastguard Worker } 73*c8dee2aaSAndroid Build Coastguard Worker vv = vec4<f32>(0.0); 74*c8dee2aaSAndroid Build Coastguard Worker vv = vec4<f32>(0.0); 75*c8dee2aaSAndroid Build Coastguard Worker return all(vv == vec4<f32>(0.0)); 76*c8dee2aaSAndroid Build Coastguard Worker } 77*c8dee2aaSAndroid Build Coastguard Worker} 78*c8dee2aaSAndroid Build Coastguard Workerfn test_no_op_vec2_X_mat2_b() -> bool { 79*c8dee2aaSAndroid Build Coastguard Worker { 80*c8dee2aaSAndroid Build Coastguard Worker const n: vec2<f32> = vec2<f32>(-1.0); 81*c8dee2aaSAndroid Build Coastguard Worker const i: vec2<f32> = vec2<f32>(1.0); 82*c8dee2aaSAndroid Build Coastguard Worker const z: vec2<f32> = vec2<f32>(0.0); 83*c8dee2aaSAndroid Build Coastguard Worker var v: vec2<f32>; 84*c8dee2aaSAndroid Build Coastguard Worker var vv: vec2<f32> = vec2<f32>(0.0); 85*c8dee2aaSAndroid Build Coastguard Worker vv = vec2<f32>(0.0); 86*c8dee2aaSAndroid Build Coastguard Worker if any(vv != z) { 87*c8dee2aaSAndroid Build Coastguard Worker return false; 88*c8dee2aaSAndroid Build Coastguard Worker } 89*c8dee2aaSAndroid Build Coastguard Worker v = i * _globalUniforms.testMatrix2x2; 90*c8dee2aaSAndroid Build Coastguard Worker if any(v != vec2<f32>(3.0, 7.0)) { 91*c8dee2aaSAndroid Build Coastguard Worker return false; 92*c8dee2aaSAndroid Build Coastguard Worker } 93*c8dee2aaSAndroid Build Coastguard Worker v = _globalUniforms.testMatrix2x2 * i; 94*c8dee2aaSAndroid Build Coastguard Worker if any(v != vec2<f32>(4.0, 6.0)) { 95*c8dee2aaSAndroid Build Coastguard Worker return false; 96*c8dee2aaSAndroid Build Coastguard Worker } 97*c8dee2aaSAndroid Build Coastguard Worker v = n * _globalUniforms.testMatrix2x2; 98*c8dee2aaSAndroid Build Coastguard Worker if any(v != vec2<f32>(-3.0, -7.0)) { 99*c8dee2aaSAndroid Build Coastguard Worker return false; 100*c8dee2aaSAndroid Build Coastguard Worker } 101*c8dee2aaSAndroid Build Coastguard Worker v = _globalUniforms.testMatrix2x2 * n; 102*c8dee2aaSAndroid Build Coastguard Worker return all(v == vec2<f32>(-4.0, -6.0)); 103*c8dee2aaSAndroid Build Coastguard Worker } 104*c8dee2aaSAndroid Build Coastguard Worker} 105*c8dee2aaSAndroid Build Coastguard Workerfn test_no_op_vec3_X_mat3_b() -> bool { 106*c8dee2aaSAndroid Build Coastguard Worker { 107*c8dee2aaSAndroid Build Coastguard Worker const n: vec3<f32> = vec3<f32>(-1.0); 108*c8dee2aaSAndroid Build Coastguard Worker const i: vec3<f32> = vec3<f32>(1.0); 109*c8dee2aaSAndroid Build Coastguard Worker const z: vec3<f32> = vec3<f32>(0.0); 110*c8dee2aaSAndroid Build Coastguard Worker var v: vec3<f32>; 111*c8dee2aaSAndroid Build Coastguard Worker var vv: vec3<f32> = vec3<f32>(0.0); 112*c8dee2aaSAndroid Build Coastguard Worker vv = vec3<f32>(0.0); 113*c8dee2aaSAndroid Build Coastguard Worker if any(vv != z) { 114*c8dee2aaSAndroid Build Coastguard Worker return false; 115*c8dee2aaSAndroid Build Coastguard Worker } 116*c8dee2aaSAndroid Build Coastguard Worker v = i * _globalUniforms.testMatrix3x3; 117*c8dee2aaSAndroid Build Coastguard Worker if any(v != vec3<f32>(6.0, 15.0, 24.0)) { 118*c8dee2aaSAndroid Build Coastguard Worker return false; 119*c8dee2aaSAndroid Build Coastguard Worker } 120*c8dee2aaSAndroid Build Coastguard Worker v = _globalUniforms.testMatrix3x3 * i; 121*c8dee2aaSAndroid Build Coastguard Worker if any(v != vec3<f32>(12.0, 15.0, 18.0)) { 122*c8dee2aaSAndroid Build Coastguard Worker return false; 123*c8dee2aaSAndroid Build Coastguard Worker } 124*c8dee2aaSAndroid Build Coastguard Worker v = n * _globalUniforms.testMatrix3x3; 125*c8dee2aaSAndroid Build Coastguard Worker if any(v != vec3<f32>(-6.0, -15.0, -24.0)) { 126*c8dee2aaSAndroid Build Coastguard Worker return false; 127*c8dee2aaSAndroid Build Coastguard Worker } 128*c8dee2aaSAndroid Build Coastguard Worker v = _globalUniforms.testMatrix3x3 * n; 129*c8dee2aaSAndroid Build Coastguard Worker return all(v == vec3<f32>(-12.0, -15.0, -18.0)); 130*c8dee2aaSAndroid Build Coastguard Worker } 131*c8dee2aaSAndroid Build Coastguard Worker} 132*c8dee2aaSAndroid Build Coastguard Workerfn test_no_op_vec4_X_mat4_b() -> bool { 133*c8dee2aaSAndroid Build Coastguard Worker { 134*c8dee2aaSAndroid Build Coastguard Worker const n: vec4<f32> = vec4<f32>(-1.0); 135*c8dee2aaSAndroid Build Coastguard Worker const i: vec4<f32> = vec4<f32>(1.0); 136*c8dee2aaSAndroid Build Coastguard Worker const z: vec4<f32> = vec4<f32>(0.0); 137*c8dee2aaSAndroid Build Coastguard Worker let _skTemp0 = _globalUniforms.testMatrix2x2[0]; 138*c8dee2aaSAndroid Build Coastguard Worker let _skTemp1 = _globalUniforms.testMatrix2x2[1]; 139*c8dee2aaSAndroid Build Coastguard Worker let _skTemp2 = _globalUniforms.testMatrix2x2[0]; 140*c8dee2aaSAndroid Build Coastguard Worker let _skTemp3 = _globalUniforms.testMatrix2x2[1]; 141*c8dee2aaSAndroid Build Coastguard Worker let _skTemp4 = _globalUniforms.testMatrix2x2[0]; 142*c8dee2aaSAndroid Build Coastguard Worker let _skTemp5 = _globalUniforms.testMatrix2x2[1]; 143*c8dee2aaSAndroid Build Coastguard Worker let _skTemp6 = _globalUniforms.testMatrix2x2[0]; 144*c8dee2aaSAndroid Build Coastguard Worker let _skTemp7 = _globalUniforms.testMatrix2x2[1]; 145*c8dee2aaSAndroid Build Coastguard Worker let testMatrix4x4: mat4x4<f32> = mat4x4<f32>(_skTemp0[0], _skTemp0[1], _skTemp1[0], _skTemp1[1], _skTemp2[0], _skTemp2[1], _skTemp3[0], _skTemp3[1], _skTemp4[0], _skTemp4[1], _skTemp5[0], _skTemp5[1], _skTemp6[0], _skTemp6[1], _skTemp7[0], _skTemp7[1]); 146*c8dee2aaSAndroid Build Coastguard Worker var v: vec4<f32>; 147*c8dee2aaSAndroid Build Coastguard Worker var vv: vec4<f32> = vec4<f32>(0.0); 148*c8dee2aaSAndroid Build Coastguard Worker vv = vec4<f32>(0.0); 149*c8dee2aaSAndroid Build Coastguard Worker if any(vv != z) { 150*c8dee2aaSAndroid Build Coastguard Worker return false; 151*c8dee2aaSAndroid Build Coastguard Worker } 152*c8dee2aaSAndroid Build Coastguard Worker v = i * testMatrix4x4; 153*c8dee2aaSAndroid Build Coastguard Worker if any(v != vec4<f32>(10.0)) { 154*c8dee2aaSAndroid Build Coastguard Worker return false; 155*c8dee2aaSAndroid Build Coastguard Worker } 156*c8dee2aaSAndroid Build Coastguard Worker v = testMatrix4x4 * i; 157*c8dee2aaSAndroid Build Coastguard Worker if any(v != vec4<f32>(4.0, 8.0, 12.0, 16.0)) { 158*c8dee2aaSAndroid Build Coastguard Worker return false; 159*c8dee2aaSAndroid Build Coastguard Worker } 160*c8dee2aaSAndroid Build Coastguard Worker v = n * testMatrix4x4; 161*c8dee2aaSAndroid Build Coastguard Worker if any(v != vec4<f32>(-10.0)) { 162*c8dee2aaSAndroid Build Coastguard Worker return false; 163*c8dee2aaSAndroid Build Coastguard Worker } 164*c8dee2aaSAndroid Build Coastguard Worker v = testMatrix4x4 * n; 165*c8dee2aaSAndroid Build Coastguard Worker return all(v == vec4<f32>(-4.0, -8.0, -12.0, -16.0)); 166*c8dee2aaSAndroid Build Coastguard Worker } 167*c8dee2aaSAndroid Build Coastguard Worker} 168*c8dee2aaSAndroid Build Coastguard Workerfn _skslMain(coords: vec2<f32>) -> vec4<f32> { 169*c8dee2aaSAndroid Build Coastguard Worker { 170*c8dee2aaSAndroid Build Coastguard Worker var _skTemp8: vec4<f32>; 171*c8dee2aaSAndroid Build Coastguard Worker var _skTemp9: bool; 172*c8dee2aaSAndroid Build Coastguard Worker var _skTemp10: bool; 173*c8dee2aaSAndroid Build Coastguard Worker var _skTemp11: bool; 174*c8dee2aaSAndroid Build Coastguard Worker var _skTemp12: bool; 175*c8dee2aaSAndroid Build Coastguard Worker var _skTemp13: bool; 176*c8dee2aaSAndroid Build Coastguard Worker let _skTemp14 = test_no_op_mat2_X_vec2_b(); 177*c8dee2aaSAndroid Build Coastguard Worker if _skTemp14 { 178*c8dee2aaSAndroid Build Coastguard Worker let _skTemp15 = test_no_op_mat3_X_vec3_b(); 179*c8dee2aaSAndroid Build Coastguard Worker _skTemp13 = _skTemp15; 180*c8dee2aaSAndroid Build Coastguard Worker } else { 181*c8dee2aaSAndroid Build Coastguard Worker _skTemp13 = false; 182*c8dee2aaSAndroid Build Coastguard Worker } 183*c8dee2aaSAndroid Build Coastguard Worker if _skTemp13 { 184*c8dee2aaSAndroid Build Coastguard Worker let _skTemp16 = test_no_op_mat4_X_vec4_b(); 185*c8dee2aaSAndroid Build Coastguard Worker _skTemp12 = _skTemp16; 186*c8dee2aaSAndroid Build Coastguard Worker } else { 187*c8dee2aaSAndroid Build Coastguard Worker _skTemp12 = false; 188*c8dee2aaSAndroid Build Coastguard Worker } 189*c8dee2aaSAndroid Build Coastguard Worker if _skTemp12 { 190*c8dee2aaSAndroid Build Coastguard Worker let _skTemp17 = test_no_op_vec2_X_mat2_b(); 191*c8dee2aaSAndroid Build Coastguard Worker _skTemp11 = _skTemp17; 192*c8dee2aaSAndroid Build Coastguard Worker } else { 193*c8dee2aaSAndroid Build Coastguard Worker _skTemp11 = false; 194*c8dee2aaSAndroid Build Coastguard Worker } 195*c8dee2aaSAndroid Build Coastguard Worker if _skTemp11 { 196*c8dee2aaSAndroid Build Coastguard Worker let _skTemp18 = test_no_op_vec3_X_mat3_b(); 197*c8dee2aaSAndroid Build Coastguard Worker _skTemp10 = _skTemp18; 198*c8dee2aaSAndroid Build Coastguard Worker } else { 199*c8dee2aaSAndroid Build Coastguard Worker _skTemp10 = false; 200*c8dee2aaSAndroid Build Coastguard Worker } 201*c8dee2aaSAndroid Build Coastguard Worker if _skTemp10 { 202*c8dee2aaSAndroid Build Coastguard Worker let _skTemp19 = test_no_op_vec4_X_mat4_b(); 203*c8dee2aaSAndroid Build Coastguard Worker _skTemp9 = _skTemp19; 204*c8dee2aaSAndroid Build Coastguard Worker } else { 205*c8dee2aaSAndroid Build Coastguard Worker _skTemp9 = false; 206*c8dee2aaSAndroid Build Coastguard Worker } 207*c8dee2aaSAndroid Build Coastguard Worker if _skTemp9 { 208*c8dee2aaSAndroid Build Coastguard Worker _skTemp8 = _globalUniforms.colorGreen; 209*c8dee2aaSAndroid Build Coastguard Worker } else { 210*c8dee2aaSAndroid Build Coastguard Worker _skTemp8 = _globalUniforms.colorRed; 211*c8dee2aaSAndroid Build Coastguard Worker } 212*c8dee2aaSAndroid Build Coastguard Worker return _skTemp8; 213*c8dee2aaSAndroid Build Coastguard Worker } 214*c8dee2aaSAndroid Build Coastguard Worker} 215*c8dee2aaSAndroid Build Coastguard Worker@fragment fn main(@location(0) _coords: vec2<f32>) -> @location(0) vec4<f32> { 216*c8dee2aaSAndroid Build Coastguard Worker return _skslMain(_coords); 217*c8dee2aaSAndroid Build Coastguard Worker} 218