xref: /aosp_15_r20/external/skia/tests/sksl/shared/CompileTimeConstantVariables.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  colorGreen: vec4<f32>,
8*c8dee2aaSAndroid Build Coastguard Worker};
9*c8dee2aaSAndroid Build Coastguard Worker@binding(0) @group(0) var<uniform> _globalUniforms: _GlobalUniforms;
10*c8dee2aaSAndroid Build Coastguard Workerconst kConstant: i32 = 0;
11*c8dee2aaSAndroid Build Coastguard Workerconst kOtherConstant: i32 = 1;
12*c8dee2aaSAndroid Build Coastguard Workerconst kAnotherConstant: i32 = 2;
13*c8dee2aaSAndroid Build Coastguard Workerconst kFloatConstant: f32 = 2.14;
14*c8dee2aaSAndroid Build Coastguard Workerconst kFloatConstantAlias: f32 = kFloatConstant;
15*c8dee2aaSAndroid Build Coastguard Workerconst kConstVec: vec4<f32> = vec4<f32>(1.0, 0.2, 2.14, 1.0);
16*c8dee2aaSAndroid Build Coastguard Workerfn _skslMain(_skParam0: vec2<f32>) -> vec4<f32> {
17*c8dee2aaSAndroid Build Coastguard Worker  {
18*c8dee2aaSAndroid Build Coastguard Worker    const kLocalFloatConstant: f32 = 3.14;
19*c8dee2aaSAndroid Build Coastguard Worker    let kLocalFloatConstantAlias: f32 = kLocalFloatConstant;
20*c8dee2aaSAndroid Build Coastguard Worker    let integerInput: i32 = i32(_globalUniforms.colorGreen.y);
21*c8dee2aaSAndroid Build Coastguard Worker    if integerInput == kConstant {
22*c8dee2aaSAndroid Build Coastguard Worker      {
23*c8dee2aaSAndroid Build Coastguard Worker        return vec4<f32>(2.14);
24*c8dee2aaSAndroid Build Coastguard Worker      }
25*c8dee2aaSAndroid Build Coastguard Worker    } else {
26*c8dee2aaSAndroid Build Coastguard Worker      if integerInput == kOtherConstant {
27*c8dee2aaSAndroid Build Coastguard Worker        {
28*c8dee2aaSAndroid Build Coastguard Worker          return _globalUniforms.colorGreen;
29*c8dee2aaSAndroid Build Coastguard Worker        }
30*c8dee2aaSAndroid Build Coastguard Worker      } else {
31*c8dee2aaSAndroid Build Coastguard Worker        if integerInput == kAnotherConstant {
32*c8dee2aaSAndroid Build Coastguard Worker          {
33*c8dee2aaSAndroid Build Coastguard Worker            return kConstVec;
34*c8dee2aaSAndroid Build Coastguard Worker          }
35*c8dee2aaSAndroid Build Coastguard Worker        } else {
36*c8dee2aaSAndroid Build Coastguard Worker          if kLocalFloatConstantAlias < (f32(_globalUniforms.colorGreen.x) * kLocalFloatConstant) {
37*c8dee2aaSAndroid Build Coastguard Worker            {
38*c8dee2aaSAndroid Build Coastguard Worker              return vec4<f32>(3.14);
39*c8dee2aaSAndroid Build Coastguard Worker            }
40*c8dee2aaSAndroid Build Coastguard Worker          } else {
41*c8dee2aaSAndroid Build Coastguard Worker            if kFloatConstantAlias >= (f32(_globalUniforms.colorGreen.x) * kFloatConstantAlias) {
42*c8dee2aaSAndroid Build Coastguard Worker              {
43*c8dee2aaSAndroid Build Coastguard Worker                return vec4<f32>(0.0);
44*c8dee2aaSAndroid Build Coastguard Worker              }
45*c8dee2aaSAndroid Build Coastguard Worker            } else {
46*c8dee2aaSAndroid Build Coastguard Worker              {
47*c8dee2aaSAndroid Build Coastguard Worker                return vec4<f32>(1.0, 0.0, 0.0, 1.0);
48*c8dee2aaSAndroid Build Coastguard Worker              }
49*c8dee2aaSAndroid Build Coastguard Worker            }
50*c8dee2aaSAndroid Build Coastguard Worker          }
51*c8dee2aaSAndroid Build Coastguard Worker        }
52*c8dee2aaSAndroid Build Coastguard Worker      }
53*c8dee2aaSAndroid Build Coastguard Worker    }
54*c8dee2aaSAndroid Build Coastguard Worker  }
55*c8dee2aaSAndroid Build Coastguard Worker  return vec4<f32>();
56*c8dee2aaSAndroid Build Coastguard Worker}
57*c8dee2aaSAndroid Build Coastguard Worker@fragment fn main() -> FSOut {
58*c8dee2aaSAndroid Build Coastguard Worker  var _stageOut: FSOut;
59*c8dee2aaSAndroid Build Coastguard Worker  _stageOut.sk_FragColor = _skslMain(/*fragcoord*/ vec2<f32>());
60*c8dee2aaSAndroid Build Coastguard Worker  return _stageOut;
61*c8dee2aaSAndroid Build Coastguard Worker}
62