xref: /aosp_15_r20/external/skia/tests/sksl/shared/UnaryPositiveNegative.wgsl (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
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