summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/glslang/src/Test/440.frag
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/glslang/src/Test/440.frag')
-rw-r--r--chromium/third_party/glslang/src/Test/440.frag153
1 files changed, 153 insertions, 0 deletions
diff --git a/chromium/third_party/glslang/src/Test/440.frag b/chromium/third_party/glslang/src/Test/440.frag
new file mode 100644
index 00000000000..143c0caad8d
--- /dev/null
+++ b/chromium/third_party/glslang/src/Test/440.frag
@@ -0,0 +1,153 @@
+#version 440
+
+// Note 'location'-only tests for enhanced layouts are in 330.frag
+// Generic 'component' tests are in 440.vert
+
+// a consumes components 2 and 3 of location 4
+layout(location = 4, component = 2) in vec2 a;
+
+// b consumes component 1 of location 4
+layout(location = 4, component = 1) in float b;
+layout(location = 4, component = 2) in vec2 h; // ERROR, component overlap not okay for fragment in
+
+layout(location = 3, component = 2) in vec3 c; // ERROR: c overflows components 2 and 3
+
+// e consumes beginning (components 0, 1 and 2) of each of 6 slots
+layout(location = 20, component = 0) in vec3 e[6];
+
+// f consumes last component of the same 6 slots
+layout(location = 20, component = 3) in float f[6];
+
+layout(location = 30, component = 3) out int be;
+layout(location = 30, component = 0) out vec3 bf; // ERROR, not the same basic type
+
+writeonly uniform; // ERROR
+readonly in; // ERROR
+flat out; // ERROR
+mediump uniform;
+
+layout(offset=12) uniform; // ERROR
+layout(offset=12) in; // ERROR
+layout(offset=12) out; // ERROR
+
+layout(align=16) uniform; // ERROR
+layout(align=16) in; // ERROR
+layout(align=16) out; // ERROR
+
+layout(offset=12) uniform ubl1 { int a; } inst1; // ERROR
+layout(offset=12) in inbl2 { int a; } inst2; // ERROR
+layout(offset=12) out inbl3 { int a; } inst3; // ERROR
+
+layout(align=16, std140) uniform ubl4 { int a; } inst4;
+layout(align=16) uniform ubl8 { int a; } inst8; // ERROR, no packing
+layout(align=16) in inbl5 { int a; } inst5; // ERROR
+layout(align=16) out inbl6 { int a; } inst6; // ERROR
+
+layout(offset=12) uniform vec4 v1; // ERROR
+layout(offset=12) in vec4 v2; // ERROR
+layout(offset=12) out vec4 v3; // ERROR
+
+layout(align=16) uniform vec4 v4; // ERROR
+layout(align=16) in vec4 v5; // ERROR
+layout(align=16) out vec4 v6; // ERROR
+
+layout(std140) in; // ERROR
+layout(std140) uniform vec4 v7; // ERROR
+
+layout(align=48) uniform ubl7 { // ERROR, not power of 2
+ layout(offset=12, align=4) float f; // ERROR, no packing
+} inst7;
+
+in ibl10 {
+ layout(offset=12) float f; // ERROR
+ layout(align=4) float g; // ERROR
+} inst10;
+
+layout(std430) uniform;
+
+layout(align=32) uniform ubl9 {
+ float e;
+ layout(offset=12, align=4) float f;
+ layout(offset=20) float g;
+ float h;
+} inst9;
+
+uniform ubl11 {
+ layout(offset=12, align=4) float f;
+ float g;
+} inst11;
+
+layout(std140) uniform block {
+ vec4 a; // a takes offsets 0-15
+ layout(offset = 32) vec3 b; // b takes offsets 32-43
+ layout(offset = 40) vec2 c; // ERROR, lies within previous member
+ layout(align = 6) double g; // ERROR, 6 is not a power of 2
+ layout(offset=68) double h; // ERROR, offset not aligned
+} specExampleErrors;
+
+layout(std140) uniform block2 {
+ vec4 a; // a takes offsets 0-15
+ layout(offset = 32) vec3 b; // b takes offsets 32-43
+ layout(offset = 48) vec2 d; // d takes offsets 48-55
+ layout(align = 16) float e; // e takes offsets 64-67
+ layout(align = 2) double f; // f takes offsets 72-79
+ layout(offset = 80) float h; // h takes offsets 80-83
+ layout(align = 64) dvec3 i; // i takes offsets 128-151
+ layout(offset = 164, align = 8) float j; // j takes offsets 168-171
+} specExample;
+
+layout(std430) buffer block430 {
+ vec4 a; // a takes offsets 0-15
+ layout(offset = 32) vec3 b; // b takes offsets 32-43
+ layout(offset = 40) vec2 c; // ERROR, lies within previous member
+ layout(align = 6) double g; // ERROR, 6 is not a power of 2
+ layout(offset=68) double h; // ERROR, offset not aligned
+ layout(align = 0) double i; // ERROR, 0 not a power of 2
+} specExampleErrors430;
+
+layout(std430) buffer block2430 {
+ vec4 a; // a takes offsets 0-15
+ layout(offset = 32) vec3 b; // b takes offsets 32-43
+ layout(offset = 48) vec2 d; // d takes offsets 48-55
+ layout(align = 16) float e; // e takes offsets 64-67
+ layout(align = 2) double f; // f takes offsets 72-79
+ layout(offset = 80) float h; // h takes offsets 80-83
+ layout(align = 64) dvec3 i; // i takes offsets 128-151
+ layout(offset = 164, align = 8) float j; // j takes offsets 168-171
+} specExample430;
+
+layout(std430, align = 128) buffer block24300 {
+ vec4 a;
+ vec3 b;
+ vec2 d;
+ float e;
+ double f;
+ float h;
+ dvec3 i;
+} specExample4300;
+
+layout(std430, align = 128) buffer block24301 {
+ vec4 a;
+ vec3 b;
+ vec2 d;
+ layout(offset=388) float e;
+ layout(align=8) double f;
+ float h;
+ dvec3 i;
+} specExample4301;
+
+int aconst[gl_MaxTransformFeedbackBuffers];
+int bconst[gl_MaxTransformFeedbackInterleavedComponents];
+
+sample in vec3 sampInArray[4];
+
+void interp()
+{
+ interpolateAtCentroid(sampInArray[2].xy);
+ interpolateAtSample(sampInArray[2].x.x, 2);
+}
+
+int layer()
+{
+ return gl_Layer;
+}