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