# WARNING: This file is auto-generated. Do NOT modify it manually, but rather # modify the generating script file. Otherwise changes will be lost! group valid "Valid uniform interface block syntax tests." case repeat_interface_qualifier_vertex version 300 es expect build_successful vertex "" #version 300 es precision highp float; uniform UniformBlock { uniform vec4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case repeat_interface_qualifier_fragment version 300 es expect build_successful vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformBlock { uniform vec4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case layout_shared_vertex version 300 es expect build_successful vertex "" #version 300 es precision highp float; layout(shared) uniform UniformBlock { vec4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case layout_shared_fragment version 300 es expect build_successful vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; layout(shared) uniform UniformBlock { vec4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case layout_packed_vertex version 300 es expect build_successful vertex "" #version 300 es precision highp float; layout(packed) uniform UniformBlock { vec4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case layout_packed_fragment version 300 es expect build_successful vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; layout(packed) uniform UniformBlock { vec4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case layout_std140_vertex version 300 es expect build_successful vertex "" #version 300 es precision highp float; layout(std140) uniform UniformBlock { vec4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case layout_std140_fragment version 300 es expect build_successful vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; layout(std140) uniform UniformBlock { vec4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case layout_row_major_vertex version 300 es expect build_successful vertex "" #version 300 es precision highp float; layout(row_major) uniform UniformBlock { vec4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case layout_row_major_fragment version 300 es expect build_successful vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; layout(row_major) uniform UniformBlock { vec4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case layout_column_major_vertex version 300 es expect build_successful vertex "" #version 300 es precision highp float; layout(column_major) uniform UniformBlock { vec4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case layout_column_major_fragment version 300 es expect build_successful vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; layout(column_major) uniform UniformBlock { vec4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case layout_all_vertex version 300 es expect build_successful vertex "" #version 300 es precision highp float; layout(shared, packed, std140, row_major, column_major) uniform UniformBlock { vec4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case layout_all_fragment version 300 es expect build_successful vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; layout(shared, packed, std140, row_major, column_major) uniform UniformBlock { vec4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case layout_all_8_times_vertex version 300 es expect build_successful vertex "" #version 300 es precision highp float; layout(shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major) uniform UniformBlock { vec4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case layout_all_8_times_fragment version 300 es expect build_successful vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; layout(shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major) uniform UniformBlock { vec4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case global_layout_shared_vertex version 300 es expect build_successful vertex "" #version 300 es precision highp float; layout(shared) uniform; uniform UniformBlock { vec4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case global_layout_shared_fragment version 300 es expect build_successful vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(shared) uniform; layout(location=0) out vec4 o_color; uniform UniformBlock { vec4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case global_layout_packed_vertex version 300 es expect build_successful vertex "" #version 300 es precision highp float; layout(packed) uniform; uniform UniformBlock { vec4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case global_layout_packed_fragment version 300 es expect build_successful vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(packed) uniform; layout(location=0) out vec4 o_color; uniform UniformBlock { vec4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case global_layout_std140_vertex version 300 es expect build_successful vertex "" #version 300 es precision highp float; layout(std140) uniform; uniform UniformBlock { vec4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case global_layout_std140_fragment version 300 es expect build_successful vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(std140) uniform; layout(location=0) out vec4 o_color; uniform UniformBlock { vec4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case global_layout_row_major_vertex version 300 es expect build_successful vertex "" #version 300 es precision highp float; layout(row_major) uniform; uniform UniformBlock { vec4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case global_layout_row_major_fragment version 300 es expect build_successful vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(row_major) uniform; layout(location=0) out vec4 o_color; uniform UniformBlock { vec4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case global_layout_column_major_vertex version 300 es expect build_successful vertex "" #version 300 es precision highp float; layout(column_major) uniform; uniform UniformBlock { vec4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case global_layout_column_major_fragment version 300 es expect build_successful vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(column_major) uniform; layout(location=0) out vec4 o_color; uniform UniformBlock { vec4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case global_layout_all_vertex version 300 es expect build_successful vertex "" #version 300 es precision highp float; layout(shared, packed, std140, row_major, column_major) uniform; uniform UniformBlock { vec4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case global_layout_all_fragment version 300 es expect build_successful vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(shared, packed, std140, row_major, column_major) uniform; layout(location=0) out vec4 o_color; uniform UniformBlock { vec4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case global_layout_all_8_times_vertex version 300 es expect build_successful vertex "" #version 300 es precision highp float; layout(shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major) uniform; uniform UniformBlock { vec4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case global_layout_all_8_times_fragment version 300 es expect build_successful vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major) uniform; layout(location=0) out vec4 o_color; uniform UniformBlock { vec4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case member_layout_row_major_vertex version 300 es expect build_successful vertex "" #version 300 es precision highp float; uniform UniformBlock { layout(row_major) mat4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember[0]; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case member_layout_row_major_fragment version 300 es expect build_successful vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformBlock { layout(row_major) mat4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember[0]; } "" end case member_layout_column_major_vertex version 300 es expect build_successful vertex "" #version 300 es precision highp float; uniform UniformBlock { layout(column_major) mat4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember[0]; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case member_layout_column_major_fragment version 300 es expect build_successful vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformBlock { layout(column_major) mat4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember[0]; } "" end case member_layout_row_major_vec4_vertex version 300 es expect build_successful vertex "" #version 300 es precision highp float; uniform UniformBlock { layout(row_major) vec4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case member_layout_row_major_vec4_fragment version 300 es expect build_successful vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformBlock { layout(row_major) vec4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case member_layout_column_major_vec4_vertex version 300 es expect build_successful vertex "" #version 300 es precision highp float; uniform UniformBlock { layout(column_major) vec4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case member_layout_column_major_vec4_fragment version 300 es expect build_successful vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformBlock { layout(column_major) vec4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case member_layout_all_vertex version 300 es expect build_successful vertex "" #version 300 es precision highp float; uniform UniformBlock { layout(row_major, column_major) mat4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember[0]; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case member_layout_all_fragment version 300 es expect build_successful vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformBlock { layout(row_major, column_major) mat4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember[0]; } "" end case member_layout_all_8_times_vertex version 300 es expect build_successful vertex "" #version 300 es precision highp float; uniform UniformBlock { layout(row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major) mat4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember[0]; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case member_layout_all_8_times_fragment version 300 es expect build_successful vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformBlock { layout(row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major) mat4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember[0]; } "" end case no_instance_name_vertex version 300 es expect build_successful vertex "" #version 300 es precision highp float; uniform UniformBlock { vec4 uniformMember; }; void main() { gl_Position = uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case no_instance_name_fragment version 300 es expect build_successful vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformBlock { vec4 uniformMember; }; void main() { o_color = uniformMember; } "" end case same_variable_and_block_name_vertex version 300 es expect build_successful vertex "" #version 300 es precision highp float; uniform UniformBlock { vec4 uniformMember; } uniformBlock; void main() { vec4 UniformBlock = vec4(0.0); gl_Position = UniformBlock + uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case same_variable_and_block_name_fragment version 300 es expect build_successful vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformBlock { vec4 uniformMember; } uniformBlock; void main() { vec4 UniformBlock = vec4(0.0); o_color = UniformBlock + uniformBlock.uniformMember; } "" end case same_variable_and_instance_name_vertex version 300 es expect build_successful vertex "" #version 300 es precision highp float; uniform UniformBlock { vec4 uniformMember; } uniformBlock; void main() { vec4 uniformBlock = vec4(0.0); gl_Position = uniformBlock; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case same_variable_and_instance_name_fragment version 300 es expect build_successful vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformBlock { vec4 uniformMember; } uniformBlock; void main() { vec4 uniformBlock = vec4(0.0); o_color = uniformBlock; } "" end case struct_member_vertex version 300 es expect build_successful vertex "" #version 300 es precision highp float; struct Struct { vec4 uniformMember; }; uniform UniformBlock { Struct st; } uniformBlock; void main() { gl_Position = uniformBlock.st.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case struct_member_fragment version 300 es expect build_successful vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; struct Struct { vec4 uniformMember; }; uniform UniformBlock { Struct st; } uniformBlock; void main() { o_color = uniformBlock.st.uniformMember; } "" end case struct_member_layout_row_major_vertex version 300 es expect build_successful vertex "" #version 300 es precision highp float; struct Struct { vec4 uniformMember; }; uniform UniformBlock { layout(row_major) Struct st; } uniformBlock; void main() { gl_Position = uniformBlock.st.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case struct_member_layout_row_major_fragment version 300 es expect build_successful vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; struct Struct { vec4 uniformMember; }; uniform UniformBlock { layout(row_major) Struct st; } uniformBlock; void main() { o_color = uniformBlock.st.uniformMember; } "" end case struct_member_layout_column_major_vertex version 300 es expect build_successful vertex "" #version 300 es precision highp float; struct Struct { vec4 uniformMember; }; uniform UniformBlock { layout(column_major) Struct st; } uniformBlock; void main() { gl_Position = uniformBlock.st.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case struct_member_layout_column_major_fragment version 300 es expect build_successful vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; struct Struct { vec4 uniformMember; }; uniform UniformBlock { layout(column_major) Struct st; } uniformBlock; void main() { o_color = uniformBlock.st.uniformMember; } "" end case struct_member_layout_all_vertex version 300 es expect build_successful vertex "" #version 300 es precision highp float; struct Struct { vec4 uniformMember; }; uniform UniformBlock { layout(row_major, column_major) Struct st; } uniformBlock; void main() { gl_Position = uniformBlock.st.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case struct_member_layout_all_fragment version 300 es expect build_successful vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; struct Struct { vec4 uniformMember; }; uniform UniformBlock { layout(row_major, column_major) Struct st; } uniformBlock; void main() { o_color = uniformBlock.st.uniformMember; } "" end case struct_member_layout_all_8_times_vertex version 300 es expect build_successful vertex "" #version 300 es precision highp float; struct Struct { vec4 uniformMember; }; uniform UniformBlock { layout(row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major) Struct st; } uniformBlock; void main() { gl_Position = uniformBlock.st.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case struct_member_layout_all_8_times_fragment version 300 es expect build_successful vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; struct Struct { vec4 uniformMember; }; uniform UniformBlock { layout(row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major) Struct st; } uniformBlock; void main() { o_color = uniformBlock.st.uniformMember; } "" end case long_block_name_vertex version 300 es expect build_successful vertex "" #version 300 es precision highp float; // Total of 1024 characters uniform aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa { vec4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case long_block_name_fragment version 300 es expect build_successful vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; // Total of 1024 characters uniform aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa { vec4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case long_instance_name_vertex version 300 es expect build_successful vertex "" #version 300 es precision highp float; uniform UniformBlock { vec4 uniformMember; } aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; // Total of 1024 characters void main() { gl_Position = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case long_instance_name_fragment version 300 es expect build_successful vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformBlock { vec4 uniformMember; } aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; // Total of 1024 characters void main() { o_color = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.uniformMember; } "" end case underscore_block_name_vertex version 300 es expect build_successful vertex "" #version 300 es precision highp float; uniform _ { vec4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case underscore_block_name_fragment version 300 es expect build_successful vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform _ { vec4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case underscore_instance_name_vertex version 300 es expect build_successful vertex "" #version 300 es precision highp float; uniform UniformBlock { vec4 uniformMember; } _; void main() { gl_Position = _.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case underscore_instance_name_fragment version 300 es expect build_successful vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformBlock { vec4 uniformMember; } _; void main() { o_color = _.uniformMember; } "" end end # valid group invalid "Invalid uniform interface block syntax tests." case member_in_interface_qualifier_vertex version 300 es expect compile_fail vertex "" #version 300 es precision highp float; uniform UniformBlock { in vec4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case member_in_interface_qualifier_fragment version 300 es expect compile_fail vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformBlock { in vec4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case member_out_interface_qualifier_vertex version 300 es expect compile_fail vertex "" #version 300 es precision highp float; uniform UniformBlock { out vec4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case member_out_interface_qualifier_fragment version 300 es expect compile_fail vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformBlock { out vec4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case member_buffer_interface_qualifier_vertex version 300 es expect compile_fail vertex "" #version 300 es precision highp float; uniform UniformBlock { buffer vec4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case member_buffer_interface_qualifier_fragment version 300 es expect compile_fail vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformBlock { buffer vec4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case member_attribute_interface_qualifier_vertex version 300 es expect compile_fail vertex "" #version 300 es precision highp float; uniform UniformBlock { attribute vec4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case member_attribute_interface_qualifier_fragment version 300 es expect compile_fail vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformBlock { attribute vec4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case member_varying_interface_qualifier_vertex version 300 es expect compile_fail vertex "" #version 300 es precision highp float; uniform UniformBlock { varying vec4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case member_varying_interface_qualifier_fragment version 300 es expect compile_fail vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformBlock { varying vec4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case conflicting_instance_names_vertex version 300 es expect compile_fail vertex "" #version 300 es precision highp float; uniform UniformBlockA { vec4 uniformMember; } uniformBlock; uniform UniformBlockB { vec4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case conflicting_instance_names_fragment version 300 es expect compile_fail vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformBlockA { vec4 uniformMember; } uniformBlock; uniform UniformBlockB { vec4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case conflicting_function_and_instance_name_vertex version 300 es expect compile_fail vertex "" #version 300 es precision highp float; uniform UniformBlock { vec4 uniformMember; } uniformBlock; float uniformBlock (float x) { return x; } void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case conflicting_function_and_instance_name_fragment version 300 es expect compile_fail vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformBlock { vec4 uniformMember; } uniformBlock; float uniformBlock (float x) { return x; } void main() { o_color = uniformBlock.uniformMember; } "" end case conflicting_function_and_block_name_vertex version 300 es expect compile_fail vertex "" #version 300 es precision highp float; uniform UniformBlock { vec4 uniformMember; } uniformBlock; float UniformBlock (float x) { return x; } void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case conflicting_function_and_block_name_fragment version 300 es expect compile_fail vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformBlock { vec4 uniformMember; } uniformBlock; float UniformBlock (float x) { return x; } void main() { o_color = uniformBlock.uniformMember; } "" end case conflicting_uniform_and_instance_name_vertex version 300 es expect compile_fail vertex "" #version 300 es precision highp float; uniform UniformBlock { vec4 uniformMember; } uniformBlock; uniform vec4 uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case conflicting_uniform_and_instance_name_fragment version 300 es expect compile_fail vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformBlock { vec4 uniformMember; } uniformBlock; uniform vec4 uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case conflicting_in_and_instance_name_vertex version 300 es expect compile_fail vertex "" #version 300 es precision highp float; uniform UniformBlock { vec4 uniformMember; } uniformBlock; in vec4 uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case conflicting_in_and_instance_name_fragment version 300 es expect compile_fail vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformBlock { vec4 uniformMember; } uniformBlock; in vec4 uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case conflicting_out_and_instance_name_vertex version 300 es expect compile_fail vertex "" #version 300 es precision highp float; uniform UniformBlock { vec4 uniformMember; } uniformBlock; out vec4 uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case conflicting_out_and_instance_name_fragment version 300 es expect compile_fail vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformBlock { vec4 uniformMember; } uniformBlock; out vec4 uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case conflicting_uniform_and_block_name_vertex version 300 es expect compile_fail vertex "" #version 300 es precision highp float; uniform UniformBlock { vec4 uniformMember; } uniformBlock; uniform vec4 UniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case conflicting_uniform_and_block_name_fragment version 300 es expect compile_fail vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformBlock { vec4 uniformMember; } uniformBlock; uniform vec4 UniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case conflicting_in_and_block_name_vertex version 300 es expect compile_fail vertex "" #version 300 es precision highp float; uniform UniformBlock { vec4 uniformMember; } uniformBlock; in vec4 UniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case conflicting_in_and_block_name_fragment version 300 es expect compile_fail vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformBlock { vec4 uniformMember; } uniformBlock; in vec4 UniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case conflicting_out_and_block_name_vertex version 300 es expect compile_fail vertex "" #version 300 es precision highp float; uniform UniformBlock { vec4 uniformMember; } uniformBlock; out vec4 UniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case conflicting_out_and_block_name_fragment version 300 es expect compile_fail vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformBlock { vec4 uniformMember; } uniformBlock; out vec4 UniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case matching_instance_and_block_name_vertex version 300 es expect compile_fail vertex "" #version 300 es precision highp float; uniform UniformBlock { vec4 uniformMember; } UniformBlock; void main() { gl_Position = UniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case matching_instance_and_block_name_fragment version 300 es expect compile_fail vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformBlock { vec4 uniformMember; } UniformBlock; void main() { o_color = UniformBlock.uniformMember; } "" end case reference_using_block_name_vertex version 300 es expect compile_fail vertex "" #version 300 es precision highp float; uniform UniformBlock { vec4 uniformMember; } uniformBlock; void main() { gl_Position = UniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case reference_using_block_name_fragment version 300 es expect compile_fail vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformBlock { vec4 uniformMember; } uniformBlock; void main() { o_color = UniformBlock.uniformMember; } "" end case empty_block_vertex version 300 es expect compile_fail vertex "" #version 300 es precision highp float; uniform UniformBlock { } uniformBlock; void main() { gl_Position = vec4(0.0); } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case empty_block_fragment version 300 es expect compile_fail vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformBlock { } uniformBlock; void main() { o_color = vec4(0.0); } "" end case empty_layout_vertex version 300 es expect compile_fail vertex "" #version 300 es precision highp float; layout() uniform UniformBlock { vec4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case empty_layout_fragment version 300 es expect compile_fail vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; layout() uniform UniformBlock { vec4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case empty_member_layout_vertex version 300 es expect compile_fail vertex "" #version 300 es precision highp float; uniform UniformBlock { layout() vec4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case empty_member_layout_fragment version 300 es expect compile_fail vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformBlock { layout() vec4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case empty_global_layout_vertex version 300 es expect compile_fail vertex "" #version 300 es precision highp float; layout() uniform; uniform UniformBlock { vec4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case empty_global_layout_fragment version 300 es expect compile_fail vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout() uniform; layout(location=0) out vec4 o_color; uniform UniformBlock { vec4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case structure_definition_vertex version 300 es expect compile_fail vertex "" #version 300 es precision highp float; uniform UniformBlock { struct A { vec4 uniformMember; } a; } uniformBlock; void main() { gl_Position = uniformBlock.a.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case structure_definition_fragment version 300 es expect compile_fail vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformBlock { struct A { vec4 uniformMember; } a; } uniformBlock; void main() { o_color = uniformBlock.a.uniformMember; } "" end case member_layout_shared_vertex version 300 es expect compile_fail vertex "" #version 300 es precision highp float; uniform UniformBlock { layout(shared) vec4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case member_layout_shared_fragment version 300 es expect compile_fail vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformBlock { layout(shared) vec4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case member_layout_packed_vertex version 300 es expect compile_fail vertex "" #version 300 es precision highp float; uniform UniformBlock { layout(packed) vec4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case member_layout_packed_fragment version 300 es expect compile_fail vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformBlock { layout(packed) vec4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case member_layout_std140_vertex version 300 es expect compile_fail vertex "" #version 300 es precision highp float; uniform UniformBlock { layout(std140) vec4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case member_layout_std140_fragment version 300 es expect compile_fail vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformBlock { layout(std140) vec4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case missing_block_name_vertex version 300 es expect compile_fail vertex "" #version 300 es precision highp float; uniform { vec4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case missing_block_name_fragment version 300 es expect compile_fail vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform { vec4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case invalid_number_block_name_vertex version 300 es expect compile_fail vertex "" #version 300 es precision highp float; uniform 0UniformBlock { vec4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case invalid_number_block_name_fragment version 300 es expect compile_fail vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform 0UniformBlock { vec4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case invalid_hash_block_name_vertex version 300 es expect compile_fail vertex "" #version 300 es precision highp float; uniform #UniformBlock { vec4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case invalid_hash_block_name_fragment version 300 es expect compile_fail vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform #UniformBlock { vec4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case invalid_dollar_block_name_vertex version 300 es expect compile_fail vertex "" #version 300 es precision highp float; uniform $UniformBlock { vec4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case invalid_dollar_block_name_fragment version 300 es expect compile_fail vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform $UniformBlock { vec4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case invalid_identifier_block_name_vertex version 300 es expect compile_fail vertex "" #version 300 es precision highp float; uniform gl_UniformBlock { vec4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case invalid_identifier_block_name_fragment version 300 es expect compile_fail vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform gl_UniformBlock { vec4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case too_long_block_name_vertex version 300 es expect compile_fail vertex "" #version 300 es precision highp float; // Total of 1025 characters uniform aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa { vec4 uniformMember; } uniformBlock; void main() { gl_Position = uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case too_long_block_name_fragment version 300 es expect compile_fail vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; // Total of 1025 characters uniform aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa { vec4 uniformMember; } uniformBlock; void main() { o_color = uniformBlock.uniformMember; } "" end case invalid_number_instance_name_vertex version 300 es expect compile_fail vertex "" #version 300 es precision highp float; uniform UniformInstance { vec4 uniformMember; } 0uniformBlock; void main() { gl_Position = 0uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case invalid_number_instance_name_fragment version 300 es expect compile_fail vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformInstance { vec4 uniformMember; } 0uniformBlock; void main() { o_color = 0uniformBlock.uniformMember; } "" end case invalid_hash_instance_name_vertex version 300 es expect compile_fail vertex "" #version 300 es precision highp float; uniform UniformInstance { vec4 uniformMember; } $uniformBlock; void main() { gl_Position = $uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case invalid_hash_instance_name_fragment version 300 es expect compile_fail vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformInstance { vec4 uniformMember; } $uniformBlock; void main() { o_color = $uniformBlock.uniformMember; } "" end case invalid_dollar_instance_name_vertex version 300 es expect compile_fail vertex "" #version 300 es precision highp float; uniform UniformInstance { vec4 uniformMember; } $uniformBlock; void main() { gl_Position = $uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case invalid_dollar_instance_name_fragment version 300 es expect compile_fail vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformInstance { vec4 uniformMember; } $uniformBlock; void main() { o_color = $uniformBlock.uniformMember; } "" end case invalid_identifier_instance_name_vertex version 300 es expect compile_fail vertex "" #version 300 es precision highp float; uniform UniformBlock { vec4 uniformMember; } gl_uniformBlock; void main() { gl_Position = gl_uniformBlock.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case invalid_identifier_instance_name_fragment version 300 es expect compile_fail vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformBlock { vec4 uniformMember; } gl_uniformBlock; void main() { o_color = gl_uniformBlock.uniformMember; } "" end case repeated_block_vertex version 300 es expect compile_fail vertex "" #version 300 es precision highp float; uniform UniformBlock { vec4 uniformMember; } uniformBlockA; uniform UniformBlock { vec4 uniformMember; } uniformBlockB; void main() { gl_Position = uniformBlockA.uniformMember + uniformBlockB.uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case repeated_block_fragment version 300 es expect compile_fail vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformBlock { vec4 uniformMember; } uniformBlockA; uniform UniformBlock { vec4 uniformMember; } uniformBlockB; void main() { o_color = uniformBlockA.uniformMember + uniformBlockB.uniformMember; } "" end case repeated_block_no_instance_name_vertex version 300 es expect compile_fail vertex "" #version 300 es precision highp float; uniform UniformBlock { vec4 uniformMember; } uniformBlock; uniform UniformBlock { vec4 uniformMember; }; void main() { gl_Position = uniformBlock.uniformMember + uniformMember; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; void main() { o_color = vec4(1.0); } "" end case repeated_block_no_instance_name_fragment version 300 es expect compile_fail vertex "" #version 300 es precision highp float; in vec4 a_pos; void main() { gl_Position = a_pos; } "" fragment "" #version 300 es precision highp float; layout(location=0) out vec4 o_color; uniform UniformBlock { vec4 uniformMember; } uniformBlock; uniform UniformBlock { vec4 uniformMember; }; void main() { o_color = uniformBlock.uniformMember + uniformMember; } "" end end # invalid