xref: /aosp_15_r20/external/skia/gm/DATA/skia_resources/sksl/intrinsics/MixBool.sksl (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1uniform half4 colorGreen, colorRed, colorBlack, colorWhite, testInputs;
2
3// This test covers forms of mix that aren't supported in either ES2 or ES3.
4// See MixFloatES2 and MixFloatES3 for additional forms of mix.
5
6half4 main(float2 coords) {
7    int4 intGreen  = int4(colorGreen * 100);
8    int4 intRed    = int4(colorRed   * 100);
9    const int4 constIGreen  = int4(0, 100, 0, 100);
10    const int4 constIRed    = int4(100, 0, 0, 100);
11    const half4 constGreen  = half4(0, 1, 0, 1);
12    const half4 constRed    = half4(1, 0, 0, 1);
13
14    return (mix(intGreen.x,       intRed.x,       false)        == intGreen.x      &&
15            mix(intGreen.xy,      intRed.xy,      bool2(false)) == intGreen.xy     &&
16            mix(intGreen.xyz,     intRed.xyz,     bool3(false)) == intGreen.xyz    &&
17            mix(intGreen.xyzw,    intRed.xyzw,    bool4(false)) == intGreen.xyzw   &&
18            mix(intGreen.x,       intRed.x,       true)         == intRed.x        &&
19            mix(intGreen.xy,      intRed.xy,      bool2(true))  == intRed.xy       &&
20            mix(intGreen.xyz,     intRed.xyz,     bool3(true))  == intRed.xyz      &&
21            mix(intGreen.xyzw,    intRed.xyzw,    bool4(true))  == intRed.xyzw     &&
22            mix(constIGreen.x,    constIRed.x,    false)        == intGreen.x      &&
23            mix(constIGreen.xy,   constIRed.xy,   bool2(false)) == intGreen.xy     &&
24            mix(constIGreen.xyz,  constIRed.xyz,  bool3(false)) == intGreen.xyz    &&
25            mix(constIGreen.xyzw, constIRed.xyzw, bool4(false)) == intGreen.xyzw   &&
26            mix(constIGreen.x,    constIRed.x,    true)         == intRed.x        &&
27            mix(constIGreen.xy,   constIRed.xy,   bool2(true))  == intRed.xy       &&
28            mix(constIGreen.xyz,  constIRed.xyz,  bool3(true))  == intRed.xyz      &&
29            mix(constIGreen.xyzw, constIRed.xyzw, bool4(true))  == intRed.xyzw     &&
30            mix(colorGreen.x,     colorRed.x,     false)        == colorGreen.x    &&
31            mix(colorGreen.xy,    colorRed.xy,    bool2(false)) == colorGreen.xy   &&
32            mix(colorGreen.xyz,   colorRed.xyz,   bool3(false)) == colorGreen.xyz  &&
33            mix(colorGreen.xyzw,  colorRed.xyzw,  bool4(false)) == colorGreen.xyzw &&
34            mix(colorGreen.x,     colorRed.x,     true)         == colorRed.x      &&
35            mix(colorGreen.xy,    colorRed.xy,    bool2(true))  == colorRed.xy     &&
36            mix(colorGreen.xyz,   colorRed.xyz,   bool3(true))  == colorRed.xyz    &&
37            mix(colorGreen.xyzw,  colorRed.xyzw,  bool4(true))  == colorRed.xyzw   &&
38            mix(constGreen.x,     constRed.x,     false)        == colorGreen.x    &&
39            mix(constGreen.xy,    constRed.xy,    bool2(false)) == colorGreen.xy   &&
40            mix(constGreen.xyz,   constRed.xyz,   bool3(false)) == colorGreen.xyz  &&
41            mix(constGreen.xyzw,  constRed.xyzw,  bool4(false)) == colorGreen.xyzw &&
42            mix(constGreen.x,     constRed.x,     true)         == colorRed.x      &&
43            mix(constGreen.xy,    constRed.xy,    bool2(true))  == colorRed.xy     &&
44            mix(constGreen.xyz,   constRed.xyz,   bool3(true))  == colorRed.xyz    &&
45            mix(constGreen.xyzw,  constRed.xyzw,  bool4(true))  == colorRed.xyzw) ? colorGreen
46                                                                                  : colorRed;
47}
48
49