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