1*c8dee2aaSAndroid Build Coastguard Workerdiagnostic(off, derivative_uniformity); 2*c8dee2aaSAndroid Build Coastguard Workerdiagnostic(off, chromium.unreachable_code); 3*c8dee2aaSAndroid Build Coastguard Workerstruct FSOut { 4*c8dee2aaSAndroid Build Coastguard Worker @location(0) sk_FragColor: vec4<f32>, 5*c8dee2aaSAndroid Build Coastguard Worker}; 6*c8dee2aaSAndroid Build Coastguard Workerstruct _GlobalUniforms { 7*c8dee2aaSAndroid Build Coastguard Worker colorWhite: vec4<f32>, 8*c8dee2aaSAndroid Build Coastguard Worker colorGreen: vec4<f32>, 9*c8dee2aaSAndroid Build Coastguard Worker colorRed: vec4<f32>, 10*c8dee2aaSAndroid Build Coastguard Worker testMatrix2x2: mat2x2<f32>, 11*c8dee2aaSAndroid Build Coastguard Worker testMatrix3x3: mat3x3<f32>, 12*c8dee2aaSAndroid Build Coastguard Worker testMatrix4x4: mat4x4<f32>, 13*c8dee2aaSAndroid Build Coastguard Worker}; 14*c8dee2aaSAndroid Build Coastguard Worker@binding(0) @group(0) var<uniform> _globalUniforms: _GlobalUniforms; 15*c8dee2aaSAndroid Build Coastguard Workerfn test_iscalar_b() -> bool { 16*c8dee2aaSAndroid Build Coastguard Worker { 17*c8dee2aaSAndroid Build Coastguard Worker var x: i32 = i32(_globalUniforms.colorWhite.x); 18*c8dee2aaSAndroid Build Coastguard Worker x = -x; 19*c8dee2aaSAndroid Build Coastguard Worker return x == -1; 20*c8dee2aaSAndroid Build Coastguard Worker } 21*c8dee2aaSAndroid Build Coastguard Worker} 22*c8dee2aaSAndroid Build Coastguard Workerfn test_fvec_b() -> bool { 23*c8dee2aaSAndroid Build Coastguard Worker { 24*c8dee2aaSAndroid Build Coastguard Worker var x: vec2<f32> = _globalUniforms.colorWhite.xy; 25*c8dee2aaSAndroid Build Coastguard Worker x = -x; 26*c8dee2aaSAndroid Build Coastguard Worker return all(x == vec2<f32>(-1.0)); 27*c8dee2aaSAndroid Build Coastguard Worker } 28*c8dee2aaSAndroid Build Coastguard Worker} 29*c8dee2aaSAndroid Build Coastguard Workerfn test_ivec_b() -> bool { 30*c8dee2aaSAndroid Build Coastguard Worker { 31*c8dee2aaSAndroid Build Coastguard Worker var x: vec2<i32> = vec2<i32>(i32(_globalUniforms.colorWhite.x)); 32*c8dee2aaSAndroid Build Coastguard Worker x = -x; 33*c8dee2aaSAndroid Build Coastguard Worker return all(x == vec2<i32>(-1)); 34*c8dee2aaSAndroid Build Coastguard Worker } 35*c8dee2aaSAndroid Build Coastguard Worker} 36*c8dee2aaSAndroid Build Coastguard Workerfn test_mat2_b() -> bool { 37*c8dee2aaSAndroid Build Coastguard Worker { 38*c8dee2aaSAndroid Build Coastguard Worker const negated: mat2x2<f32> = mat2x2<f32>(-1.0, -2.0, -3.0, -4.0); 39*c8dee2aaSAndroid Build Coastguard Worker var x: mat2x2<f32> = _globalUniforms.testMatrix2x2; 40*c8dee2aaSAndroid Build Coastguard Worker x = (-1.0 * x); 41*c8dee2aaSAndroid Build Coastguard Worker return (all(x[0] == negated[0]) && all(x[1] == negated[1])); 42*c8dee2aaSAndroid Build Coastguard Worker } 43*c8dee2aaSAndroid Build Coastguard Worker} 44*c8dee2aaSAndroid Build Coastguard Workerfn test_mat3_b() -> bool { 45*c8dee2aaSAndroid Build Coastguard Worker { 46*c8dee2aaSAndroid Build Coastguard Worker const negated: mat3x3<f32> = mat3x3<f32>(-1.0, -2.0, -3.0, -4.0, -5.0, -6.0, -7.0, -8.0, -9.0); 47*c8dee2aaSAndroid Build Coastguard Worker var x: mat3x3<f32> = _globalUniforms.testMatrix3x3; 48*c8dee2aaSAndroid Build Coastguard Worker x = (-1.0 * x); 49*c8dee2aaSAndroid Build Coastguard Worker return (all(x[0] == negated[0]) && all(x[1] == negated[1]) && all(x[2] == negated[2])); 50*c8dee2aaSAndroid Build Coastguard Worker } 51*c8dee2aaSAndroid Build Coastguard Worker} 52*c8dee2aaSAndroid Build Coastguard Workerfn test_mat4_b() -> bool { 53*c8dee2aaSAndroid Build Coastguard Worker { 54*c8dee2aaSAndroid Build Coastguard Worker const negated: mat4x4<f32> = mat4x4<f32>(-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); 55*c8dee2aaSAndroid Build Coastguard Worker var x: mat4x4<f32> = _globalUniforms.testMatrix4x4; 56*c8dee2aaSAndroid Build Coastguard Worker x = (-1.0 * x); 57*c8dee2aaSAndroid Build Coastguard Worker return (all(x[0] == negated[0]) && all(x[1] == negated[1]) && all(x[2] == negated[2]) && all(x[3] == negated[3])); 58*c8dee2aaSAndroid Build Coastguard Worker } 59*c8dee2aaSAndroid Build Coastguard Worker} 60*c8dee2aaSAndroid Build Coastguard Workerfn test_hmat2_b() -> bool { 61*c8dee2aaSAndroid Build Coastguard Worker { 62*c8dee2aaSAndroid Build Coastguard Worker const negated: mat2x2<f32> = mat2x2<f32>(-1.0, -2.0, -3.0, -4.0); 63*c8dee2aaSAndroid Build Coastguard Worker var x: mat2x2<f32> = mat2x2<f32>(_globalUniforms.testMatrix2x2); 64*c8dee2aaSAndroid Build Coastguard Worker x = (-1.0 * x); 65*c8dee2aaSAndroid Build Coastguard Worker return (all(x[0] == negated[0]) && all(x[1] == negated[1])); 66*c8dee2aaSAndroid Build Coastguard Worker } 67*c8dee2aaSAndroid Build Coastguard Worker} 68*c8dee2aaSAndroid Build Coastguard Workerfn test_hmat3_b() -> bool { 69*c8dee2aaSAndroid Build Coastguard Worker { 70*c8dee2aaSAndroid Build Coastguard Worker const negated: mat3x3<f32> = mat3x3<f32>(-1.0, -2.0, -3.0, -4.0, -5.0, -6.0, -7.0, -8.0, -9.0); 71*c8dee2aaSAndroid Build Coastguard Worker var x: mat3x3<f32> = mat3x3<f32>(_globalUniforms.testMatrix3x3); 72*c8dee2aaSAndroid Build Coastguard Worker x = (-1.0 * x); 73*c8dee2aaSAndroid Build Coastguard Worker return (all(x[0] == negated[0]) && all(x[1] == negated[1]) && all(x[2] == negated[2])); 74*c8dee2aaSAndroid Build Coastguard Worker } 75*c8dee2aaSAndroid Build Coastguard Worker} 76*c8dee2aaSAndroid Build Coastguard Workerfn test_hmat4_b() -> bool { 77*c8dee2aaSAndroid Build Coastguard Worker { 78*c8dee2aaSAndroid Build Coastguard Worker const negated: mat4x4<f32> = mat4x4<f32>(-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); 79*c8dee2aaSAndroid Build Coastguard Worker var x: mat4x4<f32> = mat4x4<f32>(_globalUniforms.testMatrix4x4); 80*c8dee2aaSAndroid Build Coastguard Worker x = (-1.0 * x); 81*c8dee2aaSAndroid Build Coastguard Worker return (all(x[0] == negated[0]) && all(x[1] == negated[1]) && all(x[2] == negated[2]) && all(x[3] == negated[3])); 82*c8dee2aaSAndroid Build Coastguard Worker } 83*c8dee2aaSAndroid Build Coastguard Worker} 84*c8dee2aaSAndroid Build Coastguard Workerfn _skslMain(coords: vec2<f32>) -> vec4<f32> { 85*c8dee2aaSAndroid Build Coastguard Worker { 86*c8dee2aaSAndroid Build Coastguard Worker var _0_x: f32 = f32(_globalUniforms.colorWhite.x); 87*c8dee2aaSAndroid Build Coastguard Worker _0_x = -_0_x; 88*c8dee2aaSAndroid Build Coastguard Worker var _skTemp0: vec4<f32>; 89*c8dee2aaSAndroid Build Coastguard Worker var _skTemp1: bool; 90*c8dee2aaSAndroid Build Coastguard Worker var _skTemp2: bool; 91*c8dee2aaSAndroid Build Coastguard Worker var _skTemp3: bool; 92*c8dee2aaSAndroid Build Coastguard Worker var _skTemp4: bool; 93*c8dee2aaSAndroid Build Coastguard Worker var _skTemp5: bool; 94*c8dee2aaSAndroid Build Coastguard Worker var _skTemp6: bool; 95*c8dee2aaSAndroid Build Coastguard Worker var _skTemp7: bool; 96*c8dee2aaSAndroid Build Coastguard Worker var _skTemp8: bool; 97*c8dee2aaSAndroid Build Coastguard Worker var _skTemp9: bool; 98*c8dee2aaSAndroid Build Coastguard Worker if _0_x == -1.0 { 99*c8dee2aaSAndroid Build Coastguard Worker let _skTemp10 = test_iscalar_b(); 100*c8dee2aaSAndroid Build Coastguard Worker _skTemp9 = _skTemp10; 101*c8dee2aaSAndroid Build Coastguard Worker } else { 102*c8dee2aaSAndroid Build Coastguard Worker _skTemp9 = false; 103*c8dee2aaSAndroid Build Coastguard Worker } 104*c8dee2aaSAndroid Build Coastguard Worker if _skTemp9 { 105*c8dee2aaSAndroid Build Coastguard Worker let _skTemp11 = test_fvec_b(); 106*c8dee2aaSAndroid Build Coastguard Worker _skTemp8 = _skTemp11; 107*c8dee2aaSAndroid Build Coastguard Worker } else { 108*c8dee2aaSAndroid Build Coastguard Worker _skTemp8 = false; 109*c8dee2aaSAndroid Build Coastguard Worker } 110*c8dee2aaSAndroid Build Coastguard Worker if _skTemp8 { 111*c8dee2aaSAndroid Build Coastguard Worker let _skTemp12 = test_ivec_b(); 112*c8dee2aaSAndroid Build Coastguard Worker _skTemp7 = _skTemp12; 113*c8dee2aaSAndroid Build Coastguard Worker } else { 114*c8dee2aaSAndroid Build Coastguard Worker _skTemp7 = false; 115*c8dee2aaSAndroid Build Coastguard Worker } 116*c8dee2aaSAndroid Build Coastguard Worker if _skTemp7 { 117*c8dee2aaSAndroid Build Coastguard Worker let _skTemp13 = test_mat2_b(); 118*c8dee2aaSAndroid Build Coastguard Worker _skTemp6 = _skTemp13; 119*c8dee2aaSAndroid Build Coastguard Worker } else { 120*c8dee2aaSAndroid Build Coastguard Worker _skTemp6 = false; 121*c8dee2aaSAndroid Build Coastguard Worker } 122*c8dee2aaSAndroid Build Coastguard Worker if _skTemp6 { 123*c8dee2aaSAndroid Build Coastguard Worker let _skTemp14 = test_mat3_b(); 124*c8dee2aaSAndroid Build Coastguard Worker _skTemp5 = _skTemp14; 125*c8dee2aaSAndroid Build Coastguard Worker } else { 126*c8dee2aaSAndroid Build Coastguard Worker _skTemp5 = false; 127*c8dee2aaSAndroid Build Coastguard Worker } 128*c8dee2aaSAndroid Build Coastguard Worker if _skTemp5 { 129*c8dee2aaSAndroid Build Coastguard Worker let _skTemp15 = test_mat4_b(); 130*c8dee2aaSAndroid Build Coastguard Worker _skTemp4 = _skTemp15; 131*c8dee2aaSAndroid Build Coastguard Worker } else { 132*c8dee2aaSAndroid Build Coastguard Worker _skTemp4 = false; 133*c8dee2aaSAndroid Build Coastguard Worker } 134*c8dee2aaSAndroid Build Coastguard Worker if _skTemp4 { 135*c8dee2aaSAndroid Build Coastguard Worker let _skTemp16 = test_hmat2_b(); 136*c8dee2aaSAndroid Build Coastguard Worker _skTemp3 = _skTemp16; 137*c8dee2aaSAndroid Build Coastguard Worker } else { 138*c8dee2aaSAndroid Build Coastguard Worker _skTemp3 = false; 139*c8dee2aaSAndroid Build Coastguard Worker } 140*c8dee2aaSAndroid Build Coastguard Worker if _skTemp3 { 141*c8dee2aaSAndroid Build Coastguard Worker let _skTemp17 = test_hmat3_b(); 142*c8dee2aaSAndroid Build Coastguard Worker _skTemp2 = _skTemp17; 143*c8dee2aaSAndroid Build Coastguard Worker } else { 144*c8dee2aaSAndroid Build Coastguard Worker _skTemp2 = false; 145*c8dee2aaSAndroid Build Coastguard Worker } 146*c8dee2aaSAndroid Build Coastguard Worker if _skTemp2 { 147*c8dee2aaSAndroid Build Coastguard Worker let _skTemp18 = test_hmat4_b(); 148*c8dee2aaSAndroid Build Coastguard Worker _skTemp1 = _skTemp18; 149*c8dee2aaSAndroid Build Coastguard Worker } else { 150*c8dee2aaSAndroid Build Coastguard Worker _skTemp1 = false; 151*c8dee2aaSAndroid Build Coastguard Worker } 152*c8dee2aaSAndroid Build Coastguard Worker if _skTemp1 { 153*c8dee2aaSAndroid Build Coastguard Worker _skTemp0 = _globalUniforms.colorGreen; 154*c8dee2aaSAndroid Build Coastguard Worker } else { 155*c8dee2aaSAndroid Build Coastguard Worker _skTemp0 = _globalUniforms.colorRed; 156*c8dee2aaSAndroid Build Coastguard Worker } 157*c8dee2aaSAndroid Build Coastguard Worker return _skTemp0; 158*c8dee2aaSAndroid Build Coastguard Worker } 159*c8dee2aaSAndroid Build Coastguard Worker} 160*c8dee2aaSAndroid Build Coastguard Worker@fragment fn main() -> FSOut { 161*c8dee2aaSAndroid Build Coastguard Worker var _stageOut: FSOut; 162*c8dee2aaSAndroid Build Coastguard Worker _stageOut.sk_FragColor = _skslMain(/*fragcoord*/ vec2<f32>()); 163*c8dee2aaSAndroid Build Coastguard Worker return _stageOut; 164*c8dee2aaSAndroid Build Coastguard Worker} 165