summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/glslang/src/Test/330.frag
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/glslang/src/Test/330.frag')
-rw-r--r--chromium/third_party/glslang/src/Test/330.frag152
1 files changed, 152 insertions, 0 deletions
diff --git a/chromium/third_party/glslang/src/Test/330.frag b/chromium/third_party/glslang/src/Test/330.frag
new file mode 100644
index 00000000000..8b0cb25f545
--- /dev/null
+++ b/chromium/third_party/glslang/src/Test/330.frag
@@ -0,0 +1,152 @@
+#version 330 compatibility
+
+in vec4 inVar;
+layout(location=0, index=0) out vec4 outVar;
+
+varying vec4 varyingVar;
+
+void main()
+{
+ gl_FragColor = varyingVar; // link ERROR: user output was used
+ gl_FragData[1] = inVar; // link ERROR: user output was used
+ int buffer = 4;
+}
+
+#extension GL_ARB_separate_shader_objects : enable
+
+in gl_PerFragment {
+ vec4 gl_Color;
+};
+
+void foo()
+{
+ vec4 c = gl_Color;
+ outVar = inVar;
+}
+
+in gl_block { // ERROR
+ int gl_i;
+} gl_name;
+
+in myBlock {
+ int gl_i; // ERROR
+} gl_name; // ERROR
+
+in gl_PerVertex { // ERROR
+ vec4 gl_FragCoord;
+} gl_in[];
+
+in gl_PerVertex { // ERROR
+ vec4 gl_FragCoord;
+}; // ERROR
+
+const int start = 6;
+layout(location = -2) in vec4 v1; // ERROR
+layout(location = start + 2) in vec4 v2; // ERROR
+layout(location = 4.7e10) in vec4 v20; // ERROR
+layout(location = +60) in float v21; // ERROR
+layout(location = (2)) in float v22; // ERROR
+
+struct S {
+ float f1;
+ layout(location = 3) float f2; // ERROR
+};
+
+layout(location = 1) in inblock { // ERROR
+ float f1;
+ layout(location = 3) float f2; // ERROR
+};
+
+layout(location = 1) uniform ublock { // ERROR
+ float f1;
+ layout(location = 3) float f2; // ERROR
+} uinst;
+
+#extension GL_ARB_enhanced_layouts : enable
+
+layout(location = start) in vec4 v3;
+layout(location = -2) in vec4 v4; // ERROR
+layout(location = -start) in vec4 v5; // ERROR
+layout(location = start*start - 2 - 4) in vec4 v6;
+layout(location = +61) in float v23;
+layout(location = (62)) in float v24;
+
+struct S2 {
+ float f1;
+ layout(location = 3) float f2; // ERROR
+};
+
+layout(location = 28) in inblock2 {
+ bool b1;
+ float f1;
+ layout(location = 25) float f2;
+ vec4 f3;
+ layout(location = 21) S2 s2;
+ vec4 f4;
+ vec4 f5;
+} ininst2;
+
+layout(location = 13) uniform ublock2 { // ERROR
+ float f1;
+ layout(location = 3) float f2; // ERROR
+} uinst2;
+
+in inblock3 { // ERROR, mix of location internal with no location external
+ float f1;
+ layout(location = 40) float f2;
+} in3;
+
+in ublock4 {
+ layout(location = 50) float f1;
+ layout(location = 51) float f2;
+} in4;
+
+layout(location = 33) in struct SS {
+ vec3 a; // gets location 33
+ mat2 b; // gets locations 34 and 35
+ vec4 c[2]; // gets locations 36 and 37
+ layout (location = 38) vec2 A; // ERROR, can't use on struct member
+} s;
+
+layout(location = 44) in block {
+ vec4 d; // gets location 44
+ vec4 e; // gets location 45
+ layout(location = 47) vec4 f; // gets location 47
+ vec4 g; // gets location 48
+ layout (location = 41) vec4 h; // gets location 41
+ vec4 i; // gets location 42
+ vec4 j; // gets location 43
+ vec4 k; // ERROR, location 44 already used
+};
+
+layout(index=0) out vec4 outVar2; // ERROR: missing explicit location
+layout(location=0, index=1) out vec4 outVar3; // no error even though location is overlapping
+layout(location=0, index=1) out vec4 outVar4; // ERROR overlapping
+layout(location=27, index=0) in vec4 indexIn; // ERROR, not on in
+layout(location=0, index=0) in; // ERROR, not just on in
+layout(location=0, index=0) out; // ERROR, need a variable
+layout(location=26, index=0) out indexBlock { int a; } indexBlockI; // ERROR, not on a block
+
+uniform sampler1D samp1D;
+uniform sampler2DShadow samp2Ds;
+
+void qlod()
+{
+ vec2 lod;
+ float pf;
+ vec2 pf2;
+ vec3 pf3;
+
+ lod = textureQueryLod(samp1D, pf); // ERROR, not until 400
+ lod = textureQueryLod(samp2Ds, pf2); // ERROR, not until 400
+}
+
+int precise; // okay, not a keyword yet
+struct SKeyMem { int precise; } KeyMem; // okay, not a keyword yet
+
+void fooKeyMem()
+{
+ KeyMem.precise;
+}
+
+layout(location=28, index=2) out vec4 outIndex2; // ERROR index out of range \ No newline at end of file