1e5c31af7Sopenharmony_cicase mismatch_number_of_declarations 2e5c31af7Sopenharmony_ci version 310 es 3e5c31af7Sopenharmony_ci desc "Shader io block mismatch: different number of declarations" 4e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex, fragment } 5e5c31af7Sopenharmony_ci expect link_fail 6e5c31af7Sopenharmony_ci vertex "" 7e5c31af7Sopenharmony_ci #version 310 es 8e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 9e5c31af7Sopenharmony_ci out IOBlockName 10e5c31af7Sopenharmony_ci { 11e5c31af7Sopenharmony_ci mediump float variable1; 12e5c31af7Sopenharmony_ci }; 13e5c31af7Sopenharmony_ci 14e5c31af7Sopenharmony_ci void main() 15e5c31af7Sopenharmony_ci { 16e5c31af7Sopenharmony_ci variable1 = float(gl_VertexID); 17e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 18e5c31af7Sopenharmony_ci } 19e5c31af7Sopenharmony_ci "" 20e5c31af7Sopenharmony_ci fragment "" 21e5c31af7Sopenharmony_ci #version 310 es 22e5c31af7Sopenharmony_ci precision mediump float; 23e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 24e5c31af7Sopenharmony_ci in IOBlockName 25e5c31af7Sopenharmony_ci { 26e5c31af7Sopenharmony_ci mediump float variable1; 27e5c31af7Sopenharmony_ci mediump float variable2; 28e5c31af7Sopenharmony_ci }; 29e5c31af7Sopenharmony_ci 30e5c31af7Sopenharmony_ci void main() 31e5c31af7Sopenharmony_ci { 32e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(variable1 + variable2); 33e5c31af7Sopenharmony_ci } 34e5c31af7Sopenharmony_ci "" 35e5c31af7Sopenharmony_ciend 36e5c31af7Sopenharmony_ci 37e5c31af7Sopenharmony_cicase mismatch_order 38e5c31af7Sopenharmony_ci version 310 es 39e5c31af7Sopenharmony_ci desc "Shader io block mismatch: different member declaration order" 40e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex, fragment } 41e5c31af7Sopenharmony_ci expect link_fail 42e5c31af7Sopenharmony_ci vertex "" 43e5c31af7Sopenharmony_ci #version 310 es 44e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 45e5c31af7Sopenharmony_ci out IOBlockName 46e5c31af7Sopenharmony_ci { 47e5c31af7Sopenharmony_ci mediump float variable1; 48e5c31af7Sopenharmony_ci mediump float variable2; 49e5c31af7Sopenharmony_ci }; 50e5c31af7Sopenharmony_ci 51e5c31af7Sopenharmony_ci void main() 52e5c31af7Sopenharmony_ci { 53e5c31af7Sopenharmony_ci variable1 = float(gl_VertexID); 54e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 55e5c31af7Sopenharmony_ci } 56e5c31af7Sopenharmony_ci "" 57e5c31af7Sopenharmony_ci fragment "" 58e5c31af7Sopenharmony_ci #version 310 es 59e5c31af7Sopenharmony_ci precision mediump float; 60e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 61e5c31af7Sopenharmony_ci in IOBlockName 62e5c31af7Sopenharmony_ci { 63e5c31af7Sopenharmony_ci mediump float variable2; 64e5c31af7Sopenharmony_ci mediump float variable1; 65e5c31af7Sopenharmony_ci }; 66e5c31af7Sopenharmony_ci 67e5c31af7Sopenharmony_ci void main() 68e5c31af7Sopenharmony_ci { 69e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(variable1 + variable2); 70e5c31af7Sopenharmony_ci } 71e5c31af7Sopenharmony_ci "" 72e5c31af7Sopenharmony_ciend 73e5c31af7Sopenharmony_ci 74e5c31af7Sopenharmony_cicase mismatch_type 75e5c31af7Sopenharmony_ci version 310 es 76e5c31af7Sopenharmony_ci desc "Shader io block mismatch: different member type" 77e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex, fragment } 78e5c31af7Sopenharmony_ci expect link_fail 79e5c31af7Sopenharmony_ci vertex "" 80e5c31af7Sopenharmony_ci #version 310 es 81e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 82e5c31af7Sopenharmony_ci out IOBlockName 83e5c31af7Sopenharmony_ci { 84e5c31af7Sopenharmony_ci mediump vec2 variable; 85e5c31af7Sopenharmony_ci }; 86e5c31af7Sopenharmony_ci 87e5c31af7Sopenharmony_ci void main() 88e5c31af7Sopenharmony_ci { 89e5c31af7Sopenharmony_ci variable.x = float(gl_VertexID); 90e5c31af7Sopenharmony_ci variable.y = float(gl_InstanceID); 91e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 92e5c31af7Sopenharmony_ci } 93e5c31af7Sopenharmony_ci "" 94e5c31af7Sopenharmony_ci fragment "" 95e5c31af7Sopenharmony_ci #version 310 es 96e5c31af7Sopenharmony_ci precision mediump float; 97e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 98e5c31af7Sopenharmony_ci in IOBlockName 99e5c31af7Sopenharmony_ci { 100e5c31af7Sopenharmony_ci mediump float variable; 101e5c31af7Sopenharmony_ci }; 102e5c31af7Sopenharmony_ci 103e5c31af7Sopenharmony_ci void main() 104e5c31af7Sopenharmony_ci { 105e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(variable); 106e5c31af7Sopenharmony_ci } 107e5c31af7Sopenharmony_ci "" 108e5c31af7Sopenharmony_ciend 109e5c31af7Sopenharmony_ci 110e5c31af7Sopenharmony_cicase mismatch_member_name 111e5c31af7Sopenharmony_ci version 310 es 112e5c31af7Sopenharmony_ci desc "Shader io block mismatch: different member name" 113e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex, fragment } 114e5c31af7Sopenharmony_ci expect link_fail 115e5c31af7Sopenharmony_ci vertex "" 116e5c31af7Sopenharmony_ci #version 310 es 117e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 118e5c31af7Sopenharmony_ci out IOBlockName 119e5c31af7Sopenharmony_ci { 120e5c31af7Sopenharmony_ci mediump float variable1; 121e5c31af7Sopenharmony_ci }; 122e5c31af7Sopenharmony_ci 123e5c31af7Sopenharmony_ci void main() 124e5c31af7Sopenharmony_ci { 125e5c31af7Sopenharmony_ci variable1 = float(gl_VertexID); 126e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 127e5c31af7Sopenharmony_ci } 128e5c31af7Sopenharmony_ci "" 129e5c31af7Sopenharmony_ci fragment "" 130e5c31af7Sopenharmony_ci #version 310 es 131e5c31af7Sopenharmony_ci precision mediump float; 132e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 133e5c31af7Sopenharmony_ci in IOBlockName 134e5c31af7Sopenharmony_ci { 135e5c31af7Sopenharmony_ci mediump float variable2; 136e5c31af7Sopenharmony_ci }; 137e5c31af7Sopenharmony_ci 138e5c31af7Sopenharmony_ci void main() 139e5c31af7Sopenharmony_ci { 140e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(variable2); 141e5c31af7Sopenharmony_ci } 142e5c31af7Sopenharmony_ci "" 143e5c31af7Sopenharmony_ciend 144e5c31af7Sopenharmony_ci 145e5c31af7Sopenharmony_cicase mismatch_member_array_size 146e5c31af7Sopenharmony_ci version 310 es 147e5c31af7Sopenharmony_ci desc "Shader io block mismatch: different member array size" 148e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex, fragment } 149e5c31af7Sopenharmony_ci expect link_fail 150e5c31af7Sopenharmony_ci vertex "" 151e5c31af7Sopenharmony_ci #version 310 es 152e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 153e5c31af7Sopenharmony_ci out IOBlockName 154e5c31af7Sopenharmony_ci { 155e5c31af7Sopenharmony_ci mediump float variable[1]; 156e5c31af7Sopenharmony_ci }; 157e5c31af7Sopenharmony_ci 158e5c31af7Sopenharmony_ci void main() 159e5c31af7Sopenharmony_ci { 160e5c31af7Sopenharmony_ci variable[0] = float(gl_VertexID); 161e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 162e5c31af7Sopenharmony_ci } 163e5c31af7Sopenharmony_ci "" 164e5c31af7Sopenharmony_ci fragment "" 165e5c31af7Sopenharmony_ci #version 310 es 166e5c31af7Sopenharmony_ci precision mediump float; 167e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 168e5c31af7Sopenharmony_ci in IOBlockName 169e5c31af7Sopenharmony_ci { 170e5c31af7Sopenharmony_ci mediump float variable[2]; 171e5c31af7Sopenharmony_ci }; 172e5c31af7Sopenharmony_ci 173e5c31af7Sopenharmony_ci void main() 174e5c31af7Sopenharmony_ci { 175e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(variable[0] + variable[1]); 176e5c31af7Sopenharmony_ci } 177e5c31af7Sopenharmony_ci "" 178e5c31af7Sopenharmony_ciend 179e5c31af7Sopenharmony_ci 180e5c31af7Sopenharmony_cicase with_and_without_instance_name 181e5c31af7Sopenharmony_ci version 310 es 182e5c31af7Sopenharmony_ci desc "Shader io block: with and without instance name" 183e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex, fragment } 184e5c31af7Sopenharmony_ci values 185e5c31af7Sopenharmony_ci { 186e5c31af7Sopenharmony_ci input float in0 = 1.0; 187e5c31af7Sopenharmony_ci output float out0 = 1.0; 188e5c31af7Sopenharmony_ci } 189e5c31af7Sopenharmony_ci vertex "" 190e5c31af7Sopenharmony_ci #version 310 es 191e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 192e5c31af7Sopenharmony_ci out IOBlockName 193e5c31af7Sopenharmony_ci { 194e5c31af7Sopenharmony_ci mediump float variable; 195e5c31af7Sopenharmony_ci } instanceName; 196e5c31af7Sopenharmony_ci 197e5c31af7Sopenharmony_ci void main() 198e5c31af7Sopenharmony_ci { 199e5c31af7Sopenharmony_ci instanceName.variable = in0; 200e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 201e5c31af7Sopenharmony_ci } 202e5c31af7Sopenharmony_ci "" 203e5c31af7Sopenharmony_ci fragment "" 204e5c31af7Sopenharmony_ci #version 310 es 205e5c31af7Sopenharmony_ci precision mediump float; 206e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 207e5c31af7Sopenharmony_ci in IOBlockName 208e5c31af7Sopenharmony_ci { 209e5c31af7Sopenharmony_ci mediump float variable; 210e5c31af7Sopenharmony_ci }; 211e5c31af7Sopenharmony_ci 212e5c31af7Sopenharmony_ci void main() 213e5c31af7Sopenharmony_ci { 214e5c31af7Sopenharmony_ci out0 = variable; 215e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 216e5c31af7Sopenharmony_ci } 217e5c31af7Sopenharmony_ci "" 218e5c31af7Sopenharmony_ciend 219e5c31af7Sopenharmony_ci 220e5c31af7Sopenharmony_cicase mismatch_block_array_size 221e5c31af7Sopenharmony_ci version 310 es 222e5c31af7Sopenharmony_ci desc "Shader io block mismatch: different array size" 223e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex, fragment } 224e5c31af7Sopenharmony_ci expect link_fail 225e5c31af7Sopenharmony_ci vertex "" 226e5c31af7Sopenharmony_ci #version 310 es 227e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 228e5c31af7Sopenharmony_ci out IOBlockName 229e5c31af7Sopenharmony_ci { 230e5c31af7Sopenharmony_ci mediump float variable; 231e5c31af7Sopenharmony_ci } instanceName[1]; 232e5c31af7Sopenharmony_ci 233e5c31af7Sopenharmony_ci void main() 234e5c31af7Sopenharmony_ci { 235e5c31af7Sopenharmony_ci instanceName[0].variable = float(gl_VertexID); 236e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 237e5c31af7Sopenharmony_ci } 238e5c31af7Sopenharmony_ci "" 239e5c31af7Sopenharmony_ci fragment "" 240e5c31af7Sopenharmony_ci #version 310 es 241e5c31af7Sopenharmony_ci precision mediump float; 242e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 243e5c31af7Sopenharmony_ci in IOBlockName 244e5c31af7Sopenharmony_ci { 245e5c31af7Sopenharmony_ci mediump float variable; 246e5c31af7Sopenharmony_ci } instanceName[2]; 247e5c31af7Sopenharmony_ci 248e5c31af7Sopenharmony_ci void main() 249e5c31af7Sopenharmony_ci { 250e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(instanceName[0].variable + instanceName[1].variable); 251e5c31af7Sopenharmony_ci } 252e5c31af7Sopenharmony_ci "" 253e5c31af7Sopenharmony_ciend 254e5c31af7Sopenharmony_ci 255e5c31af7Sopenharmony_cicase missing_output_block 256e5c31af7Sopenharmony_ci version 310 es 257e5c31af7Sopenharmony_ci desc "Shader io block mismatch: missing output block" 258e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex, fragment } 259e5c31af7Sopenharmony_ci expect link_fail 260e5c31af7Sopenharmony_ci vertex "" 261e5c31af7Sopenharmony_ci #version 310 es 262e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 263e5c31af7Sopenharmony_ci void main() 264e5c31af7Sopenharmony_ci { 265e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 266e5c31af7Sopenharmony_ci } 267e5c31af7Sopenharmony_ci "" 268e5c31af7Sopenharmony_ci fragment "" 269e5c31af7Sopenharmony_ci #version 310 es 270e5c31af7Sopenharmony_ci precision mediump float; 271e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 272e5c31af7Sopenharmony_ci in IOBlockName 273e5c31af7Sopenharmony_ci { 274e5c31af7Sopenharmony_ci mediump float variable; 275e5c31af7Sopenharmony_ci }; 276e5c31af7Sopenharmony_ci 277e5c31af7Sopenharmony_ci void main() 278e5c31af7Sopenharmony_ci { 279e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(variable); 280e5c31af7Sopenharmony_ci } 281e5c31af7Sopenharmony_ci "" 282e5c31af7Sopenharmony_ciend 283e5c31af7Sopenharmony_ci 284e5c31af7Sopenharmony_cicase ambiguous_variable_name_1 285e5c31af7Sopenharmony_ci version 310 es 286e5c31af7Sopenharmony_ci desc "Unnamed io block variable and global variable with identical names" 287e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex, fragment } 288e5c31af7Sopenharmony_ci expect compile_or_link_fail 289e5c31af7Sopenharmony_ci vertex "" 290e5c31af7Sopenharmony_ci #version 310 es 291e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 292e5c31af7Sopenharmony_ci float variable; 293e5c31af7Sopenharmony_ci out IOBlockName 294e5c31af7Sopenharmony_ci { 295e5c31af7Sopenharmony_ci mediump float variable; 296e5c31af7Sopenharmony_ci }; 297e5c31af7Sopenharmony_ci 298e5c31af7Sopenharmony_ci void main() 299e5c31af7Sopenharmony_ci { 300e5c31af7Sopenharmony_ci variable = float(gl_VertexID); 301e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 302e5c31af7Sopenharmony_ci } 303e5c31af7Sopenharmony_ci "" 304e5c31af7Sopenharmony_ci fragment "" 305e5c31af7Sopenharmony_ci #version 310 es 306e5c31af7Sopenharmony_ci precision mediump float; 307e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 308e5c31af7Sopenharmony_ci in IOBlockName 309e5c31af7Sopenharmony_ci { 310e5c31af7Sopenharmony_ci mediump float variable; 311e5c31af7Sopenharmony_ci }; 312e5c31af7Sopenharmony_ci 313e5c31af7Sopenharmony_ci void main() 314e5c31af7Sopenharmony_ci { 315e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(variable); 316e5c31af7Sopenharmony_ci } 317e5c31af7Sopenharmony_ci "" 318e5c31af7Sopenharmony_ciend 319e5c31af7Sopenharmony_ci 320e5c31af7Sopenharmony_cicase ambiguous_variable_name_2 321e5c31af7Sopenharmony_ci version 310 es 322e5c31af7Sopenharmony_ci desc "Two unnamed io blocks with variables with identical names" 323e5c31af7Sopenharmony_ci require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex, fragment } 324e5c31af7Sopenharmony_ci expect compile_or_link_fail 325e5c31af7Sopenharmony_ci vertex "" 326e5c31af7Sopenharmony_ci #version 310 es 327e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 328e5c31af7Sopenharmony_ci out IOBlockNameA 329e5c31af7Sopenharmony_ci { 330e5c31af7Sopenharmony_ci mediump float variable; 331e5c31af7Sopenharmony_ci }; 332e5c31af7Sopenharmony_ci out IOBlockNameB 333e5c31af7Sopenharmony_ci { 334e5c31af7Sopenharmony_ci mediump float variable; 335e5c31af7Sopenharmony_ci }; 336e5c31af7Sopenharmony_ci 337e5c31af7Sopenharmony_ci void main() 338e5c31af7Sopenharmony_ci { 339e5c31af7Sopenharmony_ci variable = float(gl_VertexID); 340e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 341e5c31af7Sopenharmony_ci } 342e5c31af7Sopenharmony_ci "" 343e5c31af7Sopenharmony_ci fragment "" 344e5c31af7Sopenharmony_ci #version 310 es 345e5c31af7Sopenharmony_ci precision mediump float; 346e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 347e5c31af7Sopenharmony_ci in IOBlockNameA 348e5c31af7Sopenharmony_ci { 349e5c31af7Sopenharmony_ci mediump float variable; 350e5c31af7Sopenharmony_ci }; 351e5c31af7Sopenharmony_ci in IOBlockNameB 352e5c31af7Sopenharmony_ci { 353e5c31af7Sopenharmony_ci mediump float variable; 354e5c31af7Sopenharmony_ci }; 355e5c31af7Sopenharmony_ci 356e5c31af7Sopenharmony_ci void main() 357e5c31af7Sopenharmony_ci { 358e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(variable); 359e5c31af7Sopenharmony_ci } 360e5c31af7Sopenharmony_ci "" 361e5c31af7Sopenharmony_ciend 362