xref: /aosp_15_r20/external/skia/resources/sksl/intrinsics/MixFloatES3.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, bvec).
4*c8dee2aaSAndroid Build Coastguard Worker// See MixFloatES2 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
11*c8dee2aaSAndroid Build Coastguard Worker    const bool4 constTFTF = bool4(true, false, true, false);
12*c8dee2aaSAndroid Build Coastguard Worker    bool4 FTFT = bool4(colorGreen);
13*c8dee2aaSAndroid Build Coastguard Worker    bool4 TFTF = FTFT.wzyx;
14*c8dee2aaSAndroid Build Coastguard Worker
15*c8dee2aaSAndroid Build Coastguard Worker    return (mix(colorBlack.x,    colorWhite.x,    FTFT.x)         == colorBlack.x    &&
16*c8dee2aaSAndroid Build Coastguard Worker            mix(colorBlack.xy,   colorWhite.xy,   FTFT.xy)        == colorBlack.x1   &&
17*c8dee2aaSAndroid Build Coastguard Worker            mix(colorBlack.xyz,  colorWhite.xyz,  FTFT.xyz)       == colorBlack.x1z  &&
18*c8dee2aaSAndroid Build Coastguard Worker            mix(colorBlack.xyzw, colorWhite.xyzw, FTFT.xyzw)      == colorBlack.x1z1 &&
19*c8dee2aaSAndroid Build Coastguard Worker            mix(colorWhite.x,    testInputs.x,    TFTF.x)         == testInputs.x    &&
20*c8dee2aaSAndroid Build Coastguard Worker            mix(colorWhite.xy,   testInputs.xy,   TFTF.xy)        == testInputs.x1   &&
21*c8dee2aaSAndroid Build Coastguard Worker            mix(colorWhite.xyz,  testInputs.xyz,  TFTF.xyz)       == testInputs.x1z  &&
22*c8dee2aaSAndroid Build Coastguard Worker            mix(colorWhite.xyzw, testInputs.xyzw, TFTF.xyzw)      == testInputs.x1z1 &&
23*c8dee2aaSAndroid Build Coastguard Worker            mix(constWhite.x,    constVal.x,      constTFTF.x)    == constVal.x      &&
24*c8dee2aaSAndroid Build Coastguard Worker            mix(constWhite.xy,   constVal.xy,     constTFTF.xy)   == constVal.x1     &&
25*c8dee2aaSAndroid Build Coastguard Worker            mix(constWhite.xyz,  constVal.xyz,    constTFTF.xyz)  == constVal.x1z    &&
26*c8dee2aaSAndroid Build Coastguard Worker            mix(constWhite.xyzw, constVal.xyzw,   constTFTF.xyzw) == constVal.x1z1)
27*c8dee2aaSAndroid Build Coastguard Worker                ? colorGreen : colorRed;
28*c8dee2aaSAndroid Build Coastguard Worker}
29