362 lines
6.4 KiB
Plaintext
362 lines
6.4 KiB
Plaintext
case mismatch_number_of_declarations
|
|
version 310 es
|
|
desc "Shader io block mismatch: different number of declarations"
|
|
require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex, fragment }
|
|
expect link_fail
|
|
vertex ""
|
|
#version 310 es
|
|
${VERTEX_DECLARATIONS}
|
|
out IOBlockName
|
|
{
|
|
mediump float variable1;
|
|
};
|
|
|
|
void main()
|
|
{
|
|
variable1 = float(gl_VertexID);
|
|
${VERTEX_OUTPUT}
|
|
}
|
|
""
|
|
fragment ""
|
|
#version 310 es
|
|
precision mediump float;
|
|
${FRAGMENT_DECLARATIONS}
|
|
in IOBlockName
|
|
{
|
|
mediump float variable1;
|
|
mediump float variable2;
|
|
};
|
|
|
|
void main()
|
|
{
|
|
${FRAG_COLOR} = vec4(variable1 + variable2);
|
|
}
|
|
""
|
|
end
|
|
|
|
case mismatch_order
|
|
version 310 es
|
|
desc "Shader io block mismatch: different member declaration order"
|
|
require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex, fragment }
|
|
expect link_fail
|
|
vertex ""
|
|
#version 310 es
|
|
${VERTEX_DECLARATIONS}
|
|
out IOBlockName
|
|
{
|
|
mediump float variable1;
|
|
mediump float variable2;
|
|
};
|
|
|
|
void main()
|
|
{
|
|
variable1 = float(gl_VertexID);
|
|
${VERTEX_OUTPUT}
|
|
}
|
|
""
|
|
fragment ""
|
|
#version 310 es
|
|
precision mediump float;
|
|
${FRAGMENT_DECLARATIONS}
|
|
in IOBlockName
|
|
{
|
|
mediump float variable2;
|
|
mediump float variable1;
|
|
};
|
|
|
|
void main()
|
|
{
|
|
${FRAG_COLOR} = vec4(variable1 + variable2);
|
|
}
|
|
""
|
|
end
|
|
|
|
case mismatch_type
|
|
version 310 es
|
|
desc "Shader io block mismatch: different member type"
|
|
require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex, fragment }
|
|
expect link_fail
|
|
vertex ""
|
|
#version 310 es
|
|
${VERTEX_DECLARATIONS}
|
|
out IOBlockName
|
|
{
|
|
mediump vec2 variable;
|
|
};
|
|
|
|
void main()
|
|
{
|
|
variable.x = float(gl_VertexID);
|
|
variable.y = float(gl_InstanceID);
|
|
${VERTEX_OUTPUT}
|
|
}
|
|
""
|
|
fragment ""
|
|
#version 310 es
|
|
precision mediump float;
|
|
${FRAGMENT_DECLARATIONS}
|
|
in IOBlockName
|
|
{
|
|
mediump float variable;
|
|
};
|
|
|
|
void main()
|
|
{
|
|
${FRAG_COLOR} = vec4(variable);
|
|
}
|
|
""
|
|
end
|
|
|
|
case mismatch_member_name
|
|
version 310 es
|
|
desc "Shader io block mismatch: different member name"
|
|
require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex, fragment }
|
|
expect link_fail
|
|
vertex ""
|
|
#version 310 es
|
|
${VERTEX_DECLARATIONS}
|
|
out IOBlockName
|
|
{
|
|
mediump float variable1;
|
|
};
|
|
|
|
void main()
|
|
{
|
|
variable1 = float(gl_VertexID);
|
|
${VERTEX_OUTPUT}
|
|
}
|
|
""
|
|
fragment ""
|
|
#version 310 es
|
|
precision mediump float;
|
|
${FRAGMENT_DECLARATIONS}
|
|
in IOBlockName
|
|
{
|
|
mediump float variable2;
|
|
};
|
|
|
|
void main()
|
|
{
|
|
${FRAG_COLOR} = vec4(variable2);
|
|
}
|
|
""
|
|
end
|
|
|
|
case mismatch_member_array_size
|
|
version 310 es
|
|
desc "Shader io block mismatch: different member array size"
|
|
require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex, fragment }
|
|
expect link_fail
|
|
vertex ""
|
|
#version 310 es
|
|
${VERTEX_DECLARATIONS}
|
|
out IOBlockName
|
|
{
|
|
mediump float variable[1];
|
|
};
|
|
|
|
void main()
|
|
{
|
|
variable[0] = float(gl_VertexID);
|
|
${VERTEX_OUTPUT}
|
|
}
|
|
""
|
|
fragment ""
|
|
#version 310 es
|
|
precision mediump float;
|
|
${FRAGMENT_DECLARATIONS}
|
|
in IOBlockName
|
|
{
|
|
mediump float variable[2];
|
|
};
|
|
|
|
void main()
|
|
{
|
|
${FRAG_COLOR} = vec4(variable[0] + variable[1]);
|
|
}
|
|
""
|
|
end
|
|
|
|
case with_and_without_instance_name
|
|
version 310 es
|
|
desc "Shader io block: with and without instance name"
|
|
require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex, fragment }
|
|
values
|
|
{
|
|
input float in0 = 1.0;
|
|
output float out0 = 1.0;
|
|
}
|
|
vertex ""
|
|
#version 310 es
|
|
${VERTEX_DECLARATIONS}
|
|
out IOBlockName
|
|
{
|
|
mediump float variable;
|
|
} instanceName;
|
|
|
|
void main()
|
|
{
|
|
instanceName.variable = in0;
|
|
${VERTEX_OUTPUT}
|
|
}
|
|
""
|
|
fragment ""
|
|
#version 310 es
|
|
precision mediump float;
|
|
${FRAGMENT_DECLARATIONS}
|
|
in IOBlockName
|
|
{
|
|
mediump float variable;
|
|
};
|
|
|
|
void main()
|
|
{
|
|
out0 = variable;
|
|
${FRAGMENT_OUTPUT}
|
|
}
|
|
""
|
|
end
|
|
|
|
case mismatch_block_array_size
|
|
version 310 es
|
|
desc "Shader io block mismatch: different array size"
|
|
require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex, fragment }
|
|
expect link_fail
|
|
vertex ""
|
|
#version 310 es
|
|
${VERTEX_DECLARATIONS}
|
|
out IOBlockName
|
|
{
|
|
mediump float variable;
|
|
} instanceName[1];
|
|
|
|
void main()
|
|
{
|
|
instanceName[0].variable = float(gl_VertexID);
|
|
${VERTEX_OUTPUT}
|
|
}
|
|
""
|
|
fragment ""
|
|
#version 310 es
|
|
precision mediump float;
|
|
${FRAGMENT_DECLARATIONS}
|
|
in IOBlockName
|
|
{
|
|
mediump float variable;
|
|
} instanceName[2];
|
|
|
|
void main()
|
|
{
|
|
${FRAG_COLOR} = vec4(instanceName[0].variable + instanceName[1].variable);
|
|
}
|
|
""
|
|
end
|
|
|
|
case missing_output_block
|
|
version 310 es
|
|
desc "Shader io block mismatch: missing output block"
|
|
require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex, fragment }
|
|
expect link_fail
|
|
vertex ""
|
|
#version 310 es
|
|
${VERTEX_DECLARATIONS}
|
|
void main()
|
|
{
|
|
${VERTEX_OUTPUT}
|
|
}
|
|
""
|
|
fragment ""
|
|
#version 310 es
|
|
precision mediump float;
|
|
${FRAGMENT_DECLARATIONS}
|
|
in IOBlockName
|
|
{
|
|
mediump float variable;
|
|
};
|
|
|
|
void main()
|
|
{
|
|
${FRAG_COLOR} = vec4(variable);
|
|
}
|
|
""
|
|
end
|
|
|
|
case ambiguous_variable_name_1
|
|
version 310 es
|
|
desc "Unnamed io block variable and global variable with identical names"
|
|
require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex, fragment }
|
|
expect compile_or_link_fail
|
|
vertex ""
|
|
#version 310 es
|
|
${VERTEX_DECLARATIONS}
|
|
float variable;
|
|
out IOBlockName
|
|
{
|
|
mediump float variable;
|
|
};
|
|
|
|
void main()
|
|
{
|
|
variable = float(gl_VertexID);
|
|
${VERTEX_OUTPUT}
|
|
}
|
|
""
|
|
fragment ""
|
|
#version 310 es
|
|
precision mediump float;
|
|
${FRAGMENT_DECLARATIONS}
|
|
in IOBlockName
|
|
{
|
|
mediump float variable;
|
|
};
|
|
|
|
void main()
|
|
{
|
|
${FRAG_COLOR} = vec4(variable);
|
|
}
|
|
""
|
|
end
|
|
|
|
case ambiguous_variable_name_2
|
|
version 310 es
|
|
desc "Two unnamed io blocks with variables with identical names"
|
|
require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex, fragment }
|
|
expect compile_or_link_fail
|
|
vertex ""
|
|
#version 310 es
|
|
${VERTEX_DECLARATIONS}
|
|
out IOBlockNameA
|
|
{
|
|
mediump float variable;
|
|
};
|
|
out IOBlockNameB
|
|
{
|
|
mediump float variable;
|
|
};
|
|
|
|
void main()
|
|
{
|
|
variable = float(gl_VertexID);
|
|
${VERTEX_OUTPUT}
|
|
}
|
|
""
|
|
fragment ""
|
|
#version 310 es
|
|
precision mediump float;
|
|
${FRAGMENT_DECLARATIONS}
|
|
in IOBlockNameA
|
|
{
|
|
mediump float variable;
|
|
};
|
|
in IOBlockNameB
|
|
{
|
|
mediump float variable;
|
|
};
|
|
|
|
void main()
|
|
{
|
|
${FRAG_COLOR} = vec4(variable);
|
|
}
|
|
""
|
|
end
|