| #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 |