#version 300 es struct s { vec4 v; }; layout(location = 7) in vec3 c; layout(LocatioN = 3) in vec4 p; layout(LocatioN = 9) in vec4 q[4]; // ERROR, no array layout(LocatioN = 10) in s r[4]; // ERROR, no struct, ERROR, location overlap out vec4 pos; out vec3 color; layout(shared, column_major) uniform mat4 badm4; // ERROR layout(shared, column_major, row_major) uniform; // default is now shared and row_major layout(std140) uniform Transform { // layout of this block is std140 mat4 M1; // row_major layout(column_major) mat4 M2; // column major mat3 N1; // row_major centroid float badf; // ERROR in float badg; // ERROR layout(std140) float bad1; layout(shared) float bad2; layout(packed) float bad3; } tblock; uniform T2 { // layout of this block is shared bool b; mat4 t2m; }; layout(column_major) uniform T3 { // shared and column_major mat4 M3; // column_major layout(row_major) mat4 M4; // row major mat3 N2; // column_major int b; // ERROR, redefinition (needs to be last member of block for testing, following members are skipped) }; out badout { // ERROR float f; }; layout (location = 10) out vec4 badoutA; // ERROR void main() { pos = p * (tblock.M1 + tblock.M2 + M4 + M3 + t2m); color = c * tblock.N1; } shared vec4 compute_only; // ERROR layout(packed) uniform; layout(packed) uniform float aoeuntaoeu; // ERROR, packed on variable layout(location = 40) in float cd; layout(location = 37) in mat4x3 ce; // ERROR, overlap