xref: /aosp_15_r20/external/skia/resources/sksl/intrinsics/MixFloatES2.sksl (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Workeruniform half4 colorGreen, colorRed, colorBlack, colorWhite, testInputs;
2*c8dee2aaSAndroid Build Coastguard Worker
3*c8dee2aaSAndroid Build Coastguard Worker// This test covers mix(vec, vec, vec) and mix(vec, vec, scalar).
4*c8dee2aaSAndroid Build Coastguard Worker// See MixFloatES3 and MixBool for additional forms of mix.
5*c8dee2aaSAndroid Build Coastguard Worker
6*c8dee2aaSAndroid Build Coastguard Workerhalf4 main(float2 coords) {
7*c8dee2aaSAndroid Build Coastguard Worker    const half4 constBlack = half4(0, 0, 0, 1);
8*c8dee2aaSAndroid Build Coastguard Worker    const half4 constWhite = half4(1);
9*c8dee2aaSAndroid Build Coastguard Worker    const half4 constVal = half4(-1.25, 0, 0.75, 2.25);
10*c8dee2aaSAndroid Build Coastguard Worker    half4 expectedBW = half4(0.5, 0.5, 0.5, 1);
11*c8dee2aaSAndroid Build Coastguard Worker    half4 expectedWT = half4(1,   0.5, 1,   2.25);
12*c8dee2aaSAndroid Build Coastguard Worker
13*c8dee2aaSAndroid Build Coastguard Worker    return (mix(colorGreen,      colorRed,        0)                   == half4(0,    1,    0, 1) &&
14*c8dee2aaSAndroid Build Coastguard Worker            mix(colorGreen,      colorRed,        0.25)                == half4(0.25, 0.75, 0, 1) &&
15*c8dee2aaSAndroid Build Coastguard Worker            mix(colorGreen,      colorRed,        0.75)                == half4(0.75, 0.25, 0, 1) &&
16*c8dee2aaSAndroid Build Coastguard Worker            mix(colorGreen,      colorRed,        1)                   == half4(1,    0,    0, 1) &&
17*c8dee2aaSAndroid Build Coastguard Worker            mix(colorBlack.x,    colorWhite.x,    0.5)                 == expectedBW.x            &&
18*c8dee2aaSAndroid Build Coastguard Worker            mix(colorBlack.xy,   colorWhite.xy,   0.5)                 == expectedBW.xy           &&
19*c8dee2aaSAndroid Build Coastguard Worker            mix(colorBlack.xyz,  colorWhite.xyz,  0.5)                 == expectedBW.xyz          &&
20*c8dee2aaSAndroid Build Coastguard Worker            mix(colorBlack.xyzw, colorWhite.xyzw, 0.5)                 == expectedBW.xyzw         &&
21*c8dee2aaSAndroid Build Coastguard Worker            mix(constBlack.x,    constWhite.x,    0.5)                 == expectedBW.x            &&
22*c8dee2aaSAndroid Build Coastguard Worker            mix(constBlack.xy,   constWhite.xy,   0.5)                 == expectedBW.xy           &&
23*c8dee2aaSAndroid Build Coastguard Worker            mix(constBlack.xyz,  constWhite.xyz,  0.5)                 == expectedBW.xyz          &&
24*c8dee2aaSAndroid Build Coastguard Worker            mix(constBlack.xyzw, constWhite.xyzw, 0.5)                 == expectedBW.xyzw         &&
25*c8dee2aaSAndroid Build Coastguard Worker            mix(colorWhite.x,    testInputs.x,    0)                   == expectedWT.x            &&
26*c8dee2aaSAndroid Build Coastguard Worker            mix(colorWhite.xy,   testInputs.xy,   half2(0, 0.5))       == expectedWT.xy           &&
27*c8dee2aaSAndroid Build Coastguard Worker            mix(colorWhite.xyz,  testInputs.xyz,  half3(0, 0.5, 0))    == expectedWT.xyz          &&
28*c8dee2aaSAndroid Build Coastguard Worker            mix(colorWhite.xyzw, testInputs.xyzw, half4(0, 0.5, 0, 1)) == expectedWT.xyzw         &&
29*c8dee2aaSAndroid Build Coastguard Worker            mix(constWhite.x,    constVal.x,      0)                   == expectedWT.x            &&
30*c8dee2aaSAndroid Build Coastguard Worker            mix(constWhite.xy,   constVal.xy,     half2(0, 0.5))       == expectedWT.xy           &&
31*c8dee2aaSAndroid Build Coastguard Worker            mix(constWhite.xyz,  constVal.xyz,    half3(0, 0.5, 0))    == expectedWT.xyz          &&
32*c8dee2aaSAndroid Build Coastguard Worker            mix(constWhite.xyzw, constVal.xyzw,   half4(0, 0.5, 0, 1)) == expectedWT.xyzw)
33*c8dee2aaSAndroid Build Coastguard Worker                ? colorGreen : colorRed;
34*c8dee2aaSAndroid Build Coastguard Worker}
35