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