1*35238bceSAndroid Build Coastguard Workergroup trivial "Trivial expressions" 2*35238bceSAndroid Build Coastguard Worker 3*35238bceSAndroid Build Coastguard Worker case float 4*35238bceSAndroid Build Coastguard Worker values { output float out0 = 5.0; } 5*35238bceSAndroid Build Coastguard Worker both "" 6*35238bceSAndroid Build Coastguard Worker 7*35238bceSAndroid Build Coastguard Worker precision highp float; 8*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 9*35238bceSAndroid Build Coastguard Worker 10*35238bceSAndroid Build Coastguard Worker void main() 11*35238bceSAndroid Build Coastguard Worker { 12*35238bceSAndroid Build Coastguard Worker const float a = 5.0; 13*35238bceSAndroid Build Coastguard Worker out0 = a; 14*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 15*35238bceSAndroid Build Coastguard Worker } 16*35238bceSAndroid Build Coastguard Worker "" 17*35238bceSAndroid Build Coastguard Worker end 18*35238bceSAndroid Build Coastguard Worker 19*35238bceSAndroid Build Coastguard Worker case int 20*35238bceSAndroid Build Coastguard Worker values { output int out0 = 5; } 21*35238bceSAndroid Build Coastguard Worker both "" 22*35238bceSAndroid Build Coastguard Worker precision highp float; 23*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 24*35238bceSAndroid Build Coastguard Worker 25*35238bceSAndroid Build Coastguard Worker void main() 26*35238bceSAndroid Build Coastguard Worker { 27*35238bceSAndroid Build Coastguard Worker const int a = 5; 28*35238bceSAndroid Build Coastguard Worker out0 = a; 29*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 30*35238bceSAndroid Build Coastguard Worker } 31*35238bceSAndroid Build Coastguard Worker "" 32*35238bceSAndroid Build Coastguard Worker end 33*35238bceSAndroid Build Coastguard Worker 34*35238bceSAndroid Build Coastguard Worker case bool 35*35238bceSAndroid Build Coastguard Worker values { output bool out0 = true; } 36*35238bceSAndroid Build Coastguard Worker both "" 37*35238bceSAndroid Build Coastguard Worker precision highp float; 38*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 39*35238bceSAndroid Build Coastguard Worker 40*35238bceSAndroid Build Coastguard Worker void main() 41*35238bceSAndroid Build Coastguard Worker { 42*35238bceSAndroid Build Coastguard Worker const bool a = true; 43*35238bceSAndroid Build Coastguard Worker out0 = a; 44*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 45*35238bceSAndroid Build Coastguard Worker } 46*35238bceSAndroid Build Coastguard Worker "" 47*35238bceSAndroid Build Coastguard Worker end 48*35238bceSAndroid Build Coastguard Worker 49*35238bceSAndroid Build Coastguard Worker case cast 50*35238bceSAndroid Build Coastguard Worker values { output float out0 = 1.0; } 51*35238bceSAndroid Build Coastguard Worker both "" 52*35238bceSAndroid Build Coastguard Worker precision highp float; 53*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 54*35238bceSAndroid Build Coastguard Worker 55*35238bceSAndroid Build Coastguard Worker void main() 56*35238bceSAndroid Build Coastguard Worker { 57*35238bceSAndroid Build Coastguard Worker const float a = float(int(bool(true))); 58*35238bceSAndroid Build Coastguard Worker out0 = a; 59*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 60*35238bceSAndroid Build Coastguard Worker } 61*35238bceSAndroid Build Coastguard Worker "" 62*35238bceSAndroid Build Coastguard Worker end 63*35238bceSAndroid Build Coastguard Worker 64*35238bceSAndroid Build Coastguard Workerend # trivial 65*35238bceSAndroid Build Coastguard Worker 66*35238bceSAndroid Build Coastguard Workergroup operators "Operators" 67*35238bceSAndroid Build Coastguard Worker 68*35238bceSAndroid Build Coastguard Worker case math_float 69*35238bceSAndroid Build Coastguard Worker values { output float out0 = 2.19; } 70*35238bceSAndroid Build Coastguard Worker both "" 71*35238bceSAndroid Build Coastguard Worker precision highp float; 72*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 73*35238bceSAndroid Build Coastguard Worker 74*35238bceSAndroid Build Coastguard Worker void main() 75*35238bceSAndroid Build Coastguard Worker { 76*35238bceSAndroid Build Coastguard Worker const float a = 6.0/3.5 + 1.8*2.6 - 4.2; 77*35238bceSAndroid Build Coastguard Worker out0 = a; 78*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 79*35238bceSAndroid Build Coastguard Worker } 80*35238bceSAndroid Build Coastguard Worker "" 81*35238bceSAndroid Build Coastguard Worker end 82*35238bceSAndroid Build Coastguard Worker 83*35238bceSAndroid Build Coastguard Worker case math_vec 84*35238bceSAndroid Build Coastguard Worker values { output float out0 = 15.0; } 85*35238bceSAndroid Build Coastguard Worker both "" 86*35238bceSAndroid Build Coastguard Worker precision highp float; 87*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 88*35238bceSAndroid Build Coastguard Worker 89*35238bceSAndroid Build Coastguard Worker void main() 90*35238bceSAndroid Build Coastguard Worker { 91*35238bceSAndroid Build Coastguard Worker const vec3 a = (vec4(1.0, 2.0, 3.0, 4.0).zyx * vec3(1.0, 1.5, 3.0).xyz).xzy + (vec2(5.0)/vec2(2.5)).xxy; 92*35238bceSAndroid Build Coastguard Worker out0 = a.x + a.y + a.z; 93*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 94*35238bceSAndroid Build Coastguard Worker } 95*35238bceSAndroid Build Coastguard Worker "" 96*35238bceSAndroid Build Coastguard Worker end 97*35238bceSAndroid Build Coastguard Worker 98*35238bceSAndroid Build Coastguard Worker case math_int 99*35238bceSAndroid Build Coastguard Worker values { output int out0 = 7; } 100*35238bceSAndroid Build Coastguard Worker both "" 101*35238bceSAndroid Build Coastguard Worker precision highp int; 102*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 103*35238bceSAndroid Build Coastguard Worker 104*35238bceSAndroid Build Coastguard Worker void main() 105*35238bceSAndroid Build Coastguard Worker { 106*35238bceSAndroid Build Coastguard Worker const int a = 5-1 + 2*3 - 9/3; 107*35238bceSAndroid Build Coastguard Worker out0 = a; 108*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 109*35238bceSAndroid Build Coastguard Worker } 110*35238bceSAndroid Build Coastguard Worker "" 111*35238bceSAndroid Build Coastguard Worker end 112*35238bceSAndroid Build Coastguard Worker 113*35238bceSAndroid Build Coastguard Worker case math_ivec 114*35238bceSAndroid Build Coastguard Worker values { output int out0 = 21; } 115*35238bceSAndroid Build Coastguard Worker both "" 116*35238bceSAndroid Build Coastguard Worker precision highp int; 117*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 118*35238bceSAndroid Build Coastguard Worker 119*35238bceSAndroid Build Coastguard Worker void main() 120*35238bceSAndroid Build Coastguard Worker { 121*35238bceSAndroid Build Coastguard Worker const ivec3 a = ivec2(5-1, 4).xxy + ivec4(1*3, 9/3, 1+2, 8/4).xyz; 122*35238bceSAndroid Build Coastguard Worker out0 = a.x + a.y + a.z; 123*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 124*35238bceSAndroid Build Coastguard Worker } 125*35238bceSAndroid Build Coastguard Worker "" 126*35238bceSAndroid Build Coastguard Worker end 127*35238bceSAndroid Build Coastguard Worker 128*35238bceSAndroid Build Coastguard Worker case math_mat 129*35238bceSAndroid Build Coastguard Worker values { output float out0 = 8.0; } 130*35238bceSAndroid Build Coastguard Worker both "" 131*35238bceSAndroid Build Coastguard Worker precision highp float; 132*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 133*35238bceSAndroid Build Coastguard Worker 134*35238bceSAndroid Build Coastguard Worker void main() 135*35238bceSAndroid Build Coastguard Worker { 136*35238bceSAndroid Build Coastguard Worker const mat3 a = mat3(3.0) * mat3(4.0); 137*35238bceSAndroid Build Coastguard Worker const mat4 b = mat4(a[1][1])*2.0; 138*35238bceSAndroid Build Coastguard Worker const mat2 c = mat2(b[0][0]) / 3.0; 139*35238bceSAndroid Build Coastguard Worker out0 = c[0][0]+c[1][0]; 140*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 141*35238bceSAndroid Build Coastguard Worker } 142*35238bceSAndroid Build Coastguard Worker "" 143*35238bceSAndroid Build Coastguard Worker end 144*35238bceSAndroid Build Coastguard Worker 145*35238bceSAndroid Build Coastguard Worker case logical 146*35238bceSAndroid Build Coastguard Worker values { output bool out0 = true; } 147*35238bceSAndroid Build Coastguard Worker both "" 148*35238bceSAndroid Build Coastguard Worker precision highp int; 149*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 150*35238bceSAndroid Build Coastguard Worker 151*35238bceSAndroid Build Coastguard Worker void main() 152*35238bceSAndroid Build Coastguard Worker { 153*35238bceSAndroid Build Coastguard Worker const bool a = (!false || false) && (true ^^ false); 154*35238bceSAndroid Build Coastguard Worker out0 = a; 155*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 156*35238bceSAndroid Build Coastguard Worker } 157*35238bceSAndroid Build Coastguard Worker "" 158*35238bceSAndroid Build Coastguard Worker end 159*35238bceSAndroid Build Coastguard Worker 160*35238bceSAndroid Build Coastguard Worker case compare 161*35238bceSAndroid Build Coastguard Worker values { output bool out0 = true; } 162*35238bceSAndroid Build Coastguard Worker both "" 163*35238bceSAndroid Build Coastguard Worker precision highp int; 164*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 165*35238bceSAndroid Build Coastguard Worker 166*35238bceSAndroid Build Coastguard Worker void main() 167*35238bceSAndroid Build Coastguard Worker { 168*35238bceSAndroid Build Coastguard Worker const bool a = (false == false) && (true != false) && (1 < 2) && (3 <= 3) && ((1 > 1) != (1 >= 1)); 169*35238bceSAndroid Build Coastguard Worker out0 = a; 170*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 171*35238bceSAndroid Build Coastguard Worker } 172*35238bceSAndroid Build Coastguard Worker "" 173*35238bceSAndroid Build Coastguard Worker end 174*35238bceSAndroid Build Coastguard Worker 175*35238bceSAndroid Build Coastguard Worker case selection 176*35238bceSAndroid Build Coastguard Worker values { output float out0 = 5.3; } 177*35238bceSAndroid Build Coastguard Worker both "" 178*35238bceSAndroid Build Coastguard Worker precision highp float; 179*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 180*35238bceSAndroid Build Coastguard Worker 181*35238bceSAndroid Build Coastguard Worker void main() 182*35238bceSAndroid Build Coastguard Worker { 183*35238bceSAndroid Build Coastguard Worker const float a = false ? 0.0 : (true ? 5.3 : 1.0); 184*35238bceSAndroid Build Coastguard Worker out0 = a; 185*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 186*35238bceSAndroid Build Coastguard Worker } 187*35238bceSAndroid Build Coastguard Worker "" 188*35238bceSAndroid Build Coastguard Worker end 189*35238bceSAndroid Build Coastguard Worker 190*35238bceSAndroid Build Coastguard Workerend # operators 191*35238bceSAndroid Build Coastguard Worker 192*35238bceSAndroid Build Coastguard Workergroup complex_types "Arrays, structs & nested calls" 193*35238bceSAndroid Build Coastguard Worker 194*35238bceSAndroid Build Coastguard Worker case struct 195*35238bceSAndroid Build Coastguard Worker values { output float out0 = 260.922; } 196*35238bceSAndroid Build Coastguard Worker both "" 197*35238bceSAndroid Build Coastguard Worker precision highp float; 198*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 199*35238bceSAndroid Build Coastguard Worker 200*35238bceSAndroid Build Coastguard Worker struct S 201*35238bceSAndroid Build Coastguard Worker { 202*35238bceSAndroid Build Coastguard Worker vec4 a; 203*35238bceSAndroid Build Coastguard Worker int b; 204*35238bceSAndroid Build Coastguard Worker }; 205*35238bceSAndroid Build Coastguard Worker 206*35238bceSAndroid Build Coastguard Worker void main() 207*35238bceSAndroid Build Coastguard Worker { 208*35238bceSAndroid Build Coastguard Worker const S s = S(vec4(1.5), 123); 209*35238bceSAndroid Build Coastguard Worker out0 = length(s.a.xy)*float(s.b); 210*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 211*35238bceSAndroid Build Coastguard Worker } 212*35238bceSAndroid Build Coastguard Worker "" 213*35238bceSAndroid Build Coastguard Worker end 214*35238bceSAndroid Build Coastguard Worker 215*35238bceSAndroid Build Coastguard Worker case nested_struct 216*35238bceSAndroid Build Coastguard Worker values { output float out0 = 965.9; } 217*35238bceSAndroid Build Coastguard Worker both "" 218*35238bceSAndroid Build Coastguard Worker precision highp float; 219*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 220*35238bceSAndroid Build Coastguard Worker 221*35238bceSAndroid Build Coastguard Worker struct S 222*35238bceSAndroid Build Coastguard Worker { 223*35238bceSAndroid Build Coastguard Worker vec4 v; 224*35238bceSAndroid Build Coastguard Worker int i; 225*35238bceSAndroid Build Coastguard Worker }; 226*35238bceSAndroid Build Coastguard Worker 227*35238bceSAndroid Build Coastguard Worker struct T 228*35238bceSAndroid Build Coastguard Worker { 229*35238bceSAndroid Build Coastguard Worker S s; 230*35238bceSAndroid Build Coastguard Worker bool b; 231*35238bceSAndroid Build Coastguard Worker int i; 232*35238bceSAndroid Build Coastguard Worker }; 233*35238bceSAndroid Build Coastguard Worker 234*35238bceSAndroid Build Coastguard Worker struct U 235*35238bceSAndroid Build Coastguard Worker { 236*35238bceSAndroid Build Coastguard Worker S s; 237*35238bceSAndroid Build Coastguard Worker T t; 238*35238bceSAndroid Build Coastguard Worker }; 239*35238bceSAndroid Build Coastguard Worker 240*35238bceSAndroid Build Coastguard Worker void main() 241*35238bceSAndroid Build Coastguard Worker { 242*35238bceSAndroid Build Coastguard Worker const S s = S(vec4(1.5), 123); 243*35238bceSAndroid Build Coastguard Worker const T t = T(s, false, 3); 244*35238bceSAndroid Build Coastguard Worker const U u = U(s, t); 245*35238bceSAndroid Build Coastguard Worker const U v = U(S(vec4(1.3), 4), T(S(vec4(2.0), 5), true, 6)); 246*35238bceSAndroid Build Coastguard Worker out0 = float(u.s.i*v.t.i + v.t.s.i)*v.s.v.x; // float(123*6 + 5)*1.3 247*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 248*35238bceSAndroid Build Coastguard Worker } 249*35238bceSAndroid Build Coastguard Worker "" 250*35238bceSAndroid Build Coastguard Worker end 251*35238bceSAndroid Build Coastguard Worker 252*35238bceSAndroid Build Coastguard Worker case array 253*35238bceSAndroid Build Coastguard Worker values 254*35238bceSAndroid Build Coastguard Worker { 255*35238bceSAndroid Build Coastguard Worker input float in0 = [ 0.0 | 1.0]; 256*35238bceSAndroid Build Coastguard Worker output float out0 = [0.0 | 1.0]; 257*35238bceSAndroid Build Coastguard Worker } 258*35238bceSAndroid Build Coastguard Worker both "" 259*35238bceSAndroid Build Coastguard Worker precision highp float; 260*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 261*35238bceSAndroid Build Coastguard Worker 262*35238bceSAndroid Build Coastguard Worker void main() 263*35238bceSAndroid Build Coastguard Worker { 264*35238bceSAndroid Build Coastguard Worker float a[int(max(-1.0, 2.0))]; 265*35238bceSAndroid Build Coastguard Worker a[0] = -1.0; 266*35238bceSAndroid Build Coastguard Worker a[1] = in0; 267*35238bceSAndroid Build Coastguard Worker out0 = a[int(min(1.0, 2.0))]; 268*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 269*35238bceSAndroid Build Coastguard Worker } 270*35238bceSAndroid Build Coastguard Worker "" 271*35238bceSAndroid Build Coastguard Worker end 272*35238bceSAndroid Build Coastguard Worker 273*35238bceSAndroid Build Coastguard Worker case nested_builtin_funcs 274*35238bceSAndroid Build Coastguard Worker values { output float out0 = 3.05; } 275*35238bceSAndroid Build Coastguard Worker both "" 276*35238bceSAndroid Build Coastguard Worker precision highp float; 277*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 278*35238bceSAndroid Build Coastguard Worker 279*35238bceSAndroid Build Coastguard Worker void main() 280*35238bceSAndroid Build Coastguard Worker { 281*35238bceSAndroid Build Coastguard Worker const float a = sqrt( atan(sin(1.5)/cos(1.5)) /*1.5*/ * log2(exp2(log(exp(6.2) + 0.1)) + 0.1) /*~6.2*/); 282*35238bceSAndroid Build Coastguard Worker out0 = a; 283*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 284*35238bceSAndroid Build Coastguard Worker } 285*35238bceSAndroid Build Coastguard Worker "" 286*35238bceSAndroid Build Coastguard Worker end 287*35238bceSAndroid Build Coastguard Worker 288*35238bceSAndroid Build Coastguard Workerend # complex_types 289