1*35238bceSAndroid Build Coastguard Workergroup if "If Statements" 2*35238bceSAndroid Build Coastguard Worker 3*35238bceSAndroid Build Coastguard Worker case single_statement 4*35238bceSAndroid Build Coastguard Worker values 5*35238bceSAndroid Build Coastguard Worker { 6*35238bceSAndroid Build Coastguard Worker input float in0 = [ 0.0 | 1.0 | 2.0 ]; 7*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.0 | 1.0 | 1.0 ]; 8*35238bceSAndroid Build Coastguard Worker } 9*35238bceSAndroid Build Coastguard Worker 10*35238bceSAndroid Build Coastguard Worker both "" 11*35238bceSAndroid Build Coastguard Worker precision mediump float; 12*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 13*35238bceSAndroid Build Coastguard Worker void main() 14*35238bceSAndroid Build Coastguard Worker { 15*35238bceSAndroid Build Coastguard Worker out0 = 0.0; 16*35238bceSAndroid Build Coastguard Worker if (in0 >= 1.0) 17*35238bceSAndroid Build Coastguard Worker out0 = 1.0; 18*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 19*35238bceSAndroid Build Coastguard Worker } 20*35238bceSAndroid Build Coastguard Worker "" 21*35238bceSAndroid Build Coastguard Worker end 22*35238bceSAndroid Build Coastguard Worker 23*35238bceSAndroid Build Coastguard Worker case compound_statement 24*35238bceSAndroid Build Coastguard Worker values 25*35238bceSAndroid Build Coastguard Worker { 26*35238bceSAndroid Build Coastguard Worker input float in0 = [ 0.0 | 1.0 | 2.0 ]; 27*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.0 | 1.0 | 1.0 ]; 28*35238bceSAndroid Build Coastguard Worker output float out1 = [ 1.0 | 0.0 | 0.0 ]; 29*35238bceSAndroid Build Coastguard Worker } 30*35238bceSAndroid Build Coastguard Worker 31*35238bceSAndroid Build Coastguard Worker both "" 32*35238bceSAndroid Build Coastguard Worker precision mediump float; 33*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 34*35238bceSAndroid Build Coastguard Worker void main() 35*35238bceSAndroid Build Coastguard Worker { 36*35238bceSAndroid Build Coastguard Worker out0 = 0.0; 37*35238bceSAndroid Build Coastguard Worker out1 = 1.0; 38*35238bceSAndroid Build Coastguard Worker if (in0 >= 1.0) 39*35238bceSAndroid Build Coastguard Worker { 40*35238bceSAndroid Build Coastguard Worker out0 = 1.0; 41*35238bceSAndroid Build Coastguard Worker out1 = 0.0; 42*35238bceSAndroid Build Coastguard Worker } 43*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 44*35238bceSAndroid Build Coastguard Worker } 45*35238bceSAndroid Build Coastguard Worker "" 46*35238bceSAndroid Build Coastguard Worker end 47*35238bceSAndroid Build Coastguard Worker 48*35238bceSAndroid Build Coastguard Worker case sequence_statements 49*35238bceSAndroid Build Coastguard Worker values 50*35238bceSAndroid Build Coastguard Worker { 51*35238bceSAndroid Build Coastguard Worker input float in0 = [ 0.0 | 1.0 | 2.0 ]; 52*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.0 | 1.0 | 1.0 ]; 53*35238bceSAndroid Build Coastguard Worker output float out1 = [ 1.0 | 0.0 | 0.0 ]; 54*35238bceSAndroid Build Coastguard Worker } 55*35238bceSAndroid Build Coastguard Worker 56*35238bceSAndroid Build Coastguard Worker both "" 57*35238bceSAndroid Build Coastguard Worker precision mediump float; 58*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 59*35238bceSAndroid Build Coastguard Worker void main() 60*35238bceSAndroid Build Coastguard Worker { 61*35238bceSAndroid Build Coastguard Worker out0 = 0.0; 62*35238bceSAndroid Build Coastguard Worker out1 = 1.0; 63*35238bceSAndroid Build Coastguard Worker if (in0 >= 1.0) 64*35238bceSAndroid Build Coastguard Worker out0 = 1.0, out1 = 0.0; 65*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 66*35238bceSAndroid Build Coastguard Worker } 67*35238bceSAndroid Build Coastguard Worker "" 68*35238bceSAndroid Build Coastguard Worker end 69*35238bceSAndroid Build Coastguard Worker 70*35238bceSAndroid Build Coastguard Worker case sequence_condition 71*35238bceSAndroid Build Coastguard Worker values 72*35238bceSAndroid Build Coastguard Worker { 73*35238bceSAndroid Build Coastguard Worker input float in0 = [ 0.0 | 1.0 | 2.0 ]; 74*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.0 | 1.0 | 1.0 ]; 75*35238bceSAndroid Build Coastguard Worker output float out1 = [ 1.0 | 0.0 | 0.0 ]; 76*35238bceSAndroid Build Coastguard Worker } 77*35238bceSAndroid Build Coastguard Worker 78*35238bceSAndroid Build Coastguard Worker both "" 79*35238bceSAndroid Build Coastguard Worker precision mediump float; 80*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 81*35238bceSAndroid Build Coastguard Worker void main() 82*35238bceSAndroid Build Coastguard Worker { 83*35238bceSAndroid Build Coastguard Worker out0 = 0.0; 84*35238bceSAndroid Build Coastguard Worker out1 = 1.0; 85*35238bceSAndroid Build Coastguard Worker if (false, in0 >= 1.0) 86*35238bceSAndroid Build Coastguard Worker out0 = 1.0, out1 = 0.0; 87*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 88*35238bceSAndroid Build Coastguard Worker } 89*35238bceSAndroid Build Coastguard Worker "" 90*35238bceSAndroid Build Coastguard Worker end 91*35238bceSAndroid Build Coastguard Worker 92*35238bceSAndroid Build Coastguard Worker case complex_condition 93*35238bceSAndroid Build Coastguard Worker values 94*35238bceSAndroid Build Coastguard Worker { 95*35238bceSAndroid Build Coastguard Worker input float in0 = [ 0.0 | 1.0 | 2.0 ]; 96*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.0 | 1.0 | 1.0 ]; 97*35238bceSAndroid Build Coastguard Worker output float out1 = [ 1.0 | 0.0 | 0.0 ]; 98*35238bceSAndroid Build Coastguard Worker } 99*35238bceSAndroid Build Coastguard Worker 100*35238bceSAndroid Build Coastguard Worker both "" 101*35238bceSAndroid Build Coastguard Worker precision mediump float; 102*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 103*35238bceSAndroid Build Coastguard Worker void main() 104*35238bceSAndroid Build Coastguard Worker { 105*35238bceSAndroid Build Coastguard Worker out0 = 0.0; 106*35238bceSAndroid Build Coastguard Worker out1 = 1.0; 107*35238bceSAndroid Build Coastguard Worker if (false || (in0 >= 1.0) && (in0 - 2.0*in0 < 0.0)) 108*35238bceSAndroid Build Coastguard Worker out0 = 1.0, out1 = 0.0; 109*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 110*35238bceSAndroid Build Coastguard Worker } 111*35238bceSAndroid Build Coastguard Worker "" 112*35238bceSAndroid Build Coastguard Worker end 113*35238bceSAndroid Build Coastguard Worker 114*35238bceSAndroid Build Coastguard Worker case if_else 115*35238bceSAndroid Build Coastguard Worker values 116*35238bceSAndroid Build Coastguard Worker { 117*35238bceSAndroid Build Coastguard Worker input float in0 = [ 0.0 | 1.0 | 2.0 ]; 118*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.0 | 1.0 | 1.0 ]; 119*35238bceSAndroid Build Coastguard Worker } 120*35238bceSAndroid Build Coastguard Worker 121*35238bceSAndroid Build Coastguard Worker both "" 122*35238bceSAndroid Build Coastguard Worker precision mediump float; 123*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 124*35238bceSAndroid Build Coastguard Worker void main() 125*35238bceSAndroid Build Coastguard Worker { 126*35238bceSAndroid Build Coastguard Worker if (in0 >= 1.0) 127*35238bceSAndroid Build Coastguard Worker out0 = 1.0; 128*35238bceSAndroid Build Coastguard Worker else 129*35238bceSAndroid Build Coastguard Worker out0 = 0.0; 130*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 131*35238bceSAndroid Build Coastguard Worker } 132*35238bceSAndroid Build Coastguard Worker "" 133*35238bceSAndroid Build Coastguard Worker end 134*35238bceSAndroid Build Coastguard Worker 135*35238bceSAndroid Build Coastguard Worker case if_elseif 136*35238bceSAndroid Build Coastguard Worker values 137*35238bceSAndroid Build Coastguard Worker { 138*35238bceSAndroid Build Coastguard Worker input float in0 = [ 0.0 | 1.0 | 2.0 ]; 139*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.0 | 1.0 | 2.0 ]; 140*35238bceSAndroid Build Coastguard Worker } 141*35238bceSAndroid Build Coastguard Worker 142*35238bceSAndroid Build Coastguard Worker both "" 143*35238bceSAndroid Build Coastguard Worker precision mediump float; 144*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 145*35238bceSAndroid Build Coastguard Worker void main() 146*35238bceSAndroid Build Coastguard Worker { 147*35238bceSAndroid Build Coastguard Worker out0 = 0.0; 148*35238bceSAndroid Build Coastguard Worker if (in0 >= 2.0) 149*35238bceSAndroid Build Coastguard Worker out0 = 2.0; 150*35238bceSAndroid Build Coastguard Worker else if (in0 >= 1.0) 151*35238bceSAndroid Build Coastguard Worker out0 = 1.0; 152*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 153*35238bceSAndroid Build Coastguard Worker } 154*35238bceSAndroid Build Coastguard Worker "" 155*35238bceSAndroid Build Coastguard Worker end 156*35238bceSAndroid Build Coastguard Worker 157*35238bceSAndroid Build Coastguard Worker case if_elseif_else 158*35238bceSAndroid Build Coastguard Worker values 159*35238bceSAndroid Build Coastguard Worker { 160*35238bceSAndroid Build Coastguard Worker input float in0 = [ 0.0 | 1.0 | 2.0 ]; 161*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.0 | 1.0 | 2.0 ]; 162*35238bceSAndroid Build Coastguard Worker } 163*35238bceSAndroid Build Coastguard Worker 164*35238bceSAndroid Build Coastguard Worker both "" 165*35238bceSAndroid Build Coastguard Worker precision mediump float; 166*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 167*35238bceSAndroid Build Coastguard Worker void main() 168*35238bceSAndroid Build Coastguard Worker { 169*35238bceSAndroid Build Coastguard Worker if (in0 >= 2.0) 170*35238bceSAndroid Build Coastguard Worker out0 = 2.0; 171*35238bceSAndroid Build Coastguard Worker else if (in0 >= 1.0) 172*35238bceSAndroid Build Coastguard Worker out0 = 1.0; 173*35238bceSAndroid Build Coastguard Worker else 174*35238bceSAndroid Build Coastguard Worker out0 = 0.0; 175*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 176*35238bceSAndroid Build Coastguard Worker } 177*35238bceSAndroid Build Coastguard Worker "" 178*35238bceSAndroid Build Coastguard Worker end 179*35238bceSAndroid Build Coastguard Worker 180*35238bceSAndroid Build Coastguard Worker case mixed_if_elseif_else 181*35238bceSAndroid Build Coastguard Worker values 182*35238bceSAndroid Build Coastguard Worker { 183*35238bceSAndroid Build Coastguard Worker input float in0 = [ 0.0 | 1.0 | 2.0 ]; 184*35238bceSAndroid Build Coastguard Worker output float out0 = [ 0.0 | 1.0 | 2.0 ]; 185*35238bceSAndroid Build Coastguard Worker } 186*35238bceSAndroid Build Coastguard Worker 187*35238bceSAndroid Build Coastguard Worker both "" 188*35238bceSAndroid Build Coastguard Worker precision mediump float; 189*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 190*35238bceSAndroid Build Coastguard Worker void main() 191*35238bceSAndroid Build Coastguard Worker { 192*35238bceSAndroid Build Coastguard Worker if (in0 >= 2.0) 193*35238bceSAndroid Build Coastguard Worker { 194*35238bceSAndroid Build Coastguard Worker out0 = 2.0; 195*35238bceSAndroid Build Coastguard Worker } 196*35238bceSAndroid Build Coastguard Worker else if (in0 >= 1.0) 197*35238bceSAndroid Build Coastguard Worker out0 = 2.0, out0 = 1.0; 198*35238bceSAndroid Build Coastguard Worker else 199*35238bceSAndroid Build Coastguard Worker out0 = 0.0; 200*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 201*35238bceSAndroid Build Coastguard Worker } 202*35238bceSAndroid Build Coastguard Worker "" 203*35238bceSAndroid Build Coastguard Worker end 204*35238bceSAndroid Build Coastguard Worker 205*35238bceSAndroid Build Coastguard Worker case constant_conditional_assignment_to_matrix 206*35238bceSAndroid Build Coastguard Worker vertex "" 207*35238bceSAndroid Build Coastguard Worker // This variant doesn't provoke the crash seen in the versions below. 208*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 209*35238bceSAndroid Build Coastguard Worker varying mediump float FragVarying; 210*35238bceSAndroid Build Coastguard Worker const float in0 = 0.0; 211*35238bceSAndroid Build Coastguard Worker void main() 212*35238bceSAndroid Build Coastguard Worker { 213*35238bceSAndroid Build Coastguard Worker mat2 projectionMatrix = mat2(0.0, 0.0, 0.0, 0.0); 214*35238bceSAndroid Build Coastguard Worker if (in0 == 1.0) 215*35238bceSAndroid Build Coastguard Worker { 216*35238bceSAndroid Build Coastguard Worker projectionMatrix[0][0] = 1.0; 217*35238bceSAndroid Build Coastguard Worker } 218*35238bceSAndroid Build Coastguard Worker 219*35238bceSAndroid Build Coastguard Worker FragVarying = 1.0; 220*35238bceSAndroid Build Coastguard Worker gl_Position = dEQP_Position + vec4(projectionMatrix[1][0], 0.0, 0.0, 0.0); 221*35238bceSAndroid Build Coastguard Worker } 222*35238bceSAndroid Build Coastguard Worker "" 223*35238bceSAndroid Build Coastguard Worker fragment "" 224*35238bceSAndroid Build Coastguard Worker precision mediump float; 225*35238bceSAndroid Build Coastguard Worker varying float FragVarying; 226*35238bceSAndroid Build Coastguard Worker void main() 227*35238bceSAndroid Build Coastguard Worker { 228*35238bceSAndroid Build Coastguard Worker gl_FragColor = vec4(FragVarying, 1.0, 1.0, 1.0); 229*35238bceSAndroid Build Coastguard Worker } 230*35238bceSAndroid Build Coastguard Worker "" 231*35238bceSAndroid Build Coastguard Worker end 232*35238bceSAndroid Build Coastguard Worker 233*35238bceSAndroid Build Coastguard Worker case input_conditional_assignment_to_matrix 234*35238bceSAndroid Build Coastguard Worker values 235*35238bceSAndroid Build Coastguard Worker { 236*35238bceSAndroid Build Coastguard Worker input float in0 = [ 0.0 ]; 237*35238bceSAndroid Build Coastguard Worker } 238*35238bceSAndroid Build Coastguard Worker vertex "" 239*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 240*35238bceSAndroid Build Coastguard Worker varying mediump float FragVarying; // Necessary to reproduce. 241*35238bceSAndroid Build Coastguard Worker void main() 242*35238bceSAndroid Build Coastguard Worker { 243*35238bceSAndroid Build Coastguard Worker // Crashes with mat4 as well. Does not crash with vectors. 244*35238bceSAndroid Build Coastguard Worker mat2 projectionMatrix = mat2(0.0, 0.0, 0.0, 0.0); 245*35238bceSAndroid Build Coastguard Worker // Testing a non-constant variable is necessary. 246*35238bceSAndroid Build Coastguard Worker if (in0 == 1.0) 247*35238bceSAndroid Build Coastguard Worker { 248*35238bceSAndroid Build Coastguard Worker // Using the matrix variable appears necessary. 249*35238bceSAndroid Build Coastguard Worker projectionMatrix[0][0] = 1.0; 250*35238bceSAndroid Build Coastguard Worker } 251*35238bceSAndroid Build Coastguard Worker 252*35238bceSAndroid Build Coastguard Worker FragVarying = 1.0; 253*35238bceSAndroid Build Coastguard Worker // Referencing the matrix is necessary though clearly the compiler 254*35238bceSAndroid Build Coastguard Worker // doesn't realize the assignment is useless. 255*35238bceSAndroid Build Coastguard Worker gl_Position = dEQP_Position + vec4(projectionMatrix[1][0], 0.0, 0.0, 0.0); 256*35238bceSAndroid Build Coastguard Worker } 257*35238bceSAndroid Build Coastguard Worker "" 258*35238bceSAndroid Build Coastguard Worker fragment "" 259*35238bceSAndroid Build Coastguard Worker precision mediump float; 260*35238bceSAndroid Build Coastguard Worker varying float FragVarying; 261*35238bceSAndroid Build Coastguard Worker void main() 262*35238bceSAndroid Build Coastguard Worker { 263*35238bceSAndroid Build Coastguard Worker gl_FragColor = vec4(FragVarying, 1.0, 1.0, 1.0); 264*35238bceSAndroid Build Coastguard Worker } 265*35238bceSAndroid Build Coastguard Worker "" 266*35238bceSAndroid Build Coastguard Worker end 267*35238bceSAndroid Build Coastguard Worker 268*35238bceSAndroid Build Coastguard Worker case uniform_conditional_assignment_to_matrix 269*35238bceSAndroid Build Coastguard Worker values 270*35238bceSAndroid Build Coastguard Worker { 271*35238bceSAndroid Build Coastguard Worker uniform float uni0 = [ 0.0 ]; 272*35238bceSAndroid Build Coastguard Worker } 273*35238bceSAndroid Build Coastguard Worker vertex "" 274*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 275*35238bceSAndroid Build Coastguard Worker varying mediump float FragVarying; // Necessary to reproduce. 276*35238bceSAndroid Build Coastguard Worker void main() 277*35238bceSAndroid Build Coastguard Worker { 278*35238bceSAndroid Build Coastguard Worker // Crashes with mat4 as well. Does not crash with vectors. 279*35238bceSAndroid Build Coastguard Worker mat2 projectionMatrix = mat2(0.0, 0.0, 0.0, 0.0); 280*35238bceSAndroid Build Coastguard Worker // Testing a non-constant variable is necessary. 281*35238bceSAndroid Build Coastguard Worker if (uni0 == 1.0) 282*35238bceSAndroid Build Coastguard Worker { 283*35238bceSAndroid Build Coastguard Worker // Using the matrix variable appears necessary. 284*35238bceSAndroid Build Coastguard Worker projectionMatrix[0][0] = 1.0; 285*35238bceSAndroid Build Coastguard Worker } 286*35238bceSAndroid Build Coastguard Worker 287*35238bceSAndroid Build Coastguard Worker FragVarying = 1.0; 288*35238bceSAndroid Build Coastguard Worker // Referencing the matrix is necessary though clearly the compiler 289*35238bceSAndroid Build Coastguard Worker // doesn't realize the assignment is useless. 290*35238bceSAndroid Build Coastguard Worker gl_Position = dEQP_Position + vec4(projectionMatrix[1][0], 0.0, 0.0, 0.0); 291*35238bceSAndroid Build Coastguard Worker } 292*35238bceSAndroid Build Coastguard Worker "" 293*35238bceSAndroid Build Coastguard Worker fragment "" 294*35238bceSAndroid Build Coastguard Worker precision mediump float; 295*35238bceSAndroid Build Coastguard Worker varying float FragVarying; 296*35238bceSAndroid Build Coastguard Worker void main() 297*35238bceSAndroid Build Coastguard Worker { 298*35238bceSAndroid Build Coastguard Worker gl_FragColor = vec4(FragVarying, 1.0, 1.0, 1.0); 299*35238bceSAndroid Build Coastguard Worker } 300*35238bceSAndroid Build Coastguard Worker "" 301*35238bceSAndroid Build Coastguard Worker end 302*35238bceSAndroid Build Coastguard Worker 303*35238bceSAndroid Build Coastguard Workerend # if 304*35238bceSAndroid Build Coastguard Worker 305*35238bceSAndroid Build Coastguard Workergroup invalid_if "Invalid If Conditionals" 306*35238bceSAndroid Build Coastguard Worker 307*35238bceSAndroid Build Coastguard Worker case missing_parenthesis 308*35238bceSAndroid Build Coastguard Worker expect compile_fail 309*35238bceSAndroid Build Coastguard Worker both "" 310*35238bceSAndroid Build Coastguard Worker precision mediump float; 311*35238bceSAndroid Build Coastguard Worker void main() 312*35238bceSAndroid Build Coastguard Worker { 313*35238bceSAndroid Build Coastguard Worker if true 314*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 315*35238bceSAndroid Build Coastguard Worker } 316*35238bceSAndroid Build Coastguard Worker "" 317*35238bceSAndroid Build Coastguard Worker end 318*35238bceSAndroid Build Coastguard Worker 319*35238bceSAndroid Build Coastguard Worker case unclosed_parenthesis 320*35238bceSAndroid Build Coastguard Worker expect compile_fail 321*35238bceSAndroid Build Coastguard Worker both "" 322*35238bceSAndroid Build Coastguard Worker precision mediump float; 323*35238bceSAndroid Build Coastguard Worker void main() 324*35238bceSAndroid Build Coastguard Worker { 325*35238bceSAndroid Build Coastguard Worker if (true 326*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 327*35238bceSAndroid Build Coastguard Worker } 328*35238bceSAndroid Build Coastguard Worker "" 329*35238bceSAndroid Build Coastguard Worker end 330*35238bceSAndroid Build Coastguard Worker 331*35238bceSAndroid Build Coastguard Worker case int_condition 332*35238bceSAndroid Build Coastguard Worker expect compile_fail 333*35238bceSAndroid Build Coastguard Worker both "" 334*35238bceSAndroid Build Coastguard Worker precision mediump float; 335*35238bceSAndroid Build Coastguard Worker void main() 336*35238bceSAndroid Build Coastguard Worker { 337*35238bceSAndroid Build Coastguard Worker if (5) 338*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 339*35238bceSAndroid Build Coastguard Worker } 340*35238bceSAndroid Build Coastguard Worker "" 341*35238bceSAndroid Build Coastguard Worker end 342*35238bceSAndroid Build Coastguard Worker 343*35238bceSAndroid Build Coastguard Worker case int_zero_condition 344*35238bceSAndroid Build Coastguard Worker expect compile_fail 345*35238bceSAndroid Build Coastguard Worker both "" 346*35238bceSAndroid Build Coastguard Worker precision mediump float; 347*35238bceSAndroid Build Coastguard Worker void main() 348*35238bceSAndroid Build Coastguard Worker { 349*35238bceSAndroid Build Coastguard Worker if (0) 350*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 351*35238bceSAndroid Build Coastguard Worker } 352*35238bceSAndroid Build Coastguard Worker "" 353*35238bceSAndroid Build Coastguard Worker end 354*35238bceSAndroid Build Coastguard Worker 355*35238bceSAndroid Build Coastguard Worker case int_one_condition 356*35238bceSAndroid Build Coastguard Worker expect compile_fail 357*35238bceSAndroid Build Coastguard Worker both "" 358*35238bceSAndroid Build Coastguard Worker precision mediump float; 359*35238bceSAndroid Build Coastguard Worker void main() 360*35238bceSAndroid Build Coastguard Worker { 361*35238bceSAndroid Build Coastguard Worker if (1) 362*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 363*35238bceSAndroid Build Coastguard Worker } 364*35238bceSAndroid Build Coastguard Worker "" 365*35238bceSAndroid Build Coastguard Worker end 366*35238bceSAndroid Build Coastguard Worker 367*35238bceSAndroid Build Coastguard Worker case int_uniform_condition 368*35238bceSAndroid Build Coastguard Worker expect compile_fail 369*35238bceSAndroid Build Coastguard Worker 370*35238bceSAndroid Build Coastguard Worker both "" 371*35238bceSAndroid Build Coastguard Worker precision mediump float; 372*35238bceSAndroid Build Coastguard Worker precision mediump int; 373*35238bceSAndroid Build Coastguard Worker uniform int u0; 374*35238bceSAndroid Build Coastguard Worker void main() 375*35238bceSAndroid Build Coastguard Worker { 376*35238bceSAndroid Build Coastguard Worker if (u0) 377*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 378*35238bceSAndroid Build Coastguard Worker } 379*35238bceSAndroid Build Coastguard Worker "" 380*35238bceSAndroid Build Coastguard Worker end 381*35238bceSAndroid Build Coastguard Worker 382*35238bceSAndroid Build Coastguard Worker case float_condition 383*35238bceSAndroid Build Coastguard Worker expect compile_fail 384*35238bceSAndroid Build Coastguard Worker both "" 385*35238bceSAndroid Build Coastguard Worker precision mediump float; 386*35238bceSAndroid Build Coastguard Worker void main() 387*35238bceSAndroid Build Coastguard Worker { 388*35238bceSAndroid Build Coastguard Worker if (5.0) 389*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 390*35238bceSAndroid Build Coastguard Worker } 391*35238bceSAndroid Build Coastguard Worker "" 392*35238bceSAndroid Build Coastguard Worker end 393*35238bceSAndroid Build Coastguard Worker 394*35238bceSAndroid Build Coastguard Worker case float_zero_condition 395*35238bceSAndroid Build Coastguard Worker expect compile_fail 396*35238bceSAndroid Build Coastguard Worker both "" 397*35238bceSAndroid Build Coastguard Worker precision mediump float; 398*35238bceSAndroid Build Coastguard Worker void main() 399*35238bceSAndroid Build Coastguard Worker { 400*35238bceSAndroid Build Coastguard Worker if (0.0) 401*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 402*35238bceSAndroid Build Coastguard Worker } 403*35238bceSAndroid Build Coastguard Worker "" 404*35238bceSAndroid Build Coastguard Worker end 405*35238bceSAndroid Build Coastguard Worker 406*35238bceSAndroid Build Coastguard Worker case float_one_condition 407*35238bceSAndroid Build Coastguard Worker expect compile_fail 408*35238bceSAndroid Build Coastguard Worker both "" 409*35238bceSAndroid Build Coastguard Worker precision mediump float; 410*35238bceSAndroid Build Coastguard Worker void main() 411*35238bceSAndroid Build Coastguard Worker { 412*35238bceSAndroid Build Coastguard Worker if (1.0) 413*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 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 sampler_condition 419*35238bceSAndroid Build Coastguard Worker expect compile_fail 420*35238bceSAndroid Build Coastguard Worker both "" 421*35238bceSAndroid Build Coastguard Worker precision mediump float; 422*35238bceSAndroid Build Coastguard Worker uniform sampler2D s0; 423*35238bceSAndroid Build Coastguard Worker void main() 424*35238bceSAndroid Build Coastguard Worker { 425*35238bceSAndroid Build Coastguard Worker if (s0) 426*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1.0); 427*35238bceSAndroid Build Coastguard Worker } 428*35238bceSAndroid Build Coastguard Worker "" 429*35238bceSAndroid Build Coastguard Worker end 430*35238bceSAndroid Build Coastguard Worker 431*35238bceSAndroid Build Coastguard Workerend # invalid_if 432