1*35238bceSAndroid Build Coastguard Worker# Tests todo: 2*35238bceSAndroid Build Coastguard Worker# - inout with varyings, attributes, uniforms (and arrays of 'em) 3*35238bceSAndroid Build Coastguard Worker# - inout with arrays, array elements 4*35238bceSAndroid Build Coastguard Worker# - inout with array elements 5*35238bceSAndroid Build Coastguard Worker# - inout by-value semantics (arrays & elements & structs) 6*35238bceSAndroid Build Coastguard Worker 7*35238bceSAndroid Build Coastguard Worker# Done: 8*35238bceSAndroid Build Coastguard Worker# - control flow: return, return in loop, etc. 9*35238bceSAndroid Build Coastguard Worker 10*35238bceSAndroid Build Coastguard Workergroup datatypes "Function Parameter Data Types" 11*35238bceSAndroid Build Coastguard Worker 12*35238bceSAndroid Build Coastguard Worker case float_float 13*35238bceSAndroid Build Coastguard Worker version 300 es 14*35238bceSAndroid Build Coastguard Worker values 15*35238bceSAndroid Build Coastguard Worker { 16*35238bceSAndroid Build Coastguard Worker input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 17*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 18*35238bceSAndroid Build Coastguard Worker } 19*35238bceSAndroid Build Coastguard Worker 20*35238bceSAndroid Build Coastguard Worker both "" 21*35238bceSAndroid Build Coastguard Worker #version 300 es 22*35238bceSAndroid Build Coastguard Worker precision mediump float; 23*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 24*35238bceSAndroid Build Coastguard Worker 25*35238bceSAndroid Build Coastguard Worker float func (float a) 26*35238bceSAndroid Build Coastguard Worker { 27*35238bceSAndroid Build Coastguard Worker return -a; 28*35238bceSAndroid Build Coastguard Worker } 29*35238bceSAndroid Build Coastguard Worker 30*35238bceSAndroid Build Coastguard Worker void main() 31*35238bceSAndroid Build Coastguard Worker { 32*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 33*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 34*35238bceSAndroid Build Coastguard Worker } 35*35238bceSAndroid Build Coastguard Worker "" 36*35238bceSAndroid Build Coastguard Worker end 37*35238bceSAndroid Build Coastguard Worker 38*35238bceSAndroid Build Coastguard Worker case float_vec2 39*35238bceSAndroid Build Coastguard Worker version 300 es 40*35238bceSAndroid Build Coastguard Worker values 41*35238bceSAndroid Build Coastguard Worker { 42*35238bceSAndroid Build Coastguard Worker input vec2 in0 = [ vec2(0.0, 1.0) | vec2(2.0, 2.5) ]; 43*35238bceSAndroid Build Coastguard Worker output float out0 = [ -1.0 | -4.5 ]; 44*35238bceSAndroid Build Coastguard Worker } 45*35238bceSAndroid Build Coastguard Worker 46*35238bceSAndroid Build Coastguard Worker both "" 47*35238bceSAndroid Build Coastguard Worker #version 300 es 48*35238bceSAndroid Build Coastguard Worker precision mediump float; 49*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 50*35238bceSAndroid Build Coastguard Worker 51*35238bceSAndroid Build Coastguard Worker float func (vec2 a) 52*35238bceSAndroid Build Coastguard Worker { 53*35238bceSAndroid Build Coastguard Worker return -(a.x + a.y); 54*35238bceSAndroid Build Coastguard Worker } 55*35238bceSAndroid Build Coastguard Worker 56*35238bceSAndroid Build Coastguard Worker void main() 57*35238bceSAndroid Build Coastguard Worker { 58*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 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 Worker case float_vec3 65*35238bceSAndroid Build Coastguard Worker version 300 es 66*35238bceSAndroid Build Coastguard Worker values 67*35238bceSAndroid Build Coastguard Worker { 68*35238bceSAndroid Build Coastguard Worker input vec3 in0 = [ vec3(0.0, 1.0, -2.0) | vec3(2.0, 2.5, -4.0) ]; 69*35238bceSAndroid Build Coastguard Worker output float out0 = [ 1.0 | -0.5 ]; 70*35238bceSAndroid Build Coastguard Worker } 71*35238bceSAndroid Build Coastguard Worker 72*35238bceSAndroid Build Coastguard Worker both "" 73*35238bceSAndroid Build Coastguard Worker #version 300 es 74*35238bceSAndroid Build Coastguard Worker precision mediump float; 75*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 76*35238bceSAndroid Build Coastguard Worker 77*35238bceSAndroid Build Coastguard Worker float func (vec3 a) 78*35238bceSAndroid Build Coastguard Worker { 79*35238bceSAndroid Build Coastguard Worker return -(a.x + a.y + a.z); 80*35238bceSAndroid Build Coastguard Worker } 81*35238bceSAndroid Build Coastguard Worker 82*35238bceSAndroid Build Coastguard Worker void main() 83*35238bceSAndroid Build Coastguard Worker { 84*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 85*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 86*35238bceSAndroid Build Coastguard Worker } 87*35238bceSAndroid Build Coastguard Worker "" 88*35238bceSAndroid Build Coastguard Worker end 89*35238bceSAndroid Build Coastguard Worker 90*35238bceSAndroid Build Coastguard Worker case float_vec4 91*35238bceSAndroid Build Coastguard Worker version 300 es 92*35238bceSAndroid Build Coastguard Worker values 93*35238bceSAndroid Build Coastguard Worker { 94*35238bceSAndroid Build Coastguard Worker input vec4 in0 = [ vec4(0.0, 1.0, -2.0, 0.5) | vec4(2.0, 2.5, 4.0, -7.0) ]; 95*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.5 | -1.5 ]; 96*35238bceSAndroid Build Coastguard Worker } 97*35238bceSAndroid Build Coastguard Worker 98*35238bceSAndroid Build Coastguard Worker both "" 99*35238bceSAndroid Build Coastguard Worker #version 300 es 100*35238bceSAndroid Build Coastguard Worker precision mediump float; 101*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 102*35238bceSAndroid Build Coastguard Worker 103*35238bceSAndroid Build Coastguard Worker float func (vec4 a) 104*35238bceSAndroid Build Coastguard Worker { 105*35238bceSAndroid Build Coastguard Worker return -(a.x + a.y + a.z + a.w); 106*35238bceSAndroid Build Coastguard Worker } 107*35238bceSAndroid Build Coastguard Worker 108*35238bceSAndroid Build Coastguard Worker void main() 109*35238bceSAndroid Build Coastguard Worker { 110*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 111*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 112*35238bceSAndroid Build Coastguard Worker } 113*35238bceSAndroid Build Coastguard Worker "" 114*35238bceSAndroid Build Coastguard Worker end 115*35238bceSAndroid Build Coastguard Worker 116*35238bceSAndroid Build Coastguard Worker case float_mat2 117*35238bceSAndroid Build Coastguard Worker version 300 es 118*35238bceSAndroid Build Coastguard Worker values 119*35238bceSAndroid Build Coastguard Worker { 120*35238bceSAndroid Build Coastguard Worker input mat2 in0 = [ mat2(0.0, 1.0, -2.0, 0.5) | mat2(2.0, 2.5, 4.0, -7.0) ]; 121*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.5 | -1.5 ]; 122*35238bceSAndroid Build Coastguard Worker } 123*35238bceSAndroid Build Coastguard Worker 124*35238bceSAndroid Build Coastguard Worker both "" 125*35238bceSAndroid Build Coastguard Worker #version 300 es 126*35238bceSAndroid Build Coastguard Worker precision mediump float; 127*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 128*35238bceSAndroid Build Coastguard Worker 129*35238bceSAndroid Build Coastguard Worker float func (mat2 a) 130*35238bceSAndroid Build Coastguard Worker { 131*35238bceSAndroid Build Coastguard Worker return -(a[0][0] + a[0][1] + a[1][0] + a[1][1]); 132*35238bceSAndroid Build Coastguard Worker } 133*35238bceSAndroid Build Coastguard Worker 134*35238bceSAndroid Build Coastguard Worker void main() 135*35238bceSAndroid Build Coastguard Worker { 136*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 137*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 138*35238bceSAndroid Build Coastguard Worker } 139*35238bceSAndroid Build Coastguard Worker "" 140*35238bceSAndroid Build Coastguard Worker end 141*35238bceSAndroid Build Coastguard Worker 142*35238bceSAndroid Build Coastguard Worker case float_mat3 143*35238bceSAndroid Build Coastguard Worker version 300 es 144*35238bceSAndroid Build Coastguard Worker values 145*35238bceSAndroid Build Coastguard Worker { 146*35238bceSAndroid Build Coastguard Worker input mat3 in0 = [ mat3(0.0, 1.0, -2.0, 0.5, 1.0, -1.0, 2.0, 4.0, -1.0) | mat3(2.0, 2.5, 4.0, -7.0, 2.5, 3.0, 0.5, -3.5, 1.0) ]; 147*35238bceSAndroid Build Coastguard Worker output float out0 = [ -4.5 | -5.0 ]; 148*35238bceSAndroid Build Coastguard Worker } 149*35238bceSAndroid Build Coastguard Worker 150*35238bceSAndroid Build Coastguard Worker both "" 151*35238bceSAndroid Build Coastguard Worker #version 300 es 152*35238bceSAndroid Build Coastguard Worker precision mediump float; 153*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 154*35238bceSAndroid Build Coastguard Worker 155*35238bceSAndroid Build Coastguard Worker float func (mat3 a) 156*35238bceSAndroid Build Coastguard Worker { 157*35238bceSAndroid Build Coastguard Worker return -(a[0][0] + a[0][1] + a[0][2] + a[1][0] + a[1][1] + a[1][2] + a[2][0] + a[2][1] + a[2][2]); 158*35238bceSAndroid Build Coastguard Worker } 159*35238bceSAndroid Build Coastguard Worker 160*35238bceSAndroid Build Coastguard Worker void main() 161*35238bceSAndroid Build Coastguard Worker { 162*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 163*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 164*35238bceSAndroid Build Coastguard Worker } 165*35238bceSAndroid Build Coastguard Worker "" 166*35238bceSAndroid Build Coastguard Worker end 167*35238bceSAndroid Build Coastguard Worker 168*35238bceSAndroid Build Coastguard Worker case float_mat4 169*35238bceSAndroid Build Coastguard Worker version 300 es 170*35238bceSAndroid Build Coastguard Worker values 171*35238bceSAndroid Build Coastguard Worker { 172*35238bceSAndroid Build Coastguard Worker input mat4 in0 = [ mat4(0.0, 1.0, -2.0, 0.5, 1.0, -1.0, 2.0, 4.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -2.0, -2.0) | mat4(2.0, 2.5, 4.0, -7.0, 2.5, 3.0, 0.5, -3.5, 1.0, 0.0, 2.0, -1.0, 1.0, 0.0, -1.0, 3.0) ]; 173*35238bceSAndroid Build Coastguard Worker output float out0 = [ -5.5 | -9.0 ]; 174*35238bceSAndroid Build Coastguard Worker } 175*35238bceSAndroid Build Coastguard Worker 176*35238bceSAndroid Build Coastguard Worker both "" 177*35238bceSAndroid Build Coastguard Worker #version 300 es 178*35238bceSAndroid Build Coastguard Worker precision mediump float; 179*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 180*35238bceSAndroid Build Coastguard Worker 181*35238bceSAndroid Build Coastguard Worker float func (mat4 a) 182*35238bceSAndroid Build Coastguard Worker { 183*35238bceSAndroid Build Coastguard Worker return -(a[0][0] + a[0][1] + a[0][2] + a[0][3] + a[1][0] + a[1][1] + a[1][2] + a[1][3] + a[2][0] + a[2][1] + a[2][2] + a[2][3] + a[3][0] + a[3][1] + a[3][2] + a[3][3]); 184*35238bceSAndroid Build Coastguard Worker } 185*35238bceSAndroid Build Coastguard Worker 186*35238bceSAndroid Build Coastguard Worker void main() 187*35238bceSAndroid Build Coastguard Worker { 188*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 189*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 190*35238bceSAndroid Build Coastguard Worker } 191*35238bceSAndroid Build Coastguard Worker "" 192*35238bceSAndroid Build Coastguard Worker end 193*35238bceSAndroid Build Coastguard Worker 194*35238bceSAndroid Build Coastguard Worker case int_int 195*35238bceSAndroid Build Coastguard Worker version 300 es 196*35238bceSAndroid Build Coastguard Worker values 197*35238bceSAndroid Build Coastguard Worker { 198*35238bceSAndroid Build Coastguard Worker input int in0 = [ -1 | 0 | 1 | 4 ]; 199*35238bceSAndroid Build Coastguard Worker output int out0 = [ 1 | 0 | -1 | -4 ]; 200*35238bceSAndroid Build Coastguard Worker } 201*35238bceSAndroid Build Coastguard Worker 202*35238bceSAndroid Build Coastguard Worker both "" 203*35238bceSAndroid Build Coastguard Worker #version 300 es 204*35238bceSAndroid Build Coastguard Worker precision mediump float; 205*35238bceSAndroid Build Coastguard Worker precision mediump int; 206*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 207*35238bceSAndroid Build Coastguard Worker 208*35238bceSAndroid Build Coastguard Worker int func (int a) 209*35238bceSAndroid Build Coastguard Worker { 210*35238bceSAndroid Build Coastguard Worker return -a; 211*35238bceSAndroid Build Coastguard Worker } 212*35238bceSAndroid Build Coastguard Worker 213*35238bceSAndroid Build Coastguard Worker void main() 214*35238bceSAndroid Build Coastguard Worker { 215*35238bceSAndroid Build Coastguard Worker ${SETUP} 216*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 217*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 218*35238bceSAndroid Build Coastguard Worker } 219*35238bceSAndroid Build Coastguard Worker "" 220*35238bceSAndroid Build Coastguard Worker end 221*35238bceSAndroid Build Coastguard Worker 222*35238bceSAndroid Build Coastguard Worker case int_ivec2 223*35238bceSAndroid Build Coastguard Worker version 300 es 224*35238bceSAndroid Build Coastguard Worker values 225*35238bceSAndroid Build Coastguard Worker { 226*35238bceSAndroid Build Coastguard Worker input ivec2 in0 = [ ivec2(-1, 0) | ivec2(1, 4) ]; 227*35238bceSAndroid Build Coastguard Worker output int out0 = [ 1 | -5 ]; 228*35238bceSAndroid Build Coastguard Worker } 229*35238bceSAndroid Build Coastguard Worker 230*35238bceSAndroid Build Coastguard Worker both "" 231*35238bceSAndroid Build Coastguard Worker #version 300 es 232*35238bceSAndroid Build Coastguard Worker precision mediump float; 233*35238bceSAndroid Build Coastguard Worker precision mediump int; 234*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 235*35238bceSAndroid Build Coastguard Worker 236*35238bceSAndroid Build Coastguard Worker int func (ivec2 a) 237*35238bceSAndroid Build Coastguard Worker { 238*35238bceSAndroid Build Coastguard Worker return -(a.x + a.y); 239*35238bceSAndroid Build Coastguard Worker } 240*35238bceSAndroid Build Coastguard Worker 241*35238bceSAndroid Build Coastguard Worker void main() 242*35238bceSAndroid Build Coastguard Worker { 243*35238bceSAndroid Build Coastguard Worker ${SETUP} 244*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 245*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 246*35238bceSAndroid Build Coastguard Worker } 247*35238bceSAndroid Build Coastguard Worker "" 248*35238bceSAndroid Build Coastguard Worker end 249*35238bceSAndroid Build Coastguard Worker 250*35238bceSAndroid Build Coastguard Worker case int_ivec3 251*35238bceSAndroid Build Coastguard Worker version 300 es 252*35238bceSAndroid Build Coastguard Worker values 253*35238bceSAndroid Build Coastguard Worker { 254*35238bceSAndroid Build Coastguard Worker input ivec3 in0 = [ ivec3(-1, 0, 2) | ivec3(1, 4, -8) ]; 255*35238bceSAndroid Build Coastguard Worker output int out0 = [ -1 | 3 ]; 256*35238bceSAndroid Build Coastguard Worker } 257*35238bceSAndroid Build Coastguard Worker 258*35238bceSAndroid Build Coastguard Worker both "" 259*35238bceSAndroid Build Coastguard Worker #version 300 es 260*35238bceSAndroid Build Coastguard Worker precision mediump float; 261*35238bceSAndroid Build Coastguard Worker precision mediump int; 262*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 263*35238bceSAndroid Build Coastguard Worker 264*35238bceSAndroid Build Coastguard Worker int func (ivec3 a) 265*35238bceSAndroid Build Coastguard Worker { 266*35238bceSAndroid Build Coastguard Worker return -(a.x + a.y + a.z); 267*35238bceSAndroid Build Coastguard Worker } 268*35238bceSAndroid Build Coastguard Worker 269*35238bceSAndroid Build Coastguard Worker void main() 270*35238bceSAndroid Build Coastguard Worker { 271*35238bceSAndroid Build Coastguard Worker ${SETUP} 272*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 273*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 274*35238bceSAndroid Build Coastguard Worker } 275*35238bceSAndroid Build Coastguard Worker "" 276*35238bceSAndroid Build Coastguard Worker end 277*35238bceSAndroid Build Coastguard Worker 278*35238bceSAndroid Build Coastguard Worker case int_ivec4 279*35238bceSAndroid Build Coastguard Worker version 300 es 280*35238bceSAndroid Build Coastguard Worker values 281*35238bceSAndroid Build Coastguard Worker { 282*35238bceSAndroid Build Coastguard Worker input ivec4 in0 = [ ivec4(-1, 0, 2, 2) | ivec4(1, 4, -8, 2) ]; 283*35238bceSAndroid Build Coastguard Worker output int out0 = [ -3 | 1 ]; 284*35238bceSAndroid Build Coastguard Worker } 285*35238bceSAndroid Build Coastguard Worker 286*35238bceSAndroid Build Coastguard Worker both "" 287*35238bceSAndroid Build Coastguard Worker #version 300 es 288*35238bceSAndroid Build Coastguard Worker precision mediump float; 289*35238bceSAndroid Build Coastguard Worker precision mediump int; 290*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 291*35238bceSAndroid Build Coastguard Worker 292*35238bceSAndroid Build Coastguard Worker int func (ivec4 a) 293*35238bceSAndroid Build Coastguard Worker { 294*35238bceSAndroid Build Coastguard Worker return -(a.x + a.y + a.z + a.w); 295*35238bceSAndroid Build Coastguard Worker } 296*35238bceSAndroid Build Coastguard Worker 297*35238bceSAndroid Build Coastguard Worker void main() 298*35238bceSAndroid Build Coastguard Worker { 299*35238bceSAndroid Build Coastguard Worker ${SETUP} 300*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 301*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 302*35238bceSAndroid Build Coastguard Worker } 303*35238bceSAndroid Build Coastguard Worker "" 304*35238bceSAndroid Build Coastguard Worker end 305*35238bceSAndroid Build Coastguard Worker 306*35238bceSAndroid Build Coastguard Worker case uint_uint 307*35238bceSAndroid Build Coastguard Worker version 300 es 308*35238bceSAndroid Build Coastguard Worker values 309*35238bceSAndroid Build Coastguard Worker { 310*35238bceSAndroid Build Coastguard Worker input uint in0 = [ 1 | 0 | 2 | 4 ]; 311*35238bceSAndroid Build Coastguard Worker output uint out0 = [ 1 | 0 | 4 | 16 ]; 312*35238bceSAndroid Build Coastguard Worker } 313*35238bceSAndroid Build Coastguard Worker 314*35238bceSAndroid Build Coastguard Worker both "" 315*35238bceSAndroid Build Coastguard Worker #version 300 es 316*35238bceSAndroid Build Coastguard Worker precision mediump float; 317*35238bceSAndroid Build Coastguard Worker precision mediump int; 318*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 319*35238bceSAndroid Build Coastguard Worker 320*35238bceSAndroid Build Coastguard Worker uint func (uint a) 321*35238bceSAndroid Build Coastguard Worker { 322*35238bceSAndroid Build Coastguard Worker return a*a; 323*35238bceSAndroid Build Coastguard Worker } 324*35238bceSAndroid Build Coastguard Worker 325*35238bceSAndroid Build Coastguard Worker void main() 326*35238bceSAndroid Build Coastguard Worker { 327*35238bceSAndroid Build Coastguard Worker ${SETUP} 328*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 329*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 330*35238bceSAndroid Build Coastguard Worker } 331*35238bceSAndroid Build Coastguard Worker "" 332*35238bceSAndroid Build Coastguard Worker end 333*35238bceSAndroid Build Coastguard Worker 334*35238bceSAndroid Build Coastguard Worker case uint_uvec2 335*35238bceSAndroid Build Coastguard Worker version 300 es 336*35238bceSAndroid Build Coastguard Worker values 337*35238bceSAndroid Build Coastguard Worker { 338*35238bceSAndroid Build Coastguard Worker input uvec2 in0 = [ uvec2(1, 0) | uvec2(2, 4) ]; 339*35238bceSAndroid Build Coastguard Worker output uint out0 = [ 1 | 6 ]; 340*35238bceSAndroid Build Coastguard Worker } 341*35238bceSAndroid Build Coastguard Worker 342*35238bceSAndroid Build Coastguard Worker both "" 343*35238bceSAndroid Build Coastguard Worker #version 300 es 344*35238bceSAndroid Build Coastguard Worker precision mediump float; 345*35238bceSAndroid Build Coastguard Worker precision mediump int; 346*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 347*35238bceSAndroid Build Coastguard Worker 348*35238bceSAndroid Build Coastguard Worker uint func (uvec2 a) 349*35238bceSAndroid Build Coastguard Worker { 350*35238bceSAndroid Build Coastguard Worker return (a.x + a.y); 351*35238bceSAndroid Build Coastguard Worker } 352*35238bceSAndroid Build Coastguard Worker 353*35238bceSAndroid Build Coastguard Worker void main() 354*35238bceSAndroid Build Coastguard Worker { 355*35238bceSAndroid Build Coastguard Worker ${SETUP} 356*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 357*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 358*35238bceSAndroid Build Coastguard Worker } 359*35238bceSAndroid Build Coastguard Worker "" 360*35238bceSAndroid Build Coastguard Worker end 361*35238bceSAndroid Build Coastguard Worker 362*35238bceSAndroid Build Coastguard Worker case uint_uvec3 363*35238bceSAndroid Build Coastguard Worker version 300 es 364*35238bceSAndroid Build Coastguard Worker values 365*35238bceSAndroid Build Coastguard Worker { 366*35238bceSAndroid Build Coastguard Worker input uvec3 in0 = [ uvec3(1, 0, 2) | uvec3(1, 4, 8) ]; 367*35238bceSAndroid Build Coastguard Worker output uint out0 = [ 3 | 13 ]; 368*35238bceSAndroid Build Coastguard Worker } 369*35238bceSAndroid Build Coastguard Worker 370*35238bceSAndroid Build Coastguard Worker both "" 371*35238bceSAndroid Build Coastguard Worker #version 300 es 372*35238bceSAndroid Build Coastguard Worker precision mediump float; 373*35238bceSAndroid Build Coastguard Worker precision mediump int; 374*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 375*35238bceSAndroid Build Coastguard Worker 376*35238bceSAndroid Build Coastguard Worker uint func (uvec3 a) 377*35238bceSAndroid Build Coastguard Worker { 378*35238bceSAndroid Build Coastguard Worker return (a.x + a.y + a.z); 379*35238bceSAndroid Build Coastguard Worker } 380*35238bceSAndroid Build Coastguard Worker 381*35238bceSAndroid Build Coastguard Worker void main() 382*35238bceSAndroid Build Coastguard Worker { 383*35238bceSAndroid Build Coastguard Worker ${SETUP} 384*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 385*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 386*35238bceSAndroid Build Coastguard Worker } 387*35238bceSAndroid Build Coastguard Worker "" 388*35238bceSAndroid Build Coastguard Worker end 389*35238bceSAndroid Build Coastguard Worker 390*35238bceSAndroid Build Coastguard Worker case uint_uvec4 391*35238bceSAndroid Build Coastguard Worker version 300 es 392*35238bceSAndroid Build Coastguard Worker values 393*35238bceSAndroid Build Coastguard Worker { 394*35238bceSAndroid Build Coastguard Worker input uvec4 in0 = [ uvec4(1, 0, 2, 2) | uvec4(1, 4, 8, 2) ]; 395*35238bceSAndroid Build Coastguard Worker output uint out0 = [ 5 | 15 ]; 396*35238bceSAndroid Build Coastguard Worker } 397*35238bceSAndroid Build Coastguard Worker 398*35238bceSAndroid Build Coastguard Worker both "" 399*35238bceSAndroid Build Coastguard Worker #version 300 es 400*35238bceSAndroid Build Coastguard Worker precision mediump float; 401*35238bceSAndroid Build Coastguard Worker precision mediump int; 402*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 403*35238bceSAndroid Build Coastguard Worker 404*35238bceSAndroid Build Coastguard Worker uint func (uvec4 a) 405*35238bceSAndroid Build Coastguard Worker { 406*35238bceSAndroid Build Coastguard Worker return (a.x + a.y + a.z + a.w); 407*35238bceSAndroid Build Coastguard Worker } 408*35238bceSAndroid Build Coastguard Worker 409*35238bceSAndroid Build Coastguard Worker void main() 410*35238bceSAndroid Build Coastguard Worker { 411*35238bceSAndroid Build Coastguard Worker ${SETUP} 412*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 413*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 414*35238bceSAndroid Build Coastguard Worker } 415*35238bceSAndroid Build Coastguard Worker "" 416*35238bceSAndroid Build Coastguard Worker end 417*35238bceSAndroid Build Coastguard Worker 418*35238bceSAndroid Build Coastguard Worker case bool_bool 419*35238bceSAndroid Build Coastguard Worker version 300 es 420*35238bceSAndroid Build Coastguard Worker values 421*35238bceSAndroid Build Coastguard Worker { 422*35238bceSAndroid Build Coastguard Worker input bool in0 = [ true | false ]; 423*35238bceSAndroid Build Coastguard Worker output bool out0 = [ false | true ]; 424*35238bceSAndroid Build Coastguard Worker } 425*35238bceSAndroid Build Coastguard Worker 426*35238bceSAndroid Build Coastguard Worker both "" 427*35238bceSAndroid Build Coastguard Worker #version 300 es 428*35238bceSAndroid Build Coastguard Worker precision mediump float; 429*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 430*35238bceSAndroid Build Coastguard Worker 431*35238bceSAndroid Build Coastguard Worker bool func (bool a) 432*35238bceSAndroid Build Coastguard Worker { 433*35238bceSAndroid Build Coastguard Worker return !a; 434*35238bceSAndroid Build Coastguard Worker } 435*35238bceSAndroid Build Coastguard Worker 436*35238bceSAndroid Build Coastguard Worker void main() 437*35238bceSAndroid Build Coastguard Worker { 438*35238bceSAndroid Build Coastguard Worker ${SETUP} 439*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 440*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 441*35238bceSAndroid Build Coastguard Worker } 442*35238bceSAndroid Build Coastguard Worker "" 443*35238bceSAndroid Build Coastguard Worker end 444*35238bceSAndroid Build Coastguard Worker 445*35238bceSAndroid Build Coastguard Worker case bool_bvec2 446*35238bceSAndroid Build Coastguard Worker version 300 es 447*35238bceSAndroid Build Coastguard Worker values 448*35238bceSAndroid Build Coastguard Worker { 449*35238bceSAndroid Build Coastguard Worker input bvec2 in0 = [ bvec2(true, true) | bvec2(false, true) ]; 450*35238bceSAndroid Build Coastguard Worker output bool out0 = [ false | true ]; 451*35238bceSAndroid Build Coastguard Worker } 452*35238bceSAndroid Build Coastguard Worker 453*35238bceSAndroid Build Coastguard Worker both "" 454*35238bceSAndroid Build Coastguard Worker #version 300 es 455*35238bceSAndroid Build Coastguard Worker precision mediump float; 456*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 457*35238bceSAndroid Build Coastguard Worker 458*35238bceSAndroid Build Coastguard Worker bool func (bvec2 a) 459*35238bceSAndroid Build Coastguard Worker { 460*35238bceSAndroid Build Coastguard Worker return !(a.x == a.y); 461*35238bceSAndroid Build Coastguard Worker } 462*35238bceSAndroid Build Coastguard Worker 463*35238bceSAndroid Build Coastguard Worker void main() 464*35238bceSAndroid Build Coastguard Worker { 465*35238bceSAndroid Build Coastguard Worker ${SETUP} 466*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 467*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 468*35238bceSAndroid Build Coastguard Worker } 469*35238bceSAndroid Build Coastguard Worker "" 470*35238bceSAndroid Build Coastguard Worker end 471*35238bceSAndroid Build Coastguard Worker 472*35238bceSAndroid Build Coastguard Worker case bool_bvec3 473*35238bceSAndroid Build Coastguard Worker version 300 es 474*35238bceSAndroid Build Coastguard Worker values 475*35238bceSAndroid Build Coastguard Worker { 476*35238bceSAndroid Build Coastguard Worker input bvec3 in0 = [ bvec3(true, true, false) | bvec3(true, false, false) ]; 477*35238bceSAndroid Build Coastguard Worker output bool out0 = [ false | true ]; 478*35238bceSAndroid Build Coastguard Worker } 479*35238bceSAndroid Build Coastguard Worker 480*35238bceSAndroid Build Coastguard Worker both "" 481*35238bceSAndroid Build Coastguard Worker #version 300 es 482*35238bceSAndroid Build Coastguard Worker precision mediump float; 483*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 484*35238bceSAndroid Build Coastguard Worker 485*35238bceSAndroid Build Coastguard Worker bool func (bvec3 a) 486*35238bceSAndroid Build Coastguard Worker { 487*35238bceSAndroid Build Coastguard Worker return (a.x == a.y) == a.z; 488*35238bceSAndroid Build Coastguard Worker } 489*35238bceSAndroid Build Coastguard Worker 490*35238bceSAndroid Build Coastguard Worker void main() 491*35238bceSAndroid Build Coastguard Worker { 492*35238bceSAndroid Build Coastguard Worker ${SETUP} 493*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 494*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 495*35238bceSAndroid Build Coastguard Worker } 496*35238bceSAndroid Build Coastguard Worker "" 497*35238bceSAndroid Build Coastguard Worker end 498*35238bceSAndroid Build Coastguard Worker 499*35238bceSAndroid Build Coastguard Worker case bool_bvec4 500*35238bceSAndroid Build Coastguard Worker version 300 es 501*35238bceSAndroid Build Coastguard Worker values 502*35238bceSAndroid Build Coastguard Worker { 503*35238bceSAndroid Build Coastguard Worker input bvec4 in0 = [ bvec4(true, true, true, false) | bvec4(false, false, true, true) | bvec4(true, false, false, true) ]; 504*35238bceSAndroid Build Coastguard Worker output bool out0 = [ false | true | true ]; 505*35238bceSAndroid Build Coastguard Worker } 506*35238bceSAndroid Build Coastguard Worker 507*35238bceSAndroid Build Coastguard Worker both "" 508*35238bceSAndroid Build Coastguard Worker #version 300 es 509*35238bceSAndroid Build Coastguard Worker precision mediump float; 510*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 511*35238bceSAndroid Build Coastguard Worker 512*35238bceSAndroid Build Coastguard Worker bool func (bvec4 a) 513*35238bceSAndroid Build Coastguard Worker { 514*35238bceSAndroid Build Coastguard Worker return ((a.x == a.y) == (a.z == a.w)); 515*35238bceSAndroid Build Coastguard Worker } 516*35238bceSAndroid Build Coastguard Worker 517*35238bceSAndroid Build Coastguard Worker void main() 518*35238bceSAndroid Build Coastguard Worker { 519*35238bceSAndroid Build Coastguard Worker ${SETUP} 520*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 521*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 522*35238bceSAndroid Build Coastguard Worker } 523*35238bceSAndroid Build Coastguard Worker "" 524*35238bceSAndroid Build Coastguard Worker end 525*35238bceSAndroid Build Coastguard Worker 526*35238bceSAndroid Build Coastguard Worker case mat2 527*35238bceSAndroid Build Coastguard Worker version 300 es 528*35238bceSAndroid Build Coastguard Worker values 529*35238bceSAndroid Build Coastguard Worker { 530*35238bceSAndroid Build Coastguard Worker input mat2 in0 = [ mat2(-2.0, 0.5, -1.0, 1.0) | mat2(1.0, -3.5, -3.5, 2.5) | mat2(-2.0, -2.0, 3.5, 0.0) ]; 531*35238bceSAndroid Build Coastguard Worker output mat2 out0 = [ mat2(4.0, -1.0, 2.0, -2.0) | mat2(-2.0, 7.0, 7.0, -5.0) | mat2(4.0, 4.0, -7.0, -0.0) ]; 532*35238bceSAndroid Build Coastguard Worker } 533*35238bceSAndroid Build Coastguard Worker 534*35238bceSAndroid Build Coastguard Worker both "" 535*35238bceSAndroid Build Coastguard Worker #version 300 es 536*35238bceSAndroid Build Coastguard Worker precision mediump float; 537*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 538*35238bceSAndroid Build Coastguard Worker 539*35238bceSAndroid Build Coastguard Worker mat2 func (mat2 a) 540*35238bceSAndroid Build Coastguard Worker { 541*35238bceSAndroid Build Coastguard Worker return -2.0*a; 542*35238bceSAndroid Build Coastguard Worker } 543*35238bceSAndroid Build Coastguard Worker 544*35238bceSAndroid Build Coastguard Worker void main() 545*35238bceSAndroid Build Coastguard Worker { 546*35238bceSAndroid Build Coastguard Worker ${SETUP} 547*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 548*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 549*35238bceSAndroid Build Coastguard Worker } 550*35238bceSAndroid Build Coastguard Worker "" 551*35238bceSAndroid Build Coastguard Worker end 552*35238bceSAndroid Build Coastguard Worker 553*35238bceSAndroid Build Coastguard Worker 554*35238bceSAndroid Build Coastguard Worker case mat2x3 555*35238bceSAndroid Build Coastguard Worker version 300 es 556*35238bceSAndroid Build Coastguard Worker values 557*35238bceSAndroid Build Coastguard Worker { 558*35238bceSAndroid Build Coastguard Worker input mat2x3 in0 = [ mat2x3(2.5, 0.0, 1.0, -2.5, 1.0, 3.0) | mat2x3(0.0, 2.0, 1.5, -3.5, 2.0, 0.5) | mat2x3(-1.5, -3.5, 2.5, 0.0, 1.5, 3.0) ]; 559*35238bceSAndroid Build Coastguard Worker output mat2x3 out0 = [ mat2x3(-5.0, -0.0, -2.0, 5.0, -2.0, -6.0) | mat2x3(-0.0, -4.0, -3.0, 7.0, -4.0, -1.0) | mat2x3(3.0, 7.0, -5.0, -0.0, -3.0, -6.0) ]; 560*35238bceSAndroid Build Coastguard Worker } 561*35238bceSAndroid Build Coastguard Worker 562*35238bceSAndroid Build Coastguard Worker both "" 563*35238bceSAndroid Build Coastguard Worker #version 300 es 564*35238bceSAndroid Build Coastguard Worker precision mediump float; 565*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 566*35238bceSAndroid Build Coastguard Worker 567*35238bceSAndroid Build Coastguard Worker mat2x3 func (mat2x3 a) 568*35238bceSAndroid Build Coastguard Worker { 569*35238bceSAndroid Build Coastguard Worker return -2.0*a; 570*35238bceSAndroid Build Coastguard Worker } 571*35238bceSAndroid Build Coastguard Worker 572*35238bceSAndroid Build Coastguard Worker void main() 573*35238bceSAndroid Build Coastguard Worker { 574*35238bceSAndroid Build Coastguard Worker ${SETUP} 575*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 576*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 577*35238bceSAndroid Build Coastguard Worker } 578*35238bceSAndroid Build Coastguard Worker "" 579*35238bceSAndroid Build Coastguard Worker end 580*35238bceSAndroid Build Coastguard Worker 581*35238bceSAndroid Build Coastguard Worker 582*35238bceSAndroid Build Coastguard Worker case mat2x4 583*35238bceSAndroid Build Coastguard Worker version 300 es 584*35238bceSAndroid Build Coastguard Worker values 585*35238bceSAndroid Build Coastguard Worker { 586*35238bceSAndroid Build Coastguard Worker input mat2x4 in0 = [ mat2x4(1.5, 3.0, -1.0, 2.5, -0.5, 3.5, 3.0, -3.0) | mat2x4(-2.5, -2.0, 3.5, -0.5, 1.0, -1.5, 0.0, -1.0) | mat2x4(-1.0, 0.5, 0.5, 3.0, 1.5, 3.0, 2.5, 3.5) ]; 587*35238bceSAndroid Build Coastguard Worker output mat2x4 out0 = [ mat2x4(-3.0, -6.0, 2.0, -5.0, 1.0, -7.0, -6.0, 6.0) | mat2x4(5.0, 4.0, -7.0, 1.0, -2.0, 3.0, -0.0, 2.0) | mat2x4(2.0, -1.0, -1.0, -6.0, -3.0, -6.0, -5.0, -7.0) ]; 588*35238bceSAndroid Build Coastguard Worker } 589*35238bceSAndroid Build Coastguard Worker 590*35238bceSAndroid Build Coastguard Worker both "" 591*35238bceSAndroid Build Coastguard Worker #version 300 es 592*35238bceSAndroid Build Coastguard Worker precision mediump float; 593*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 594*35238bceSAndroid Build Coastguard Worker 595*35238bceSAndroid Build Coastguard Worker mat2x4 func (mat2x4 a) 596*35238bceSAndroid Build Coastguard Worker { 597*35238bceSAndroid Build Coastguard Worker return -2.0*a; 598*35238bceSAndroid Build Coastguard Worker } 599*35238bceSAndroid Build Coastguard Worker 600*35238bceSAndroid Build Coastguard Worker void main() 601*35238bceSAndroid Build Coastguard Worker { 602*35238bceSAndroid Build Coastguard Worker ${SETUP} 603*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 604*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 605*35238bceSAndroid Build Coastguard Worker } 606*35238bceSAndroid Build Coastguard Worker "" 607*35238bceSAndroid Build Coastguard Worker end 608*35238bceSAndroid Build Coastguard Worker 609*35238bceSAndroid Build Coastguard Worker 610*35238bceSAndroid Build Coastguard Worker case mat3x2 611*35238bceSAndroid Build Coastguard Worker version 300 es 612*35238bceSAndroid Build Coastguard Worker values 613*35238bceSAndroid Build Coastguard Worker { 614*35238bceSAndroid Build Coastguard Worker input mat3x2 in0 = [ mat3x2(1.5, -2.5, 2.5, 3.5, 3.0, 0.5) | mat3x2(1.5, -2.0, 2.5, 0.5, -1.5, -3.5) | mat3x2(2.5, 3.5, -3.0, 2.5, -0.5, -2.5) ]; 615*35238bceSAndroid Build Coastguard Worker output mat3x2 out0 = [ mat3x2(-3.0, 5.0, -5.0, -7.0, -6.0, -1.0) | mat3x2(-3.0, 4.0, -5.0, -1.0, 3.0, 7.0) | mat3x2(-5.0, -7.0, 6.0, -5.0, 1.0, 5.0) ]; 616*35238bceSAndroid Build Coastguard Worker } 617*35238bceSAndroid Build Coastguard Worker 618*35238bceSAndroid Build Coastguard Worker both "" 619*35238bceSAndroid Build Coastguard Worker #version 300 es 620*35238bceSAndroid Build Coastguard Worker precision mediump float; 621*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 622*35238bceSAndroid Build Coastguard Worker 623*35238bceSAndroid Build Coastguard Worker mat3x2 func (mat3x2 a) 624*35238bceSAndroid Build Coastguard Worker { 625*35238bceSAndroid Build Coastguard Worker return -2.0*a; 626*35238bceSAndroid Build Coastguard Worker } 627*35238bceSAndroid Build Coastguard Worker 628*35238bceSAndroid Build Coastguard Worker void main() 629*35238bceSAndroid Build Coastguard Worker { 630*35238bceSAndroid Build Coastguard Worker ${SETUP} 631*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 632*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 633*35238bceSAndroid Build Coastguard Worker } 634*35238bceSAndroid Build Coastguard Worker "" 635*35238bceSAndroid Build Coastguard Worker end 636*35238bceSAndroid Build Coastguard Worker 637*35238bceSAndroid Build Coastguard Worker 638*35238bceSAndroid Build Coastguard Worker case mat3 639*35238bceSAndroid Build Coastguard Worker version 300 es 640*35238bceSAndroid Build Coastguard Worker values 641*35238bceSAndroid Build Coastguard Worker { 642*35238bceSAndroid Build Coastguard Worker input mat3 in0 = [ mat3(-1.5, 2.0, 3.0, -3.5, 1.0, -3.5, 1.5, -1.5, 3.0) | mat3(3.5, 0.0, 3.5, -1.5, -3.0, 0.5, -3.5, -2.5, -0.5) | mat3(1.0, -2.5, -3.5, 3.0, -1.5, 3.5, 3.0, -1.0, -0.5) ]; 643*35238bceSAndroid Build Coastguard Worker output mat3 out0 = [ mat3(3.0, -4.0, -6.0, 7.0, -2.0, 7.0, -3.0, 3.0, -6.0) | mat3(-7.0, -0.0, -7.0, 3.0, 6.0, -1.0, 7.0, 5.0, 1.0) | mat3(-2.0, 5.0, 7.0, -6.0, 3.0, -7.0, -6.0, 2.0, 1.0) ]; 644*35238bceSAndroid Build Coastguard Worker } 645*35238bceSAndroid Build Coastguard Worker 646*35238bceSAndroid Build Coastguard Worker both "" 647*35238bceSAndroid Build Coastguard Worker #version 300 es 648*35238bceSAndroid Build Coastguard Worker precision mediump float; 649*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 650*35238bceSAndroid Build Coastguard Worker 651*35238bceSAndroid Build Coastguard Worker mat3 func (mat3 a) 652*35238bceSAndroid Build Coastguard Worker { 653*35238bceSAndroid Build Coastguard Worker return -2.0*a; 654*35238bceSAndroid Build Coastguard Worker } 655*35238bceSAndroid Build Coastguard Worker 656*35238bceSAndroid Build Coastguard Worker void main() 657*35238bceSAndroid Build Coastguard Worker { 658*35238bceSAndroid Build Coastguard Worker ${SETUP} 659*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 660*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 661*35238bceSAndroid Build Coastguard Worker } 662*35238bceSAndroid Build Coastguard Worker "" 663*35238bceSAndroid Build Coastguard Worker end 664*35238bceSAndroid Build Coastguard Worker 665*35238bceSAndroid Build Coastguard Worker 666*35238bceSAndroid Build Coastguard Worker case mat3x4 667*35238bceSAndroid Build Coastguard Worker version 300 es 668*35238bceSAndroid Build Coastguard Worker values 669*35238bceSAndroid Build Coastguard Worker { 670*35238bceSAndroid Build Coastguard Worker input mat3x4 in0 = [ mat3x4(0.0, 1.0, 0.5, 0.5, 1.0, 3.5, 0.0, -0.5, 1.5, -2.0, -1.5, 3.5) | mat3x4(0.0, 0.5, -3.5, -0.5, 0.5, -3.5, 1.0, 1.0, -3.5, 1.0, -0.5, 1.5) | mat3x4(-1.0, 1.5, 2.0, -3.5, -3.5, 1.5, 3.5, -2.0, -0.5, 0.5, -1.5, -1.0) ]; 671*35238bceSAndroid Build Coastguard Worker output mat3x4 out0 = [ mat3x4(-0.0, -2.0, -1.0, -1.0, -2.0, -7.0, -0.0, 1.0, -3.0, 4.0, 3.0, -7.0) | mat3x4(-0.0, -1.0, 7.0, 1.0, -1.0, 7.0, -2.0, -2.0, 7.0, -2.0, 1.0, -3.0) | mat3x4(2.0, -3.0, -4.0, 7.0, 7.0, -3.0, -7.0, 4.0, 1.0, -1.0, 3.0, 2.0) ]; 672*35238bceSAndroid Build Coastguard Worker } 673*35238bceSAndroid Build Coastguard Worker 674*35238bceSAndroid Build Coastguard Worker both "" 675*35238bceSAndroid Build Coastguard Worker #version 300 es 676*35238bceSAndroid Build Coastguard Worker precision mediump float; 677*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 678*35238bceSAndroid Build Coastguard Worker 679*35238bceSAndroid Build Coastguard Worker mat3x4 func (mat3x4 a) 680*35238bceSAndroid Build Coastguard Worker { 681*35238bceSAndroid Build Coastguard Worker return -2.0*a; 682*35238bceSAndroid Build Coastguard Worker } 683*35238bceSAndroid Build Coastguard Worker 684*35238bceSAndroid Build Coastguard Worker void main() 685*35238bceSAndroid Build Coastguard Worker { 686*35238bceSAndroid Build Coastguard Worker ${SETUP} 687*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 688*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 689*35238bceSAndroid Build Coastguard Worker } 690*35238bceSAndroid Build Coastguard Worker "" 691*35238bceSAndroid Build Coastguard Worker end 692*35238bceSAndroid Build Coastguard Worker 693*35238bceSAndroid Build Coastguard Worker 694*35238bceSAndroid Build Coastguard Worker case mat4x2 695*35238bceSAndroid Build Coastguard Worker version 300 es 696*35238bceSAndroid Build Coastguard Worker values 697*35238bceSAndroid Build Coastguard Worker { 698*35238bceSAndroid Build Coastguard Worker input mat4x2 in0 = [ mat4x2(-1.5, -1.0, 0.5, -1.5, -1.0, 2.0, -3.5, 0.5) | mat4x2(2.0, -1.5, -2.0, 2.5, -2.0, -2.5, -0.5, 1.5) | mat4x2(-3.0, -1.5, -1.0, 2.5, -0.5, 2.5, -2.5, -1.0) ]; 699*35238bceSAndroid Build Coastguard Worker output mat4x2 out0 = [ mat4x2(3.0, 2.0, -1.0, 3.0, 2.0, -4.0, 7.0, -1.0) | mat4x2(-4.0, 3.0, 4.0, -5.0, 4.0, 5.0, 1.0, -3.0) | mat4x2(6.0, 3.0, 2.0, -5.0, 1.0, -5.0, 5.0, 2.0) ]; 700*35238bceSAndroid Build Coastguard Worker } 701*35238bceSAndroid Build Coastguard Worker 702*35238bceSAndroid Build Coastguard Worker both "" 703*35238bceSAndroid Build Coastguard Worker #version 300 es 704*35238bceSAndroid Build Coastguard Worker precision mediump float; 705*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 706*35238bceSAndroid Build Coastguard Worker 707*35238bceSAndroid Build Coastguard Worker mat4x2 func (mat4x2 a) 708*35238bceSAndroid Build Coastguard Worker { 709*35238bceSAndroid Build Coastguard Worker return -2.0*a; 710*35238bceSAndroid Build Coastguard Worker } 711*35238bceSAndroid Build Coastguard Worker 712*35238bceSAndroid Build Coastguard Worker void main() 713*35238bceSAndroid Build Coastguard Worker { 714*35238bceSAndroid Build Coastguard Worker ${SETUP} 715*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 716*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 717*35238bceSAndroid Build Coastguard Worker } 718*35238bceSAndroid Build Coastguard Worker "" 719*35238bceSAndroid Build Coastguard Worker end 720*35238bceSAndroid Build Coastguard Worker 721*35238bceSAndroid Build Coastguard Worker 722*35238bceSAndroid Build Coastguard Worker case mat4x3 723*35238bceSAndroid Build Coastguard Worker version 300 es 724*35238bceSAndroid Build Coastguard Worker values 725*35238bceSAndroid Build Coastguard Worker { 726*35238bceSAndroid Build Coastguard Worker input mat4x3 in0 = [ mat4x3(1.0, 3.0, -0.5, -2.0, -3.0, 0.0, -2.5, 2.5, 2.5, -2.5, -1.5, 2.5) | mat4x3(1.0, 2.5, -1.0, -3.0, -1.5, 2.0, -1.5, -1.0, -0.5, -0.5, -0.5, 3.0) | mat4x3(-2.5, -3.5, 3.5, 3.0, 3.5, -0.5, 3.5, 3.0, -2.0, 2.0, 2.5, 1.0) ]; 727*35238bceSAndroid Build Coastguard Worker output mat4x3 out0 = [ mat4x3(-2.0, -6.0, 1.0, 4.0, 6.0, -0.0, 5.0, -5.0, -5.0, 5.0, 3.0, -5.0) | mat4x3(-2.0, -5.0, 2.0, 6.0, 3.0, -4.0, 3.0, 2.0, 1.0, 1.0, 1.0, -6.0) | mat4x3(5.0, 7.0, -7.0, -6.0, -7.0, 1.0, -7.0, -6.0, 4.0, -4.0, -5.0, -2.0) ]; 728*35238bceSAndroid Build Coastguard Worker } 729*35238bceSAndroid Build Coastguard Worker 730*35238bceSAndroid Build Coastguard Worker both "" 731*35238bceSAndroid Build Coastguard Worker #version 300 es 732*35238bceSAndroid Build Coastguard Worker precision mediump float; 733*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 734*35238bceSAndroid Build Coastguard Worker 735*35238bceSAndroid Build Coastguard Worker mat4x3 func (mat4x3 a) 736*35238bceSAndroid Build Coastguard Worker { 737*35238bceSAndroid Build Coastguard Worker return -2.0*a; 738*35238bceSAndroid Build Coastguard Worker } 739*35238bceSAndroid Build Coastguard Worker 740*35238bceSAndroid Build Coastguard Worker void main() 741*35238bceSAndroid Build Coastguard Worker { 742*35238bceSAndroid Build Coastguard Worker ${SETUP} 743*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 744*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 745*35238bceSAndroid Build Coastguard Worker } 746*35238bceSAndroid Build Coastguard Worker "" 747*35238bceSAndroid Build Coastguard Worker end 748*35238bceSAndroid Build Coastguard Worker 749*35238bceSAndroid Build Coastguard Worker 750*35238bceSAndroid Build Coastguard Worker case mat4 751*35238bceSAndroid Build Coastguard Worker version 300 es 752*35238bceSAndroid Build Coastguard Worker values 753*35238bceSAndroid Build Coastguard Worker { 754*35238bceSAndroid Build Coastguard Worker input mat4 in0 = [ mat4(0.0, -1.5, -1.0, -2.0, -3.0, 0.5, -1.5, 2.5, -3.5, 3.0, 1.5, 3.0, 3.0, 3.0, 0.5, -3.5) | mat4(2.0, -2.5, -1.5, 1.0, 0.0, -0.5, 3.5, 1.0, -1.0, -2.0, 2.5, 0.0, 2.0, -1.0, -2.5, 0.5) | mat4(2.5, -2.5, 2.0, 3.0, 2.5, 2.5, -3.5, 1.0, 2.5, -3.5, -1.5, -1.5, 0.0, -0.5, 0.0, 2.0) ]; 755*35238bceSAndroid Build Coastguard Worker output mat4 out0 = [ mat4(-0.0, 3.0, 2.0, 4.0, 6.0, -1.0, 3.0, -5.0, 7.0, -6.0, -3.0, -6.0, -6.0, -6.0, -1.0, 7.0) | mat4(-4.0, 5.0, 3.0, -2.0, -0.0, 1.0, -7.0, -2.0, 2.0, 4.0, -5.0, -0.0, -4.0, 2.0, 5.0, -1.0) | mat4(-5.0, 5.0, -4.0, -6.0, -5.0, -5.0, 7.0, -2.0, -5.0, 7.0, 3.0, 3.0, -0.0, 1.0, -0.0, -4.0) ]; 756*35238bceSAndroid Build Coastguard Worker } 757*35238bceSAndroid Build Coastguard Worker 758*35238bceSAndroid Build Coastguard Worker both "" 759*35238bceSAndroid Build Coastguard Worker #version 300 es 760*35238bceSAndroid Build Coastguard Worker precision mediump float; 761*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 762*35238bceSAndroid Build Coastguard Worker 763*35238bceSAndroid Build Coastguard Worker mat4 func (mat4 a) 764*35238bceSAndroid Build Coastguard Worker { 765*35238bceSAndroid Build Coastguard Worker return -2.0*a; 766*35238bceSAndroid Build Coastguard Worker } 767*35238bceSAndroid Build Coastguard Worker 768*35238bceSAndroid Build Coastguard Worker void main() 769*35238bceSAndroid Build Coastguard Worker { 770*35238bceSAndroid Build Coastguard Worker ${SETUP} 771*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 772*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 773*35238bceSAndroid Build Coastguard Worker } 774*35238bceSAndroid Build Coastguard Worker "" 775*35238bceSAndroid Build Coastguard Worker end 776*35238bceSAndroid Build Coastguard Worker 777*35238bceSAndroid Build Coastguard Worker case float_struct 778*35238bceSAndroid Build Coastguard Worker version 300 es 779*35238bceSAndroid Build Coastguard Worker values 780*35238bceSAndroid Build Coastguard Worker { 781*35238bceSAndroid Build Coastguard Worker input vec3 in0 = [ vec3(0.0, 1.0, -2.0) | vec3(2.0, 2.5, -4.0) ]; 782*35238bceSAndroid Build Coastguard Worker output float out0 = [ 1.0 | -0.5 ]; 783*35238bceSAndroid Build Coastguard Worker } 784*35238bceSAndroid Build Coastguard Worker 785*35238bceSAndroid Build Coastguard Worker both "" 786*35238bceSAndroid Build Coastguard Worker #version 300 es 787*35238bceSAndroid Build Coastguard Worker precision mediump float; 788*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 789*35238bceSAndroid Build Coastguard Worker 790*35238bceSAndroid Build Coastguard Worker struct Pos { float a, b, c; }; 791*35238bceSAndroid Build Coastguard Worker 792*35238bceSAndroid Build Coastguard Worker float func (Pos p) 793*35238bceSAndroid Build Coastguard Worker { 794*35238bceSAndroid Build Coastguard Worker return -(p.a + p.b + p.c); 795*35238bceSAndroid Build Coastguard Worker } 796*35238bceSAndroid Build Coastguard Worker 797*35238bceSAndroid Build Coastguard Worker void main() 798*35238bceSAndroid Build Coastguard Worker { 799*35238bceSAndroid Build Coastguard Worker Pos p = Pos(in0.x, in0.y, in0.z); 800*35238bceSAndroid Build Coastguard Worker out0 = func(p); 801*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 802*35238bceSAndroid Build Coastguard Worker } 803*35238bceSAndroid Build Coastguard Worker "" 804*35238bceSAndroid Build Coastguard Worker end 805*35238bceSAndroid Build Coastguard Worker 806*35238bceSAndroid Build Coastguard Worker case struct_struct 807*35238bceSAndroid Build Coastguard Worker version 300 es 808*35238bceSAndroid Build Coastguard Worker values 809*35238bceSAndroid Build Coastguard Worker { 810*35238bceSAndroid Build Coastguard Worker input vec3 in0 = [ vec3(0.0, 1.0, -2.0) | vec3(2.0, 2.5, -4.0) ]; 811*35238bceSAndroid Build Coastguard Worker output float out0 = [ 1.0 | -0.5 ]; 812*35238bceSAndroid Build Coastguard Worker } 813*35238bceSAndroid Build Coastguard Worker 814*35238bceSAndroid Build Coastguard Worker both "" 815*35238bceSAndroid Build Coastguard Worker #version 300 es 816*35238bceSAndroid Build Coastguard Worker precision mediump float; 817*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 818*35238bceSAndroid Build Coastguard Worker 819*35238bceSAndroid Build Coastguard Worker struct Pos { float a, b, c; }; 820*35238bceSAndroid Build Coastguard Worker 821*35238bceSAndroid Build Coastguard Worker Pos func (Pos p) 822*35238bceSAndroid Build Coastguard Worker { 823*35238bceSAndroid Build Coastguard Worker return Pos(-p.a, -p.b, -p.c); 824*35238bceSAndroid Build Coastguard Worker } 825*35238bceSAndroid Build Coastguard Worker 826*35238bceSAndroid Build Coastguard Worker void main() 827*35238bceSAndroid Build Coastguard Worker { 828*35238bceSAndroid Build Coastguard Worker Pos p = Pos(in0.x, in0.y, in0.z); 829*35238bceSAndroid Build Coastguard Worker p = func(p); 830*35238bceSAndroid Build Coastguard Worker out0 = p.a + p.b + p.c; 831*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 832*35238bceSAndroid Build Coastguard Worker } 833*35238bceSAndroid Build Coastguard Worker "" 834*35238bceSAndroid Build Coastguard Worker end 835*35238bceSAndroid Build Coastguard Worker 836*35238bceSAndroid Build Coastguard Worker case struct_nested_struct 837*35238bceSAndroid Build Coastguard Worker version 300 es 838*35238bceSAndroid Build Coastguard Worker values 839*35238bceSAndroid Build Coastguard Worker { 840*35238bceSAndroid Build Coastguard Worker input vec3 in0 = [ vec3(0.0, 1.0, -2.0) | vec3(2.0, 2.5, -4.0) ]; 841*35238bceSAndroid Build Coastguard Worker output float out0 = [ 1.0 | -0.5 ]; 842*35238bceSAndroid Build Coastguard Worker } 843*35238bceSAndroid Build Coastguard Worker 844*35238bceSAndroid Build Coastguard Worker both "" 845*35238bceSAndroid Build Coastguard Worker #version 300 es 846*35238bceSAndroid Build Coastguard Worker precision mediump float; 847*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 848*35238bceSAndroid Build Coastguard Worker 849*35238bceSAndroid Build Coastguard Worker struct Pos { float a, b, c; }; 850*35238bceSAndroid Build Coastguard Worker struct Line { Pos start, end; }; 851*35238bceSAndroid Build Coastguard Worker 852*35238bceSAndroid Build Coastguard Worker Line func (Pos p) 853*35238bceSAndroid Build Coastguard Worker { 854*35238bceSAndroid Build Coastguard Worker return Line(p, Pos(-p.a, -p.b, -p.c)); 855*35238bceSAndroid Build Coastguard Worker } 856*35238bceSAndroid Build Coastguard Worker 857*35238bceSAndroid Build Coastguard Worker float sum (Pos p) 858*35238bceSAndroid Build Coastguard Worker { 859*35238bceSAndroid Build Coastguard Worker return (p.a + p.b + p.c); 860*35238bceSAndroid Build Coastguard Worker } 861*35238bceSAndroid Build Coastguard Worker 862*35238bceSAndroid Build Coastguard Worker void main() 863*35238bceSAndroid Build Coastguard Worker { 864*35238bceSAndroid Build Coastguard Worker Pos p = Pos(in0.x, in0.y, in0.z); 865*35238bceSAndroid Build Coastguard Worker Line line = func(p); 866*35238bceSAndroid Build Coastguard Worker out0 = sum(line.start) + (2.0 * sum(line.end)); 867*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 868*35238bceSAndroid Build Coastguard Worker } 869*35238bceSAndroid Build Coastguard Worker "" 870*35238bceSAndroid Build Coastguard Worker end 871*35238bceSAndroid Build Coastguard Worker 872*35238bceSAndroid Build Coastguard Worker case struct_constructor_highp_in_fragment 873*35238bceSAndroid Build Coastguard Worker version 300 es 874*35238bceSAndroid Build Coastguard Worker desc "passing highp vector to struct constructor in fragment shader yields all zeros" 875*35238bceSAndroid Build Coastguard Worker vertex "" 876*35238bceSAndroid Build Coastguard Worker #version 300 es 877*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 878*35238bceSAndroid Build Coastguard Worker void main() 879*35238bceSAndroid Build Coastguard Worker { 880*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 881*35238bceSAndroid Build Coastguard Worker } 882*35238bceSAndroid Build Coastguard Worker "" 883*35238bceSAndroid Build Coastguard Worker fragment "" 884*35238bceSAndroid Build Coastguard Worker #version 300 es 885*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 886*35238bceSAndroid Build Coastguard Worker #ifdef GL_FRAGMENT_PRECISION_HIGH 887*35238bceSAndroid Build Coastguard Worker #define PRECISION highp 888*35238bceSAndroid Build Coastguard Worker #else 889*35238bceSAndroid Build Coastguard Worker #define PRECISION mediump 890*35238bceSAndroid Build Coastguard Worker #endif 891*35238bceSAndroid Build Coastguard Worker struct Test { 892*35238bceSAndroid Build Coastguard Worker PRECISION vec3 color; 893*35238bceSAndroid Build Coastguard Worker } ; 894*35238bceSAndroid Build Coastguard Worker void main() { 895*35238bceSAndroid Build Coastguard Worker PRECISION vec3 color = vec3(0.2, 2.0, 0.1); 896*35238bceSAndroid Build Coastguard Worker Test test = Test(color); 897*35238bceSAndroid Build Coastguard Worker // Bias the color so all components are guaranteed > 1.0. 898*35238bceSAndroid Build Coastguard Worker ${FRAG_COLOR} = vec4(vec3(0.25, 0.55, 0.65) + vec3(4.0, 0.25, 4.0) * test.color, 1.0); 899*35238bceSAndroid Build Coastguard Worker } 900*35238bceSAndroid Build Coastguard Worker "" 901*35238bceSAndroid Build Coastguard Worker end 902*35238bceSAndroid Build Coastguard Worker 903*35238bceSAndroid Build Coastguard Worker 904*35238bceSAndroid Build Coastguard Workerend # datatypes 905*35238bceSAndroid Build Coastguard Worker 906*35238bceSAndroid Build Coastguard Workergroup qualifiers "Function Parameter Qualifiers" 907*35238bceSAndroid Build Coastguard Worker 908*35238bceSAndroid Build Coastguard Worker case in_float 909*35238bceSAndroid Build Coastguard Worker version 300 es 910*35238bceSAndroid Build Coastguard Worker values 911*35238bceSAndroid Build Coastguard Worker { 912*35238bceSAndroid Build Coastguard Worker input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 913*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 914*35238bceSAndroid Build Coastguard Worker } 915*35238bceSAndroid Build Coastguard Worker 916*35238bceSAndroid Build Coastguard Worker both "" 917*35238bceSAndroid Build Coastguard Worker #version 300 es 918*35238bceSAndroid Build Coastguard Worker precision mediump float; 919*35238bceSAndroid Build Coastguard Worker precision mediump int; 920*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 921*35238bceSAndroid Build Coastguard Worker 922*35238bceSAndroid Build Coastguard Worker float func (in float a) 923*35238bceSAndroid Build Coastguard Worker { 924*35238bceSAndroid Build Coastguard Worker a = -a; 925*35238bceSAndroid Build Coastguard Worker return 2.0 * a; 926*35238bceSAndroid Build Coastguard Worker } 927*35238bceSAndroid Build Coastguard Worker 928*35238bceSAndroid Build Coastguard Worker void main() 929*35238bceSAndroid Build Coastguard Worker { 930*35238bceSAndroid Build Coastguard Worker ${SETUP} 931*35238bceSAndroid Build Coastguard Worker float f = in0; 932*35238bceSAndroid Build Coastguard Worker float g = func(f); 933*35238bceSAndroid Build Coastguard Worker out0 = f + g; 934*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 935*35238bceSAndroid Build Coastguard Worker } 936*35238bceSAndroid Build Coastguard Worker "" 937*35238bceSAndroid Build Coastguard Worker end 938*35238bceSAndroid Build Coastguard Worker 939*35238bceSAndroid Build Coastguard Worker case out_float 940*35238bceSAndroid Build Coastguard Worker version 300 es 941*35238bceSAndroid Build Coastguard Worker values 942*35238bceSAndroid Build Coastguard Worker { 943*35238bceSAndroid Build Coastguard Worker input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 944*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 945*35238bceSAndroid Build Coastguard Worker } 946*35238bceSAndroid Build Coastguard Worker 947*35238bceSAndroid Build Coastguard Worker both "" 948*35238bceSAndroid Build Coastguard Worker #version 300 es 949*35238bceSAndroid Build Coastguard Worker precision mediump float; 950*35238bceSAndroid Build Coastguard Worker precision mediump int; 951*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 952*35238bceSAndroid Build Coastguard Worker 953*35238bceSAndroid Build Coastguard Worker void func (out float a) 954*35238bceSAndroid Build Coastguard Worker { 955*35238bceSAndroid Build Coastguard Worker a = -1.0; 956*35238bceSAndroid Build Coastguard Worker } 957*35238bceSAndroid Build Coastguard Worker 958*35238bceSAndroid Build Coastguard Worker void main() 959*35238bceSAndroid Build Coastguard Worker { 960*35238bceSAndroid Build Coastguard Worker ${SETUP} 961*35238bceSAndroid Build Coastguard Worker float f = 1.0; 962*35238bceSAndroid Build Coastguard Worker func(f); 963*35238bceSAndroid Build Coastguard Worker out0 = f * in0; 964*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 965*35238bceSAndroid Build Coastguard Worker } 966*35238bceSAndroid Build Coastguard Worker "" 967*35238bceSAndroid Build Coastguard Worker end 968*35238bceSAndroid Build Coastguard Worker 969*35238bceSAndroid Build Coastguard Worker case inout_float 970*35238bceSAndroid Build Coastguard Worker version 300 es 971*35238bceSAndroid Build Coastguard Worker values 972*35238bceSAndroid Build Coastguard Worker { 973*35238bceSAndroid Build Coastguard Worker input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 974*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 975*35238bceSAndroid Build Coastguard Worker } 976*35238bceSAndroid Build Coastguard Worker 977*35238bceSAndroid Build Coastguard Worker both "" 978*35238bceSAndroid Build Coastguard Worker #version 300 es 979*35238bceSAndroid Build Coastguard Worker precision mediump float; 980*35238bceSAndroid Build Coastguard Worker precision mediump int; 981*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 982*35238bceSAndroid Build Coastguard Worker 983*35238bceSAndroid Build Coastguard Worker void func (inout float a) 984*35238bceSAndroid Build Coastguard Worker { 985*35238bceSAndroid Build Coastguard Worker a = -a; 986*35238bceSAndroid Build Coastguard Worker } 987*35238bceSAndroid Build Coastguard Worker 988*35238bceSAndroid Build Coastguard Worker void main() 989*35238bceSAndroid Build Coastguard Worker { 990*35238bceSAndroid Build Coastguard Worker ${SETUP} 991*35238bceSAndroid Build Coastguard Worker float f = 1.0; 992*35238bceSAndroid Build Coastguard Worker func(f); 993*35238bceSAndroid Build Coastguard Worker out0 = f * in0; 994*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 995*35238bceSAndroid Build Coastguard Worker } 996*35238bceSAndroid Build Coastguard Worker "" 997*35238bceSAndroid Build Coastguard Worker end 998*35238bceSAndroid Build Coastguard Worker 999*35238bceSAndroid Build Coastguard Worker case in_lowp_float 1000*35238bceSAndroid Build Coastguard Worker version 300 es 1001*35238bceSAndroid Build Coastguard Worker values 1002*35238bceSAndroid Build Coastguard Worker { 1003*35238bceSAndroid Build Coastguard Worker input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 1004*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 1005*35238bceSAndroid Build Coastguard Worker } 1006*35238bceSAndroid Build Coastguard Worker 1007*35238bceSAndroid Build Coastguard Worker both "" 1008*35238bceSAndroid Build Coastguard Worker #version 300 es 1009*35238bceSAndroid Build Coastguard Worker precision mediump float; 1010*35238bceSAndroid Build Coastguard Worker precision mediump int; 1011*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 1012*35238bceSAndroid Build Coastguard Worker 1013*35238bceSAndroid Build Coastguard Worker float func (in lowp float a) 1014*35238bceSAndroid Build Coastguard Worker { 1015*35238bceSAndroid Build Coastguard Worker a = -a; 1016*35238bceSAndroid Build Coastguard Worker return 2.0 * a; 1017*35238bceSAndroid Build Coastguard Worker } 1018*35238bceSAndroid Build Coastguard Worker 1019*35238bceSAndroid Build Coastguard Worker void main() 1020*35238bceSAndroid Build Coastguard Worker { 1021*35238bceSAndroid Build Coastguard Worker ${SETUP} 1022*35238bceSAndroid Build Coastguard Worker float f = in0; 1023*35238bceSAndroid Build Coastguard Worker float g = func(f); 1024*35238bceSAndroid Build Coastguard Worker out0 = f + g; 1025*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 1026*35238bceSAndroid Build Coastguard Worker } 1027*35238bceSAndroid Build Coastguard Worker "" 1028*35238bceSAndroid Build Coastguard Worker end 1029*35238bceSAndroid Build Coastguard Worker 1030*35238bceSAndroid Build Coastguard Worker case out_lowp_float 1031*35238bceSAndroid Build Coastguard Worker version 300 es 1032*35238bceSAndroid Build Coastguard Worker values 1033*35238bceSAndroid Build Coastguard Worker { 1034*35238bceSAndroid Build Coastguard Worker input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 1035*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 1036*35238bceSAndroid Build Coastguard Worker } 1037*35238bceSAndroid Build Coastguard Worker 1038*35238bceSAndroid Build Coastguard Worker both "" 1039*35238bceSAndroid Build Coastguard Worker #version 300 es 1040*35238bceSAndroid Build Coastguard Worker precision mediump float; 1041*35238bceSAndroid Build Coastguard Worker precision mediump int; 1042*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 1043*35238bceSAndroid Build Coastguard Worker 1044*35238bceSAndroid Build Coastguard Worker void func (out lowp float a) 1045*35238bceSAndroid Build Coastguard Worker { 1046*35238bceSAndroid Build Coastguard Worker a = -1.0; 1047*35238bceSAndroid Build Coastguard Worker } 1048*35238bceSAndroid Build Coastguard Worker 1049*35238bceSAndroid Build Coastguard Worker void main() 1050*35238bceSAndroid Build Coastguard Worker { 1051*35238bceSAndroid Build Coastguard Worker ${SETUP} 1052*35238bceSAndroid Build Coastguard Worker float f = 1.0; 1053*35238bceSAndroid Build Coastguard Worker func(f); 1054*35238bceSAndroid Build Coastguard Worker out0 = f * in0; 1055*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 1056*35238bceSAndroid Build Coastguard Worker } 1057*35238bceSAndroid Build Coastguard Worker "" 1058*35238bceSAndroid Build Coastguard Worker end 1059*35238bceSAndroid Build Coastguard Worker 1060*35238bceSAndroid Build Coastguard Worker case inout_lowp_float 1061*35238bceSAndroid Build Coastguard Worker version 300 es 1062*35238bceSAndroid Build Coastguard Worker values 1063*35238bceSAndroid Build Coastguard Worker { 1064*35238bceSAndroid Build Coastguard Worker input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 1065*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 1066*35238bceSAndroid Build Coastguard Worker } 1067*35238bceSAndroid Build Coastguard Worker 1068*35238bceSAndroid Build Coastguard Worker both "" 1069*35238bceSAndroid Build Coastguard Worker #version 300 es 1070*35238bceSAndroid Build Coastguard Worker precision mediump float; 1071*35238bceSAndroid Build Coastguard Worker precision mediump int; 1072*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 1073*35238bceSAndroid Build Coastguard Worker 1074*35238bceSAndroid Build Coastguard Worker void func (inout lowp float a) 1075*35238bceSAndroid Build Coastguard Worker { 1076*35238bceSAndroid Build Coastguard Worker a = -a; 1077*35238bceSAndroid Build Coastguard Worker } 1078*35238bceSAndroid Build Coastguard Worker 1079*35238bceSAndroid Build Coastguard Worker void main() 1080*35238bceSAndroid Build Coastguard Worker { 1081*35238bceSAndroid Build Coastguard Worker ${SETUP} 1082*35238bceSAndroid Build Coastguard Worker float f = 1.0; 1083*35238bceSAndroid Build Coastguard Worker func(f); 1084*35238bceSAndroid Build Coastguard Worker out0 = f * in0; 1085*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 1086*35238bceSAndroid Build Coastguard Worker } 1087*35238bceSAndroid Build Coastguard Worker "" 1088*35238bceSAndroid Build Coastguard Worker end 1089*35238bceSAndroid Build Coastguard Worker 1090*35238bceSAndroid Build Coastguard Worker case in_highp_float 1091*35238bceSAndroid Build Coastguard Worker version 300 es 1092*35238bceSAndroid Build Coastguard Worker values 1093*35238bceSAndroid Build Coastguard Worker { 1094*35238bceSAndroid Build Coastguard Worker input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 1095*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 1096*35238bceSAndroid Build Coastguard Worker } 1097*35238bceSAndroid Build Coastguard Worker 1098*35238bceSAndroid Build Coastguard Worker both "" 1099*35238bceSAndroid Build Coastguard Worker #version 300 es 1100*35238bceSAndroid Build Coastguard Worker precision mediump float; 1101*35238bceSAndroid Build Coastguard Worker precision mediump int; 1102*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 1103*35238bceSAndroid Build Coastguard Worker 1104*35238bceSAndroid Build Coastguard Worker float func (in highp float a) 1105*35238bceSAndroid Build Coastguard Worker { 1106*35238bceSAndroid Build Coastguard Worker a = -a; 1107*35238bceSAndroid Build Coastguard Worker return 2.0 * a; 1108*35238bceSAndroid Build Coastguard Worker } 1109*35238bceSAndroid Build Coastguard Worker 1110*35238bceSAndroid Build Coastguard Worker void main() 1111*35238bceSAndroid Build Coastguard Worker { 1112*35238bceSAndroid Build Coastguard Worker ${SETUP} 1113*35238bceSAndroid Build Coastguard Worker float f = in0; 1114*35238bceSAndroid Build Coastguard Worker float g = func(f); 1115*35238bceSAndroid Build Coastguard Worker out0 = f + g; 1116*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 1117*35238bceSAndroid Build Coastguard Worker } 1118*35238bceSAndroid Build Coastguard Worker "" 1119*35238bceSAndroid Build Coastguard Worker end 1120*35238bceSAndroid Build Coastguard Worker 1121*35238bceSAndroid Build Coastguard Worker case out_highp_float 1122*35238bceSAndroid Build Coastguard Worker version 300 es 1123*35238bceSAndroid Build Coastguard Worker values 1124*35238bceSAndroid Build Coastguard Worker { 1125*35238bceSAndroid Build Coastguard Worker input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 1126*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 1127*35238bceSAndroid Build Coastguard Worker } 1128*35238bceSAndroid Build Coastguard Worker 1129*35238bceSAndroid Build Coastguard Worker both "" 1130*35238bceSAndroid Build Coastguard Worker #version 300 es 1131*35238bceSAndroid Build Coastguard Worker precision mediump float; 1132*35238bceSAndroid Build Coastguard Worker precision mediump int; 1133*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 1134*35238bceSAndroid Build Coastguard Worker 1135*35238bceSAndroid Build Coastguard Worker void func (out highp float a) 1136*35238bceSAndroid Build Coastguard Worker { 1137*35238bceSAndroid Build Coastguard Worker a = -1.0; 1138*35238bceSAndroid Build Coastguard Worker } 1139*35238bceSAndroid Build Coastguard Worker 1140*35238bceSAndroid Build Coastguard Worker void main() 1141*35238bceSAndroid Build Coastguard Worker { 1142*35238bceSAndroid Build Coastguard Worker ${SETUP} 1143*35238bceSAndroid Build Coastguard Worker float f = 1.0; 1144*35238bceSAndroid Build Coastguard Worker func(f); 1145*35238bceSAndroid Build Coastguard Worker out0 = f * in0; 1146*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 1147*35238bceSAndroid Build Coastguard Worker } 1148*35238bceSAndroid Build Coastguard Worker "" 1149*35238bceSAndroid Build Coastguard Worker end 1150*35238bceSAndroid Build Coastguard Worker 1151*35238bceSAndroid Build Coastguard Worker case inout_highp_float 1152*35238bceSAndroid Build Coastguard Worker version 300 es 1153*35238bceSAndroid Build Coastguard Worker values 1154*35238bceSAndroid Build Coastguard Worker { 1155*35238bceSAndroid Build Coastguard Worker input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 1156*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 1157*35238bceSAndroid Build Coastguard Worker } 1158*35238bceSAndroid Build Coastguard Worker 1159*35238bceSAndroid Build Coastguard Worker both "" 1160*35238bceSAndroid Build Coastguard Worker #version 300 es 1161*35238bceSAndroid Build Coastguard Worker precision mediump float; 1162*35238bceSAndroid Build Coastguard Worker precision mediump int; 1163*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 1164*35238bceSAndroid Build Coastguard Worker 1165*35238bceSAndroid Build Coastguard Worker void func (inout highp float a) 1166*35238bceSAndroid Build Coastguard Worker { 1167*35238bceSAndroid Build Coastguard Worker a = -a; 1168*35238bceSAndroid Build Coastguard Worker } 1169*35238bceSAndroid Build Coastguard Worker 1170*35238bceSAndroid Build Coastguard Worker void main() 1171*35238bceSAndroid Build Coastguard Worker { 1172*35238bceSAndroid Build Coastguard Worker ${SETUP} 1173*35238bceSAndroid Build Coastguard Worker float f = 1.0; 1174*35238bceSAndroid Build Coastguard Worker func(f); 1175*35238bceSAndroid Build Coastguard Worker out0 = f * in0; 1176*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 1177*35238bceSAndroid Build Coastguard Worker } 1178*35238bceSAndroid Build Coastguard Worker "" 1179*35238bceSAndroid Build Coastguard Worker end 1180*35238bceSAndroid Build Coastguard Worker 1181*35238bceSAndroid Build Coastguard Worker case const_float 1182*35238bceSAndroid Build Coastguard Worker version 300 es 1183*35238bceSAndroid Build Coastguard Worker values 1184*35238bceSAndroid Build Coastguard Worker { 1185*35238bceSAndroid Build Coastguard Worker input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 1186*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 1187*35238bceSAndroid Build Coastguard Worker } 1188*35238bceSAndroid Build Coastguard Worker 1189*35238bceSAndroid Build Coastguard Worker both "" 1190*35238bceSAndroid Build Coastguard Worker #version 300 es 1191*35238bceSAndroid Build Coastguard Worker precision mediump float; 1192*35238bceSAndroid Build Coastguard Worker precision mediump int; 1193*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 1194*35238bceSAndroid Build Coastguard Worker 1195*35238bceSAndroid Build Coastguard Worker float func (const float a) 1196*35238bceSAndroid Build Coastguard Worker { 1197*35238bceSAndroid Build Coastguard Worker float b = -a; 1198*35238bceSAndroid Build Coastguard Worker return 2.0 * b; 1199*35238bceSAndroid Build Coastguard Worker } 1200*35238bceSAndroid Build Coastguard Worker 1201*35238bceSAndroid Build Coastguard Worker void main() 1202*35238bceSAndroid Build Coastguard Worker { 1203*35238bceSAndroid Build Coastguard Worker ${SETUP} 1204*35238bceSAndroid Build Coastguard Worker float f = in0; 1205*35238bceSAndroid Build Coastguard Worker float g = func(f); 1206*35238bceSAndroid Build Coastguard Worker out0 = f + g; 1207*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 1208*35238bceSAndroid Build Coastguard Worker } 1209*35238bceSAndroid Build Coastguard Worker "" 1210*35238bceSAndroid Build Coastguard Worker end 1211*35238bceSAndroid Build Coastguard Worker 1212*35238bceSAndroid Build Coastguard Worker case const_in_float 1213*35238bceSAndroid Build Coastguard Worker version 300 es 1214*35238bceSAndroid Build Coastguard Worker values 1215*35238bceSAndroid Build Coastguard Worker { 1216*35238bceSAndroid Build Coastguard Worker input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 1217*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 1218*35238bceSAndroid Build Coastguard Worker } 1219*35238bceSAndroid Build Coastguard Worker 1220*35238bceSAndroid Build Coastguard Worker both "" 1221*35238bceSAndroid Build Coastguard Worker #version 300 es 1222*35238bceSAndroid Build Coastguard Worker precision mediump float; 1223*35238bceSAndroid Build Coastguard Worker precision mediump int; 1224*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 1225*35238bceSAndroid Build Coastguard Worker 1226*35238bceSAndroid Build Coastguard Worker float func (const in float a) 1227*35238bceSAndroid Build Coastguard Worker { 1228*35238bceSAndroid Build Coastguard Worker float b = -a; 1229*35238bceSAndroid Build Coastguard Worker return 2.0 * b; 1230*35238bceSAndroid Build Coastguard Worker } 1231*35238bceSAndroid Build Coastguard Worker 1232*35238bceSAndroid Build Coastguard Worker void main() 1233*35238bceSAndroid Build Coastguard Worker { 1234*35238bceSAndroid Build Coastguard Worker ${SETUP} 1235*35238bceSAndroid Build Coastguard Worker float f = in0; 1236*35238bceSAndroid Build Coastguard Worker float g = func(f); 1237*35238bceSAndroid Build Coastguard Worker out0 = f + g; 1238*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 1239*35238bceSAndroid Build Coastguard Worker } 1240*35238bceSAndroid Build Coastguard Worker "" 1241*35238bceSAndroid Build Coastguard Worker end 1242*35238bceSAndroid Build Coastguard Worker 1243*35238bceSAndroid Build Coastguard Worker case in_int 1244*35238bceSAndroid Build Coastguard Worker version 300 es 1245*35238bceSAndroid Build Coastguard Worker values 1246*35238bceSAndroid Build Coastguard Worker { 1247*35238bceSAndroid Build Coastguard Worker input int in0 = [ 0 | 1 | -2 | 4 ]; 1248*35238bceSAndroid Build Coastguard Worker output int out0 = [ 0 | -1 | 2 | -4 ]; 1249*35238bceSAndroid Build Coastguard Worker } 1250*35238bceSAndroid Build Coastguard Worker 1251*35238bceSAndroid Build Coastguard Worker both "" 1252*35238bceSAndroid Build Coastguard Worker #version 300 es 1253*35238bceSAndroid Build Coastguard Worker precision mediump float; 1254*35238bceSAndroid Build Coastguard Worker precision mediump int; 1255*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 1256*35238bceSAndroid Build Coastguard Worker 1257*35238bceSAndroid Build Coastguard Worker int func (in int a) 1258*35238bceSAndroid Build Coastguard Worker { 1259*35238bceSAndroid Build Coastguard Worker a = -a; 1260*35238bceSAndroid Build Coastguard Worker return 2 * a; 1261*35238bceSAndroid Build Coastguard Worker } 1262*35238bceSAndroid Build Coastguard Worker 1263*35238bceSAndroid Build Coastguard Worker void main() 1264*35238bceSAndroid Build Coastguard Worker { 1265*35238bceSAndroid Build Coastguard Worker ${SETUP} 1266*35238bceSAndroid Build Coastguard Worker int f = in0; 1267*35238bceSAndroid Build Coastguard Worker int g = func(f); 1268*35238bceSAndroid Build Coastguard Worker out0 = f + g; 1269*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 1270*35238bceSAndroid Build Coastguard Worker } 1271*35238bceSAndroid Build Coastguard Worker "" 1272*35238bceSAndroid Build Coastguard Worker end 1273*35238bceSAndroid Build Coastguard Worker 1274*35238bceSAndroid Build Coastguard Worker case out_int 1275*35238bceSAndroid Build Coastguard Worker version 300 es 1276*35238bceSAndroid Build Coastguard Worker values 1277*35238bceSAndroid Build Coastguard Worker { 1278*35238bceSAndroid Build Coastguard Worker input int in0 = [ 0 | 1 | -2 | 6 ]; 1279*35238bceSAndroid Build Coastguard Worker output int out0 = [ 0 | -1 | 2 | -6 ]; 1280*35238bceSAndroid Build Coastguard Worker } 1281*35238bceSAndroid Build Coastguard Worker 1282*35238bceSAndroid Build Coastguard Worker both "" 1283*35238bceSAndroid Build Coastguard Worker #version 300 es 1284*35238bceSAndroid Build Coastguard Worker precision mediump float; 1285*35238bceSAndroid Build Coastguard Worker precision mediump int; 1286*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 1287*35238bceSAndroid Build Coastguard Worker 1288*35238bceSAndroid Build Coastguard Worker void func (out int a) 1289*35238bceSAndroid Build Coastguard Worker { 1290*35238bceSAndroid Build Coastguard Worker a = -1; 1291*35238bceSAndroid Build Coastguard Worker } 1292*35238bceSAndroid Build Coastguard Worker 1293*35238bceSAndroid Build Coastguard Worker void main() 1294*35238bceSAndroid Build Coastguard Worker { 1295*35238bceSAndroid Build Coastguard Worker ${SETUP} 1296*35238bceSAndroid Build Coastguard Worker int f = 1; 1297*35238bceSAndroid Build Coastguard Worker func(f); 1298*35238bceSAndroid Build Coastguard Worker out0 = f * in0; 1299*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 1300*35238bceSAndroid Build Coastguard Worker } 1301*35238bceSAndroid Build Coastguard Worker "" 1302*35238bceSAndroid Build Coastguard Worker end 1303*35238bceSAndroid Build Coastguard Worker 1304*35238bceSAndroid Build Coastguard Worker case inout_int 1305*35238bceSAndroid Build Coastguard Worker version 300 es 1306*35238bceSAndroid Build Coastguard Worker values 1307*35238bceSAndroid Build Coastguard Worker { 1308*35238bceSAndroid Build Coastguard Worker input int in0 = [ 0 | 1 | -2 | 6 ]; 1309*35238bceSAndroid Build Coastguard Worker output int out0 = [ 0 | -1 | 2 | -6 ]; 1310*35238bceSAndroid Build Coastguard Worker } 1311*35238bceSAndroid Build Coastguard Worker 1312*35238bceSAndroid Build Coastguard Worker both "" 1313*35238bceSAndroid Build Coastguard Worker #version 300 es 1314*35238bceSAndroid Build Coastguard Worker precision mediump float; 1315*35238bceSAndroid Build Coastguard Worker precision mediump int; 1316*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 1317*35238bceSAndroid Build Coastguard Worker 1318*35238bceSAndroid Build Coastguard Worker void func (inout int a) 1319*35238bceSAndroid Build Coastguard Worker { 1320*35238bceSAndroid Build Coastguard Worker a = -a; 1321*35238bceSAndroid Build Coastguard Worker } 1322*35238bceSAndroid Build Coastguard Worker 1323*35238bceSAndroid Build Coastguard Worker void main() 1324*35238bceSAndroid Build Coastguard Worker { 1325*35238bceSAndroid Build Coastguard Worker ${SETUP} 1326*35238bceSAndroid Build Coastguard Worker int f = 1; 1327*35238bceSAndroid Build Coastguard Worker func(f); 1328*35238bceSAndroid Build Coastguard Worker out0 = f * in0; 1329*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 1330*35238bceSAndroid Build Coastguard Worker } 1331*35238bceSAndroid Build Coastguard Worker "" 1332*35238bceSAndroid Build Coastguard Worker end 1333*35238bceSAndroid Build Coastguard Worker 1334*35238bceSAndroid Build Coastguard Worker case in_lowp_int 1335*35238bceSAndroid Build Coastguard Worker version 300 es 1336*35238bceSAndroid Build Coastguard Worker values 1337*35238bceSAndroid Build Coastguard Worker { 1338*35238bceSAndroid Build Coastguard Worker input int in0 = [ 0 | 1 | -2 | 4 ]; 1339*35238bceSAndroid Build Coastguard Worker output int out0 = [ 0 | -1 | 2 | -4 ]; 1340*35238bceSAndroid Build Coastguard Worker } 1341*35238bceSAndroid Build Coastguard Worker 1342*35238bceSAndroid Build Coastguard Worker both "" 1343*35238bceSAndroid Build Coastguard Worker #version 300 es 1344*35238bceSAndroid Build Coastguard Worker precision mediump float; 1345*35238bceSAndroid Build Coastguard Worker precision mediump int; 1346*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 1347*35238bceSAndroid Build Coastguard Worker 1348*35238bceSAndroid Build Coastguard Worker int func (in lowp int a) 1349*35238bceSAndroid Build Coastguard Worker { 1350*35238bceSAndroid Build Coastguard Worker a = -a; 1351*35238bceSAndroid Build Coastguard Worker return 2 * a; 1352*35238bceSAndroid Build Coastguard Worker } 1353*35238bceSAndroid Build Coastguard Worker 1354*35238bceSAndroid Build Coastguard Worker void main() 1355*35238bceSAndroid Build Coastguard Worker { 1356*35238bceSAndroid Build Coastguard Worker ${SETUP} 1357*35238bceSAndroid Build Coastguard Worker int f = in0; 1358*35238bceSAndroid Build Coastguard Worker int g = func(f); 1359*35238bceSAndroid Build Coastguard Worker out0 = f + g; 1360*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 1361*35238bceSAndroid Build Coastguard Worker } 1362*35238bceSAndroid Build Coastguard Worker "" 1363*35238bceSAndroid Build Coastguard Worker end 1364*35238bceSAndroid Build Coastguard Worker 1365*35238bceSAndroid Build Coastguard Worker case out_lowp_int 1366*35238bceSAndroid Build Coastguard Worker version 300 es 1367*35238bceSAndroid Build Coastguard Worker values 1368*35238bceSAndroid Build Coastguard Worker { 1369*35238bceSAndroid Build Coastguard Worker input int in0 = [ 0 | 1 | -2 | 6 ]; 1370*35238bceSAndroid Build Coastguard Worker output int out0 = [ 0 | -1 | 2 | -6 ]; 1371*35238bceSAndroid Build Coastguard Worker } 1372*35238bceSAndroid Build Coastguard Worker 1373*35238bceSAndroid Build Coastguard Worker both "" 1374*35238bceSAndroid Build Coastguard Worker #version 300 es 1375*35238bceSAndroid Build Coastguard Worker precision mediump float; 1376*35238bceSAndroid Build Coastguard Worker precision mediump int; 1377*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 1378*35238bceSAndroid Build Coastguard Worker 1379*35238bceSAndroid Build Coastguard Worker void func (out lowp int a) 1380*35238bceSAndroid Build Coastguard Worker { 1381*35238bceSAndroid Build Coastguard Worker a = -1; 1382*35238bceSAndroid Build Coastguard Worker } 1383*35238bceSAndroid Build Coastguard Worker 1384*35238bceSAndroid Build Coastguard Worker void main() 1385*35238bceSAndroid Build Coastguard Worker { 1386*35238bceSAndroid Build Coastguard Worker ${SETUP} 1387*35238bceSAndroid Build Coastguard Worker int f = 1; 1388*35238bceSAndroid Build Coastguard Worker func(f); 1389*35238bceSAndroid Build Coastguard Worker out0 = f * in0; 1390*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 1391*35238bceSAndroid Build Coastguard Worker } 1392*35238bceSAndroid Build Coastguard Worker "" 1393*35238bceSAndroid Build Coastguard Worker end 1394*35238bceSAndroid Build Coastguard Worker 1395*35238bceSAndroid Build Coastguard Worker case inout_lowp_int 1396*35238bceSAndroid Build Coastguard Worker version 300 es 1397*35238bceSAndroid Build Coastguard Worker values 1398*35238bceSAndroid Build Coastguard Worker { 1399*35238bceSAndroid Build Coastguard Worker input int in0 = [ 0 | 1 | -2 | 6 ]; 1400*35238bceSAndroid Build Coastguard Worker output int out0 = [ 0 | -1 | 2 | -6 ]; 1401*35238bceSAndroid Build Coastguard Worker } 1402*35238bceSAndroid Build Coastguard Worker 1403*35238bceSAndroid Build Coastguard Worker both "" 1404*35238bceSAndroid Build Coastguard Worker #version 300 es 1405*35238bceSAndroid Build Coastguard Worker precision mediump float; 1406*35238bceSAndroid Build Coastguard Worker precision mediump int; 1407*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 1408*35238bceSAndroid Build Coastguard Worker 1409*35238bceSAndroid Build Coastguard Worker void func (inout lowp int a) 1410*35238bceSAndroid Build Coastguard Worker { 1411*35238bceSAndroid Build Coastguard Worker a = -a; 1412*35238bceSAndroid Build Coastguard Worker } 1413*35238bceSAndroid Build Coastguard Worker 1414*35238bceSAndroid Build Coastguard Worker void main() 1415*35238bceSAndroid Build Coastguard Worker { 1416*35238bceSAndroid Build Coastguard Worker ${SETUP} 1417*35238bceSAndroid Build Coastguard Worker int f = 1; 1418*35238bceSAndroid Build Coastguard Worker func(f); 1419*35238bceSAndroid Build Coastguard Worker out0 = f * in0; 1420*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 1421*35238bceSAndroid Build Coastguard Worker } 1422*35238bceSAndroid Build Coastguard Worker "" 1423*35238bceSAndroid Build Coastguard Worker end 1424*35238bceSAndroid Build Coastguard Worker 1425*35238bceSAndroid Build Coastguard Worker case in_highp_int 1426*35238bceSAndroid Build Coastguard Worker version 300 es 1427*35238bceSAndroid Build Coastguard Worker values 1428*35238bceSAndroid Build Coastguard Worker { 1429*35238bceSAndroid Build Coastguard Worker input int in0 = [ 0 | 1 | -2 | 4 ]; 1430*35238bceSAndroid Build Coastguard Worker output int out0 = [ 0 | -1 | 2 | -4 ]; 1431*35238bceSAndroid Build Coastguard Worker } 1432*35238bceSAndroid Build Coastguard Worker 1433*35238bceSAndroid Build Coastguard Worker both "" 1434*35238bceSAndroid Build Coastguard Worker #version 300 es 1435*35238bceSAndroid Build Coastguard Worker precision mediump float; 1436*35238bceSAndroid Build Coastguard Worker precision mediump int; 1437*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 1438*35238bceSAndroid Build Coastguard Worker 1439*35238bceSAndroid Build Coastguard Worker int func (in highp int a) 1440*35238bceSAndroid Build Coastguard Worker { 1441*35238bceSAndroid Build Coastguard Worker a = -a; 1442*35238bceSAndroid Build Coastguard Worker return 2 * a; 1443*35238bceSAndroid Build Coastguard Worker } 1444*35238bceSAndroid Build Coastguard Worker 1445*35238bceSAndroid Build Coastguard Worker void main() 1446*35238bceSAndroid Build Coastguard Worker { 1447*35238bceSAndroid Build Coastguard Worker ${SETUP} 1448*35238bceSAndroid Build Coastguard Worker int f = in0; 1449*35238bceSAndroid Build Coastguard Worker int g = func(f); 1450*35238bceSAndroid Build Coastguard Worker out0 = f + g; 1451*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 1452*35238bceSAndroid Build Coastguard Worker } 1453*35238bceSAndroid Build Coastguard Worker "" 1454*35238bceSAndroid Build Coastguard Worker end 1455*35238bceSAndroid Build Coastguard Worker 1456*35238bceSAndroid Build Coastguard Worker case out_highp_int 1457*35238bceSAndroid Build Coastguard Worker version 300 es 1458*35238bceSAndroid Build Coastguard Worker values 1459*35238bceSAndroid Build Coastguard Worker { 1460*35238bceSAndroid Build Coastguard Worker input int in0 = [ 0 | 1 | -2 | 6 ]; 1461*35238bceSAndroid Build Coastguard Worker output int out0 = [ 0 | -1 | 2 | -6 ]; 1462*35238bceSAndroid Build Coastguard Worker } 1463*35238bceSAndroid Build Coastguard Worker 1464*35238bceSAndroid Build Coastguard Worker both "" 1465*35238bceSAndroid Build Coastguard Worker #version 300 es 1466*35238bceSAndroid Build Coastguard Worker precision mediump float; 1467*35238bceSAndroid Build Coastguard Worker precision mediump int; 1468*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 1469*35238bceSAndroid Build Coastguard Worker 1470*35238bceSAndroid Build Coastguard Worker void func (out highp int a) 1471*35238bceSAndroid Build Coastguard Worker { 1472*35238bceSAndroid Build Coastguard Worker a = -1; 1473*35238bceSAndroid Build Coastguard Worker } 1474*35238bceSAndroid Build Coastguard Worker 1475*35238bceSAndroid Build Coastguard Worker void main() 1476*35238bceSAndroid Build Coastguard Worker { 1477*35238bceSAndroid Build Coastguard Worker ${SETUP} 1478*35238bceSAndroid Build Coastguard Worker int f = 1; 1479*35238bceSAndroid Build Coastguard Worker func(f); 1480*35238bceSAndroid Build Coastguard Worker out0 = f * in0; 1481*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 1482*35238bceSAndroid Build Coastguard Worker } 1483*35238bceSAndroid Build Coastguard Worker "" 1484*35238bceSAndroid Build Coastguard Worker end 1485*35238bceSAndroid Build Coastguard Worker 1486*35238bceSAndroid Build Coastguard Worker case inout_highp_int 1487*35238bceSAndroid Build Coastguard Worker version 300 es 1488*35238bceSAndroid Build Coastguard Worker values 1489*35238bceSAndroid Build Coastguard Worker { 1490*35238bceSAndroid Build Coastguard Worker input int in0 = [ 0 | 1 | -2 | 6 ]; 1491*35238bceSAndroid Build Coastguard Worker output int out0 = [ 0 | -1 | 2 | -6 ]; 1492*35238bceSAndroid Build Coastguard Worker } 1493*35238bceSAndroid Build Coastguard Worker 1494*35238bceSAndroid Build Coastguard Worker both "" 1495*35238bceSAndroid Build Coastguard Worker #version 300 es 1496*35238bceSAndroid Build Coastguard Worker precision mediump float; 1497*35238bceSAndroid Build Coastguard Worker precision mediump int; 1498*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 1499*35238bceSAndroid Build Coastguard Worker 1500*35238bceSAndroid Build Coastguard Worker void func (inout highp int a) 1501*35238bceSAndroid Build Coastguard Worker { 1502*35238bceSAndroid Build Coastguard Worker a = -a; 1503*35238bceSAndroid Build Coastguard Worker } 1504*35238bceSAndroid Build Coastguard Worker 1505*35238bceSAndroid Build Coastguard Worker void main() 1506*35238bceSAndroid Build Coastguard Worker { 1507*35238bceSAndroid Build Coastguard Worker ${SETUP} 1508*35238bceSAndroid Build Coastguard Worker int f = 1; 1509*35238bceSAndroid Build Coastguard Worker func(f); 1510*35238bceSAndroid Build Coastguard Worker out0 = f * in0; 1511*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 1512*35238bceSAndroid Build Coastguard Worker } 1513*35238bceSAndroid Build Coastguard Worker "" 1514*35238bceSAndroid Build Coastguard Worker end 1515*35238bceSAndroid Build Coastguard Worker 1516*35238bceSAndroid Build Coastguard Worker case const_int 1517*35238bceSAndroid Build Coastguard Worker version 300 es 1518*35238bceSAndroid Build Coastguard Worker values 1519*35238bceSAndroid Build Coastguard Worker { 1520*35238bceSAndroid Build Coastguard Worker input int in0 = [ 0 | 1 | -2 | 4 ]; 1521*35238bceSAndroid Build Coastguard Worker output int out0 = [ 0 | -1 | 2 | -4 ]; 1522*35238bceSAndroid Build Coastguard Worker } 1523*35238bceSAndroid Build Coastguard Worker 1524*35238bceSAndroid Build Coastguard Worker both "" 1525*35238bceSAndroid Build Coastguard Worker #version 300 es 1526*35238bceSAndroid Build Coastguard Worker precision mediump float; 1527*35238bceSAndroid Build Coastguard Worker precision mediump int; 1528*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 1529*35238bceSAndroid Build Coastguard Worker 1530*35238bceSAndroid Build Coastguard Worker int func (const int a) 1531*35238bceSAndroid Build Coastguard Worker { 1532*35238bceSAndroid Build Coastguard Worker int b = -a; 1533*35238bceSAndroid Build Coastguard Worker return 2 * b; 1534*35238bceSAndroid Build Coastguard Worker } 1535*35238bceSAndroid Build Coastguard Worker 1536*35238bceSAndroid Build Coastguard Worker void main() 1537*35238bceSAndroid Build Coastguard Worker { 1538*35238bceSAndroid Build Coastguard Worker ${SETUP} 1539*35238bceSAndroid Build Coastguard Worker int f = in0; 1540*35238bceSAndroid Build Coastguard Worker int g = func(f); 1541*35238bceSAndroid Build Coastguard Worker out0 = f + g; 1542*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 1543*35238bceSAndroid Build Coastguard Worker } 1544*35238bceSAndroid Build Coastguard Worker "" 1545*35238bceSAndroid Build Coastguard Worker end 1546*35238bceSAndroid Build Coastguard Worker 1547*35238bceSAndroid Build Coastguard Worker case const_in_int 1548*35238bceSAndroid Build Coastguard Worker version 300 es 1549*35238bceSAndroid Build Coastguard Worker values 1550*35238bceSAndroid Build Coastguard Worker { 1551*35238bceSAndroid Build Coastguard Worker input int in0 = [ 0 | 1 | -2 | 4 ]; 1552*35238bceSAndroid Build Coastguard Worker output int out0 = [ 0 | -1 | 2 | -4 ]; 1553*35238bceSAndroid Build Coastguard Worker } 1554*35238bceSAndroid Build Coastguard Worker 1555*35238bceSAndroid Build Coastguard Worker both "" 1556*35238bceSAndroid Build Coastguard Worker #version 300 es 1557*35238bceSAndroid Build Coastguard Worker precision mediump float; 1558*35238bceSAndroid Build Coastguard Worker precision mediump int; 1559*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 1560*35238bceSAndroid Build Coastguard Worker 1561*35238bceSAndroid Build Coastguard Worker int func (const in int a) 1562*35238bceSAndroid Build Coastguard Worker { 1563*35238bceSAndroid Build Coastguard Worker int b = -a; 1564*35238bceSAndroid Build Coastguard Worker return 2 * b; 1565*35238bceSAndroid Build Coastguard Worker } 1566*35238bceSAndroid Build Coastguard Worker 1567*35238bceSAndroid Build Coastguard Worker void main() 1568*35238bceSAndroid Build Coastguard Worker { 1569*35238bceSAndroid Build Coastguard Worker ${SETUP} 1570*35238bceSAndroid Build Coastguard Worker int f = in0; 1571*35238bceSAndroid Build Coastguard Worker int g = func(f); 1572*35238bceSAndroid Build Coastguard Worker out0 = f + g; 1573*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 1574*35238bceSAndroid Build Coastguard Worker } 1575*35238bceSAndroid Build Coastguard Worker "" 1576*35238bceSAndroid Build Coastguard Worker end 1577*35238bceSAndroid Build Coastguard Worker 1578*35238bceSAndroid Build Coastguard Worker case in_bool 1579*35238bceSAndroid Build Coastguard Worker version 300 es 1580*35238bceSAndroid Build Coastguard Worker values 1581*35238bceSAndroid Build Coastguard Worker { 1582*35238bceSAndroid Build Coastguard Worker input bool in0 = [ true | false ]; 1583*35238bceSAndroid Build Coastguard Worker output bool out0 = [ true | true ]; 1584*35238bceSAndroid Build Coastguard Worker } 1585*35238bceSAndroid Build Coastguard Worker 1586*35238bceSAndroid Build Coastguard Worker both "" 1587*35238bceSAndroid Build Coastguard Worker #version 300 es 1588*35238bceSAndroid Build Coastguard Worker precision mediump float; 1589*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 1590*35238bceSAndroid Build Coastguard Worker 1591*35238bceSAndroid Build Coastguard Worker bool func (in bool a) 1592*35238bceSAndroid Build Coastguard Worker { 1593*35238bceSAndroid Build Coastguard Worker a = !a; 1594*35238bceSAndroid Build Coastguard Worker return a; 1595*35238bceSAndroid Build Coastguard Worker } 1596*35238bceSAndroid Build Coastguard Worker 1597*35238bceSAndroid Build Coastguard Worker void main() 1598*35238bceSAndroid Build Coastguard Worker { 1599*35238bceSAndroid Build Coastguard Worker ${SETUP} 1600*35238bceSAndroid Build Coastguard Worker bool f = in0; 1601*35238bceSAndroid Build Coastguard Worker bool g = func(f); 1602*35238bceSAndroid Build Coastguard Worker out0 = (f != g); 1603*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 1604*35238bceSAndroid Build Coastguard Worker } 1605*35238bceSAndroid Build Coastguard Worker "" 1606*35238bceSAndroid Build Coastguard Worker end 1607*35238bceSAndroid Build Coastguard Worker 1608*35238bceSAndroid Build Coastguard Worker case out_bool 1609*35238bceSAndroid Build Coastguard Worker version 300 es 1610*35238bceSAndroid Build Coastguard Worker values 1611*35238bceSAndroid Build Coastguard Worker { 1612*35238bceSAndroid Build Coastguard Worker input bool in0 = [ true | false ]; 1613*35238bceSAndroid Build Coastguard Worker output bool out0 = [ false | true ]; 1614*35238bceSAndroid Build Coastguard Worker } 1615*35238bceSAndroid Build Coastguard Worker 1616*35238bceSAndroid Build Coastguard Worker both "" 1617*35238bceSAndroid Build Coastguard Worker #version 300 es 1618*35238bceSAndroid Build Coastguard Worker precision mediump float; 1619*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 1620*35238bceSAndroid Build Coastguard Worker 1621*35238bceSAndroid Build Coastguard Worker void func (out bool a) 1622*35238bceSAndroid Build Coastguard Worker { 1623*35238bceSAndroid Build Coastguard Worker a = false; 1624*35238bceSAndroid Build Coastguard Worker } 1625*35238bceSAndroid Build Coastguard Worker 1626*35238bceSAndroid Build Coastguard Worker void main() 1627*35238bceSAndroid Build Coastguard Worker { 1628*35238bceSAndroid Build Coastguard Worker ${SETUP} 1629*35238bceSAndroid Build Coastguard Worker bool f = true; 1630*35238bceSAndroid Build Coastguard Worker func(f); 1631*35238bceSAndroid Build Coastguard Worker out0 = (in0 == f); 1632*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 1633*35238bceSAndroid Build Coastguard Worker } 1634*35238bceSAndroid Build Coastguard Worker "" 1635*35238bceSAndroid Build Coastguard Worker end 1636*35238bceSAndroid Build Coastguard Worker 1637*35238bceSAndroid Build Coastguard Worker case inout_bool 1638*35238bceSAndroid Build Coastguard Worker version 300 es 1639*35238bceSAndroid Build Coastguard Worker values 1640*35238bceSAndroid Build Coastguard Worker { 1641*35238bceSAndroid Build Coastguard Worker input bool in0 = [ true | false ]; 1642*35238bceSAndroid Build Coastguard Worker output bool out0 = [ false | true ]; 1643*35238bceSAndroid Build Coastguard Worker } 1644*35238bceSAndroid Build Coastguard Worker 1645*35238bceSAndroid Build Coastguard Worker both "" 1646*35238bceSAndroid Build Coastguard Worker #version 300 es 1647*35238bceSAndroid Build Coastguard Worker precision mediump float; 1648*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 1649*35238bceSAndroid Build Coastguard Worker 1650*35238bceSAndroid Build Coastguard Worker void func (inout bool a) 1651*35238bceSAndroid Build Coastguard Worker { 1652*35238bceSAndroid Build Coastguard Worker a = !a; 1653*35238bceSAndroid Build Coastguard Worker } 1654*35238bceSAndroid Build Coastguard Worker 1655*35238bceSAndroid Build Coastguard Worker void main() 1656*35238bceSAndroid Build Coastguard Worker { 1657*35238bceSAndroid Build Coastguard Worker ${SETUP} 1658*35238bceSAndroid Build Coastguard Worker bool f = true; 1659*35238bceSAndroid Build Coastguard Worker func(f); 1660*35238bceSAndroid Build Coastguard Worker out0 = (in0 == f); 1661*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 1662*35238bceSAndroid Build Coastguard Worker } 1663*35238bceSAndroid Build Coastguard Worker "" 1664*35238bceSAndroid Build Coastguard Worker end 1665*35238bceSAndroid Build Coastguard Worker 1666*35238bceSAndroid Build Coastguard Worker case const_bool 1667*35238bceSAndroid Build Coastguard Worker version 300 es 1668*35238bceSAndroid Build Coastguard Worker values 1669*35238bceSAndroid Build Coastguard Worker { 1670*35238bceSAndroid Build Coastguard Worker input bool in0 = [ true | false ]; 1671*35238bceSAndroid Build Coastguard Worker output bool out0 = [ true | true ]; 1672*35238bceSAndroid Build Coastguard Worker } 1673*35238bceSAndroid Build Coastguard Worker 1674*35238bceSAndroid Build Coastguard Worker both "" 1675*35238bceSAndroid Build Coastguard Worker #version 300 es 1676*35238bceSAndroid Build Coastguard Worker precision mediump float; 1677*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 1678*35238bceSAndroid Build Coastguard Worker 1679*35238bceSAndroid Build Coastguard Worker bool func (const bool a) 1680*35238bceSAndroid Build Coastguard Worker { 1681*35238bceSAndroid Build Coastguard Worker bool b = !a; 1682*35238bceSAndroid Build Coastguard Worker return b; 1683*35238bceSAndroid Build Coastguard Worker } 1684*35238bceSAndroid Build Coastguard Worker 1685*35238bceSAndroid Build Coastguard Worker void main() 1686*35238bceSAndroid Build Coastguard Worker { 1687*35238bceSAndroid Build Coastguard Worker ${SETUP} 1688*35238bceSAndroid Build Coastguard Worker bool f = in0; 1689*35238bceSAndroid Build Coastguard Worker bool g = func(f); 1690*35238bceSAndroid Build Coastguard Worker out0 = (f != g); 1691*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 1692*35238bceSAndroid Build Coastguard Worker } 1693*35238bceSAndroid Build Coastguard Worker "" 1694*35238bceSAndroid Build Coastguard Worker end 1695*35238bceSAndroid Build Coastguard Worker 1696*35238bceSAndroid Build Coastguard Workerend # qualifiers 1697*35238bceSAndroid Build Coastguard Worker 1698*35238bceSAndroid Build Coastguard Workergroup declarations "Function Declarations" 1699*35238bceSAndroid Build Coastguard Worker 1700*35238bceSAndroid Build Coastguard Worker case basic 1701*35238bceSAndroid Build Coastguard Worker version 300 es 1702*35238bceSAndroid Build Coastguard Worker values 1703*35238bceSAndroid Build Coastguard Worker { 1704*35238bceSAndroid Build Coastguard Worker input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 1705*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 1706*35238bceSAndroid Build Coastguard Worker } 1707*35238bceSAndroid Build Coastguard Worker 1708*35238bceSAndroid Build Coastguard Worker both "" 1709*35238bceSAndroid Build Coastguard Worker #version 300 es 1710*35238bceSAndroid Build Coastguard Worker precision mediump float; 1711*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 1712*35238bceSAndroid Build Coastguard Worker 1713*35238bceSAndroid Build Coastguard Worker float func (void); 1714*35238bceSAndroid Build Coastguard Worker 1715*35238bceSAndroid Build Coastguard Worker float func (void) 1716*35238bceSAndroid Build Coastguard Worker { 1717*35238bceSAndroid Build Coastguard Worker return -1.0; 1718*35238bceSAndroid Build Coastguard Worker } 1719*35238bceSAndroid Build Coastguard Worker 1720*35238bceSAndroid Build Coastguard Worker void main() 1721*35238bceSAndroid Build Coastguard Worker { 1722*35238bceSAndroid Build Coastguard Worker out0 = func() * in0; 1723*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 1724*35238bceSAndroid Build Coastguard Worker } 1725*35238bceSAndroid Build Coastguard Worker "" 1726*35238bceSAndroid Build Coastguard Worker end 1727*35238bceSAndroid Build Coastguard Worker 1728*35238bceSAndroid Build Coastguard Worker case basic_arg 1729*35238bceSAndroid Build Coastguard Worker version 300 es 1730*35238bceSAndroid Build Coastguard Worker values 1731*35238bceSAndroid Build Coastguard Worker { 1732*35238bceSAndroid Build Coastguard Worker input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 1733*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 1734*35238bceSAndroid Build Coastguard Worker } 1735*35238bceSAndroid Build Coastguard Worker 1736*35238bceSAndroid Build Coastguard Worker both "" 1737*35238bceSAndroid Build Coastguard Worker #version 300 es 1738*35238bceSAndroid Build Coastguard Worker precision mediump float; 1739*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 1740*35238bceSAndroid Build Coastguard Worker 1741*35238bceSAndroid Build Coastguard Worker float func (float f); 1742*35238bceSAndroid Build Coastguard Worker 1743*35238bceSAndroid Build Coastguard Worker float func (float f) 1744*35238bceSAndroid Build Coastguard Worker { 1745*35238bceSAndroid Build Coastguard Worker return -f; 1746*35238bceSAndroid Build Coastguard Worker } 1747*35238bceSAndroid Build Coastguard Worker 1748*35238bceSAndroid Build Coastguard Worker void main() 1749*35238bceSAndroid Build Coastguard Worker { 1750*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 1751*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 1752*35238bceSAndroid Build Coastguard Worker } 1753*35238bceSAndroid Build Coastguard Worker "" 1754*35238bceSAndroid Build Coastguard Worker end 1755*35238bceSAndroid Build Coastguard Worker 1756*35238bceSAndroid Build Coastguard Worker case define_after_use 1757*35238bceSAndroid Build Coastguard Worker version 300 es 1758*35238bceSAndroid Build Coastguard Worker values 1759*35238bceSAndroid Build Coastguard Worker { 1760*35238bceSAndroid Build Coastguard Worker input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 1761*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 1762*35238bceSAndroid Build Coastguard Worker } 1763*35238bceSAndroid Build Coastguard Worker 1764*35238bceSAndroid Build Coastguard Worker both "" 1765*35238bceSAndroid Build Coastguard Worker #version 300 es 1766*35238bceSAndroid Build Coastguard Worker precision mediump float; 1767*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 1768*35238bceSAndroid Build Coastguard Worker 1769*35238bceSAndroid Build Coastguard Worker float func (void); 1770*35238bceSAndroid Build Coastguard Worker 1771*35238bceSAndroid Build Coastguard Worker void main() 1772*35238bceSAndroid Build Coastguard Worker { 1773*35238bceSAndroid Build Coastguard Worker out0 = func() * in0; 1774*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 1775*35238bceSAndroid Build Coastguard Worker } 1776*35238bceSAndroid Build Coastguard Worker 1777*35238bceSAndroid Build Coastguard Worker float func (void) 1778*35238bceSAndroid Build Coastguard Worker { 1779*35238bceSAndroid Build Coastguard Worker return -1.0; 1780*35238bceSAndroid Build Coastguard Worker } 1781*35238bceSAndroid Build Coastguard Worker "" 1782*35238bceSAndroid Build Coastguard Worker end 1783*35238bceSAndroid Build Coastguard Worker 1784*35238bceSAndroid Build Coastguard Worker case double_declare 1785*35238bceSAndroid Build Coastguard Worker version 300 es 1786*35238bceSAndroid Build Coastguard Worker values 1787*35238bceSAndroid Build Coastguard Worker { 1788*35238bceSAndroid Build Coastguard Worker input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 1789*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 1790*35238bceSAndroid Build Coastguard Worker } 1791*35238bceSAndroid Build Coastguard Worker 1792*35238bceSAndroid Build Coastguard Worker both "" 1793*35238bceSAndroid Build Coastguard Worker #version 300 es 1794*35238bceSAndroid Build Coastguard Worker precision mediump float; 1795*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 1796*35238bceSAndroid Build Coastguard Worker 1797*35238bceSAndroid Build Coastguard Worker float func (void); 1798*35238bceSAndroid Build Coastguard Worker 1799*35238bceSAndroid Build Coastguard Worker float func (void); 1800*35238bceSAndroid Build Coastguard Worker 1801*35238bceSAndroid Build Coastguard Worker float func (void) 1802*35238bceSAndroid Build Coastguard Worker { 1803*35238bceSAndroid Build Coastguard Worker return -1.0; 1804*35238bceSAndroid Build Coastguard Worker } 1805*35238bceSAndroid Build Coastguard Worker 1806*35238bceSAndroid Build Coastguard Worker void main() 1807*35238bceSAndroid Build Coastguard Worker { 1808*35238bceSAndroid Build Coastguard Worker out0 = func() * in0; 1809*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 1810*35238bceSAndroid Build Coastguard Worker } 1811*35238bceSAndroid Build Coastguard Worker "" 1812*35238bceSAndroid Build Coastguard Worker end 1813*35238bceSAndroid Build Coastguard Worker 1814*35238bceSAndroid Build Coastguard Worker case declare_after_define 1815*35238bceSAndroid Build Coastguard Worker version 300 es 1816*35238bceSAndroid Build Coastguard Worker values 1817*35238bceSAndroid Build Coastguard Worker { 1818*35238bceSAndroid Build Coastguard Worker input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 1819*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 1820*35238bceSAndroid Build Coastguard Worker } 1821*35238bceSAndroid Build Coastguard Worker 1822*35238bceSAndroid Build Coastguard Worker both "" 1823*35238bceSAndroid Build Coastguard Worker #version 300 es 1824*35238bceSAndroid Build Coastguard Worker precision mediump float; 1825*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 1826*35238bceSAndroid Build Coastguard Worker 1827*35238bceSAndroid Build Coastguard Worker float func (void) 1828*35238bceSAndroid Build Coastguard Worker { 1829*35238bceSAndroid Build Coastguard Worker return -1.0; 1830*35238bceSAndroid Build Coastguard Worker } 1831*35238bceSAndroid Build Coastguard Worker 1832*35238bceSAndroid Build Coastguard Worker float func (void); 1833*35238bceSAndroid Build Coastguard Worker 1834*35238bceSAndroid Build Coastguard Worker void main() 1835*35238bceSAndroid Build Coastguard Worker { 1836*35238bceSAndroid Build Coastguard Worker out0 = func() * in0; 1837*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 1838*35238bceSAndroid Build Coastguard Worker } 1839*35238bceSAndroid Build Coastguard Worker "" 1840*35238bceSAndroid Build Coastguard Worker end 1841*35238bceSAndroid Build Coastguard Worker 1842*35238bceSAndroid Build Coastguard Worker case void_vs_no_void 1843*35238bceSAndroid Build Coastguard Worker version 300 es 1844*35238bceSAndroid Build Coastguard Worker values 1845*35238bceSAndroid Build Coastguard Worker { 1846*35238bceSAndroid Build Coastguard Worker input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 1847*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 1848*35238bceSAndroid Build Coastguard Worker } 1849*35238bceSAndroid Build Coastguard Worker 1850*35238bceSAndroid Build Coastguard Worker both "" 1851*35238bceSAndroid Build Coastguard Worker #version 300 es 1852*35238bceSAndroid Build Coastguard Worker precision mediump float; 1853*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 1854*35238bceSAndroid Build Coastguard Worker 1855*35238bceSAndroid Build Coastguard Worker float func (); 1856*35238bceSAndroid Build Coastguard Worker 1857*35238bceSAndroid Build Coastguard Worker void main() 1858*35238bceSAndroid Build Coastguard Worker { 1859*35238bceSAndroid Build Coastguard Worker out0 = func() * in0; 1860*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 1861*35238bceSAndroid Build Coastguard Worker } 1862*35238bceSAndroid Build Coastguard Worker 1863*35238bceSAndroid Build Coastguard Worker float func (void) 1864*35238bceSAndroid Build Coastguard Worker { 1865*35238bceSAndroid Build Coastguard Worker return -1.0; 1866*35238bceSAndroid Build Coastguard Worker } 1867*35238bceSAndroid Build Coastguard Worker "" 1868*35238bceSAndroid Build Coastguard Worker end 1869*35238bceSAndroid Build Coastguard Worker 1870*35238bceSAndroid Build Coastguard Worker case in_vs_no_in 1871*35238bceSAndroid Build Coastguard Worker version 300 es 1872*35238bceSAndroid Build Coastguard Worker values 1873*35238bceSAndroid Build Coastguard Worker { 1874*35238bceSAndroid Build Coastguard Worker input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 1875*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 1876*35238bceSAndroid Build Coastguard Worker } 1877*35238bceSAndroid Build Coastguard Worker 1878*35238bceSAndroid Build Coastguard Worker both "" 1879*35238bceSAndroid Build Coastguard Worker #version 300 es 1880*35238bceSAndroid Build Coastguard Worker precision mediump float; 1881*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 1882*35238bceSAndroid Build Coastguard Worker 1883*35238bceSAndroid Build Coastguard Worker float func (float f); 1884*35238bceSAndroid Build Coastguard Worker 1885*35238bceSAndroid Build Coastguard Worker void main() 1886*35238bceSAndroid Build Coastguard Worker { 1887*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 1888*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 1889*35238bceSAndroid Build Coastguard Worker } 1890*35238bceSAndroid Build Coastguard Worker 1891*35238bceSAndroid Build Coastguard Worker float func (in float f) 1892*35238bceSAndroid Build Coastguard Worker { 1893*35238bceSAndroid Build Coastguard Worker return -f; 1894*35238bceSAndroid Build Coastguard Worker } 1895*35238bceSAndroid Build Coastguard Worker "" 1896*35238bceSAndroid Build Coastguard Worker end 1897*35238bceSAndroid Build Coastguard Worker 1898*35238bceSAndroid Build Coastguard Worker case default_vs_explicit_precision 1899*35238bceSAndroid Build Coastguard Worker version 300 es 1900*35238bceSAndroid Build Coastguard Worker values 1901*35238bceSAndroid Build Coastguard Worker { 1902*35238bceSAndroid Build Coastguard Worker input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 1903*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 1904*35238bceSAndroid Build Coastguard Worker } 1905*35238bceSAndroid Build Coastguard Worker 1906*35238bceSAndroid Build Coastguard Worker both "" 1907*35238bceSAndroid Build Coastguard Worker #version 300 es 1908*35238bceSAndroid Build Coastguard Worker precision mediump float; 1909*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 1910*35238bceSAndroid Build Coastguard Worker 1911*35238bceSAndroid Build Coastguard Worker float func (float f); 1912*35238bceSAndroid Build Coastguard Worker 1913*35238bceSAndroid Build Coastguard Worker void main() 1914*35238bceSAndroid Build Coastguard Worker { 1915*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 1916*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 1917*35238bceSAndroid Build Coastguard Worker } 1918*35238bceSAndroid Build Coastguard Worker 1919*35238bceSAndroid Build Coastguard Worker float func (mediump float f) 1920*35238bceSAndroid Build Coastguard Worker { 1921*35238bceSAndroid Build Coastguard Worker return -f; 1922*35238bceSAndroid Build Coastguard Worker } 1923*35238bceSAndroid Build Coastguard Worker "" 1924*35238bceSAndroid Build Coastguard Worker end 1925*35238bceSAndroid Build Coastguard Worker 1926*35238bceSAndroid Build Coastguard Worker 1927*35238bceSAndroid Build Coastguard Workerend # declarations 1928*35238bceSAndroid Build Coastguard Worker 1929*35238bceSAndroid Build Coastguard Workergroup overloading "Function Overloading" 1930*35238bceSAndroid Build Coastguard Worker 1931*35238bceSAndroid Build Coastguard Worker case user_func_arg_type_simple 1932*35238bceSAndroid Build Coastguard Worker version 300 es 1933*35238bceSAndroid Build Coastguard Worker values 1934*35238bceSAndroid Build Coastguard Worker { 1935*35238bceSAndroid Build Coastguard Worker input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 1936*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 1937*35238bceSAndroid Build Coastguard Worker } 1938*35238bceSAndroid Build Coastguard Worker 1939*35238bceSAndroid Build Coastguard Worker both "" 1940*35238bceSAndroid Build Coastguard Worker #version 300 es 1941*35238bceSAndroid Build Coastguard Worker precision mediump float; 1942*35238bceSAndroid Build Coastguard Worker precision mediump int; 1943*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 1944*35238bceSAndroid Build Coastguard Worker 1945*35238bceSAndroid Build Coastguard Worker float func (float a) 1946*35238bceSAndroid Build Coastguard Worker { 1947*35238bceSAndroid Build Coastguard Worker return -a; 1948*35238bceSAndroid Build Coastguard Worker } 1949*35238bceSAndroid Build Coastguard Worker 1950*35238bceSAndroid Build Coastguard Worker int func (int a) 1951*35238bceSAndroid Build Coastguard Worker { 1952*35238bceSAndroid Build Coastguard Worker return -a; 1953*35238bceSAndroid Build Coastguard Worker } 1954*35238bceSAndroid Build Coastguard Worker 1955*35238bceSAndroid Build Coastguard Worker void main() 1956*35238bceSAndroid Build Coastguard Worker { 1957*35238bceSAndroid Build Coastguard Worker out0 = func(in0) * float(func(-1)); 1958*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 1959*35238bceSAndroid Build Coastguard Worker } 1960*35238bceSAndroid Build Coastguard Worker "" 1961*35238bceSAndroid Build Coastguard Worker end 1962*35238bceSAndroid Build Coastguard Worker 1963*35238bceSAndroid Build Coastguard Worker case user_func_arg_float_types 1964*35238bceSAndroid Build Coastguard Worker version 300 es 1965*35238bceSAndroid Build Coastguard Worker values 1966*35238bceSAndroid Build Coastguard Worker { 1967*35238bceSAndroid Build Coastguard Worker input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 1968*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 1969*35238bceSAndroid Build Coastguard Worker } 1970*35238bceSAndroid Build Coastguard Worker 1971*35238bceSAndroid Build Coastguard Worker both "" 1972*35238bceSAndroid Build Coastguard Worker #version 300 es 1973*35238bceSAndroid Build Coastguard Worker precision mediump float; 1974*35238bceSAndroid Build Coastguard Worker precision mediump int; 1975*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 1976*35238bceSAndroid Build Coastguard Worker 1977*35238bceSAndroid Build Coastguard Worker float func (float a) { return -a; } 1978*35238bceSAndroid Build Coastguard Worker vec2 func (vec2 a) { return a.yx; } 1979*35238bceSAndroid Build Coastguard Worker vec3 func (vec3 a) { return a.xxx; } 1980*35238bceSAndroid Build Coastguard Worker vec4 func (vec4 a) { return a.wwww; } 1981*35238bceSAndroid Build Coastguard Worker 1982*35238bceSAndroid Build Coastguard Worker void main() 1983*35238bceSAndroid Build Coastguard Worker { 1984*35238bceSAndroid Build Coastguard Worker out0 = func(func(func(func(vec4(in0)).xyz).xy).x); 1985*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 1986*35238bceSAndroid Build Coastguard Worker } 1987*35238bceSAndroid Build Coastguard Worker "" 1988*35238bceSAndroid Build Coastguard Worker end 1989*35238bceSAndroid Build Coastguard Worker 1990*35238bceSAndroid Build Coastguard Worker case user_func_arg_int_types 1991*35238bceSAndroid Build Coastguard Worker version 300 es 1992*35238bceSAndroid Build Coastguard Worker values 1993*35238bceSAndroid Build Coastguard Worker { 1994*35238bceSAndroid Build Coastguard Worker input int in0 = [ 0 | 1 | -2 | 6 ]; 1995*35238bceSAndroid Build Coastguard Worker output int out0 = [ 0 | -1 | 2 | -6 ]; 1996*35238bceSAndroid Build Coastguard Worker } 1997*35238bceSAndroid Build Coastguard Worker 1998*35238bceSAndroid Build Coastguard Worker both "" 1999*35238bceSAndroid Build Coastguard Worker #version 300 es 2000*35238bceSAndroid Build Coastguard Worker precision mediump float; 2001*35238bceSAndroid Build Coastguard Worker precision mediump int; 2002*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 2003*35238bceSAndroid Build Coastguard Worker 2004*35238bceSAndroid Build Coastguard Worker int func (int a) { return -a; } 2005*35238bceSAndroid Build Coastguard Worker ivec2 func (ivec2 a) { return a.yx; } 2006*35238bceSAndroid Build Coastguard Worker ivec3 func (ivec3 a) { return a.xxx; } 2007*35238bceSAndroid Build Coastguard Worker ivec4 func (ivec4 a) { return a.wwww; } 2008*35238bceSAndroid Build Coastguard Worker 2009*35238bceSAndroid Build Coastguard Worker void main() 2010*35238bceSAndroid Build Coastguard Worker { 2011*35238bceSAndroid Build Coastguard Worker ${SETUP} 2012*35238bceSAndroid Build Coastguard Worker out0 = func(func(func(func(ivec4(in0)).xyz).xy).x); 2013*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 2014*35238bceSAndroid Build Coastguard Worker } 2015*35238bceSAndroid Build Coastguard Worker "" 2016*35238bceSAndroid Build Coastguard Worker end 2017*35238bceSAndroid Build Coastguard Worker 2018*35238bceSAndroid Build Coastguard Worker case user_func_arg_bool_types 2019*35238bceSAndroid Build Coastguard Worker version 300 es 2020*35238bceSAndroid Build Coastguard Worker values 2021*35238bceSAndroid Build Coastguard Worker { 2022*35238bceSAndroid Build Coastguard Worker input bool in0 = [ true | false ]; 2023*35238bceSAndroid Build Coastguard Worker output bool out0 = [ false | true ]; 2024*35238bceSAndroid Build Coastguard Worker } 2025*35238bceSAndroid Build Coastguard Worker 2026*35238bceSAndroid Build Coastguard Worker both "" 2027*35238bceSAndroid Build Coastguard Worker #version 300 es 2028*35238bceSAndroid Build Coastguard Worker precision mediump float; 2029*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 2030*35238bceSAndroid Build Coastguard Worker 2031*35238bceSAndroid Build Coastguard Worker bool func (bool a) { return !a; } 2032*35238bceSAndroid Build Coastguard Worker bvec2 func (bvec2 a) { return a.yx; } 2033*35238bceSAndroid Build Coastguard Worker bvec3 func (bvec3 a) { return a.xxx; } 2034*35238bceSAndroid Build Coastguard Worker bvec4 func (bvec4 a) { return a.wwww; } 2035*35238bceSAndroid Build Coastguard Worker 2036*35238bceSAndroid Build Coastguard Worker void main() 2037*35238bceSAndroid Build Coastguard Worker { 2038*35238bceSAndroid Build Coastguard Worker ${SETUP} 2039*35238bceSAndroid Build Coastguard Worker out0 = func(func(func(func(bvec4(in0)).xyz).xy).x); 2040*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 2041*35238bceSAndroid Build Coastguard Worker } 2042*35238bceSAndroid Build Coastguard Worker "" 2043*35238bceSAndroid Build Coastguard Worker end 2044*35238bceSAndroid Build Coastguard Worker 2045*35238bceSAndroid Build Coastguard Worker case user_func_arg_basic_types 2046*35238bceSAndroid Build Coastguard Worker version 300 es 2047*35238bceSAndroid Build Coastguard Worker values 2048*35238bceSAndroid Build Coastguard Worker { 2049*35238bceSAndroid Build Coastguard Worker input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 2050*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 2051*35238bceSAndroid Build Coastguard Worker } 2052*35238bceSAndroid Build Coastguard Worker 2053*35238bceSAndroid Build Coastguard Worker both "" 2054*35238bceSAndroid Build Coastguard Worker #version 300 es 2055*35238bceSAndroid Build Coastguard Worker precision mediump float; 2056*35238bceSAndroid Build Coastguard Worker precision mediump int; 2057*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 2058*35238bceSAndroid Build Coastguard Worker 2059*35238bceSAndroid Build Coastguard Worker float func (float a) { return -a; } 2060*35238bceSAndroid Build Coastguard Worker vec2 func (vec2 a) { return a.yx; } 2061*35238bceSAndroid Build Coastguard Worker vec3 func (vec3 a) { return a.xxx; } 2062*35238bceSAndroid Build Coastguard Worker vec4 func (vec4 a) { return a.wwww; } 2063*35238bceSAndroid Build Coastguard Worker int func (int a) { return -a; } 2064*35238bceSAndroid Build Coastguard Worker ivec2 func (ivec2 a) { return a.yx; } 2065*35238bceSAndroid Build Coastguard Worker ivec3 func (ivec3 a) { return a.xxx; } 2066*35238bceSAndroid Build Coastguard Worker ivec4 func (ivec4 a) { return a.wwww; } 2067*35238bceSAndroid Build Coastguard Worker bool func (bool a) { return !a; } 2068*35238bceSAndroid Build Coastguard Worker bvec2 func (bvec2 a) { return a.yx; } 2069*35238bceSAndroid Build Coastguard Worker bvec3 func (bvec3 a) { return a.xxx; } 2070*35238bceSAndroid Build Coastguard Worker bvec4 func (bvec4 a) { return a.wwww; } 2071*35238bceSAndroid Build Coastguard Worker 2072*35238bceSAndroid Build Coastguard Worker void main() 2073*35238bceSAndroid Build Coastguard Worker { 2074*35238bceSAndroid Build Coastguard Worker ${SETUP} 2075*35238bceSAndroid Build Coastguard Worker if (func(func(bvec4(false)).x)) 2076*35238bceSAndroid Build Coastguard Worker out0 = func(in0) * float(func(-1)); 2077*35238bceSAndroid Build Coastguard Worker else 2078*35238bceSAndroid Build Coastguard Worker out0 = float(func(func(ivec4(func(func(func(vec4(0.5)).xyz).xy).xxxx)).xy).x); 2079*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 2080*35238bceSAndroid Build Coastguard Worker } 2081*35238bceSAndroid Build Coastguard Worker "" 2082*35238bceSAndroid Build Coastguard Worker end 2083*35238bceSAndroid Build Coastguard Worker 2084*35238bceSAndroid Build Coastguard Worker case user_func_arg_complex_types 2085*35238bceSAndroid Build Coastguard Worker version 300 es 2086*35238bceSAndroid Build Coastguard Worker values 2087*35238bceSAndroid Build Coastguard Worker { 2088*35238bceSAndroid Build Coastguard Worker input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 2089*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 2090*35238bceSAndroid Build Coastguard Worker } 2091*35238bceSAndroid Build Coastguard Worker 2092*35238bceSAndroid Build Coastguard Worker both "" 2093*35238bceSAndroid Build Coastguard Worker #version 300 es 2094*35238bceSAndroid Build Coastguard Worker precision mediump float; 2095*35238bceSAndroid Build Coastguard Worker precision mediump int; 2096*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 2097*35238bceSAndroid Build Coastguard Worker 2098*35238bceSAndroid Build Coastguard Worker struct Pos { float a, b, c; }; 2099*35238bceSAndroid Build Coastguard Worker struct Line { Pos start, end; }; 2100*35238bceSAndroid Build Coastguard Worker 2101*35238bceSAndroid Build Coastguard Worker float func (float a) { return -a; } 2102*35238bceSAndroid Build Coastguard Worker float func (float a[4]) { return a[0] + a[3]; } 2103*35238bceSAndroid Build Coastguard Worker vec2 func (vec2 a) { return a.yx; } 2104*35238bceSAndroid Build Coastguard Worker vec3 func (vec3 a) { return a.xxx; } 2105*35238bceSAndroid Build Coastguard Worker vec4 func (vec4 a) { return a.wwww; } 2106*35238bceSAndroid Build Coastguard Worker vec4 func (vec4 a[4]) { return a[1] + a[2]; } 2107*35238bceSAndroid Build Coastguard Worker int func (int a) { return -a; } 2108*35238bceSAndroid Build Coastguard Worker ivec2 func (ivec2 a) { return a.yx; } 2109*35238bceSAndroid Build Coastguard Worker ivec3 func (ivec3 a) { return a.xxx; } 2110*35238bceSAndroid Build Coastguard Worker ivec4 func (ivec4 a) { return a.wwww; } 2111*35238bceSAndroid Build Coastguard Worker bool func (bool a) { return !a; } 2112*35238bceSAndroid Build Coastguard Worker bvec2 func (bvec2 a) { return a.yx; } 2113*35238bceSAndroid Build Coastguard Worker bvec3 func (bvec3 a) { return a.xxx; } 2114*35238bceSAndroid Build Coastguard Worker bvec4 func (bvec4 a) { return a.wwww; } 2115*35238bceSAndroid Build Coastguard Worker Pos func (Pos a) { return a; } 2116*35238bceSAndroid Build Coastguard Worker Line func (Line a) { return Line(a.end, a.start); } 2117*35238bceSAndroid Build Coastguard Worker 2118*35238bceSAndroid Build Coastguard Worker void main() 2119*35238bceSAndroid Build Coastguard Worker { 2120*35238bceSAndroid Build Coastguard Worker ${SETUP} 2121*35238bceSAndroid Build Coastguard Worker float arr[4]; 2122*35238bceSAndroid Build Coastguard Worker vec4 arr2[4]; 2123*35238bceSAndroid Build Coastguard Worker out0 = func(arr) + func(arr2).x; 2124*35238bceSAndroid Build Coastguard Worker if (func(func(bvec4(false)).x)) 2125*35238bceSAndroid Build Coastguard Worker out0 = func(in0) * float(func(-1)); 2126*35238bceSAndroid Build Coastguard Worker else 2127*35238bceSAndroid Build Coastguard Worker out0 = float(func(func(ivec4(func(func(func(vec4(0.5)).xyz).xy).xxxx)).xy).x); 2128*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 2129*35238bceSAndroid Build Coastguard Worker } 2130*35238bceSAndroid Build Coastguard Worker "" 2131*35238bceSAndroid Build Coastguard Worker end 2132*35238bceSAndroid Build Coastguard Worker 2133*35238bceSAndroid Build Coastguard Worker case user_func_arguments 2134*35238bceSAndroid Build Coastguard Worker version 300 es 2135*35238bceSAndroid Build Coastguard Worker values 2136*35238bceSAndroid Build Coastguard Worker { 2137*35238bceSAndroid Build Coastguard Worker input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 2138*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 2139*35238bceSAndroid Build Coastguard Worker } 2140*35238bceSAndroid Build Coastguard Worker 2141*35238bceSAndroid Build Coastguard Worker both "" 2142*35238bceSAndroid Build Coastguard Worker #version 300 es 2143*35238bceSAndroid Build Coastguard Worker precision mediump float; 2144*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 2145*35238bceSAndroid Build Coastguard Worker 2146*35238bceSAndroid Build Coastguard Worker float func (float a) 2147*35238bceSAndroid Build Coastguard Worker { 2148*35238bceSAndroid Build Coastguard Worker return -a; 2149*35238bceSAndroid Build Coastguard Worker } 2150*35238bceSAndroid Build Coastguard Worker 2151*35238bceSAndroid Build Coastguard Worker float func (float a, float b) 2152*35238bceSAndroid Build Coastguard Worker { 2153*35238bceSAndroid Build Coastguard Worker return a * b; 2154*35238bceSAndroid Build Coastguard Worker } 2155*35238bceSAndroid Build Coastguard Worker 2156*35238bceSAndroid Build Coastguard Worker void main() 2157*35238bceSAndroid Build Coastguard Worker { 2158*35238bceSAndroid Build Coastguard Worker out0 = func(in0) * func(-0.5, -2.0); 2159*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 2160*35238bceSAndroid Build Coastguard Worker } 2161*35238bceSAndroid Build Coastguard Worker "" 2162*35238bceSAndroid Build Coastguard Worker end 2163*35238bceSAndroid Build Coastguard Worker 2164*35238bceSAndroid Build Coastguard Worker case array_size 2165*35238bceSAndroid Build Coastguard Worker version 300 es 2166*35238bceSAndroid Build Coastguard Worker values 2167*35238bceSAndroid Build Coastguard Worker { 2168*35238bceSAndroid Build Coastguard Worker output float out0 = [ 1.0 ]; 2169*35238bceSAndroid Build Coastguard Worker } 2170*35238bceSAndroid Build Coastguard Worker 2171*35238bceSAndroid Build Coastguard Worker both "" 2172*35238bceSAndroid Build Coastguard Worker #version 300 es 2173*35238bceSAndroid Build Coastguard Worker precision mediump float; 2174*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 2175*35238bceSAndroid Build Coastguard Worker 2176*35238bceSAndroid Build Coastguard Worker float func (float f[3]) 2177*35238bceSAndroid Build Coastguard Worker { 2178*35238bceSAndroid Build Coastguard Worker return f[0]; 2179*35238bceSAndroid Build Coastguard Worker } 2180*35238bceSAndroid Build Coastguard Worker 2181*35238bceSAndroid Build Coastguard Worker float func (float f[4]) 2182*35238bceSAndroid Build Coastguard Worker { 2183*35238bceSAndroid Build Coastguard Worker return f[1]; 2184*35238bceSAndroid Build Coastguard Worker } 2185*35238bceSAndroid Build Coastguard Worker 2186*35238bceSAndroid Build Coastguard Worker void main () 2187*35238bceSAndroid Build Coastguard Worker { 2188*35238bceSAndroid Build Coastguard Worker ${SETUP} 2189*35238bceSAndroid Build Coastguard Worker float[4] x = float[4] (-1.0, 1.0, 0.0, 0.0); 2190*35238bceSAndroid Build Coastguard Worker out0 = func(x); 2191*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 2192*35238bceSAndroid Build Coastguard Worker } 2193*35238bceSAndroid Build Coastguard Worker "" 2194*35238bceSAndroid Build Coastguard Worker end 2195*35238bceSAndroid Build Coastguard Worker 2196*35238bceSAndroid Build Coastguard Workerend # overloading 2197*35238bceSAndroid Build Coastguard Worker 2198*35238bceSAndroid Build Coastguard Workergroup array_arguments "Arrays as Arguments" 2199*35238bceSAndroid Build Coastguard Worker 2200*35238bceSAndroid Build Coastguard Worker case local_in_float 2201*35238bceSAndroid Build Coastguard Worker version 300 es 2202*35238bceSAndroid Build Coastguard Worker values 2203*35238bceSAndroid Build Coastguard Worker { 2204*35238bceSAndroid Build Coastguard Worker input vec4 in0 = [ vec4(0.0, 1.0, 2.0, -4.0) | vec4(-7.5, 12.125, -0.25, 16.0) ]; 2205*35238bceSAndroid Build Coastguard Worker output vec4 out0 = [ vec4(0.0, -1.0, -2.0, 4.0) | vec4(7.5, -12.125, 0.25, -16.0) ]; 2206*35238bceSAndroid Build Coastguard Worker } 2207*35238bceSAndroid Build Coastguard Worker 2208*35238bceSAndroid Build Coastguard Worker both "" 2209*35238bceSAndroid Build Coastguard Worker #version 300 es 2210*35238bceSAndroid Build Coastguard Worker precision mediump float; 2211*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 2212*35238bceSAndroid Build Coastguard Worker 2213*35238bceSAndroid Build Coastguard Worker float func (in float a[4]) 2214*35238bceSAndroid Build Coastguard Worker { 2215*35238bceSAndroid Build Coastguard Worker a[0] = -1.0; 2216*35238bceSAndroid Build Coastguard Worker a[2] = -4.0; 2217*35238bceSAndroid Build Coastguard Worker a[3] = -3.0 * a[1]; 2218*35238bceSAndroid Build Coastguard Worker return a[0]; 2219*35238bceSAndroid Build Coastguard Worker } 2220*35238bceSAndroid Build Coastguard Worker 2221*35238bceSAndroid Build Coastguard Worker void main() 2222*35238bceSAndroid Build Coastguard Worker { 2223*35238bceSAndroid Build Coastguard Worker float arr[4]; 2224*35238bceSAndroid Build Coastguard Worker arr[0] = in0.x; 2225*35238bceSAndroid Build Coastguard Worker arr[1] = in0.y; 2226*35238bceSAndroid Build Coastguard Worker arr[2] = in0.z; 2227*35238bceSAndroid Build Coastguard Worker arr[3] = in0.w; 2228*35238bceSAndroid Build Coastguard Worker float f = func(arr); 2229*35238bceSAndroid Build Coastguard Worker out0 = f * vec4(arr[0], arr[1], arr[2], arr[3]); 2230*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 2231*35238bceSAndroid Build Coastguard Worker } 2232*35238bceSAndroid Build Coastguard Worker "" 2233*35238bceSAndroid Build Coastguard Worker end 2234*35238bceSAndroid Build Coastguard Worker 2235*35238bceSAndroid Build Coastguard Worker case global_in_float 2236*35238bceSAndroid Build Coastguard Worker version 300 es 2237*35238bceSAndroid Build Coastguard Worker values 2238*35238bceSAndroid Build Coastguard Worker { 2239*35238bceSAndroid Build Coastguard Worker input vec4 in0 = [ vec4(0.0, 1.0, 2.0, -4.0) | vec4(-7.5, 12.125, -0.25, 16.0) ]; 2240*35238bceSAndroid Build Coastguard Worker output vec4 out0 = [ vec4(0.0, -1.0, -2.0, 4.0) | vec4(7.5, -12.125, 0.25, -16.0) ]; 2241*35238bceSAndroid Build Coastguard Worker } 2242*35238bceSAndroid Build Coastguard Worker 2243*35238bceSAndroid Build Coastguard Worker both "" 2244*35238bceSAndroid Build Coastguard Worker #version 300 es 2245*35238bceSAndroid Build Coastguard Worker precision mediump float; 2246*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 2247*35238bceSAndroid Build Coastguard Worker 2248*35238bceSAndroid Build Coastguard Worker float func (in float a[4]) 2249*35238bceSAndroid Build Coastguard Worker { 2250*35238bceSAndroid Build Coastguard Worker a[0] = -1.0; 2251*35238bceSAndroid Build Coastguard Worker a[2] = -4.0; 2252*35238bceSAndroid Build Coastguard Worker a[3] = -3.0 * a[1]; 2253*35238bceSAndroid Build Coastguard Worker return a[0]; 2254*35238bceSAndroid Build Coastguard Worker } 2255*35238bceSAndroid Build Coastguard Worker 2256*35238bceSAndroid Build Coastguard Worker float arr[4]; 2257*35238bceSAndroid Build Coastguard Worker 2258*35238bceSAndroid Build Coastguard Worker void main() 2259*35238bceSAndroid Build Coastguard Worker { 2260*35238bceSAndroid Build Coastguard Worker arr[0] = in0.x; 2261*35238bceSAndroid Build Coastguard Worker arr[1] = in0.y; 2262*35238bceSAndroid Build Coastguard Worker arr[2] = in0.z; 2263*35238bceSAndroid Build Coastguard Worker arr[3] = in0.w; 2264*35238bceSAndroid Build Coastguard Worker float f = func(arr); 2265*35238bceSAndroid Build Coastguard Worker out0 = f * vec4(arr[0], arr[1], arr[2], arr[3]); 2266*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 2267*35238bceSAndroid Build Coastguard Worker } 2268*35238bceSAndroid Build Coastguard Worker "" 2269*35238bceSAndroid Build Coastguard Worker end 2270*35238bceSAndroid Build Coastguard Worker 2271*35238bceSAndroid Build Coastguard Worker case local_in_int 2272*35238bceSAndroid Build Coastguard Worker version 300 es 2273*35238bceSAndroid Build Coastguard Worker values 2274*35238bceSAndroid Build Coastguard Worker { 2275*35238bceSAndroid Build Coastguard Worker input ivec4 in0 = [ ivec4(0, 1, 2, -4) | ivec4(-7, -11, 13, 19) ]; 2276*35238bceSAndroid Build Coastguard Worker output ivec4 out0 = [ ivec4(0, -1, -2, 4) | ivec4(7, 11, -13, -19) ]; 2277*35238bceSAndroid Build Coastguard Worker } 2278*35238bceSAndroid Build Coastguard Worker 2279*35238bceSAndroid Build Coastguard Worker both "" 2280*35238bceSAndroid Build Coastguard Worker #version 300 es 2281*35238bceSAndroid Build Coastguard Worker precision mediump float; 2282*35238bceSAndroid Build Coastguard Worker precision mediump int; 2283*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 2284*35238bceSAndroid Build Coastguard Worker 2285*35238bceSAndroid Build Coastguard Worker int func (in int a[4]) 2286*35238bceSAndroid Build Coastguard Worker { 2287*35238bceSAndroid Build Coastguard Worker a[0] = -1; 2288*35238bceSAndroid Build Coastguard Worker a[2] = -4; 2289*35238bceSAndroid Build Coastguard Worker a[3] = -3 * a[1]; 2290*35238bceSAndroid Build Coastguard Worker return a[0]; 2291*35238bceSAndroid Build Coastguard Worker } 2292*35238bceSAndroid Build Coastguard Worker 2293*35238bceSAndroid Build Coastguard Worker void main() 2294*35238bceSAndroid Build Coastguard Worker { 2295*35238bceSAndroid Build Coastguard Worker ${SETUP} 2296*35238bceSAndroid Build Coastguard Worker int arr[4]; 2297*35238bceSAndroid Build Coastguard Worker arr[0] = in0.x; 2298*35238bceSAndroid Build Coastguard Worker arr[1] = in0.y; 2299*35238bceSAndroid Build Coastguard Worker arr[2] = in0.z; 2300*35238bceSAndroid Build Coastguard Worker arr[3] = in0.w; 2301*35238bceSAndroid Build Coastguard Worker int f = func(arr); 2302*35238bceSAndroid Build Coastguard Worker out0 = f * ivec4(arr[0], arr[1], arr[2], arr[3]); 2303*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 2304*35238bceSAndroid Build Coastguard Worker } 2305*35238bceSAndroid Build Coastguard Worker "" 2306*35238bceSAndroid Build Coastguard Worker end 2307*35238bceSAndroid Build Coastguard Worker 2308*35238bceSAndroid Build Coastguard Worker case global_in_int 2309*35238bceSAndroid Build Coastguard Worker version 300 es 2310*35238bceSAndroid Build Coastguard Worker values 2311*35238bceSAndroid Build Coastguard Worker { 2312*35238bceSAndroid Build Coastguard Worker input ivec4 in0 = [ ivec4(0, 1, 2, 4) | ivec4(-7, -11, 13, 19) ]; 2313*35238bceSAndroid Build Coastguard Worker output ivec4 out0 = [ ivec4(0, -1, -2, -4) | ivec4(7, 11, -13, -19) ]; 2314*35238bceSAndroid Build Coastguard Worker } 2315*35238bceSAndroid Build Coastguard Worker 2316*35238bceSAndroid Build Coastguard Worker both "" 2317*35238bceSAndroid Build Coastguard Worker #version 300 es 2318*35238bceSAndroid Build Coastguard Worker precision mediump float; 2319*35238bceSAndroid Build Coastguard Worker precision mediump int; 2320*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 2321*35238bceSAndroid Build Coastguard Worker 2322*35238bceSAndroid Build Coastguard Worker int func (in int a[4]) 2323*35238bceSAndroid Build Coastguard Worker { 2324*35238bceSAndroid Build Coastguard Worker a[0] = -1; 2325*35238bceSAndroid Build Coastguard Worker a[2] = -4; 2326*35238bceSAndroid Build Coastguard Worker a[3] = -3 * a[1]; 2327*35238bceSAndroid Build Coastguard Worker return a[0]; 2328*35238bceSAndroid Build Coastguard Worker } 2329*35238bceSAndroid Build Coastguard Worker 2330*35238bceSAndroid Build Coastguard Worker int arr[4]; 2331*35238bceSAndroid Build Coastguard Worker 2332*35238bceSAndroid Build Coastguard Worker void main() 2333*35238bceSAndroid Build Coastguard Worker { 2334*35238bceSAndroid Build Coastguard Worker ${SETUP} 2335*35238bceSAndroid Build Coastguard Worker arr[0] = in0.x; 2336*35238bceSAndroid Build Coastguard Worker arr[1] = in0.y; 2337*35238bceSAndroid Build Coastguard Worker arr[2] = in0.z; 2338*35238bceSAndroid Build Coastguard Worker arr[3] = in0.w; 2339*35238bceSAndroid Build Coastguard Worker int f = func(arr); 2340*35238bceSAndroid Build Coastguard Worker out0 = f * ivec4(arr[0], arr[1], arr[2], arr[3]); 2341*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 2342*35238bceSAndroid Build Coastguard Worker } 2343*35238bceSAndroid Build Coastguard Worker 2344*35238bceSAndroid Build Coastguard Worker "" 2345*35238bceSAndroid Build Coastguard Worker end 2346*35238bceSAndroid Build Coastguard Worker 2347*35238bceSAndroid Build Coastguard Worker case local_in_bool 2348*35238bceSAndroid Build Coastguard Worker version 300 es 2349*35238bceSAndroid Build Coastguard Worker values 2350*35238bceSAndroid Build Coastguard Worker { 2351*35238bceSAndroid Build Coastguard Worker input bvec4 in0 = [ bvec4(true, true, false, true) | bvec4(false, false, false, false) ]; 2352*35238bceSAndroid Build Coastguard Worker output bvec4 out0 = [ bvec4(false, false, true, false) | bvec4(true, true, true, true) ]; 2353*35238bceSAndroid Build Coastguard Worker } 2354*35238bceSAndroid Build Coastguard Worker 2355*35238bceSAndroid Build Coastguard Worker both "" 2356*35238bceSAndroid Build Coastguard Worker #version 300 es 2357*35238bceSAndroid Build Coastguard Worker precision mediump float; 2358*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 2359*35238bceSAndroid Build Coastguard Worker 2360*35238bceSAndroid Build Coastguard Worker bool func (in bool a[4]) 2361*35238bceSAndroid Build Coastguard Worker { 2362*35238bceSAndroid Build Coastguard Worker a[0] = false; 2363*35238bceSAndroid Build Coastguard Worker a[2] = true; 2364*35238bceSAndroid Build Coastguard Worker a[3] = !a[1]; 2365*35238bceSAndroid Build Coastguard Worker return a[0]; 2366*35238bceSAndroid Build Coastguard Worker } 2367*35238bceSAndroid Build Coastguard Worker 2368*35238bceSAndroid Build Coastguard Worker void main() 2369*35238bceSAndroid Build Coastguard Worker { 2370*35238bceSAndroid Build Coastguard Worker ${SETUP} 2371*35238bceSAndroid Build Coastguard Worker bool arr[4]; 2372*35238bceSAndroid Build Coastguard Worker arr[0] = !in0.x; 2373*35238bceSAndroid Build Coastguard Worker arr[1] = !in0.y; 2374*35238bceSAndroid Build Coastguard Worker arr[2] = !in0.z; 2375*35238bceSAndroid Build Coastguard Worker arr[3] = !in0.w; 2376*35238bceSAndroid Build Coastguard Worker func(arr); 2377*35238bceSAndroid Build Coastguard Worker out0 = bvec4(arr[0], arr[1], arr[2], arr[3]); 2378*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 2379*35238bceSAndroid Build Coastguard Worker } 2380*35238bceSAndroid Build Coastguard Worker "" 2381*35238bceSAndroid Build Coastguard Worker end 2382*35238bceSAndroid Build Coastguard Worker 2383*35238bceSAndroid Build Coastguard Worker case global_in_bool 2384*35238bceSAndroid Build Coastguard Worker version 300 es 2385*35238bceSAndroid Build Coastguard Worker values 2386*35238bceSAndroid Build Coastguard Worker { 2387*35238bceSAndroid Build Coastguard Worker input bvec4 in0 = [ bvec4(true, true, false, true) | bvec4(false, false, false, false) ]; 2388*35238bceSAndroid Build Coastguard Worker output bvec4 out0 = [ bvec4(false, false, true, false) | bvec4(true, true, true, true) ]; 2389*35238bceSAndroid Build Coastguard Worker } 2390*35238bceSAndroid Build Coastguard Worker 2391*35238bceSAndroid Build Coastguard Worker both "" 2392*35238bceSAndroid Build Coastguard Worker #version 300 es 2393*35238bceSAndroid Build Coastguard Worker precision mediump float; 2394*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 2395*35238bceSAndroid Build Coastguard Worker 2396*35238bceSAndroid Build Coastguard Worker bool func (in bool a[4]) 2397*35238bceSAndroid Build Coastguard Worker { 2398*35238bceSAndroid Build Coastguard Worker a[0] = false; 2399*35238bceSAndroid Build Coastguard Worker a[2] = true; 2400*35238bceSAndroid Build Coastguard Worker a[3] = !a[1]; 2401*35238bceSAndroid Build Coastguard Worker return a[0]; 2402*35238bceSAndroid Build Coastguard Worker } 2403*35238bceSAndroid Build Coastguard Worker 2404*35238bceSAndroid Build Coastguard Worker bool arr[4]; 2405*35238bceSAndroid Build Coastguard Worker 2406*35238bceSAndroid Build Coastguard Worker void main() 2407*35238bceSAndroid Build Coastguard Worker { 2408*35238bceSAndroid Build Coastguard Worker ${SETUP} 2409*35238bceSAndroid Build Coastguard Worker arr[0] = !in0.x; 2410*35238bceSAndroid Build Coastguard Worker arr[1] = !in0.y; 2411*35238bceSAndroid Build Coastguard Worker arr[2] = !in0.z; 2412*35238bceSAndroid Build Coastguard Worker arr[3] = !in0.w; 2413*35238bceSAndroid Build Coastguard Worker func(arr); 2414*35238bceSAndroid Build Coastguard Worker out0 = bvec4(arr[0], arr[1], arr[2], arr[3]); 2415*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 2416*35238bceSAndroid Build Coastguard Worker } 2417*35238bceSAndroid Build Coastguard Worker "" 2418*35238bceSAndroid Build Coastguard Worker end 2419*35238bceSAndroid Build Coastguard Worker 2420*35238bceSAndroid Build Coastguard Worker case test_helpers 2421*35238bceSAndroid Build Coastguard Worker version 300 es 2422*35238bceSAndroid Build Coastguard Worker desc "Check that helper functions are supported properly." 2423*35238bceSAndroid Build Coastguard Worker values 2424*35238bceSAndroid Build Coastguard Worker { 2425*35238bceSAndroid Build Coastguard Worker input vec4 in0 = [ vec4(0.0, 1.0, 2.0, -4.0) | vec4(-7.5, 12.125, -0.25, 16.0) ]; 2426*35238bceSAndroid Build Coastguard Worker output float out0 = [ 1.0 | 1.0 ]; 2427*35238bceSAndroid Build Coastguard Worker } 2428*35238bceSAndroid Build Coastguard Worker 2429*35238bceSAndroid Build Coastguard Worker both "" 2430*35238bceSAndroid Build Coastguard Worker #version 300 es 2431*35238bceSAndroid Build Coastguard Worker precision mediump float; 2432*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 2433*35238bceSAndroid Build Coastguard Worker 2434*35238bceSAndroid Build Coastguard Worker vec4 get (in float arr[4]); 2435*35238bceSAndroid Build Coastguard Worker void set (out float arr[4], vec4 val); 2436*35238bceSAndroid Build Coastguard Worker void negate (inout float arr[4]); 2437*35238bceSAndroid Build Coastguard Worker bool test (in float arr[4], vec4 ref); 2438*35238bceSAndroid Build Coastguard Worker bool isEqual (in float a[4], in float b[4]); 2439*35238bceSAndroid Build Coastguard Worker 2440*35238bceSAndroid Build Coastguard Worker void main() 2441*35238bceSAndroid Build Coastguard Worker { 2442*35238bceSAndroid Build Coastguard Worker float arr[4]; 2443*35238bceSAndroid Build Coastguard Worker set(arr, in0); 2444*35238bceSAndroid Build Coastguard Worker negate(arr); 2445*35238bceSAndroid Build Coastguard Worker out0 = float(test(arr, -in0)); 2446*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 2447*35238bceSAndroid Build Coastguard Worker } 2448*35238bceSAndroid Build Coastguard Worker 2449*35238bceSAndroid Build Coastguard Worker float absDiff (vec4 a, vec4 b) { vec4 d = abs(a - b); return max(max(d.x, d.y), max(d.z, d.w)); } 2450*35238bceSAndroid Build Coastguard Worker vec4 get (in float arr[4]) { return vec4(arr[0], arr[1], arr[2], arr[3]); } 2451*35238bceSAndroid Build Coastguard Worker void set (out float arr[4], vec4 val) { arr[0] = val.x; arr[1] = val.y; arr[2] = val.z; arr[3] = val.w; } 2452*35238bceSAndroid Build Coastguard Worker void negate (inout float arr[4]) { set(arr, -get(arr)); } 2453*35238bceSAndroid Build Coastguard Worker bool test (in float arr[4], vec4 ref) { return (absDiff(get(arr), ref) < 0.1); } 2454*35238bceSAndroid Build Coastguard Worker bool isEqual (in float a[4], in float b[4]) { return (absDiff(get(a), get(b)) < 0.1); } 2455*35238bceSAndroid Build Coastguard Worker "" 2456*35238bceSAndroid Build Coastguard Worker end 2457*35238bceSAndroid Build Coastguard Worker 2458*35238bceSAndroid Build Coastguard Worker case copy_local_in_on_call 2459*35238bceSAndroid Build Coastguard Worker version 300 es 2460*35238bceSAndroid Build Coastguard Worker desc "Check that local 'in' arguments are copied on call and don't alias." 2461*35238bceSAndroid Build Coastguard Worker values 2462*35238bceSAndroid Build Coastguard Worker { 2463*35238bceSAndroid Build Coastguard Worker input vec4 in0 = [ vec4(0.0, 1.0, 2.0, -4.0) | vec4(-7.5, 12.125, -0.25, 16.0) ]; 2464*35238bceSAndroid Build Coastguard Worker output vec4 out0 = [ vec4(0.0, -1.0, -2.0, 4.0) | vec4(7.5, -12.125, 0.25, -16.0) ]; 2465*35238bceSAndroid Build Coastguard Worker } 2466*35238bceSAndroid Build Coastguard Worker 2467*35238bceSAndroid Build Coastguard Worker both "" 2468*35238bceSAndroid Build Coastguard Worker #version 300 es 2469*35238bceSAndroid Build Coastguard Worker precision mediump float; 2470*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 2471*35238bceSAndroid Build Coastguard Worker 2472*35238bceSAndroid Build Coastguard Worker vec4 get (in float arr[4]); 2473*35238bceSAndroid Build Coastguard Worker void set (out float arr[4], vec4 val); 2474*35238bceSAndroid Build Coastguard Worker void negate (inout float arr[4]); 2475*35238bceSAndroid Build Coastguard Worker bool test (in float arr[4], vec4 ref); 2476*35238bceSAndroid Build Coastguard Worker bool isEqual (in float a[4], in float b[4]); 2477*35238bceSAndroid Build Coastguard Worker 2478*35238bceSAndroid Build Coastguard Worker float func (in float a[4], in float b[4]) 2479*35238bceSAndroid Build Coastguard Worker { 2480*35238bceSAndroid Build Coastguard Worker a[0] = 2.123; 2481*35238bceSAndroid Build Coastguard Worker a[2] = -4.123; 2482*35238bceSAndroid Build Coastguard Worker return isEqual(a, b) ? 1.0 : -1.0; 2483*35238bceSAndroid Build Coastguard Worker } 2484*35238bceSAndroid Build Coastguard Worker 2485*35238bceSAndroid Build Coastguard Worker void main() 2486*35238bceSAndroid Build Coastguard Worker { 2487*35238bceSAndroid Build Coastguard Worker float arr[4]; 2488*35238bceSAndroid Build Coastguard Worker set(arr, in0); 2489*35238bceSAndroid Build Coastguard Worker out0 = in0 * func(arr, arr); 2490*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 2491*35238bceSAndroid Build Coastguard Worker } 2492*35238bceSAndroid Build Coastguard Worker 2493*35238bceSAndroid Build Coastguard Worker float absDiff (vec4 a, vec4 b) { vec4 d = abs(a - b); return max(max(d.x, d.y), max(d.z, d.w)); } 2494*35238bceSAndroid Build Coastguard Worker vec4 get (in float arr[4]) { return vec4(arr[0], arr[1], arr[2], arr[3]); } 2495*35238bceSAndroid Build Coastguard Worker void set (out float arr[4], vec4 val) { arr[0] = val.x; arr[1] = val.y; arr[2] = val.z; arr[3] = val.w; } 2496*35238bceSAndroid Build Coastguard Worker void negate (inout float arr[4]) { set(arr, -get(arr)); } 2497*35238bceSAndroid Build Coastguard Worker bool test (in float arr[4], vec4 ref) { return (absDiff(get(arr), ref) < 0.1); } 2498*35238bceSAndroid Build Coastguard Worker bool isEqual (in float a[4], in float b[4]) { return (absDiff(get(a), get(b)) < 0.1); } 2499*35238bceSAndroid Build Coastguard Worker "" 2500*35238bceSAndroid Build Coastguard Worker end 2501*35238bceSAndroid Build Coastguard Worker 2502*35238bceSAndroid Build Coastguard Worker case copy_global_in_on_call 2503*35238bceSAndroid Build Coastguard Worker version 300 es 2504*35238bceSAndroid Build Coastguard Worker desc "Check that global 'in' arguments are copied on call and don't alias." 2505*35238bceSAndroid Build Coastguard Worker values 2506*35238bceSAndroid Build Coastguard Worker { 2507*35238bceSAndroid Build Coastguard Worker input vec4 in0 = [ vec4(0.0, 1.0, 2.0, -4.0) | vec4(-7.5, 12.125, -0.25, 16.0) ]; 2508*35238bceSAndroid Build Coastguard Worker output vec4 out0 = [ vec4(0.0, -1.0, -2.0, 4.0) | vec4(7.5, -12.125, 0.25, -16.0) ]; 2509*35238bceSAndroid Build Coastguard Worker } 2510*35238bceSAndroid Build Coastguard Worker 2511*35238bceSAndroid Build Coastguard Worker both "" 2512*35238bceSAndroid Build Coastguard Worker #version 300 es 2513*35238bceSAndroid Build Coastguard Worker precision mediump float; 2514*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 2515*35238bceSAndroid Build Coastguard Worker 2516*35238bceSAndroid Build Coastguard Worker vec4 get (in float arr[4]); 2517*35238bceSAndroid Build Coastguard Worker void set (out float arr[4], vec4 val); 2518*35238bceSAndroid Build Coastguard Worker void negate (inout float arr[4]); 2519*35238bceSAndroid Build Coastguard Worker bool test (in float arr[4], vec4 ref); 2520*35238bceSAndroid Build Coastguard Worker bool isEqual (in float a[4], in float b[4]); 2521*35238bceSAndroid Build Coastguard Worker 2522*35238bceSAndroid Build Coastguard Worker float func (in float a[4], in float b[4]) 2523*35238bceSAndroid Build Coastguard Worker { 2524*35238bceSAndroid Build Coastguard Worker a[0] = 2.123; 2525*35238bceSAndroid Build Coastguard Worker a[2] = -4.123; 2526*35238bceSAndroid Build Coastguard Worker return isEqual(a, b) ? 1.0 : -1.0; 2527*35238bceSAndroid Build Coastguard Worker } 2528*35238bceSAndroid Build Coastguard Worker 2529*35238bceSAndroid Build Coastguard Worker float arr[4]; 2530*35238bceSAndroid Build Coastguard Worker 2531*35238bceSAndroid Build Coastguard Worker void main() 2532*35238bceSAndroid Build Coastguard Worker { 2533*35238bceSAndroid Build Coastguard Worker set(arr, in0); 2534*35238bceSAndroid Build Coastguard Worker out0 = in0 * func(arr, arr); 2535*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 2536*35238bceSAndroid Build Coastguard Worker } 2537*35238bceSAndroid Build Coastguard Worker 2538*35238bceSAndroid Build Coastguard Worker float absDiff (vec4 a, vec4 b) { vec4 d = abs(a - b); return max(max(d.x, d.y), max(d.z, d.w)); } 2539*35238bceSAndroid Build Coastguard Worker vec4 get (in float arr[4]) { return vec4(arr[0], arr[1], arr[2], arr[3]); } 2540*35238bceSAndroid Build Coastguard Worker void set (out float arr[4], vec4 val) { arr[0] = val.x; arr[1] = val.y; arr[2] = val.z; arr[3] = val.w; } 2541*35238bceSAndroid Build Coastguard Worker void negate (inout float arr[4]) { set(arr, -get(arr)); } 2542*35238bceSAndroid Build Coastguard Worker bool test (in float arr[4], vec4 ref) { return (absDiff(get(arr), ref) < 0.1); } 2543*35238bceSAndroid Build Coastguard Worker bool isEqual (in float a[4], in float b[4]) { return (absDiff(get(a), get(b)) < 0.1); } 2544*35238bceSAndroid Build Coastguard Worker "" 2545*35238bceSAndroid Build Coastguard Worker end 2546*35238bceSAndroid Build Coastguard Worker 2547*35238bceSAndroid Build Coastguard Worker case copy_local_inout_on_call 2548*35238bceSAndroid Build Coastguard Worker version 300 es 2549*35238bceSAndroid Build Coastguard Worker desc "Check that local 'in' arguments are copied on call and don't alias." 2550*35238bceSAndroid Build Coastguard Worker values 2551*35238bceSAndroid Build Coastguard Worker { 2552*35238bceSAndroid Build Coastguard Worker input vec4 in0 = [ vec4(0.0, 1.0, 2.0, -4.0) | vec4(-7.5, 12.125, -0.25, 16.0) ]; 2553*35238bceSAndroid Build Coastguard Worker output vec4 out0 = [ vec4(0.0, -1.0, -2.0, 4.0) | vec4(7.5, -12.125, 0.25, -16.0) ]; 2554*35238bceSAndroid Build Coastguard Worker } 2555*35238bceSAndroid Build Coastguard Worker 2556*35238bceSAndroid Build Coastguard Worker both "" 2557*35238bceSAndroid Build Coastguard Worker #version 300 es 2558*35238bceSAndroid Build Coastguard Worker precision mediump float; 2559*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 2560*35238bceSAndroid Build Coastguard Worker 2561*35238bceSAndroid Build Coastguard Worker vec4 get (in float arr[4]); 2562*35238bceSAndroid Build Coastguard Worker void set (out float arr[4], vec4 val); 2563*35238bceSAndroid Build Coastguard Worker void negate (inout float arr[4]); 2564*35238bceSAndroid Build Coastguard Worker bool test (in float arr[4], vec4 ref); 2565*35238bceSAndroid Build Coastguard Worker bool isEqual (in float a[4], in float b[4]); 2566*35238bceSAndroid Build Coastguard Worker 2567*35238bceSAndroid Build Coastguard Worker float func (inout float a[4], inout float b[4]) 2568*35238bceSAndroid Build Coastguard Worker { 2569*35238bceSAndroid Build Coastguard Worker negate(a); 2570*35238bceSAndroid Build Coastguard Worker return isEqual(a, b) ? 1.0 : -1.0; 2571*35238bceSAndroid Build Coastguard Worker } 2572*35238bceSAndroid Build Coastguard Worker 2573*35238bceSAndroid Build Coastguard Worker void main() 2574*35238bceSAndroid Build Coastguard Worker { 2575*35238bceSAndroid Build Coastguard Worker float arr[4]; 2576*35238bceSAndroid Build Coastguard Worker set(arr, in0); 2577*35238bceSAndroid Build Coastguard Worker float m = func(arr, arr); // returns -1.0 2578*35238bceSAndroid Build Coastguard Worker float n = float(test(arr, in0) || test(arr, -in0)); 2579*35238bceSAndroid Build Coastguard Worker out0 = in0 * m * n; 2580*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 2581*35238bceSAndroid Build Coastguard Worker } 2582*35238bceSAndroid Build Coastguard Worker 2583*35238bceSAndroid Build Coastguard Worker float absDiff (vec4 a, vec4 b) { vec4 d = abs(a - b); return max(max(d.x, d.y), max(d.z, d.w)); } 2584*35238bceSAndroid Build Coastguard Worker vec4 get (in float arr[4]) { return vec4(arr[0], arr[1], arr[2], arr[3]); } 2585*35238bceSAndroid Build Coastguard Worker void set (out float arr[4], vec4 val) { arr[0] = val.x; arr[1] = val.y; arr[2] = val.z; arr[3] = val.w; } 2586*35238bceSAndroid Build Coastguard Worker void negate (inout float arr[4]) { set(arr, -get(arr)); } 2587*35238bceSAndroid Build Coastguard Worker bool test (in float arr[4], vec4 ref) { return (absDiff(get(arr), ref) < 0.1); } 2588*35238bceSAndroid Build Coastguard Worker bool isEqual (in float a[4], in float b[4]) { return (absDiff(get(a), get(b)) < 0.1); } 2589*35238bceSAndroid Build Coastguard Worker "" 2590*35238bceSAndroid Build Coastguard Worker end 2591*35238bceSAndroid Build Coastguard Worker 2592*35238bceSAndroid Build Coastguard Worker case copy_global_inout_on_call 2593*35238bceSAndroid Build Coastguard Worker version 300 es 2594*35238bceSAndroid Build Coastguard Worker desc "Check that global 'in' arguments are copied on call and don't alias." 2595*35238bceSAndroid Build Coastguard Worker values 2596*35238bceSAndroid Build Coastguard Worker { 2597*35238bceSAndroid Build Coastguard Worker input vec4 in0 = [ vec4(0.0, 1.0, 2.0, -4.0) | vec4(-7.5, 12.125, -0.25, 16.0) ]; 2598*35238bceSAndroid Build Coastguard Worker output vec4 out0 = [ vec4(0.0, -1.0, -2.0, 4.0) | vec4(7.5, -12.125, 0.25, -16.0) ]; 2599*35238bceSAndroid Build Coastguard Worker } 2600*35238bceSAndroid Build Coastguard Worker 2601*35238bceSAndroid Build Coastguard Worker both "" 2602*35238bceSAndroid Build Coastguard Worker #version 300 es 2603*35238bceSAndroid Build Coastguard Worker precision mediump float; 2604*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 2605*35238bceSAndroid Build Coastguard Worker 2606*35238bceSAndroid Build Coastguard Worker vec4 get (in float arr[4]); 2607*35238bceSAndroid Build Coastguard Worker void set (out float arr[4], vec4 val); 2608*35238bceSAndroid Build Coastguard Worker void negate (inout float arr[4]); 2609*35238bceSAndroid Build Coastguard Worker bool test (in float arr[4], vec4 ref); 2610*35238bceSAndroid Build Coastguard Worker bool isEqual (in float a[4], in float b[4]); 2611*35238bceSAndroid Build Coastguard Worker 2612*35238bceSAndroid Build Coastguard Worker float func (in float a[4], in float b[4]) 2613*35238bceSAndroid Build Coastguard Worker { 2614*35238bceSAndroid Build Coastguard Worker negate(a); 2615*35238bceSAndroid Build Coastguard Worker return isEqual(a, b) ? 1.0 : -1.0; 2616*35238bceSAndroid Build Coastguard Worker } 2617*35238bceSAndroid Build Coastguard Worker 2618*35238bceSAndroid Build Coastguard Worker float arr[4]; 2619*35238bceSAndroid Build Coastguard Worker 2620*35238bceSAndroid Build Coastguard Worker void main() 2621*35238bceSAndroid Build Coastguard Worker { 2622*35238bceSAndroid Build Coastguard Worker set(arr, in0); 2623*35238bceSAndroid Build Coastguard Worker float m = func(arr, arr); // returns -1.0 2624*35238bceSAndroid Build Coastguard Worker float n = float(test(arr, in0) || test(arr, -in0)); 2625*35238bceSAndroid Build Coastguard Worker out0 = in0 * m * n; 2626*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 2627*35238bceSAndroid Build Coastguard Worker } 2628*35238bceSAndroid Build Coastguard Worker 2629*35238bceSAndroid Build Coastguard Worker float absDiff (vec4 a, vec4 b) { vec4 d = abs(a - b); return max(max(d.x, d.y), max(d.z, d.w)); } 2630*35238bceSAndroid Build Coastguard Worker vec4 get (in float arr[4]) { return vec4(arr[0], arr[1], arr[2], arr[3]); } 2631*35238bceSAndroid Build Coastguard Worker void set (out float arr[4], vec4 val) { arr[0] = val.x; arr[1] = val.y; arr[2] = val.z; arr[3] = val.w; } 2632*35238bceSAndroid Build Coastguard Worker void negate (inout float arr[4]) { set(arr, -get(arr)); } 2633*35238bceSAndroid Build Coastguard Worker bool test (in float arr[4], vec4 ref) { return (absDiff(get(arr), ref) < 0.1); } 2634*35238bceSAndroid Build Coastguard Worker bool isEqual (in float a[4], in float b[4]) { return (absDiff(get(a), get(b)) < 0.1); } 2635*35238bceSAndroid Build Coastguard Worker "" 2636*35238bceSAndroid Build Coastguard Worker end 2637*35238bceSAndroid Build Coastguard Worker 2638*35238bceSAndroid Build Coastguard Worker# vec4 get (in float arr[4]); 2639*35238bceSAndroid Build Coastguard Worker# void set (out float arr[4], vec4 val); 2640*35238bceSAndroid Build Coastguard Worker# void negate (inout float arr[4]); 2641*35238bceSAndroid Build Coastguard Worker# bool test (in float arr[4], vec4 ref); 2642*35238bceSAndroid Build Coastguard Worker# bool isEqual (in float a[4], in float b[4]); 2643*35238bceSAndroid Build Coastguard Worker 2644*35238bceSAndroid Build Coastguard Worker# float absDiff (vec4 a, vec4 b) { vec4 d = abs(a - b); return max(max(d.x, d.y), max(d.z, d.w)); } 2645*35238bceSAndroid Build Coastguard Worker# vec4 get (in float arr[4]) { return vec4(arr[0], arr[1], arr[2], arr[3]); } 2646*35238bceSAndroid Build Coastguard Worker# void set (out float arr[4], vec4 val) { arr[0] = val.x; arr[1] = val.y; arr[2] = val.z; arr[3] = val.w; } 2647*35238bceSAndroid Build Coastguard Worker# void negate (inout float arr[4]) { set(arr, -get(arr)); } 2648*35238bceSAndroid Build Coastguard Worker# bool test (in float arr[4], vec4 ref) { return (absDiff(get(arr), ref) < 0.1); } 2649*35238bceSAndroid Build Coastguard Worker# bool isEqual (in float a[4], in float b[4]) { return (absDiff(get(a), get(b)) < 0.1); } 2650*35238bceSAndroid Build Coastguard Worker 2651*35238bceSAndroid Build Coastguard Workerend # array_arguments 2652*35238bceSAndroid Build Coastguard Worker 2653*35238bceSAndroid Build Coastguard Worker#group qualifiers "Function Parameter Qualifiers" 2654*35238bceSAndroid Build Coastguard Worker# 2655*35238bceSAndroid Build Coastguard Worker#end # qualifiers 2656*35238bceSAndroid Build Coastguard Worker 2657*35238bceSAndroid Build Coastguard Workergroup control_flow "Control Flow In Functions" 2658*35238bceSAndroid Build Coastguard Worker 2659*35238bceSAndroid Build Coastguard Worker case simple_return 2660*35238bceSAndroid Build Coastguard Worker version 300 es 2661*35238bceSAndroid Build Coastguard Worker values 2662*35238bceSAndroid Build Coastguard Worker { 2663*35238bceSAndroid Build Coastguard Worker input float in0 = [ -0.5 | 1.5 ]; 2664*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.5 | -1.5 ]; 2665*35238bceSAndroid Build Coastguard Worker } 2666*35238bceSAndroid Build Coastguard Worker 2667*35238bceSAndroid Build Coastguard Worker both "" 2668*35238bceSAndroid Build Coastguard Worker #version 300 es 2669*35238bceSAndroid Build Coastguard Worker precision mediump float; 2670*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 2671*35238bceSAndroid Build Coastguard Worker 2672*35238bceSAndroid Build Coastguard Worker float func (float a) 2673*35238bceSAndroid Build Coastguard Worker { 2674*35238bceSAndroid Build Coastguard Worker return -a; 2675*35238bceSAndroid Build Coastguard Worker a = a * -1.0; 2676*35238bceSAndroid Build Coastguard Worker return 1.0; 2677*35238bceSAndroid Build Coastguard Worker } 2678*35238bceSAndroid Build Coastguard Worker 2679*35238bceSAndroid Build Coastguard Worker void main() 2680*35238bceSAndroid Build Coastguard Worker { 2681*35238bceSAndroid Build Coastguard Worker ${SETUP} 2682*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 2683*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 2684*35238bceSAndroid Build Coastguard Worker } 2685*35238bceSAndroid Build Coastguard Worker "" 2686*35238bceSAndroid Build Coastguard Worker end 2687*35238bceSAndroid Build Coastguard Worker 2688*35238bceSAndroid Build Coastguard Worker case return_in_if 2689*35238bceSAndroid Build Coastguard Worker version 300 es 2690*35238bceSAndroid Build Coastguard Worker values 2691*35238bceSAndroid Build Coastguard Worker { 2692*35238bceSAndroid Build Coastguard Worker input float in0 = [ -0.5 | 1.5 ]; 2693*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.5 | -1.5 ]; 2694*35238bceSAndroid Build Coastguard Worker } 2695*35238bceSAndroid Build Coastguard Worker 2696*35238bceSAndroid Build Coastguard Worker both "" 2697*35238bceSAndroid Build Coastguard Worker #version 300 es 2698*35238bceSAndroid Build Coastguard Worker precision mediump float; 2699*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 2700*35238bceSAndroid Build Coastguard Worker 2701*35238bceSAndroid Build Coastguard Worker float func (float a) 2702*35238bceSAndroid Build Coastguard Worker { 2703*35238bceSAndroid Build Coastguard Worker if (a != 0.0) 2704*35238bceSAndroid Build Coastguard Worker return -a; 2705*35238bceSAndroid Build Coastguard Worker return 1.0; 2706*35238bceSAndroid Build Coastguard Worker } 2707*35238bceSAndroid Build Coastguard Worker 2708*35238bceSAndroid Build Coastguard Worker void main() 2709*35238bceSAndroid Build Coastguard Worker { 2710*35238bceSAndroid Build Coastguard Worker ${SETUP} 2711*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 2712*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 2713*35238bceSAndroid Build Coastguard Worker } 2714*35238bceSAndroid Build Coastguard Worker "" 2715*35238bceSAndroid Build Coastguard Worker end 2716*35238bceSAndroid Build Coastguard Worker 2717*35238bceSAndroid Build Coastguard Worker case return_in_else 2718*35238bceSAndroid Build Coastguard Worker version 300 es 2719*35238bceSAndroid Build Coastguard Worker values 2720*35238bceSAndroid Build Coastguard Worker { 2721*35238bceSAndroid Build Coastguard Worker input float in0 = [ -0.5 | 1.5 ]; 2722*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.5 | -1.5 ]; 2723*35238bceSAndroid Build Coastguard Worker } 2724*35238bceSAndroid Build Coastguard Worker 2725*35238bceSAndroid Build Coastguard Worker both "" 2726*35238bceSAndroid Build Coastguard Worker #version 300 es 2727*35238bceSAndroid Build Coastguard Worker precision mediump float; 2728*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 2729*35238bceSAndroid Build Coastguard Worker 2730*35238bceSAndroid Build Coastguard Worker float func (float a) 2731*35238bceSAndroid Build Coastguard Worker { 2732*35238bceSAndroid Build Coastguard Worker if (a == 0.0) 2733*35238bceSAndroid Build Coastguard Worker return 1.0; 2734*35238bceSAndroid Build Coastguard Worker else 2735*35238bceSAndroid Build Coastguard Worker return -a; 2736*35238bceSAndroid Build Coastguard Worker return 1.0; 2737*35238bceSAndroid Build Coastguard Worker } 2738*35238bceSAndroid Build Coastguard Worker 2739*35238bceSAndroid Build Coastguard Worker void main() 2740*35238bceSAndroid Build Coastguard Worker { 2741*35238bceSAndroid Build Coastguard Worker ${SETUP} 2742*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 2743*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 2744*35238bceSAndroid Build Coastguard Worker } 2745*35238bceSAndroid Build Coastguard Worker "" 2746*35238bceSAndroid Build Coastguard Worker end 2747*35238bceSAndroid Build Coastguard Worker 2748*35238bceSAndroid Build Coastguard Worker case return_in_loop 2749*35238bceSAndroid Build Coastguard Worker version 300 es 2750*35238bceSAndroid Build Coastguard Worker values 2751*35238bceSAndroid Build Coastguard Worker { 2752*35238bceSAndroid Build Coastguard Worker input float in0 = [ -0.5 | 1.5 ]; 2753*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.5 | -1.5 ]; 2754*35238bceSAndroid Build Coastguard Worker } 2755*35238bceSAndroid Build Coastguard Worker 2756*35238bceSAndroid Build Coastguard Worker both "" 2757*35238bceSAndroid Build Coastguard Worker #version 300 es 2758*35238bceSAndroid Build Coastguard Worker precision mediump float; 2759*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 2760*35238bceSAndroid Build Coastguard Worker 2761*35238bceSAndroid Build Coastguard Worker float func (float a) 2762*35238bceSAndroid Build Coastguard Worker { 2763*35238bceSAndroid Build Coastguard Worker while (a < 100.0) 2764*35238bceSAndroid Build Coastguard Worker return -a; 2765*35238bceSAndroid Build Coastguard Worker return 1.0; 2766*35238bceSAndroid Build Coastguard Worker } 2767*35238bceSAndroid Build Coastguard Worker 2768*35238bceSAndroid Build Coastguard Worker void main() 2769*35238bceSAndroid Build Coastguard Worker { 2770*35238bceSAndroid Build Coastguard Worker ${SETUP} 2771*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 2772*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 2773*35238bceSAndroid Build Coastguard Worker } 2774*35238bceSAndroid Build Coastguard Worker "" 2775*35238bceSAndroid Build Coastguard Worker end 2776*35238bceSAndroid Build Coastguard Worker 2777*35238bceSAndroid Build Coastguard Worker case return_in_loop_if 2778*35238bceSAndroid Build Coastguard Worker version 300 es 2779*35238bceSAndroid Build Coastguard Worker values 2780*35238bceSAndroid Build Coastguard Worker { 2781*35238bceSAndroid Build Coastguard Worker input float in0 = [ -0.5 | 1.5 ]; 2782*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.5 | -1.5 ]; 2783*35238bceSAndroid Build Coastguard Worker } 2784*35238bceSAndroid Build Coastguard Worker 2785*35238bceSAndroid Build Coastguard Worker both "" 2786*35238bceSAndroid Build Coastguard Worker #version 300 es 2787*35238bceSAndroid Build Coastguard Worker precision mediump float; 2788*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 2789*35238bceSAndroid Build Coastguard Worker 2790*35238bceSAndroid Build Coastguard Worker float func (float a) 2791*35238bceSAndroid Build Coastguard Worker { 2792*35238bceSAndroid Build Coastguard Worker while (a < 100.0) 2793*35238bceSAndroid Build Coastguard Worker { 2794*35238bceSAndroid Build Coastguard Worker a = -a; 2795*35238bceSAndroid Build Coastguard Worker if (a != 0.0) 2796*35238bceSAndroid Build Coastguard Worker return a; 2797*35238bceSAndroid Build Coastguard Worker else 2798*35238bceSAndroid Build Coastguard Worker return -1.0; 2799*35238bceSAndroid Build Coastguard Worker } 2800*35238bceSAndroid Build Coastguard Worker return 1.0; 2801*35238bceSAndroid Build Coastguard Worker } 2802*35238bceSAndroid Build Coastguard Worker 2803*35238bceSAndroid Build Coastguard Worker void main() 2804*35238bceSAndroid Build Coastguard Worker { 2805*35238bceSAndroid Build Coastguard Worker ${SETUP} 2806*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 2807*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 2808*35238bceSAndroid Build Coastguard Worker } 2809*35238bceSAndroid Build Coastguard Worker "" 2810*35238bceSAndroid Build Coastguard Worker end 2811*35238bceSAndroid Build Coastguard Worker 2812*35238bceSAndroid Build Coastguard Worker case return_after_loop 2813*35238bceSAndroid Build Coastguard Worker version 300 es 2814*35238bceSAndroid Build Coastguard Worker values 2815*35238bceSAndroid Build Coastguard Worker { 2816*35238bceSAndroid Build Coastguard Worker input float in0 = [ -0.5 | 1.5 ]; 2817*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.5 | -1.5 ]; 2818*35238bceSAndroid Build Coastguard Worker } 2819*35238bceSAndroid Build Coastguard Worker 2820*35238bceSAndroid Build Coastguard Worker both "" 2821*35238bceSAndroid Build Coastguard Worker #version 300 es 2822*35238bceSAndroid Build Coastguard Worker precision mediump float; 2823*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 2824*35238bceSAndroid Build Coastguard Worker 2825*35238bceSAndroid Build Coastguard Worker float func (float a) 2826*35238bceSAndroid Build Coastguard Worker { 2827*35238bceSAndroid Build Coastguard Worker for (int i = 0; i < 5; i++) 2828*35238bceSAndroid Build Coastguard Worker a = -a; 2829*35238bceSAndroid Build Coastguard Worker return a; 2830*35238bceSAndroid Build Coastguard Worker } 2831*35238bceSAndroid Build Coastguard Worker 2832*35238bceSAndroid Build Coastguard Worker void main() 2833*35238bceSAndroid Build Coastguard Worker { 2834*35238bceSAndroid Build Coastguard Worker ${SETUP} 2835*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 2836*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 2837*35238bceSAndroid Build Coastguard Worker } 2838*35238bceSAndroid Build Coastguard Worker "" 2839*35238bceSAndroid Build Coastguard Worker end 2840*35238bceSAndroid Build Coastguard Worker 2841*35238bceSAndroid Build Coastguard Worker case return_after_break 2842*35238bceSAndroid Build Coastguard Worker version 300 es 2843*35238bceSAndroid Build Coastguard Worker values 2844*35238bceSAndroid Build Coastguard Worker { 2845*35238bceSAndroid Build Coastguard Worker input float in0 = [ -0.5 | 1.5 ]; 2846*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.5 | -1.5 ]; 2847*35238bceSAndroid Build Coastguard Worker } 2848*35238bceSAndroid Build Coastguard Worker 2849*35238bceSAndroid Build Coastguard Worker both "" 2850*35238bceSAndroid Build Coastguard Worker #version 300 es 2851*35238bceSAndroid Build Coastguard Worker precision mediump float; 2852*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 2853*35238bceSAndroid Build Coastguard Worker 2854*35238bceSAndroid Build Coastguard Worker float func (float a) 2855*35238bceSAndroid Build Coastguard Worker { 2856*35238bceSAndroid Build Coastguard Worker for (int i = 0; i < 6; i++) 2857*35238bceSAndroid Build Coastguard Worker { 2858*35238bceSAndroid Build Coastguard Worker a = -a; 2859*35238bceSAndroid Build Coastguard Worker if (i == 4) 2860*35238bceSAndroid Build Coastguard Worker break; 2861*35238bceSAndroid Build Coastguard Worker } 2862*35238bceSAndroid Build Coastguard Worker return a; 2863*35238bceSAndroid Build Coastguard Worker } 2864*35238bceSAndroid Build Coastguard Worker 2865*35238bceSAndroid Build Coastguard Worker void main() 2866*35238bceSAndroid Build Coastguard Worker { 2867*35238bceSAndroid Build Coastguard Worker ${SETUP} 2868*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 2869*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 2870*35238bceSAndroid Build Coastguard Worker } 2871*35238bceSAndroid Build Coastguard Worker "" 2872*35238bceSAndroid Build Coastguard Worker end 2873*35238bceSAndroid Build Coastguard Worker 2874*35238bceSAndroid Build Coastguard Worker case return_after_continue 2875*35238bceSAndroid Build Coastguard Worker version 300 es 2876*35238bceSAndroid Build Coastguard Worker values 2877*35238bceSAndroid Build Coastguard Worker { 2878*35238bceSAndroid Build Coastguard Worker input float in0 = [ -0.5 | 1.5 ]; 2879*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.5 | -1.5 ]; 2880*35238bceSAndroid Build Coastguard Worker } 2881*35238bceSAndroid Build Coastguard Worker 2882*35238bceSAndroid Build Coastguard Worker both "" 2883*35238bceSAndroid Build Coastguard Worker #version 300 es 2884*35238bceSAndroid Build Coastguard Worker precision mediump float; 2885*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 2886*35238bceSAndroid Build Coastguard Worker 2887*35238bceSAndroid Build Coastguard Worker float func (float a) 2888*35238bceSAndroid Build Coastguard Worker { 2889*35238bceSAndroid Build Coastguard Worker for (int i = 0; i < 6; i++) 2890*35238bceSAndroid Build Coastguard Worker { 2891*35238bceSAndroid Build Coastguard Worker if (i == 4) 2892*35238bceSAndroid Build Coastguard Worker continue; 2893*35238bceSAndroid Build Coastguard Worker a = -a; 2894*35238bceSAndroid Build Coastguard Worker } 2895*35238bceSAndroid Build Coastguard Worker return a; 2896*35238bceSAndroid Build Coastguard Worker } 2897*35238bceSAndroid Build Coastguard Worker 2898*35238bceSAndroid Build Coastguard Worker void main() 2899*35238bceSAndroid Build Coastguard Worker { 2900*35238bceSAndroid Build Coastguard Worker ${SETUP} 2901*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 2902*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 2903*35238bceSAndroid Build Coastguard Worker } 2904*35238bceSAndroid Build Coastguard Worker "" 2905*35238bceSAndroid Build Coastguard Worker end 2906*35238bceSAndroid Build Coastguard Worker 2907*35238bceSAndroid Build Coastguard Worker case return_in_nested_loop 2908*35238bceSAndroid Build Coastguard Worker version 300 es 2909*35238bceSAndroid Build Coastguard Worker values 2910*35238bceSAndroid Build Coastguard Worker { 2911*35238bceSAndroid Build Coastguard Worker input float in0 = [ -0.5 | 1.5 ]; 2912*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.5 | -1.5 ]; 2913*35238bceSAndroid Build Coastguard Worker } 2914*35238bceSAndroid Build Coastguard Worker 2915*35238bceSAndroid Build Coastguard Worker both "" 2916*35238bceSAndroid Build Coastguard Worker #version 300 es 2917*35238bceSAndroid Build Coastguard Worker precision mediump float; 2918*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 2919*35238bceSAndroid Build Coastguard Worker 2920*35238bceSAndroid Build Coastguard Worker float func (float a) 2921*35238bceSAndroid Build Coastguard Worker { 2922*35238bceSAndroid Build Coastguard Worker for (int i = 0; i < 6; i++) 2923*35238bceSAndroid Build Coastguard Worker { 2924*35238bceSAndroid Build Coastguard Worker a = -a; 2925*35238bceSAndroid Build Coastguard Worker for (int j = 0; j < 4; j++) 2926*35238bceSAndroid Build Coastguard Worker { 2927*35238bceSAndroid Build Coastguard Worker a = -a; 2928*35238bceSAndroid Build Coastguard Worker if (i == 1) 2929*35238bceSAndroid Build Coastguard Worker return a; 2930*35238bceSAndroid Build Coastguard Worker } 2931*35238bceSAndroid Build Coastguard Worker if (i == 4) 2932*35238bceSAndroid Build Coastguard Worker return 1.0; 2933*35238bceSAndroid Build Coastguard Worker } 2934*35238bceSAndroid Build Coastguard Worker return 1.0; 2935*35238bceSAndroid Build Coastguard Worker } 2936*35238bceSAndroid Build Coastguard Worker 2937*35238bceSAndroid Build Coastguard Worker void main() 2938*35238bceSAndroid Build Coastguard Worker { 2939*35238bceSAndroid Build Coastguard Worker ${SETUP} 2940*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 2941*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 2942*35238bceSAndroid Build Coastguard Worker } 2943*35238bceSAndroid Build Coastguard Worker "" 2944*35238bceSAndroid Build Coastguard Worker end 2945*35238bceSAndroid Build Coastguard Worker 2946*35238bceSAndroid Build Coastguard Worker case return_after_loop_sequence 2947*35238bceSAndroid Build Coastguard Worker version 300 es 2948*35238bceSAndroid Build Coastguard Worker values 2949*35238bceSAndroid Build Coastguard Worker { 2950*35238bceSAndroid Build Coastguard Worker input float in0 = [ -0.5 | 1.5 ]; 2951*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.5 | -1.5 ]; 2952*35238bceSAndroid Build Coastguard Worker } 2953*35238bceSAndroid Build Coastguard Worker 2954*35238bceSAndroid Build Coastguard Worker both "" 2955*35238bceSAndroid Build Coastguard Worker #version 300 es 2956*35238bceSAndroid Build Coastguard Worker precision mediump float; 2957*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 2958*35238bceSAndroid Build Coastguard Worker 2959*35238bceSAndroid Build Coastguard Worker float func (float a) 2960*35238bceSAndroid Build Coastguard Worker { 2961*35238bceSAndroid Build Coastguard Worker int i; 2962*35238bceSAndroid Build Coastguard Worker for (i = 0; i < 6; i++) // negate a 2963*35238bceSAndroid Build Coastguard Worker { 2964*35238bceSAndroid Build Coastguard Worker a = -a; 2965*35238bceSAndroid Build Coastguard Worker if (i == 4) 2966*35238bceSAndroid Build Coastguard Worker a = -a; 2967*35238bceSAndroid Build Coastguard Worker } 2968*35238bceSAndroid Build Coastguard Worker 2969*35238bceSAndroid Build Coastguard Worker for (; i < 10; i++) // keep a 2970*35238bceSAndroid Build Coastguard Worker { 2971*35238bceSAndroid Build Coastguard Worker if (i == 8) 2972*35238bceSAndroid Build Coastguard Worker continue; 2973*35238bceSAndroid Build Coastguard Worker else if (i == 9) 2974*35238bceSAndroid Build Coastguard Worker break; 2975*35238bceSAndroid Build Coastguard Worker a = -a; 2976*35238bceSAndroid Build Coastguard Worker } 2977*35238bceSAndroid Build Coastguard Worker 2978*35238bceSAndroid Build Coastguard Worker return a; 2979*35238bceSAndroid Build Coastguard Worker } 2980*35238bceSAndroid Build Coastguard Worker 2981*35238bceSAndroid Build Coastguard Worker void main() 2982*35238bceSAndroid Build Coastguard Worker { 2983*35238bceSAndroid Build Coastguard Worker ${SETUP} 2984*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 2985*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 2986*35238bceSAndroid Build Coastguard Worker } 2987*35238bceSAndroid Build Coastguard Worker "" 2988*35238bceSAndroid Build Coastguard Worker end 2989*35238bceSAndroid Build Coastguard Worker 2990*35238bceSAndroid Build Coastguard Worker case mixed_return_break_continue 2991*35238bceSAndroid Build Coastguard Worker version 300 es 2992*35238bceSAndroid Build Coastguard Worker values 2993*35238bceSAndroid Build Coastguard Worker { 2994*35238bceSAndroid Build Coastguard Worker input float in0 = [ -0.5 | 1.5 ]; 2995*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.5 | -1.5 ]; 2996*35238bceSAndroid Build Coastguard Worker } 2997*35238bceSAndroid Build Coastguard Worker 2998*35238bceSAndroid Build Coastguard Worker both "" 2999*35238bceSAndroid Build Coastguard Worker #version 300 es 3000*35238bceSAndroid Build Coastguard Worker precision mediump float; 3001*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3002*35238bceSAndroid Build Coastguard Worker 3003*35238bceSAndroid Build Coastguard Worker float func (float a) 3004*35238bceSAndroid Build Coastguard Worker { 3005*35238bceSAndroid Build Coastguard Worker int i; 3006*35238bceSAndroid Build Coastguard Worker for (i = 0; i < 6; i++) 3007*35238bceSAndroid Build Coastguard Worker { 3008*35238bceSAndroid Build Coastguard Worker if (i == 0) 3009*35238bceSAndroid Build Coastguard Worker continue; 3010*35238bceSAndroid Build Coastguard Worker else if (i == 1) 3011*35238bceSAndroid Build Coastguard Worker { 3012*35238bceSAndroid Build Coastguard Worker } 3013*35238bceSAndroid Build Coastguard Worker else if (i == 3) 3014*35238bceSAndroid Build Coastguard Worker break; 3015*35238bceSAndroid Build Coastguard Worker else 3016*35238bceSAndroid Build Coastguard Worker return a; 3017*35238bceSAndroid Build Coastguard Worker a = -a; 3018*35238bceSAndroid Build Coastguard Worker } 3019*35238bceSAndroid Build Coastguard Worker 3020*35238bceSAndroid Build Coastguard Worker return 1.0; 3021*35238bceSAndroid Build Coastguard Worker } 3022*35238bceSAndroid Build Coastguard Worker 3023*35238bceSAndroid Build Coastguard Worker void main() 3024*35238bceSAndroid Build Coastguard Worker { 3025*35238bceSAndroid Build Coastguard Worker ${SETUP} 3026*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 3027*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 3028*35238bceSAndroid Build Coastguard Worker } 3029*35238bceSAndroid Build Coastguard Worker "" 3030*35238bceSAndroid Build Coastguard Worker end 3031*35238bceSAndroid Build Coastguard Worker 3032*35238bceSAndroid Build Coastguard Workerend # control_flow 3033*35238bceSAndroid Build Coastguard Worker 3034*35238bceSAndroid Build Coastguard Workergroup misc "Miscellaneous" 3035*35238bceSAndroid Build Coastguard Worker 3036*35238bceSAndroid Build Coastguard Worker case multi_arg_float 3037*35238bceSAndroid Build Coastguard Worker version 300 es 3038*35238bceSAndroid Build Coastguard Worker values 3039*35238bceSAndroid Build Coastguard Worker { 3040*35238bceSAndroid Build Coastguard Worker input vec4 in0 = [ vec4(0.0, 1.0, -2.0, 0.5) | vec4(2.0, 2.5, 4.0, -7.0) ]; 3041*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.5 | -1.5 ]; # -sum(in0) 3042*35238bceSAndroid Build Coastguard Worker } 3043*35238bceSAndroid Build Coastguard Worker 3044*35238bceSAndroid Build Coastguard Worker both "" 3045*35238bceSAndroid Build Coastguard Worker #version 300 es 3046*35238bceSAndroid Build Coastguard Worker precision mediump float; 3047*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3048*35238bceSAndroid Build Coastguard Worker 3049*35238bceSAndroid Build Coastguard Worker float sum(vec4 v) { return (v.x + v.y + v.z + v.w); } 3050*35238bceSAndroid Build Coastguard Worker 3051*35238bceSAndroid Build Coastguard Worker float func (float a, vec3 b, vec2 c, vec2 d, vec4 e) 3052*35238bceSAndroid Build Coastguard Worker { 3053*35238bceSAndroid Build Coastguard Worker return -sum(vec4(a, b) + vec4(c, d)) + sum(e); 3054*35238bceSAndroid Build Coastguard Worker } 3055*35238bceSAndroid Build Coastguard Worker 3056*35238bceSAndroid Build Coastguard Worker void main() 3057*35238bceSAndroid Build Coastguard Worker { 3058*35238bceSAndroid Build Coastguard Worker ${SETUP} 3059*35238bceSAndroid Build Coastguard Worker out0 = func(in0.y, in0.xzw, in0.wz, in0.yx, in0); 3060*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 3061*35238bceSAndroid Build Coastguard Worker } 3062*35238bceSAndroid Build Coastguard Worker "" 3063*35238bceSAndroid Build Coastguard Worker end 3064*35238bceSAndroid Build Coastguard Worker 3065*35238bceSAndroid Build Coastguard Worker case multi_arg_int 3066*35238bceSAndroid Build Coastguard Worker version 300 es 3067*35238bceSAndroid Build Coastguard Worker values 3068*35238bceSAndroid Build Coastguard Worker { 3069*35238bceSAndroid Build Coastguard Worker input ivec4 in0 = [ ivec4(-1, 0, 2, 2) | ivec4(1, 4, -8, 2) ]; 3070*35238bceSAndroid Build Coastguard Worker output int out0 = [ -3 | 1 ]; 3071*35238bceSAndroid Build Coastguard Worker } 3072*35238bceSAndroid Build Coastguard Worker 3073*35238bceSAndroid Build Coastguard Worker both "" 3074*35238bceSAndroid Build Coastguard Worker #version 300 es 3075*35238bceSAndroid Build Coastguard Worker precision mediump float; 3076*35238bceSAndroid Build Coastguard Worker precision mediump int; 3077*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3078*35238bceSAndroid Build Coastguard Worker 3079*35238bceSAndroid Build Coastguard Worker int sum(ivec4 v) { return (v.x + v.y + v.z + v.w); } 3080*35238bceSAndroid Build Coastguard Worker 3081*35238bceSAndroid Build Coastguard Worker int func (int a, ivec3 b, ivec2 c, ivec2 d, ivec4 e) 3082*35238bceSAndroid Build Coastguard Worker { 3083*35238bceSAndroid Build Coastguard Worker return -sum(ivec4(a, b) + ivec4(c, d)) + sum(e); 3084*35238bceSAndroid Build Coastguard Worker } 3085*35238bceSAndroid Build Coastguard Worker 3086*35238bceSAndroid Build Coastguard Worker void main() 3087*35238bceSAndroid Build Coastguard Worker { 3088*35238bceSAndroid Build Coastguard Worker ${SETUP} 3089*35238bceSAndroid Build Coastguard Worker out0 = func(in0.y, in0.xzw, in0.wz, in0.yx, in0); 3090*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 3091*35238bceSAndroid Build Coastguard Worker } 3092*35238bceSAndroid Build Coastguard Worker "" 3093*35238bceSAndroid Build Coastguard Worker end 3094*35238bceSAndroid Build Coastguard Worker 3095*35238bceSAndroid Build Coastguard Worker case argument_eval_order_1 3096*35238bceSAndroid Build Coastguard Worker version 300 es 3097*35238bceSAndroid Build Coastguard Worker values 3098*35238bceSAndroid Build Coastguard Worker { 3099*35238bceSAndroid Build Coastguard Worker input int in0 = [ 0 | 1 | 3 | 5 ]; 3100*35238bceSAndroid Build Coastguard Worker output int out0 = [ -1 | 5 | 11 | 17 ]; 3101*35238bceSAndroid Build Coastguard Worker } 3102*35238bceSAndroid Build Coastguard Worker 3103*35238bceSAndroid Build Coastguard Worker both "" 3104*35238bceSAndroid Build Coastguard Worker #version 300 es 3105*35238bceSAndroid Build Coastguard Worker precision highp float; 3106*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3107*35238bceSAndroid Build Coastguard Worker 3108*35238bceSAndroid Build Coastguard Worker int func (float a, int b, bool c, int d) 3109*35238bceSAndroid Build Coastguard Worker { 3110*35238bceSAndroid Build Coastguard Worker if (c) 3111*35238bceSAndroid Build Coastguard Worker return b + int(a) + d; 3112*35238bceSAndroid Build Coastguard Worker else 3113*35238bceSAndroid Build Coastguard Worker return -1; 3114*35238bceSAndroid Build Coastguard Worker } 3115*35238bceSAndroid Build Coastguard Worker 3116*35238bceSAndroid Build Coastguard Worker void main () 3117*35238bceSAndroid Build Coastguard Worker { 3118*35238bceSAndroid Build Coastguard Worker ${SETUP} 3119*35238bceSAndroid Build Coastguard Worker float v0 = float(in0); 3120*35238bceSAndroid Build Coastguard Worker int v1 = in0; 3121*35238bceSAndroid Build Coastguard Worker out0 = func((v0 += 1.0), v1++, (v0 > 1.5), v1); 3122*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 3123*35238bceSAndroid Build Coastguard Worker } 3124*35238bceSAndroid Build Coastguard Worker "" 3125*35238bceSAndroid Build Coastguard Worker end 3126*35238bceSAndroid Build Coastguard Worker 3127*35238bceSAndroid Build Coastguard Worker case argument_eval_order_2 3128*35238bceSAndroid Build Coastguard Worker version 300 es 3129*35238bceSAndroid Build Coastguard Worker values 3130*35238bceSAndroid Build Coastguard Worker { 3131*35238bceSAndroid Build Coastguard Worker input int in0 = [ 0 | -1 | 3 | 5 ]; 3132*35238bceSAndroid Build Coastguard Worker output int out0 = [ 3 | -1 | 9 | 13 ]; 3133*35238bceSAndroid Build Coastguard Worker } 3134*35238bceSAndroid Build Coastguard Worker 3135*35238bceSAndroid Build Coastguard Worker both "" 3136*35238bceSAndroid Build Coastguard Worker #version 300 es 3137*35238bceSAndroid Build Coastguard Worker precision highp float; 3138*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3139*35238bceSAndroid Build Coastguard Worker 3140*35238bceSAndroid Build Coastguard Worker int g; 3141*35238bceSAndroid Build Coastguard Worker 3142*35238bceSAndroid Build Coastguard Worker int modG (int v) 3143*35238bceSAndroid Build Coastguard Worker { 3144*35238bceSAndroid Build Coastguard Worker g += v; 3145*35238bceSAndroid Build Coastguard Worker return v; 3146*35238bceSAndroid Build Coastguard Worker } 3147*35238bceSAndroid Build Coastguard Worker 3148*35238bceSAndroid Build Coastguard Worker int func (float a, int b, bool c, int d) 3149*35238bceSAndroid Build Coastguard Worker { 3150*35238bceSAndroid Build Coastguard Worker if (c) 3151*35238bceSAndroid Build Coastguard Worker return b + int(a) + d; 3152*35238bceSAndroid Build Coastguard Worker else 3153*35238bceSAndroid Build Coastguard Worker return -1; 3154*35238bceSAndroid Build Coastguard Worker } 3155*35238bceSAndroid Build Coastguard Worker 3156*35238bceSAndroid Build Coastguard Worker void main () 3157*35238bceSAndroid Build Coastguard Worker { 3158*35238bceSAndroid Build Coastguard Worker ${SETUP} 3159*35238bceSAndroid Build Coastguard Worker out0 = func(float(g = in0), modG(2), --g > 0, g); 3160*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 3161*35238bceSAndroid Build Coastguard Worker } 3162*35238bceSAndroid Build Coastguard Worker "" 3163*35238bceSAndroid Build Coastguard Worker end 3164*35238bceSAndroid Build Coastguard Worker 3165*35238bceSAndroid Build Coastguard Workerend # misc 3166*35238bceSAndroid Build Coastguard Worker 3167*35238bceSAndroid Build Coastguard Workergroup invalid "Invalid Functions" 3168*35238bceSAndroid Build Coastguard Worker case break_in_body 3169*35238bceSAndroid Build Coastguard Worker version 300 es 3170*35238bceSAndroid Build Coastguard Worker expect compile_fail 3171*35238bceSAndroid Build Coastguard Worker both "" 3172*35238bceSAndroid Build Coastguard Worker #version 300 es 3173*35238bceSAndroid Build Coastguard Worker precision mediump float; 3174*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3175*35238bceSAndroid Build Coastguard Worker 3176*35238bceSAndroid Build Coastguard Worker void func () 3177*35238bceSAndroid Build Coastguard Worker { 3178*35238bceSAndroid Build Coastguard Worker break; 3179*35238bceSAndroid Build Coastguard Worker } 3180*35238bceSAndroid Build Coastguard Worker 3181*35238bceSAndroid Build Coastguard Worker void main () 3182*35238bceSAndroid Build Coastguard Worker { 3183*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 3184*35238bceSAndroid Build Coastguard Worker } 3185*35238bceSAndroid Build Coastguard Worker "" 3186*35238bceSAndroid Build Coastguard Worker end 3187*35238bceSAndroid Build Coastguard Worker 3188*35238bceSAndroid Build Coastguard Worker case continue_in_body 3189*35238bceSAndroid Build Coastguard Worker version 300 es 3190*35238bceSAndroid Build Coastguard Worker expect compile_fail 3191*35238bceSAndroid Build Coastguard Worker both "" 3192*35238bceSAndroid Build Coastguard Worker #version 300 es 3193*35238bceSAndroid Build Coastguard Worker precision mediump float; 3194*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3195*35238bceSAndroid Build Coastguard Worker 3196*35238bceSAndroid Build Coastguard Worker void func () 3197*35238bceSAndroid Build Coastguard Worker { 3198*35238bceSAndroid Build Coastguard Worker continue; 3199*35238bceSAndroid Build Coastguard Worker } 3200*35238bceSAndroid Build Coastguard Worker 3201*35238bceSAndroid Build Coastguard Worker void main () 3202*35238bceSAndroid Build Coastguard Worker { 3203*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 3204*35238bceSAndroid Build Coastguard Worker } 3205*35238bceSAndroid Build Coastguard Worker "" 3206*35238bceSAndroid Build Coastguard Worker end 3207*35238bceSAndroid Build Coastguard Worker 3208*35238bceSAndroid Build Coastguard Worker case return_value_from_void_function 3209*35238bceSAndroid Build Coastguard Worker version 300 es 3210*35238bceSAndroid Build Coastguard Worker expect compile_fail 3211*35238bceSAndroid Build Coastguard Worker both "" 3212*35238bceSAndroid Build Coastguard Worker #version 300 es 3213*35238bceSAndroid Build Coastguard Worker precision mediump float; 3214*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3215*35238bceSAndroid Build Coastguard Worker 3216*35238bceSAndroid Build Coastguard Worker void func () 3217*35238bceSAndroid Build Coastguard Worker { 3218*35238bceSAndroid Build Coastguard Worker return 1.0; 3219*35238bceSAndroid Build Coastguard Worker } 3220*35238bceSAndroid Build Coastguard Worker 3221*35238bceSAndroid Build Coastguard Worker void main () 3222*35238bceSAndroid Build Coastguard Worker { 3223*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 3224*35238bceSAndroid Build Coastguard Worker } 3225*35238bceSAndroid Build Coastguard Worker "" 3226*35238bceSAndroid Build Coastguard Worker end 3227*35238bceSAndroid Build Coastguard Worker 3228*35238bceSAndroid Build Coastguard Worker case extra_arguments 3229*35238bceSAndroid Build Coastguard Worker version 300 es 3230*35238bceSAndroid Build Coastguard Worker expect compile_fail 3231*35238bceSAndroid Build Coastguard Worker both "" 3232*35238bceSAndroid Build Coastguard Worker #version 300 es 3233*35238bceSAndroid Build Coastguard Worker precision mediump float; 3234*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3235*35238bceSAndroid Build Coastguard Worker 3236*35238bceSAndroid Build Coastguard Worker void func (float f) 3237*35238bceSAndroid Build Coastguard Worker { 3238*35238bceSAndroid Build Coastguard Worker } 3239*35238bceSAndroid Build Coastguard Worker 3240*35238bceSAndroid Build Coastguard Worker void main () 3241*35238bceSAndroid Build Coastguard Worker { 3242*35238bceSAndroid Build Coastguard Worker func(1.0, 2.0); 3243*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 3244*35238bceSAndroid Build Coastguard Worker } 3245*35238bceSAndroid Build Coastguard Worker "" 3246*35238bceSAndroid Build Coastguard Worker end 3247*35238bceSAndroid Build Coastguard Worker 3248*35238bceSAndroid Build Coastguard Worker case missing_arguments 3249*35238bceSAndroid Build Coastguard Worker version 300 es 3250*35238bceSAndroid Build Coastguard Worker expect compile_fail 3251*35238bceSAndroid Build Coastguard Worker both "" 3252*35238bceSAndroid Build Coastguard Worker #version 300 es 3253*35238bceSAndroid Build Coastguard Worker precision mediump float; 3254*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3255*35238bceSAndroid Build Coastguard Worker 3256*35238bceSAndroid Build Coastguard Worker void func (float f) 3257*35238bceSAndroid Build Coastguard Worker { 3258*35238bceSAndroid Build Coastguard Worker } 3259*35238bceSAndroid Build Coastguard Worker 3260*35238bceSAndroid Build Coastguard Worker void main () 3261*35238bceSAndroid Build Coastguard Worker { 3262*35238bceSAndroid Build Coastguard Worker func(); 3263*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 3264*35238bceSAndroid Build Coastguard Worker } 3265*35238bceSAndroid Build Coastguard Worker "" 3266*35238bceSAndroid Build Coastguard Worker end 3267*35238bceSAndroid Build Coastguard Worker 3268*35238bceSAndroid Build Coastguard Worker case missing_argument_type 3269*35238bceSAndroid Build Coastguard Worker version 300 es 3270*35238bceSAndroid Build Coastguard Worker expect compile_fail 3271*35238bceSAndroid Build Coastguard Worker both "" 3272*35238bceSAndroid Build Coastguard Worker #version 300 es 3273*35238bceSAndroid Build Coastguard Worker precision mediump float; 3274*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3275*35238bceSAndroid Build Coastguard Worker 3276*35238bceSAndroid Build Coastguard Worker void func (in f) 3277*35238bceSAndroid Build Coastguard Worker { 3278*35238bceSAndroid Build Coastguard Worker } 3279*35238bceSAndroid Build Coastguard Worker 3280*35238bceSAndroid Build Coastguard Worker void main () 3281*35238bceSAndroid Build Coastguard Worker { 3282*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 3283*35238bceSAndroid Build Coastguard Worker } 3284*35238bceSAndroid Build Coastguard Worker "" 3285*35238bceSAndroid Build Coastguard Worker end 3286*35238bceSAndroid Build Coastguard Worker 3287*35238bceSAndroid Build Coastguard Worker case argument_basetype_mismatch 3288*35238bceSAndroid Build Coastguard Worker version 300 es 3289*35238bceSAndroid Build Coastguard Worker expect compile_fail 3290*35238bceSAndroid Build Coastguard Worker both "" 3291*35238bceSAndroid Build Coastguard Worker #version 300 es 3292*35238bceSAndroid Build Coastguard Worker precision mediump float; 3293*35238bceSAndroid Build Coastguard Worker precision mediump int; 3294*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3295*35238bceSAndroid Build Coastguard Worker 3296*35238bceSAndroid Build Coastguard Worker void func (float f) 3297*35238bceSAndroid Build Coastguard Worker { 3298*35238bceSAndroid Build Coastguard Worker } 3299*35238bceSAndroid Build Coastguard Worker 3300*35238bceSAndroid Build Coastguard Worker void main () 3301*35238bceSAndroid Build Coastguard Worker { 3302*35238bceSAndroid Build Coastguard Worker func(2); 3303*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 3304*35238bceSAndroid Build Coastguard Worker } 3305*35238bceSAndroid Build Coastguard Worker "" 3306*35238bceSAndroid Build Coastguard Worker end 3307*35238bceSAndroid Build Coastguard Worker 3308*35238bceSAndroid Build Coastguard Worker case argument_scalar_vector_mismatch 3309*35238bceSAndroid Build Coastguard Worker version 300 es 3310*35238bceSAndroid Build Coastguard Worker expect compile_fail 3311*35238bceSAndroid Build Coastguard Worker both "" 3312*35238bceSAndroid Build Coastguard Worker #version 300 es 3313*35238bceSAndroid Build Coastguard Worker precision mediump float; 3314*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3315*35238bceSAndroid Build Coastguard Worker 3316*35238bceSAndroid Build Coastguard Worker void func (vec2 f) 3317*35238bceSAndroid Build Coastguard Worker { 3318*35238bceSAndroid Build Coastguard Worker } 3319*35238bceSAndroid Build Coastguard Worker 3320*35238bceSAndroid Build Coastguard Worker void main () 3321*35238bceSAndroid Build Coastguard Worker { 3322*35238bceSAndroid Build Coastguard Worker func(2.0); 3323*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 3324*35238bceSAndroid Build Coastguard Worker } 3325*35238bceSAndroid Build Coastguard Worker "" 3326*35238bceSAndroid Build Coastguard Worker end 3327*35238bceSAndroid Build Coastguard Worker 3328*35238bceSAndroid Build Coastguard Worker case argument_vector_size_mismatch 3329*35238bceSAndroid Build Coastguard Worker version 300 es 3330*35238bceSAndroid Build Coastguard Worker expect compile_fail 3331*35238bceSAndroid Build Coastguard Worker both "" 3332*35238bceSAndroid Build Coastguard Worker #version 300 es 3333*35238bceSAndroid Build Coastguard Worker precision mediump float; 3334*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3335*35238bceSAndroid Build Coastguard Worker 3336*35238bceSAndroid Build Coastguard Worker void func (vec3 f) 3337*35238bceSAndroid Build Coastguard Worker { 3338*35238bceSAndroid Build Coastguard Worker } 3339*35238bceSAndroid Build Coastguard Worker 3340*35238bceSAndroid Build Coastguard Worker void main () 3341*35238bceSAndroid Build Coastguard Worker { 3342*35238bceSAndroid Build Coastguard Worker func(vec2(2.0)); 3343*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 3344*35238bceSAndroid Build Coastguard Worker } 3345*35238bceSAndroid Build Coastguard Worker "" 3346*35238bceSAndroid Build Coastguard Worker end 3347*35238bceSAndroid Build Coastguard Worker 3348*35238bceSAndroid Build Coastguard Worker case duplicate_function 3349*35238bceSAndroid Build Coastguard Worker version 300 es 3350*35238bceSAndroid Build Coastguard Worker expect compile_fail 3351*35238bceSAndroid Build Coastguard Worker both "" 3352*35238bceSAndroid Build Coastguard Worker #version 300 es 3353*35238bceSAndroid Build Coastguard Worker precision mediump float; 3354*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3355*35238bceSAndroid Build Coastguard Worker 3356*35238bceSAndroid Build Coastguard Worker void func (vec3 f); 3357*35238bceSAndroid Build Coastguard Worker 3358*35238bceSAndroid Build Coastguard Worker void func (vec3 f) 3359*35238bceSAndroid Build Coastguard Worker { 3360*35238bceSAndroid Build Coastguard Worker } 3361*35238bceSAndroid Build Coastguard Worker 3362*35238bceSAndroid Build Coastguard Worker void func (vec3 f) 3363*35238bceSAndroid Build Coastguard Worker { 3364*35238bceSAndroid Build Coastguard Worker } 3365*35238bceSAndroid Build Coastguard Worker 3366*35238bceSAndroid Build Coastguard Worker void main () 3367*35238bceSAndroid Build Coastguard Worker { 3368*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 3369*35238bceSAndroid Build Coastguard Worker } 3370*35238bceSAndroid Build Coastguard Worker "" 3371*35238bceSAndroid Build Coastguard Worker end 3372*35238bceSAndroid Build Coastguard Worker 3373*35238bceSAndroid Build Coastguard Worker case prototype_mismatch_return_type 3374*35238bceSAndroid Build Coastguard Worker version 300 es 3375*35238bceSAndroid Build Coastguard Worker expect compile_fail 3376*35238bceSAndroid Build Coastguard Worker both "" 3377*35238bceSAndroid Build Coastguard Worker #version 300 es 3378*35238bceSAndroid Build Coastguard Worker precision mediump float; 3379*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3380*35238bceSAndroid Build Coastguard Worker 3381*35238bceSAndroid Build Coastguard Worker void func (vec3 f); 3382*35238bceSAndroid Build Coastguard Worker 3383*35238bceSAndroid Build Coastguard Worker void main () 3384*35238bceSAndroid Build Coastguard Worker { 3385*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 3386*35238bceSAndroid Build Coastguard Worker } 3387*35238bceSAndroid Build Coastguard Worker 3388*35238bceSAndroid Build Coastguard Worker float func (vec3 f) 3389*35238bceSAndroid Build Coastguard Worker { 3390*35238bceSAndroid Build Coastguard Worker return f.x; 3391*35238bceSAndroid Build Coastguard Worker } 3392*35238bceSAndroid Build Coastguard Worker "" 3393*35238bceSAndroid Build Coastguard Worker end 3394*35238bceSAndroid Build Coastguard Worker 3395*35238bceSAndroid Build Coastguard Worker case prototype_unspecified_array_size 3396*35238bceSAndroid Build Coastguard Worker version 300 es 3397*35238bceSAndroid Build Coastguard Worker expect compile_fail 3398*35238bceSAndroid Build Coastguard Worker both "" 3399*35238bceSAndroid Build Coastguard Worker #version 300 es 3400*35238bceSAndroid Build Coastguard Worker precision mediump float; 3401*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3402*35238bceSAndroid Build Coastguard Worker 3403*35238bceSAndroid Build Coastguard Worker void func (vec3 f[]); 3404*35238bceSAndroid Build Coastguard Worker 3405*35238bceSAndroid Build Coastguard Worker void main () 3406*35238bceSAndroid Build Coastguard Worker { 3407*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 3408*35238bceSAndroid Build Coastguard Worker } 3409*35238bceSAndroid Build Coastguard Worker "" 3410*35238bceSAndroid Build Coastguard Worker end 3411*35238bceSAndroid Build Coastguard Worker 3412*35238bceSAndroid Build Coastguard Worker case call_mismatch_argument_array_size 3413*35238bceSAndroid Build Coastguard Worker version 300 es 3414*35238bceSAndroid Build Coastguard Worker expect compile_fail 3415*35238bceSAndroid Build Coastguard Worker both "" 3416*35238bceSAndroid Build Coastguard Worker #version 300 es 3417*35238bceSAndroid Build Coastguard Worker precision mediump float; 3418*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3419*35238bceSAndroid Build Coastguard Worker 3420*35238bceSAndroid Build Coastguard Worker void func (vec3 f[3]); 3421*35238bceSAndroid Build Coastguard Worker void func (vec3 f[3]) 3422*35238bceSAndroid Build Coastguard Worker { 3423*35238bceSAndroid Build Coastguard Worker } 3424*35238bceSAndroid Build Coastguard Worker 3425*35238bceSAndroid Build Coastguard Worker void main () 3426*35238bceSAndroid Build Coastguard Worker { 3427*35238bceSAndroid Build Coastguard Worker vec3 array[4]; 3428*35238bceSAndroid Build Coastguard Worker func(array); 3429*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 3430*35238bceSAndroid Build Coastguard Worker } 3431*35238bceSAndroid Build Coastguard Worker "" 3432*35238bceSAndroid Build Coastguard Worker end 3433*35238bceSAndroid Build Coastguard Worker 3434*35238bceSAndroid Build Coastguard Worker case prototype_mismatch_argument_const 3435*35238bceSAndroid Build Coastguard Worker version 300 es 3436*35238bceSAndroid Build Coastguard Worker expect compile_fail 3437*35238bceSAndroid Build Coastguard Worker both "" 3438*35238bceSAndroid Build Coastguard Worker #version 300 es 3439*35238bceSAndroid Build Coastguard Worker precision mediump float; 3440*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3441*35238bceSAndroid Build Coastguard Worker 3442*35238bceSAndroid Build Coastguard Worker void func (vec3 f); 3443*35238bceSAndroid Build Coastguard Worker void func (const vec3 f) 3444*35238bceSAndroid Build Coastguard Worker { 3445*35238bceSAndroid Build Coastguard Worker } 3446*35238bceSAndroid Build Coastguard Worker 3447*35238bceSAndroid Build Coastguard Worker void main () 3448*35238bceSAndroid Build Coastguard Worker { 3449*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 3450*35238bceSAndroid Build Coastguard Worker } 3451*35238bceSAndroid Build Coastguard Worker "" 3452*35238bceSAndroid Build Coastguard Worker end 3453*35238bceSAndroid Build Coastguard Worker 3454*35238bceSAndroid Build Coastguard Worker case prototype_mismatch_argument_array_const 3455*35238bceSAndroid Build Coastguard Worker version 300 es 3456*35238bceSAndroid Build Coastguard Worker expect compile_fail 3457*35238bceSAndroid Build Coastguard Worker both "" 3458*35238bceSAndroid Build Coastguard Worker #version 300 es 3459*35238bceSAndroid Build Coastguard Worker precision mediump float; 3460*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3461*35238bceSAndroid Build Coastguard Worker 3462*35238bceSAndroid Build Coastguard Worker void func (vec3 f[3]); 3463*35238bceSAndroid Build Coastguard Worker void func (const vec3 f[3]) 3464*35238bceSAndroid Build Coastguard Worker { 3465*35238bceSAndroid Build Coastguard Worker } 3466*35238bceSAndroid Build Coastguard Worker 3467*35238bceSAndroid Build Coastguard Worker void main () 3468*35238bceSAndroid Build Coastguard Worker { 3469*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 3470*35238bceSAndroid Build Coastguard Worker } 3471*35238bceSAndroid Build Coastguard Worker "" 3472*35238bceSAndroid Build Coastguard Worker end 3473*35238bceSAndroid Build Coastguard Worker 3474*35238bceSAndroid Build Coastguard Worker case prototype_mismatch_array_inout 3475*35238bceSAndroid Build Coastguard Worker version 300 es 3476*35238bceSAndroid Build Coastguard Worker expect compile_fail 3477*35238bceSAndroid Build Coastguard Worker both "" 3478*35238bceSAndroid Build Coastguard Worker #version 300 es 3479*35238bceSAndroid Build Coastguard Worker precision mediump float; 3480*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3481*35238bceSAndroid Build Coastguard Worker 3482*35238bceSAndroid Build Coastguard Worker void func (out vec3 f); 3483*35238bceSAndroid Build Coastguard Worker void func (inout vec3 f) 3484*35238bceSAndroid Build Coastguard Worker { 3485*35238bceSAndroid Build Coastguard Worker } 3486*35238bceSAndroid Build Coastguard Worker 3487*35238bceSAndroid Build Coastguard Worker void main () 3488*35238bceSAndroid Build Coastguard Worker { 3489*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 3490*35238bceSAndroid Build Coastguard Worker } 3491*35238bceSAndroid Build Coastguard Worker "" 3492*35238bceSAndroid Build Coastguard Worker end 3493*35238bceSAndroid Build Coastguard Worker 3494*35238bceSAndroid Build Coastguard Worker case missing_return_type 3495*35238bceSAndroid Build Coastguard Worker version 300 es 3496*35238bceSAndroid Build Coastguard Worker expect compile_fail 3497*35238bceSAndroid Build Coastguard Worker both "" 3498*35238bceSAndroid Build Coastguard Worker #version 300 es 3499*35238bceSAndroid Build Coastguard Worker precision mediump float; 3500*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3501*35238bceSAndroid Build Coastguard Worker 3502*35238bceSAndroid Build Coastguard Worker func (float f); 3503*35238bceSAndroid Build Coastguard Worker func (inout vec3 f[3]) 3504*35238bceSAndroid Build Coastguard Worker { 3505*35238bceSAndroid Build Coastguard Worker } 3506*35238bceSAndroid Build Coastguard Worker 3507*35238bceSAndroid Build Coastguard Worker void main () 3508*35238bceSAndroid Build Coastguard Worker { 3509*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 3510*35238bceSAndroid Build Coastguard Worker } 3511*35238bceSAndroid Build Coastguard Worker "" 3512*35238bceSAndroid Build Coastguard Worker end 3513*35238bceSAndroid Build Coastguard Worker 3514*35238bceSAndroid Build Coastguard Worker case call_before_definition 3515*35238bceSAndroid Build Coastguard Worker version 300 es 3516*35238bceSAndroid Build Coastguard Worker expect compile_fail 3517*35238bceSAndroid Build Coastguard Worker both "" 3518*35238bceSAndroid Build Coastguard Worker #version 300 es 3519*35238bceSAndroid Build Coastguard Worker precision mediump float; 3520*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3521*35238bceSAndroid Build Coastguard Worker 3522*35238bceSAndroid Build Coastguard Worker void main () 3523*35238bceSAndroid Build Coastguard Worker { 3524*35238bceSAndroid Build Coastguard Worker func(1.0); 3525*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 3526*35238bceSAndroid Build Coastguard Worker } 3527*35238bceSAndroid Build Coastguard Worker 3528*35238bceSAndroid Build Coastguard Worker void func (float f) 3529*35238bceSAndroid Build Coastguard Worker { 3530*35238bceSAndroid Build Coastguard Worker } 3531*35238bceSAndroid Build Coastguard Worker 3532*35238bceSAndroid Build Coastguard Worker "" 3533*35238bceSAndroid Build Coastguard Worker end 3534*35238bceSAndroid Build Coastguard Worker 3535*35238bceSAndroid Build Coastguard Worker case argument_precision_overload 3536*35238bceSAndroid Build Coastguard Worker version 300 es 3537*35238bceSAndroid Build Coastguard Worker expect compile_fail 3538*35238bceSAndroid Build Coastguard Worker both "" 3539*35238bceSAndroid Build Coastguard Worker #version 300 es 3540*35238bceSAndroid Build Coastguard Worker precision mediump float; 3541*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3542*35238bceSAndroid Build Coastguard Worker 3543*35238bceSAndroid Build Coastguard Worker float func (lowp float f) 3544*35238bceSAndroid Build Coastguard Worker { 3545*35238bceSAndroid Build Coastguard Worker return f; 3546*35238bceSAndroid Build Coastguard Worker } 3547*35238bceSAndroid Build Coastguard Worker 3548*35238bceSAndroid Build Coastguard Worker float func (mediump float f) 3549*35238bceSAndroid Build Coastguard Worker { 3550*35238bceSAndroid Build Coastguard Worker return f; 3551*35238bceSAndroid Build Coastguard Worker } 3552*35238bceSAndroid Build Coastguard Worker 3553*35238bceSAndroid Build Coastguard Worker void main () 3554*35238bceSAndroid Build Coastguard Worker { 3555*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 3556*35238bceSAndroid Build Coastguard Worker } 3557*35238bceSAndroid Build Coastguard Worker "" 3558*35238bceSAndroid Build Coastguard Worker end 3559*35238bceSAndroid Build Coastguard Worker 3560*35238bceSAndroid Build Coastguard Worker case argument_in_out_overload 3561*35238bceSAndroid Build Coastguard Worker version 300 es 3562*35238bceSAndroid Build Coastguard Worker expect compile_fail 3563*35238bceSAndroid Build Coastguard Worker both "" 3564*35238bceSAndroid Build Coastguard Worker #version 300 es 3565*35238bceSAndroid Build Coastguard Worker precision mediump float; 3566*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3567*35238bceSAndroid Build Coastguard Worker 3568*35238bceSAndroid Build Coastguard Worker void func (in float f) 3569*35238bceSAndroid Build Coastguard Worker { 3570*35238bceSAndroid Build Coastguard Worker } 3571*35238bceSAndroid Build Coastguard Worker 3572*35238bceSAndroid Build Coastguard Worker void func (out float f) 3573*35238bceSAndroid Build Coastguard Worker { 3574*35238bceSAndroid Build Coastguard Worker f = 1.0; 3575*35238bceSAndroid Build Coastguard Worker } 3576*35238bceSAndroid Build Coastguard Worker 3577*35238bceSAndroid Build Coastguard Worker void main () 3578*35238bceSAndroid Build Coastguard Worker { 3579*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 3580*35238bceSAndroid Build Coastguard Worker } 3581*35238bceSAndroid Build Coastguard Worker "" 3582*35238bceSAndroid Build Coastguard Worker end 3583*35238bceSAndroid Build Coastguard Worker 3584*35238bceSAndroid Build Coastguard Worker case argument_in_inout_overload 3585*35238bceSAndroid Build Coastguard Worker version 300 es 3586*35238bceSAndroid Build Coastguard Worker expect compile_fail 3587*35238bceSAndroid Build Coastguard Worker both "" 3588*35238bceSAndroid Build Coastguard Worker #version 300 es 3589*35238bceSAndroid Build Coastguard Worker precision mediump float; 3590*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3591*35238bceSAndroid Build Coastguard Worker 3592*35238bceSAndroid Build Coastguard Worker void func (in float f) 3593*35238bceSAndroid Build Coastguard Worker { 3594*35238bceSAndroid Build Coastguard Worker } 3595*35238bceSAndroid Build Coastguard Worker 3596*35238bceSAndroid Build Coastguard Worker void func (inout float f) 3597*35238bceSAndroid Build Coastguard Worker { 3598*35238bceSAndroid Build Coastguard Worker f = -f; 3599*35238bceSAndroid Build Coastguard Worker } 3600*35238bceSAndroid Build Coastguard Worker 3601*35238bceSAndroid Build Coastguard Worker void main () 3602*35238bceSAndroid Build Coastguard Worker { 3603*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 3604*35238bceSAndroid Build Coastguard Worker } 3605*35238bceSAndroid Build Coastguard Worker "" 3606*35238bceSAndroid Build Coastguard Worker end 3607*35238bceSAndroid Build Coastguard Worker 3608*35238bceSAndroid Build Coastguard Worker case argument_out_inout_overload 3609*35238bceSAndroid Build Coastguard Worker version 300 es 3610*35238bceSAndroid Build Coastguard Worker expect compile_fail 3611*35238bceSAndroid Build Coastguard Worker both "" 3612*35238bceSAndroid Build Coastguard Worker #version 300 es 3613*35238bceSAndroid Build Coastguard Worker precision mediump float; 3614*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3615*35238bceSAndroid Build Coastguard Worker 3616*35238bceSAndroid Build Coastguard Worker void func (out float f) 3617*35238bceSAndroid Build Coastguard Worker { 3618*35238bceSAndroid Build Coastguard Worker f = -1.0; 3619*35238bceSAndroid Build Coastguard Worker } 3620*35238bceSAndroid Build Coastguard Worker 3621*35238bceSAndroid Build Coastguard Worker void func (inout float f) 3622*35238bceSAndroid Build Coastguard Worker { 3623*35238bceSAndroid Build Coastguard Worker f = -f; 3624*35238bceSAndroid Build Coastguard Worker } 3625*35238bceSAndroid Build Coastguard Worker 3626*35238bceSAndroid Build Coastguard Worker void main () 3627*35238bceSAndroid Build Coastguard Worker { 3628*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 3629*35238bceSAndroid Build Coastguard Worker } 3630*35238bceSAndroid Build Coastguard Worker "" 3631*35238bceSAndroid Build Coastguard Worker end 3632*35238bceSAndroid Build Coastguard Worker 3633*35238bceSAndroid Build Coastguard Worker case return_type_overload 3634*35238bceSAndroid Build Coastguard Worker version 300 es 3635*35238bceSAndroid Build Coastguard Worker expect compile_fail 3636*35238bceSAndroid Build Coastguard Worker both "" 3637*35238bceSAndroid Build Coastguard Worker #version 300 es 3638*35238bceSAndroid Build Coastguard Worker precision mediump float; 3639*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3640*35238bceSAndroid Build Coastguard Worker 3641*35238bceSAndroid Build Coastguard Worker float func (float f) 3642*35238bceSAndroid Build Coastguard Worker { 3643*35238bceSAndroid Build Coastguard Worker return f; 3644*35238bceSAndroid Build Coastguard Worker } 3645*35238bceSAndroid Build Coastguard Worker 3646*35238bceSAndroid Build Coastguard Worker int func (float f) 3647*35238bceSAndroid Build Coastguard Worker { 3648*35238bceSAndroid Build Coastguard Worker return int(f); 3649*35238bceSAndroid Build Coastguard Worker } 3650*35238bceSAndroid Build Coastguard Worker 3651*35238bceSAndroid Build Coastguard Worker void main () 3652*35238bceSAndroid Build Coastguard Worker { 3653*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 3654*35238bceSAndroid Build Coastguard Worker } 3655*35238bceSAndroid Build Coastguard Worker "" 3656*35238bceSAndroid Build Coastguard Worker end 3657*35238bceSAndroid Build Coastguard Worker 3658*35238bceSAndroid Build Coastguard Worker case return_type_precision_overload 3659*35238bceSAndroid Build Coastguard Worker version 300 es 3660*35238bceSAndroid Build Coastguard Worker expect compile_fail 3661*35238bceSAndroid Build Coastguard Worker both "" 3662*35238bceSAndroid Build Coastguard Worker #version 300 es 3663*35238bceSAndroid Build Coastguard Worker precision mediump float; 3664*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3665*35238bceSAndroid Build Coastguard Worker 3666*35238bceSAndroid Build Coastguard Worker lowp float func (float f) 3667*35238bceSAndroid Build Coastguard Worker { 3668*35238bceSAndroid Build Coastguard Worker return f; 3669*35238bceSAndroid Build Coastguard Worker } 3670*35238bceSAndroid Build Coastguard Worker 3671*35238bceSAndroid Build Coastguard Worker mediump float func (float f) 3672*35238bceSAndroid Build Coastguard Worker { 3673*35238bceSAndroid Build Coastguard Worker return f; 3674*35238bceSAndroid Build Coastguard Worker } 3675*35238bceSAndroid Build Coastguard Worker 3676*35238bceSAndroid Build Coastguard Worker void main () 3677*35238bceSAndroid Build Coastguard Worker { 3678*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 3679*35238bceSAndroid Build Coastguard Worker } 3680*35238bceSAndroid Build Coastguard Worker "" 3681*35238bceSAndroid Build Coastguard Worker end 3682*35238bceSAndroid Build Coastguard Worker 3683*35238bceSAndroid Build Coastguard Worker case return_type_const_overload 3684*35238bceSAndroid Build Coastguard Worker version 300 es 3685*35238bceSAndroid Build Coastguard Worker expect compile_fail 3686*35238bceSAndroid Build Coastguard Worker both "" 3687*35238bceSAndroid Build Coastguard Worker #version 300 es 3688*35238bceSAndroid Build Coastguard Worker precision mediump float; 3689*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3690*35238bceSAndroid Build Coastguard Worker 3691*35238bceSAndroid Build Coastguard Worker float func (float f) 3692*35238bceSAndroid Build Coastguard Worker { 3693*35238bceSAndroid Build Coastguard Worker return f; 3694*35238bceSAndroid Build Coastguard Worker } 3695*35238bceSAndroid Build Coastguard Worker 3696*35238bceSAndroid Build Coastguard Worker const float func (float f) 3697*35238bceSAndroid Build Coastguard Worker { 3698*35238bceSAndroid Build Coastguard Worker return f; 3699*35238bceSAndroid Build Coastguard Worker } 3700*35238bceSAndroid Build Coastguard Worker 3701*35238bceSAndroid Build Coastguard Worker void main () 3702*35238bceSAndroid Build Coastguard Worker { 3703*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 3704*35238bceSAndroid Build Coastguard Worker } 3705*35238bceSAndroid Build Coastguard Worker "" 3706*35238bceSAndroid Build Coastguard Worker end 3707*35238bceSAndroid Build Coastguard Worker 3708*35238bceSAndroid Build Coastguard Worker case return_without_value 3709*35238bceSAndroid Build Coastguard Worker version 300 es 3710*35238bceSAndroid Build Coastguard Worker expect compile_fail 3711*35238bceSAndroid Build Coastguard Worker both "" 3712*35238bceSAndroid Build Coastguard Worker #version 300 es 3713*35238bceSAndroid Build Coastguard Worker precision mediump float; 3714*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3715*35238bceSAndroid Build Coastguard Worker 3716*35238bceSAndroid Build Coastguard Worker float func (float f) 3717*35238bceSAndroid Build Coastguard Worker { 3718*35238bceSAndroid Build Coastguard Worker return; 3719*35238bceSAndroid Build Coastguard Worker return 1.0; 3720*35238bceSAndroid Build Coastguard Worker } 3721*35238bceSAndroid Build Coastguard Worker 3722*35238bceSAndroid Build Coastguard Worker void main () 3723*35238bceSAndroid Build Coastguard Worker { 3724*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 3725*35238bceSAndroid Build Coastguard Worker } 3726*35238bceSAndroid Build Coastguard Worker "" 3727*35238bceSAndroid Build Coastguard Worker end 3728*35238bceSAndroid Build Coastguard Worker 3729*35238bceSAndroid Build Coastguard Worker case local_function_prototype 3730*35238bceSAndroid Build Coastguard Worker version 300 es 3731*35238bceSAndroid Build Coastguard Worker expect compile_fail 3732*35238bceSAndroid Build Coastguard Worker both "" 3733*35238bceSAndroid Build Coastguard Worker #version 300 es 3734*35238bceSAndroid Build Coastguard Worker precision mediump float; 3735*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3736*35238bceSAndroid Build Coastguard Worker 3737*35238bceSAndroid Build Coastguard Worker void main () 3738*35238bceSAndroid Build Coastguard Worker { 3739*35238bceSAndroid Build Coastguard Worker float func (float f); 3740*35238bceSAndroid Build Coastguard Worker 3741*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 3742*35238bceSAndroid Build Coastguard Worker } 3743*35238bceSAndroid Build Coastguard Worker "" 3744*35238bceSAndroid Build Coastguard Worker end 3745*35238bceSAndroid Build Coastguard Worker 3746*35238bceSAndroid Build Coastguard Worker case local_function_definition 3747*35238bceSAndroid Build Coastguard Worker version 300 es 3748*35238bceSAndroid Build Coastguard Worker expect compile_fail 3749*35238bceSAndroid Build Coastguard Worker both "" 3750*35238bceSAndroid Build Coastguard Worker #version 300 es 3751*35238bceSAndroid Build Coastguard Worker precision mediump float; 3752*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3753*35238bceSAndroid Build Coastguard Worker 3754*35238bceSAndroid Build Coastguard Worker void main () 3755*35238bceSAndroid Build Coastguard Worker { 3756*35238bceSAndroid Build Coastguard Worker float func (float f) 3757*35238bceSAndroid Build Coastguard Worker { 3758*35238bceSAndroid Build Coastguard Worker return 1.0; 3759*35238bceSAndroid Build Coastguard Worker } 3760*35238bceSAndroid Build Coastguard Worker 3761*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 3762*35238bceSAndroid Build Coastguard Worker } 3763*35238bceSAndroid Build Coastguard Worker "" 3764*35238bceSAndroid Build Coastguard Worker end 3765*35238bceSAndroid Build Coastguard Worker 3766*35238bceSAndroid Build Coastguard Worker case name_type_conflict 3767*35238bceSAndroid Build Coastguard Worker version 300 es 3768*35238bceSAndroid Build Coastguard Worker expect compile_fail 3769*35238bceSAndroid Build Coastguard Worker both "" 3770*35238bceSAndroid Build Coastguard Worker #version 300 es 3771*35238bceSAndroid Build Coastguard Worker precision mediump float; 3772*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3773*35238bceSAndroid Build Coastguard Worker 3774*35238bceSAndroid Build Coastguard Worker struct foo { float a; } 3775*35238bceSAndroid Build Coastguard Worker 3776*35238bceSAndroid Build Coastguard Worker float foo (float f) 3777*35238bceSAndroid Build Coastguard Worker { 3778*35238bceSAndroid Build Coastguard Worker return 1.0; 3779*35238bceSAndroid Build Coastguard Worker } 3780*35238bceSAndroid Build Coastguard Worker 3781*35238bceSAndroid Build Coastguard Worker void main () 3782*35238bceSAndroid Build Coastguard Worker { 3783*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 3784*35238bceSAndroid Build Coastguard Worker } 3785*35238bceSAndroid Build Coastguard Worker "" 3786*35238bceSAndroid Build Coastguard Worker end 3787*35238bceSAndroid Build Coastguard Worker 3788*35238bceSAndroid Build Coastguard Worker case const_overload 3789*35238bceSAndroid Build Coastguard Worker version 300 es 3790*35238bceSAndroid Build Coastguard Worker expect compile_fail 3791*35238bceSAndroid Build Coastguard Worker both "" 3792*35238bceSAndroid Build Coastguard Worker #version 300 es 3793*35238bceSAndroid Build Coastguard Worker precision mediump float; 3794*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3795*35238bceSAndroid Build Coastguard Worker 3796*35238bceSAndroid Build Coastguard Worker void func (vec3 f) 3797*35238bceSAndroid Build Coastguard Worker { 3798*35238bceSAndroid Build Coastguard Worker } 3799*35238bceSAndroid Build Coastguard Worker 3800*35238bceSAndroid Build Coastguard Worker void func (const vec3 f) 3801*35238bceSAndroid Build Coastguard Worker { 3802*35238bceSAndroid Build Coastguard Worker } 3803*35238bceSAndroid Build Coastguard Worker 3804*35238bceSAndroid Build Coastguard Worker void main () 3805*35238bceSAndroid Build Coastguard Worker { 3806*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 3807*35238bceSAndroid Build Coastguard Worker } 3808*35238bceSAndroid Build Coastguard Worker "" 3809*35238bceSAndroid Build Coastguard Worker end 3810*35238bceSAndroid Build Coastguard Worker 3811*35238bceSAndroid Build Coastguard Worker case uniform_local 3812*35238bceSAndroid Build Coastguard Worker version 300 es 3813*35238bceSAndroid Build Coastguard Worker expect compile_fail 3814*35238bceSAndroid Build Coastguard Worker both "" 3815*35238bceSAndroid Build Coastguard Worker #version 300 es 3816*35238bceSAndroid Build Coastguard Worker precision mediump float; 3817*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3818*35238bceSAndroid Build Coastguard Worker 3819*35238bceSAndroid Build Coastguard Worker void func (vec3 f) 3820*35238bceSAndroid Build Coastguard Worker { 3821*35238bceSAndroid Build Coastguard Worker uniform float u; 3822*35238bceSAndroid Build Coastguard Worker } 3823*35238bceSAndroid Build Coastguard Worker 3824*35238bceSAndroid Build Coastguard Worker void main () 3825*35238bceSAndroid Build Coastguard Worker { 3826*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 3827*35238bceSAndroid Build Coastguard Worker } 3828*35238bceSAndroid Build Coastguard Worker "" 3829*35238bceSAndroid Build Coastguard Worker end 3830*35238bceSAndroid Build Coastguard Worker 3831*35238bceSAndroid Build Coastguard Worker case in_local 3832*35238bceSAndroid Build Coastguard Worker version 300 es 3833*35238bceSAndroid Build Coastguard Worker expect compile_fail 3834*35238bceSAndroid Build Coastguard Worker both "" 3835*35238bceSAndroid Build Coastguard Worker #version 300 es 3836*35238bceSAndroid Build Coastguard Worker precision mediump float; 3837*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3838*35238bceSAndroid Build Coastguard Worker 3839*35238bceSAndroid Build Coastguard Worker void func (vec3 f) 3840*35238bceSAndroid Build Coastguard Worker { 3841*35238bceSAndroid Build Coastguard Worker in float v; 3842*35238bceSAndroid Build Coastguard Worker } 3843*35238bceSAndroid Build Coastguard Worker 3844*35238bceSAndroid Build Coastguard Worker void main () 3845*35238bceSAndroid Build Coastguard Worker { 3846*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 3847*35238bceSAndroid Build Coastguard Worker } 3848*35238bceSAndroid Build Coastguard Worker "" 3849*35238bceSAndroid Build Coastguard Worker end 3850*35238bceSAndroid Build Coastguard Worker 3851*35238bceSAndroid Build Coastguard Worker case out_local 3852*35238bceSAndroid Build Coastguard Worker version 300 es 3853*35238bceSAndroid Build Coastguard Worker expect compile_fail 3854*35238bceSAndroid Build Coastguard Worker both "" 3855*35238bceSAndroid Build Coastguard Worker #version 300 es 3856*35238bceSAndroid Build Coastguard Worker precision mediump float; 3857*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3858*35238bceSAndroid Build Coastguard Worker 3859*35238bceSAndroid Build Coastguard Worker void func (vec3 f) 3860*35238bceSAndroid Build Coastguard Worker { 3861*35238bceSAndroid Build Coastguard Worker in float a; 3862*35238bceSAndroid Build Coastguard Worker } 3863*35238bceSAndroid Build Coastguard Worker 3864*35238bceSAndroid Build Coastguard Worker void main () 3865*35238bceSAndroid Build Coastguard Worker { 3866*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 3867*35238bceSAndroid Build Coastguard Worker } 3868*35238bceSAndroid Build Coastguard Worker "" 3869*35238bceSAndroid Build Coastguard Worker end 3870*35238bceSAndroid Build Coastguard Worker 3871*35238bceSAndroid Build Coastguard Worker case inout_local 3872*35238bceSAndroid Build Coastguard Worker version 300 es 3873*35238bceSAndroid Build Coastguard Worker expect compile_fail 3874*35238bceSAndroid Build Coastguard Worker both "" 3875*35238bceSAndroid Build Coastguard Worker #version 300 es 3876*35238bceSAndroid Build Coastguard Worker precision mediump float; 3877*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3878*35238bceSAndroid Build Coastguard Worker 3879*35238bceSAndroid Build Coastguard Worker void func (vec3 f) 3880*35238bceSAndroid Build Coastguard Worker { 3881*35238bceSAndroid Build Coastguard Worker inout float a; 3882*35238bceSAndroid Build Coastguard Worker } 3883*35238bceSAndroid Build Coastguard Worker 3884*35238bceSAndroid Build Coastguard Worker void main () 3885*35238bceSAndroid Build Coastguard Worker { 3886*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 3887*35238bceSAndroid Build Coastguard Worker } 3888*35238bceSAndroid Build Coastguard Worker "" 3889*35238bceSAndroid Build Coastguard Worker end 3890*35238bceSAndroid Build Coastguard Worker 3891*35238bceSAndroid Build Coastguard Worker case uniform_argument 3892*35238bceSAndroid Build Coastguard Worker version 300 es 3893*35238bceSAndroid Build Coastguard Worker expect compile_fail 3894*35238bceSAndroid Build Coastguard Worker both "" 3895*35238bceSAndroid Build Coastguard Worker #version 300 es 3896*35238bceSAndroid Build Coastguard Worker precision mediump float; 3897*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3898*35238bceSAndroid Build Coastguard Worker 3899*35238bceSAndroid Build Coastguard Worker void func (uniform vec3 f) 3900*35238bceSAndroid Build Coastguard Worker { 3901*35238bceSAndroid Build Coastguard Worker } 3902*35238bceSAndroid Build Coastguard Worker 3903*35238bceSAndroid Build Coastguard Worker void main () 3904*35238bceSAndroid Build Coastguard Worker { 3905*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 3906*35238bceSAndroid Build Coastguard Worker } 3907*35238bceSAndroid Build Coastguard Worker "" 3908*35238bceSAndroid Build Coastguard Worker end 3909*35238bceSAndroid Build Coastguard Worker 3910*35238bceSAndroid Build Coastguard Worker case uniform_return_type 3911*35238bceSAndroid Build Coastguard Worker version 300 es 3912*35238bceSAndroid Build Coastguard Worker expect compile_fail 3913*35238bceSAndroid Build Coastguard Worker both "" 3914*35238bceSAndroid Build Coastguard Worker #version 300 es 3915*35238bceSAndroid Build Coastguard Worker precision mediump float; 3916*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3917*35238bceSAndroid Build Coastguard Worker 3918*35238bceSAndroid Build Coastguard Worker uniform float func (vec3 f) 3919*35238bceSAndroid Build Coastguard Worker { 3920*35238bceSAndroid Build Coastguard Worker return f.x; 3921*35238bceSAndroid Build Coastguard Worker } 3922*35238bceSAndroid Build Coastguard Worker 3923*35238bceSAndroid Build Coastguard Worker void main () 3924*35238bceSAndroid Build Coastguard Worker { 3925*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 3926*35238bceSAndroid Build Coastguard Worker } 3927*35238bceSAndroid Build Coastguard Worker "" 3928*35238bceSAndroid Build Coastguard Worker end 3929*35238bceSAndroid Build Coastguard Worker 3930*35238bceSAndroid Build Coastguard Worker case in_return_type 3931*35238bceSAndroid Build Coastguard Worker version 300 es 3932*35238bceSAndroid Build Coastguard Worker expect compile_fail 3933*35238bceSAndroid Build Coastguard Worker both "" 3934*35238bceSAndroid Build Coastguard Worker #version 300 es 3935*35238bceSAndroid Build Coastguard Worker precision mediump float; 3936*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3937*35238bceSAndroid Build Coastguard Worker 3938*35238bceSAndroid Build Coastguard Worker in float func (vec3 f) 3939*35238bceSAndroid Build Coastguard Worker { 3940*35238bceSAndroid Build Coastguard Worker return f.x; 3941*35238bceSAndroid Build Coastguard Worker } 3942*35238bceSAndroid Build Coastguard Worker 3943*35238bceSAndroid Build Coastguard Worker void main () 3944*35238bceSAndroid Build Coastguard Worker { 3945*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(func(vec3(1.0))); 3946*35238bceSAndroid Build Coastguard Worker } 3947*35238bceSAndroid Build Coastguard Worker "" 3948*35238bceSAndroid Build Coastguard Worker end 3949*35238bceSAndroid Build Coastguard Worker 3950*35238bceSAndroid Build Coastguard Worker case out_return_type 3951*35238bceSAndroid Build Coastguard Worker version 300 es 3952*35238bceSAndroid Build Coastguard Worker expect compile_fail 3953*35238bceSAndroid Build Coastguard Worker both "" 3954*35238bceSAndroid Build Coastguard Worker #version 300 es 3955*35238bceSAndroid Build Coastguard Worker precision mediump float; 3956*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3957*35238bceSAndroid Build Coastguard Worker 3958*35238bceSAndroid Build Coastguard Worker out float func (vec3 f) 3959*35238bceSAndroid Build Coastguard Worker { 3960*35238bceSAndroid Build Coastguard Worker return f.x; 3961*35238bceSAndroid Build Coastguard Worker } 3962*35238bceSAndroid Build Coastguard Worker 3963*35238bceSAndroid Build Coastguard Worker void main () 3964*35238bceSAndroid Build Coastguard Worker { 3965*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(func(vec3(1.0))); 3966*35238bceSAndroid Build Coastguard Worker } 3967*35238bceSAndroid Build Coastguard Worker "" 3968*35238bceSAndroid Build Coastguard Worker end 3969*35238bceSAndroid Build Coastguard Worker 3970*35238bceSAndroid Build Coastguard Worker case inout_return_type 3971*35238bceSAndroid Build Coastguard Worker version 300 es 3972*35238bceSAndroid Build Coastguard Worker expect compile_fail 3973*35238bceSAndroid Build Coastguard Worker both "" 3974*35238bceSAndroid Build Coastguard Worker #version 300 es 3975*35238bceSAndroid Build Coastguard Worker precision mediump float; 3976*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3977*35238bceSAndroid Build Coastguard Worker 3978*35238bceSAndroid Build Coastguard Worker inout float func (vec3 f) 3979*35238bceSAndroid Build Coastguard Worker { 3980*35238bceSAndroid Build Coastguard Worker return f.x; 3981*35238bceSAndroid Build Coastguard Worker } 3982*35238bceSAndroid Build Coastguard Worker 3983*35238bceSAndroid Build Coastguard Worker void main () 3984*35238bceSAndroid Build Coastguard Worker { 3985*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(func(vec3(1.0))); 3986*35238bceSAndroid Build Coastguard Worker } 3987*35238bceSAndroid Build Coastguard Worker "" 3988*35238bceSAndroid Build Coastguard Worker end 3989*35238bceSAndroid Build Coastguard Worker 3990*35238bceSAndroid Build Coastguard Worker case main_invalid_return_type 3991*35238bceSAndroid Build Coastguard Worker version 300 es 3992*35238bceSAndroid Build Coastguard Worker expect compile_fail 3993*35238bceSAndroid Build Coastguard Worker both "" 3994*35238bceSAndroid Build Coastguard Worker #version 300 es 3995*35238bceSAndroid Build Coastguard Worker precision mediump float; 3996*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 3997*35238bceSAndroid Build Coastguard Worker 3998*35238bceSAndroid Build Coastguard Worker float main () 3999*35238bceSAndroid Build Coastguard Worker { 4000*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 4001*35238bceSAndroid Build Coastguard Worker } 4002*35238bceSAndroid Build Coastguard Worker "" 4003*35238bceSAndroid Build Coastguard Worker end 4004*35238bceSAndroid Build Coastguard Worker 4005*35238bceSAndroid Build Coastguard Worker case main_has_arguments 4006*35238bceSAndroid Build Coastguard Worker version 300 es 4007*35238bceSAndroid Build Coastguard Worker expect compile_fail 4008*35238bceSAndroid Build Coastguard Worker both "" 4009*35238bceSAndroid Build Coastguard Worker #version 300 es 4010*35238bceSAndroid Build Coastguard Worker precision mediump float; 4011*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 4012*35238bceSAndroid Build Coastguard Worker 4013*35238bceSAndroid Build Coastguard Worker void main (float f) 4014*35238bceSAndroid Build Coastguard Worker { 4015*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 4016*35238bceSAndroid Build Coastguard Worker } 4017*35238bceSAndroid Build Coastguard Worker "" 4018*35238bceSAndroid Build Coastguard Worker end 4019*35238bceSAndroid Build Coastguard Worker 4020*35238bceSAndroid Build Coastguard Worker case main_missing_return_type 4021*35238bceSAndroid Build Coastguard Worker version 300 es 4022*35238bceSAndroid Build Coastguard Worker expect compile_fail 4023*35238bceSAndroid Build Coastguard Worker both "" 4024*35238bceSAndroid Build Coastguard Worker #version 300 es 4025*35238bceSAndroid Build Coastguard Worker precision mediump float; 4026*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 4027*35238bceSAndroid Build Coastguard Worker 4028*35238bceSAndroid Build Coastguard Worker main () 4029*35238bceSAndroid Build Coastguard Worker { 4030*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 4031*35238bceSAndroid Build Coastguard Worker } 4032*35238bceSAndroid Build Coastguard Worker "" 4033*35238bceSAndroid Build Coastguard Worker end 4034*35238bceSAndroid Build Coastguard Worker 4035*35238bceSAndroid Build Coastguard Worker case write_const_arg 4036*35238bceSAndroid Build Coastguard Worker version 300 es 4037*35238bceSAndroid Build Coastguard Worker expect compile_fail 4038*35238bceSAndroid Build Coastguard Worker both "" 4039*35238bceSAndroid Build Coastguard Worker #version 300 es 4040*35238bceSAndroid Build Coastguard Worker precision mediump float; 4041*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 4042*35238bceSAndroid Build Coastguard Worker 4043*35238bceSAndroid Build Coastguard Worker float func (const float f) 4044*35238bceSAndroid Build Coastguard Worker { 4045*35238bceSAndroid Build Coastguard Worker f = 1.0; 4046*35238bceSAndroid Build Coastguard Worker } 4047*35238bceSAndroid Build Coastguard Worker 4048*35238bceSAndroid Build Coastguard Worker void main () 4049*35238bceSAndroid Build Coastguard Worker { 4050*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 4051*35238bceSAndroid Build Coastguard Worker } 4052*35238bceSAndroid Build Coastguard Worker "" 4053*35238bceSAndroid Build Coastguard Worker end 4054*35238bceSAndroid Build Coastguard Worker 4055*35238bceSAndroid Build Coastguard Worker case write_const_array_arg 4056*35238bceSAndroid Build Coastguard Worker version 300 es 4057*35238bceSAndroid Build Coastguard Worker expect compile_fail 4058*35238bceSAndroid Build Coastguard Worker both "" 4059*35238bceSAndroid Build Coastguard Worker #version 300 es 4060*35238bceSAndroid Build Coastguard Worker precision mediump float; 4061*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 4062*35238bceSAndroid Build Coastguard Worker 4063*35238bceSAndroid Build Coastguard Worker float func (const float f[3]) 4064*35238bceSAndroid Build Coastguard Worker { 4065*35238bceSAndroid Build Coastguard Worker f[0] = 1.0; 4066*35238bceSAndroid Build Coastguard Worker } 4067*35238bceSAndroid Build Coastguard Worker 4068*35238bceSAndroid Build Coastguard Worker void main () 4069*35238bceSAndroid Build Coastguard Worker { 4070*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 4071*35238bceSAndroid Build Coastguard Worker } 4072*35238bceSAndroid Build Coastguard Worker "" 4073*35238bceSAndroid Build Coastguard Worker end 4074*35238bceSAndroid Build Coastguard Worker 4075*35238bceSAndroid Build Coastguard Worker case use_const_arg_in_const_expr 4076*35238bceSAndroid Build Coastguard Worker version 300 es 4077*35238bceSAndroid Build Coastguard Worker expect compile_fail 4078*35238bceSAndroid Build Coastguard Worker both "" 4079*35238bceSAndroid Build Coastguard Worker #version 300 es 4080*35238bceSAndroid Build Coastguard Worker precision mediump float; 4081*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 4082*35238bceSAndroid Build Coastguard Worker 4083*35238bceSAndroid Build Coastguard Worker float func (const int i) 4084*35238bceSAndroid Build Coastguard Worker { 4085*35238bceSAndroid Build Coastguard Worker const int z = i+1; 4086*35238bceSAndroid Build Coastguard Worker return float(z); 4087*35238bceSAndroid Build Coastguard Worker } 4088*35238bceSAndroid Build Coastguard Worker 4089*35238bceSAndroid Build Coastguard Worker void main () 4090*35238bceSAndroid Build Coastguard Worker { 4091*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(func(1)); 4092*35238bceSAndroid Build Coastguard Worker } 4093*35238bceSAndroid Build Coastguard Worker "" 4094*35238bceSAndroid Build Coastguard Worker end 4095*35238bceSAndroid Build Coastguard Worker 4096*35238bceSAndroid Build Coastguard Worker case use_const_arg_as_array_size 4097*35238bceSAndroid Build Coastguard Worker version 300 es 4098*35238bceSAndroid Build Coastguard Worker expect compile_fail 4099*35238bceSAndroid Build Coastguard Worker both "" 4100*35238bceSAndroid Build Coastguard Worker #version 300 es 4101*35238bceSAndroid Build Coastguard Worker precision mediump float; 4102*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 4103*35238bceSAndroid Build Coastguard Worker 4104*35238bceSAndroid Build Coastguard Worker float func (const int i) 4105*35238bceSAndroid Build Coastguard Worker { 4106*35238bceSAndroid Build Coastguard Worker float f[i]; 4107*35238bceSAndroid Build Coastguard Worker f[0] = 1.0; 4108*35238bceSAndroid Build Coastguard Worker return f[0]; 4109*35238bceSAndroid Build Coastguard Worker } 4110*35238bceSAndroid Build Coastguard Worker 4111*35238bceSAndroid Build Coastguard Worker void main () 4112*35238bceSAndroid Build Coastguard Worker { 4113*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(func(1)); 4114*35238bceSAndroid Build Coastguard Worker } 4115*35238bceSAndroid Build Coastguard Worker "" 4116*35238bceSAndroid Build Coastguard Worker end 4117*35238bceSAndroid Build Coastguard Worker 4118*35238bceSAndroid Build Coastguard Worker case overload_builtin_function 4119*35238bceSAndroid Build Coastguard Worker version 300 es 4120*35238bceSAndroid Build Coastguard Worker expect compile_fail 4121*35238bceSAndroid Build Coastguard Worker both "" 4122*35238bceSAndroid Build Coastguard Worker #version 300 es 4123*35238bceSAndroid Build Coastguard Worker precision mediump float; 4124*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 4125*35238bceSAndroid Build Coastguard Worker 4126*35238bceSAndroid Build Coastguard Worker int sin (int x) 4127*35238bceSAndroid Build Coastguard Worker { 4128*35238bceSAndroid Build Coastguard Worker return int(sin(float(x))); 4129*35238bceSAndroid Build Coastguard Worker } 4130*35238bceSAndroid Build Coastguard Worker 4131*35238bceSAndroid Build Coastguard Worker void main () 4132*35238bceSAndroid Build Coastguard Worker { 4133*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(sin(1)); 4134*35238bceSAndroid Build Coastguard Worker } 4135*35238bceSAndroid Build Coastguard Worker "" 4136*35238bceSAndroid Build Coastguard Worker end 4137*35238bceSAndroid Build Coastguard Worker 4138*35238bceSAndroid Build Coastguard Worker case redefine_builtin_function 4139*35238bceSAndroid Build Coastguard Worker version 300 es 4140*35238bceSAndroid Build Coastguard Worker expect compile_fail 4141*35238bceSAndroid Build Coastguard Worker both "" 4142*35238bceSAndroid Build Coastguard Worker #version 300 es 4143*35238bceSAndroid Build Coastguard Worker precision mediump float; 4144*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 4145*35238bceSAndroid Build Coastguard Worker 4146*35238bceSAndroid Build Coastguard Worker float sin (float x) 4147*35238bceSAndroid Build Coastguard Worker { 4148*35238bceSAndroid Build Coastguard Worker return 0.0; 4149*35238bceSAndroid Build Coastguard Worker } 4150*35238bceSAndroid Build Coastguard Worker 4151*35238bceSAndroid Build Coastguard Worker void main () 4152*35238bceSAndroid Build Coastguard Worker { 4153*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(sin(1.0)); 4154*35238bceSAndroid Build Coastguard Worker } 4155*35238bceSAndroid Build Coastguard Worker "" 4156*35238bceSAndroid Build Coastguard Worker end 4157*35238bceSAndroid Build Coastguard Worker 4158*35238bceSAndroid Build Coastguard Worker case basic_recursion 4159*35238bceSAndroid Build Coastguard Worker version 300 es 4160*35238bceSAndroid Build Coastguard Worker expect compile_fail 4161*35238bceSAndroid Build Coastguard Worker both "" 4162*35238bceSAndroid Build Coastguard Worker #version 300 es 4163*35238bceSAndroid Build Coastguard Worker precision mediump float; 4164*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 4165*35238bceSAndroid Build Coastguard Worker 4166*35238bceSAndroid Build Coastguard Worker float fib (float x) 4167*35238bceSAndroid Build Coastguard Worker { 4168*35238bceSAndroid Build Coastguard Worker if (x <= 1.0) 4169*35238bceSAndroid Build Coastguard Worker return x; 4170*35238bceSAndroid Build Coastguard Worker else 4171*35238bceSAndroid Build Coastguard Worker return fib(x-2.0) + fib(x-1.0); 4172*35238bceSAndroid Build Coastguard Worker } 4173*35238bceSAndroid Build Coastguard Worker 4174*35238bceSAndroid Build Coastguard Worker void main () 4175*35238bceSAndroid Build Coastguard Worker { 4176*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(fib(5.0)); 4177*35238bceSAndroid Build Coastguard Worker } 4178*35238bceSAndroid Build Coastguard Worker "" 4179*35238bceSAndroid Build Coastguard Worker end 4180*35238bceSAndroid Build Coastguard Worker 4181*35238bceSAndroid Build Coastguard Worker case simple_tail_recursion 4182*35238bceSAndroid Build Coastguard Worker version 300 es 4183*35238bceSAndroid Build Coastguard Worker expect compile_fail 4184*35238bceSAndroid Build Coastguard Worker both "" 4185*35238bceSAndroid Build Coastguard Worker #version 300 es 4186*35238bceSAndroid Build Coastguard Worker precision mediump float; 4187*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 4188*35238bceSAndroid Build Coastguard Worker 4189*35238bceSAndroid Build Coastguard Worker float rec (float x) 4190*35238bceSAndroid Build Coastguard Worker { 4191*35238bceSAndroid Build Coastguard Worker if (x <= 0.0) 4192*35238bceSAndroid Build Coastguard Worker return 0.0; 4193*35238bceSAndroid Build Coastguard Worker else 4194*35238bceSAndroid Build Coastguard Worker return rec(x-1.0); 4195*35238bceSAndroid Build Coastguard Worker } 4196*35238bceSAndroid Build Coastguard Worker 4197*35238bceSAndroid Build Coastguard Worker void main () 4198*35238bceSAndroid Build Coastguard Worker { 4199*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(rec(5.0)); 4200*35238bceSAndroid Build Coastguard Worker } 4201*35238bceSAndroid Build Coastguard Worker "" 4202*35238bceSAndroid Build Coastguard Worker end 4203*35238bceSAndroid Build Coastguard Worker 4204*35238bceSAndroid Build Coastguard Worker case dynamic_conditional_recursion 4205*35238bceSAndroid Build Coastguard Worker version 300 es 4206*35238bceSAndroid Build Coastguard Worker expect compile_fail 4207*35238bceSAndroid Build Coastguard Worker both "" 4208*35238bceSAndroid Build Coastguard Worker #version 300 es 4209*35238bceSAndroid Build Coastguard Worker precision mediump float; 4210*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 4211*35238bceSAndroid Build Coastguard Worker uniform float ua; 4212*35238bceSAndroid Build Coastguard Worker uniform float ub; 4213*35238bceSAndroid Build Coastguard Worker 4214*35238bceSAndroid Build Coastguard Worker float funcA (float x); 4215*35238bceSAndroid Build Coastguard Worker float funcB (float x); 4216*35238bceSAndroid Build Coastguard Worker 4217*35238bceSAndroid Build Coastguard Worker float funcA (float x) 4218*35238bceSAndroid Build Coastguard Worker { 4219*35238bceSAndroid Build Coastguard Worker if (ub+x > 0.0) 4220*35238bceSAndroid Build Coastguard Worker funcB(x*2.0); 4221*35238bceSAndroid Build Coastguard Worker else 4222*35238bceSAndroid Build Coastguard Worker return ub; 4223*35238bceSAndroid Build Coastguard Worker } 4224*35238bceSAndroid Build Coastguard Worker 4225*35238bceSAndroid Build Coastguard Worker float funcB (float x) 4226*35238bceSAndroid Build Coastguard Worker { 4227*35238bceSAndroid Build Coastguard Worker return sqrt(funcA(x)); 4228*35238bceSAndroid Build Coastguard Worker } 4229*35238bceSAndroid Build Coastguard Worker 4230*35238bceSAndroid Build Coastguard Worker void main () 4231*35238bceSAndroid Build Coastguard Worker { 4232*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(funcB(ua)); 4233*35238bceSAndroid Build Coastguard Worker } 4234*35238bceSAndroid Build Coastguard Worker "" 4235*35238bceSAndroid Build Coastguard Worker end 4236*35238bceSAndroid Build Coastguard Worker 4237*35238bceSAndroid Build Coastguard Worker case dynamic_loop_recursion 4238*35238bceSAndroid Build Coastguard Worker version 300 es 4239*35238bceSAndroid Build Coastguard Worker expect compile_fail 4240*35238bceSAndroid Build Coastguard Worker both "" 4241*35238bceSAndroid Build Coastguard Worker #version 300 es 4242*35238bceSAndroid Build Coastguard Worker precision mediump float; 4243*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 4244*35238bceSAndroid Build Coastguard Worker uniform float ua; 4245*35238bceSAndroid Build Coastguard Worker uniform float ub; 4246*35238bceSAndroid Build Coastguard Worker 4247*35238bceSAndroid Build Coastguard Worker float funcA (float x); 4248*35238bceSAndroid Build Coastguard Worker float funcB (float x); 4249*35238bceSAndroid Build Coastguard Worker 4250*35238bceSAndroid Build Coastguard Worker float funcA (float x) 4251*35238bceSAndroid Build Coastguard Worker { 4252*35238bceSAndroid Build Coastguard Worker for (float z = 0.0; z < ub+x; z++) 4253*35238bceSAndroid Build Coastguard Worker { 4254*35238bceSAndroid Build Coastguard Worker if (z > 2.0) 4255*35238bceSAndroid Build Coastguard Worker funcB(z*2.0); 4256*35238bceSAndroid Build Coastguard Worker else 4257*35238bceSAndroid Build Coastguard Worker return z; 4258*35238bceSAndroid Build Coastguard Worker } 4259*35238bceSAndroid Build Coastguard Worker } 4260*35238bceSAndroid Build Coastguard Worker 4261*35238bceSAndroid Build Coastguard Worker float funcB (float x) 4262*35238bceSAndroid Build Coastguard Worker { 4263*35238bceSAndroid Build Coastguard Worker return sqrt(funcA(x)); 4264*35238bceSAndroid Build Coastguard Worker } 4265*35238bceSAndroid Build Coastguard Worker 4266*35238bceSAndroid Build Coastguard Worker void main () 4267*35238bceSAndroid Build Coastguard Worker { 4268*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(funcB(ua)); 4269*35238bceSAndroid Build Coastguard Worker } 4270*35238bceSAndroid Build Coastguard Worker "" 4271*35238bceSAndroid Build Coastguard Worker end 4272*35238bceSAndroid Build Coastguard Worker 4273*35238bceSAndroid Build Coastguard Worker case dynamic_switch_recursion 4274*35238bceSAndroid Build Coastguard Worker version 300 es 4275*35238bceSAndroid Build Coastguard Worker expect compile_fail 4276*35238bceSAndroid Build Coastguard Worker both "" 4277*35238bceSAndroid Build Coastguard Worker #version 300 es 4278*35238bceSAndroid Build Coastguard Worker precision mediump float; 4279*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 4280*35238bceSAndroid Build Coastguard Worker uniform float ua; 4281*35238bceSAndroid Build Coastguard Worker uniform mediump int ub; 4282*35238bceSAndroid Build Coastguard Worker 4283*35238bceSAndroid Build Coastguard Worker float funcA (float x); 4284*35238bceSAndroid Build Coastguard Worker float funcB (float x); 4285*35238bceSAndroid Build Coastguard Worker 4286*35238bceSAndroid Build Coastguard Worker float funcA (float x) 4287*35238bceSAndroid Build Coastguard Worker { 4288*35238bceSAndroid Build Coastguard Worker switch (ub + int(x)) 4289*35238bceSAndroid Build Coastguard Worker { 4290*35238bceSAndroid Build Coastguard Worker case 0: return ua-1.0; 4291*35238bceSAndroid Build Coastguard Worker case 1: return ua; 4292*35238bceSAndroid Build Coastguard Worker case 2: return funcB(x*2.0); 4293*35238bceSAndroid Build Coastguard Worker default: return 0.0; 4294*35238bceSAndroid Build Coastguard Worker } 4295*35238bceSAndroid Build Coastguard Worker } 4296*35238bceSAndroid Build Coastguard Worker 4297*35238bceSAndroid Build Coastguard Worker float funcB (float x) 4298*35238bceSAndroid Build Coastguard Worker { 4299*35238bceSAndroid Build Coastguard Worker return sqrt(funcA(x)); 4300*35238bceSAndroid Build Coastguard Worker } 4301*35238bceSAndroid Build Coastguard Worker 4302*35238bceSAndroid Build Coastguard Worker void main () 4303*35238bceSAndroid Build Coastguard Worker { 4304*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(funcB(ua)); 4305*35238bceSAndroid Build Coastguard Worker } 4306*35238bceSAndroid Build Coastguard Worker "" 4307*35238bceSAndroid Build Coastguard Worker end 4308*35238bceSAndroid Build Coastguard Worker 4309*35238bceSAndroid Build Coastguard Worker case modify_const_arg 4310*35238bceSAndroid Build Coastguard Worker version 300 es 4311*35238bceSAndroid Build Coastguard Worker expect compile_fail 4312*35238bceSAndroid Build Coastguard Worker both "" 4313*35238bceSAndroid Build Coastguard Worker #version 300 es 4314*35238bceSAndroid Build Coastguard Worker precision mediump float; 4315*35238bceSAndroid Build Coastguard Worker precision mediump int; 4316*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 4317*35238bceSAndroid Build Coastguard Worker 4318*35238bceSAndroid Build Coastguard Worker int func (const int a) 4319*35238bceSAndroid Build Coastguard Worker { 4320*35238bceSAndroid Build Coastguard Worker a = -a; 4321*35238bceSAndroid Build Coastguard Worker return 2 * a; 4322*35238bceSAndroid Build Coastguard Worker } 4323*35238bceSAndroid Build Coastguard Worker 4324*35238bceSAndroid Build Coastguard Worker void main() 4325*35238bceSAndroid Build Coastguard Worker { 4326*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(func(3)); 4327*35238bceSAndroid Build Coastguard Worker } 4328*35238bceSAndroid Build Coastguard Worker "" 4329*35238bceSAndroid Build Coastguard Worker end 4330*35238bceSAndroid Build Coastguard Worker 4331*35238bceSAndroid Build Coastguard Worker case init_const_local_from_const_arg 4332*35238bceSAndroid Build Coastguard Worker version 300 es 4333*35238bceSAndroid Build Coastguard Worker expect compile_fail 4334*35238bceSAndroid Build Coastguard Worker both "" 4335*35238bceSAndroid Build Coastguard Worker #version 300 es 4336*35238bceSAndroid Build Coastguard Worker precision mediump float; 4337*35238bceSAndroid Build Coastguard Worker precision mediump int; 4338*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 4339*35238bceSAndroid Build Coastguard Worker 4340*35238bceSAndroid Build Coastguard Worker int func (const int a) 4341*35238bceSAndroid Build Coastguard Worker { 4342*35238bceSAndroid Build Coastguard Worker const int b = -a; 4343*35238bceSAndroid Build Coastguard Worker return 2 * b; 4344*35238bceSAndroid Build Coastguard Worker } 4345*35238bceSAndroid Build Coastguard Worker 4346*35238bceSAndroid Build Coastguard Worker void main() 4347*35238bceSAndroid Build Coastguard Worker { 4348*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(func(3)); 4349*35238bceSAndroid Build Coastguard Worker } 4350*35238bceSAndroid Build Coastguard Worker "" 4351*35238bceSAndroid Build Coastguard Worker end 4352*35238bceSAndroid Build Coastguard Worker 4353*35238bceSAndroid Build Coastguard Worker case array_size_from_const_arg 4354*35238bceSAndroid Build Coastguard Worker version 300 es 4355*35238bceSAndroid Build Coastguard Worker expect compile_fail 4356*35238bceSAndroid Build Coastguard Worker both "" 4357*35238bceSAndroid Build Coastguard Worker #version 300 es 4358*35238bceSAndroid Build Coastguard Worker precision mediump float; 4359*35238bceSAndroid Build Coastguard Worker precision mediump int; 4360*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 4361*35238bceSAndroid Build Coastguard Worker 4362*35238bceSAndroid Build Coastguard Worker int func (const int a) 4363*35238bceSAndroid Build Coastguard Worker { 4364*35238bceSAndroid Build Coastguard Worker int arr[a]; 4365*35238bceSAndroid Build Coastguard Worker arr[1] = 3; 4366*35238bceSAndroid Build Coastguard Worker return arr[1]; 4367*35238bceSAndroid Build Coastguard Worker } 4368*35238bceSAndroid Build Coastguard Worker 4369*35238bceSAndroid Build Coastguard Worker void main() 4370*35238bceSAndroid Build Coastguard Worker { 4371*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(func(3)); 4372*35238bceSAndroid Build Coastguard Worker } 4373*35238bceSAndroid Build Coastguard Worker "" 4374*35238bceSAndroid Build Coastguard Worker end 4375*35238bceSAndroid Build Coastguard Worker 4376*35238bceSAndroid Build Coastguard Workerend # invalid 4377