1*35238bceSAndroid Build Coastguard Worker 2*35238bceSAndroid Build Coastguard Worker# Varying tests 3*35238bceSAndroid Build Coastguard Workergroup varying "Varying linkage" 4*35238bceSAndroid Build Coastguard Worker 5*35238bceSAndroid Build Coastguard Worker # Linking rules 6*35238bceSAndroid Build Coastguard Worker group rules "Varying linking rules" 7*35238bceSAndroid Build Coastguard Worker # not declared in vertex shader, declared in fragment shader 8*35238bceSAndroid Build Coastguard Worker case fragment_declare 9*35238bceSAndroid Build Coastguard Worker version 300 es 10*35238bceSAndroid Build Coastguard Worker desc "varying declared in fragment shader, no reference in vertex shader" 11*35238bceSAndroid Build Coastguard Worker values { output float out0 = 1.0; } 12*35238bceSAndroid Build Coastguard Worker vertex "" 13*35238bceSAndroid Build Coastguard Worker #version 300 es 14*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 15*35238bceSAndroid Build Coastguard Worker void main() 16*35238bceSAndroid Build Coastguard Worker { 17*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 18*35238bceSAndroid Build Coastguard Worker } 19*35238bceSAndroid Build Coastguard Worker "" 20*35238bceSAndroid Build Coastguard Worker fragment "" 21*35238bceSAndroid Build Coastguard Worker #version 300 es 22*35238bceSAndroid Build Coastguard Worker precision mediump float; 23*35238bceSAndroid Build Coastguard Worker in mediump float var; 24*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 25*35238bceSAndroid Build Coastguard Worker void main() 26*35238bceSAndroid Build Coastguard Worker { 27*35238bceSAndroid Build Coastguard Worker out0 = 1.0; 28*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 29*35238bceSAndroid Build Coastguard Worker } 30*35238bceSAndroid Build Coastguard Worker "" 31*35238bceSAndroid Build Coastguard Worker end 32*35238bceSAndroid Build Coastguard Worker 33*35238bceSAndroid Build Coastguard Worker # declared in vertex shader, no reference in frag shader 34*35238bceSAndroid Build Coastguard Worker case vertex_declare 35*35238bceSAndroid Build Coastguard Worker version 300 es 36*35238bceSAndroid Build Coastguard Worker desc "varying declared in vertex shader, no reference in fragment shader" 37*35238bceSAndroid Build Coastguard Worker vertex "" 38*35238bceSAndroid Build Coastguard Worker #version 300 es 39*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 40*35238bceSAndroid Build Coastguard Worker out mediump float var; 41*35238bceSAndroid Build Coastguard Worker void main() 42*35238bceSAndroid Build Coastguard Worker { 43*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 44*35238bceSAndroid Build Coastguard Worker } 45*35238bceSAndroid Build Coastguard Worker "" 46*35238bceSAndroid Build Coastguard Worker fragment "" 47*35238bceSAndroid Build Coastguard Worker #version 300 es 48*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 49*35238bceSAndroid Build Coastguard Worker void main() 50*35238bceSAndroid Build Coastguard Worker { 51*35238bceSAndroid Build Coastguard Worker ${FRAG_COLOR} = vec4(1.0); 52*35238bceSAndroid Build Coastguard Worker } 53*35238bceSAndroid Build Coastguard Worker "" 54*35238bceSAndroid Build Coastguard Worker end 55*35238bceSAndroid Build Coastguard Worker 56*35238bceSAndroid Build Coastguard Worker # declared in vertex shader, declared in frag shader 57*35238bceSAndroid Build Coastguard Worker case both_declare 58*35238bceSAndroid Build Coastguard Worker version 300 es 59*35238bceSAndroid Build Coastguard Worker desc "varying declared in both vertex and fragment shader, but not used" 60*35238bceSAndroid Build Coastguard Worker vertex "" 61*35238bceSAndroid Build Coastguard Worker #version 300 es 62*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 63*35238bceSAndroid Build Coastguard Worker out mediump float var; 64*35238bceSAndroid Build Coastguard Worker void main() 65*35238bceSAndroid Build Coastguard Worker { 66*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 67*35238bceSAndroid Build Coastguard Worker } 68*35238bceSAndroid Build Coastguard Worker "" 69*35238bceSAndroid Build Coastguard Worker fragment "" 70*35238bceSAndroid Build Coastguard Worker #version 300 es 71*35238bceSAndroid Build Coastguard Worker in mediump float var; 72*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 73*35238bceSAndroid Build Coastguard Worker void main() 74*35238bceSAndroid Build Coastguard Worker { 75*35238bceSAndroid Build Coastguard Worker ${FRAG_COLOR} = vec4(1.0); 76*35238bceSAndroid Build Coastguard Worker } 77*35238bceSAndroid Build Coastguard Worker "" 78*35238bceSAndroid Build Coastguard Worker end 79*35238bceSAndroid Build Coastguard Worker 80*35238bceSAndroid Build Coastguard Worker # declared in vertex shader, static use in frag shader 81*35238bceSAndroid Build Coastguard Worker case vertex_declare_fragment_use 82*35238bceSAndroid Build Coastguard Worker version 300 es 83*35238bceSAndroid Build Coastguard Worker desc "varying declared in both shaders, statically used in fragment shader" 84*35238bceSAndroid Build Coastguard Worker values { uniform bool u_false = false; } 85*35238bceSAndroid Build Coastguard Worker vertex "" 86*35238bceSAndroid Build Coastguard Worker #version 300 es 87*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 88*35238bceSAndroid Build Coastguard Worker out mediump float var; 89*35238bceSAndroid Build Coastguard Worker void main() 90*35238bceSAndroid Build Coastguard Worker { 91*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 92*35238bceSAndroid Build Coastguard Worker } 93*35238bceSAndroid Build Coastguard Worker "" 94*35238bceSAndroid Build Coastguard Worker fragment "" 95*35238bceSAndroid Build Coastguard Worker #version 300 es 96*35238bceSAndroid Build Coastguard Worker in mediump float var; 97*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 98*35238bceSAndroid Build Coastguard Worker void main() 99*35238bceSAndroid Build Coastguard Worker { 100*35238bceSAndroid Build Coastguard Worker if (u_false) 101*35238bceSAndroid Build Coastguard Worker ${FRAG_COLOR} = vec4(var); 102*35238bceSAndroid Build Coastguard Worker else 103*35238bceSAndroid Build Coastguard Worker ${FRAG_COLOR} = vec4(1.0); 104*35238bceSAndroid Build Coastguard Worker } 105*35238bceSAndroid Build Coastguard Worker "" 106*35238bceSAndroid Build Coastguard Worker end 107*35238bceSAndroid Build Coastguard Worker 108*35238bceSAndroid Build Coastguard Worker # static use in vertex shader, no reference in fragment shader 109*35238bceSAndroid Build Coastguard Worker case vertex_use_fragment_declare 110*35238bceSAndroid Build Coastguard Worker version 300 es 111*35238bceSAndroid Build Coastguard Worker desc "varying declared and statically used in vertex shader, no reference in fragment shader" 112*35238bceSAndroid Build Coastguard Worker values { uniform bool u_false = false; } 113*35238bceSAndroid Build Coastguard Worker vertex "" 114*35238bceSAndroid Build Coastguard Worker #version 300 es 115*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 116*35238bceSAndroid Build Coastguard Worker out mediump float var; 117*35238bceSAndroid Build Coastguard Worker void main() 118*35238bceSAndroid Build Coastguard Worker { 119*35238bceSAndroid Build Coastguard Worker if (u_false) 120*35238bceSAndroid Build Coastguard Worker var = 1.0; 121*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 122*35238bceSAndroid Build Coastguard Worker } 123*35238bceSAndroid Build Coastguard Worker "" 124*35238bceSAndroid Build Coastguard Worker fragment "" 125*35238bceSAndroid Build Coastguard Worker #version 300 es 126*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 127*35238bceSAndroid Build Coastguard Worker void main() 128*35238bceSAndroid Build Coastguard Worker { 129*35238bceSAndroid Build Coastguard Worker ${FRAG_COLOR} = vec4(1.0); 130*35238bceSAndroid Build Coastguard Worker } 131*35238bceSAndroid Build Coastguard Worker "" 132*35238bceSAndroid Build Coastguard Worker end 133*35238bceSAndroid Build Coastguard Worker 134*35238bceSAndroid Build Coastguard Worker # static use in vertex shader, declared in fragment shader 135*35238bceSAndroid Build Coastguard Worker case vertex_use_declare_fragment 136*35238bceSAndroid Build Coastguard Worker version 300 es 137*35238bceSAndroid Build Coastguard Worker desc "varying declared and statically used in vertex shader, only declared in fragment shader" 138*35238bceSAndroid Build Coastguard Worker values { uniform bool u_false = false; } 139*35238bceSAndroid Build Coastguard Worker vertex "" 140*35238bceSAndroid Build Coastguard Worker #version 300 es 141*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 142*35238bceSAndroid Build Coastguard Worker out mediump float var; 143*35238bceSAndroid Build Coastguard Worker void main() 144*35238bceSAndroid Build Coastguard Worker { 145*35238bceSAndroid Build Coastguard Worker if (u_false) 146*35238bceSAndroid Build Coastguard Worker var = 1.0; 147*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 148*35238bceSAndroid Build Coastguard Worker } 149*35238bceSAndroid Build Coastguard Worker "" 150*35238bceSAndroid Build Coastguard Worker fragment "" 151*35238bceSAndroid Build Coastguard Worker #version 300 es 152*35238bceSAndroid Build Coastguard Worker in mediump float var; 153*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 154*35238bceSAndroid Build Coastguard Worker void main() 155*35238bceSAndroid Build Coastguard Worker { 156*35238bceSAndroid Build Coastguard Worker ${FRAG_COLOR} = vec4(1.0); 157*35238bceSAndroid Build Coastguard Worker } 158*35238bceSAndroid Build Coastguard Worker "" 159*35238bceSAndroid Build Coastguard Worker end 160*35238bceSAndroid Build Coastguard Worker 161*35238bceSAndroid Build Coastguard Worker # static use in vertex shader, used in fragment shader 162*35238bceSAndroid Build Coastguard Worker case vertex_use_fragment_use 163*35238bceSAndroid Build Coastguard Worker version 300 es 164*35238bceSAndroid Build Coastguard Worker desc "varying statically used in both vertex and fragment shader" 165*35238bceSAndroid Build Coastguard Worker values { uniform bool u_false = false; } 166*35238bceSAndroid Build Coastguard Worker vertex "" 167*35238bceSAndroid Build Coastguard Worker #version 300 es 168*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 169*35238bceSAndroid Build Coastguard Worker out mediump float var; 170*35238bceSAndroid Build Coastguard Worker void main() 171*35238bceSAndroid Build Coastguard Worker { 172*35238bceSAndroid Build Coastguard Worker if (u_false) 173*35238bceSAndroid Build Coastguard Worker var = 1.0; 174*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 175*35238bceSAndroid Build Coastguard Worker } 176*35238bceSAndroid Build Coastguard Worker "" 177*35238bceSAndroid Build Coastguard Worker fragment "" 178*35238bceSAndroid Build Coastguard Worker #version 300 es 179*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 180*35238bceSAndroid Build Coastguard Worker in mediump float var; 181*35238bceSAndroid Build Coastguard Worker void main() 182*35238bceSAndroid Build Coastguard Worker { 183*35238bceSAndroid Build Coastguard Worker if (u_false) 184*35238bceSAndroid Build Coastguard Worker ${FRAG_COLOR} = vec4(var); 185*35238bceSAndroid Build Coastguard Worker else 186*35238bceSAndroid Build Coastguard Worker ${FRAG_COLOR} = vec4(1.0); 187*35238bceSAndroid Build Coastguard Worker } 188*35238bceSAndroid Build Coastguard Worker "" 189*35238bceSAndroid Build Coastguard Worker end 190*35238bceSAndroid Build Coastguard Worker 191*35238bceSAndroid Build Coastguard Worker # differing precision tests 192*35238bceSAndroid Build Coastguard Worker case differing_precision_1 193*35238bceSAndroid Build Coastguard Worker version 300 es 194*35238bceSAndroid Build Coastguard Worker desc "varying declared as highp in vertex shader, but mediump in fragment shader" 195*35238bceSAndroid Build Coastguard Worker values 196*35238bceSAndroid Build Coastguard Worker { 197*35238bceSAndroid Build Coastguard Worker input float in0 = [ -1.25 | -25.55 | 1.0 | 2.25 | 3.4 | 16.0 ]; 198*35238bceSAndroid Build Coastguard Worker output float out0 = [ -1.25 | -25.55 | 1.0 | 2.25 | 3.4 | 16.0 ]; 199*35238bceSAndroid Build Coastguard Worker } 200*35238bceSAndroid Build Coastguard Worker 201*35238bceSAndroid Build Coastguard Worker vertex "" 202*35238bceSAndroid Build Coastguard Worker #version 300 es 203*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 204*35238bceSAndroid Build Coastguard Worker out highp float var; 205*35238bceSAndroid Build Coastguard Worker void main() 206*35238bceSAndroid Build Coastguard Worker { 207*35238bceSAndroid Build Coastguard Worker var = in0; 208*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 209*35238bceSAndroid Build Coastguard Worker } 210*35238bceSAndroid Build Coastguard Worker "" 211*35238bceSAndroid Build Coastguard Worker fragment "" 212*35238bceSAndroid Build Coastguard Worker #version 300 es 213*35238bceSAndroid Build Coastguard Worker precision mediump float; 214*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 215*35238bceSAndroid Build Coastguard Worker in mediump float var; 216*35238bceSAndroid Build Coastguard Worker void main() 217*35238bceSAndroid Build Coastguard Worker { 218*35238bceSAndroid Build Coastguard Worker out0 = var; 219*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 220*35238bceSAndroid Build Coastguard Worker } 221*35238bceSAndroid Build Coastguard Worker "" 222*35238bceSAndroid Build Coastguard Worker end 223*35238bceSAndroid Build Coastguard Worker 224*35238bceSAndroid Build Coastguard Worker # differing precision tests 225*35238bceSAndroid Build Coastguard Worker case differing_precision_2 226*35238bceSAndroid Build Coastguard Worker version 300 es 227*35238bceSAndroid Build Coastguard Worker desc "varying declared as highp in vertex shader, but lowp in fragment shader" 228*35238bceSAndroid Build Coastguard Worker values 229*35238bceSAndroid Build Coastguard Worker { 230*35238bceSAndroid Build Coastguard Worker input float in0 = [ -1.25 | -25.56 | 1.0 | 2.25 | 3.4 | 16.0 ]; 231*35238bceSAndroid Build Coastguard Worker output float out0 = [ -1.25 | -25.56 | 1.0 | 2.25 | 3.4 | 16.0 ]; 232*35238bceSAndroid Build Coastguard Worker } 233*35238bceSAndroid Build Coastguard Worker 234*35238bceSAndroid Build Coastguard Worker vertex "" 235*35238bceSAndroid Build Coastguard Worker #version 300 es 236*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 237*35238bceSAndroid Build Coastguard Worker out highp vec2 var; 238*35238bceSAndroid Build Coastguard Worker void main() 239*35238bceSAndroid Build Coastguard Worker { 240*35238bceSAndroid Build Coastguard Worker var = vec2(in0, 2.0*in0); 241*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 242*35238bceSAndroid Build Coastguard Worker } 243*35238bceSAndroid Build Coastguard Worker "" 244*35238bceSAndroid Build Coastguard Worker fragment "" 245*35238bceSAndroid Build Coastguard Worker #version 300 es 246*35238bceSAndroid Build Coastguard Worker precision mediump float; 247*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 248*35238bceSAndroid Build Coastguard Worker in lowp vec2 var; 249*35238bceSAndroid Build Coastguard Worker void main() 250*35238bceSAndroid Build Coastguard Worker { 251*35238bceSAndroid Build Coastguard Worker out0 = var.y - var.x; 252*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 253*35238bceSAndroid Build Coastguard Worker } 254*35238bceSAndroid Build Coastguard Worker "" 255*35238bceSAndroid Build Coastguard Worker end 256*35238bceSAndroid Build Coastguard Worker 257*35238bceSAndroid Build Coastguard Worker # differing precision tests 258*35238bceSAndroid Build Coastguard Worker case differing_precision_3 259*35238bceSAndroid Build Coastguard Worker version 300 es 260*35238bceSAndroid Build Coastguard Worker desc "varying declared as lowp in vertex shader, but mediump in fragment shader" 261*35238bceSAndroid Build Coastguard Worker values 262*35238bceSAndroid Build Coastguard Worker { 263*35238bceSAndroid Build Coastguard Worker input float in0 = [ -1.25 | -25.0 | 1.0 | 2.25 | 3.4 | 16.0 ]; 264*35238bceSAndroid Build Coastguard Worker output float out0 = [ -1.25 | -25.0 | 1.0 | 2.25 | 3.4 | 16.0 ]; 265*35238bceSAndroid Build Coastguard Worker } 266*35238bceSAndroid Build Coastguard Worker 267*35238bceSAndroid Build Coastguard Worker vertex "" 268*35238bceSAndroid Build Coastguard Worker #version 300 es 269*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 270*35238bceSAndroid Build Coastguard Worker out lowp vec4 var; 271*35238bceSAndroid Build Coastguard Worker void main() 272*35238bceSAndroid Build Coastguard Worker { 273*35238bceSAndroid Build Coastguard Worker var = vec4(in0, 2.0*in0, -in0, -in0); 274*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 275*35238bceSAndroid Build Coastguard Worker } 276*35238bceSAndroid Build Coastguard Worker "" 277*35238bceSAndroid Build Coastguard Worker fragment "" 278*35238bceSAndroid Build Coastguard Worker #version 300 es 279*35238bceSAndroid Build Coastguard Worker precision mediump float; 280*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 281*35238bceSAndroid Build Coastguard Worker in mediump vec4 var; 282*35238bceSAndroid Build Coastguard Worker void main() 283*35238bceSAndroid Build Coastguard Worker { 284*35238bceSAndroid Build Coastguard Worker out0 = var.x + var.y + var.z + var.w; 285*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 286*35238bceSAndroid Build Coastguard Worker } 287*35238bceSAndroid Build Coastguard Worker "" 288*35238bceSAndroid Build Coastguard Worker end 289*35238bceSAndroid Build Coastguard Worker 290*35238bceSAndroid Build Coastguard Worker # mismatched type, static use but no runtime use in the fragment shader 291*35238bceSAndroid Build Coastguard Worker case type_mismatch_1 292*35238bceSAndroid Build Coastguard Worker version 300 es 293*35238bceSAndroid Build Coastguard Worker desc "varying type mismatch (float vs. vec2), static use but no runtime use in the fragment shader" 294*35238bceSAndroid Build Coastguard Worker expect link_fail 295*35238bceSAndroid Build Coastguard Worker vertex "" 296*35238bceSAndroid Build Coastguard Worker #version 300 es 297*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 298*35238bceSAndroid Build Coastguard Worker out mediump float var; 299*35238bceSAndroid Build Coastguard Worker void main() 300*35238bceSAndroid Build Coastguard Worker { 301*35238bceSAndroid Build Coastguard Worker var = 2.0; 302*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 303*35238bceSAndroid Build Coastguard Worker } 304*35238bceSAndroid Build Coastguard Worker "" 305*35238bceSAndroid Build Coastguard Worker fragment "" 306*35238bceSAndroid Build Coastguard Worker #version 300 es 307*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 308*35238bceSAndroid Build Coastguard Worker in mediump vec2 var; 309*35238bceSAndroid Build Coastguard Worker void main() 310*35238bceSAndroid Build Coastguard Worker { 311*35238bceSAndroid Build Coastguard Worker if (false) 312*35238bceSAndroid Build Coastguard Worker { 313*35238bceSAndroid Build Coastguard Worker ${FRAG_COLOR} = vec4(var.y); 314*35238bceSAndroid Build Coastguard Worker } 315*35238bceSAndroid Build Coastguard Worker else 316*35238bceSAndroid Build Coastguard Worker { 317*35238bceSAndroid Build Coastguard Worker ${FRAG_COLOR} = vec4(1.0); 318*35238bceSAndroid Build Coastguard Worker } 319*35238bceSAndroid Build Coastguard Worker } 320*35238bceSAndroid Build Coastguard Worker "" 321*35238bceSAndroid Build Coastguard Worker end 322*35238bceSAndroid Build Coastguard Worker 323*35238bceSAndroid Build Coastguard Worker # mismatched type, varyings used 324*35238bceSAndroid Build Coastguard Worker case type_mismatch_2 325*35238bceSAndroid Build Coastguard Worker version 300 es 326*35238bceSAndroid Build Coastguard Worker desc "varying type mismatch (float vs. vec2)" 327*35238bceSAndroid Build Coastguard Worker expect link_fail 328*35238bceSAndroid Build Coastguard Worker vertex "" 329*35238bceSAndroid Build Coastguard Worker #version 300 es 330*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 331*35238bceSAndroid Build Coastguard Worker out mediump float var; 332*35238bceSAndroid Build Coastguard Worker void main() 333*35238bceSAndroid Build Coastguard Worker { 334*35238bceSAndroid Build Coastguard Worker var = 2.0; 335*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 336*35238bceSAndroid Build Coastguard Worker } 337*35238bceSAndroid Build Coastguard Worker "" 338*35238bceSAndroid Build Coastguard Worker fragment "" 339*35238bceSAndroid Build Coastguard Worker #version 300 es 340*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 341*35238bceSAndroid Build Coastguard Worker in mediump vec2 var; 342*35238bceSAndroid Build Coastguard Worker void main() 343*35238bceSAndroid Build Coastguard Worker { 344*35238bceSAndroid Build Coastguard Worker ${FRAG_COLOR} = var.xyyx; 345*35238bceSAndroid Build Coastguard Worker } 346*35238bceSAndroid Build Coastguard Worker "" 347*35238bceSAndroid Build Coastguard Worker end 348*35238bceSAndroid Build Coastguard Worker 349*35238bceSAndroid Build Coastguard Worker # mismatched type, varyings used 350*35238bceSAndroid Build Coastguard Worker case type_mismatch_3 351*35238bceSAndroid Build Coastguard Worker version 300 es 352*35238bceSAndroid Build Coastguard Worker desc "varying type mismatch (int vs. uint)" 353*35238bceSAndroid Build Coastguard Worker expect link_fail 354*35238bceSAndroid Build Coastguard Worker vertex "" 355*35238bceSAndroid Build Coastguard Worker #version 300 es 356*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 357*35238bceSAndroid Build Coastguard Worker flat out mediump int var; 358*35238bceSAndroid Build Coastguard Worker void main() 359*35238bceSAndroid Build Coastguard Worker { 360*35238bceSAndroid Build Coastguard Worker var = 2; 361*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 362*35238bceSAndroid Build Coastguard Worker } 363*35238bceSAndroid Build Coastguard Worker "" 364*35238bceSAndroid Build Coastguard Worker fragment "" 365*35238bceSAndroid Build Coastguard Worker #version 300 es 366*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 367*35238bceSAndroid Build Coastguard Worker flat in mediump uint var; 368*35238bceSAndroid Build Coastguard Worker void main() 369*35238bceSAndroid Build Coastguard Worker { 370*35238bceSAndroid Build Coastguard Worker ${FRAG_COLOR} = vec4(var); 371*35238bceSAndroid Build Coastguard Worker } 372*35238bceSAndroid Build Coastguard Worker "" 373*35238bceSAndroid Build Coastguard Worker end 374*35238bceSAndroid Build Coastguard Worker 375*35238bceSAndroid Build Coastguard Worker # mismatched type, varyings used 376*35238bceSAndroid Build Coastguard Worker case struct_type_mismatch_1 377*35238bceSAndroid Build Coastguard Worker version 300 es 378*35238bceSAndroid Build Coastguard Worker desc "struct member mismatch" 379*35238bceSAndroid Build Coastguard Worker expect link_fail 380*35238bceSAndroid Build Coastguard Worker vertex "" 381*35238bceSAndroid Build Coastguard Worker #version 300 es 382*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 383*35238bceSAndroid Build Coastguard Worker struct S { highp float a; highp vec2 b; }; 384*35238bceSAndroid Build Coastguard Worker out S var; 385*35238bceSAndroid Build Coastguard Worker void main() 386*35238bceSAndroid Build Coastguard Worker { 387*35238bceSAndroid Build Coastguard Worker var.a = 2.0; 388*35238bceSAndroid Build Coastguard Worker var.b = vec2(1.0, 0.0); 389*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 390*35238bceSAndroid Build Coastguard Worker } 391*35238bceSAndroid Build Coastguard Worker "" 392*35238bceSAndroid Build Coastguard Worker fragment "" 393*35238bceSAndroid Build Coastguard Worker #version 300 es 394*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 395*35238bceSAndroid Build Coastguard Worker struct S { highp float a; highp vec3 b; }; 396*35238bceSAndroid Build Coastguard Worker in S var; 397*35238bceSAndroid Build Coastguard Worker void main() 398*35238bceSAndroid Build Coastguard Worker { 399*35238bceSAndroid Build Coastguard Worker ${FRAG_COLOR} = vec4(var.a, var.b); 400*35238bceSAndroid Build Coastguard Worker } 401*35238bceSAndroid Build Coastguard Worker "" 402*35238bceSAndroid Build Coastguard Worker end 403*35238bceSAndroid Build Coastguard Worker 404*35238bceSAndroid Build Coastguard Worker # mismatched type, varyings unused in fragment shader (runtime) 405*35238bceSAndroid Build Coastguard Worker case struct_type_mismatch_2 406*35238bceSAndroid Build Coastguard Worker version 300 es 407*35238bceSAndroid Build Coastguard Worker desc "struct member mismatch" 408*35238bceSAndroid Build Coastguard Worker expect link_fail 409*35238bceSAndroid Build Coastguard Worker vertex "" 410*35238bceSAndroid Build Coastguard Worker #version 300 es 411*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 412*35238bceSAndroid Build Coastguard Worker struct S { highp float a; highp vec2 b; }; 413*35238bceSAndroid Build Coastguard Worker out S var; 414*35238bceSAndroid Build Coastguard Worker void main() 415*35238bceSAndroid Build Coastguard Worker { 416*35238bceSAndroid Build Coastguard Worker var.a = 2.0; 417*35238bceSAndroid Build Coastguard Worker var.b = vec2(1.0, 0.0); 418*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 419*35238bceSAndroid Build Coastguard Worker } 420*35238bceSAndroid Build Coastguard Worker "" 421*35238bceSAndroid Build Coastguard Worker fragment "" 422*35238bceSAndroid Build Coastguard Worker #version 300 es 423*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 424*35238bceSAndroid Build Coastguard Worker struct S { highp float a; highp vec3 b; }; 425*35238bceSAndroid Build Coastguard Worker in S var; 426*35238bceSAndroid Build Coastguard Worker void main() 427*35238bceSAndroid Build Coastguard Worker { 428*35238bceSAndroid Build Coastguard Worker ${FRAG_COLOR} = vec4(var.a); 429*35238bceSAndroid Build Coastguard Worker if (false) 430*35238bceSAndroid Build Coastguard Worker ${FRAG_COLOR}.yzw = var.b; 431*35238bceSAndroid Build Coastguard Worker } 432*35238bceSAndroid Build Coastguard Worker "" 433*35238bceSAndroid Build Coastguard Worker end 434*35238bceSAndroid Build Coastguard Worker 435*35238bceSAndroid Build Coastguard Worker # mismatched type, varyings unused in both (runtime) 436*35238bceSAndroid Build Coastguard Worker case struct_type_mismatch_3 437*35238bceSAndroid Build Coastguard Worker version 300 es 438*35238bceSAndroid Build Coastguard Worker desc "struct member mismatch" 439*35238bceSAndroid Build Coastguard Worker expect link_fail 440*35238bceSAndroid Build Coastguard Worker vertex "" 441*35238bceSAndroid Build Coastguard Worker #version 300 es 442*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 443*35238bceSAndroid Build Coastguard Worker struct S { highp float a; highp vec2 b; }; 444*35238bceSAndroid Build Coastguard Worker out S var; 445*35238bceSAndroid Build Coastguard Worker void main() 446*35238bceSAndroid Build Coastguard Worker { 447*35238bceSAndroid Build Coastguard Worker var.a = 2.0; 448*35238bceSAndroid Build Coastguard Worker if (false) 449*35238bceSAndroid Build Coastguard Worker var.b = vec2(1.0, 0.0); 450*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 451*35238bceSAndroid Build Coastguard Worker } 452*35238bceSAndroid Build Coastguard Worker "" 453*35238bceSAndroid Build Coastguard Worker fragment "" 454*35238bceSAndroid Build Coastguard Worker #version 300 es 455*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 456*35238bceSAndroid Build Coastguard Worker struct S { highp float a; highp vec3 b; }; 457*35238bceSAndroid Build Coastguard Worker in S var; 458*35238bceSAndroid Build Coastguard Worker void main() 459*35238bceSAndroid Build Coastguard Worker { 460*35238bceSAndroid Build Coastguard Worker ${FRAG_COLOR} = vec4(var.a); 461*35238bceSAndroid Build Coastguard Worker if (false) 462*35238bceSAndroid Build Coastguard Worker ${FRAG_COLOR}.yzw = var.b; 463*35238bceSAndroid Build Coastguard Worker } 464*35238bceSAndroid Build Coastguard Worker "" 465*35238bceSAndroid Build Coastguard Worker end 466*35238bceSAndroid Build Coastguard Worker 467*35238bceSAndroid Build Coastguard Worker # interpolation_mismatch 468*35238bceSAndroid Build Coastguard Worker case interpolation_mismatch_1 469*35238bceSAndroid Build Coastguard Worker version 300 es 470*35238bceSAndroid Build Coastguard Worker desc "varying interpolation different (flat vs. smooth)" 471*35238bceSAndroid Build Coastguard Worker expect link_fail 472*35238bceSAndroid Build Coastguard Worker 473*35238bceSAndroid Build Coastguard Worker vertex "" 474*35238bceSAndroid Build Coastguard Worker #version 300 es 475*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 476*35238bceSAndroid Build Coastguard Worker in highp float in0; 477*35238bceSAndroid Build Coastguard Worker flat out mediump float var; 478*35238bceSAndroid Build Coastguard Worker void main() 479*35238bceSAndroid Build Coastguard Worker { 480*35238bceSAndroid Build Coastguard Worker var = in0; 481*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 482*35238bceSAndroid Build Coastguard Worker } 483*35238bceSAndroid Build Coastguard Worker "" 484*35238bceSAndroid Build Coastguard Worker fragment "" 485*35238bceSAndroid Build Coastguard Worker #version 300 es 486*35238bceSAndroid Build Coastguard Worker precision mediump float; 487*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 488*35238bceSAndroid Build Coastguard Worker in mediump float var; 489*35238bceSAndroid Build Coastguard Worker void main() 490*35238bceSAndroid Build Coastguard Worker { 491*35238bceSAndroid Build Coastguard Worker ${FRAG_COLOR} = vec4(var); 492*35238bceSAndroid Build Coastguard Worker } 493*35238bceSAndroid Build Coastguard Worker "" 494*35238bceSAndroid Build Coastguard Worker end 495*35238bceSAndroid Build Coastguard Worker 496*35238bceSAndroid Build Coastguard Worker # different interpolation 497*35238bceSAndroid Build Coastguard Worker case differing_interpolation_2 498*35238bceSAndroid Build Coastguard Worker version 300 es 499*35238bceSAndroid Build Coastguard Worker desc "varying interpolation different (smooth vs. centroid)" 500*35238bceSAndroid Build Coastguard Worker values 501*35238bceSAndroid Build Coastguard Worker { 502*35238bceSAndroid Build Coastguard Worker input float in0 = [ -1.25 | -25.0 | 1.0 | 2.25 | 3.4 | 16.0 ]; 503*35238bceSAndroid Build Coastguard Worker output float out0 = [ -1.25 | -25.0 | 1.0 | 2.25 | 3.4 | 16.0 ]; 504*35238bceSAndroid Build Coastguard Worker } 505*35238bceSAndroid Build Coastguard Worker 506*35238bceSAndroid Build Coastguard Worker vertex "" 507*35238bceSAndroid Build Coastguard Worker #version 300 es 508*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 509*35238bceSAndroid Build Coastguard Worker smooth out mediump float var; 510*35238bceSAndroid Build Coastguard Worker void main() 511*35238bceSAndroid Build Coastguard Worker { 512*35238bceSAndroid Build Coastguard Worker var = in0; 513*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 514*35238bceSAndroid Build Coastguard Worker } 515*35238bceSAndroid Build Coastguard Worker "" 516*35238bceSAndroid Build Coastguard Worker fragment "" 517*35238bceSAndroid Build Coastguard Worker #version 300 es 518*35238bceSAndroid Build Coastguard Worker precision mediump float; 519*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 520*35238bceSAndroid Build Coastguard Worker centroid in mediump float var; 521*35238bceSAndroid Build Coastguard Worker void main() 522*35238bceSAndroid Build Coastguard Worker { 523*35238bceSAndroid Build Coastguard Worker out0 = var; 524*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 525*35238bceSAndroid Build Coastguard Worker } 526*35238bceSAndroid Build Coastguard Worker "" 527*35238bceSAndroid Build Coastguard Worker end 528*35238bceSAndroid Build Coastguard Worker 529*35238bceSAndroid Build Coastguard Worker # no declaration in vertex shader, but static use in fragment 530*35238bceSAndroid Build Coastguard Worker case illegal_usage_1 531*35238bceSAndroid Build Coastguard Worker version 300 es 532*35238bceSAndroid Build Coastguard Worker desc "varying not declared in vertex shader, but statically used in fragment shader" 533*35238bceSAndroid Build Coastguard Worker expect link_fail 534*35238bceSAndroid Build Coastguard Worker vertex "" 535*35238bceSAndroid Build Coastguard Worker #version 300 es 536*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 537*35238bceSAndroid Build Coastguard Worker void main() 538*35238bceSAndroid Build Coastguard Worker { 539*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 540*35238bceSAndroid Build Coastguard Worker } 541*35238bceSAndroid Build Coastguard Worker "" 542*35238bceSAndroid Build Coastguard Worker fragment "" 543*35238bceSAndroid Build Coastguard Worker #version 300 es 544*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 545*35238bceSAndroid Build Coastguard Worker in mediump float var; 546*35238bceSAndroid Build Coastguard Worker void main() 547*35238bceSAndroid Build Coastguard Worker { 548*35238bceSAndroid Build Coastguard Worker ${FRAG_COLOR} = vec4(var); 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 # non-flat integer varyings not allowed 554*35238bceSAndroid Build Coastguard Worker case invalid_type_int 555*35238bceSAndroid Build Coastguard Worker version 300 es 556*35238bceSAndroid Build Coastguard Worker desc "integer varying used" 557*35238bceSAndroid Build Coastguard Worker expect compile_fail 558*35238bceSAndroid Build Coastguard Worker vertex "" 559*35238bceSAndroid Build Coastguard Worker #version 300 es 560*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 561*35238bceSAndroid Build Coastguard Worker out mediump int var; 562*35238bceSAndroid Build Coastguard Worker void main() 563*35238bceSAndroid Build Coastguard Worker { 564*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 565*35238bceSAndroid Build Coastguard Worker } 566*35238bceSAndroid Build Coastguard Worker "" 567*35238bceSAndroid Build Coastguard Worker fragment "" 568*35238bceSAndroid Build Coastguard Worker #version 300 es 569*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 570*35238bceSAndroid Build Coastguard Worker in mediump int var; 571*35238bceSAndroid Build Coastguard Worker void main() 572*35238bceSAndroid Build Coastguard Worker { 573*35238bceSAndroid Build Coastguard Worker ${FRAG_COLOR} = vec4(1.0); 574*35238bceSAndroid Build Coastguard Worker } 575*35238bceSAndroid Build Coastguard Worker "" 576*35238bceSAndroid Build Coastguard Worker end 577*35238bceSAndroid Build Coastguard Worker 578*35238bceSAndroid Build Coastguard Worker # non-flat integer varyings not allowed 579*35238bceSAndroid Build Coastguard Worker case invalid_type_uint 580*35238bceSAndroid Build Coastguard Worker version 300 es 581*35238bceSAndroid Build Coastguard Worker desc "integer varying used" 582*35238bceSAndroid Build Coastguard Worker expect compile_fail 583*35238bceSAndroid Build Coastguard Worker vertex "" 584*35238bceSAndroid Build Coastguard Worker #version 300 es 585*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 586*35238bceSAndroid Build Coastguard Worker out mediump uint var; 587*35238bceSAndroid Build Coastguard Worker void main() 588*35238bceSAndroid Build Coastguard Worker { 589*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 590*35238bceSAndroid Build Coastguard Worker } 591*35238bceSAndroid Build Coastguard Worker "" 592*35238bceSAndroid Build Coastguard Worker fragment "" 593*35238bceSAndroid Build Coastguard Worker #version 300 es 594*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 595*35238bceSAndroid Build Coastguard Worker in mediump uint var; 596*35238bceSAndroid Build Coastguard Worker void main() 597*35238bceSAndroid Build Coastguard Worker { 598*35238bceSAndroid Build Coastguard Worker ${FRAG_COLOR} = vec4(1.0); 599*35238bceSAndroid Build Coastguard Worker } 600*35238bceSAndroid Build Coastguard Worker "" 601*35238bceSAndroid Build Coastguard Worker end 602*35238bceSAndroid Build Coastguard Worker 603*35238bceSAndroid Build Coastguard Worker # bool varyings not allowed 604*35238bceSAndroid Build Coastguard Worker case invalid_type_bool 605*35238bceSAndroid Build Coastguard Worker version 300 es 606*35238bceSAndroid Build Coastguard Worker desc "boolean varying used" 607*35238bceSAndroid Build Coastguard Worker expect compile_fail 608*35238bceSAndroid Build Coastguard Worker vertex "" 609*35238bceSAndroid Build Coastguard Worker #version 300 es 610*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 611*35238bceSAndroid Build Coastguard Worker out bool var; 612*35238bceSAndroid Build Coastguard Worker void main() 613*35238bceSAndroid Build Coastguard Worker { 614*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 615*35238bceSAndroid Build Coastguard Worker } 616*35238bceSAndroid Build Coastguard Worker "" 617*35238bceSAndroid Build Coastguard Worker fragment "" 618*35238bceSAndroid Build Coastguard Worker #version 300 es 619*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 620*35238bceSAndroid Build Coastguard Worker in bool var; 621*35238bceSAndroid Build Coastguard Worker void main() 622*35238bceSAndroid Build Coastguard Worker { 623*35238bceSAndroid Build Coastguard Worker ${FRAG_COLOR} = vec4(1.0); 624*35238bceSAndroid Build Coastguard Worker } 625*35238bceSAndroid Build Coastguard Worker "" 626*35238bceSAndroid Build Coastguard Worker end 627*35238bceSAndroid Build Coastguard Worker 628*35238bceSAndroid Build Coastguard Worker case invalid_type_struct_array 629*35238bceSAndroid Build Coastguard Worker version 300 es 630*35238bceSAndroid Build Coastguard Worker desc "float array inside struct" 631*35238bceSAndroid Build Coastguard Worker expect compile_fail 632*35238bceSAndroid Build Coastguard Worker vertex "" 633*35238bceSAndroid Build Coastguard Worker #version 300 es 634*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 635*35238bceSAndroid Build Coastguard Worker struct S { mediump float a[3]; }; 636*35238bceSAndroid Build Coastguard Worker out S var; 637*35238bceSAndroid Build Coastguard Worker void main() 638*35238bceSAndroid Build Coastguard Worker { 639*35238bceSAndroid Build Coastguard Worker var.a[0] = 1.0; 640*35238bceSAndroid Build Coastguard Worker var.a[1] = 1.0; 641*35238bceSAndroid Build Coastguard Worker var.a[2] = 1.0; 642*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 643*35238bceSAndroid Build Coastguard Worker } 644*35238bceSAndroid Build Coastguard Worker "" 645*35238bceSAndroid Build Coastguard Worker fragment "" 646*35238bceSAndroid Build Coastguard Worker #version 300 es 647*35238bceSAndroid Build Coastguard Worker precision mediump float; 648*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 649*35238bceSAndroid Build Coastguard Worker struct S { mediump float a[3]; }; 650*35238bceSAndroid Build Coastguard Worker in S var; 651*35238bceSAndroid Build Coastguard Worker void main() 652*35238bceSAndroid Build Coastguard Worker { 653*35238bceSAndroid Build Coastguard Worker ${FRAG_COLOR} = vec4(1.0); 654*35238bceSAndroid Build Coastguard Worker } 655*35238bceSAndroid Build Coastguard Worker "" 656*35238bceSAndroid Build Coastguard Worker end 657*35238bceSAndroid Build Coastguard Worker 658*35238bceSAndroid Build Coastguard Worker case invalid_type_struct_struct 659*35238bceSAndroid Build Coastguard Worker version 300 es 660*35238bceSAndroid Build Coastguard Worker desc "struct inside struct" 661*35238bceSAndroid Build Coastguard Worker expect compile_fail 662*35238bceSAndroid Build Coastguard Worker vertex "" 663*35238bceSAndroid Build Coastguard Worker #version 300 es 664*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 665*35238bceSAndroid Build Coastguard Worker struct S { mediump float a; }; 666*35238bceSAndroid Build Coastguard Worker struct T { S s; }; 667*35238bceSAndroid Build Coastguard Worker out T var; 668*35238bceSAndroid Build Coastguard Worker void main() 669*35238bceSAndroid Build Coastguard Worker { 670*35238bceSAndroid Build Coastguard Worker var.s.a = 1.0; 671*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 672*35238bceSAndroid Build Coastguard Worker } 673*35238bceSAndroid Build Coastguard Worker "" 674*35238bceSAndroid Build Coastguard Worker fragment "" 675*35238bceSAndroid Build Coastguard Worker #version 300 es 676*35238bceSAndroid Build Coastguard Worker precision mediump float; 677*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 678*35238bceSAndroid Build Coastguard Worker struct S { mediump float a; }; 679*35238bceSAndroid Build Coastguard Worker struct T { S s; }; 680*35238bceSAndroid Build Coastguard Worker in T var; 681*35238bceSAndroid Build Coastguard Worker void main() 682*35238bceSAndroid Build Coastguard Worker { 683*35238bceSAndroid Build Coastguard Worker ${FRAG_COLOR} = vec4(1.0); 684*35238bceSAndroid Build Coastguard Worker } 685*35238bceSAndroid Build Coastguard Worker "" 686*35238bceSAndroid Build Coastguard Worker end 687*35238bceSAndroid Build Coastguard Worker 688*35238bceSAndroid Build Coastguard Worker case invalid_type_array_struct 689*35238bceSAndroid Build Coastguard Worker version 300 es 690*35238bceSAndroid Build Coastguard Worker desc "array of structs" 691*35238bceSAndroid Build Coastguard Worker expect compile_fail 692*35238bceSAndroid Build Coastguard Worker vertex "" 693*35238bceSAndroid Build Coastguard Worker #version 300 es 694*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 695*35238bceSAndroid Build Coastguard Worker struct S { mediump int a; }; 696*35238bceSAndroid Build Coastguard Worker flat out S var[2]; 697*35238bceSAndroid Build Coastguard Worker void main() 698*35238bceSAndroid Build Coastguard Worker { 699*35238bceSAndroid Build Coastguard Worker ${VERTEX_SETUP} 700*35238bceSAndroid Build Coastguard Worker var[0].a = 1; 701*35238bceSAndroid Build Coastguard Worker var[1].a = 1; 702*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 703*35238bceSAndroid Build Coastguard Worker } 704*35238bceSAndroid Build Coastguard Worker "" 705*35238bceSAndroid Build Coastguard Worker fragment "" 706*35238bceSAndroid Build Coastguard Worker #version 300 es 707*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 708*35238bceSAndroid Build Coastguard Worker struct S { mediump int a; }; 709*35238bceSAndroid Build Coastguard Worker flat in S var[2]; 710*35238bceSAndroid Build Coastguard Worker void main() 711*35238bceSAndroid Build Coastguard Worker { 712*35238bceSAndroid Build Coastguard Worker ${FRAG_COLOR} = vec4(1.0); 713*35238bceSAndroid Build Coastguard Worker } 714*35238bceSAndroid Build Coastguard Worker "" 715*35238bceSAndroid Build Coastguard Worker end 716*35238bceSAndroid Build Coastguard Worker 717*35238bceSAndroid Build Coastguard Worker case invalid_type_array_array 718*35238bceSAndroid Build Coastguard Worker version 300 es 719*35238bceSAndroid Build Coastguard Worker desc "array of arrays" 720*35238bceSAndroid Build Coastguard Worker expect compile_fail 721*35238bceSAndroid Build Coastguard Worker vertex "" 722*35238bceSAndroid Build Coastguard Worker #version 300 es 723*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 724*35238bceSAndroid Build Coastguard Worker out mediump float var[2][2]; 725*35238bceSAndroid Build Coastguard Worker void main() 726*35238bceSAndroid Build Coastguard Worker { 727*35238bceSAndroid Build Coastguard Worker ${VERTEX_SETUP} 728*35238bceSAndroid Build Coastguard Worker var[0][0] = 1.0; 729*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 730*35238bceSAndroid Build Coastguard Worker } 731*35238bceSAndroid Build Coastguard Worker "" 732*35238bceSAndroid Build Coastguard Worker fragment "" 733*35238bceSAndroid Build Coastguard Worker #version 300 es 734*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 735*35238bceSAndroid Build Coastguard Worker in mediump float var[2][2]; 736*35238bceSAndroid Build Coastguard Worker void main() 737*35238bceSAndroid Build Coastguard Worker { 738*35238bceSAndroid Build Coastguard Worker ${FRAG_COLOR} = vec4(1.0); 739*35238bceSAndroid Build Coastguard Worker } 740*35238bceSAndroid Build Coastguard Worker "" 741*35238bceSAndroid Build Coastguard Worker end 742*35238bceSAndroid Build Coastguard Worker end 743*35238bceSAndroid Build Coastguard Worker 744*35238bceSAndroid Build Coastguard Worker group basic_types "Basic varying types" 745*35238bceSAndroid Build Coastguard Worker case float 746*35238bceSAndroid Build Coastguard Worker version 300 es 747*35238bceSAndroid Build Coastguard Worker desc "varying of type float" 748*35238bceSAndroid Build Coastguard Worker values 749*35238bceSAndroid Build Coastguard Worker { 750*35238bceSAndroid Build Coastguard Worker input float in0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ]; 751*35238bceSAndroid Build Coastguard Worker output float out0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ]; 752*35238bceSAndroid Build Coastguard Worker } 753*35238bceSAndroid Build Coastguard Worker vertex "" 754*35238bceSAndroid Build Coastguard Worker #version 300 es 755*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 756*35238bceSAndroid Build Coastguard Worker out mediump float var; 757*35238bceSAndroid Build Coastguard Worker void main() 758*35238bceSAndroid Build Coastguard Worker { 759*35238bceSAndroid Build Coastguard Worker var = in0; 760*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 761*35238bceSAndroid Build Coastguard Worker } 762*35238bceSAndroid Build Coastguard Worker "" 763*35238bceSAndroid Build Coastguard Worker fragment "" 764*35238bceSAndroid Build Coastguard Worker #version 300 es 765*35238bceSAndroid Build Coastguard Worker precision mediump float; 766*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 767*35238bceSAndroid Build Coastguard Worker in float var; 768*35238bceSAndroid Build Coastguard Worker void main() 769*35238bceSAndroid Build Coastguard Worker { 770*35238bceSAndroid Build Coastguard Worker out0 = var; 771*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 772*35238bceSAndroid Build Coastguard Worker } 773*35238bceSAndroid Build Coastguard Worker "" 774*35238bceSAndroid Build Coastguard Worker end 775*35238bceSAndroid Build Coastguard Worker 776*35238bceSAndroid Build Coastguard Worker case vec2 777*35238bceSAndroid Build Coastguard Worker version 300 es 778*35238bceSAndroid Build Coastguard Worker desc "varying of type vec2" 779*35238bceSAndroid Build Coastguard Worker values 780*35238bceSAndroid Build Coastguard Worker { 781*35238bceSAndroid Build Coastguard Worker input vec2 in0 = [ vec2(-1.25, 1.25) | vec2(-25.65, -7.25) | vec2(0.0, 1.0) | vec2(2.25, 2.25) | vec2(3.4, 9.5) | vec2(16.0, 32.0) ]; 782*35238bceSAndroid Build Coastguard Worker output vec2 out0 = [ vec2(-1.25, 1.25) | vec2(-25.65, -7.25) | vec2(0.0, 1.0) | vec2(2.25, 2.25) | vec2(3.4, 9.5) | vec2(16.0, 32.0) ]; 783*35238bceSAndroid Build Coastguard Worker } 784*35238bceSAndroid Build Coastguard Worker vertex "" 785*35238bceSAndroid Build Coastguard Worker #version 300 es 786*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 787*35238bceSAndroid Build Coastguard Worker out mediump vec2 var; 788*35238bceSAndroid Build Coastguard Worker void main() 789*35238bceSAndroid Build Coastguard Worker { 790*35238bceSAndroid Build Coastguard Worker var = in0; 791*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 792*35238bceSAndroid Build Coastguard Worker } 793*35238bceSAndroid Build Coastguard Worker "" 794*35238bceSAndroid Build Coastguard Worker fragment "" 795*35238bceSAndroid Build Coastguard Worker #version 300 es 796*35238bceSAndroid Build Coastguard Worker precision mediump float; 797*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 798*35238bceSAndroid Build Coastguard Worker in vec2 var; 799*35238bceSAndroid Build Coastguard Worker void main() 800*35238bceSAndroid Build Coastguard Worker { 801*35238bceSAndroid Build Coastguard Worker out0 = var; 802*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 803*35238bceSAndroid Build Coastguard Worker } 804*35238bceSAndroid Build Coastguard Worker "" 805*35238bceSAndroid Build Coastguard Worker end 806*35238bceSAndroid Build Coastguard Worker 807*35238bceSAndroid Build Coastguard Worker case vec3 808*35238bceSAndroid Build Coastguard Worker version 300 es 809*35238bceSAndroid Build Coastguard Worker desc "varying of type vec3" 810*35238bceSAndroid Build Coastguard Worker values 811*35238bceSAndroid Build Coastguard Worker { 812*35238bceSAndroid Build Coastguard Worker input vec3 in0 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ]; 813*35238bceSAndroid Build Coastguard Worker output vec3 out0 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ]; 814*35238bceSAndroid Build Coastguard Worker } 815*35238bceSAndroid Build Coastguard Worker vertex "" 816*35238bceSAndroid Build Coastguard Worker #version 300 es 817*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 818*35238bceSAndroid Build Coastguard Worker out mediump vec3 var; 819*35238bceSAndroid Build Coastguard Worker void main() 820*35238bceSAndroid Build Coastguard Worker { 821*35238bceSAndroid Build Coastguard Worker var = in0; 822*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 823*35238bceSAndroid Build Coastguard Worker } 824*35238bceSAndroid Build Coastguard Worker "" 825*35238bceSAndroid Build Coastguard Worker fragment "" 826*35238bceSAndroid Build Coastguard Worker #version 300 es 827*35238bceSAndroid Build Coastguard Worker precision mediump float; 828*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 829*35238bceSAndroid Build Coastguard Worker in vec3 var; 830*35238bceSAndroid Build Coastguard Worker void main() 831*35238bceSAndroid Build Coastguard Worker { 832*35238bceSAndroid Build Coastguard Worker out0 = var; 833*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 834*35238bceSAndroid Build Coastguard Worker } 835*35238bceSAndroid Build Coastguard Worker "" 836*35238bceSAndroid Build Coastguard Worker end 837*35238bceSAndroid Build Coastguard Worker 838*35238bceSAndroid Build Coastguard Worker case vec4 839*35238bceSAndroid Build Coastguard Worker version 300 es 840*35238bceSAndroid Build Coastguard Worker desc "varying of type vec4" 841*35238bceSAndroid Build Coastguard Worker values 842*35238bceSAndroid Build Coastguard Worker { 843*35238bceSAndroid Build Coastguard Worker input vec4 in0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; 844*35238bceSAndroid Build Coastguard Worker output vec4 out0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; 845*35238bceSAndroid Build Coastguard Worker } 846*35238bceSAndroid Build Coastguard Worker vertex "" 847*35238bceSAndroid Build Coastguard Worker #version 300 es 848*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 849*35238bceSAndroid Build Coastguard Worker out mediump vec4 var; 850*35238bceSAndroid Build Coastguard Worker void main() 851*35238bceSAndroid Build Coastguard Worker { 852*35238bceSAndroid Build Coastguard Worker var = in0; 853*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 854*35238bceSAndroid Build Coastguard Worker } 855*35238bceSAndroid Build Coastguard Worker "" 856*35238bceSAndroid Build Coastguard Worker fragment "" 857*35238bceSAndroid Build Coastguard Worker #version 300 es 858*35238bceSAndroid Build Coastguard Worker precision mediump float; 859*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 860*35238bceSAndroid Build Coastguard Worker in vec4 var; 861*35238bceSAndroid Build Coastguard Worker void main() 862*35238bceSAndroid Build Coastguard Worker { 863*35238bceSAndroid Build Coastguard Worker out0 = var; 864*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 865*35238bceSAndroid Build Coastguard Worker } 866*35238bceSAndroid Build Coastguard Worker "" 867*35238bceSAndroid Build Coastguard Worker end 868*35238bceSAndroid Build Coastguard Worker 869*35238bceSAndroid Build Coastguard Worker case mat2 870*35238bceSAndroid Build Coastguard Worker version 300 es 871*35238bceSAndroid Build Coastguard Worker desc "varying of type mat2" 872*35238bceSAndroid Build Coastguard Worker values 873*35238bceSAndroid Build Coastguard Worker { 874*35238bceSAndroid Build Coastguard Worker input mat2 in0 = [ mat2(1.0, 1.0, 1.0, 1.0) | mat2(-1.25, 1.25, -9.5, -12.2) | mat2(-25.65, -7.25, 14.21, -77.7) | mat2(0.0, 1.0, -1.0, 2.0) | mat2(2.25, 2.25, 22.5, 225.0) | mat2(3.4, 9.5, 19.5, 29.5) | mat2(16.0, 32.0, -64.0, -128.0) ]; 875*35238bceSAndroid Build Coastguard Worker output mat2 out0 = [ mat2(1.0, 1.0, 1.0, 1.0) | mat2(-1.25, 1.25, -9.5, -12.2) | mat2(-25.65, -7.25, 14.21, -77.7) | mat2(0.0, 1.0, -1.0, 2.0) | mat2(2.25, 2.25, 22.5, 225.0) | mat2(3.4, 9.5, 19.5, 29.5) | mat2(16.0, 32.0, -64.0, -128.0) ]; 876*35238bceSAndroid Build Coastguard Worker } 877*35238bceSAndroid Build Coastguard Worker vertex "" 878*35238bceSAndroid Build Coastguard Worker #version 300 es 879*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 880*35238bceSAndroid Build Coastguard Worker out mediump mat2 var; 881*35238bceSAndroid Build Coastguard Worker void main() 882*35238bceSAndroid Build Coastguard Worker { 883*35238bceSAndroid Build Coastguard Worker var = in0; 884*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 885*35238bceSAndroid Build Coastguard Worker } 886*35238bceSAndroid Build Coastguard Worker "" 887*35238bceSAndroid Build Coastguard Worker fragment "" 888*35238bceSAndroid Build Coastguard Worker #version 300 es 889*35238bceSAndroid Build Coastguard Worker precision mediump float; 890*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 891*35238bceSAndroid Build Coastguard Worker in mat2 var; 892*35238bceSAndroid Build Coastguard Worker void main() 893*35238bceSAndroid Build Coastguard Worker { 894*35238bceSAndroid Build Coastguard Worker out0 = var; 895*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 896*35238bceSAndroid Build Coastguard Worker } 897*35238bceSAndroid Build Coastguard Worker "" 898*35238bceSAndroid Build Coastguard Worker end 899*35238bceSAndroid Build Coastguard Worker 900*35238bceSAndroid Build Coastguard Worker case mat2x3 901*35238bceSAndroid Build Coastguard Worker version 300 es 902*35238bceSAndroid Build Coastguard Worker desc "varying of type mat2x3" 903*35238bceSAndroid Build Coastguard Worker values 904*35238bceSAndroid Build Coastguard Worker { 905*35238bceSAndroid Build Coastguard Worker input mat2x3 in0 = [ mat2x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ]; 906*35238bceSAndroid Build Coastguard Worker output mat2x3 out0 = [ mat2x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ]; 907*35238bceSAndroid Build Coastguard Worker } 908*35238bceSAndroid Build Coastguard Worker vertex "" 909*35238bceSAndroid Build Coastguard Worker #version 300 es 910*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 911*35238bceSAndroid Build Coastguard Worker out mediump mat2x3 var; 912*35238bceSAndroid Build Coastguard Worker void main() 913*35238bceSAndroid Build Coastguard Worker { 914*35238bceSAndroid Build Coastguard Worker var = in0; 915*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 916*35238bceSAndroid Build Coastguard Worker } 917*35238bceSAndroid Build Coastguard Worker "" 918*35238bceSAndroid Build Coastguard Worker fragment "" 919*35238bceSAndroid Build Coastguard Worker #version 300 es 920*35238bceSAndroid Build Coastguard Worker precision mediump float; 921*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 922*35238bceSAndroid Build Coastguard Worker in mat2x3 var; 923*35238bceSAndroid Build Coastguard Worker void main() 924*35238bceSAndroid Build Coastguard Worker { 925*35238bceSAndroid Build Coastguard Worker out0 = var; 926*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 927*35238bceSAndroid Build Coastguard Worker } 928*35238bceSAndroid Build Coastguard Worker "" 929*35238bceSAndroid Build Coastguard Worker end 930*35238bceSAndroid Build Coastguard Worker 931*35238bceSAndroid Build Coastguard Worker case mat2x4 932*35238bceSAndroid Build Coastguard Worker version 300 es 933*35238bceSAndroid Build Coastguard Worker desc "varying of type mat2x4" 934*35238bceSAndroid Build Coastguard Worker values 935*35238bceSAndroid Build Coastguard Worker { 936*35238bceSAndroid Build Coastguard Worker input mat2x4 in0 = [ mat2x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ]; 937*35238bceSAndroid Build Coastguard Worker output mat2x4 out0 = [ mat2x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ]; 938*35238bceSAndroid Build Coastguard Worker } 939*35238bceSAndroid Build Coastguard Worker vertex "" 940*35238bceSAndroid Build Coastguard Worker #version 300 es 941*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 942*35238bceSAndroid Build Coastguard Worker out mediump mat2x4 var; 943*35238bceSAndroid Build Coastguard Worker void main() 944*35238bceSAndroid Build Coastguard Worker { 945*35238bceSAndroid Build Coastguard Worker var = in0; 946*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 947*35238bceSAndroid Build Coastguard Worker } 948*35238bceSAndroid Build Coastguard Worker "" 949*35238bceSAndroid Build Coastguard Worker fragment "" 950*35238bceSAndroid Build Coastguard Worker #version 300 es 951*35238bceSAndroid Build Coastguard Worker precision mediump float; 952*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 953*35238bceSAndroid Build Coastguard Worker in mat2x4 var; 954*35238bceSAndroid Build Coastguard Worker void main() 955*35238bceSAndroid Build Coastguard Worker { 956*35238bceSAndroid Build Coastguard Worker out0 = var; 957*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 958*35238bceSAndroid Build Coastguard Worker } 959*35238bceSAndroid Build Coastguard Worker "" 960*35238bceSAndroid Build Coastguard Worker end 961*35238bceSAndroid Build Coastguard Worker 962*35238bceSAndroid Build Coastguard Worker case mat3x2 963*35238bceSAndroid Build Coastguard Worker version 300 es 964*35238bceSAndroid Build Coastguard Worker desc "varying of type mat3x2" 965*35238bceSAndroid Build Coastguard Worker values 966*35238bceSAndroid Build Coastguard Worker { 967*35238bceSAndroid Build Coastguard Worker input mat3x2 in0 = [ mat3x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ]; 968*35238bceSAndroid Build Coastguard Worker output mat3x2 out0 = [ mat3x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ]; 969*35238bceSAndroid Build Coastguard Worker } 970*35238bceSAndroid Build Coastguard Worker vertex "" 971*35238bceSAndroid Build Coastguard Worker #version 300 es 972*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 973*35238bceSAndroid Build Coastguard Worker out mediump mat3x2 var; 974*35238bceSAndroid Build Coastguard Worker void main() 975*35238bceSAndroid Build Coastguard Worker { 976*35238bceSAndroid Build Coastguard Worker var = in0; 977*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 978*35238bceSAndroid Build Coastguard Worker } 979*35238bceSAndroid Build Coastguard Worker "" 980*35238bceSAndroid Build Coastguard Worker fragment "" 981*35238bceSAndroid Build Coastguard Worker #version 300 es 982*35238bceSAndroid Build Coastguard Worker precision mediump float; 983*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 984*35238bceSAndroid Build Coastguard Worker in mat3x2 var; 985*35238bceSAndroid Build Coastguard Worker void main() 986*35238bceSAndroid Build Coastguard Worker { 987*35238bceSAndroid Build Coastguard Worker out0 = var; 988*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 989*35238bceSAndroid Build Coastguard Worker } 990*35238bceSAndroid Build Coastguard Worker "" 991*35238bceSAndroid Build Coastguard Worker end 992*35238bceSAndroid Build Coastguard Worker 993*35238bceSAndroid Build Coastguard Worker case mat3 994*35238bceSAndroid Build Coastguard Worker version 300 es 995*35238bceSAndroid Build Coastguard Worker desc "varying of type mat3" 996*35238bceSAndroid Build Coastguard Worker values 997*35238bceSAndroid Build Coastguard Worker { 998*35238bceSAndroid Build Coastguard Worker input mat3 in0 = [ mat3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 9.9) | mat3(0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0, -9.9) | mat3(3.4, 9.5, 19.5, 29.5, 16.0, 32.0, -64.0, -128.0, 256.0) ]; 999*35238bceSAndroid Build Coastguard Worker output mat3 out0 = [ mat3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 9.9) | mat3(0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0, -9.9) | mat3(3.4, 9.5, 19.5, 29.5, 16.0, 32.0, -64.0, -128.0, 256.0) ]; 1000*35238bceSAndroid Build Coastguard Worker } 1001*35238bceSAndroid Build Coastguard Worker vertex "" 1002*35238bceSAndroid Build Coastguard Worker #version 300 es 1003*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 1004*35238bceSAndroid Build Coastguard Worker out mediump mat3 var; 1005*35238bceSAndroid Build Coastguard Worker void main() 1006*35238bceSAndroid Build Coastguard Worker { 1007*35238bceSAndroid Build Coastguard Worker var = in0; 1008*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 1009*35238bceSAndroid Build Coastguard Worker } 1010*35238bceSAndroid Build Coastguard Worker "" 1011*35238bceSAndroid Build Coastguard Worker fragment "" 1012*35238bceSAndroid Build Coastguard Worker #version 300 es 1013*35238bceSAndroid Build Coastguard Worker precision mediump float; 1014*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 1015*35238bceSAndroid Build Coastguard Worker in mat3 var; 1016*35238bceSAndroid Build Coastguard Worker void main() 1017*35238bceSAndroid Build Coastguard Worker { 1018*35238bceSAndroid Build Coastguard Worker out0 = var; 1019*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 1020*35238bceSAndroid Build Coastguard Worker } 1021*35238bceSAndroid Build Coastguard Worker "" 1022*35238bceSAndroid Build Coastguard Worker end 1023*35238bceSAndroid Build Coastguard Worker 1024*35238bceSAndroid Build Coastguard Worker case mat3x4 1025*35238bceSAndroid Build Coastguard Worker version 300 es 1026*35238bceSAndroid Build Coastguard Worker desc "varying of type mat3x4" 1027*35238bceSAndroid Build Coastguard Worker values 1028*35238bceSAndroid Build Coastguard Worker { 1029*35238bceSAndroid Build Coastguard Worker input mat3x4 in0 = [ mat3x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ]; 1030*35238bceSAndroid Build Coastguard Worker output mat3x4 out0 = [ mat3x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ]; 1031*35238bceSAndroid Build Coastguard Worker } 1032*35238bceSAndroid Build Coastguard Worker vertex "" 1033*35238bceSAndroid Build Coastguard Worker #version 300 es 1034*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 1035*35238bceSAndroid Build Coastguard Worker out mediump mat3x4 var; 1036*35238bceSAndroid Build Coastguard Worker void main() 1037*35238bceSAndroid Build Coastguard Worker { 1038*35238bceSAndroid Build Coastguard Worker var = in0; 1039*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 1040*35238bceSAndroid Build Coastguard Worker } 1041*35238bceSAndroid Build Coastguard Worker "" 1042*35238bceSAndroid Build Coastguard Worker fragment "" 1043*35238bceSAndroid Build Coastguard Worker #version 300 es 1044*35238bceSAndroid Build Coastguard Worker precision mediump float; 1045*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 1046*35238bceSAndroid Build Coastguard Worker in mat3x4 var; 1047*35238bceSAndroid Build Coastguard Worker void main() 1048*35238bceSAndroid Build Coastguard Worker { 1049*35238bceSAndroid Build Coastguard Worker out0 = var; 1050*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 1051*35238bceSAndroid Build Coastguard Worker } 1052*35238bceSAndroid Build Coastguard Worker "" 1053*35238bceSAndroid Build Coastguard Worker end 1054*35238bceSAndroid Build Coastguard Worker 1055*35238bceSAndroid Build Coastguard Worker case mat4x2 1056*35238bceSAndroid Build Coastguard Worker version 300 es 1057*35238bceSAndroid Build Coastguard Worker desc "varying of type mat4x2" 1058*35238bceSAndroid Build Coastguard Worker values 1059*35238bceSAndroid Build Coastguard Worker { 1060*35238bceSAndroid Build Coastguard Worker input mat4x2 in0 = [ mat4x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ]; 1061*35238bceSAndroid Build Coastguard Worker output mat4x2 out0 = [ mat4x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ]; 1062*35238bceSAndroid Build Coastguard Worker } 1063*35238bceSAndroid Build Coastguard Worker vertex "" 1064*35238bceSAndroid Build Coastguard Worker #version 300 es 1065*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 1066*35238bceSAndroid Build Coastguard Worker out mediump mat4x2 var; 1067*35238bceSAndroid Build Coastguard Worker void main() 1068*35238bceSAndroid Build Coastguard Worker { 1069*35238bceSAndroid Build Coastguard Worker var = in0; 1070*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 1071*35238bceSAndroid Build Coastguard Worker } 1072*35238bceSAndroid Build Coastguard Worker "" 1073*35238bceSAndroid Build Coastguard Worker fragment "" 1074*35238bceSAndroid Build Coastguard Worker #version 300 es 1075*35238bceSAndroid Build Coastguard Worker precision mediump float; 1076*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 1077*35238bceSAndroid Build Coastguard Worker in mat4x2 var; 1078*35238bceSAndroid Build Coastguard Worker void main() 1079*35238bceSAndroid Build Coastguard Worker { 1080*35238bceSAndroid Build Coastguard Worker out0 = var; 1081*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 1082*35238bceSAndroid Build Coastguard Worker } 1083*35238bceSAndroid Build Coastguard Worker "" 1084*35238bceSAndroid Build Coastguard Worker end 1085*35238bceSAndroid Build Coastguard Worker 1086*35238bceSAndroid Build Coastguard Worker case mat4x3 1087*35238bceSAndroid Build Coastguard Worker version 300 es 1088*35238bceSAndroid Build Coastguard Worker desc "varying of type mat4x3" 1089*35238bceSAndroid Build Coastguard Worker values 1090*35238bceSAndroid Build Coastguard Worker { 1091*35238bceSAndroid Build Coastguard Worker input mat4x3 in0 = [ mat4x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ]; 1092*35238bceSAndroid Build Coastguard Worker output mat4x3 out0 = [ mat4x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ]; 1093*35238bceSAndroid Build Coastguard Worker } 1094*35238bceSAndroid Build Coastguard Worker vertex "" 1095*35238bceSAndroid Build Coastguard Worker #version 300 es 1096*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 1097*35238bceSAndroid Build Coastguard Worker out mediump mat4x3 var; 1098*35238bceSAndroid Build Coastguard Worker void main() 1099*35238bceSAndroid Build Coastguard Worker { 1100*35238bceSAndroid Build Coastguard Worker var = in0; 1101*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 1102*35238bceSAndroid Build Coastguard Worker } 1103*35238bceSAndroid Build Coastguard Worker "" 1104*35238bceSAndroid Build Coastguard Worker fragment "" 1105*35238bceSAndroid Build Coastguard Worker #version 300 es 1106*35238bceSAndroid Build Coastguard Worker precision mediump float; 1107*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 1108*35238bceSAndroid Build Coastguard Worker in mat4x3 var; 1109*35238bceSAndroid Build Coastguard Worker void main() 1110*35238bceSAndroid Build Coastguard Worker { 1111*35238bceSAndroid Build Coastguard Worker out0 = var; 1112*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 1113*35238bceSAndroid Build Coastguard Worker } 1114*35238bceSAndroid Build Coastguard Worker "" 1115*35238bceSAndroid Build Coastguard Worker end 1116*35238bceSAndroid Build Coastguard Worker 1117*35238bceSAndroid Build Coastguard Worker case mat4 1118*35238bceSAndroid Build Coastguard Worker version 300 es 1119*35238bceSAndroid Build Coastguard Worker desc "varying of type mat4" 1120*35238bceSAndroid Build Coastguard Worker values 1121*35238bceSAndroid Build Coastguard Worker { 1122*35238bceSAndroid Build Coastguard Worker input mat4 in0 = [ mat4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0) ]; 1123*35238bceSAndroid Build Coastguard Worker output mat4 out0 = [ mat4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0) ]; 1124*35238bceSAndroid Build Coastguard Worker } 1125*35238bceSAndroid Build Coastguard Worker vertex "" 1126*35238bceSAndroid Build Coastguard Worker #version 300 es 1127*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 1128*35238bceSAndroid Build Coastguard Worker out mediump mat4 var; 1129*35238bceSAndroid Build Coastguard Worker void main() 1130*35238bceSAndroid Build Coastguard Worker { 1131*35238bceSAndroid Build Coastguard Worker var = in0; 1132*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 1133*35238bceSAndroid Build Coastguard Worker } 1134*35238bceSAndroid Build Coastguard Worker "" 1135*35238bceSAndroid Build Coastguard Worker fragment "" 1136*35238bceSAndroid Build Coastguard Worker #version 300 es 1137*35238bceSAndroid Build Coastguard Worker precision mediump float; 1138*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 1139*35238bceSAndroid Build Coastguard Worker in mat4 var; 1140*35238bceSAndroid Build Coastguard Worker void main() 1141*35238bceSAndroid Build Coastguard Worker { 1142*35238bceSAndroid Build Coastguard Worker out0 = var; 1143*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 1144*35238bceSAndroid Build Coastguard Worker } 1145*35238bceSAndroid Build Coastguard Worker "" 1146*35238bceSAndroid Build Coastguard Worker end 1147*35238bceSAndroid Build Coastguard Worker 1148*35238bceSAndroid Build Coastguard Worker case int 1149*35238bceSAndroid Build Coastguard Worker version 300 es 1150*35238bceSAndroid Build Coastguard Worker desc "varying of type int" 1151*35238bceSAndroid Build Coastguard Worker values 1152*35238bceSAndroid Build Coastguard Worker { 1153*35238bceSAndroid Build Coastguard Worker input int in0 = [ -1 | -25 | 1 | 2 | 3 | 16 ]; 1154*35238bceSAndroid Build Coastguard Worker output int out0 = [ -1 | -25 | 1 | 2 | 3 | 16 ]; 1155*35238bceSAndroid Build Coastguard Worker } 1156*35238bceSAndroid Build Coastguard Worker vertex "" 1157*35238bceSAndroid Build Coastguard Worker #version 300 es 1158*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 1159*35238bceSAndroid Build Coastguard Worker flat out mediump int var; 1160*35238bceSAndroid Build Coastguard Worker void main() 1161*35238bceSAndroid Build Coastguard Worker { 1162*35238bceSAndroid Build Coastguard Worker ${VERTEX_SETUP} 1163*35238bceSAndroid Build Coastguard Worker var = in0; 1164*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 1165*35238bceSAndroid Build Coastguard Worker } 1166*35238bceSAndroid Build Coastguard Worker "" 1167*35238bceSAndroid Build Coastguard Worker fragment "" 1168*35238bceSAndroid Build Coastguard Worker #version 300 es 1169*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 1170*35238bceSAndroid Build Coastguard Worker flat in int var; 1171*35238bceSAndroid Build Coastguard Worker void main() 1172*35238bceSAndroid Build Coastguard Worker { 1173*35238bceSAndroid Build Coastguard Worker out0 = var; 1174*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 1175*35238bceSAndroid Build Coastguard Worker } 1176*35238bceSAndroid Build Coastguard Worker "" 1177*35238bceSAndroid Build Coastguard Worker end 1178*35238bceSAndroid Build Coastguard Worker 1179*35238bceSAndroid Build Coastguard Worker case ivec2 1180*35238bceSAndroid Build Coastguard Worker version 300 es 1181*35238bceSAndroid Build Coastguard Worker desc "varying of type ivec2" 1182*35238bceSAndroid Build Coastguard Worker values 1183*35238bceSAndroid Build Coastguard Worker { 1184*35238bceSAndroid Build Coastguard Worker input ivec2 in0 = [ ivec2(-1, 1) | ivec2(-25, 25) | ivec2(1, 1) | ivec2(2, 3) | ivec2(16, 17) ]; 1185*35238bceSAndroid Build Coastguard Worker output ivec2 out0 = [ ivec2(-1, 1) | ivec2(-25, 25) | ivec2(1, 1) | ivec2(2, 3) | ivec2(16, 17) ]; 1186*35238bceSAndroid Build Coastguard Worker } 1187*35238bceSAndroid Build Coastguard Worker vertex "" 1188*35238bceSAndroid Build Coastguard Worker #version 300 es 1189*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 1190*35238bceSAndroid Build Coastguard Worker flat out mediump ivec2 var; 1191*35238bceSAndroid Build Coastguard Worker void main() 1192*35238bceSAndroid Build Coastguard Worker { 1193*35238bceSAndroid Build Coastguard Worker ${VERTEX_SETUP} 1194*35238bceSAndroid Build Coastguard Worker var = in0; 1195*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 1196*35238bceSAndroid Build Coastguard Worker } 1197*35238bceSAndroid Build Coastguard Worker "" 1198*35238bceSAndroid Build Coastguard Worker fragment "" 1199*35238bceSAndroid Build Coastguard Worker #version 300 es 1200*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 1201*35238bceSAndroid Build Coastguard Worker flat in ivec2 var; 1202*35238bceSAndroid Build Coastguard Worker void main() 1203*35238bceSAndroid Build Coastguard Worker { 1204*35238bceSAndroid Build Coastguard Worker out0 = var; 1205*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 1206*35238bceSAndroid Build Coastguard Worker } 1207*35238bceSAndroid Build Coastguard Worker "" 1208*35238bceSAndroid Build Coastguard Worker end 1209*35238bceSAndroid Build Coastguard Worker 1210*35238bceSAndroid Build Coastguard Worker case ivec3 1211*35238bceSAndroid Build Coastguard Worker version 300 es 1212*35238bceSAndroid Build Coastguard Worker desc "varying of type ivec3" 1213*35238bceSAndroid Build Coastguard Worker values 1214*35238bceSAndroid Build Coastguard Worker { 1215*35238bceSAndroid Build Coastguard Worker input ivec3 in0 = [ ivec3(-1, 1, -2) | ivec3(-25, 25, -3) | ivec3(1, 1, 1) | ivec3(2, 3, 4) | ivec3(16, 17, 18) ]; 1216*35238bceSAndroid Build Coastguard Worker output ivec3 out0 = [ ivec3(-1, 1, -2) | ivec3(-25, 25, -3) | ivec3(1, 1, 1) | ivec3(2, 3, 4) | ivec3(16, 17, 18) ]; 1217*35238bceSAndroid Build Coastguard Worker } 1218*35238bceSAndroid Build Coastguard Worker vertex "" 1219*35238bceSAndroid Build Coastguard Worker #version 300 es 1220*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 1221*35238bceSAndroid Build Coastguard Worker flat out mediump ivec3 var; 1222*35238bceSAndroid Build Coastguard Worker void main() 1223*35238bceSAndroid Build Coastguard Worker { 1224*35238bceSAndroid Build Coastguard Worker ${VERTEX_SETUP} 1225*35238bceSAndroid Build Coastguard Worker var = in0; 1226*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 1227*35238bceSAndroid Build Coastguard Worker } 1228*35238bceSAndroid Build Coastguard Worker "" 1229*35238bceSAndroid Build Coastguard Worker fragment "" 1230*35238bceSAndroid Build Coastguard Worker #version 300 es 1231*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 1232*35238bceSAndroid Build Coastguard Worker flat in ivec3 var; 1233*35238bceSAndroid Build Coastguard Worker void main() 1234*35238bceSAndroid Build Coastguard Worker { 1235*35238bceSAndroid Build Coastguard Worker out0 = var; 1236*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 1237*35238bceSAndroid Build Coastguard Worker } 1238*35238bceSAndroid Build Coastguard Worker "" 1239*35238bceSAndroid Build Coastguard Worker end 1240*35238bceSAndroid Build Coastguard Worker 1241*35238bceSAndroid Build Coastguard Worker case ivec4 1242*35238bceSAndroid Build Coastguard Worker version 300 es 1243*35238bceSAndroid Build Coastguard Worker desc "varying of type ivec4" 1244*35238bceSAndroid Build Coastguard Worker values 1245*35238bceSAndroid Build Coastguard Worker { 1246*35238bceSAndroid Build Coastguard Worker input ivec4 in0 = [ ivec4(-1, 1, -2, 2) | ivec4(-25, 25, -3, 3) | ivec4(1, 1, 1, 1) | ivec4(2, 3, 4, 5) | ivec4(16, 17, 18, 19) ]; 1247*35238bceSAndroid Build Coastguard Worker output ivec4 out0 = [ ivec4(-1, 1, -2, 2) | ivec4(-25, 25, -3, 3) | ivec4(1, 1, 1, 1) | ivec4(2, 3, 4, 5) | ivec4(16, 17, 18, 19) ]; 1248*35238bceSAndroid Build Coastguard Worker } 1249*35238bceSAndroid Build Coastguard Worker vertex "" 1250*35238bceSAndroid Build Coastguard Worker #version 300 es 1251*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 1252*35238bceSAndroid Build Coastguard Worker flat out mediump ivec4 var; 1253*35238bceSAndroid Build Coastguard Worker void main() 1254*35238bceSAndroid Build Coastguard Worker { 1255*35238bceSAndroid Build Coastguard Worker ${VERTEX_SETUP} 1256*35238bceSAndroid Build Coastguard Worker var = in0; 1257*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 1258*35238bceSAndroid Build Coastguard Worker } 1259*35238bceSAndroid Build Coastguard Worker "" 1260*35238bceSAndroid Build Coastguard Worker fragment "" 1261*35238bceSAndroid Build Coastguard Worker #version 300 es 1262*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 1263*35238bceSAndroid Build Coastguard Worker flat in ivec4 var; 1264*35238bceSAndroid Build Coastguard Worker void main() 1265*35238bceSAndroid Build Coastguard Worker { 1266*35238bceSAndroid Build Coastguard Worker out0 = var; 1267*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 1268*35238bceSAndroid Build Coastguard Worker } 1269*35238bceSAndroid Build Coastguard Worker "" 1270*35238bceSAndroid Build Coastguard Worker end 1271*35238bceSAndroid Build Coastguard Worker 1272*35238bceSAndroid Build Coastguard Worker case uint 1273*35238bceSAndroid Build Coastguard Worker version 300 es 1274*35238bceSAndroid Build Coastguard Worker desc "varying of type int" 1275*35238bceSAndroid Build Coastguard Worker values 1276*35238bceSAndroid Build Coastguard Worker { 1277*35238bceSAndroid Build Coastguard Worker input uint in0 = [ 1 | 2 | 3 | 16 ]; 1278*35238bceSAndroid Build Coastguard Worker output uint out0 = [ 1 | 2 | 3 | 16 ]; 1279*35238bceSAndroid Build Coastguard Worker } 1280*35238bceSAndroid Build Coastguard Worker vertex "" 1281*35238bceSAndroid Build Coastguard Worker #version 300 es 1282*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 1283*35238bceSAndroid Build Coastguard Worker flat out mediump uint var; 1284*35238bceSAndroid Build Coastguard Worker void main() 1285*35238bceSAndroid Build Coastguard Worker { 1286*35238bceSAndroid Build Coastguard Worker ${VERTEX_SETUP} 1287*35238bceSAndroid Build Coastguard Worker var = in0; 1288*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 1289*35238bceSAndroid Build Coastguard Worker } 1290*35238bceSAndroid Build Coastguard Worker "" 1291*35238bceSAndroid Build Coastguard Worker fragment "" 1292*35238bceSAndroid Build Coastguard Worker #version 300 es 1293*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 1294*35238bceSAndroid Build Coastguard Worker flat in uint var; 1295*35238bceSAndroid Build Coastguard Worker void main() 1296*35238bceSAndroid Build Coastguard Worker { 1297*35238bceSAndroid Build Coastguard Worker out0 = var; 1298*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 1299*35238bceSAndroid Build Coastguard Worker } 1300*35238bceSAndroid Build Coastguard Worker "" 1301*35238bceSAndroid Build Coastguard Worker end 1302*35238bceSAndroid Build Coastguard Worker 1303*35238bceSAndroid Build Coastguard Worker case uvec2 1304*35238bceSAndroid Build Coastguard Worker version 300 es 1305*35238bceSAndroid Build Coastguard Worker desc "varying of type uvec2" 1306*35238bceSAndroid Build Coastguard Worker values 1307*35238bceSAndroid Build Coastguard Worker { 1308*35238bceSAndroid Build Coastguard Worker input uvec2 in0 = [ uvec2(1, 1) | uvec2(25, 25) | uvec2(1, 1) | uvec2(2, 3) | uvec2(16, 17) ]; 1309*35238bceSAndroid Build Coastguard Worker output uvec2 out0 = [ uvec2(1, 1) | uvec2(25, 25) | uvec2(1, 1) | uvec2(2, 3) | uvec2(16, 17) ]; 1310*35238bceSAndroid Build Coastguard Worker } 1311*35238bceSAndroid Build Coastguard Worker vertex "" 1312*35238bceSAndroid Build Coastguard Worker #version 300 es 1313*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 1314*35238bceSAndroid Build Coastguard Worker flat out mediump uvec2 var; 1315*35238bceSAndroid Build Coastguard Worker void main() 1316*35238bceSAndroid Build Coastguard Worker { 1317*35238bceSAndroid Build Coastguard Worker ${VERTEX_SETUP} 1318*35238bceSAndroid Build Coastguard Worker var = in0; 1319*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 1320*35238bceSAndroid Build Coastguard Worker } 1321*35238bceSAndroid Build Coastguard Worker "" 1322*35238bceSAndroid Build Coastguard Worker fragment "" 1323*35238bceSAndroid Build Coastguard Worker #version 300 es 1324*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 1325*35238bceSAndroid Build Coastguard Worker flat in uvec2 var; 1326*35238bceSAndroid Build Coastguard Worker void main() 1327*35238bceSAndroid Build Coastguard Worker { 1328*35238bceSAndroid Build Coastguard Worker out0 = var; 1329*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_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 uvec3 1335*35238bceSAndroid Build Coastguard Worker version 300 es 1336*35238bceSAndroid Build Coastguard Worker desc "varying of type uvec3" 1337*35238bceSAndroid Build Coastguard Worker values 1338*35238bceSAndroid Build Coastguard Worker { 1339*35238bceSAndroid Build Coastguard Worker input uvec3 in0 = [ uvec3(1, 1, 2) | uvec3(25, 25, 3) | uvec3(1, 1, 1) | uvec3(2, 3, 4) | uvec3(16, 17, 18) ]; 1340*35238bceSAndroid Build Coastguard Worker output uvec3 out0 = [ uvec3(1, 1, 2) | uvec3(25, 25, 3) | uvec3(1, 1, 1) | uvec3(2, 3, 4) | uvec3(16, 17, 18) ]; 1341*35238bceSAndroid Build Coastguard Worker } 1342*35238bceSAndroid Build Coastguard Worker vertex "" 1343*35238bceSAndroid Build Coastguard Worker #version 300 es 1344*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 1345*35238bceSAndroid Build Coastguard Worker flat out mediump uvec3 var; 1346*35238bceSAndroid Build Coastguard Worker void main() 1347*35238bceSAndroid Build Coastguard Worker { 1348*35238bceSAndroid Build Coastguard Worker ${VERTEX_SETUP} 1349*35238bceSAndroid Build Coastguard Worker var = in0; 1350*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 1351*35238bceSAndroid Build Coastguard Worker } 1352*35238bceSAndroid Build Coastguard Worker "" 1353*35238bceSAndroid Build Coastguard Worker fragment "" 1354*35238bceSAndroid Build Coastguard Worker #version 300 es 1355*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 1356*35238bceSAndroid Build Coastguard Worker flat in uvec3 var; 1357*35238bceSAndroid Build Coastguard Worker void main() 1358*35238bceSAndroid Build Coastguard Worker { 1359*35238bceSAndroid Build Coastguard Worker out0 = var; 1360*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_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 uvec4 1366*35238bceSAndroid Build Coastguard Worker version 300 es 1367*35238bceSAndroid Build Coastguard Worker desc "varying of type uvec4" 1368*35238bceSAndroid Build Coastguard Worker values 1369*35238bceSAndroid Build Coastguard Worker { 1370*35238bceSAndroid Build Coastguard Worker input uvec4 in0 = [ uvec4(1, 1, 2, 2) | uvec4(25, 25, 3, 3) | uvec4(1, 1, 1, 1) | uvec4(2, 3, 4, 5) | uvec4(16, 17, 18, 19) ]; 1371*35238bceSAndroid Build Coastguard Worker output uvec4 out0 = [ uvec4(1, 1, 2, 2) | uvec4(25, 25, 3, 3) | uvec4(1, 1, 1, 1) | uvec4(2, 3, 4, 5) | uvec4(16, 17, 18, 19) ]; 1372*35238bceSAndroid Build Coastguard Worker } 1373*35238bceSAndroid Build Coastguard Worker vertex "" 1374*35238bceSAndroid Build Coastguard Worker #version 300 es 1375*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 1376*35238bceSAndroid Build Coastguard Worker flat out mediump uvec4 var; 1377*35238bceSAndroid Build Coastguard Worker void main() 1378*35238bceSAndroid Build Coastguard Worker { 1379*35238bceSAndroid Build Coastguard Worker ${VERTEX_SETUP} 1380*35238bceSAndroid Build Coastguard Worker var = in0; 1381*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 1382*35238bceSAndroid Build Coastguard Worker } 1383*35238bceSAndroid Build Coastguard Worker "" 1384*35238bceSAndroid Build Coastguard Worker fragment "" 1385*35238bceSAndroid Build Coastguard Worker #version 300 es 1386*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 1387*35238bceSAndroid Build Coastguard Worker flat in uvec4 var; 1388*35238bceSAndroid Build Coastguard Worker void main() 1389*35238bceSAndroid Build Coastguard Worker { 1390*35238bceSAndroid Build Coastguard Worker out0 = var; 1391*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 1392*35238bceSAndroid Build Coastguard Worker } 1393*35238bceSAndroid Build Coastguard Worker "" 1394*35238bceSAndroid Build Coastguard Worker end 1395*35238bceSAndroid Build Coastguard Worker end 1396*35238bceSAndroid Build Coastguard Worker 1397*35238bceSAndroid Build Coastguard Worker group struct "Structure varyings" 1398*35238bceSAndroid Build Coastguard Worker case float 1399*35238bceSAndroid Build Coastguard Worker version 300 es 1400*35238bceSAndroid Build Coastguard Worker desc "varying of type float inside struct" 1401*35238bceSAndroid Build Coastguard Worker values 1402*35238bceSAndroid Build Coastguard Worker { 1403*35238bceSAndroid Build Coastguard Worker input float in0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ]; 1404*35238bceSAndroid Build Coastguard Worker output float out0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ]; 1405*35238bceSAndroid Build Coastguard Worker } 1406*35238bceSAndroid Build Coastguard Worker vertex "" 1407*35238bceSAndroid Build Coastguard Worker #version 300 es 1408*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 1409*35238bceSAndroid Build Coastguard Worker struct S { mediump float a; }; 1410*35238bceSAndroid Build Coastguard Worker out S var; 1411*35238bceSAndroid Build Coastguard Worker void main() 1412*35238bceSAndroid Build Coastguard Worker { 1413*35238bceSAndroid Build Coastguard Worker var.a = in0; 1414*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 1415*35238bceSAndroid Build Coastguard Worker } 1416*35238bceSAndroid Build Coastguard Worker "" 1417*35238bceSAndroid Build Coastguard Worker fragment "" 1418*35238bceSAndroid Build Coastguard Worker #version 300 es 1419*35238bceSAndroid Build Coastguard Worker precision mediump float; 1420*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 1421*35238bceSAndroid Build Coastguard Worker struct S { mediump float a; }; 1422*35238bceSAndroid Build Coastguard Worker in S var; 1423*35238bceSAndroid Build Coastguard Worker void main() 1424*35238bceSAndroid Build Coastguard Worker { 1425*35238bceSAndroid Build Coastguard Worker out0 = var.a; 1426*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 1427*35238bceSAndroid Build Coastguard Worker } 1428*35238bceSAndroid Build Coastguard Worker "" 1429*35238bceSAndroid Build Coastguard Worker end 1430*35238bceSAndroid Build Coastguard Worker 1431*35238bceSAndroid Build Coastguard Worker case vec2 1432*35238bceSAndroid Build Coastguard Worker version 300 es 1433*35238bceSAndroid Build Coastguard Worker desc "varying of type vec2 inside struct" 1434*35238bceSAndroid Build Coastguard Worker values 1435*35238bceSAndroid Build Coastguard Worker { 1436*35238bceSAndroid Build Coastguard Worker input vec2 in0 = [ vec2(-1.25, 1.25) | vec2(-25.65, -7.25) | vec2(0.0, 1.0) | vec2(2.25, 2.25) | vec2(3.4, 9.5) | vec2(16.0, 32.0) ]; 1437*35238bceSAndroid Build Coastguard Worker output vec2 out0 = [ vec2(-1.25, 1.25) | vec2(-25.65, -7.25) | vec2(0.0, 1.0) | vec2(2.25, 2.25) | vec2(3.4, 9.5) | vec2(16.0, 32.0) ]; 1438*35238bceSAndroid Build Coastguard Worker } 1439*35238bceSAndroid Build Coastguard Worker vertex "" 1440*35238bceSAndroid Build Coastguard Worker #version 300 es 1441*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 1442*35238bceSAndroid Build Coastguard Worker struct S { mediump vec2 a; }; 1443*35238bceSAndroid Build Coastguard Worker out S var; 1444*35238bceSAndroid Build Coastguard Worker void main() 1445*35238bceSAndroid Build Coastguard Worker { 1446*35238bceSAndroid Build Coastguard Worker var.a = in0; 1447*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 1448*35238bceSAndroid Build Coastguard Worker } 1449*35238bceSAndroid Build Coastguard Worker "" 1450*35238bceSAndroid Build Coastguard Worker fragment "" 1451*35238bceSAndroid Build Coastguard Worker #version 300 es 1452*35238bceSAndroid Build Coastguard Worker precision mediump float; 1453*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 1454*35238bceSAndroid Build Coastguard Worker struct S { mediump vec2 a; }; 1455*35238bceSAndroid Build Coastguard Worker in S var; 1456*35238bceSAndroid Build Coastguard Worker void main() 1457*35238bceSAndroid Build Coastguard Worker { 1458*35238bceSAndroid Build Coastguard Worker out0 = var.a; 1459*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 1460*35238bceSAndroid Build Coastguard Worker } 1461*35238bceSAndroid Build Coastguard Worker "" 1462*35238bceSAndroid Build Coastguard Worker end 1463*35238bceSAndroid Build Coastguard Worker 1464*35238bceSAndroid Build Coastguard Worker case vec3 1465*35238bceSAndroid Build Coastguard Worker version 300 es 1466*35238bceSAndroid Build Coastguard Worker desc "varying of type vec3 inside struct" 1467*35238bceSAndroid Build Coastguard Worker values 1468*35238bceSAndroid Build Coastguard Worker { 1469*35238bceSAndroid Build Coastguard Worker input vec3 in0 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ]; 1470*35238bceSAndroid Build Coastguard Worker output vec3 out0 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ]; 1471*35238bceSAndroid Build Coastguard Worker } 1472*35238bceSAndroid Build Coastguard Worker vertex "" 1473*35238bceSAndroid Build Coastguard Worker #version 300 es 1474*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 1475*35238bceSAndroid Build Coastguard Worker struct S { mediump vec3 a; }; 1476*35238bceSAndroid Build Coastguard Worker out S var; 1477*35238bceSAndroid Build Coastguard Worker void main() 1478*35238bceSAndroid Build Coastguard Worker { 1479*35238bceSAndroid Build Coastguard Worker var.a = in0; 1480*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 1481*35238bceSAndroid Build Coastguard Worker } 1482*35238bceSAndroid Build Coastguard Worker "" 1483*35238bceSAndroid Build Coastguard Worker fragment "" 1484*35238bceSAndroid Build Coastguard Worker #version 300 es 1485*35238bceSAndroid Build Coastguard Worker precision mediump float; 1486*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 1487*35238bceSAndroid Build Coastguard Worker struct S { mediump vec3 a; }; 1488*35238bceSAndroid Build Coastguard Worker in S var; 1489*35238bceSAndroid Build Coastguard Worker void main() 1490*35238bceSAndroid Build Coastguard Worker { 1491*35238bceSAndroid Build Coastguard Worker out0 = var.a; 1492*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 1493*35238bceSAndroid Build Coastguard Worker } 1494*35238bceSAndroid Build Coastguard Worker "" 1495*35238bceSAndroid Build Coastguard Worker end 1496*35238bceSAndroid Build Coastguard Worker 1497*35238bceSAndroid Build Coastguard Worker case vec4 1498*35238bceSAndroid Build Coastguard Worker version 300 es 1499*35238bceSAndroid Build Coastguard Worker desc "varying of type vec4 inside struct" 1500*35238bceSAndroid Build Coastguard Worker values 1501*35238bceSAndroid Build Coastguard Worker { 1502*35238bceSAndroid Build Coastguard Worker input vec4 in0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; 1503*35238bceSAndroid Build Coastguard Worker output vec4 out0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; 1504*35238bceSAndroid Build Coastguard Worker } 1505*35238bceSAndroid Build Coastguard Worker vertex "" 1506*35238bceSAndroid Build Coastguard Worker #version 300 es 1507*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 1508*35238bceSAndroid Build Coastguard Worker struct S { mediump vec4 a; }; 1509*35238bceSAndroid Build Coastguard Worker out S var; 1510*35238bceSAndroid Build Coastguard Worker void main() 1511*35238bceSAndroid Build Coastguard Worker { 1512*35238bceSAndroid Build Coastguard Worker var.a = in0; 1513*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 1514*35238bceSAndroid Build Coastguard Worker } 1515*35238bceSAndroid Build Coastguard Worker "" 1516*35238bceSAndroid Build Coastguard Worker fragment "" 1517*35238bceSAndroid Build Coastguard Worker #version 300 es 1518*35238bceSAndroid Build Coastguard Worker precision mediump float; 1519*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 1520*35238bceSAndroid Build Coastguard Worker struct S { mediump vec4 a; }; 1521*35238bceSAndroid Build Coastguard Worker in S var; 1522*35238bceSAndroid Build Coastguard Worker void main() 1523*35238bceSAndroid Build Coastguard Worker { 1524*35238bceSAndroid Build Coastguard Worker out0 = var.a; 1525*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 1526*35238bceSAndroid Build Coastguard Worker } 1527*35238bceSAndroid Build Coastguard Worker "" 1528*35238bceSAndroid Build Coastguard Worker end 1529*35238bceSAndroid Build Coastguard Worker 1530*35238bceSAndroid Build Coastguard Worker case mat2 1531*35238bceSAndroid Build Coastguard Worker version 300 es 1532*35238bceSAndroid Build Coastguard Worker desc "varying of type mat2 inside struct" 1533*35238bceSAndroid Build Coastguard Worker values 1534*35238bceSAndroid Build Coastguard Worker { 1535*35238bceSAndroid Build Coastguard Worker input mat2 in0 = [ mat2(1.0, 1.0, 1.0, 1.0) | mat2(-1.25, 1.25, -9.5, -12.2) | mat2(-25.65, -7.25, 14.21, -77.7) | mat2(0.0, 1.0, -1.0, 2.0) | mat2(2.25, 2.25, 22.5, 225.0) | mat2(3.4, 9.5, 19.5, 29.5) | mat2(16.0, 32.0, -64.0, -128.0) ]; 1536*35238bceSAndroid Build Coastguard Worker output mat2 out0 = [ mat2(1.0, 1.0, 1.0, 1.0) | mat2(-1.25, 1.25, -9.5, -12.2) | mat2(-25.65, -7.25, 14.21, -77.7) | mat2(0.0, 1.0, -1.0, 2.0) | mat2(2.25, 2.25, 22.5, 225.0) | mat2(3.4, 9.5, 19.5, 29.5) | mat2(16.0, 32.0, -64.0, -128.0) ]; 1537*35238bceSAndroid Build Coastguard Worker } 1538*35238bceSAndroid Build Coastguard Worker vertex "" 1539*35238bceSAndroid Build Coastguard Worker #version 300 es 1540*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 1541*35238bceSAndroid Build Coastguard Worker struct S { mediump mat2 a; }; 1542*35238bceSAndroid Build Coastguard Worker out S var; 1543*35238bceSAndroid Build Coastguard Worker void main() 1544*35238bceSAndroid Build Coastguard Worker { 1545*35238bceSAndroid Build Coastguard Worker var.a = in0; 1546*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 1547*35238bceSAndroid Build Coastguard Worker } 1548*35238bceSAndroid Build Coastguard Worker "" 1549*35238bceSAndroid Build Coastguard Worker fragment "" 1550*35238bceSAndroid Build Coastguard Worker #version 300 es 1551*35238bceSAndroid Build Coastguard Worker precision mediump float; 1552*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 1553*35238bceSAndroid Build Coastguard Worker struct S { mediump mat2 a; }; 1554*35238bceSAndroid Build Coastguard Worker in S var; 1555*35238bceSAndroid Build Coastguard Worker void main() 1556*35238bceSAndroid Build Coastguard Worker { 1557*35238bceSAndroid Build Coastguard Worker out0 = var.a; 1558*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 1559*35238bceSAndroid Build Coastguard Worker } 1560*35238bceSAndroid Build Coastguard Worker "" 1561*35238bceSAndroid Build Coastguard Worker end 1562*35238bceSAndroid Build Coastguard Worker 1563*35238bceSAndroid Build Coastguard Worker case mat2x3 1564*35238bceSAndroid Build Coastguard Worker version 300 es 1565*35238bceSAndroid Build Coastguard Worker desc "varying of type mat2x3 inside struct" 1566*35238bceSAndroid Build Coastguard Worker values 1567*35238bceSAndroid Build Coastguard Worker { 1568*35238bceSAndroid Build Coastguard Worker input mat2x3 in0 = [ mat2x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ]; 1569*35238bceSAndroid Build Coastguard Worker output mat2x3 out0 = [ mat2x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ]; 1570*35238bceSAndroid Build Coastguard Worker } 1571*35238bceSAndroid Build Coastguard Worker vertex "" 1572*35238bceSAndroid Build Coastguard Worker #version 300 es 1573*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 1574*35238bceSAndroid Build Coastguard Worker struct S { mediump mat2x3 a; }; 1575*35238bceSAndroid Build Coastguard Worker out S var; 1576*35238bceSAndroid Build Coastguard Worker void main() 1577*35238bceSAndroid Build Coastguard Worker { 1578*35238bceSAndroid Build Coastguard Worker var.a = in0; 1579*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 1580*35238bceSAndroid Build Coastguard Worker } 1581*35238bceSAndroid Build Coastguard Worker "" 1582*35238bceSAndroid Build Coastguard Worker fragment "" 1583*35238bceSAndroid Build Coastguard Worker #version 300 es 1584*35238bceSAndroid Build Coastguard Worker precision mediump float; 1585*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 1586*35238bceSAndroid Build Coastguard Worker struct S { mediump mat2x3 a; }; 1587*35238bceSAndroid Build Coastguard Worker in S var; 1588*35238bceSAndroid Build Coastguard Worker void main() 1589*35238bceSAndroid Build Coastguard Worker { 1590*35238bceSAndroid Build Coastguard Worker out0 = var.a; 1591*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 1592*35238bceSAndroid Build Coastguard Worker } 1593*35238bceSAndroid Build Coastguard Worker "" 1594*35238bceSAndroid Build Coastguard Worker end 1595*35238bceSAndroid Build Coastguard Worker 1596*35238bceSAndroid Build Coastguard Worker case mat2x4 1597*35238bceSAndroid Build Coastguard Worker version 300 es 1598*35238bceSAndroid Build Coastguard Worker desc "varying of type mat2x4 inside struct" 1599*35238bceSAndroid Build Coastguard Worker values 1600*35238bceSAndroid Build Coastguard Worker { 1601*35238bceSAndroid Build Coastguard Worker input mat2x4 in0 = [ mat2x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ]; 1602*35238bceSAndroid Build Coastguard Worker output mat2x4 out0 = [ mat2x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ]; 1603*35238bceSAndroid Build Coastguard Worker } 1604*35238bceSAndroid Build Coastguard Worker vertex "" 1605*35238bceSAndroid Build Coastguard Worker #version 300 es 1606*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 1607*35238bceSAndroid Build Coastguard Worker struct S { mediump mat2x4 a; }; 1608*35238bceSAndroid Build Coastguard Worker out S var; 1609*35238bceSAndroid Build Coastguard Worker void main() 1610*35238bceSAndroid Build Coastguard Worker { 1611*35238bceSAndroid Build Coastguard Worker var.a = in0; 1612*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 1613*35238bceSAndroid Build Coastguard Worker } 1614*35238bceSAndroid Build Coastguard Worker "" 1615*35238bceSAndroid Build Coastguard Worker fragment "" 1616*35238bceSAndroid Build Coastguard Worker #version 300 es 1617*35238bceSAndroid Build Coastguard Worker precision mediump float; 1618*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 1619*35238bceSAndroid Build Coastguard Worker struct S { mediump mat2x4 a; }; 1620*35238bceSAndroid Build Coastguard Worker in S var; 1621*35238bceSAndroid Build Coastguard Worker void main() 1622*35238bceSAndroid Build Coastguard Worker { 1623*35238bceSAndroid Build Coastguard Worker out0 = var.a; 1624*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 1625*35238bceSAndroid Build Coastguard Worker } 1626*35238bceSAndroid Build Coastguard Worker "" 1627*35238bceSAndroid Build Coastguard Worker end 1628*35238bceSAndroid Build Coastguard Worker 1629*35238bceSAndroid Build Coastguard Worker case mat3x2 1630*35238bceSAndroid Build Coastguard Worker version 300 es 1631*35238bceSAndroid Build Coastguard Worker desc "varying of type mat3x2 inside struct" 1632*35238bceSAndroid Build Coastguard Worker values 1633*35238bceSAndroid Build Coastguard Worker { 1634*35238bceSAndroid Build Coastguard Worker input mat3x2 in0 = [ mat3x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ]; 1635*35238bceSAndroid Build Coastguard Worker output mat3x2 out0 = [ mat3x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ]; 1636*35238bceSAndroid Build Coastguard Worker } 1637*35238bceSAndroid Build Coastguard Worker vertex "" 1638*35238bceSAndroid Build Coastguard Worker #version 300 es 1639*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 1640*35238bceSAndroid Build Coastguard Worker struct S { mediump mat3x2 a; }; 1641*35238bceSAndroid Build Coastguard Worker out S var; 1642*35238bceSAndroid Build Coastguard Worker void main() 1643*35238bceSAndroid Build Coastguard Worker { 1644*35238bceSAndroid Build Coastguard Worker var.a = in0; 1645*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 1646*35238bceSAndroid Build Coastguard Worker } 1647*35238bceSAndroid Build Coastguard Worker "" 1648*35238bceSAndroid Build Coastguard Worker fragment "" 1649*35238bceSAndroid Build Coastguard Worker #version 300 es 1650*35238bceSAndroid Build Coastguard Worker precision mediump float; 1651*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 1652*35238bceSAndroid Build Coastguard Worker struct S { mediump mat3x2 a; }; 1653*35238bceSAndroid Build Coastguard Worker in S var; 1654*35238bceSAndroid Build Coastguard Worker void main() 1655*35238bceSAndroid Build Coastguard Worker { 1656*35238bceSAndroid Build Coastguard Worker out0 = var.a; 1657*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 1658*35238bceSAndroid Build Coastguard Worker } 1659*35238bceSAndroid Build Coastguard Worker "" 1660*35238bceSAndroid Build Coastguard Worker end 1661*35238bceSAndroid Build Coastguard Worker 1662*35238bceSAndroid Build Coastguard Worker case mat3 1663*35238bceSAndroid Build Coastguard Worker version 300 es 1664*35238bceSAndroid Build Coastguard Worker desc "varying of type mat3 inside struct" 1665*35238bceSAndroid Build Coastguard Worker values 1666*35238bceSAndroid Build Coastguard Worker { 1667*35238bceSAndroid Build Coastguard Worker input mat3 in0 = [ mat3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 9.9) | mat3(0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0, -9.9) | mat3(3.4, 9.5, 19.5, 29.5, 16.0, 32.0, -64.0, -128.0, 256.0) ]; 1668*35238bceSAndroid Build Coastguard Worker output mat3 out0 = [ mat3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 9.9) | mat3(0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0, -9.9) | mat3(3.4, 9.5, 19.5, 29.5, 16.0, 32.0, -64.0, -128.0, 256.0) ]; 1669*35238bceSAndroid Build Coastguard Worker } 1670*35238bceSAndroid Build Coastguard Worker vertex "" 1671*35238bceSAndroid Build Coastguard Worker #version 300 es 1672*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 1673*35238bceSAndroid Build Coastguard Worker struct S { mediump mat3 a; }; 1674*35238bceSAndroid Build Coastguard Worker out S var; 1675*35238bceSAndroid Build Coastguard Worker void main() 1676*35238bceSAndroid Build Coastguard Worker { 1677*35238bceSAndroid Build Coastguard Worker var.a = in0; 1678*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 1679*35238bceSAndroid Build Coastguard Worker } 1680*35238bceSAndroid Build Coastguard Worker "" 1681*35238bceSAndroid Build Coastguard Worker fragment "" 1682*35238bceSAndroid Build Coastguard Worker #version 300 es 1683*35238bceSAndroid Build Coastguard Worker precision mediump float; 1684*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 1685*35238bceSAndroid Build Coastguard Worker struct S { mediump mat3 a; }; 1686*35238bceSAndroid Build Coastguard Worker in S var; 1687*35238bceSAndroid Build Coastguard Worker void main() 1688*35238bceSAndroid Build Coastguard Worker { 1689*35238bceSAndroid Build Coastguard Worker out0 = var.a; 1690*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 1691*35238bceSAndroid Build Coastguard Worker } 1692*35238bceSAndroid Build Coastguard Worker "" 1693*35238bceSAndroid Build Coastguard Worker end 1694*35238bceSAndroid Build Coastguard Worker 1695*35238bceSAndroid Build Coastguard Worker case mat3x4 1696*35238bceSAndroid Build Coastguard Worker version 300 es 1697*35238bceSAndroid Build Coastguard Worker desc "varying of type mat3x4 inside struct" 1698*35238bceSAndroid Build Coastguard Worker values 1699*35238bceSAndroid Build Coastguard Worker { 1700*35238bceSAndroid Build Coastguard Worker input mat3x4 in0 = [ mat3x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ]; 1701*35238bceSAndroid Build Coastguard Worker output mat3x4 out0 = [ mat3x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ]; 1702*35238bceSAndroid Build Coastguard Worker } 1703*35238bceSAndroid Build Coastguard Worker vertex "" 1704*35238bceSAndroid Build Coastguard Worker #version 300 es 1705*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 1706*35238bceSAndroid Build Coastguard Worker struct S { mediump mat3x4 a; }; 1707*35238bceSAndroid Build Coastguard Worker out S var; 1708*35238bceSAndroid Build Coastguard Worker void main() 1709*35238bceSAndroid Build Coastguard Worker { 1710*35238bceSAndroid Build Coastguard Worker var.a = in0; 1711*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 1712*35238bceSAndroid Build Coastguard Worker } 1713*35238bceSAndroid Build Coastguard Worker "" 1714*35238bceSAndroid Build Coastguard Worker fragment "" 1715*35238bceSAndroid Build Coastguard Worker #version 300 es 1716*35238bceSAndroid Build Coastguard Worker precision mediump float; 1717*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 1718*35238bceSAndroid Build Coastguard Worker struct S { mediump mat3x4 a; }; 1719*35238bceSAndroid Build Coastguard Worker in S var; 1720*35238bceSAndroid Build Coastguard Worker void main() 1721*35238bceSAndroid Build Coastguard Worker { 1722*35238bceSAndroid Build Coastguard Worker out0 = var.a; 1723*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_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 mat4x2 1729*35238bceSAndroid Build Coastguard Worker version 300 es 1730*35238bceSAndroid Build Coastguard Worker desc "varying of type mat4x2 inside struct" 1731*35238bceSAndroid Build Coastguard Worker values 1732*35238bceSAndroid Build Coastguard Worker { 1733*35238bceSAndroid Build Coastguard Worker input mat4x2 in0 = [ mat4x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ]; 1734*35238bceSAndroid Build Coastguard Worker output mat4x2 out0 = [ mat4x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ]; 1735*35238bceSAndroid Build Coastguard Worker } 1736*35238bceSAndroid Build Coastguard Worker vertex "" 1737*35238bceSAndroid Build Coastguard Worker #version 300 es 1738*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 1739*35238bceSAndroid Build Coastguard Worker struct S { mediump mat4x2 a; }; 1740*35238bceSAndroid Build Coastguard Worker out S var; 1741*35238bceSAndroid Build Coastguard Worker void main() 1742*35238bceSAndroid Build Coastguard Worker { 1743*35238bceSAndroid Build Coastguard Worker var.a = in0; 1744*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 1745*35238bceSAndroid Build Coastguard Worker } 1746*35238bceSAndroid Build Coastguard Worker "" 1747*35238bceSAndroid Build Coastguard Worker fragment "" 1748*35238bceSAndroid Build Coastguard Worker #version 300 es 1749*35238bceSAndroid Build Coastguard Worker precision mediump float; 1750*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 1751*35238bceSAndroid Build Coastguard Worker struct S { mediump mat4x2 a; }; 1752*35238bceSAndroid Build Coastguard Worker in S var; 1753*35238bceSAndroid Build Coastguard Worker void main() 1754*35238bceSAndroid Build Coastguard Worker { 1755*35238bceSAndroid Build Coastguard Worker out0 = var.a; 1756*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 1757*35238bceSAndroid Build Coastguard Worker } 1758*35238bceSAndroid Build Coastguard Worker "" 1759*35238bceSAndroid Build Coastguard Worker end 1760*35238bceSAndroid Build Coastguard Worker 1761*35238bceSAndroid Build Coastguard Worker case mat4x3 1762*35238bceSAndroid Build Coastguard Worker version 300 es 1763*35238bceSAndroid Build Coastguard Worker desc "varying of type mat4x3 inside struct" 1764*35238bceSAndroid Build Coastguard Worker values 1765*35238bceSAndroid Build Coastguard Worker { 1766*35238bceSAndroid Build Coastguard Worker input mat4x3 in0 = [ mat4x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ]; 1767*35238bceSAndroid Build Coastguard Worker output mat4x3 out0 = [ mat4x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ]; 1768*35238bceSAndroid Build Coastguard Worker } 1769*35238bceSAndroid Build Coastguard Worker vertex "" 1770*35238bceSAndroid Build Coastguard Worker #version 300 es 1771*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 1772*35238bceSAndroid Build Coastguard Worker struct S { mediump mat4x3 a; }; 1773*35238bceSAndroid Build Coastguard Worker out S var; 1774*35238bceSAndroid Build Coastguard Worker void main() 1775*35238bceSAndroid Build Coastguard Worker { 1776*35238bceSAndroid Build Coastguard Worker var.a = in0; 1777*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 1778*35238bceSAndroid Build Coastguard Worker } 1779*35238bceSAndroid Build Coastguard Worker "" 1780*35238bceSAndroid Build Coastguard Worker fragment "" 1781*35238bceSAndroid Build Coastguard Worker #version 300 es 1782*35238bceSAndroid Build Coastguard Worker precision mediump float; 1783*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 1784*35238bceSAndroid Build Coastguard Worker struct S { mediump mat4x3 a; }; 1785*35238bceSAndroid Build Coastguard Worker in S var; 1786*35238bceSAndroid Build Coastguard Worker void main() 1787*35238bceSAndroid Build Coastguard Worker { 1788*35238bceSAndroid Build Coastguard Worker out0 = var.a; 1789*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 1790*35238bceSAndroid Build Coastguard Worker } 1791*35238bceSAndroid Build Coastguard Worker "" 1792*35238bceSAndroid Build Coastguard Worker end 1793*35238bceSAndroid Build Coastguard Worker 1794*35238bceSAndroid Build Coastguard Worker case mat4 1795*35238bceSAndroid Build Coastguard Worker version 300 es 1796*35238bceSAndroid Build Coastguard Worker desc "varying of type mat4 inside struct" 1797*35238bceSAndroid Build Coastguard Worker values 1798*35238bceSAndroid Build Coastguard Worker { 1799*35238bceSAndroid Build Coastguard Worker input mat4 in0 = [ mat4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0) ]; 1800*35238bceSAndroid Build Coastguard Worker output mat4 out0 = [ mat4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0) ]; 1801*35238bceSAndroid Build Coastguard Worker } 1802*35238bceSAndroid Build Coastguard Worker vertex "" 1803*35238bceSAndroid Build Coastguard Worker #version 300 es 1804*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 1805*35238bceSAndroid Build Coastguard Worker struct S { mediump mat4 a; }; 1806*35238bceSAndroid Build Coastguard Worker out S var; 1807*35238bceSAndroid Build Coastguard Worker void main() 1808*35238bceSAndroid Build Coastguard Worker { 1809*35238bceSAndroid Build Coastguard Worker var.a = in0; 1810*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 1811*35238bceSAndroid Build Coastguard Worker } 1812*35238bceSAndroid Build Coastguard Worker "" 1813*35238bceSAndroid Build Coastguard Worker fragment "" 1814*35238bceSAndroid Build Coastguard Worker #version 300 es 1815*35238bceSAndroid Build Coastguard Worker precision mediump float; 1816*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 1817*35238bceSAndroid Build Coastguard Worker struct S { mediump mat4 a; }; 1818*35238bceSAndroid Build Coastguard Worker in S var; 1819*35238bceSAndroid Build Coastguard Worker void main() 1820*35238bceSAndroid Build Coastguard Worker { 1821*35238bceSAndroid Build Coastguard Worker out0 = var.a; 1822*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 1823*35238bceSAndroid Build Coastguard Worker } 1824*35238bceSAndroid Build Coastguard Worker "" 1825*35238bceSAndroid Build Coastguard Worker end 1826*35238bceSAndroid Build Coastguard Worker 1827*35238bceSAndroid Build Coastguard Worker case int 1828*35238bceSAndroid Build Coastguard Worker version 300 es 1829*35238bceSAndroid Build Coastguard Worker desc "varying of type int inside struct" 1830*35238bceSAndroid Build Coastguard Worker values 1831*35238bceSAndroid Build Coastguard Worker { 1832*35238bceSAndroid Build Coastguard Worker input int in0 = [ -1 | -25 | 1 | 2 | 3 | 16 ]; 1833*35238bceSAndroid Build Coastguard Worker output int out0 = [ -1 | -25 | 1 | 2 | 3 | 16 ]; 1834*35238bceSAndroid Build Coastguard Worker } 1835*35238bceSAndroid Build Coastguard Worker vertex "" 1836*35238bceSAndroid Build Coastguard Worker #version 300 es 1837*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 1838*35238bceSAndroid Build Coastguard Worker struct S { mediump int a; }; 1839*35238bceSAndroid Build Coastguard Worker flat out S var; 1840*35238bceSAndroid Build Coastguard Worker void main() 1841*35238bceSAndroid Build Coastguard Worker { 1842*35238bceSAndroid Build Coastguard Worker ${VERTEX_SETUP} 1843*35238bceSAndroid Build Coastguard Worker var.a = in0; 1844*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 1845*35238bceSAndroid Build Coastguard Worker } 1846*35238bceSAndroid Build Coastguard Worker "" 1847*35238bceSAndroid Build Coastguard Worker fragment "" 1848*35238bceSAndroid Build Coastguard Worker #version 300 es 1849*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 1850*35238bceSAndroid Build Coastguard Worker struct S { mediump int a; }; 1851*35238bceSAndroid Build Coastguard Worker flat in S var; 1852*35238bceSAndroid Build Coastguard Worker void main() 1853*35238bceSAndroid Build Coastguard Worker { 1854*35238bceSAndroid Build Coastguard Worker out0 = var.a; 1855*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 1856*35238bceSAndroid Build Coastguard Worker } 1857*35238bceSAndroid Build Coastguard Worker "" 1858*35238bceSAndroid Build Coastguard Worker end 1859*35238bceSAndroid Build Coastguard Worker 1860*35238bceSAndroid Build Coastguard Worker case ivec2 1861*35238bceSAndroid Build Coastguard Worker version 300 es 1862*35238bceSAndroid Build Coastguard Worker desc "varying of type ivec2 inside struct" 1863*35238bceSAndroid Build Coastguard Worker values 1864*35238bceSAndroid Build Coastguard Worker { 1865*35238bceSAndroid Build Coastguard Worker input ivec2 in0 = [ ivec2(-1, 1) | ivec2(-25, 25) | ivec2(1, 1) | ivec2(2, 3) | ivec2(16, 17) ]; 1866*35238bceSAndroid Build Coastguard Worker output ivec2 out0 = [ ivec2(-1, 1) | ivec2(-25, 25) | ivec2(1, 1) | ivec2(2, 3) | ivec2(16, 17) ]; 1867*35238bceSAndroid Build Coastguard Worker } 1868*35238bceSAndroid Build Coastguard Worker vertex "" 1869*35238bceSAndroid Build Coastguard Worker #version 300 es 1870*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 1871*35238bceSAndroid Build Coastguard Worker struct S { mediump ivec2 a; }; 1872*35238bceSAndroid Build Coastguard Worker flat out S var; 1873*35238bceSAndroid Build Coastguard Worker void main() 1874*35238bceSAndroid Build Coastguard Worker { 1875*35238bceSAndroid Build Coastguard Worker ${VERTEX_SETUP} 1876*35238bceSAndroid Build Coastguard Worker var.a = in0; 1877*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 1878*35238bceSAndroid Build Coastguard Worker } 1879*35238bceSAndroid Build Coastguard Worker "" 1880*35238bceSAndroid Build Coastguard Worker fragment "" 1881*35238bceSAndroid Build Coastguard Worker #version 300 es 1882*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 1883*35238bceSAndroid Build Coastguard Worker struct S { mediump ivec2 a; }; 1884*35238bceSAndroid Build Coastguard Worker flat in S var; 1885*35238bceSAndroid Build Coastguard Worker void main() 1886*35238bceSAndroid Build Coastguard Worker { 1887*35238bceSAndroid Build Coastguard Worker out0 = var.a; 1888*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 1889*35238bceSAndroid Build Coastguard Worker } 1890*35238bceSAndroid Build Coastguard Worker "" 1891*35238bceSAndroid Build Coastguard Worker end 1892*35238bceSAndroid Build Coastguard Worker 1893*35238bceSAndroid Build Coastguard Worker case ivec3 1894*35238bceSAndroid Build Coastguard Worker version 300 es 1895*35238bceSAndroid Build Coastguard Worker desc "varying of type ivec3 inside struct" 1896*35238bceSAndroid Build Coastguard Worker values 1897*35238bceSAndroid Build Coastguard Worker { 1898*35238bceSAndroid Build Coastguard Worker input ivec3 in0 = [ ivec3(-1, 1, -2) | ivec3(-25, 25, -3) | ivec3(1, 1, 1) | ivec3(2, 3, 4) | ivec3(16, 17, 18) ]; 1899*35238bceSAndroid Build Coastguard Worker output ivec3 out0 = [ ivec3(-1, 1, -2) | ivec3(-25, 25, -3) | ivec3(1, 1, 1) | ivec3(2, 3, 4) | ivec3(16, 17, 18) ]; 1900*35238bceSAndroid Build Coastguard Worker } 1901*35238bceSAndroid Build Coastguard Worker vertex "" 1902*35238bceSAndroid Build Coastguard Worker #version 300 es 1903*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 1904*35238bceSAndroid Build Coastguard Worker struct S { mediump ivec3 a; }; 1905*35238bceSAndroid Build Coastguard Worker flat out S var; 1906*35238bceSAndroid Build Coastguard Worker void main() 1907*35238bceSAndroid Build Coastguard Worker { 1908*35238bceSAndroid Build Coastguard Worker ${VERTEX_SETUP} 1909*35238bceSAndroid Build Coastguard Worker var.a = in0; 1910*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 1911*35238bceSAndroid Build Coastguard Worker } 1912*35238bceSAndroid Build Coastguard Worker "" 1913*35238bceSAndroid Build Coastguard Worker fragment "" 1914*35238bceSAndroid Build Coastguard Worker #version 300 es 1915*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 1916*35238bceSAndroid Build Coastguard Worker struct S { mediump ivec3 a; }; 1917*35238bceSAndroid Build Coastguard Worker flat in S var; 1918*35238bceSAndroid Build Coastguard Worker void main() 1919*35238bceSAndroid Build Coastguard Worker { 1920*35238bceSAndroid Build Coastguard Worker out0 = var.a; 1921*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 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 case ivec4 1927*35238bceSAndroid Build Coastguard Worker version 300 es 1928*35238bceSAndroid Build Coastguard Worker desc "varying of type ivec4 inside struct" 1929*35238bceSAndroid Build Coastguard Worker values 1930*35238bceSAndroid Build Coastguard Worker { 1931*35238bceSAndroid Build Coastguard Worker input ivec4 in0 = [ ivec4(-1, 1, -2, 2) | ivec4(-25, 25, -3, 3) | ivec4(1, 1, 1, 1) | ivec4(2, 3, 4, 5) | ivec4(16, 17, 18, 19) ]; 1932*35238bceSAndroid Build Coastguard Worker output ivec4 out0 = [ ivec4(-1, 1, -2, 2) | ivec4(-25, 25, -3, 3) | ivec4(1, 1, 1, 1) | ivec4(2, 3, 4, 5) | ivec4(16, 17, 18, 19) ]; 1933*35238bceSAndroid Build Coastguard Worker } 1934*35238bceSAndroid Build Coastguard Worker vertex "" 1935*35238bceSAndroid Build Coastguard Worker #version 300 es 1936*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 1937*35238bceSAndroid Build Coastguard Worker struct S { mediump ivec4 a; }; 1938*35238bceSAndroid Build Coastguard Worker flat out S var; 1939*35238bceSAndroid Build Coastguard Worker void main() 1940*35238bceSAndroid Build Coastguard Worker { 1941*35238bceSAndroid Build Coastguard Worker ${VERTEX_SETUP} 1942*35238bceSAndroid Build Coastguard Worker var.a = in0; 1943*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 1944*35238bceSAndroid Build Coastguard Worker } 1945*35238bceSAndroid Build Coastguard Worker "" 1946*35238bceSAndroid Build Coastguard Worker fragment "" 1947*35238bceSAndroid Build Coastguard Worker #version 300 es 1948*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 1949*35238bceSAndroid Build Coastguard Worker struct S { mediump ivec4 a; }; 1950*35238bceSAndroid Build Coastguard Worker flat in S var; 1951*35238bceSAndroid Build Coastguard Worker void main() 1952*35238bceSAndroid Build Coastguard Worker { 1953*35238bceSAndroid Build Coastguard Worker out0 = var.a; 1954*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 1955*35238bceSAndroid Build Coastguard Worker } 1956*35238bceSAndroid Build Coastguard Worker "" 1957*35238bceSAndroid Build Coastguard Worker end 1958*35238bceSAndroid Build Coastguard Worker 1959*35238bceSAndroid Build Coastguard Worker case uint 1960*35238bceSAndroid Build Coastguard Worker version 300 es 1961*35238bceSAndroid Build Coastguard Worker desc "varying of type uint in struct" 1962*35238bceSAndroid Build Coastguard Worker values 1963*35238bceSAndroid Build Coastguard Worker { 1964*35238bceSAndroid Build Coastguard Worker input uint in0 = [ 1 | 2 | 3 | 16 ]; 1965*35238bceSAndroid Build Coastguard Worker output uint out0 = [ 1 | 2 | 3 | 16 ]; 1966*35238bceSAndroid Build Coastguard Worker } 1967*35238bceSAndroid Build Coastguard Worker vertex "" 1968*35238bceSAndroid Build Coastguard Worker #version 300 es 1969*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 1970*35238bceSAndroid Build Coastguard Worker struct S { mediump uint a; }; 1971*35238bceSAndroid Build Coastguard Worker flat out S var; 1972*35238bceSAndroid Build Coastguard Worker void main() 1973*35238bceSAndroid Build Coastguard Worker { 1974*35238bceSAndroid Build Coastguard Worker ${VERTEX_SETUP} 1975*35238bceSAndroid Build Coastguard Worker var.a = in0; 1976*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 1977*35238bceSAndroid Build Coastguard Worker } 1978*35238bceSAndroid Build Coastguard Worker "" 1979*35238bceSAndroid Build Coastguard Worker fragment "" 1980*35238bceSAndroid Build Coastguard Worker #version 300 es 1981*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 1982*35238bceSAndroid Build Coastguard Worker struct S { mediump uint a; }; 1983*35238bceSAndroid Build Coastguard Worker flat in S var; 1984*35238bceSAndroid Build Coastguard Worker void main() 1985*35238bceSAndroid Build Coastguard Worker { 1986*35238bceSAndroid Build Coastguard Worker out0 = var.a; 1987*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 1988*35238bceSAndroid Build Coastguard Worker } 1989*35238bceSAndroid Build Coastguard Worker "" 1990*35238bceSAndroid Build Coastguard Worker end 1991*35238bceSAndroid Build Coastguard Worker 1992*35238bceSAndroid Build Coastguard Worker case uvec2 1993*35238bceSAndroid Build Coastguard Worker version 300 es 1994*35238bceSAndroid Build Coastguard Worker desc "varying of type uvec2 inside struct" 1995*35238bceSAndroid Build Coastguard Worker values 1996*35238bceSAndroid Build Coastguard Worker { 1997*35238bceSAndroid Build Coastguard Worker input uvec2 in0 = [ uvec2(1, 1) | uvec2(25, 25) | uvec2(1, 1) | uvec2(2, 3) | uvec2(16, 17) ]; 1998*35238bceSAndroid Build Coastguard Worker output uvec2 out0 = [ uvec2(1, 1) | uvec2(25, 25) | uvec2(1, 1) | uvec2(2, 3) | uvec2(16, 17) ]; 1999*35238bceSAndroid Build Coastguard Worker } 2000*35238bceSAndroid Build Coastguard Worker vertex "" 2001*35238bceSAndroid Build Coastguard Worker #version 300 es 2002*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 2003*35238bceSAndroid Build Coastguard Worker struct S { mediump uvec2 a; }; 2004*35238bceSAndroid Build Coastguard Worker flat out S var; 2005*35238bceSAndroid Build Coastguard Worker void main() 2006*35238bceSAndroid Build Coastguard Worker { 2007*35238bceSAndroid Build Coastguard Worker ${VERTEX_SETUP} 2008*35238bceSAndroid Build Coastguard Worker var.a = in0; 2009*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 2010*35238bceSAndroid Build Coastguard Worker } 2011*35238bceSAndroid Build Coastguard Worker "" 2012*35238bceSAndroid Build Coastguard Worker fragment "" 2013*35238bceSAndroid Build Coastguard Worker #version 300 es 2014*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 2015*35238bceSAndroid Build Coastguard Worker struct S { mediump uvec2 a; }; 2016*35238bceSAndroid Build Coastguard Worker flat in S var; 2017*35238bceSAndroid Build Coastguard Worker void main() 2018*35238bceSAndroid Build Coastguard Worker { 2019*35238bceSAndroid Build Coastguard Worker out0 = var.a; 2020*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 2021*35238bceSAndroid Build Coastguard Worker } 2022*35238bceSAndroid Build Coastguard Worker "" 2023*35238bceSAndroid Build Coastguard Worker end 2024*35238bceSAndroid Build Coastguard Worker 2025*35238bceSAndroid Build Coastguard Worker case uvec3 2026*35238bceSAndroid Build Coastguard Worker version 300 es 2027*35238bceSAndroid Build Coastguard Worker desc "varying of type uvec3 inside struct" 2028*35238bceSAndroid Build Coastguard Worker values 2029*35238bceSAndroid Build Coastguard Worker { 2030*35238bceSAndroid Build Coastguard Worker input uvec3 in0 = [ uvec3(1, 1, 2) | uvec3(25, 25, 3) | uvec3(1, 1, 1) | uvec3(2, 3, 4) | uvec3(16, 17, 18) ]; 2031*35238bceSAndroid Build Coastguard Worker output uvec3 out0 = [ uvec3(1, 1, 2) | uvec3(25, 25, 3) | uvec3(1, 1, 1) | uvec3(2, 3, 4) | uvec3(16, 17, 18) ]; 2032*35238bceSAndroid Build Coastguard Worker } 2033*35238bceSAndroid Build Coastguard Worker vertex "" 2034*35238bceSAndroid Build Coastguard Worker #version 300 es 2035*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 2036*35238bceSAndroid Build Coastguard Worker struct S { mediump uvec3 a; }; 2037*35238bceSAndroid Build Coastguard Worker flat out S var; 2038*35238bceSAndroid Build Coastguard Worker void main() 2039*35238bceSAndroid Build Coastguard Worker { 2040*35238bceSAndroid Build Coastguard Worker ${VERTEX_SETUP} 2041*35238bceSAndroid Build Coastguard Worker var.a = in0; 2042*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 2043*35238bceSAndroid Build Coastguard Worker } 2044*35238bceSAndroid Build Coastguard Worker "" 2045*35238bceSAndroid Build Coastguard Worker fragment "" 2046*35238bceSAndroid Build Coastguard Worker #version 300 es 2047*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 2048*35238bceSAndroid Build Coastguard Worker struct S { mediump uvec3 a; }; 2049*35238bceSAndroid Build Coastguard Worker flat in S var; 2050*35238bceSAndroid Build Coastguard Worker void main() 2051*35238bceSAndroid Build Coastguard Worker { 2052*35238bceSAndroid Build Coastguard Worker out0 = var.a; 2053*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 2054*35238bceSAndroid Build Coastguard Worker } 2055*35238bceSAndroid Build Coastguard Worker "" 2056*35238bceSAndroid Build Coastguard Worker end 2057*35238bceSAndroid Build Coastguard Worker 2058*35238bceSAndroid Build Coastguard Worker case uvec4 2059*35238bceSAndroid Build Coastguard Worker version 300 es 2060*35238bceSAndroid Build Coastguard Worker desc "varying of type uvec4 inside struct" 2061*35238bceSAndroid Build Coastguard Worker values 2062*35238bceSAndroid Build Coastguard Worker { 2063*35238bceSAndroid Build Coastguard Worker input uvec4 in0 = [ uvec4(1, 1, 2, 2) | uvec4(25, 25, 3, 3) | uvec4(1, 1, 1, 1) | uvec4(2, 3, 4, 5) | uvec4(16, 17, 18, 19) ]; 2064*35238bceSAndroid Build Coastguard Worker output uvec4 out0 = [ uvec4(1, 1, 2, 2) | uvec4(25, 25, 3, 3) | uvec4(1, 1, 1, 1) | uvec4(2, 3, 4, 5) | uvec4(16, 17, 18, 19) ]; 2065*35238bceSAndroid Build Coastguard Worker } 2066*35238bceSAndroid Build Coastguard Worker vertex "" 2067*35238bceSAndroid Build Coastguard Worker #version 300 es 2068*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 2069*35238bceSAndroid Build Coastguard Worker struct S { mediump uvec4 a; }; 2070*35238bceSAndroid Build Coastguard Worker flat out S var; 2071*35238bceSAndroid Build Coastguard Worker void main() 2072*35238bceSAndroid Build Coastguard Worker { 2073*35238bceSAndroid Build Coastguard Worker ${VERTEX_SETUP} 2074*35238bceSAndroid Build Coastguard Worker var.a = in0; 2075*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 2076*35238bceSAndroid Build Coastguard Worker } 2077*35238bceSAndroid Build Coastguard Worker "" 2078*35238bceSAndroid Build Coastguard Worker fragment "" 2079*35238bceSAndroid Build Coastguard Worker #version 300 es 2080*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 2081*35238bceSAndroid Build Coastguard Worker struct S { mediump uvec4 a; }; 2082*35238bceSAndroid Build Coastguard Worker flat in S var; 2083*35238bceSAndroid Build Coastguard Worker void main() 2084*35238bceSAndroid Build Coastguard Worker { 2085*35238bceSAndroid Build Coastguard Worker out0 = var.a; 2086*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 2087*35238bceSAndroid Build Coastguard Worker } 2088*35238bceSAndroid Build Coastguard Worker "" 2089*35238bceSAndroid Build Coastguard Worker end 2090*35238bceSAndroid Build Coastguard Worker 2091*35238bceSAndroid Build Coastguard Worker case float_vec3 2092*35238bceSAndroid Build Coastguard Worker version 300 es 2093*35238bceSAndroid Build Coastguard Worker desc "varyings of type float and vec3 inside struct" 2094*35238bceSAndroid Build Coastguard Worker values 2095*35238bceSAndroid Build Coastguard Worker { 2096*35238bceSAndroid Build Coastguard Worker input float in0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ]; 2097*35238bceSAndroid Build Coastguard Worker output float out0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ]; 2098*35238bceSAndroid Build Coastguard Worker input vec3 in1 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ]; 2099*35238bceSAndroid Build Coastguard Worker output vec3 out1 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ]; 2100*35238bceSAndroid Build Coastguard Worker } 2101*35238bceSAndroid Build Coastguard Worker vertex "" 2102*35238bceSAndroid Build Coastguard Worker #version 300 es 2103*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 2104*35238bceSAndroid Build Coastguard Worker struct S { mediump float a; highp vec3 b; }; 2105*35238bceSAndroid Build Coastguard Worker out S var; 2106*35238bceSAndroid Build Coastguard Worker void main() 2107*35238bceSAndroid Build Coastguard Worker { 2108*35238bceSAndroid Build Coastguard Worker var.a = in0; 2109*35238bceSAndroid Build Coastguard Worker var.b = in1; 2110*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 2111*35238bceSAndroid Build Coastguard Worker } 2112*35238bceSAndroid Build Coastguard Worker "" 2113*35238bceSAndroid Build Coastguard Worker fragment "" 2114*35238bceSAndroid Build Coastguard Worker #version 300 es 2115*35238bceSAndroid Build Coastguard Worker precision mediump float; 2116*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 2117*35238bceSAndroid Build Coastguard Worker struct S { mediump float a; highp vec3 b; }; 2118*35238bceSAndroid Build Coastguard Worker in S var; 2119*35238bceSAndroid Build Coastguard Worker void main() 2120*35238bceSAndroid Build Coastguard Worker { 2121*35238bceSAndroid Build Coastguard Worker out0 = var.a; 2122*35238bceSAndroid Build Coastguard Worker out1 = var.b; 2123*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 2124*35238bceSAndroid Build Coastguard Worker } 2125*35238bceSAndroid Build Coastguard Worker "" 2126*35238bceSAndroid Build Coastguard Worker end 2127*35238bceSAndroid Build Coastguard Worker 2128*35238bceSAndroid Build Coastguard Worker case float_uvec2_vec3 2129*35238bceSAndroid Build Coastguard Worker version 300 es 2130*35238bceSAndroid Build Coastguard Worker desc "varyings of type float and vec3 inside struct" 2131*35238bceSAndroid Build Coastguard Worker values 2132*35238bceSAndroid Build Coastguard Worker { 2133*35238bceSAndroid Build Coastguard Worker input float in0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ]; 2134*35238bceSAndroid Build Coastguard Worker output float out0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ]; 2135*35238bceSAndroid Build Coastguard Worker input uvec2 in1 = [ uvec2(1, 1) | uvec2(25, 25) | uvec2(1, 1) | uvec2(2, 3) | uvec2(16, 17) | uvec2(8, 7) ]; 2136*35238bceSAndroid Build Coastguard Worker output uvec2 out1 = [ uvec2(1, 1) | uvec2(25, 25) | uvec2(1, 1) | uvec2(2, 3) | uvec2(16, 17) | uvec2(8, 7) ]; 2137*35238bceSAndroid Build Coastguard Worker input vec3 in2 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ]; 2138*35238bceSAndroid Build Coastguard Worker output vec3 out2 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ]; 2139*35238bceSAndroid Build Coastguard Worker } 2140*35238bceSAndroid Build Coastguard Worker vertex "" 2141*35238bceSAndroid Build Coastguard Worker #version 300 es 2142*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 2143*35238bceSAndroid Build Coastguard Worker struct S { mediump float a; highp uvec2 b; highp vec3 c; }; 2144*35238bceSAndroid Build Coastguard Worker flat out S var; 2145*35238bceSAndroid Build Coastguard Worker void main() 2146*35238bceSAndroid Build Coastguard Worker { 2147*35238bceSAndroid Build Coastguard Worker ${VERTEX_SETUP} 2148*35238bceSAndroid Build Coastguard Worker var.a = in0; 2149*35238bceSAndroid Build Coastguard Worker var.b = in1; 2150*35238bceSAndroid Build Coastguard Worker var.c = in2; 2151*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 2152*35238bceSAndroid Build Coastguard Worker } 2153*35238bceSAndroid Build Coastguard Worker "" 2154*35238bceSAndroid Build Coastguard Worker fragment "" 2155*35238bceSAndroid Build Coastguard Worker #version 300 es 2156*35238bceSAndroid Build Coastguard Worker precision mediump float; 2157*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 2158*35238bceSAndroid Build Coastguard Worker struct S { mediump float a; highp uvec2 b; highp vec3 c; }; 2159*35238bceSAndroid Build Coastguard Worker flat in S var; 2160*35238bceSAndroid Build Coastguard Worker void main() 2161*35238bceSAndroid Build Coastguard Worker { 2162*35238bceSAndroid Build Coastguard Worker out0 = var.a; 2163*35238bceSAndroid Build Coastguard Worker out1 = var.b; 2164*35238bceSAndroid Build Coastguard Worker out2 = var.c; 2165*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 2166*35238bceSAndroid Build Coastguard Worker } 2167*35238bceSAndroid Build Coastguard Worker "" 2168*35238bceSAndroid Build Coastguard Worker end 2169*35238bceSAndroid Build Coastguard Worker end 2170*35238bceSAndroid Build Coastguard Worker 2171*35238bceSAndroid Build Coastguard Worker group interpolation "Varying interpolation modes" 2172*35238bceSAndroid Build Coastguard Worker case smooth 2173*35238bceSAndroid Build Coastguard Worker version 300 es 2174*35238bceSAndroid Build Coastguard Worker desc "varying of type vec4" 2175*35238bceSAndroid Build Coastguard Worker values 2176*35238bceSAndroid Build Coastguard Worker { 2177*35238bceSAndroid Build Coastguard Worker input vec4 in0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; 2178*35238bceSAndroid Build Coastguard Worker output vec4 out0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; 2179*35238bceSAndroid Build Coastguard Worker } 2180*35238bceSAndroid Build Coastguard Worker vertex "" 2181*35238bceSAndroid Build Coastguard Worker #version 300 es 2182*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 2183*35238bceSAndroid Build Coastguard Worker smooth out mediump vec4 var; 2184*35238bceSAndroid Build Coastguard Worker void main() 2185*35238bceSAndroid Build Coastguard Worker { 2186*35238bceSAndroid Build Coastguard Worker var = in0; 2187*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 2188*35238bceSAndroid Build Coastguard Worker } 2189*35238bceSAndroid Build Coastguard Worker "" 2190*35238bceSAndroid Build Coastguard Worker fragment "" 2191*35238bceSAndroid Build Coastguard Worker #version 300 es 2192*35238bceSAndroid Build Coastguard Worker precision mediump float; 2193*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 2194*35238bceSAndroid Build Coastguard Worker smooth in vec4 var; 2195*35238bceSAndroid Build Coastguard Worker void main() 2196*35238bceSAndroid Build Coastguard Worker { 2197*35238bceSAndroid Build Coastguard Worker out0 = var; 2198*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 2199*35238bceSAndroid Build Coastguard Worker } 2200*35238bceSAndroid Build Coastguard Worker "" 2201*35238bceSAndroid Build Coastguard Worker end 2202*35238bceSAndroid Build Coastguard Worker 2203*35238bceSAndroid Build Coastguard Worker case centroid 2204*35238bceSAndroid Build Coastguard Worker version 300 es 2205*35238bceSAndroid Build Coastguard Worker desc "varying of type vec4" 2206*35238bceSAndroid Build Coastguard Worker values 2207*35238bceSAndroid Build Coastguard Worker { 2208*35238bceSAndroid Build Coastguard Worker input vec4 in0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; 2209*35238bceSAndroid Build Coastguard Worker output vec4 out0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; 2210*35238bceSAndroid Build Coastguard Worker } 2211*35238bceSAndroid Build Coastguard Worker vertex "" 2212*35238bceSAndroid Build Coastguard Worker #version 300 es 2213*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 2214*35238bceSAndroid Build Coastguard Worker centroid out mediump vec4 var; 2215*35238bceSAndroid Build Coastguard Worker void main() 2216*35238bceSAndroid Build Coastguard Worker { 2217*35238bceSAndroid Build Coastguard Worker var = in0; 2218*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 2219*35238bceSAndroid Build Coastguard Worker } 2220*35238bceSAndroid Build Coastguard Worker "" 2221*35238bceSAndroid Build Coastguard Worker fragment "" 2222*35238bceSAndroid Build Coastguard Worker #version 300 es 2223*35238bceSAndroid Build Coastguard Worker precision mediump float; 2224*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 2225*35238bceSAndroid Build Coastguard Worker centroid in vec4 var; 2226*35238bceSAndroid Build Coastguard Worker void main() 2227*35238bceSAndroid Build Coastguard Worker { 2228*35238bceSAndroid Build Coastguard Worker out0 = var; 2229*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 2230*35238bceSAndroid Build Coastguard Worker } 2231*35238bceSAndroid Build Coastguard Worker "" 2232*35238bceSAndroid Build Coastguard Worker end 2233*35238bceSAndroid Build Coastguard Worker 2234*35238bceSAndroid Build Coastguard Worker case flat 2235*35238bceSAndroid Build Coastguard Worker version 300 es 2236*35238bceSAndroid Build Coastguard Worker desc "varying of type vec4" 2237*35238bceSAndroid Build Coastguard Worker values 2238*35238bceSAndroid Build Coastguard Worker { 2239*35238bceSAndroid Build Coastguard Worker input vec4 in0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; 2240*35238bceSAndroid Build Coastguard Worker output vec4 out0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; 2241*35238bceSAndroid Build Coastguard Worker } 2242*35238bceSAndroid Build Coastguard Worker vertex "" 2243*35238bceSAndroid Build Coastguard Worker #version 300 es 2244*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 2245*35238bceSAndroid Build Coastguard Worker flat out mediump vec4 var; 2246*35238bceSAndroid Build Coastguard Worker void main() 2247*35238bceSAndroid Build Coastguard Worker { 2248*35238bceSAndroid Build Coastguard Worker var = in0; 2249*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 2250*35238bceSAndroid Build Coastguard Worker } 2251*35238bceSAndroid Build Coastguard Worker "" 2252*35238bceSAndroid Build Coastguard Worker fragment "" 2253*35238bceSAndroid Build Coastguard Worker #version 300 es 2254*35238bceSAndroid Build Coastguard Worker precision mediump float; 2255*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 2256*35238bceSAndroid Build Coastguard Worker flat in vec4 var; 2257*35238bceSAndroid Build Coastguard Worker void main() 2258*35238bceSAndroid Build Coastguard Worker { 2259*35238bceSAndroid Build Coastguard Worker out0 = var; 2260*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 2261*35238bceSAndroid Build Coastguard Worker } 2262*35238bceSAndroid Build Coastguard Worker "" 2263*35238bceSAndroid Build Coastguard Worker end 2264*35238bceSAndroid Build Coastguard Worker end 2265*35238bceSAndroid Build Coastguard Worker 2266*35238bceSAndroid Build Coastguard Worker group usage "Varying usage in shaders" 2267*35238bceSAndroid Build Coastguard Worker case readback_1 2268*35238bceSAndroid Build Coastguard Worker version 300 es 2269*35238bceSAndroid Build Coastguard Worker desc "read back (an already written) varying in the vertex shader" 2270*35238bceSAndroid Build Coastguard Worker values 2271*35238bceSAndroid Build Coastguard Worker { 2272*35238bceSAndroid Build Coastguard Worker input float in0 = [ 1.0 | 0.0 | -2.0 | 10.0 ]; 2273*35238bceSAndroid Build Coastguard Worker output float out0 = [ 3.0 | 0.0 | -6.0 | 30.0 ]; 2274*35238bceSAndroid Build Coastguard Worker } 2275*35238bceSAndroid Build Coastguard Worker vertex "" 2276*35238bceSAndroid Build Coastguard Worker #version 300 es 2277*35238bceSAndroid Build Coastguard Worker precision mediump float; 2278*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 2279*35238bceSAndroid Build Coastguard Worker out float var1; 2280*35238bceSAndroid Build Coastguard Worker out float var2; 2281*35238bceSAndroid Build Coastguard Worker 2282*35238bceSAndroid Build Coastguard Worker void main() 2283*35238bceSAndroid Build Coastguard Worker { 2284*35238bceSAndroid Build Coastguard Worker var1 = in0; 2285*35238bceSAndroid Build Coastguard Worker var2 = var1 + in0; 2286*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 2287*35238bceSAndroid Build Coastguard Worker } 2288*35238bceSAndroid Build Coastguard Worker "" 2289*35238bceSAndroid Build Coastguard Worker fragment "" 2290*35238bceSAndroid Build Coastguard Worker #version 300 es 2291*35238bceSAndroid Build Coastguard Worker precision mediump float; 2292*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 2293*35238bceSAndroid Build Coastguard Worker in float var1; 2294*35238bceSAndroid Build Coastguard Worker in float var2; 2295*35238bceSAndroid Build Coastguard Worker 2296*35238bceSAndroid Build Coastguard Worker void main() 2297*35238bceSAndroid Build Coastguard Worker { 2298*35238bceSAndroid Build Coastguard Worker out0 = var1 + var2; 2299*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 2300*35238bceSAndroid Build Coastguard Worker } 2301*35238bceSAndroid Build Coastguard Worker "" 2302*35238bceSAndroid Build Coastguard Worker end 2303*35238bceSAndroid Build Coastguard Worker 2304*35238bceSAndroid Build Coastguard Worker case writeback_1 2305*35238bceSAndroid Build Coastguard Worker version 300 es 2306*35238bceSAndroid Build Coastguard Worker desc "write back a varying in the fragment shader" 2307*35238bceSAndroid Build Coastguard Worker values 2308*35238bceSAndroid Build Coastguard Worker { 2309*35238bceSAndroid Build Coastguard Worker input float in0 = [ 1.0 | 0.0 | -2.0 | 10.0 ]; 2310*35238bceSAndroid Build Coastguard Worker } 2311*35238bceSAndroid Build Coastguard Worker expect compile_fail 2312*35238bceSAndroid Build Coastguard Worker vertex "" 2313*35238bceSAndroid Build Coastguard Worker #version 300 es 2314*35238bceSAndroid Build Coastguard Worker precision mediump float; 2315*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 2316*35238bceSAndroid Build Coastguard Worker out float var1; 2317*35238bceSAndroid Build Coastguard Worker out float var2; 2318*35238bceSAndroid Build Coastguard Worker 2319*35238bceSAndroid Build Coastguard Worker void main() 2320*35238bceSAndroid Build Coastguard Worker { 2321*35238bceSAndroid Build Coastguard Worker var1 = in0; 2322*35238bceSAndroid Build Coastguard Worker var2 = var1 + in0; 2323*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 2324*35238bceSAndroid Build Coastguard Worker } 2325*35238bceSAndroid Build Coastguard Worker "" 2326*35238bceSAndroid Build Coastguard Worker fragment "" 2327*35238bceSAndroid Build Coastguard Worker #version 300 es 2328*35238bceSAndroid Build Coastguard Worker precision mediump float; 2329*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 2330*35238bceSAndroid Build Coastguard Worker in float var1; 2331*35238bceSAndroid Build Coastguard Worker in float var2; 2332*35238bceSAndroid Build Coastguard Worker 2333*35238bceSAndroid Build Coastguard Worker void main() 2334*35238bceSAndroid Build Coastguard Worker { 2335*35238bceSAndroid Build Coastguard Worker var2 = var1; 2336*35238bceSAndroid Build Coastguard Worker out0 = var1; 2337*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 2338*35238bceSAndroid Build Coastguard Worker } 2339*35238bceSAndroid Build Coastguard Worker "" 2340*35238bceSAndroid Build Coastguard Worker end 2341*35238bceSAndroid Build Coastguard Worker end 2342*35238bceSAndroid Build Coastguard Workerend 2343*35238bceSAndroid Build Coastguard Worker 2344*35238bceSAndroid Build Coastguard Workergroup uniform "Uniform linkage" 2345*35238bceSAndroid Build Coastguard Worker group basic "Default block uniforms of scalar and vector types" 2346*35238bceSAndroid Build Coastguard Worker case precision_conflict_1 2347*35238bceSAndroid Build Coastguard Worker version 300 es 2348*35238bceSAndroid Build Coastguard Worker desc "Vertex side uniform has highp, fragment side uniform mediump." 2349*35238bceSAndroid Build Coastguard Worker expect link_fail 2350*35238bceSAndroid Build Coastguard Worker values {output float out0 = 3.0;} 2351*35238bceSAndroid Build Coastguard Worker vertex "" 2352*35238bceSAndroid Build Coastguard Worker #version 300 es 2353*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 2354*35238bceSAndroid Build Coastguard Worker uniform highp float u_val; 2355*35238bceSAndroid Build Coastguard Worker out mediump float res; 2356*35238bceSAndroid Build Coastguard Worker void main() 2357*35238bceSAndroid Build Coastguard Worker { 2358*35238bceSAndroid Build Coastguard Worker res = u_val; 2359*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 2360*35238bceSAndroid Build Coastguard Worker } 2361*35238bceSAndroid Build Coastguard Worker "" 2362*35238bceSAndroid Build Coastguard Worker fragment "" 2363*35238bceSAndroid Build Coastguard Worker #version 300 es 2364*35238bceSAndroid Build Coastguard Worker precision mediump float; 2365*35238bceSAndroid Build Coastguard Worker uniform float u_val; 2366*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 2367*35238bceSAndroid Build Coastguard Worker in mediump float res; 2368*35238bceSAndroid Build Coastguard Worker void main() 2369*35238bceSAndroid Build Coastguard Worker { 2370*35238bceSAndroid Build Coastguard Worker out0 = u_val + res; 2371*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 2372*35238bceSAndroid Build Coastguard Worker } 2373*35238bceSAndroid Build Coastguard Worker "" 2374*35238bceSAndroid Build Coastguard Worker end 2375*35238bceSAndroid Build Coastguard Worker case precision_conflict_2 2376*35238bceSAndroid Build Coastguard Worker version 300 es 2377*35238bceSAndroid Build Coastguard Worker desc "Vertex side uniform has highp, fragment side uniform mediump." 2378*35238bceSAndroid Build Coastguard Worker expect link_fail 2379*35238bceSAndroid Build Coastguard Worker values {output float out0 = 3.0;} 2380*35238bceSAndroid Build Coastguard Worker vertex "" 2381*35238bceSAndroid Build Coastguard Worker #version 300 es 2382*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 2383*35238bceSAndroid Build Coastguard Worker uniform highp float u_val; 2384*35238bceSAndroid Build Coastguard Worker out mediump float res; 2385*35238bceSAndroid Build Coastguard Worker void main() 2386*35238bceSAndroid Build Coastguard Worker { 2387*35238bceSAndroid Build Coastguard Worker res = u_val; 2388*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 2389*35238bceSAndroid Build Coastguard Worker } 2390*35238bceSAndroid Build Coastguard Worker "" 2391*35238bceSAndroid Build Coastguard Worker fragment "" 2392*35238bceSAndroid Build Coastguard Worker #version 300 es 2393*35238bceSAndroid Build Coastguard Worker precision highp float; 2394*35238bceSAndroid Build Coastguard Worker uniform mediump float u_val; 2395*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 2396*35238bceSAndroid Build Coastguard Worker in mediump float res; 2397*35238bceSAndroid Build Coastguard Worker void main() 2398*35238bceSAndroid Build Coastguard Worker { 2399*35238bceSAndroid Build Coastguard Worker out0 = u_val + res; 2400*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 2401*35238bceSAndroid Build Coastguard Worker } 2402*35238bceSAndroid Build Coastguard Worker "" 2403*35238bceSAndroid Build Coastguard Worker end 2404*35238bceSAndroid Build Coastguard Worker case precision_conflict_3 2405*35238bceSAndroid Build Coastguard Worker version 300 es 2406*35238bceSAndroid Build Coastguard Worker desc "Vertex side uniform has lowp, fragment side uniform highp." 2407*35238bceSAndroid Build Coastguard Worker expect link_fail 2408*35238bceSAndroid Build Coastguard Worker values {output float out0 = 3.0;} 2409*35238bceSAndroid Build Coastguard Worker vertex "" 2410*35238bceSAndroid Build Coastguard Worker #version 300 es 2411*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 2412*35238bceSAndroid Build Coastguard Worker uniform lowp int u_val; 2413*35238bceSAndroid Build Coastguard Worker out mediump float res; 2414*35238bceSAndroid Build Coastguard Worker void main() 2415*35238bceSAndroid Build Coastguard Worker { 2416*35238bceSAndroid Build Coastguard Worker res = float(u_val); 2417*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 2418*35238bceSAndroid Build Coastguard Worker } 2419*35238bceSAndroid Build Coastguard Worker "" 2420*35238bceSAndroid Build Coastguard Worker fragment "" 2421*35238bceSAndroid Build Coastguard Worker #version 300 es 2422*35238bceSAndroid Build Coastguard Worker precision highp float; 2423*35238bceSAndroid Build Coastguard Worker uniform highp int u_val; 2424*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 2425*35238bceSAndroid Build Coastguard Worker in mediump float res; 2426*35238bceSAndroid Build Coastguard Worker void main() 2427*35238bceSAndroid Build Coastguard Worker { 2428*35238bceSAndroid Build Coastguard Worker out0 = float(u_val) + res; 2429*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 2430*35238bceSAndroid Build Coastguard Worker } 2431*35238bceSAndroid Build Coastguard Worker "" 2432*35238bceSAndroid Build Coastguard Worker end 2433*35238bceSAndroid Build Coastguard Worker case precision_conflict_4 2434*35238bceSAndroid Build Coastguard Worker version 300 es 2435*35238bceSAndroid Build Coastguard Worker desc "Vertex side uniform has lowp, fragment side uniform mediump." 2436*35238bceSAndroid Build Coastguard Worker expect link_fail 2437*35238bceSAndroid Build Coastguard Worker values {output float out0 = 3.0;} 2438*35238bceSAndroid Build Coastguard Worker vertex "" 2439*35238bceSAndroid Build Coastguard Worker #version 300 es 2440*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 2441*35238bceSAndroid Build Coastguard Worker uniform lowp vec3 u_val; 2442*35238bceSAndroid Build Coastguard Worker out mediump float res; 2443*35238bceSAndroid Build Coastguard Worker void main() 2444*35238bceSAndroid Build Coastguard Worker { 2445*35238bceSAndroid Build Coastguard Worker res = u_val.y; 2446*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 2447*35238bceSAndroid Build Coastguard Worker } 2448*35238bceSAndroid Build Coastguard Worker "" 2449*35238bceSAndroid Build Coastguard Worker fragment "" 2450*35238bceSAndroid Build Coastguard Worker #version 300 es 2451*35238bceSAndroid Build Coastguard Worker precision highp float; 2452*35238bceSAndroid Build Coastguard Worker uniform mediump vec3 u_val; 2453*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 2454*35238bceSAndroid Build Coastguard Worker in mediump float res; 2455*35238bceSAndroid Build Coastguard Worker void main() 2456*35238bceSAndroid Build Coastguard Worker { 2457*35238bceSAndroid Build Coastguard Worker out0 = u_val.z + res; 2458*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 2459*35238bceSAndroid Build Coastguard Worker } 2460*35238bceSAndroid Build Coastguard Worker "" 2461*35238bceSAndroid Build Coastguard Worker end 2462*35238bceSAndroid Build Coastguard Worker end 2463*35238bceSAndroid Build Coastguard Worker 2464*35238bceSAndroid Build Coastguard Worker group struct "Uniform structs" 2465*35238bceSAndroid Build Coastguard Worker # Struct linkage handling 2466*35238bceSAndroid Build Coastguard Worker case basic 2467*35238bceSAndroid Build Coastguard Worker version 300 es 2468*35238bceSAndroid Build Coastguard Worker desc "Same uniform struct in both shaders" 2469*35238bceSAndroid Build Coastguard Worker values { 2470*35238bceSAndroid Build Coastguard Worker uniform float val.a = 1.0; 2471*35238bceSAndroid Build Coastguard Worker uniform float val.b = 2.0; 2472*35238bceSAndroid Build Coastguard Worker output float out0 = 3.0; 2473*35238bceSAndroid Build Coastguard Worker } 2474*35238bceSAndroid Build Coastguard Worker vertex "" 2475*35238bceSAndroid Build Coastguard Worker #version 300 es 2476*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 2477*35238bceSAndroid Build Coastguard Worker struct Struct {mediump float a; mediump float b;}; 2478*35238bceSAndroid Build Coastguard Worker uniform Struct val; 2479*35238bceSAndroid Build Coastguard Worker out mediump float dummy; 2480*35238bceSAndroid Build Coastguard Worker void main() 2481*35238bceSAndroid Build Coastguard Worker { 2482*35238bceSAndroid Build Coastguard Worker dummy = val.a + val.b; 2483*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 2484*35238bceSAndroid Build Coastguard Worker } 2485*35238bceSAndroid Build Coastguard Worker "" 2486*35238bceSAndroid Build Coastguard Worker fragment "" 2487*35238bceSAndroid Build Coastguard Worker #version 300 es 2488*35238bceSAndroid Build Coastguard Worker precision mediump float; 2489*35238bceSAndroid Build Coastguard Worker struct Struct {mediump float a; mediump float b;}; 2490*35238bceSAndroid Build Coastguard Worker uniform Struct val; 2491*35238bceSAndroid Build Coastguard Worker in mediump float dummy; 2492*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 2493*35238bceSAndroid Build Coastguard Worker void main() 2494*35238bceSAndroid Build Coastguard Worker { 2495*35238bceSAndroid Build Coastguard Worker out0 = val.b + val.a; 2496*35238bceSAndroid Build Coastguard Worker out0 = out0 + dummy; 2497*35238bceSAndroid Build Coastguard Worker out0 = out0 - dummy; 2498*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 2499*35238bceSAndroid Build Coastguard Worker } 2500*35238bceSAndroid Build Coastguard Worker "" 2501*35238bceSAndroid Build Coastguard Worker end 2502*35238bceSAndroid Build Coastguard Worker 2503*35238bceSAndroid Build Coastguard Worker case vertex_only 2504*35238bceSAndroid Build Coastguard Worker version 300 es 2505*35238bceSAndroid Build Coastguard Worker desc "Uniform struct declared in both, used only in vertex." 2506*35238bceSAndroid Build Coastguard Worker values { 2507*35238bceSAndroid Build Coastguard Worker uniform float val.a = 1.0; 2508*35238bceSAndroid Build Coastguard Worker uniform float val.b = 2.0; 2509*35238bceSAndroid Build Coastguard Worker output float out0 = 3.0; 2510*35238bceSAndroid Build Coastguard Worker } 2511*35238bceSAndroid Build Coastguard Worker vertex "" 2512*35238bceSAndroid Build Coastguard Worker #version 300 es 2513*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 2514*35238bceSAndroid Build Coastguard Worker struct Struct {mediump float a; mediump float b;}; 2515*35238bceSAndroid Build Coastguard Worker uniform Struct val; 2516*35238bceSAndroid Build Coastguard Worker out mediump float res; 2517*35238bceSAndroid Build Coastguard Worker void main() 2518*35238bceSAndroid Build Coastguard Worker { 2519*35238bceSAndroid Build Coastguard Worker res = val.a + val.b; 2520*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 2521*35238bceSAndroid Build Coastguard Worker } 2522*35238bceSAndroid Build Coastguard Worker "" 2523*35238bceSAndroid Build Coastguard Worker fragment "" 2524*35238bceSAndroid Build Coastguard Worker #version 300 es 2525*35238bceSAndroid Build Coastguard Worker precision mediump float; 2526*35238bceSAndroid Build Coastguard Worker struct Struct {mediump float a; mediump float b;}; 2527*35238bceSAndroid Build Coastguard Worker uniform Struct val; 2528*35238bceSAndroid Build Coastguard Worker in mediump float res; 2529*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 2530*35238bceSAndroid Build Coastguard Worker void main() 2531*35238bceSAndroid Build Coastguard Worker { 2532*35238bceSAndroid Build Coastguard Worker out0 = res; 2533*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 2534*35238bceSAndroid Build Coastguard Worker } 2535*35238bceSAndroid Build Coastguard Worker "" 2536*35238bceSAndroid Build Coastguard Worker end 2537*35238bceSAndroid Build Coastguard Worker 2538*35238bceSAndroid Build Coastguard Worker case fragment_only 2539*35238bceSAndroid Build Coastguard Worker version 300 es 2540*35238bceSAndroid Build Coastguard Worker desc "Uniform struct declared in both, used only in fragment." 2541*35238bceSAndroid Build Coastguard Worker values { 2542*35238bceSAndroid Build Coastguard Worker uniform float val.a = 1.0; 2543*35238bceSAndroid Build Coastguard Worker uniform float val.b = 2.0; 2544*35238bceSAndroid Build Coastguard Worker output float out0 = 3.0; 2545*35238bceSAndroid Build Coastguard Worker } 2546*35238bceSAndroid Build Coastguard Worker vertex "" 2547*35238bceSAndroid Build Coastguard Worker #version 300 es 2548*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 2549*35238bceSAndroid Build Coastguard Worker struct Struct {mediump float a; mediump float b;}; 2550*35238bceSAndroid Build Coastguard Worker uniform Struct val; 2551*35238bceSAndroid Build Coastguard Worker void main() 2552*35238bceSAndroid Build Coastguard Worker { 2553*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 2554*35238bceSAndroid Build Coastguard Worker } 2555*35238bceSAndroid Build Coastguard Worker "" 2556*35238bceSAndroid Build Coastguard Worker fragment "" 2557*35238bceSAndroid Build Coastguard Worker #version 300 es 2558*35238bceSAndroid Build Coastguard Worker precision mediump float; 2559*35238bceSAndroid Build Coastguard Worker struct Struct {mediump float a; mediump float b;}; 2560*35238bceSAndroid Build Coastguard Worker uniform Struct val; 2561*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 2562*35238bceSAndroid Build Coastguard Worker void main() 2563*35238bceSAndroid Build Coastguard Worker { 2564*35238bceSAndroid Build Coastguard Worker out0 = val.a + val.b; 2565*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 2566*35238bceSAndroid Build Coastguard Worker } 2567*35238bceSAndroid Build Coastguard Worker "" 2568*35238bceSAndroid Build Coastguard Worker end 2569*35238bceSAndroid Build Coastguard Worker 2570*35238bceSAndroid Build Coastguard Worker case partial 2571*35238bceSAndroid Build Coastguard Worker version 300 es 2572*35238bceSAndroid Build Coastguard Worker desc "Uniform struct declared in both, used partially in both." 2573*35238bceSAndroid Build Coastguard Worker values { 2574*35238bceSAndroid Build Coastguard Worker uniform float val.a = 1.0; 2575*35238bceSAndroid Build Coastguard Worker uniform float val.b = 2.0; 2576*35238bceSAndroid Build Coastguard Worker output float out0 = 3.0; 2577*35238bceSAndroid Build Coastguard Worker } 2578*35238bceSAndroid Build Coastguard Worker vertex "" 2579*35238bceSAndroid Build Coastguard Worker #version 300 es 2580*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 2581*35238bceSAndroid Build Coastguard Worker struct Struct {mediump float a; mediump float b;}; 2582*35238bceSAndroid Build Coastguard Worker uniform Struct val; 2583*35238bceSAndroid Build Coastguard Worker out mediump float res; 2584*35238bceSAndroid Build Coastguard Worker void main() 2585*35238bceSAndroid Build Coastguard Worker { 2586*35238bceSAndroid Build Coastguard Worker res = val.a; 2587*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 2588*35238bceSAndroid Build Coastguard Worker } 2589*35238bceSAndroid Build Coastguard Worker "" 2590*35238bceSAndroid Build Coastguard Worker fragment "" 2591*35238bceSAndroid Build Coastguard Worker #version 300 es 2592*35238bceSAndroid Build Coastguard Worker precision mediump float; 2593*35238bceSAndroid Build Coastguard Worker struct Struct {mediump float a; mediump float b;}; 2594*35238bceSAndroid Build Coastguard Worker uniform Struct val; 2595*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 2596*35238bceSAndroid Build Coastguard Worker in mediump float res; 2597*35238bceSAndroid Build Coastguard Worker void main() 2598*35238bceSAndroid Build Coastguard Worker { 2599*35238bceSAndroid Build Coastguard Worker out0 = res + val.b; 2600*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 2601*35238bceSAndroid Build Coastguard Worker } 2602*35238bceSAndroid Build Coastguard Worker "" 2603*35238bceSAndroid Build Coastguard Worker end 2604*35238bceSAndroid Build Coastguard Worker 2605*35238bceSAndroid Build Coastguard Worker case vec4 2606*35238bceSAndroid Build Coastguard Worker version 300 es 2607*35238bceSAndroid Build Coastguard Worker desc "Same uniform struct in both shaders. Datatype vec4" 2608*35238bceSAndroid Build Coastguard Worker values { 2609*35238bceSAndroid Build Coastguard Worker uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0); 2610*35238bceSAndroid Build Coastguard Worker uniform vec4 val.b = vec4(1.0, 2.0, 3.0, 4.0); 2611*35238bceSAndroid Build Coastguard Worker output float out0 = 3.0; 2612*35238bceSAndroid Build Coastguard Worker } 2613*35238bceSAndroid Build Coastguard Worker vertex "" 2614*35238bceSAndroid Build Coastguard Worker #version 300 es 2615*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 2616*35238bceSAndroid Build Coastguard Worker struct Struct {mediump vec4 a; mediump vec4 b;}; 2617*35238bceSAndroid Build Coastguard Worker uniform Struct val; 2618*35238bceSAndroid Build Coastguard Worker out mediump float dummy; 2619*35238bceSAndroid Build Coastguard Worker void main() 2620*35238bceSAndroid Build Coastguard Worker { 2621*35238bceSAndroid Build Coastguard Worker dummy = val.a.x + val.b.y; 2622*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 2623*35238bceSAndroid Build Coastguard Worker } 2624*35238bceSAndroid Build Coastguard Worker "" 2625*35238bceSAndroid Build Coastguard Worker fragment "" 2626*35238bceSAndroid Build Coastguard Worker #version 300 es 2627*35238bceSAndroid Build Coastguard Worker precision mediump float; 2628*35238bceSAndroid Build Coastguard Worker struct Struct {mediump vec4 a; mediump vec4 b;}; 2629*35238bceSAndroid Build Coastguard Worker uniform Struct val; 2630*35238bceSAndroid Build Coastguard Worker in mediump float dummy; 2631*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 2632*35238bceSAndroid Build Coastguard Worker void main() 2633*35238bceSAndroid Build Coastguard Worker { 2634*35238bceSAndroid Build Coastguard Worker out0 = val.b.y + val.a.x; 2635*35238bceSAndroid Build Coastguard Worker out0 = out0 + dummy; 2636*35238bceSAndroid Build Coastguard Worker out0 = out0 - dummy; 2637*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 2638*35238bceSAndroid Build Coastguard Worker } 2639*35238bceSAndroid Build Coastguard Worker "" 2640*35238bceSAndroid Build Coastguard Worker end 2641*35238bceSAndroid Build Coastguard Worker 2642*35238bceSAndroid Build Coastguard Worker case vertex_only_vec4 2643*35238bceSAndroid Build Coastguard Worker version 300 es 2644*35238bceSAndroid Build Coastguard Worker desc "Uniform struct declared in both, used only in vertex. Datatype vec4 " 2645*35238bceSAndroid Build Coastguard Worker values { 2646*35238bceSAndroid Build Coastguard Worker uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0); 2647*35238bceSAndroid Build Coastguard Worker uniform vec4 val.b = vec4(1.0, 2.0, 3.0, 4.0); 2648*35238bceSAndroid Build Coastguard Worker output float out0 = 3.0; 2649*35238bceSAndroid Build Coastguard Worker } 2650*35238bceSAndroid Build Coastguard Worker vertex "" 2651*35238bceSAndroid Build Coastguard Worker #version 300 es 2652*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 2653*35238bceSAndroid Build Coastguard Worker struct Struct {mediump vec4 a; mediump vec4 b;}; 2654*35238bceSAndroid Build Coastguard Worker uniform Struct val; 2655*35238bceSAndroid Build Coastguard Worker out mediump float res; 2656*35238bceSAndroid Build Coastguard Worker void main() 2657*35238bceSAndroid Build Coastguard Worker { 2658*35238bceSAndroid Build Coastguard Worker res = val.a.x + val.b.y; 2659*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 2660*35238bceSAndroid Build Coastguard Worker } 2661*35238bceSAndroid Build Coastguard Worker "" 2662*35238bceSAndroid Build Coastguard Worker fragment "" 2663*35238bceSAndroid Build Coastguard Worker #version 300 es 2664*35238bceSAndroid Build Coastguard Worker precision mediump float; 2665*35238bceSAndroid Build Coastguard Worker struct Struct {mediump vec4 a; mediump vec4 b;}; 2666*35238bceSAndroid Build Coastguard Worker uniform Struct val; 2667*35238bceSAndroid Build Coastguard Worker in mediump float res; 2668*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 2669*35238bceSAndroid Build Coastguard Worker void main() 2670*35238bceSAndroid Build Coastguard Worker { out0 = res; 2671*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 2672*35238bceSAndroid Build Coastguard Worker } 2673*35238bceSAndroid Build Coastguard Worker "" 2674*35238bceSAndroid Build Coastguard Worker end 2675*35238bceSAndroid Build Coastguard Worker 2676*35238bceSAndroid Build Coastguard Worker case fragment_only_vec4 2677*35238bceSAndroid Build Coastguard Worker version 300 es 2678*35238bceSAndroid Build Coastguard Worker desc "Uniform struct declared in both, used only in fragment. Datatype vec4" 2679*35238bceSAndroid Build Coastguard Worker values { 2680*35238bceSAndroid Build Coastguard Worker uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0); 2681*35238bceSAndroid Build Coastguard Worker uniform vec4 val.b = vec4(1.0, 2.0, 3.0, 4.0); 2682*35238bceSAndroid Build Coastguard Worker output float out0 = 3.0; 2683*35238bceSAndroid Build Coastguard Worker } 2684*35238bceSAndroid Build Coastguard Worker vertex "" 2685*35238bceSAndroid Build Coastguard Worker #version 300 es 2686*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 2687*35238bceSAndroid Build Coastguard Worker struct Struct {mediump vec4 a; mediump vec4 b;}; 2688*35238bceSAndroid Build Coastguard Worker uniform Struct val; 2689*35238bceSAndroid Build Coastguard Worker void main() 2690*35238bceSAndroid Build Coastguard Worker { 2691*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 2692*35238bceSAndroid Build Coastguard Worker } 2693*35238bceSAndroid Build Coastguard Worker "" 2694*35238bceSAndroid Build Coastguard Worker fragment "" 2695*35238bceSAndroid Build Coastguard Worker #version 300 es 2696*35238bceSAndroid Build Coastguard Worker precision mediump float; 2697*35238bceSAndroid Build Coastguard Worker struct Struct {mediump vec4 a; mediump vec4 b;}; 2698*35238bceSAndroid Build Coastguard Worker uniform Struct val; 2699*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 2700*35238bceSAndroid Build Coastguard Worker void main() 2701*35238bceSAndroid Build Coastguard Worker { out0 = val.a.x + val.b.y; 2702*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 2703*35238bceSAndroid Build Coastguard Worker } 2704*35238bceSAndroid Build Coastguard Worker "" 2705*35238bceSAndroid Build Coastguard Worker end 2706*35238bceSAndroid Build Coastguard Worker 2707*35238bceSAndroid Build Coastguard Worker case partial_vec4 2708*35238bceSAndroid Build Coastguard Worker version 300 es 2709*35238bceSAndroid Build Coastguard Worker desc "Uniform struct declared in both, used partially in both. Datatype vec4" 2710*35238bceSAndroid Build Coastguard Worker values { 2711*35238bceSAndroid Build Coastguard Worker uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0); 2712*35238bceSAndroid Build Coastguard Worker uniform vec4 val.b = vec4(1.0, 2.0, 3.0, 4.0); 2713*35238bceSAndroid Build Coastguard Worker output float out0 = 3.0; 2714*35238bceSAndroid Build Coastguard Worker } 2715*35238bceSAndroid Build Coastguard Worker vertex "" 2716*35238bceSAndroid Build Coastguard Worker #version 300 es 2717*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 2718*35238bceSAndroid Build Coastguard Worker struct Struct {mediump vec4 a; mediump vec4 b;}; 2719*35238bceSAndroid Build Coastguard Worker uniform Struct val; 2720*35238bceSAndroid Build Coastguard Worker out mediump float res; 2721*35238bceSAndroid Build Coastguard Worker void main() 2722*35238bceSAndroid Build Coastguard Worker { 2723*35238bceSAndroid Build Coastguard Worker res = val.a.x; 2724*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 2725*35238bceSAndroid Build Coastguard Worker } 2726*35238bceSAndroid Build Coastguard Worker "" 2727*35238bceSAndroid Build Coastguard Worker fragment "" 2728*35238bceSAndroid Build Coastguard Worker #version 300 es 2729*35238bceSAndroid Build Coastguard Worker precision mediump float; 2730*35238bceSAndroid Build Coastguard Worker struct Struct {mediump vec4 a; mediump vec4 b;}; 2731*35238bceSAndroid Build Coastguard Worker uniform Struct val; 2732*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 2733*35238bceSAndroid Build Coastguard Worker in mediump float res; 2734*35238bceSAndroid Build Coastguard Worker void main() 2735*35238bceSAndroid Build Coastguard Worker { out0 = res + val.b.y; 2736*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 2737*35238bceSAndroid Build Coastguard Worker } 2738*35238bceSAndroid Build Coastguard Worker "" 2739*35238bceSAndroid Build Coastguard Worker end 2740*35238bceSAndroid Build Coastguard Worker 2741*35238bceSAndroid Build Coastguard Worker case vec4_vec3 2742*35238bceSAndroid Build Coastguard Worker version 300 es 2743*35238bceSAndroid Build Coastguard Worker desc "Same uniform struct in both shaders. Datatype vec4 and vec3" 2744*35238bceSAndroid Build Coastguard Worker values { 2745*35238bceSAndroid Build Coastguard Worker uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0); 2746*35238bceSAndroid Build Coastguard Worker uniform vec3 val.b = vec3(1.0, 2.0, 3.0); 2747*35238bceSAndroid Build Coastguard Worker output float out0 = 3.0; 2748*35238bceSAndroid Build Coastguard Worker } 2749*35238bceSAndroid Build Coastguard Worker vertex "" 2750*35238bceSAndroid Build Coastguard Worker #version 300 es 2751*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 2752*35238bceSAndroid Build Coastguard Worker struct Struct {mediump vec4 a; mediump vec3 b;}; 2753*35238bceSAndroid Build Coastguard Worker uniform Struct val; 2754*35238bceSAndroid Build Coastguard Worker out mediump float dummy; 2755*35238bceSAndroid Build Coastguard Worker void main() 2756*35238bceSAndroid Build Coastguard Worker { 2757*35238bceSAndroid Build Coastguard Worker dummy = val.a.x + val.b.y; 2758*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 2759*35238bceSAndroid Build Coastguard Worker } 2760*35238bceSAndroid Build Coastguard Worker "" 2761*35238bceSAndroid Build Coastguard Worker fragment "" 2762*35238bceSAndroid Build Coastguard Worker #version 300 es 2763*35238bceSAndroid Build Coastguard Worker precision mediump float; 2764*35238bceSAndroid Build Coastguard Worker struct Struct {mediump vec4 a; mediump vec3 b;}; 2765*35238bceSAndroid Build Coastguard Worker uniform Struct val; 2766*35238bceSAndroid Build Coastguard Worker in mediump float dummy; 2767*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 2768*35238bceSAndroid Build Coastguard Worker void main() 2769*35238bceSAndroid Build Coastguard Worker { out0 = val.b.y + val.a.x; 2770*35238bceSAndroid Build Coastguard Worker out0 = out0 + dummy; 2771*35238bceSAndroid Build Coastguard Worker out0 = out0 - dummy; 2772*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_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 vertex_only_vec4_vec3 2778*35238bceSAndroid Build Coastguard Worker version 300 es 2779*35238bceSAndroid Build Coastguard Worker desc "Uniform struct declared in both, used only in vertex. Datatype vec4 and vec3" 2780*35238bceSAndroid Build Coastguard Worker values { 2781*35238bceSAndroid Build Coastguard Worker uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0); 2782*35238bceSAndroid Build Coastguard Worker uniform vec3 val.b = vec3(1.0, 2.0, 3.0); 2783*35238bceSAndroid Build Coastguard Worker output float out0 = 3.0; 2784*35238bceSAndroid Build Coastguard Worker } 2785*35238bceSAndroid Build Coastguard Worker vertex "" 2786*35238bceSAndroid Build Coastguard Worker #version 300 es 2787*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 2788*35238bceSAndroid Build Coastguard Worker struct Struct {mediump vec4 a; mediump vec3 b;}; 2789*35238bceSAndroid Build Coastguard Worker uniform Struct val; 2790*35238bceSAndroid Build Coastguard Worker out mediump float res; 2791*35238bceSAndroid Build Coastguard Worker void main() 2792*35238bceSAndroid Build Coastguard Worker { 2793*35238bceSAndroid Build Coastguard Worker res = val.a.x + val.b.y; 2794*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 2795*35238bceSAndroid Build Coastguard Worker } 2796*35238bceSAndroid Build Coastguard Worker "" 2797*35238bceSAndroid Build Coastguard Worker fragment "" 2798*35238bceSAndroid Build Coastguard Worker #version 300 es 2799*35238bceSAndroid Build Coastguard Worker precision mediump float; 2800*35238bceSAndroid Build Coastguard Worker struct Struct {mediump vec4 a; mediump vec3 b;}; 2801*35238bceSAndroid Build Coastguard Worker uniform Struct val; 2802*35238bceSAndroid Build Coastguard Worker in mediump float res; 2803*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 2804*35238bceSAndroid Build Coastguard Worker void main() 2805*35238bceSAndroid Build Coastguard Worker { out0 = res; 2806*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 2807*35238bceSAndroid Build Coastguard Worker } 2808*35238bceSAndroid Build Coastguard Worker "" 2809*35238bceSAndroid Build Coastguard Worker end 2810*35238bceSAndroid Build Coastguard Worker 2811*35238bceSAndroid Build Coastguard Worker case fragment_only_vec4_vec3 2812*35238bceSAndroid Build Coastguard Worker version 300 es 2813*35238bceSAndroid Build Coastguard Worker desc "Uniform struct declared in both, used only in fragment. Datatype vec4 and vec3" 2814*35238bceSAndroid Build Coastguard Worker values { 2815*35238bceSAndroid Build Coastguard Worker uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0); 2816*35238bceSAndroid Build Coastguard Worker uniform vec3 val.b = vec3(1.0, 2.0, 3.0); 2817*35238bceSAndroid Build Coastguard Worker output float out0 = 3.0; 2818*35238bceSAndroid Build Coastguard Worker } 2819*35238bceSAndroid Build Coastguard Worker vertex "" 2820*35238bceSAndroid Build Coastguard Worker #version 300 es 2821*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 2822*35238bceSAndroid Build Coastguard Worker struct Struct {mediump vec4 a; mediump vec3 b;}; 2823*35238bceSAndroid Build Coastguard Worker uniform Struct val; 2824*35238bceSAndroid Build Coastguard Worker void main() 2825*35238bceSAndroid Build Coastguard Worker { 2826*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 2827*35238bceSAndroid Build Coastguard Worker } 2828*35238bceSAndroid Build Coastguard Worker "" 2829*35238bceSAndroid Build Coastguard Worker fragment "" 2830*35238bceSAndroid Build Coastguard Worker #version 300 es 2831*35238bceSAndroid Build Coastguard Worker precision mediump float; 2832*35238bceSAndroid Build Coastguard Worker struct Struct {mediump vec4 a; mediump vec3 b;}; 2833*35238bceSAndroid Build Coastguard Worker uniform Struct val; 2834*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 2835*35238bceSAndroid Build Coastguard Worker void main() 2836*35238bceSAndroid Build Coastguard Worker { out0 = val.a.x + val.b.y; 2837*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 2838*35238bceSAndroid Build Coastguard Worker } 2839*35238bceSAndroid Build Coastguard Worker "" 2840*35238bceSAndroid Build Coastguard Worker end 2841*35238bceSAndroid Build Coastguard Worker 2842*35238bceSAndroid Build Coastguard Worker case partial_vec4_vec3 2843*35238bceSAndroid Build Coastguard Worker version 300 es 2844*35238bceSAndroid Build Coastguard Worker desc "Uniform struct declared in both, used partially in both. Datatype vec4 and vec3" 2845*35238bceSAndroid Build Coastguard Worker values { 2846*35238bceSAndroid Build Coastguard Worker uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0); 2847*35238bceSAndroid Build Coastguard Worker uniform vec3 val.b = vec3(1.0, 2.0, 3.0); 2848*35238bceSAndroid Build Coastguard Worker output float out0 = 3.0; 2849*35238bceSAndroid Build Coastguard Worker } 2850*35238bceSAndroid Build Coastguard Worker vertex "" 2851*35238bceSAndroid Build Coastguard Worker #version 300 es 2852*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 2853*35238bceSAndroid Build Coastguard Worker struct Struct {mediump vec4 a; mediump vec3 b;}; 2854*35238bceSAndroid Build Coastguard Worker uniform Struct val; 2855*35238bceSAndroid Build Coastguard Worker out mediump float res; 2856*35238bceSAndroid Build Coastguard Worker void main() 2857*35238bceSAndroid Build Coastguard Worker { 2858*35238bceSAndroid Build Coastguard Worker res = val.a.x; 2859*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 2860*35238bceSAndroid Build Coastguard Worker } 2861*35238bceSAndroid Build Coastguard Worker "" 2862*35238bceSAndroid Build Coastguard Worker fragment "" 2863*35238bceSAndroid Build Coastguard Worker #version 300 es 2864*35238bceSAndroid Build Coastguard Worker precision mediump float; 2865*35238bceSAndroid Build Coastguard Worker struct Struct {mediump vec4 a; mediump vec3 b;}; 2866*35238bceSAndroid Build Coastguard Worker uniform Struct val; 2867*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 2868*35238bceSAndroid Build Coastguard Worker in mediump float res; 2869*35238bceSAndroid Build Coastguard Worker void main() 2870*35238bceSAndroid Build Coastguard Worker { out0 = res + val.b.y; 2871*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 2872*35238bceSAndroid Build Coastguard Worker } 2873*35238bceSAndroid Build Coastguard Worker "" 2874*35238bceSAndroid Build Coastguard Worker end 2875*35238bceSAndroid Build Coastguard Worker 2876*35238bceSAndroid Build Coastguard Worker case vec4_float 2877*35238bceSAndroid Build Coastguard Worker version 300 es 2878*35238bceSAndroid Build Coastguard Worker desc "Same uniform struct in both shaders. Datatype vec4 and float" 2879*35238bceSAndroid Build Coastguard Worker values { 2880*35238bceSAndroid Build Coastguard Worker uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0); 2881*35238bceSAndroid Build Coastguard Worker uniform float val.b = 2.0; 2882*35238bceSAndroid Build Coastguard Worker output float out0 = 3.0; 2883*35238bceSAndroid Build Coastguard Worker } 2884*35238bceSAndroid Build Coastguard Worker vertex "" 2885*35238bceSAndroid Build Coastguard Worker #version 300 es 2886*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 2887*35238bceSAndroid Build Coastguard Worker struct Struct {mediump vec4 a; mediump float b;}; 2888*35238bceSAndroid Build Coastguard Worker uniform Struct val; 2889*35238bceSAndroid Build Coastguard Worker out mediump float dummy; 2890*35238bceSAndroid Build Coastguard Worker void main() 2891*35238bceSAndroid Build Coastguard Worker { 2892*35238bceSAndroid Build Coastguard Worker dummy = val.a.x + val.b; 2893*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 2894*35238bceSAndroid Build Coastguard Worker } 2895*35238bceSAndroid Build Coastguard Worker "" 2896*35238bceSAndroid Build Coastguard Worker fragment "" 2897*35238bceSAndroid Build Coastguard Worker #version 300 es 2898*35238bceSAndroid Build Coastguard Worker precision mediump float; 2899*35238bceSAndroid Build Coastguard Worker struct Struct {mediump vec4 a; mediump float b;}; 2900*35238bceSAndroid Build Coastguard Worker uniform Struct val; 2901*35238bceSAndroid Build Coastguard Worker in mediump float dummy; 2902*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 2903*35238bceSAndroid Build Coastguard Worker void main() 2904*35238bceSAndroid Build Coastguard Worker { out0 = val.b + val.a.x; 2905*35238bceSAndroid Build Coastguard Worker out0 = out0 + dummy; 2906*35238bceSAndroid Build Coastguard Worker out0 = out0 - dummy; 2907*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 2908*35238bceSAndroid Build Coastguard Worker } 2909*35238bceSAndroid Build Coastguard Worker "" 2910*35238bceSAndroid Build Coastguard Worker end 2911*35238bceSAndroid Build Coastguard Worker 2912*35238bceSAndroid Build Coastguard Worker case vertex_only_vec4_float 2913*35238bceSAndroid Build Coastguard Worker version 300 es 2914*35238bceSAndroid Build Coastguard Worker desc "Uniform struct declared in both, used only in vertex. Datatype vec4 and float" 2915*35238bceSAndroid Build Coastguard Worker values { 2916*35238bceSAndroid Build Coastguard Worker uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0); 2917*35238bceSAndroid Build Coastguard Worker uniform float val.b = 2.0; 2918*35238bceSAndroid Build Coastguard Worker output float out0 = 3.0; 2919*35238bceSAndroid Build Coastguard Worker } 2920*35238bceSAndroid Build Coastguard Worker vertex "" 2921*35238bceSAndroid Build Coastguard Worker #version 300 es 2922*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 2923*35238bceSAndroid Build Coastguard Worker struct Struct {mediump vec4 a; mediump float b;}; 2924*35238bceSAndroid Build Coastguard Worker uniform Struct val; 2925*35238bceSAndroid Build Coastguard Worker out mediump float res; 2926*35238bceSAndroid Build Coastguard Worker void main() 2927*35238bceSAndroid Build Coastguard Worker { 2928*35238bceSAndroid Build Coastguard Worker res = val.a.x + val.b; 2929*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 2930*35238bceSAndroid Build Coastguard Worker } 2931*35238bceSAndroid Build Coastguard Worker "" 2932*35238bceSAndroid Build Coastguard Worker fragment "" 2933*35238bceSAndroid Build Coastguard Worker #version 300 es 2934*35238bceSAndroid Build Coastguard Worker precision mediump float; 2935*35238bceSAndroid Build Coastguard Worker struct Struct {mediump vec4 a; mediump float b;}; 2936*35238bceSAndroid Build Coastguard Worker uniform Struct val; 2937*35238bceSAndroid Build Coastguard Worker in mediump float res; 2938*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 2939*35238bceSAndroid Build Coastguard Worker void main() 2940*35238bceSAndroid Build Coastguard Worker { out0 = res; 2941*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_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 fragment_only_vec4_float 2947*35238bceSAndroid Build Coastguard Worker version 300 es 2948*35238bceSAndroid Build Coastguard Worker desc "Uniform struct declared in both, used only in fragment. Datatype vec4 and float" 2949*35238bceSAndroid Build Coastguard Worker values { 2950*35238bceSAndroid Build Coastguard Worker uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0); 2951*35238bceSAndroid Build Coastguard Worker uniform float val.b = 2.0; 2952*35238bceSAndroid Build Coastguard Worker output float out0 = 3.0; 2953*35238bceSAndroid Build Coastguard Worker } 2954*35238bceSAndroid Build Coastguard Worker vertex "" 2955*35238bceSAndroid Build Coastguard Worker #version 300 es 2956*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 2957*35238bceSAndroid Build Coastguard Worker struct Struct {mediump vec4 a; mediump float b;}; 2958*35238bceSAndroid Build Coastguard Worker uniform Struct val; 2959*35238bceSAndroid Build Coastguard Worker void main() 2960*35238bceSAndroid Build Coastguard Worker { 2961*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 2962*35238bceSAndroid Build Coastguard Worker } 2963*35238bceSAndroid Build Coastguard Worker "" 2964*35238bceSAndroid Build Coastguard Worker fragment "" 2965*35238bceSAndroid Build Coastguard Worker #version 300 es 2966*35238bceSAndroid Build Coastguard Worker precision mediump float; 2967*35238bceSAndroid Build Coastguard Worker struct Struct {mediump vec4 a; mediump float b;}; 2968*35238bceSAndroid Build Coastguard Worker uniform Struct val; 2969*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 2970*35238bceSAndroid Build Coastguard Worker void main() 2971*35238bceSAndroid Build Coastguard Worker { out0 = val.a.x + val.b; 2972*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 2973*35238bceSAndroid Build Coastguard Worker } 2974*35238bceSAndroid Build Coastguard Worker "" 2975*35238bceSAndroid Build Coastguard Worker end 2976*35238bceSAndroid Build Coastguard Worker 2977*35238bceSAndroid Build Coastguard Worker case partial_vec4_float 2978*35238bceSAndroid Build Coastguard Worker version 300 es 2979*35238bceSAndroid Build Coastguard Worker desc "Uniform struct declared in both, used partially in both. Datatype vec4 and float" 2980*35238bceSAndroid Build Coastguard Worker values { 2981*35238bceSAndroid Build Coastguard Worker uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0); 2982*35238bceSAndroid Build Coastguard Worker uniform float val.b = 2.0; 2983*35238bceSAndroid Build Coastguard Worker output float out0 = 3.0; 2984*35238bceSAndroid Build Coastguard Worker } 2985*35238bceSAndroid Build Coastguard Worker vertex "" 2986*35238bceSAndroid Build Coastguard Worker #version 300 es 2987*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 2988*35238bceSAndroid Build Coastguard Worker struct Struct {mediump vec4 a; mediump float b;}; 2989*35238bceSAndroid Build Coastguard Worker uniform Struct val; 2990*35238bceSAndroid Build Coastguard Worker out mediump float res; 2991*35238bceSAndroid Build Coastguard Worker void main() 2992*35238bceSAndroid Build Coastguard Worker { 2993*35238bceSAndroid Build Coastguard Worker res = val.a.x; 2994*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 2995*35238bceSAndroid Build Coastguard Worker } 2996*35238bceSAndroid Build Coastguard Worker "" 2997*35238bceSAndroid Build Coastguard Worker fragment "" 2998*35238bceSAndroid Build Coastguard Worker #version 300 es 2999*35238bceSAndroid Build Coastguard Worker precision mediump float; 3000*35238bceSAndroid Build Coastguard Worker struct Struct {mediump vec4 a; mediump float b;}; 3001*35238bceSAndroid Build Coastguard Worker uniform Struct val; 3002*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 3003*35238bceSAndroid Build Coastguard Worker in mediump float res; 3004*35238bceSAndroid Build Coastguard Worker void main() 3005*35238bceSAndroid Build Coastguard Worker { out0 = res + val.b; 3006*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 3007*35238bceSAndroid Build Coastguard Worker } 3008*35238bceSAndroid Build Coastguard Worker "" 3009*35238bceSAndroid Build Coastguard Worker end 3010*35238bceSAndroid Build Coastguard Worker 3011*35238bceSAndroid Build Coastguard Worker case partial_vec4_struct 3012*35238bceSAndroid Build Coastguard Worker version 300 es 3013*35238bceSAndroid Build Coastguard Worker desc "Uniform struct declared in both, used partially in both. Datatype vec4 and struct with vec4" 3014*35238bceSAndroid Build Coastguard Worker values { 3015*35238bceSAndroid Build Coastguard Worker uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0); 3016*35238bceSAndroid Build Coastguard Worker uniform vec4 val.b.c = vec4(1.0, 2.0, 3.0, 4.0); 3017*35238bceSAndroid Build Coastguard Worker output float out0 = 3.0; 3018*35238bceSAndroid Build Coastguard Worker } 3019*35238bceSAndroid Build Coastguard Worker vertex "" 3020*35238bceSAndroid Build Coastguard Worker #version 300 es 3021*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 3022*35238bceSAndroid Build Coastguard Worker struct Inner {mediump vec4 c;}; 3023*35238bceSAndroid Build Coastguard Worker struct Struct {mediump vec4 a; Inner b;}; 3024*35238bceSAndroid Build Coastguard Worker uniform Struct val; 3025*35238bceSAndroid Build Coastguard Worker out mediump float res; 3026*35238bceSAndroid Build Coastguard Worker void main() 3027*35238bceSAndroid Build Coastguard Worker { 3028*35238bceSAndroid Build Coastguard Worker res = val.a.x; 3029*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 3030*35238bceSAndroid Build Coastguard Worker } 3031*35238bceSAndroid Build Coastguard Worker "" 3032*35238bceSAndroid Build Coastguard Worker fragment "" 3033*35238bceSAndroid Build Coastguard Worker #version 300 es 3034*35238bceSAndroid Build Coastguard Worker precision mediump float; 3035*35238bceSAndroid Build Coastguard Worker struct Inner {mediump vec4 c;}; 3036*35238bceSAndroid Build Coastguard Worker struct Struct {mediump vec4 a; Inner b;}; 3037*35238bceSAndroid Build Coastguard Worker uniform Struct val; 3038*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 3039*35238bceSAndroid Build Coastguard Worker in mediump float res; 3040*35238bceSAndroid Build Coastguard Worker void main() 3041*35238bceSAndroid Build Coastguard Worker { out0 = res + val.b.c.y; 3042*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 3043*35238bceSAndroid Build Coastguard Worker } 3044*35238bceSAndroid Build Coastguard Worker "" 3045*35238bceSAndroid Build Coastguard Worker end 3046*35238bceSAndroid Build Coastguard Worker 3047*35238bceSAndroid Build Coastguard Worker case partial_vec4_vec3_struct 3048*35238bceSAndroid Build Coastguard Worker version 300 es 3049*35238bceSAndroid Build Coastguard Worker desc "Uniform struct declared in both, used partially in both. Datatype vec4 and struct with vec3" 3050*35238bceSAndroid Build Coastguard Worker values { 3051*35238bceSAndroid Build Coastguard Worker uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0); 3052*35238bceSAndroid Build Coastguard Worker uniform vec3 val.b.c = vec3(1.0, 2.0, 3.0); 3053*35238bceSAndroid Build Coastguard Worker output float out0 = 3.0; 3054*35238bceSAndroid Build Coastguard Worker } 3055*35238bceSAndroid Build Coastguard Worker vertex "" 3056*35238bceSAndroid Build Coastguard Worker #version 300 es 3057*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 3058*35238bceSAndroid Build Coastguard Worker struct Inner {mediump vec3 c;}; 3059*35238bceSAndroid Build Coastguard Worker struct Struct {mediump vec4 a; Inner b;}; 3060*35238bceSAndroid Build Coastguard Worker uniform Struct val; 3061*35238bceSAndroid Build Coastguard Worker out mediump float res; 3062*35238bceSAndroid Build Coastguard Worker void main() 3063*35238bceSAndroid Build Coastguard Worker { 3064*35238bceSAndroid Build Coastguard Worker res = val.a.x; 3065*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 3066*35238bceSAndroid Build Coastguard Worker } 3067*35238bceSAndroid Build Coastguard Worker "" 3068*35238bceSAndroid Build Coastguard Worker fragment "" 3069*35238bceSAndroid Build Coastguard Worker #version 300 es 3070*35238bceSAndroid Build Coastguard Worker precision mediump float; 3071*35238bceSAndroid Build Coastguard Worker struct Inner {mediump vec3 c;}; 3072*35238bceSAndroid Build Coastguard Worker struct Struct {mediump vec4 a; Inner b;}; 3073*35238bceSAndroid Build Coastguard Worker uniform Struct val; 3074*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 3075*35238bceSAndroid Build Coastguard Worker in mediump float res; 3076*35238bceSAndroid Build Coastguard Worker void main() 3077*35238bceSAndroid Build Coastguard Worker { out0 = res + val.b.c.y; 3078*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 3079*35238bceSAndroid Build Coastguard Worker } 3080*35238bceSAndroid Build Coastguard Worker "" 3081*35238bceSAndroid Build Coastguard Worker end 3082*35238bceSAndroid Build Coastguard Worker 3083*35238bceSAndroid Build Coastguard Worker case partial_vec2_vec3 3084*35238bceSAndroid Build Coastguard Worker version 300 es 3085*35238bceSAndroid Build Coastguard Worker desc "Uniform struct declared in both, used partially in both. Datatype vec2 and vec3" 3086*35238bceSAndroid Build Coastguard Worker values { 3087*35238bceSAndroid Build Coastguard Worker uniform vec2 val.a = vec2(1.0, 2.0); 3088*35238bceSAndroid Build Coastguard Worker uniform vec3 val.b = vec3(1.0, 2.0, 3.0); 3089*35238bceSAndroid Build Coastguard Worker output float out0 = 3.0; 3090*35238bceSAndroid Build Coastguard Worker } 3091*35238bceSAndroid Build Coastguard Worker vertex "" 3092*35238bceSAndroid Build Coastguard Worker #version 300 es 3093*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 3094*35238bceSAndroid Build Coastguard Worker struct Struct {mediump vec2 a; mediump vec3 b;}; 3095*35238bceSAndroid Build Coastguard Worker uniform Struct val; 3096*35238bceSAndroid Build Coastguard Worker out mediump float res; 3097*35238bceSAndroid Build Coastguard Worker void main() 3098*35238bceSAndroid Build Coastguard Worker { 3099*35238bceSAndroid Build Coastguard Worker res = val.a.x; 3100*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 3101*35238bceSAndroid Build Coastguard Worker } 3102*35238bceSAndroid Build Coastguard Worker "" 3103*35238bceSAndroid Build Coastguard Worker fragment "" 3104*35238bceSAndroid Build Coastguard Worker #version 300 es 3105*35238bceSAndroid Build Coastguard Worker precision mediump float; 3106*35238bceSAndroid Build Coastguard Worker struct Struct {mediump vec2 a; mediump vec3 b;}; 3107*35238bceSAndroid Build Coastguard Worker uniform Struct val; 3108*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 3109*35238bceSAndroid Build Coastguard Worker in mediump float res; 3110*35238bceSAndroid Build Coastguard Worker void main() 3111*35238bceSAndroid Build Coastguard Worker { out0 = res + val.b.y; 3112*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 3113*35238bceSAndroid Build Coastguard Worker } 3114*35238bceSAndroid Build Coastguard Worker "" 3115*35238bceSAndroid Build Coastguard Worker end 3116*35238bceSAndroid Build Coastguard Worker 3117*35238bceSAndroid Build Coastguard Worker case partial_vec2_int 3118*35238bceSAndroid Build Coastguard Worker version 300 es 3119*35238bceSAndroid Build Coastguard Worker desc "Uniform struct declared in both, used partially in both. Datatype vec2 and int" 3120*35238bceSAndroid Build Coastguard Worker values { 3121*35238bceSAndroid Build Coastguard Worker uniform vec2 val.a = vec2(1.0, 2.0); 3122*35238bceSAndroid Build Coastguard Worker uniform int val.b = 2; 3123*35238bceSAndroid Build Coastguard Worker output float out0 = 3.0; 3124*35238bceSAndroid Build Coastguard Worker } 3125*35238bceSAndroid Build Coastguard Worker vertex "" 3126*35238bceSAndroid Build Coastguard Worker #version 300 es 3127*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 3128*35238bceSAndroid Build Coastguard Worker struct Struct {mediump vec2 a; mediump int b;}; 3129*35238bceSAndroid Build Coastguard Worker uniform Struct val; 3130*35238bceSAndroid Build Coastguard Worker out mediump float res; 3131*35238bceSAndroid Build Coastguard Worker void main() 3132*35238bceSAndroid Build Coastguard Worker { 3133*35238bceSAndroid Build Coastguard Worker res = val.a.x; 3134*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 3135*35238bceSAndroid Build Coastguard Worker } 3136*35238bceSAndroid Build Coastguard Worker "" 3137*35238bceSAndroid Build Coastguard Worker fragment "" 3138*35238bceSAndroid Build Coastguard Worker #version 300 es 3139*35238bceSAndroid Build Coastguard Worker precision mediump float; 3140*35238bceSAndroid Build Coastguard Worker struct Struct {mediump vec2 a; mediump int b;}; 3141*35238bceSAndroid Build Coastguard Worker uniform Struct val; 3142*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 3143*35238bceSAndroid Build Coastguard Worker in mediump float res; 3144*35238bceSAndroid Build Coastguard Worker void main() 3145*35238bceSAndroid Build Coastguard Worker { out0 = res + float(val.b); 3146*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 3147*35238bceSAndroid Build Coastguard Worker } 3148*35238bceSAndroid Build Coastguard Worker "" 3149*35238bceSAndroid Build Coastguard Worker end 3150*35238bceSAndroid Build Coastguard Worker 3151*35238bceSAndroid Build Coastguard Worker case partial_int_float 3152*35238bceSAndroid Build Coastguard Worker version 300 es 3153*35238bceSAndroid Build Coastguard Worker desc "Uniform struct declared in both, used partially in both. Datatype int and float" 3154*35238bceSAndroid Build Coastguard Worker values { 3155*35238bceSAndroid Build Coastguard Worker uniform float val.a = 1.0; 3156*35238bceSAndroid Build Coastguard Worker uniform int val.b = 2; 3157*35238bceSAndroid Build Coastguard Worker output float out0 = 3.0; 3158*35238bceSAndroid Build Coastguard Worker } 3159*35238bceSAndroid Build Coastguard Worker vertex "" 3160*35238bceSAndroid Build Coastguard Worker #version 300 es 3161*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 3162*35238bceSAndroid Build Coastguard Worker struct Struct {mediump float a; mediump int b;}; 3163*35238bceSAndroid Build Coastguard Worker uniform Struct val; 3164*35238bceSAndroid Build Coastguard Worker out mediump float res; 3165*35238bceSAndroid Build Coastguard Worker void main() 3166*35238bceSAndroid Build Coastguard Worker { 3167*35238bceSAndroid Build Coastguard Worker res = val.a; 3168*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 3169*35238bceSAndroid Build Coastguard Worker } 3170*35238bceSAndroid Build Coastguard Worker "" 3171*35238bceSAndroid Build Coastguard Worker fragment "" 3172*35238bceSAndroid Build Coastguard Worker #version 300 es 3173*35238bceSAndroid Build Coastguard Worker precision mediump float; 3174*35238bceSAndroid Build Coastguard Worker struct Struct {mediump float a; mediump int b;}; 3175*35238bceSAndroid Build Coastguard Worker uniform Struct val; 3176*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 3177*35238bceSAndroid Build Coastguard Worker in mediump float res; 3178*35238bceSAndroid Build Coastguard Worker void main() 3179*35238bceSAndroid Build Coastguard Worker { out0 = res + float(val.b); 3180*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 3181*35238bceSAndroid Build Coastguard Worker } 3182*35238bceSAndroid Build Coastguard Worker "" 3183*35238bceSAndroid Build Coastguard Worker end 3184*35238bceSAndroid Build Coastguard Worker 3185*35238bceSAndroid Build Coastguard Worker case partial_bvec2_vec2 3186*35238bceSAndroid Build Coastguard Worker version 300 es 3187*35238bceSAndroid Build Coastguard Worker desc "Uniform struct declared in both, used partially in both. Datatype bvec2 and vec2" 3188*35238bceSAndroid Build Coastguard Worker values { 3189*35238bceSAndroid Build Coastguard Worker uniform bvec2 val.a = bvec2(true, true); 3190*35238bceSAndroid Build Coastguard Worker uniform vec2 val.b = vec2(1.0, 2.0); 3191*35238bceSAndroid Build Coastguard Worker output float out0 = 3.0; 3192*35238bceSAndroid Build Coastguard Worker } 3193*35238bceSAndroid Build Coastguard Worker vertex "" 3194*35238bceSAndroid Build Coastguard Worker #version 300 es 3195*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 3196*35238bceSAndroid Build Coastguard Worker struct Struct {bvec2 a; mediump vec2 b;}; 3197*35238bceSAndroid Build Coastguard Worker uniform Struct val; 3198*35238bceSAndroid Build Coastguard Worker out mediump float res; 3199*35238bceSAndroid Build Coastguard Worker void main() 3200*35238bceSAndroid Build Coastguard Worker { 3201*35238bceSAndroid Build Coastguard Worker res = float(val.a.x); 3202*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 3203*35238bceSAndroid Build Coastguard Worker } 3204*35238bceSAndroid Build Coastguard Worker "" 3205*35238bceSAndroid Build Coastguard Worker fragment "" 3206*35238bceSAndroid Build Coastguard Worker #version 300 es 3207*35238bceSAndroid Build Coastguard Worker precision mediump float; 3208*35238bceSAndroid Build Coastguard Worker struct Struct {bvec2 a; mediump vec2 b;}; 3209*35238bceSAndroid Build Coastguard Worker uniform Struct val; 3210*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 3211*35238bceSAndroid Build Coastguard Worker in mediump float res; 3212*35238bceSAndroid Build Coastguard Worker void main() 3213*35238bceSAndroid Build Coastguard Worker { out0 = res + val.b.y; 3214*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 3215*35238bceSAndroid Build Coastguard Worker } 3216*35238bceSAndroid Build Coastguard Worker "" 3217*35238bceSAndroid Build Coastguard Worker end 3218*35238bceSAndroid Build Coastguard Worker 3219*35238bceSAndroid Build Coastguard Worker case partial_ivec2_vec2 3220*35238bceSAndroid Build Coastguard Worker version 300 es 3221*35238bceSAndroid Build Coastguard Worker desc "Uniform struct declared in both, used partially in both. Datatype ivec2 and vec2" 3222*35238bceSAndroid Build Coastguard Worker values { 3223*35238bceSAndroid Build Coastguard Worker uniform ivec2 val.a = ivec2(1, 2); 3224*35238bceSAndroid Build Coastguard Worker uniform vec2 val.b = vec2(1.0, 2.0); 3225*35238bceSAndroid Build Coastguard Worker output float out0 = 3.0; 3226*35238bceSAndroid Build Coastguard Worker } 3227*35238bceSAndroid Build Coastguard Worker vertex "" 3228*35238bceSAndroid Build Coastguard Worker #version 300 es 3229*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 3230*35238bceSAndroid Build Coastguard Worker struct Struct {mediump ivec2 a; mediump vec2 b;}; 3231*35238bceSAndroid Build Coastguard Worker uniform Struct val; 3232*35238bceSAndroid Build Coastguard Worker out mediump float res; 3233*35238bceSAndroid Build Coastguard Worker void main() 3234*35238bceSAndroid Build Coastguard Worker { 3235*35238bceSAndroid Build Coastguard Worker res = vec2(val.a).x; 3236*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 3237*35238bceSAndroid Build Coastguard Worker } 3238*35238bceSAndroid Build Coastguard Worker "" 3239*35238bceSAndroid Build Coastguard Worker fragment "" 3240*35238bceSAndroid Build Coastguard Worker #version 300 es 3241*35238bceSAndroid Build Coastguard Worker precision mediump float; 3242*35238bceSAndroid Build Coastguard Worker struct Struct {mediump ivec2 a; mediump vec2 b;}; 3243*35238bceSAndroid Build Coastguard Worker uniform Struct val; 3244*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 3245*35238bceSAndroid Build Coastguard Worker in mediump float res; 3246*35238bceSAndroid Build Coastguard Worker void main() 3247*35238bceSAndroid Build Coastguard Worker { out0 = res + val.b.y; 3248*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 3249*35238bceSAndroid Build Coastguard Worker } 3250*35238bceSAndroid Build Coastguard Worker "" 3251*35238bceSAndroid Build Coastguard Worker end 3252*35238bceSAndroid Build Coastguard Worker 3253*35238bceSAndroid Build Coastguard Worker case partial_ivec2_ivec2 3254*35238bceSAndroid Build Coastguard Worker version 300 es 3255*35238bceSAndroid Build Coastguard Worker desc "Uniform struct declared in both, used partially in both. Datatype ivec2 and ivec2" 3256*35238bceSAndroid Build Coastguard Worker values { 3257*35238bceSAndroid Build Coastguard Worker uniform ivec2 val.a = ivec2(1, 2); 3258*35238bceSAndroid Build Coastguard Worker uniform ivec2 val.b = ivec2(1, 2); 3259*35238bceSAndroid Build Coastguard Worker output float out0 = 3.0; 3260*35238bceSAndroid Build Coastguard Worker } 3261*35238bceSAndroid Build Coastguard Worker vertex "" 3262*35238bceSAndroid Build Coastguard Worker #version 300 es 3263*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 3264*35238bceSAndroid Build Coastguard Worker struct Struct {mediump ivec2 a; mediump ivec2 b;}; 3265*35238bceSAndroid Build Coastguard Worker uniform Struct val; 3266*35238bceSAndroid Build Coastguard Worker out mediump float res; 3267*35238bceSAndroid Build Coastguard Worker void main() 3268*35238bceSAndroid Build Coastguard Worker { 3269*35238bceSAndroid Build Coastguard Worker res = vec2(val.a).x; 3270*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 3271*35238bceSAndroid Build Coastguard Worker } 3272*35238bceSAndroid Build Coastguard Worker "" 3273*35238bceSAndroid Build Coastguard Worker fragment "" 3274*35238bceSAndroid Build Coastguard Worker #version 300 es 3275*35238bceSAndroid Build Coastguard Worker precision mediump float; 3276*35238bceSAndroid Build Coastguard Worker struct Struct {mediump ivec2 a; mediump ivec2 b;}; 3277*35238bceSAndroid Build Coastguard Worker uniform Struct val; 3278*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 3279*35238bceSAndroid Build Coastguard Worker in mediump float res; 3280*35238bceSAndroid Build Coastguard Worker void main() 3281*35238bceSAndroid Build Coastguard Worker { out0 = res + vec2(val.b).y; 3282*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 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 type_conflict_1 3288*35238bceSAndroid Build Coastguard Worker version 300 es 3289*35238bceSAndroid Build Coastguard Worker desc "Fragment struct has one less member than fragment version" 3290*35238bceSAndroid Build Coastguard Worker expect link_fail 3291*35238bceSAndroid Build Coastguard Worker values {output float out0 = 3.0;} 3292*35238bceSAndroid Build Coastguard Worker vertex "" 3293*35238bceSAndroid Build Coastguard Worker #version 300 es 3294*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 3295*35238bceSAndroid Build Coastguard Worker struct Struct {mediump float a; mediump float b;}; 3296*35238bceSAndroid Build Coastguard Worker uniform Struct val; 3297*35238bceSAndroid Build Coastguard Worker out mediump float res; 3298*35238bceSAndroid Build Coastguard Worker void main() 3299*35238bceSAndroid Build Coastguard Worker { 3300*35238bceSAndroid Build Coastguard Worker res = val.a; 3301*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 3302*35238bceSAndroid Build Coastguard Worker } 3303*35238bceSAndroid Build Coastguard Worker "" 3304*35238bceSAndroid Build Coastguard Worker fragment "" 3305*35238bceSAndroid Build Coastguard Worker #version 300 es 3306*35238bceSAndroid Build Coastguard Worker precision mediump float; 3307*35238bceSAndroid Build Coastguard Worker struct Struct {mediump float a;}; 3308*35238bceSAndroid Build Coastguard Worker uniform Struct val; 3309*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 3310*35238bceSAndroid Build Coastguard Worker in mediump float res; 3311*35238bceSAndroid Build Coastguard Worker void main() 3312*35238bceSAndroid Build Coastguard Worker { out0 = res + val.a; 3313*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 3314*35238bceSAndroid Build Coastguard Worker } 3315*35238bceSAndroid Build Coastguard Worker "" 3316*35238bceSAndroid Build Coastguard Worker end 3317*35238bceSAndroid Build Coastguard Worker 3318*35238bceSAndroid Build Coastguard Worker case type_conflict_2 3319*35238bceSAndroid Build Coastguard Worker version 300 es 3320*35238bceSAndroid Build Coastguard Worker desc "Vertex struct has int, fragment struct has float." 3321*35238bceSAndroid Build Coastguard Worker expect link_fail 3322*35238bceSAndroid Build Coastguard Worker values {output float out0 = 3.0;} 3323*35238bceSAndroid Build Coastguard Worker vertex "" 3324*35238bceSAndroid Build Coastguard Worker #version 300 es 3325*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 3326*35238bceSAndroid Build Coastguard Worker struct Struct {mediump int a;}; 3327*35238bceSAndroid Build Coastguard Worker uniform Struct val; 3328*35238bceSAndroid Build Coastguard Worker out mediump float res; 3329*35238bceSAndroid Build Coastguard Worker void main() 3330*35238bceSAndroid Build Coastguard Worker { 3331*35238bceSAndroid Build Coastguard Worker res = float(val.a); 3332*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 3333*35238bceSAndroid Build Coastguard Worker } 3334*35238bceSAndroid Build Coastguard Worker "" 3335*35238bceSAndroid Build Coastguard Worker fragment "" 3336*35238bceSAndroid Build Coastguard Worker #version 300 es 3337*35238bceSAndroid Build Coastguard Worker precision mediump float; 3338*35238bceSAndroid Build Coastguard Worker struct Struct {mediump float a;}; 3339*35238bceSAndroid Build Coastguard Worker uniform Struct val; 3340*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 3341*35238bceSAndroid Build Coastguard Worker in mediump float res; 3342*35238bceSAndroid Build Coastguard Worker void main() 3343*35238bceSAndroid Build Coastguard Worker { out0 = val.a; 3344*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 3345*35238bceSAndroid Build Coastguard Worker } 3346*35238bceSAndroid Build Coastguard Worker "" 3347*35238bceSAndroid Build Coastguard Worker end 3348*35238bceSAndroid Build Coastguard Worker 3349*35238bceSAndroid Build Coastguard Worker case type_conflict_3 3350*35238bceSAndroid Build Coastguard Worker version 300 es 3351*35238bceSAndroid Build Coastguard Worker desc "Vertex struct has vec3, fragment struct has vec4." 3352*35238bceSAndroid Build Coastguard Worker expect link_fail 3353*35238bceSAndroid Build Coastguard Worker values {output float out0 = 3.0;} 3354*35238bceSAndroid Build Coastguard Worker vertex "" 3355*35238bceSAndroid Build Coastguard Worker #version 300 es 3356*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 3357*35238bceSAndroid Build Coastguard Worker struct Struct {mediump vec3 a;}; 3358*35238bceSAndroid Build Coastguard Worker uniform Struct val; 3359*35238bceSAndroid Build Coastguard Worker out mediump float res; 3360*35238bceSAndroid Build Coastguard Worker void main() 3361*35238bceSAndroid Build Coastguard Worker { 3362*35238bceSAndroid Build Coastguard Worker res = float(val.a.x); 3363*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 3364*35238bceSAndroid Build Coastguard Worker } 3365*35238bceSAndroid Build Coastguard Worker "" 3366*35238bceSAndroid Build Coastguard Worker fragment "" 3367*35238bceSAndroid Build Coastguard Worker #version 300 es 3368*35238bceSAndroid Build Coastguard Worker precision mediump float; 3369*35238bceSAndroid Build Coastguard Worker struct Struct {mediump vec4 a;}; 3370*35238bceSAndroid Build Coastguard Worker uniform Struct val; 3371*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 3372*35238bceSAndroid Build Coastguard Worker in mediump float res; 3373*35238bceSAndroid Build Coastguard Worker void main() 3374*35238bceSAndroid Build Coastguard Worker { out0 = val.a.x; 3375*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 3376*35238bceSAndroid Build Coastguard Worker } 3377*35238bceSAndroid Build Coastguard Worker "" 3378*35238bceSAndroid Build Coastguard Worker end 3379*35238bceSAndroid Build Coastguard Worker 3380*35238bceSAndroid Build Coastguard Worker case precision_conflict_1 3381*35238bceSAndroid Build Coastguard Worker version 300 es 3382*35238bceSAndroid Build Coastguard Worker desc "Vertex side struct has highp, fragment side struct mediump." 3383*35238bceSAndroid Build Coastguard Worker expect link_fail 3384*35238bceSAndroid Build Coastguard Worker values {output float out0 = 3.0;} 3385*35238bceSAndroid Build Coastguard Worker vertex "" 3386*35238bceSAndroid Build Coastguard Worker #version 300 es 3387*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 3388*35238bceSAndroid Build Coastguard Worker struct Struct {highp float a;}; 3389*35238bceSAndroid Build Coastguard Worker uniform Struct val; 3390*35238bceSAndroid Build Coastguard Worker out mediump float res; 3391*35238bceSAndroid Build Coastguard Worker void main() 3392*35238bceSAndroid Build Coastguard Worker { 3393*35238bceSAndroid Build Coastguard Worker res = val.a; 3394*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 3395*35238bceSAndroid Build Coastguard Worker } 3396*35238bceSAndroid Build Coastguard Worker "" 3397*35238bceSAndroid Build Coastguard Worker fragment "" 3398*35238bceSAndroid Build Coastguard Worker #version 300 es 3399*35238bceSAndroid Build Coastguard Worker precision mediump float; 3400*35238bceSAndroid Build Coastguard Worker struct Struct {mediump float a;}; 3401*35238bceSAndroid Build Coastguard Worker uniform Struct val; 3402*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 3403*35238bceSAndroid Build Coastguard Worker in mediump float res; 3404*35238bceSAndroid Build Coastguard Worker void main() 3405*35238bceSAndroid Build Coastguard Worker { out0 = val.a; 3406*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 3407*35238bceSAndroid Build Coastguard Worker } 3408*35238bceSAndroid Build Coastguard Worker "" 3409*35238bceSAndroid Build Coastguard Worker end 3410*35238bceSAndroid Build Coastguard Worker 3411*35238bceSAndroid Build Coastguard Worker case precision_conflict_2 3412*35238bceSAndroid Build Coastguard Worker version 300 es 3413*35238bceSAndroid Build Coastguard Worker desc "Vertex side struct has mediump, fragment side struct lowp." 3414*35238bceSAndroid Build Coastguard Worker expect link_fail 3415*35238bceSAndroid Build Coastguard Worker values {output float out0 = 3.0;} 3416*35238bceSAndroid Build Coastguard Worker vertex "" 3417*35238bceSAndroid Build Coastguard Worker #version 300 es 3418*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 3419*35238bceSAndroid Build Coastguard Worker struct Struct {mediump float a;}; 3420*35238bceSAndroid Build Coastguard Worker uniform Struct val; 3421*35238bceSAndroid Build Coastguard Worker out mediump float res; 3422*35238bceSAndroid Build Coastguard Worker void main() 3423*35238bceSAndroid Build Coastguard Worker { 3424*35238bceSAndroid Build Coastguard Worker res = val.a; 3425*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 3426*35238bceSAndroid Build Coastguard Worker } 3427*35238bceSAndroid Build Coastguard Worker "" 3428*35238bceSAndroid Build Coastguard Worker fragment "" 3429*35238bceSAndroid Build Coastguard Worker #version 300 es 3430*35238bceSAndroid Build Coastguard Worker precision mediump float; 3431*35238bceSAndroid Build Coastguard Worker struct Struct {lowp float a;}; 3432*35238bceSAndroid Build Coastguard Worker uniform Struct val; 3433*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 3434*35238bceSAndroid Build Coastguard Worker in mediump float res; 3435*35238bceSAndroid Build Coastguard Worker void main() 3436*35238bceSAndroid Build Coastguard Worker { out0 = val.a; 3437*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 3438*35238bceSAndroid Build Coastguard Worker } 3439*35238bceSAndroid Build Coastguard Worker "" 3440*35238bceSAndroid Build Coastguard Worker end 3441*35238bceSAndroid Build Coastguard Worker 3442*35238bceSAndroid Build Coastguard Worker case precision_conflict_3 3443*35238bceSAndroid Build Coastguard Worker version 300 es 3444*35238bceSAndroid Build Coastguard Worker desc "Vertex side struct has lowp, fragment side struct mediump." 3445*35238bceSAndroid Build Coastguard Worker expect link_fail 3446*35238bceSAndroid Build Coastguard Worker values {output float out0 = 3.0;} 3447*35238bceSAndroid Build Coastguard Worker vertex "" 3448*35238bceSAndroid Build Coastguard Worker #version 300 es 3449*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 3450*35238bceSAndroid Build Coastguard Worker struct Struct {lowp float a;}; 3451*35238bceSAndroid Build Coastguard Worker uniform Struct val; 3452*35238bceSAndroid Build Coastguard Worker out mediump float res; 3453*35238bceSAndroid Build Coastguard Worker void main() 3454*35238bceSAndroid Build Coastguard Worker { 3455*35238bceSAndroid Build Coastguard Worker res = val.a; 3456*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 3457*35238bceSAndroid Build Coastguard Worker } 3458*35238bceSAndroid Build Coastguard Worker "" 3459*35238bceSAndroid Build Coastguard Worker fragment "" 3460*35238bceSAndroid Build Coastguard Worker #version 300 es 3461*35238bceSAndroid Build Coastguard Worker precision mediump float; 3462*35238bceSAndroid Build Coastguard Worker struct Struct {mediump float a;}; 3463*35238bceSAndroid Build Coastguard Worker uniform Struct val; 3464*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 3465*35238bceSAndroid Build Coastguard Worker in mediump float res; 3466*35238bceSAndroid Build Coastguard Worker void main() 3467*35238bceSAndroid Build Coastguard Worker { out0 = val.a; 3468*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 3469*35238bceSAndroid Build Coastguard Worker } 3470*35238bceSAndroid Build Coastguard Worker "" 3471*35238bceSAndroid Build Coastguard Worker end 3472*35238bceSAndroid Build Coastguard Worker 3473*35238bceSAndroid Build Coastguard Worker case precision_conflict_4 3474*35238bceSAndroid Build Coastguard Worker version 300 es 3475*35238bceSAndroid Build Coastguard Worker desc "Vertex side struct has lowp, fragment side struct implicit mediump." 3476*35238bceSAndroid Build Coastguard Worker expect link_fail 3477*35238bceSAndroid Build Coastguard Worker values {output float out0 = 3.0;} 3478*35238bceSAndroid Build Coastguard Worker vertex "" 3479*35238bceSAndroid Build Coastguard Worker #version 300 es 3480*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 3481*35238bceSAndroid Build Coastguard Worker struct Struct {lowp float a;}; 3482*35238bceSAndroid Build Coastguard Worker uniform Struct val; 3483*35238bceSAndroid Build Coastguard Worker out mediump float res; 3484*35238bceSAndroid Build Coastguard Worker void main() 3485*35238bceSAndroid Build Coastguard Worker { 3486*35238bceSAndroid Build Coastguard Worker res = val.a; 3487*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 3488*35238bceSAndroid Build Coastguard Worker } 3489*35238bceSAndroid Build Coastguard Worker "" 3490*35238bceSAndroid Build Coastguard Worker fragment "" 3491*35238bceSAndroid Build Coastguard Worker #version 300 es 3492*35238bceSAndroid Build Coastguard Worker precision mediump float; 3493*35238bceSAndroid Build Coastguard Worker struct Struct {float a;}; 3494*35238bceSAndroid Build Coastguard Worker uniform Struct val; 3495*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 3496*35238bceSAndroid Build Coastguard Worker in mediump float res; 3497*35238bceSAndroid Build Coastguard Worker void main() 3498*35238bceSAndroid Build Coastguard Worker { out0 = val.a; 3499*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 3500*35238bceSAndroid Build Coastguard Worker } 3501*35238bceSAndroid Build Coastguard Worker "" 3502*35238bceSAndroid Build Coastguard Worker end 3503*35238bceSAndroid Build Coastguard Worker 3504*35238bceSAndroid Build Coastguard Worker case light_struct_highp 3505*35238bceSAndroid Build Coastguard Worker version 300 es 3506*35238bceSAndroid Build Coastguard Worker desc "Complex Light struct from use case tests." 3507*35238bceSAndroid Build Coastguard Worker values { 3508*35238bceSAndroid Build Coastguard Worker uniform float val.constantAttenuation = 1.0; 3509*35238bceSAndroid Build Coastguard Worker uniform float val.quadraticAttenuation = 1.0; 3510*35238bceSAndroid Build Coastguard Worker output float out0 = 2.0; 3511*35238bceSAndroid Build Coastguard Worker } 3512*35238bceSAndroid Build Coastguard Worker vertex "" 3513*35238bceSAndroid Build Coastguard Worker #version 300 es 3514*35238bceSAndroid Build Coastguard Worker struct Light 3515*35238bceSAndroid Build Coastguard Worker { 3516*35238bceSAndroid Build Coastguard Worker mediump vec3 color; 3517*35238bceSAndroid Build Coastguard Worker highp vec4 position; 3518*35238bceSAndroid Build Coastguard Worker highp vec3 direction; 3519*35238bceSAndroid Build Coastguard Worker mediump float constantAttenuation; 3520*35238bceSAndroid Build Coastguard Worker mediump float linearAttenuation; 3521*35238bceSAndroid Build Coastguard Worker mediump float quadraticAttenuation; 3522*35238bceSAndroid Build Coastguard Worker }; 3523*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 3524*35238bceSAndroid Build Coastguard Worker uniform Light val; 3525*35238bceSAndroid Build Coastguard Worker out mediump float res; 3526*35238bceSAndroid Build Coastguard Worker void main() 3527*35238bceSAndroid Build Coastguard Worker { 3528*35238bceSAndroid Build Coastguard Worker res = val.constantAttenuation; 3529*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 3530*35238bceSAndroid Build Coastguard Worker } 3531*35238bceSAndroid Build Coastguard Worker "" 3532*35238bceSAndroid Build Coastguard Worker fragment "" 3533*35238bceSAndroid Build Coastguard Worker #version 300 es 3534*35238bceSAndroid Build Coastguard Worker precision mediump float; 3535*35238bceSAndroid Build Coastguard Worker struct Light 3536*35238bceSAndroid Build Coastguard Worker { 3537*35238bceSAndroid Build Coastguard Worker mediump vec3 color; 3538*35238bceSAndroid Build Coastguard Worker highp vec4 position; 3539*35238bceSAndroid Build Coastguard Worker highp vec3 direction; 3540*35238bceSAndroid Build Coastguard Worker mediump float constantAttenuation; 3541*35238bceSAndroid Build Coastguard Worker mediump float linearAttenuation; 3542*35238bceSAndroid Build Coastguard Worker mediump float quadraticAttenuation; 3543*35238bceSAndroid Build Coastguard Worker }; 3544*35238bceSAndroid Build Coastguard Worker struct Struct {float a;}; 3545*35238bceSAndroid Build Coastguard Worker uniform Light val; 3546*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 3547*35238bceSAndroid Build Coastguard Worker in mediump float res; 3548*35238bceSAndroid Build Coastguard Worker void main() 3549*35238bceSAndroid Build Coastguard Worker { 3550*35238bceSAndroid Build Coastguard Worker out0 = res + val.quadraticAttenuation; 3551*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 3552*35238bceSAndroid Build Coastguard Worker } 3553*35238bceSAndroid Build Coastguard Worker "" 3554*35238bceSAndroid Build Coastguard Worker end 3555*35238bceSAndroid Build Coastguard Worker 3556*35238bceSAndroid Build Coastguard Worker case light_struct_mediump 3557*35238bceSAndroid Build Coastguard Worker version 300 es 3558*35238bceSAndroid Build Coastguard Worker desc "Complex Light struct from use case tests, without highp usage" 3559*35238bceSAndroid Build Coastguard Worker values { 3560*35238bceSAndroid Build Coastguard Worker uniform float val.constantAttenuation = 1.0; 3561*35238bceSAndroid Build Coastguard Worker uniform float val.quadraticAttenuation = 1.0; 3562*35238bceSAndroid Build Coastguard Worker output float out0 = 2.0; 3563*35238bceSAndroid Build Coastguard Worker } 3564*35238bceSAndroid Build Coastguard Worker vertex "" 3565*35238bceSAndroid Build Coastguard Worker #version 300 es 3566*35238bceSAndroid Build Coastguard Worker struct Light 3567*35238bceSAndroid Build Coastguard Worker { 3568*35238bceSAndroid Build Coastguard Worker mediump vec3 color; 3569*35238bceSAndroid Build Coastguard Worker mediump vec4 position; 3570*35238bceSAndroid Build Coastguard Worker mediump vec3 direction; 3571*35238bceSAndroid Build Coastguard Worker mediump float constantAttenuation; 3572*35238bceSAndroid Build Coastguard Worker mediump float linearAttenuation; 3573*35238bceSAndroid Build Coastguard Worker mediump float quadraticAttenuation; 3574*35238bceSAndroid Build Coastguard Worker }; 3575*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 3576*35238bceSAndroid Build Coastguard Worker uniform Light val; 3577*35238bceSAndroid Build Coastguard Worker out mediump float res; 3578*35238bceSAndroid Build Coastguard Worker void main() 3579*35238bceSAndroid Build Coastguard Worker { 3580*35238bceSAndroid Build Coastguard Worker res = val.constantAttenuation; 3581*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 3582*35238bceSAndroid Build Coastguard Worker } 3583*35238bceSAndroid Build Coastguard Worker "" 3584*35238bceSAndroid Build Coastguard Worker fragment "" 3585*35238bceSAndroid Build Coastguard Worker #version 300 es 3586*35238bceSAndroid Build Coastguard Worker precision mediump float; 3587*35238bceSAndroid Build Coastguard Worker struct Light 3588*35238bceSAndroid Build Coastguard Worker { 3589*35238bceSAndroid Build Coastguard Worker mediump vec3 color; 3590*35238bceSAndroid Build Coastguard Worker mediump vec4 position; 3591*35238bceSAndroid Build Coastguard Worker mediump vec3 direction; 3592*35238bceSAndroid Build Coastguard Worker mediump float constantAttenuation; 3593*35238bceSAndroid Build Coastguard Worker mediump float linearAttenuation; 3594*35238bceSAndroid Build Coastguard Worker mediump float quadraticAttenuation; 3595*35238bceSAndroid Build Coastguard Worker }; 3596*35238bceSAndroid Build Coastguard Worker struct Struct {float a;}; 3597*35238bceSAndroid Build Coastguard Worker uniform Light val; 3598*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 3599*35238bceSAndroid Build Coastguard Worker in mediump float res; 3600*35238bceSAndroid Build Coastguard Worker void main() 3601*35238bceSAndroid Build Coastguard Worker { 3602*35238bceSAndroid Build Coastguard Worker out0 = res + val.quadraticAttenuation; 3603*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_OUTPUT} 3604*35238bceSAndroid Build Coastguard Worker } 3605*35238bceSAndroid Build Coastguard Worker "" 3606*35238bceSAndroid Build Coastguard Worker end 3607*35238bceSAndroid Build Coastguard Worker end 3608*35238bceSAndroid Build Coastguard Worker 3609*35238bceSAndroid Build Coastguard Worker group block "Uniform blocks" 3610*35238bceSAndroid Build Coastguard Worker case type_mismatch 3611*35238bceSAndroid Build Coastguard Worker version 300 es 3612*35238bceSAndroid Build Coastguard Worker expect link_fail 3613*35238bceSAndroid Build Coastguard Worker vertex "" 3614*35238bceSAndroid Build Coastguard Worker #version 300 es 3615*35238bceSAndroid Build Coastguard Worker 3616*35238bceSAndroid Build Coastguard Worker uniform Block 3617*35238bceSAndroid Build Coastguard Worker { 3618*35238bceSAndroid Build Coastguard Worker highp vec4 val; 3619*35238bceSAndroid Build Coastguard Worker }; 3620*35238bceSAndroid Build Coastguard Worker 3621*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 3622*35238bceSAndroid Build Coastguard Worker out mediump float res; 3623*35238bceSAndroid Build Coastguard Worker void main() 3624*35238bceSAndroid Build Coastguard Worker { 3625*35238bceSAndroid Build Coastguard Worker res = val.x; 3626*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 3627*35238bceSAndroid Build Coastguard Worker } 3628*35238bceSAndroid Build Coastguard Worker "" 3629*35238bceSAndroid Build Coastguard Worker fragment "" 3630*35238bceSAndroid Build Coastguard Worker #version 300 es 3631*35238bceSAndroid Build Coastguard Worker 3632*35238bceSAndroid Build Coastguard Worker uniform Block 3633*35238bceSAndroid Build Coastguard Worker { 3634*35238bceSAndroid Build Coastguard Worker highp vec3 val; 3635*35238bceSAndroid Build Coastguard Worker }; 3636*35238bceSAndroid Build Coastguard Worker 3637*35238bceSAndroid Build Coastguard Worker precision mediump float; 3638*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 3639*35238bceSAndroid Build Coastguard Worker in mediump float res; 3640*35238bceSAndroid Build Coastguard Worker void main() 3641*35238bceSAndroid Build Coastguard Worker { 3642*35238bceSAndroid Build Coastguard Worker dEQP_FragColor = vec4(val, 1.0); 3643*35238bceSAndroid Build Coastguard Worker } 3644*35238bceSAndroid Build Coastguard Worker "" 3645*35238bceSAndroid Build Coastguard Worker end 3646*35238bceSAndroid Build Coastguard Worker 3647*35238bceSAndroid Build Coastguard Worker case members_mismatch 3648*35238bceSAndroid Build Coastguard Worker version 300 es 3649*35238bceSAndroid Build Coastguard Worker expect link_fail 3650*35238bceSAndroid Build Coastguard Worker vertex "" 3651*35238bceSAndroid Build Coastguard Worker #version 300 es 3652*35238bceSAndroid Build Coastguard Worker 3653*35238bceSAndroid Build Coastguard Worker uniform Block 3654*35238bceSAndroid Build Coastguard Worker { 3655*35238bceSAndroid Build Coastguard Worker highp vec4 val; 3656*35238bceSAndroid Build Coastguard Worker }; 3657*35238bceSAndroid Build Coastguard Worker 3658*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 3659*35238bceSAndroid Build Coastguard Worker out mediump float res; 3660*35238bceSAndroid Build Coastguard Worker void main() 3661*35238bceSAndroid Build Coastguard Worker { 3662*35238bceSAndroid Build Coastguard Worker res = val.x; 3663*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 3664*35238bceSAndroid Build Coastguard Worker } 3665*35238bceSAndroid Build Coastguard Worker "" 3666*35238bceSAndroid Build Coastguard Worker fragment "" 3667*35238bceSAndroid Build Coastguard Worker #version 300 es 3668*35238bceSAndroid Build Coastguard Worker 3669*35238bceSAndroid Build Coastguard Worker uniform Block 3670*35238bceSAndroid Build Coastguard Worker { 3671*35238bceSAndroid Build Coastguard Worker highp vec4 val; 3672*35238bceSAndroid Build Coastguard Worker lowp uint u; 3673*35238bceSAndroid Build Coastguard Worker }; 3674*35238bceSAndroid Build Coastguard Worker 3675*35238bceSAndroid Build Coastguard Worker precision mediump float; 3676*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 3677*35238bceSAndroid Build Coastguard Worker in mediump float res; 3678*35238bceSAndroid Build Coastguard Worker void main() 3679*35238bceSAndroid Build Coastguard Worker { 3680*35238bceSAndroid Build Coastguard Worker dEQP_FragColor = vec4(val); 3681*35238bceSAndroid Build Coastguard Worker } 3682*35238bceSAndroid Build Coastguard Worker "" 3683*35238bceSAndroid Build Coastguard Worker end 3684*35238bceSAndroid Build Coastguard Worker 3685*35238bceSAndroid Build Coastguard Worker case layout_qualifier_mismatch_1 3686*35238bceSAndroid Build Coastguard Worker version 300 es 3687*35238bceSAndroid Build Coastguard Worker expect link_fail 3688*35238bceSAndroid Build Coastguard Worker vertex "" 3689*35238bceSAndroid Build Coastguard Worker #version 300 es 3690*35238bceSAndroid Build Coastguard Worker 3691*35238bceSAndroid Build Coastguard Worker layout(std140) uniform Block 3692*35238bceSAndroid Build Coastguard Worker { 3693*35238bceSAndroid Build Coastguard Worker highp vec4 val; 3694*35238bceSAndroid Build Coastguard Worker }; 3695*35238bceSAndroid Build Coastguard Worker 3696*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 3697*35238bceSAndroid Build Coastguard Worker out mediump float res; 3698*35238bceSAndroid Build Coastguard Worker void main() 3699*35238bceSAndroid Build Coastguard Worker { 3700*35238bceSAndroid Build Coastguard Worker res = val.x; 3701*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 3702*35238bceSAndroid Build Coastguard Worker } 3703*35238bceSAndroid Build Coastguard Worker "" 3704*35238bceSAndroid Build Coastguard Worker fragment "" 3705*35238bceSAndroid Build Coastguard Worker #version 300 es 3706*35238bceSAndroid Build Coastguard Worker 3707*35238bceSAndroid Build Coastguard Worker uniform Block 3708*35238bceSAndroid Build Coastguard Worker { 3709*35238bceSAndroid Build Coastguard Worker highp vec4 val; 3710*35238bceSAndroid Build Coastguard Worker }; 3711*35238bceSAndroid Build Coastguard Worker 3712*35238bceSAndroid Build Coastguard Worker precision mediump float; 3713*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 3714*35238bceSAndroid Build Coastguard Worker in mediump float res; 3715*35238bceSAndroid Build Coastguard Worker void main() 3716*35238bceSAndroid Build Coastguard Worker { 3717*35238bceSAndroid Build Coastguard Worker dEQP_FragColor = vec4(val); 3718*35238bceSAndroid Build Coastguard Worker } 3719*35238bceSAndroid Build Coastguard Worker "" 3720*35238bceSAndroid Build Coastguard Worker end 3721*35238bceSAndroid Build Coastguard Worker 3722*35238bceSAndroid Build Coastguard Worker case layout_qualifier_mismatch_2 3723*35238bceSAndroid Build Coastguard Worker version 300 es 3724*35238bceSAndroid Build Coastguard Worker expect link_fail 3725*35238bceSAndroid Build Coastguard Worker vertex "" 3726*35238bceSAndroid Build Coastguard Worker #version 300 es 3727*35238bceSAndroid Build Coastguard Worker 3728*35238bceSAndroid Build Coastguard Worker layout(shared) uniform Block 3729*35238bceSAndroid Build Coastguard Worker { 3730*35238bceSAndroid Build Coastguard Worker highp vec4 val; 3731*35238bceSAndroid Build Coastguard Worker }; 3732*35238bceSAndroid Build Coastguard Worker 3733*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 3734*35238bceSAndroid Build Coastguard Worker out mediump float res; 3735*35238bceSAndroid Build Coastguard Worker void main() 3736*35238bceSAndroid Build Coastguard Worker { 3737*35238bceSAndroid Build Coastguard Worker res = val.x; 3738*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 3739*35238bceSAndroid Build Coastguard Worker } 3740*35238bceSAndroid Build Coastguard Worker "" 3741*35238bceSAndroid Build Coastguard Worker fragment "" 3742*35238bceSAndroid Build Coastguard Worker #version 300 es 3743*35238bceSAndroid Build Coastguard Worker 3744*35238bceSAndroid Build Coastguard Worker layout(packed) uniform Block 3745*35238bceSAndroid Build Coastguard Worker { 3746*35238bceSAndroid Build Coastguard Worker highp vec4 val; 3747*35238bceSAndroid Build Coastguard Worker }; 3748*35238bceSAndroid Build Coastguard Worker 3749*35238bceSAndroid Build Coastguard Worker precision mediump float; 3750*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 3751*35238bceSAndroid Build Coastguard Worker in mediump float res; 3752*35238bceSAndroid Build Coastguard Worker void main() 3753*35238bceSAndroid Build Coastguard Worker { 3754*35238bceSAndroid Build Coastguard Worker dEQP_FragColor = vec4(val); 3755*35238bceSAndroid Build Coastguard Worker } 3756*35238bceSAndroid Build Coastguard Worker "" 3757*35238bceSAndroid Build Coastguard Worker end 3758*35238bceSAndroid Build Coastguard Worker 3759*35238bceSAndroid Build Coastguard Worker case layout_qualifier_mismatch_3 3760*35238bceSAndroid Build Coastguard Worker version 300 es 3761*35238bceSAndroid Build Coastguard Worker expect link_fail 3762*35238bceSAndroid Build Coastguard Worker vertex "" 3763*35238bceSAndroid Build Coastguard Worker #version 300 es 3764*35238bceSAndroid Build Coastguard Worker 3765*35238bceSAndroid Build Coastguard Worker layout(row_major) uniform Block 3766*35238bceSAndroid Build Coastguard Worker { 3767*35238bceSAndroid Build Coastguard Worker highp vec4 val; 3768*35238bceSAndroid Build Coastguard Worker }; 3769*35238bceSAndroid Build Coastguard Worker 3770*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 3771*35238bceSAndroid Build Coastguard Worker out mediump float res; 3772*35238bceSAndroid Build Coastguard Worker void main() 3773*35238bceSAndroid Build Coastguard Worker { 3774*35238bceSAndroid Build Coastguard Worker res = val.x; 3775*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 3776*35238bceSAndroid Build Coastguard Worker } 3777*35238bceSAndroid Build Coastguard Worker "" 3778*35238bceSAndroid Build Coastguard Worker fragment "" 3779*35238bceSAndroid Build Coastguard Worker #version 300 es 3780*35238bceSAndroid Build Coastguard Worker 3781*35238bceSAndroid Build Coastguard Worker layout(column_major) uniform Block 3782*35238bceSAndroid Build Coastguard Worker { 3783*35238bceSAndroid Build Coastguard Worker highp vec4 val; 3784*35238bceSAndroid Build Coastguard Worker }; 3785*35238bceSAndroid Build Coastguard Worker 3786*35238bceSAndroid Build Coastguard Worker precision mediump float; 3787*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 3788*35238bceSAndroid Build Coastguard Worker in mediump float res; 3789*35238bceSAndroid Build Coastguard Worker void main() 3790*35238bceSAndroid Build Coastguard Worker { 3791*35238bceSAndroid Build Coastguard Worker dEQP_FragColor = vec4(val); 3792*35238bceSAndroid Build Coastguard Worker } 3793*35238bceSAndroid Build Coastguard Worker "" 3794*35238bceSAndroid Build Coastguard Worker end 3795*35238bceSAndroid Build Coastguard Worker 3796*35238bceSAndroid Build Coastguard Worker case layout_qualifier_mismatch_4 3797*35238bceSAndroid Build Coastguard Worker version 300 es 3798*35238bceSAndroid Build Coastguard Worker expect link_fail 3799*35238bceSAndroid Build Coastguard Worker vertex "" 3800*35238bceSAndroid Build Coastguard Worker #version 300 es 3801*35238bceSAndroid Build Coastguard Worker 3802*35238bceSAndroid Build Coastguard Worker layout(row_major) uniform Block 3803*35238bceSAndroid Build Coastguard Worker { 3804*35238bceSAndroid Build Coastguard Worker highp mat3 val; 3805*35238bceSAndroid Build Coastguard Worker }; 3806*35238bceSAndroid Build Coastguard Worker 3807*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 3808*35238bceSAndroid Build Coastguard Worker out mediump float res; 3809*35238bceSAndroid Build Coastguard Worker void main() 3810*35238bceSAndroid Build Coastguard Worker { 3811*35238bceSAndroid Build Coastguard Worker res = val[0][1]; 3812*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 3813*35238bceSAndroid Build Coastguard Worker } 3814*35238bceSAndroid Build Coastguard Worker "" 3815*35238bceSAndroid Build Coastguard Worker fragment "" 3816*35238bceSAndroid Build Coastguard Worker #version 300 es 3817*35238bceSAndroid Build Coastguard Worker 3818*35238bceSAndroid Build Coastguard Worker layout(column_major) uniform Block 3819*35238bceSAndroid Build Coastguard Worker { 3820*35238bceSAndroid Build Coastguard Worker highp mat3 val; 3821*35238bceSAndroid Build Coastguard Worker }; 3822*35238bceSAndroid Build Coastguard Worker 3823*35238bceSAndroid Build Coastguard Worker precision mediump float; 3824*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 3825*35238bceSAndroid Build Coastguard Worker in mediump float res; 3826*35238bceSAndroid Build Coastguard Worker void main() 3827*35238bceSAndroid Build Coastguard Worker { 3828*35238bceSAndroid Build Coastguard Worker dEQP_FragColor = vec4(val[2], 1.0); 3829*35238bceSAndroid Build Coastguard Worker } 3830*35238bceSAndroid Build Coastguard Worker "" 3831*35238bceSAndroid Build Coastguard Worker end 3832*35238bceSAndroid Build Coastguard Worker 3833*35238bceSAndroid Build Coastguard Worker case layout_qualifier_mismatch_5 3834*35238bceSAndroid Build Coastguard Worker version 300 es 3835*35238bceSAndroid Build Coastguard Worker expect link_fail 3836*35238bceSAndroid Build Coastguard Worker vertex "" 3837*35238bceSAndroid Build Coastguard Worker #version 300 es 3838*35238bceSAndroid Build Coastguard Worker 3839*35238bceSAndroid Build Coastguard Worker uniform Block 3840*35238bceSAndroid Build Coastguard Worker { 3841*35238bceSAndroid Build Coastguard Worker layout(row_major) uniform highp mat3 val; 3842*35238bceSAndroid Build Coastguard Worker }; 3843*35238bceSAndroid Build Coastguard Worker 3844*35238bceSAndroid Build Coastguard Worker ${VERTEX_DECLARATIONS} 3845*35238bceSAndroid Build Coastguard Worker out mediump float res; 3846*35238bceSAndroid Build Coastguard Worker void main() 3847*35238bceSAndroid Build Coastguard Worker { 3848*35238bceSAndroid Build Coastguard Worker res = val[0][1]; 3849*35238bceSAndroid Build Coastguard Worker ${VERTEX_OUTPUT} 3850*35238bceSAndroid Build Coastguard Worker } 3851*35238bceSAndroid Build Coastguard Worker "" 3852*35238bceSAndroid Build Coastguard Worker fragment "" 3853*35238bceSAndroid Build Coastguard Worker #version 300 es 3854*35238bceSAndroid Build Coastguard Worker 3855*35238bceSAndroid Build Coastguard Worker uniform Block 3856*35238bceSAndroid Build Coastguard Worker { 3857*35238bceSAndroid Build Coastguard Worker layout(column_major) uniform highp mat3 val; 3858*35238bceSAndroid Build Coastguard Worker }; 3859*35238bceSAndroid Build Coastguard Worker 3860*35238bceSAndroid Build Coastguard Worker precision mediump float; 3861*35238bceSAndroid Build Coastguard Worker ${FRAGMENT_DECLARATIONS} 3862*35238bceSAndroid Build Coastguard Worker in mediump float res; 3863*35238bceSAndroid Build Coastguard Worker void main() 3864*35238bceSAndroid Build Coastguard Worker { 3865*35238bceSAndroid Build Coastguard Worker dEQP_FragColor = vec4(val[2], 1.0); 3866*35238bceSAndroid Build Coastguard Worker } 3867*35238bceSAndroid Build Coastguard Worker "" 3868*35238bceSAndroid Build Coastguard Worker end 3869*35238bceSAndroid Build Coastguard Worker end 3870*35238bceSAndroid Build Coastguard Workerend 3871