1e5c31af7Sopenharmony_ci 2e5c31af7Sopenharmony_cigroup varying "Default block varying matching" 3e5c31af7Sopenharmony_ci 4e5c31af7Sopenharmony_ci case missing_input 5e5c31af7Sopenharmony_ci version 310 es 6e5c31af7Sopenharmony_ci desc "Variable has no matching input" 7e5c31af7Sopenharmony_ci expect validation_fail 8e5c31af7Sopenharmony_ci 9e5c31af7Sopenharmony_ci pipeline_program 10e5c31af7Sopenharmony_ci active_stages {vertex} 11e5c31af7Sopenharmony_ci vertex "" 12e5c31af7Sopenharmony_ci #version 310 es 13e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 14e5c31af7Sopenharmony_ci out mediump float v_val; 15e5c31af7Sopenharmony_ci out mediump float v_val_no_such_input; 16e5c31af7Sopenharmony_ci void main() 17e5c31af7Sopenharmony_ci { 18e5c31af7Sopenharmony_ci v_val = float(gl_VertexID); 19e5c31af7Sopenharmony_ci v_val_no_such_input = 1.0; 20e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 21e5c31af7Sopenharmony_ci } 22e5c31af7Sopenharmony_ci "" 23e5c31af7Sopenharmony_ci end 24e5c31af7Sopenharmony_ci pipeline_program 25e5c31af7Sopenharmony_ci active_stages {fragment} 26e5c31af7Sopenharmony_ci fragment "" 27e5c31af7Sopenharmony_ci #version 310 es 28e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 29e5c31af7Sopenharmony_ci in mediump float v_val; 30e5c31af7Sopenharmony_ci void main() 31e5c31af7Sopenharmony_ci { 32e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(v_val); 33e5c31af7Sopenharmony_ci } 34e5c31af7Sopenharmony_ci "" 35e5c31af7Sopenharmony_ci end 36e5c31af7Sopenharmony_ci end 37e5c31af7Sopenharmony_ci 38e5c31af7Sopenharmony_ci case missing_output 39e5c31af7Sopenharmony_ci version 310 es 40e5c31af7Sopenharmony_ci desc "Variable has no matching output" 41e5c31af7Sopenharmony_ci expect validation_fail 42e5c31af7Sopenharmony_ci 43e5c31af7Sopenharmony_ci pipeline_program 44e5c31af7Sopenharmony_ci active_stages {vertex} 45e5c31af7Sopenharmony_ci vertex "" 46e5c31af7Sopenharmony_ci #version 310 es 47e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 48e5c31af7Sopenharmony_ci out mediump float v_val; 49e5c31af7Sopenharmony_ci void main() 50e5c31af7Sopenharmony_ci { 51e5c31af7Sopenharmony_ci v_val = float(gl_VertexID); 52e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 53e5c31af7Sopenharmony_ci } 54e5c31af7Sopenharmony_ci "" 55e5c31af7Sopenharmony_ci end 56e5c31af7Sopenharmony_ci pipeline_program 57e5c31af7Sopenharmony_ci active_stages {fragment} 58e5c31af7Sopenharmony_ci fragment "" 59e5c31af7Sopenharmony_ci #version 310 es 60e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 61e5c31af7Sopenharmony_ci in mediump float v_val; 62e5c31af7Sopenharmony_ci in mediump float v_val_no_such_output; 63e5c31af7Sopenharmony_ci void main() 64e5c31af7Sopenharmony_ci { 65e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(v_val + v_val_no_such_output); 66e5c31af7Sopenharmony_ci } 67e5c31af7Sopenharmony_ci "" 68e5c31af7Sopenharmony_ci end 69e5c31af7Sopenharmony_ci end 70e5c31af7Sopenharmony_ci 71e5c31af7Sopenharmony_ci case mismatch_type 72e5c31af7Sopenharmony_ci version 310 es 73e5c31af7Sopenharmony_ci desc "Variable type mismatch" 74e5c31af7Sopenharmony_ci expect validation_fail 75e5c31af7Sopenharmony_ci 76e5c31af7Sopenharmony_ci pipeline_program 77e5c31af7Sopenharmony_ci active_stages {vertex} 78e5c31af7Sopenharmony_ci vertex "" 79e5c31af7Sopenharmony_ci #version 310 es 80e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 81e5c31af7Sopenharmony_ci out mediump vec3 v_val; 82e5c31af7Sopenharmony_ci void main() 83e5c31af7Sopenharmony_ci { 84e5c31af7Sopenharmony_ci v_val = vec3(float(gl_VertexID)); 85e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 86e5c31af7Sopenharmony_ci } 87e5c31af7Sopenharmony_ci "" 88e5c31af7Sopenharmony_ci end 89e5c31af7Sopenharmony_ci pipeline_program 90e5c31af7Sopenharmony_ci active_stages {fragment} 91e5c31af7Sopenharmony_ci fragment "" 92e5c31af7Sopenharmony_ci #version 310 es 93e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 94e5c31af7Sopenharmony_ci in mediump vec4 v_val; 95e5c31af7Sopenharmony_ci void main() 96e5c31af7Sopenharmony_ci { 97e5c31af7Sopenharmony_ci ${FRAG_COLOR} = v_val; 98e5c31af7Sopenharmony_ci } 99e5c31af7Sopenharmony_ci "" 100e5c31af7Sopenharmony_ci end 101e5c31af7Sopenharmony_ci end 102e5c31af7Sopenharmony_ci 103e5c31af7Sopenharmony_ci case mismatch_precision 104e5c31af7Sopenharmony_ci version 310 es 105e5c31af7Sopenharmony_ci desc "Variable precision mismatch" 106e5c31af7Sopenharmony_ci expect validation_fail 107e5c31af7Sopenharmony_ci 108e5c31af7Sopenharmony_ci pipeline_program 109e5c31af7Sopenharmony_ci active_stages {vertex} 110e5c31af7Sopenharmony_ci vertex "" 111e5c31af7Sopenharmony_ci #version 310 es 112e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 113e5c31af7Sopenharmony_ci out mediump float v_val; 114e5c31af7Sopenharmony_ci void main() 115e5c31af7Sopenharmony_ci { 116e5c31af7Sopenharmony_ci v_val = float(gl_VertexID); 117e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 118e5c31af7Sopenharmony_ci } 119e5c31af7Sopenharmony_ci "" 120e5c31af7Sopenharmony_ci end 121e5c31af7Sopenharmony_ci pipeline_program 122e5c31af7Sopenharmony_ci active_stages {fragment} 123e5c31af7Sopenharmony_ci fragment "" 124e5c31af7Sopenharmony_ci #version 310 es 125e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 126e5c31af7Sopenharmony_ci in highp float v_val; 127e5c31af7Sopenharmony_ci void main() 128e5c31af7Sopenharmony_ci { 129e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(v_val); 130e5c31af7Sopenharmony_ci } 131e5c31af7Sopenharmony_ci "" 132e5c31af7Sopenharmony_ci end 133e5c31af7Sopenharmony_ci end 134e5c31af7Sopenharmony_ci 135e5c31af7Sopenharmony_ci case mismatch_explicit_location_type 136e5c31af7Sopenharmony_ci version 310 es 137e5c31af7Sopenharmony_ci desc "Variable type mismatch, explicit varying locations" 138e5c31af7Sopenharmony_ci expect validation_fail 139e5c31af7Sopenharmony_ci 140e5c31af7Sopenharmony_ci pipeline_program 141e5c31af7Sopenharmony_ci active_stages {vertex} 142e5c31af7Sopenharmony_ci vertex "" 143e5c31af7Sopenharmony_ci #version 310 es 144e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 145e5c31af7Sopenharmony_ci layout(location = 3) out mediump vec4 v_val; 146e5c31af7Sopenharmony_ci void main() 147e5c31af7Sopenharmony_ci { 148e5c31af7Sopenharmony_ci v_val = vec4(float(gl_VertexID)); 149e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 150e5c31af7Sopenharmony_ci } 151e5c31af7Sopenharmony_ci "" 152e5c31af7Sopenharmony_ci end 153e5c31af7Sopenharmony_ci pipeline_program 154e5c31af7Sopenharmony_ci active_stages {fragment} 155e5c31af7Sopenharmony_ci fragment "" 156e5c31af7Sopenharmony_ci #version 310 es 157e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 158e5c31af7Sopenharmony_ci layout(location = 3) in mediump vec2 v_val; 159e5c31af7Sopenharmony_ci void main() 160e5c31af7Sopenharmony_ci { 161e5c31af7Sopenharmony_ci ${FRAG_COLOR} = v_val.xxyy; 162e5c31af7Sopenharmony_ci } 163e5c31af7Sopenharmony_ci "" 164e5c31af7Sopenharmony_ci end 165e5c31af7Sopenharmony_ci end 166e5c31af7Sopenharmony_ci 167e5c31af7Sopenharmony_ci case mismatch_explicit_location_precision 168e5c31af7Sopenharmony_ci version 310 es 169e5c31af7Sopenharmony_ci desc "Variable precision mismatch, explicit varying locations" 170e5c31af7Sopenharmony_ci expect validation_fail 171e5c31af7Sopenharmony_ci 172e5c31af7Sopenharmony_ci pipeline_program 173e5c31af7Sopenharmony_ci active_stages {vertex} 174e5c31af7Sopenharmony_ci vertex "" 175e5c31af7Sopenharmony_ci #version 310 es 176e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 177e5c31af7Sopenharmony_ci layout(location = 3) out mediump float v_val; 178e5c31af7Sopenharmony_ci void main() 179e5c31af7Sopenharmony_ci { 180e5c31af7Sopenharmony_ci v_val = float(gl_VertexID); 181e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 182e5c31af7Sopenharmony_ci } 183e5c31af7Sopenharmony_ci "" 184e5c31af7Sopenharmony_ci end 185e5c31af7Sopenharmony_ci pipeline_program 186e5c31af7Sopenharmony_ci active_stages {fragment} 187e5c31af7Sopenharmony_ci fragment "" 188e5c31af7Sopenharmony_ci #version 310 es 189e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 190e5c31af7Sopenharmony_ci layout(location = 3) in highp float v_val; 191e5c31af7Sopenharmony_ci void main() 192e5c31af7Sopenharmony_ci { 193e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(v_val); 194e5c31af7Sopenharmony_ci } 195e5c31af7Sopenharmony_ci "" 196e5c31af7Sopenharmony_ci end 197e5c31af7Sopenharmony_ci end 198e5c31af7Sopenharmony_ci 199e5c31af7Sopenharmony_ci case mismatch_explicit_location 200e5c31af7Sopenharmony_ci version 310 es 201e5c31af7Sopenharmony_ci desc "Variable location mismatch" 202e5c31af7Sopenharmony_ci expect validation_fail 203e5c31af7Sopenharmony_ci 204e5c31af7Sopenharmony_ci pipeline_program 205e5c31af7Sopenharmony_ci active_stages {vertex} 206e5c31af7Sopenharmony_ci vertex "" 207e5c31af7Sopenharmony_ci #version 310 es 208e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 209e5c31af7Sopenharmony_ci layout(location = 3) out mediump float v_val; 210e5c31af7Sopenharmony_ci void main() 211e5c31af7Sopenharmony_ci { 212e5c31af7Sopenharmony_ci v_val = float(gl_VertexID); 213e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 214e5c31af7Sopenharmony_ci } 215e5c31af7Sopenharmony_ci "" 216e5c31af7Sopenharmony_ci end 217e5c31af7Sopenharmony_ci pipeline_program 218e5c31af7Sopenharmony_ci active_stages {fragment} 219e5c31af7Sopenharmony_ci fragment "" 220e5c31af7Sopenharmony_ci #version 310 es 221e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 222e5c31af7Sopenharmony_ci layout(location = 4) in mediump float v_val; 223e5c31af7Sopenharmony_ci void main() 224e5c31af7Sopenharmony_ci { 225e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(v_val); 226e5c31af7Sopenharmony_ci } 227e5c31af7Sopenharmony_ci "" 228e5c31af7Sopenharmony_ci end 229e5c31af7Sopenharmony_ci end 230e5c31af7Sopenharmony_ci 231e5c31af7Sopenharmony_ci case mismatch_implicit_explicit_location_1 232e5c31af7Sopenharmony_ci version 310 es 233e5c31af7Sopenharmony_ci desc "Variable location mismatch" 234e5c31af7Sopenharmony_ci expect validation_fail 235e5c31af7Sopenharmony_ci 236e5c31af7Sopenharmony_ci pipeline_program 237e5c31af7Sopenharmony_ci active_stages {vertex} 238e5c31af7Sopenharmony_ci vertex "" 239e5c31af7Sopenharmony_ci #version 310 es 240e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 241e5c31af7Sopenharmony_ci out mediump float v_val; 242e5c31af7Sopenharmony_ci void main() 243e5c31af7Sopenharmony_ci { 244e5c31af7Sopenharmony_ci v_val = float(gl_VertexID); 245e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 246e5c31af7Sopenharmony_ci } 247e5c31af7Sopenharmony_ci "" 248e5c31af7Sopenharmony_ci end 249e5c31af7Sopenharmony_ci pipeline_program 250e5c31af7Sopenharmony_ci active_stages {fragment} 251e5c31af7Sopenharmony_ci fragment "" 252e5c31af7Sopenharmony_ci #version 310 es 253e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 254e5c31af7Sopenharmony_ci layout(location = 3) in mediump float v_val; 255e5c31af7Sopenharmony_ci void main() 256e5c31af7Sopenharmony_ci { 257e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(v_val); 258e5c31af7Sopenharmony_ci } 259e5c31af7Sopenharmony_ci "" 260e5c31af7Sopenharmony_ci end 261e5c31af7Sopenharmony_ci end 262e5c31af7Sopenharmony_ci 263e5c31af7Sopenharmony_ci case mismatch_implicit_explicit_location_2 264e5c31af7Sopenharmony_ci version 310 es 265e5c31af7Sopenharmony_ci desc "Variable location mismatch" 266e5c31af7Sopenharmony_ci expect validation_fail 267e5c31af7Sopenharmony_ci 268e5c31af7Sopenharmony_ci pipeline_program 269e5c31af7Sopenharmony_ci active_stages {vertex} 270e5c31af7Sopenharmony_ci vertex "" 271e5c31af7Sopenharmony_ci #version 310 es 272e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 273e5c31af7Sopenharmony_ci layout(location = 3) out mediump float v_val; 274e5c31af7Sopenharmony_ci void main() 275e5c31af7Sopenharmony_ci { 276e5c31af7Sopenharmony_ci v_val = float(gl_VertexID); 277e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 278e5c31af7Sopenharmony_ci } 279e5c31af7Sopenharmony_ci "" 280e5c31af7Sopenharmony_ci end 281e5c31af7Sopenharmony_ci pipeline_program 282e5c31af7Sopenharmony_ci active_stages {fragment} 283e5c31af7Sopenharmony_ci fragment "" 284e5c31af7Sopenharmony_ci #version 310 es 285e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 286e5c31af7Sopenharmony_ci in mediump float v_val; 287e5c31af7Sopenharmony_ci layout(location = 3) in mediump float v_val_other_name; 288e5c31af7Sopenharmony_ci void main() 289e5c31af7Sopenharmony_ci { 290e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(v_val + v_val_other_name); 291e5c31af7Sopenharmony_ci } 292e5c31af7Sopenharmony_ci "" 293e5c31af7Sopenharmony_ci end 294e5c31af7Sopenharmony_ci end 295e5c31af7Sopenharmony_ci 296e5c31af7Sopenharmony_ci case mismatch_implicit_explicit_location_3 297e5c31af7Sopenharmony_ci version 310 es 298e5c31af7Sopenharmony_ci desc "Variable location mismatch" 299e5c31af7Sopenharmony_ci expect validation_fail 300e5c31af7Sopenharmony_ci 301e5c31af7Sopenharmony_ci pipeline_program 302e5c31af7Sopenharmony_ci active_stages {vertex} 303e5c31af7Sopenharmony_ci vertex "" 304e5c31af7Sopenharmony_ci #version 310 es 305e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 306e5c31af7Sopenharmony_ci out mediump float v_val; 307e5c31af7Sopenharmony_ci layout(location = 3) out mediump float v_val_other_name; 308e5c31af7Sopenharmony_ci void main() 309e5c31af7Sopenharmony_ci { 310e5c31af7Sopenharmony_ci v_val = float(gl_VertexID); 311e5c31af7Sopenharmony_ci v_val_other_name = 1.0; 312e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 313e5c31af7Sopenharmony_ci } 314e5c31af7Sopenharmony_ci "" 315e5c31af7Sopenharmony_ci end 316e5c31af7Sopenharmony_ci pipeline_program 317e5c31af7Sopenharmony_ci active_stages {fragment} 318e5c31af7Sopenharmony_ci fragment "" 319e5c31af7Sopenharmony_ci #version 310 es 320e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 321e5c31af7Sopenharmony_ci layout(location = 3) in mediump float v_val; 322e5c31af7Sopenharmony_ci void main() 323e5c31af7Sopenharmony_ci { 324e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(v_val); 325e5c31af7Sopenharmony_ci } 326e5c31af7Sopenharmony_ci "" 327e5c31af7Sopenharmony_ci end 328e5c31af7Sopenharmony_ci end 329e5c31af7Sopenharmony_ci 330e5c31af7Sopenharmony_ci case mismatch_different_struct_names 331e5c31af7Sopenharmony_ci version 310 es 332e5c31af7Sopenharmony_ci desc "Variable struct names different but otherwise identical" 333e5c31af7Sopenharmony_ci expect validation_fail 334e5c31af7Sopenharmony_ci 335e5c31af7Sopenharmony_ci pipeline_program 336e5c31af7Sopenharmony_ci active_stages {vertex} 337e5c31af7Sopenharmony_ci vertex "" 338e5c31af7Sopenharmony_ci #version 310 es 339e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 340e5c31af7Sopenharmony_ci struct StructureNameA 341e5c31af7Sopenharmony_ci { 342e5c31af7Sopenharmony_ci mediump float member; 343e5c31af7Sopenharmony_ci }; 344e5c31af7Sopenharmony_ci out StructureNameA v_val; 345e5c31af7Sopenharmony_ci void main() 346e5c31af7Sopenharmony_ci { 347e5c31af7Sopenharmony_ci v_val.member = float(gl_VertexID); 348e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 349e5c31af7Sopenharmony_ci } 350e5c31af7Sopenharmony_ci "" 351e5c31af7Sopenharmony_ci end 352e5c31af7Sopenharmony_ci pipeline_program 353e5c31af7Sopenharmony_ci active_stages {fragment} 354e5c31af7Sopenharmony_ci fragment "" 355e5c31af7Sopenharmony_ci #version 310 es 356e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 357e5c31af7Sopenharmony_ci struct StructureNameB 358e5c31af7Sopenharmony_ci { 359e5c31af7Sopenharmony_ci mediump float member; 360e5c31af7Sopenharmony_ci }; 361e5c31af7Sopenharmony_ci in StructureNameB v_val; 362e5c31af7Sopenharmony_ci void main() 363e5c31af7Sopenharmony_ci { 364e5c31af7Sopenharmony_ci // should always produce white 365e5c31af7Sopenharmony_ci ${FRAG_COLOR} = (v_val.member > -1.0) ? (vec4(1.0)) : (vec4(0.0)); 366e5c31af7Sopenharmony_ci } 367e5c31af7Sopenharmony_ci "" 368e5c31af7Sopenharmony_ci end 369e5c31af7Sopenharmony_ci end 370e5c31af7Sopenharmony_ci 371e5c31af7Sopenharmony_ci case mismatch_struct_member_name 372e5c31af7Sopenharmony_ci version 310 es 373e5c31af7Sopenharmony_ci desc "Struct member name mismatch" 374e5c31af7Sopenharmony_ci expect validation_fail 375e5c31af7Sopenharmony_ci 376e5c31af7Sopenharmony_ci pipeline_program 377e5c31af7Sopenharmony_ci active_stages {vertex} 378e5c31af7Sopenharmony_ci vertex "" 379e5c31af7Sopenharmony_ci #version 310 es 380e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 381e5c31af7Sopenharmony_ci struct StructureName 382e5c31af7Sopenharmony_ci { 383e5c31af7Sopenharmony_ci mediump float member; 384e5c31af7Sopenharmony_ci }; 385e5c31af7Sopenharmony_ci out StructureName v_val; 386e5c31af7Sopenharmony_ci void main() 387e5c31af7Sopenharmony_ci { 388e5c31af7Sopenharmony_ci v_val.member = float(gl_VertexID); 389e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 390e5c31af7Sopenharmony_ci } 391e5c31af7Sopenharmony_ci "" 392e5c31af7Sopenharmony_ci end 393e5c31af7Sopenharmony_ci pipeline_program 394e5c31af7Sopenharmony_ci active_stages {fragment} 395e5c31af7Sopenharmony_ci fragment "" 396e5c31af7Sopenharmony_ci #version 310 es 397e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 398e5c31af7Sopenharmony_ci struct StructureName 399e5c31af7Sopenharmony_ci { 400e5c31af7Sopenharmony_ci mediump float member_different_name; 401e5c31af7Sopenharmony_ci }; 402e5c31af7Sopenharmony_ci in StructureName v_val; 403e5c31af7Sopenharmony_ci void main() 404e5c31af7Sopenharmony_ci { 405e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(v_val.member_different_name); 406e5c31af7Sopenharmony_ci } 407e5c31af7Sopenharmony_ci "" 408e5c31af7Sopenharmony_ci end 409e5c31af7Sopenharmony_ci end 410e5c31af7Sopenharmony_ci 411e5c31af7Sopenharmony_ci case mismatch_struct_member_type 412e5c31af7Sopenharmony_ci version 310 es 413e5c31af7Sopenharmony_ci desc "Struct member type mismatch" 414e5c31af7Sopenharmony_ci expect validation_fail 415e5c31af7Sopenharmony_ci 416e5c31af7Sopenharmony_ci pipeline_program 417e5c31af7Sopenharmony_ci active_stages {vertex} 418e5c31af7Sopenharmony_ci vertex "" 419e5c31af7Sopenharmony_ci #version 310 es 420e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 421e5c31af7Sopenharmony_ci struct StructureName 422e5c31af7Sopenharmony_ci { 423e5c31af7Sopenharmony_ci mediump float member; 424e5c31af7Sopenharmony_ci }; 425e5c31af7Sopenharmony_ci out StructureName v_val; 426e5c31af7Sopenharmony_ci void main() 427e5c31af7Sopenharmony_ci { 428e5c31af7Sopenharmony_ci v_val.member = float(gl_VertexID); 429e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 430e5c31af7Sopenharmony_ci } 431e5c31af7Sopenharmony_ci "" 432e5c31af7Sopenharmony_ci end 433e5c31af7Sopenharmony_ci pipeline_program 434e5c31af7Sopenharmony_ci active_stages {fragment} 435e5c31af7Sopenharmony_ci fragment "" 436e5c31af7Sopenharmony_ci #version 310 es 437e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 438e5c31af7Sopenharmony_ci struct StructureName 439e5c31af7Sopenharmony_ci { 440e5c31af7Sopenharmony_ci mediump vec2 member; 441e5c31af7Sopenharmony_ci }; 442e5c31af7Sopenharmony_ci in StructureName v_val; 443e5c31af7Sopenharmony_ci void main() 444e5c31af7Sopenharmony_ci { 445e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(v_val.member.x); 446e5c31af7Sopenharmony_ci } 447e5c31af7Sopenharmony_ci "" 448e5c31af7Sopenharmony_ci end 449e5c31af7Sopenharmony_ci end 450e5c31af7Sopenharmony_ci 451e5c31af7Sopenharmony_ci case mismatch_struct_member_precision 452e5c31af7Sopenharmony_ci version 310 es 453e5c31af7Sopenharmony_ci desc "Struct member precision mismatch" 454e5c31af7Sopenharmony_ci expect validation_fail 455e5c31af7Sopenharmony_ci 456e5c31af7Sopenharmony_ci pipeline_program 457e5c31af7Sopenharmony_ci active_stages {vertex} 458e5c31af7Sopenharmony_ci vertex "" 459e5c31af7Sopenharmony_ci #version 310 es 460e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 461e5c31af7Sopenharmony_ci struct StructureName 462e5c31af7Sopenharmony_ci { 463e5c31af7Sopenharmony_ci mediump float member; 464e5c31af7Sopenharmony_ci }; 465e5c31af7Sopenharmony_ci out StructureName v_val; 466e5c31af7Sopenharmony_ci void main() 467e5c31af7Sopenharmony_ci { 468e5c31af7Sopenharmony_ci v_val.member = float(gl_VertexID); 469e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 470e5c31af7Sopenharmony_ci } 471e5c31af7Sopenharmony_ci "" 472e5c31af7Sopenharmony_ci end 473e5c31af7Sopenharmony_ci pipeline_program 474e5c31af7Sopenharmony_ci active_stages {fragment} 475e5c31af7Sopenharmony_ci fragment "" 476e5c31af7Sopenharmony_ci #version 310 es 477e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 478e5c31af7Sopenharmony_ci struct StructureName 479e5c31af7Sopenharmony_ci { 480e5c31af7Sopenharmony_ci highp float member; 481e5c31af7Sopenharmony_ci }; 482e5c31af7Sopenharmony_ci in StructureName v_val; 483e5c31af7Sopenharmony_ci void main() 484e5c31af7Sopenharmony_ci { 485e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(v_val.member); 486e5c31af7Sopenharmony_ci } 487e5c31af7Sopenharmony_ci "" 488e5c31af7Sopenharmony_ci end 489e5c31af7Sopenharmony_ci end 490e5c31af7Sopenharmony_ci 491e5c31af7Sopenharmony_ci case mismatch_struct_member_order 492e5c31af7Sopenharmony_ci version 310 es 493e5c31af7Sopenharmony_ci desc "Struct member order mismatch" 494e5c31af7Sopenharmony_ci expect validation_fail 495e5c31af7Sopenharmony_ci 496e5c31af7Sopenharmony_ci pipeline_program 497e5c31af7Sopenharmony_ci active_stages {vertex} 498e5c31af7Sopenharmony_ci vertex "" 499e5c31af7Sopenharmony_ci #version 310 es 500e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 501e5c31af7Sopenharmony_ci struct StructureName 502e5c31af7Sopenharmony_ci { 503e5c31af7Sopenharmony_ci mediump float memberA; 504e5c31af7Sopenharmony_ci mediump float memberB; 505e5c31af7Sopenharmony_ci }; 506e5c31af7Sopenharmony_ci out StructureName v_val; 507e5c31af7Sopenharmony_ci void main() 508e5c31af7Sopenharmony_ci { 509e5c31af7Sopenharmony_ci v_val.memberA = float(gl_VertexID); 510e5c31af7Sopenharmony_ci v_val.memberB = 1.0; 511e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 512e5c31af7Sopenharmony_ci } 513e5c31af7Sopenharmony_ci "" 514e5c31af7Sopenharmony_ci end 515e5c31af7Sopenharmony_ci pipeline_program 516e5c31af7Sopenharmony_ci active_stages {fragment} 517e5c31af7Sopenharmony_ci fragment "" 518e5c31af7Sopenharmony_ci #version 310 es 519e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 520e5c31af7Sopenharmony_ci struct StructureName 521e5c31af7Sopenharmony_ci { 522e5c31af7Sopenharmony_ci mediump float memberB; 523e5c31af7Sopenharmony_ci mediump float memberA; 524e5c31af7Sopenharmony_ci }; 525e5c31af7Sopenharmony_ci in StructureName v_val; 526e5c31af7Sopenharmony_ci void main() 527e5c31af7Sopenharmony_ci { 528e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(v_val.memberA + v_val.memberB); 529e5c31af7Sopenharmony_ci } 530e5c31af7Sopenharmony_ci "" 531e5c31af7Sopenharmony_ci end 532e5c31af7Sopenharmony_ci end 533e5c31af7Sopenharmony_ci 534e5c31af7Sopenharmony_ci case mismatch_array_element_type 535e5c31af7Sopenharmony_ci version 310 es 536e5c31af7Sopenharmony_ci desc "Array element type mismatch" 537e5c31af7Sopenharmony_ci expect validation_fail 538e5c31af7Sopenharmony_ci 539e5c31af7Sopenharmony_ci pipeline_program 540e5c31af7Sopenharmony_ci active_stages {vertex} 541e5c31af7Sopenharmony_ci vertex "" 542e5c31af7Sopenharmony_ci #version 310 es 543e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 544e5c31af7Sopenharmony_ci out mediump float v_val[2]; 545e5c31af7Sopenharmony_ci void main() 546e5c31af7Sopenharmony_ci { 547e5c31af7Sopenharmony_ci v_val[0] = 1.0; 548e5c31af7Sopenharmony_ci v_val[1] = 2.0; 549e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 550e5c31af7Sopenharmony_ci } 551e5c31af7Sopenharmony_ci "" 552e5c31af7Sopenharmony_ci end 553e5c31af7Sopenharmony_ci pipeline_program 554e5c31af7Sopenharmony_ci active_stages {fragment} 555e5c31af7Sopenharmony_ci fragment "" 556e5c31af7Sopenharmony_ci #version 310 es 557e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 558e5c31af7Sopenharmony_ci in mediump vec2 v_val[2]; 559e5c31af7Sopenharmony_ci void main() 560e5c31af7Sopenharmony_ci { 561e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(v_val[0].x + v_val[1].y); 562e5c31af7Sopenharmony_ci } 563e5c31af7Sopenharmony_ci "" 564e5c31af7Sopenharmony_ci end 565e5c31af7Sopenharmony_ci end 566e5c31af7Sopenharmony_ci 567e5c31af7Sopenharmony_ci case mismatch_array_length 568e5c31af7Sopenharmony_ci version 310 es 569e5c31af7Sopenharmony_ci desc "Array length mismatch" 570e5c31af7Sopenharmony_ci expect validation_fail 571e5c31af7Sopenharmony_ci 572e5c31af7Sopenharmony_ci pipeline_program 573e5c31af7Sopenharmony_ci active_stages {vertex} 574e5c31af7Sopenharmony_ci vertex "" 575e5c31af7Sopenharmony_ci #version 310 es 576e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 577e5c31af7Sopenharmony_ci out mediump float v_val[2]; 578e5c31af7Sopenharmony_ci void main() 579e5c31af7Sopenharmony_ci { 580e5c31af7Sopenharmony_ci v_val[0] = 1.0; 581e5c31af7Sopenharmony_ci v_val[1] = 2.0; 582e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 583e5c31af7Sopenharmony_ci } 584e5c31af7Sopenharmony_ci "" 585e5c31af7Sopenharmony_ci end 586e5c31af7Sopenharmony_ci pipeline_program 587e5c31af7Sopenharmony_ci active_stages {fragment} 588e5c31af7Sopenharmony_ci fragment "" 589e5c31af7Sopenharmony_ci #version 310 es 590e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 591e5c31af7Sopenharmony_ci in mediump float v_val[3]; 592e5c31af7Sopenharmony_ci void main() 593e5c31af7Sopenharmony_ci { 594e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(v_val[0] + v_val[1] + v_val[2]); 595e5c31af7Sopenharmony_ci } 596e5c31af7Sopenharmony_ci "" 597e5c31af7Sopenharmony_ci end 598e5c31af7Sopenharmony_ci end 599e5c31af7Sopenharmony_ci 600e5c31af7Sopenharmony_ci case mismatch_array_precision 601e5c31af7Sopenharmony_ci version 310 es 602e5c31af7Sopenharmony_ci desc "Array length mismatch" 603e5c31af7Sopenharmony_ci expect validation_fail 604e5c31af7Sopenharmony_ci 605e5c31af7Sopenharmony_ci pipeline_program 606e5c31af7Sopenharmony_ci active_stages {vertex} 607e5c31af7Sopenharmony_ci vertex "" 608e5c31af7Sopenharmony_ci #version 310 es 609e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 610e5c31af7Sopenharmony_ci out mediump float v_val[2]; 611e5c31af7Sopenharmony_ci void main() 612e5c31af7Sopenharmony_ci { 613e5c31af7Sopenharmony_ci v_val[0] = 1.0; 614e5c31af7Sopenharmony_ci v_val[1] = 2.0; 615e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 616e5c31af7Sopenharmony_ci } 617e5c31af7Sopenharmony_ci "" 618e5c31af7Sopenharmony_ci end 619e5c31af7Sopenharmony_ci pipeline_program 620e5c31af7Sopenharmony_ci active_stages {fragment} 621e5c31af7Sopenharmony_ci fragment "" 622e5c31af7Sopenharmony_ci #version 310 es 623e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 624e5c31af7Sopenharmony_ci in highp float v_val[2]; 625e5c31af7Sopenharmony_ci void main() 626e5c31af7Sopenharmony_ci { 627e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(v_val[0] + v_val[1]); 628e5c31af7Sopenharmony_ci } 629e5c31af7Sopenharmony_ci "" 630e5c31af7Sopenharmony_ci end 631e5c31af7Sopenharmony_ci end 632e5c31af7Sopenharmony_ci 633e5c31af7Sopenharmony_ci case mismatch_qualifier_vertex_flat_fragment_none 634e5c31af7Sopenharmony_ci version 310 es 635e5c31af7Sopenharmony_ci desc "Interpolation qualifier mismatch" 636e5c31af7Sopenharmony_ci expect validation_fail 637e5c31af7Sopenharmony_ci 638e5c31af7Sopenharmony_ci pipeline_program 639e5c31af7Sopenharmony_ci active_stages {vertex} 640e5c31af7Sopenharmony_ci vertex "" 641e5c31af7Sopenharmony_ci #version 310 es 642e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 643e5c31af7Sopenharmony_ci out flat highp vec4 v_val; 644e5c31af7Sopenharmony_ci void main() 645e5c31af7Sopenharmony_ci { 646e5c31af7Sopenharmony_ci v_val = vec4(float(gl_VertexID)); 647e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 648e5c31af7Sopenharmony_ci } 649e5c31af7Sopenharmony_ci "" 650e5c31af7Sopenharmony_ci end 651e5c31af7Sopenharmony_ci pipeline_program 652e5c31af7Sopenharmony_ci active_stages {fragment} 653e5c31af7Sopenharmony_ci fragment "" 654e5c31af7Sopenharmony_ci #version 310 es 655e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 656e5c31af7Sopenharmony_ci in highp vec4 v_val; 657e5c31af7Sopenharmony_ci void main() 658e5c31af7Sopenharmony_ci { 659e5c31af7Sopenharmony_ci ${FRAG_COLOR} = v_val; 660e5c31af7Sopenharmony_ci } 661e5c31af7Sopenharmony_ci "" 662e5c31af7Sopenharmony_ci end 663e5c31af7Sopenharmony_ci end 664e5c31af7Sopenharmony_ci 665e5c31af7Sopenharmony_ci case mismatch_qualifier_vertex_flat_fragment_smooth 666e5c31af7Sopenharmony_ci version 310 es 667e5c31af7Sopenharmony_ci desc "Interpolation qualifier mismatch" 668e5c31af7Sopenharmony_ci expect validation_fail 669e5c31af7Sopenharmony_ci 670e5c31af7Sopenharmony_ci pipeline_program 671e5c31af7Sopenharmony_ci active_stages {vertex} 672e5c31af7Sopenharmony_ci vertex "" 673e5c31af7Sopenharmony_ci #version 310 es 674e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 675e5c31af7Sopenharmony_ci out flat highp vec4 v_val; 676e5c31af7Sopenharmony_ci void main() 677e5c31af7Sopenharmony_ci { 678e5c31af7Sopenharmony_ci v_val = vec4(float(gl_VertexID)); 679e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 680e5c31af7Sopenharmony_ci } 681e5c31af7Sopenharmony_ci "" 682e5c31af7Sopenharmony_ci end 683e5c31af7Sopenharmony_ci pipeline_program 684e5c31af7Sopenharmony_ci active_stages {fragment} 685e5c31af7Sopenharmony_ci fragment "" 686e5c31af7Sopenharmony_ci #version 310 es 687e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 688e5c31af7Sopenharmony_ci in smooth highp vec4 v_val; 689e5c31af7Sopenharmony_ci void main() 690e5c31af7Sopenharmony_ci { 691e5c31af7Sopenharmony_ci ${FRAG_COLOR} = v_val; 692e5c31af7Sopenharmony_ci } 693e5c31af7Sopenharmony_ci "" 694e5c31af7Sopenharmony_ci end 695e5c31af7Sopenharmony_ci end 696e5c31af7Sopenharmony_ci 697e5c31af7Sopenharmony_ci case mismatch_qualifier_vertex_flat_fragment_centroid 698e5c31af7Sopenharmony_ci version 310 es 699e5c31af7Sopenharmony_ci desc "Interpolation qualifier mismatch" 700e5c31af7Sopenharmony_ci expect validation_fail 701e5c31af7Sopenharmony_ci 702e5c31af7Sopenharmony_ci pipeline_program 703e5c31af7Sopenharmony_ci active_stages {vertex} 704e5c31af7Sopenharmony_ci vertex "" 705e5c31af7Sopenharmony_ci #version 310 es 706e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 707e5c31af7Sopenharmony_ci out flat highp vec4 v_val; 708e5c31af7Sopenharmony_ci void main() 709e5c31af7Sopenharmony_ci { 710e5c31af7Sopenharmony_ci v_val = vec4(float(gl_VertexID)); 711e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 712e5c31af7Sopenharmony_ci } 713e5c31af7Sopenharmony_ci "" 714e5c31af7Sopenharmony_ci end 715e5c31af7Sopenharmony_ci pipeline_program 716e5c31af7Sopenharmony_ci active_stages {fragment} 717e5c31af7Sopenharmony_ci fragment "" 718e5c31af7Sopenharmony_ci #version 310 es 719e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 720e5c31af7Sopenharmony_ci in centroid highp vec4 v_val; 721e5c31af7Sopenharmony_ci void main() 722e5c31af7Sopenharmony_ci { 723e5c31af7Sopenharmony_ci ${FRAG_COLOR} = v_val; 724e5c31af7Sopenharmony_ci } 725e5c31af7Sopenharmony_ci "" 726e5c31af7Sopenharmony_ci end 727e5c31af7Sopenharmony_ci end 728e5c31af7Sopenharmony_ci 729e5c31af7Sopenharmony_ci case mismatch_qualifier_vertex_smooth_fragment_flat 730e5c31af7Sopenharmony_ci version 310 es 731e5c31af7Sopenharmony_ci desc "Interpolation qualifier mismatch" 732e5c31af7Sopenharmony_ci expect validation_fail 733e5c31af7Sopenharmony_ci 734e5c31af7Sopenharmony_ci pipeline_program 735e5c31af7Sopenharmony_ci active_stages {vertex} 736e5c31af7Sopenharmony_ci vertex "" 737e5c31af7Sopenharmony_ci #version 310 es 738e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 739e5c31af7Sopenharmony_ci out smooth highp vec4 v_val; 740e5c31af7Sopenharmony_ci void main() 741e5c31af7Sopenharmony_ci { 742e5c31af7Sopenharmony_ci v_val = vec4(float(gl_VertexID)); 743e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 744e5c31af7Sopenharmony_ci } 745e5c31af7Sopenharmony_ci "" 746e5c31af7Sopenharmony_ci end 747e5c31af7Sopenharmony_ci pipeline_program 748e5c31af7Sopenharmony_ci active_stages {fragment} 749e5c31af7Sopenharmony_ci fragment "" 750e5c31af7Sopenharmony_ci #version 310 es 751e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 752e5c31af7Sopenharmony_ci in flat highp vec4 v_val; 753e5c31af7Sopenharmony_ci void main() 754e5c31af7Sopenharmony_ci { 755e5c31af7Sopenharmony_ci ${FRAG_COLOR} = v_val; 756e5c31af7Sopenharmony_ci } 757e5c31af7Sopenharmony_ci "" 758e5c31af7Sopenharmony_ci end 759e5c31af7Sopenharmony_ci end 760e5c31af7Sopenharmony_ci 761e5c31af7Sopenharmony_ci case mismatch_qualifier_vertex_centroid_fragment_flat 762e5c31af7Sopenharmony_ci version 310 es 763e5c31af7Sopenharmony_ci desc "Interpolation qualifier mismatch" 764e5c31af7Sopenharmony_ci expect validation_fail 765e5c31af7Sopenharmony_ci 766e5c31af7Sopenharmony_ci pipeline_program 767e5c31af7Sopenharmony_ci active_stages {vertex} 768e5c31af7Sopenharmony_ci vertex "" 769e5c31af7Sopenharmony_ci #version 310 es 770e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 771e5c31af7Sopenharmony_ci out centroid highp vec4 v_val; 772e5c31af7Sopenharmony_ci void main() 773e5c31af7Sopenharmony_ci { 774e5c31af7Sopenharmony_ci v_val = vec4(float(gl_VertexID)); 775e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 776e5c31af7Sopenharmony_ci } 777e5c31af7Sopenharmony_ci "" 778e5c31af7Sopenharmony_ci end 779e5c31af7Sopenharmony_ci pipeline_program 780e5c31af7Sopenharmony_ci active_stages {fragment} 781e5c31af7Sopenharmony_ci fragment "" 782e5c31af7Sopenharmony_ci #version 310 es 783e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 784e5c31af7Sopenharmony_ci in flat highp vec4 v_val; 785e5c31af7Sopenharmony_ci void main() 786e5c31af7Sopenharmony_ci { 787e5c31af7Sopenharmony_ci ${FRAG_COLOR} = v_val; 788e5c31af7Sopenharmony_ci } 789e5c31af7Sopenharmony_ci "" 790e5c31af7Sopenharmony_ci end 791e5c31af7Sopenharmony_ci end 792e5c31af7Sopenharmony_ciend 793e5c31af7Sopenharmony_ci 794e5c31af7Sopenharmony_cigroup io_blocks "shader io blocks" 795e5c31af7Sopenharmony_ci 796e5c31af7Sopenharmony_ci case missing_input 797e5c31af7Sopenharmony_ci version 310 es 798e5c31af7Sopenharmony_ci desc "Missing input block" 799e5c31af7Sopenharmony_ci expect validation_fail 800e5c31af7Sopenharmony_ci 801e5c31af7Sopenharmony_ci pipeline_program 802e5c31af7Sopenharmony_ci active_stages {vertex} 803e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex } 804e5c31af7Sopenharmony_ci vertex "" 805e5c31af7Sopenharmony_ci #version 310 es 806e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 807e5c31af7Sopenharmony_ci out IOBlockName 808e5c31af7Sopenharmony_ci { 809e5c31af7Sopenharmony_ci mediump float v_val; 810e5c31af7Sopenharmony_ci }; 811e5c31af7Sopenharmony_ci void main() 812e5c31af7Sopenharmony_ci { 813e5c31af7Sopenharmony_ci v_val = 1.0; 814e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 815e5c31af7Sopenharmony_ci } 816e5c31af7Sopenharmony_ci "" 817e5c31af7Sopenharmony_ci end 818e5c31af7Sopenharmony_ci pipeline_program 819e5c31af7Sopenharmony_ci active_stages {fragment} 820e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { fragment } 821e5c31af7Sopenharmony_ci fragment "" 822e5c31af7Sopenharmony_ci #version 310 es 823e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 824e5c31af7Sopenharmony_ci void main() 825e5c31af7Sopenharmony_ci { 826e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(1.0); 827e5c31af7Sopenharmony_ci } 828e5c31af7Sopenharmony_ci "" 829e5c31af7Sopenharmony_ci end 830e5c31af7Sopenharmony_ci end 831e5c31af7Sopenharmony_ci 832e5c31af7Sopenharmony_ci case missing_output 833e5c31af7Sopenharmony_ci version 310 es 834e5c31af7Sopenharmony_ci desc "Missing output block" 835e5c31af7Sopenharmony_ci expect validation_fail 836e5c31af7Sopenharmony_ci 837e5c31af7Sopenharmony_ci pipeline_program 838e5c31af7Sopenharmony_ci active_stages {vertex} 839e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex } 840e5c31af7Sopenharmony_ci vertex "" 841e5c31af7Sopenharmony_ci #version 310 es 842e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 843e5c31af7Sopenharmony_ci void main() 844e5c31af7Sopenharmony_ci { 845e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 846e5c31af7Sopenharmony_ci } 847e5c31af7Sopenharmony_ci "" 848e5c31af7Sopenharmony_ci end 849e5c31af7Sopenharmony_ci pipeline_program 850e5c31af7Sopenharmony_ci active_stages {fragment} 851e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { fragment } 852e5c31af7Sopenharmony_ci fragment "" 853e5c31af7Sopenharmony_ci #version 310 es 854e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 855e5c31af7Sopenharmony_ci in IOBlockName 856e5c31af7Sopenharmony_ci { 857e5c31af7Sopenharmony_ci mediump float v_val; 858e5c31af7Sopenharmony_ci }; 859e5c31af7Sopenharmony_ci void main() 860e5c31af7Sopenharmony_ci { 861e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(v_val); 862e5c31af7Sopenharmony_ci } 863e5c31af7Sopenharmony_ci "" 864e5c31af7Sopenharmony_ci end 865e5c31af7Sopenharmony_ci end 866e5c31af7Sopenharmony_ci 867e5c31af7Sopenharmony_ci case mismatch_number_of_declarations 868e5c31af7Sopenharmony_ci version 310 es 869e5c31af7Sopenharmony_ci desc "IO-blocks do not match due to mismatch in number of declarations" 870e5c31af7Sopenharmony_ci expect validation_fail 871e5c31af7Sopenharmony_ci 872e5c31af7Sopenharmony_ci pipeline_program 873e5c31af7Sopenharmony_ci active_stages {vertex} 874e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex } 875e5c31af7Sopenharmony_ci vertex "" 876e5c31af7Sopenharmony_ci #version 310 es 877e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 878e5c31af7Sopenharmony_ci out IOBlockName 879e5c31af7Sopenharmony_ci { 880e5c31af7Sopenharmony_ci mediump float v_valA; 881e5c31af7Sopenharmony_ci mediump float v_valB; 882e5c31af7Sopenharmony_ci }; 883e5c31af7Sopenharmony_ci void main() 884e5c31af7Sopenharmony_ci { 885e5c31af7Sopenharmony_ci v_valA = 1.0; 886e5c31af7Sopenharmony_ci v_valB = 2.0; 887e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 888e5c31af7Sopenharmony_ci } 889e5c31af7Sopenharmony_ci "" 890e5c31af7Sopenharmony_ci end 891e5c31af7Sopenharmony_ci pipeline_program 892e5c31af7Sopenharmony_ci active_stages {fragment} 893e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { fragment } 894e5c31af7Sopenharmony_ci fragment "" 895e5c31af7Sopenharmony_ci #version 310 es 896e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 897e5c31af7Sopenharmony_ci in IOBlockName 898e5c31af7Sopenharmony_ci { 899e5c31af7Sopenharmony_ci mediump float v_valA; 900e5c31af7Sopenharmony_ci }; 901e5c31af7Sopenharmony_ci void main() 902e5c31af7Sopenharmony_ci { 903e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(v_valA); 904e5c31af7Sopenharmony_ci } 905e5c31af7Sopenharmony_ci "" 906e5c31af7Sopenharmony_ci end 907e5c31af7Sopenharmony_ci end 908e5c31af7Sopenharmony_ci 909e5c31af7Sopenharmony_ci case mismatch_member_order 910e5c31af7Sopenharmony_ci version 310 es 911e5c31af7Sopenharmony_ci desc "IO-blocks do not match due to mismatch with member declaration order" 912e5c31af7Sopenharmony_ci expect validation_fail 913e5c31af7Sopenharmony_ci 914e5c31af7Sopenharmony_ci pipeline_program 915e5c31af7Sopenharmony_ci active_stages {vertex} 916e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex } 917e5c31af7Sopenharmony_ci vertex "" 918e5c31af7Sopenharmony_ci #version 310 es 919e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 920e5c31af7Sopenharmony_ci out IOBlockName 921e5c31af7Sopenharmony_ci { 922e5c31af7Sopenharmony_ci mediump float v_valA; 923e5c31af7Sopenharmony_ci mediump float v_valB; 924e5c31af7Sopenharmony_ci }; 925e5c31af7Sopenharmony_ci void main() 926e5c31af7Sopenharmony_ci { 927e5c31af7Sopenharmony_ci v_valA = 1.0; 928e5c31af7Sopenharmony_ci v_valB = 2.0; 929e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 930e5c31af7Sopenharmony_ci } 931e5c31af7Sopenharmony_ci "" 932e5c31af7Sopenharmony_ci end 933e5c31af7Sopenharmony_ci pipeline_program 934e5c31af7Sopenharmony_ci active_stages {fragment} 935e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { fragment } 936e5c31af7Sopenharmony_ci fragment "" 937e5c31af7Sopenharmony_ci #version 310 es 938e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 939e5c31af7Sopenharmony_ci in IOBlockName 940e5c31af7Sopenharmony_ci { 941e5c31af7Sopenharmony_ci mediump float v_valB; 942e5c31af7Sopenharmony_ci mediump float v_valA; 943e5c31af7Sopenharmony_ci }; 944e5c31af7Sopenharmony_ci void main() 945e5c31af7Sopenharmony_ci { 946e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(v_valA+v_valB); 947e5c31af7Sopenharmony_ci } 948e5c31af7Sopenharmony_ci "" 949e5c31af7Sopenharmony_ci end 950e5c31af7Sopenharmony_ci end 951e5c31af7Sopenharmony_ci 952e5c31af7Sopenharmony_ci case mismatch_member_type 953e5c31af7Sopenharmony_ci version 310 es 954e5c31af7Sopenharmony_ci desc "IO-blocks do not match due to mismatch with member types" 955e5c31af7Sopenharmony_ci expect validation_fail 956e5c31af7Sopenharmony_ci 957e5c31af7Sopenharmony_ci pipeline_program 958e5c31af7Sopenharmony_ci active_stages {vertex} 959e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex } 960e5c31af7Sopenharmony_ci vertex "" 961e5c31af7Sopenharmony_ci #version 310 es 962e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 963e5c31af7Sopenharmony_ci out IOBlockName 964e5c31af7Sopenharmony_ci { 965e5c31af7Sopenharmony_ci mediump float v_valA; 966e5c31af7Sopenharmony_ci }; 967e5c31af7Sopenharmony_ci void main() 968e5c31af7Sopenharmony_ci { 969e5c31af7Sopenharmony_ci v_valA = 1.0; 970e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 971e5c31af7Sopenharmony_ci } 972e5c31af7Sopenharmony_ci "" 973e5c31af7Sopenharmony_ci end 974e5c31af7Sopenharmony_ci pipeline_program 975e5c31af7Sopenharmony_ci active_stages {fragment} 976e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { fragment } 977e5c31af7Sopenharmony_ci fragment "" 978e5c31af7Sopenharmony_ci #version 310 es 979e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 980e5c31af7Sopenharmony_ci in IOBlockName 981e5c31af7Sopenharmony_ci { 982e5c31af7Sopenharmony_ci mediump vec2 v_valA; 983e5c31af7Sopenharmony_ci }; 984e5c31af7Sopenharmony_ci void main() 985e5c31af7Sopenharmony_ci { 986e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(v_valA.xyxy); 987e5c31af7Sopenharmony_ci } 988e5c31af7Sopenharmony_ci "" 989e5c31af7Sopenharmony_ci end 990e5c31af7Sopenharmony_ci end 991e5c31af7Sopenharmony_ci 992e5c31af7Sopenharmony_ci case mismatch_member_name 993e5c31af7Sopenharmony_ci version 310 es 994e5c31af7Sopenharmony_ci desc "IO-blocks do not match due to mismatch with member names" 995e5c31af7Sopenharmony_ci expect validation_fail 996e5c31af7Sopenharmony_ci 997e5c31af7Sopenharmony_ci pipeline_program 998e5c31af7Sopenharmony_ci active_stages {vertex} 999e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex } 1000e5c31af7Sopenharmony_ci vertex "" 1001e5c31af7Sopenharmony_ci #version 310 es 1002e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1003e5c31af7Sopenharmony_ci out IOBlockName 1004e5c31af7Sopenharmony_ci { 1005e5c31af7Sopenharmony_ci mediump float v_valA; 1006e5c31af7Sopenharmony_ci }; 1007e5c31af7Sopenharmony_ci void main() 1008e5c31af7Sopenharmony_ci { 1009e5c31af7Sopenharmony_ci v_valA = 1.0; 1010e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1011e5c31af7Sopenharmony_ci } 1012e5c31af7Sopenharmony_ci "" 1013e5c31af7Sopenharmony_ci end 1014e5c31af7Sopenharmony_ci pipeline_program 1015e5c31af7Sopenharmony_ci active_stages {fragment} 1016e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { fragment } 1017e5c31af7Sopenharmony_ci fragment "" 1018e5c31af7Sopenharmony_ci #version 310 es 1019e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1020e5c31af7Sopenharmony_ci in IOBlockName 1021e5c31af7Sopenharmony_ci { 1022e5c31af7Sopenharmony_ci mediump vec2 v_valB; 1023e5c31af7Sopenharmony_ci }; 1024e5c31af7Sopenharmony_ci void main() 1025e5c31af7Sopenharmony_ci { 1026e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(v_valB.y); 1027e5c31af7Sopenharmony_ci } 1028e5c31af7Sopenharmony_ci "" 1029e5c31af7Sopenharmony_ci end 1030e5c31af7Sopenharmony_ci end 1031e5c31af7Sopenharmony_ci 1032e5c31af7Sopenharmony_ci case mismatch_member_precision 1033e5c31af7Sopenharmony_ci version 310 es 1034e5c31af7Sopenharmony_ci desc "IO-blocks do not match due to mismatch with member precisions" 1035e5c31af7Sopenharmony_ci expect validation_fail 1036e5c31af7Sopenharmony_ci 1037e5c31af7Sopenharmony_ci pipeline_program 1038e5c31af7Sopenharmony_ci active_stages {vertex} 1039e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex } 1040e5c31af7Sopenharmony_ci vertex "" 1041e5c31af7Sopenharmony_ci #version 310 es 1042e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1043e5c31af7Sopenharmony_ci out IOBlockName 1044e5c31af7Sopenharmony_ci { 1045e5c31af7Sopenharmony_ci mediump float v_valA; 1046e5c31af7Sopenharmony_ci }; 1047e5c31af7Sopenharmony_ci void main() 1048e5c31af7Sopenharmony_ci { 1049e5c31af7Sopenharmony_ci v_valA = 1.0; 1050e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1051e5c31af7Sopenharmony_ci } 1052e5c31af7Sopenharmony_ci "" 1053e5c31af7Sopenharmony_ci end 1054e5c31af7Sopenharmony_ci pipeline_program 1055e5c31af7Sopenharmony_ci active_stages {fragment} 1056e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { fragment } 1057e5c31af7Sopenharmony_ci fragment "" 1058e5c31af7Sopenharmony_ci #version 310 es 1059e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1060e5c31af7Sopenharmony_ci in IOBlockName 1061e5c31af7Sopenharmony_ci { 1062e5c31af7Sopenharmony_ci highp float v_valA; 1063e5c31af7Sopenharmony_ci }; 1064e5c31af7Sopenharmony_ci void main() 1065e5c31af7Sopenharmony_ci { 1066e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(v_valA); 1067e5c31af7Sopenharmony_ci } 1068e5c31af7Sopenharmony_ci "" 1069e5c31af7Sopenharmony_ci end 1070e5c31af7Sopenharmony_ci end 1071e5c31af7Sopenharmony_ci 1072e5c31af7Sopenharmony_ci case mismatch_different_member_interpolation 1073e5c31af7Sopenharmony_ci version 310 es 1074e5c31af7Sopenharmony_ci desc "IO-block members do not match due to different interpolation qualifiers" 1075e5c31af7Sopenharmony_ci expect validation_fail 1076e5c31af7Sopenharmony_ci 1077e5c31af7Sopenharmony_ci pipeline_program 1078e5c31af7Sopenharmony_ci active_stages {vertex} 1079e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex } 1080e5c31af7Sopenharmony_ci vertex "" 1081e5c31af7Sopenharmony_ci #version 310 es 1082e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1083e5c31af7Sopenharmony_ci out IOBlockName 1084e5c31af7Sopenharmony_ci { 1085e5c31af7Sopenharmony_ci smooth out mediump float v_val; 1086e5c31af7Sopenharmony_ci }; 1087e5c31af7Sopenharmony_ci void main() 1088e5c31af7Sopenharmony_ci { 1089e5c31af7Sopenharmony_ci v_val = 1.0; 1090e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1091e5c31af7Sopenharmony_ci } 1092e5c31af7Sopenharmony_ci "" 1093e5c31af7Sopenharmony_ci end 1094e5c31af7Sopenharmony_ci pipeline_program 1095e5c31af7Sopenharmony_ci active_stages {fragment} 1096e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { fragment } 1097e5c31af7Sopenharmony_ci fragment "" 1098e5c31af7Sopenharmony_ci #version 310 es 1099e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1100e5c31af7Sopenharmony_ci in IOBlockName 1101e5c31af7Sopenharmony_ci { 1102e5c31af7Sopenharmony_ci flat in mediump float v_val; 1103e5c31af7Sopenharmony_ci }; 1104e5c31af7Sopenharmony_ci void main() 1105e5c31af7Sopenharmony_ci { 1106e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(v_val); 1107e5c31af7Sopenharmony_ci } 1108e5c31af7Sopenharmony_ci "" 1109e5c31af7Sopenharmony_ci end 1110e5c31af7Sopenharmony_ci end 1111e5c31af7Sopenharmony_ci 1112e5c31af7Sopenharmony_ci case mismatch_member_array_size 1113e5c31af7Sopenharmony_ci version 310 es 1114e5c31af7Sopenharmony_ci desc "IO-blocks do not match due to mismatch with member array size" 1115e5c31af7Sopenharmony_ci expect validation_fail 1116e5c31af7Sopenharmony_ci 1117e5c31af7Sopenharmony_ci pipeline_program 1118e5c31af7Sopenharmony_ci active_stages {vertex} 1119e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex } 1120e5c31af7Sopenharmony_ci vertex "" 1121e5c31af7Sopenharmony_ci #version 310 es 1122e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1123e5c31af7Sopenharmony_ci out IOBlockName 1124e5c31af7Sopenharmony_ci { 1125e5c31af7Sopenharmony_ci mediump float v_val_arr[2]; 1126e5c31af7Sopenharmony_ci }; 1127e5c31af7Sopenharmony_ci void main() 1128e5c31af7Sopenharmony_ci { 1129e5c31af7Sopenharmony_ci v_val_arr[0] = 1.0; 1130e5c31af7Sopenharmony_ci v_val_arr[1] = 2.0; 1131e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1132e5c31af7Sopenharmony_ci } 1133e5c31af7Sopenharmony_ci "" 1134e5c31af7Sopenharmony_ci end 1135e5c31af7Sopenharmony_ci pipeline_program 1136e5c31af7Sopenharmony_ci active_stages {fragment} 1137e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { fragment } 1138e5c31af7Sopenharmony_ci fragment "" 1139e5c31af7Sopenharmony_ci #version 310 es 1140e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1141e5c31af7Sopenharmony_ci in IOBlockName 1142e5c31af7Sopenharmony_ci { 1143e5c31af7Sopenharmony_ci mediump float v_val_arr[1]; 1144e5c31af7Sopenharmony_ci }; 1145e5c31af7Sopenharmony_ci void main() 1146e5c31af7Sopenharmony_ci { 1147e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(v_val_arr[0]); 1148e5c31af7Sopenharmony_ci } 1149e5c31af7Sopenharmony_ci "" 1150e5c31af7Sopenharmony_ci end 1151e5c31af7Sopenharmony_ci end 1152e5c31af7Sopenharmony_ci 1153e5c31af7Sopenharmony_ci case mismatch_different_member_struct_names 1154e5c31af7Sopenharmony_ci version 310 es 1155e5c31af7Sopenharmony_ci desc "IO-blocks match with structs with different names" 1156e5c31af7Sopenharmony_ci expect validation_fail 1157e5c31af7Sopenharmony_ci 1158e5c31af7Sopenharmony_ci pipeline_program 1159e5c31af7Sopenharmony_ci active_stages {vertex} 1160e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex } 1161e5c31af7Sopenharmony_ci vertex "" 1162e5c31af7Sopenharmony_ci #version 310 es 1163e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1164e5c31af7Sopenharmony_ci struct StructNameA 1165e5c31af7Sopenharmony_ci { 1166e5c31af7Sopenharmony_ci mediump float v; 1167e5c31af7Sopenharmony_ci }; 1168e5c31af7Sopenharmony_ci out IOBlockName 1169e5c31af7Sopenharmony_ci { 1170e5c31af7Sopenharmony_ci StructNameA v_val; 1171e5c31af7Sopenharmony_ci }; 1172e5c31af7Sopenharmony_ci 1173e5c31af7Sopenharmony_ci void main() 1174e5c31af7Sopenharmony_ci { 1175e5c31af7Sopenharmony_ci v_val.v = 1.0; 1176e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1177e5c31af7Sopenharmony_ci } 1178e5c31af7Sopenharmony_ci "" 1179e5c31af7Sopenharmony_ci end 1180e5c31af7Sopenharmony_ci pipeline_program 1181e5c31af7Sopenharmony_ci active_stages {fragment} 1182e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { fragment } 1183e5c31af7Sopenharmony_ci fragment "" 1184e5c31af7Sopenharmony_ci #version 310 es 1185e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1186e5c31af7Sopenharmony_ci struct StructNameB 1187e5c31af7Sopenharmony_ci { 1188e5c31af7Sopenharmony_ci mediump float v; 1189e5c31af7Sopenharmony_ci }; 1190e5c31af7Sopenharmony_ci in IOBlockName 1191e5c31af7Sopenharmony_ci { 1192e5c31af7Sopenharmony_ci StructNameB v_val; 1193e5c31af7Sopenharmony_ci }; 1194e5c31af7Sopenharmony_ci void main() 1195e5c31af7Sopenharmony_ci { 1196e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(v_val.v); 1197e5c31af7Sopenharmony_ci } 1198e5c31af7Sopenharmony_ci "" 1199e5c31af7Sopenharmony_ci end 1200e5c31af7Sopenharmony_ci end 1201e5c31af7Sopenharmony_ci 1202e5c31af7Sopenharmony_ci case mismatch_member_struct_member_name 1203e5c31af7Sopenharmony_ci version 310 es 1204e5c31af7Sopenharmony_ci desc "IO-blocks do not match due to mismatch with member structs" 1205e5c31af7Sopenharmony_ci expect validation_fail 1206e5c31af7Sopenharmony_ci 1207e5c31af7Sopenharmony_ci pipeline_program 1208e5c31af7Sopenharmony_ci active_stages {vertex} 1209e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex } 1210e5c31af7Sopenharmony_ci vertex "" 1211e5c31af7Sopenharmony_ci #version 310 es 1212e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1213e5c31af7Sopenharmony_ci struct StructName 1214e5c31af7Sopenharmony_ci { 1215e5c31af7Sopenharmony_ci mediump float v; 1216e5c31af7Sopenharmony_ci }; 1217e5c31af7Sopenharmony_ci out IOBlockName 1218e5c31af7Sopenharmony_ci { 1219e5c31af7Sopenharmony_ci StructName v_val; 1220e5c31af7Sopenharmony_ci }; 1221e5c31af7Sopenharmony_ci 1222e5c31af7Sopenharmony_ci void main() 1223e5c31af7Sopenharmony_ci { 1224e5c31af7Sopenharmony_ci v_val.v = 1.0; 1225e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1226e5c31af7Sopenharmony_ci } 1227e5c31af7Sopenharmony_ci "" 1228e5c31af7Sopenharmony_ci end 1229e5c31af7Sopenharmony_ci pipeline_program 1230e5c31af7Sopenharmony_ci active_stages {fragment} 1231e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { fragment } 1232e5c31af7Sopenharmony_ci fragment "" 1233e5c31af7Sopenharmony_ci #version 310 es 1234e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1235e5c31af7Sopenharmony_ci struct StructName 1236e5c31af7Sopenharmony_ci { 1237e5c31af7Sopenharmony_ci mediump float v_alt_name; 1238e5c31af7Sopenharmony_ci }; 1239e5c31af7Sopenharmony_ci in IOBlockName 1240e5c31af7Sopenharmony_ci { 1241e5c31af7Sopenharmony_ci StructName v_val; 1242e5c31af7Sopenharmony_ci }; 1243e5c31af7Sopenharmony_ci void main() 1244e5c31af7Sopenharmony_ci { 1245e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(v_val.v_alt_name); 1246e5c31af7Sopenharmony_ci } 1247e5c31af7Sopenharmony_ci "" 1248e5c31af7Sopenharmony_ci end 1249e5c31af7Sopenharmony_ci end 1250e5c31af7Sopenharmony_ci 1251e5c31af7Sopenharmony_ci case mismatch_member_struct_member_type 1252e5c31af7Sopenharmony_ci version 310 es 1253e5c31af7Sopenharmony_ci desc "IO-blocks do not match due to mismatch with member structs" 1254e5c31af7Sopenharmony_ci expect validation_fail 1255e5c31af7Sopenharmony_ci 1256e5c31af7Sopenharmony_ci pipeline_program 1257e5c31af7Sopenharmony_ci active_stages {vertex} 1258e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex } 1259e5c31af7Sopenharmony_ci vertex "" 1260e5c31af7Sopenharmony_ci #version 310 es 1261e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1262e5c31af7Sopenharmony_ci struct StructName 1263e5c31af7Sopenharmony_ci { 1264e5c31af7Sopenharmony_ci mediump float v; 1265e5c31af7Sopenharmony_ci }; 1266e5c31af7Sopenharmony_ci out IOBlockName 1267e5c31af7Sopenharmony_ci { 1268e5c31af7Sopenharmony_ci StructName v_val; 1269e5c31af7Sopenharmony_ci }; 1270e5c31af7Sopenharmony_ci 1271e5c31af7Sopenharmony_ci void main() 1272e5c31af7Sopenharmony_ci { 1273e5c31af7Sopenharmony_ci v_val.v = 1.0; 1274e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1275e5c31af7Sopenharmony_ci } 1276e5c31af7Sopenharmony_ci "" 1277e5c31af7Sopenharmony_ci end 1278e5c31af7Sopenharmony_ci pipeline_program 1279e5c31af7Sopenharmony_ci active_stages {fragment} 1280e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { fragment } 1281e5c31af7Sopenharmony_ci fragment "" 1282e5c31af7Sopenharmony_ci #version 310 es 1283e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1284e5c31af7Sopenharmony_ci struct StructName 1285e5c31af7Sopenharmony_ci { 1286e5c31af7Sopenharmony_ci mediump vec2 v; 1287e5c31af7Sopenharmony_ci }; 1288e5c31af7Sopenharmony_ci in IOBlockName 1289e5c31af7Sopenharmony_ci { 1290e5c31af7Sopenharmony_ci StructName v_val; 1291e5c31af7Sopenharmony_ci }; 1292e5c31af7Sopenharmony_ci void main() 1293e5c31af7Sopenharmony_ci { 1294e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(v_val.v.x); 1295e5c31af7Sopenharmony_ci } 1296e5c31af7Sopenharmony_ci "" 1297e5c31af7Sopenharmony_ci end 1298e5c31af7Sopenharmony_ci end 1299e5c31af7Sopenharmony_ci 1300e5c31af7Sopenharmony_ci case mismatch_member_struct_member_precision 1301e5c31af7Sopenharmony_ci version 310 es 1302e5c31af7Sopenharmony_ci desc "IO-blocks do not match due to mismatch with member structs" 1303e5c31af7Sopenharmony_ci expect validation_fail 1304e5c31af7Sopenharmony_ci 1305e5c31af7Sopenharmony_ci pipeline_program 1306e5c31af7Sopenharmony_ci active_stages {vertex} 1307e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex } 1308e5c31af7Sopenharmony_ci vertex "" 1309e5c31af7Sopenharmony_ci #version 310 es 1310e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1311e5c31af7Sopenharmony_ci struct StructName 1312e5c31af7Sopenharmony_ci { 1313e5c31af7Sopenharmony_ci mediump float v; 1314e5c31af7Sopenharmony_ci }; 1315e5c31af7Sopenharmony_ci out IOBlockName 1316e5c31af7Sopenharmony_ci { 1317e5c31af7Sopenharmony_ci StructName v_val; 1318e5c31af7Sopenharmony_ci }; 1319e5c31af7Sopenharmony_ci 1320e5c31af7Sopenharmony_ci void main() 1321e5c31af7Sopenharmony_ci { 1322e5c31af7Sopenharmony_ci v_val.v = 1.0; 1323e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1324e5c31af7Sopenharmony_ci } 1325e5c31af7Sopenharmony_ci "" 1326e5c31af7Sopenharmony_ci end 1327e5c31af7Sopenharmony_ci pipeline_program 1328e5c31af7Sopenharmony_ci active_stages {fragment} 1329e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { fragment } 1330e5c31af7Sopenharmony_ci fragment "" 1331e5c31af7Sopenharmony_ci #version 310 es 1332e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1333e5c31af7Sopenharmony_ci struct StructName 1334e5c31af7Sopenharmony_ci { 1335e5c31af7Sopenharmony_ci highp float v; 1336e5c31af7Sopenharmony_ci }; 1337e5c31af7Sopenharmony_ci in IOBlockName 1338e5c31af7Sopenharmony_ci { 1339e5c31af7Sopenharmony_ci StructName v_val; 1340e5c31af7Sopenharmony_ci }; 1341e5c31af7Sopenharmony_ci void main() 1342e5c31af7Sopenharmony_ci { 1343e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(v_val.v); 1344e5c31af7Sopenharmony_ci } 1345e5c31af7Sopenharmony_ci "" 1346e5c31af7Sopenharmony_ci end 1347e5c31af7Sopenharmony_ci end 1348e5c31af7Sopenharmony_ci 1349e5c31af7Sopenharmony_ci case mismatch_member_struct_member_order 1350e5c31af7Sopenharmony_ci version 310 es 1351e5c31af7Sopenharmony_ci desc "IO-blocks do not match due to mismatch with member structs" 1352e5c31af7Sopenharmony_ci expect validation_fail 1353e5c31af7Sopenharmony_ci 1354e5c31af7Sopenharmony_ci pipeline_program 1355e5c31af7Sopenharmony_ci active_stages {vertex} 1356e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex } 1357e5c31af7Sopenharmony_ci vertex "" 1358e5c31af7Sopenharmony_ci #version 310 es 1359e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1360e5c31af7Sopenharmony_ci struct StructName 1361e5c31af7Sopenharmony_ci { 1362e5c31af7Sopenharmony_ci mediump float v_a; 1363e5c31af7Sopenharmony_ci mediump float v_b; 1364e5c31af7Sopenharmony_ci }; 1365e5c31af7Sopenharmony_ci out IOBlockName 1366e5c31af7Sopenharmony_ci { 1367e5c31af7Sopenharmony_ci StructName v_val; 1368e5c31af7Sopenharmony_ci }; 1369e5c31af7Sopenharmony_ci 1370e5c31af7Sopenharmony_ci void main() 1371e5c31af7Sopenharmony_ci { 1372e5c31af7Sopenharmony_ci v_val.v_a = 1.0; 1373e5c31af7Sopenharmony_ci v_val.v_b = 1.0; 1374e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1375e5c31af7Sopenharmony_ci } 1376e5c31af7Sopenharmony_ci "" 1377e5c31af7Sopenharmony_ci end 1378e5c31af7Sopenharmony_ci pipeline_program 1379e5c31af7Sopenharmony_ci active_stages {fragment} 1380e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { fragment } 1381e5c31af7Sopenharmony_ci fragment "" 1382e5c31af7Sopenharmony_ci #version 310 es 1383e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1384e5c31af7Sopenharmony_ci struct StructName 1385e5c31af7Sopenharmony_ci { 1386e5c31af7Sopenharmony_ci mediump float v_b; 1387e5c31af7Sopenharmony_ci mediump float v_a; 1388e5c31af7Sopenharmony_ci }; 1389e5c31af7Sopenharmony_ci in IOBlockName 1390e5c31af7Sopenharmony_ci { 1391e5c31af7Sopenharmony_ci StructName v_val; 1392e5c31af7Sopenharmony_ci }; 1393e5c31af7Sopenharmony_ci void main() 1394e5c31af7Sopenharmony_ci { 1395e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(v_val.v_a); 1396e5c31af7Sopenharmony_ci } 1397e5c31af7Sopenharmony_ci "" 1398e5c31af7Sopenharmony_ci end 1399e5c31af7Sopenharmony_ci end 1400e5c31af7Sopenharmony_ci 1401e5c31af7Sopenharmony_ci case mismatch_array_size 1402e5c31af7Sopenharmony_ci version 310 es 1403e5c31af7Sopenharmony_ci desc "IO-blocks do not match due to mismatch with array sizes" 1404e5c31af7Sopenharmony_ci expect validation_fail 1405e5c31af7Sopenharmony_ci 1406e5c31af7Sopenharmony_ci pipeline_program 1407e5c31af7Sopenharmony_ci active_stages {vertex} 1408e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex } 1409e5c31af7Sopenharmony_ci vertex "" 1410e5c31af7Sopenharmony_ci #version 310 es 1411e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1412e5c31af7Sopenharmony_ci out IOBlockName 1413e5c31af7Sopenharmony_ci { 1414e5c31af7Sopenharmony_ci mediump float v_val; 1415e5c31af7Sopenharmony_ci } ioBlock[2]; 1416e5c31af7Sopenharmony_ci void main() 1417e5c31af7Sopenharmony_ci { 1418e5c31af7Sopenharmony_ci ioBlock[0].v_val = 1.0; 1419e5c31af7Sopenharmony_ci ioBlock[1].v_val = 2.0; 1420e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1421e5c31af7Sopenharmony_ci } 1422e5c31af7Sopenharmony_ci "" 1423e5c31af7Sopenharmony_ci end 1424e5c31af7Sopenharmony_ci pipeline_program 1425e5c31af7Sopenharmony_ci active_stages {fragment} 1426e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { fragment } 1427e5c31af7Sopenharmony_ci fragment "" 1428e5c31af7Sopenharmony_ci #version 310 es 1429e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1430e5c31af7Sopenharmony_ci in IOBlockName 1431e5c31af7Sopenharmony_ci { 1432e5c31af7Sopenharmony_ci mediump float v_val; 1433e5c31af7Sopenharmony_ci } ioBlock[1]; 1434e5c31af7Sopenharmony_ci void main() 1435e5c31af7Sopenharmony_ci { 1436e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(ioBlock[0].v_val); 1437e5c31af7Sopenharmony_ci } 1438e5c31af7Sopenharmony_ci "" 1439e5c31af7Sopenharmony_ci end 1440e5c31af7Sopenharmony_ci end 1441e5c31af7Sopenharmony_ci 1442e5c31af7Sopenharmony_ci case mismatch_variable_and_block_member_1 1443e5c31af7Sopenharmony_ci version 310 es 1444e5c31af7Sopenharmony_ci desc "IO-block does not match with variable" 1445e5c31af7Sopenharmony_ci expect validation_fail 1446e5c31af7Sopenharmony_ci 1447e5c31af7Sopenharmony_ci pipeline_program 1448e5c31af7Sopenharmony_ci active_stages {vertex} 1449e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex } 1450e5c31af7Sopenharmony_ci vertex "" 1451e5c31af7Sopenharmony_ci #version 310 es 1452e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1453e5c31af7Sopenharmony_ci out IOBlockName 1454e5c31af7Sopenharmony_ci { 1455e5c31af7Sopenharmony_ci mediump float v_val; 1456e5c31af7Sopenharmony_ci }; 1457e5c31af7Sopenharmony_ci 1458e5c31af7Sopenharmony_ci void main() 1459e5c31af7Sopenharmony_ci { 1460e5c31af7Sopenharmony_ci v_val = 1.0; 1461e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1462e5c31af7Sopenharmony_ci } 1463e5c31af7Sopenharmony_ci "" 1464e5c31af7Sopenharmony_ci end 1465e5c31af7Sopenharmony_ci pipeline_program 1466e5c31af7Sopenharmony_ci active_stages {fragment} 1467e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { fragment } 1468e5c31af7Sopenharmony_ci fragment "" 1469e5c31af7Sopenharmony_ci #version 310 es 1470e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1471e5c31af7Sopenharmony_ci in mediump float v_val; 1472e5c31af7Sopenharmony_ci void main() 1473e5c31af7Sopenharmony_ci { 1474e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(v_val); 1475e5c31af7Sopenharmony_ci } 1476e5c31af7Sopenharmony_ci "" 1477e5c31af7Sopenharmony_ci end 1478e5c31af7Sopenharmony_ci end 1479e5c31af7Sopenharmony_ci 1480e5c31af7Sopenharmony_ci case mismatch_variable_and_block_member_2 1481e5c31af7Sopenharmony_ci version 310 es 1482e5c31af7Sopenharmony_ci desc "IO-block does not match with variable" 1483e5c31af7Sopenharmony_ci expect validation_fail 1484e5c31af7Sopenharmony_ci 1485e5c31af7Sopenharmony_ci pipeline_program 1486e5c31af7Sopenharmony_ci active_stages {vertex} 1487e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex } 1488e5c31af7Sopenharmony_ci vertex "" 1489e5c31af7Sopenharmony_ci #version 310 es 1490e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1491e5c31af7Sopenharmony_ci out VariableAndBlockName 1492e5c31af7Sopenharmony_ci { 1493e5c31af7Sopenharmony_ci mediump float v_val; 1494e5c31af7Sopenharmony_ci }; 1495e5c31af7Sopenharmony_ci 1496e5c31af7Sopenharmony_ci void main() 1497e5c31af7Sopenharmony_ci { 1498e5c31af7Sopenharmony_ci v_val = 1.0; 1499e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1500e5c31af7Sopenharmony_ci } 1501e5c31af7Sopenharmony_ci "" 1502e5c31af7Sopenharmony_ci end 1503e5c31af7Sopenharmony_ci pipeline_program 1504e5c31af7Sopenharmony_ci active_stages {fragment} 1505e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { fragment } 1506e5c31af7Sopenharmony_ci fragment "" 1507e5c31af7Sopenharmony_ci #version 310 es 1508e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1509e5c31af7Sopenharmony_ci in mediump float VariableAndBlockName; 1510e5c31af7Sopenharmony_ci void main() 1511e5c31af7Sopenharmony_ci { 1512e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(VariableAndBlockName); 1513e5c31af7Sopenharmony_ci } 1514e5c31af7Sopenharmony_ci "" 1515e5c31af7Sopenharmony_ci end 1516e5c31af7Sopenharmony_ci end 1517e5c31af7Sopenharmony_ciend 1518