summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/3rdparty/glslang/Test/420.vert
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/bgfx/3rdparty/glslang/Test/420.vert')
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/420.vert161
1 files changed, 161 insertions, 0 deletions
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/420.vert b/3rdparty/bgfx/3rdparty/glslang/Test/420.vert
new file mode 100644
index 00000000000..ab28140e584
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/420.vert
@@ -0,0 +1,161 @@
+#version 420 core
+#version 420 core
+varying vec2 v2; // ERROR, varying reserved
+in vec4 bad[10];
+highp in vec4 badorder;
+out invariant vec4 badorder2;
+in centroid vec4 badorder4; // ERROR, no centroid input to vertex stage
+out flat vec4 badorder3;
+void bar(in const float a);
+void bar2(highp in float b);
+smooth flat out vec4 rep; // ERROR, replicating interpolation qualification
+centroid sample out vec4 rep2; // ERROR, replicating auxiliary qualification
+in uniform vec4 rep3; // ERROR, replicating storage qualification
+
+int anonconst;
+const int aconst = 5;
+const int a = aconst;
+const int b = anonconst; // ERROR at global scope
+
+const int foo() // ERROR, no const functions
+{
+ const int a = aconst;
+ const int b = anonconst;
+ const int c = a; // still compile-time const
+ const int d = b; // not a compile-time const
+ float x[c]; // okay
+ float y[d]; // ERROR
+
+ return b;
+}
+
+void main()
+{
+ int i;
+ if (i == 3)
+ int j = i;
+ else
+ int k = j; // ERROR, j is undeclared
+ int m = k; // ERROR, k is undeclared
+ int n = j; // ERROR, j is undeclared
+
+ while (true)
+ int jj;
+ int kk = jj; // ERROR, jj is undeclared
+}
+
+const float cx = 4.20;
+const float dx = 4.20;
+
+void bar(in highp volatile vec4 v)
+{
+ int s;
+ s.x; // okay
+ s.y; // ERROR
+ if (bad[0].x == cx.x)
+ ;
+ if (cx.x == dx.x)
+ badorder3 = bad[0];
+
+ float f;
+ vec3 smeared = f.xxx;
+ f.xxxxx; // ERROR
+ f.xxy; // ERROR
+}
+
+layout(binding = 3) uniform; // ERROR
+layout(binding = 3) uniform boundblock { int aoeu; } boundInst;
+layout(binding = 7) uniform anonblock { int aoeu; } ;
+layout(location = 1) in; // ERROR
+layout(binding = 1) in inblock { int aoeua; }; // ERROR
+layout(binding = 100000) uniform anonblock2 { int aooeu; } ;
+layout(binding = 4) uniform sampler2D sampb1;
+layout(binding = 5) uniform sampler2D sampb2[10];
+layout(binding = 80) uniform sampler2D sampb3; // ERROR, binding too big
+layout(binding = 31) uniform sampler2D sampb4;
+layout(binding = 79) uniform sampler2D sampb5[2]; // ERROR, binding too big
+
+int fgfg(float f, mediump int i);
+int fgfg(float f, highp int i);
+
+out gl_PerVertex {
+ float gl_ClipDistance[4];
+};
+
+patch in vec4 patchIn; // ERROR
+patch out vec4 patchOut; // ERROR
+
+void bar23444()
+{
+ mat4x3 m43; \
+ float a1 = m43[3].y;
+ vec3 v3;
+ int a2 = m43.length();
+ a2 += m43[1].length();
+ a2 += v3.length();
+ const float b = 2 * a1;
+ int a = gl_MinProgramTexelOffset + gl_MaxProgramTexelOffset;
+}
+
+const int comma0 = (2, 3); // ERROR
+int comma1[(2, 3)]; // ERROR
+
+layout(r32i) uniform iimage2D iimg2D;
+layout(rgba32i) uniform iimage2D iimg2Drgba;
+layout(rgba32f) uniform image2D img2Drgba;
+layout(r32ui) uniform uimage2D uimg2D;
+uniform image2DMS img2DMS; // ERROR image variables not declared writeonly must have format layout qualifier
+uniform writeonly image2DMS img2DMSWO;
+void qux()
+{
+ int i = aoeu;
+ imageAtomicCompSwap(iimg2D, ivec2(i,i), i, i);
+ imageAtomicAdd(uimg2D, ivec2(i,i), uint(i));
+ imageAtomicMin(iimg2Drgba, ivec2(i,i), i); // ERROR iimg2Drgba does not have r32i layout
+ imageAtomicMax(img2Drgba, ivec2(i,i), i); // ERROR img2Drgba is not integer image
+ ivec4 pos = imageLoad(iimg2D, ivec2(i,i));
+ vec4 col = imageLoad(img2DMS, ivec2(i,i), i);
+ imageStore(img2DMSWO, ivec2(i,i), i, vec4(0));
+ imageLoad(img2DMSWO, ivec2(i,i), i); // ERROR, drops writeonly
+}
+
+volatile float vol; // ERROR, not an image
+readonly int vol2; // ERROR, not an image
+
+void passr(coherent readonly iimage2D image)
+{
+}
+
+layout(r32i) coherent readonly uniform iimage2D qualim1;
+layout(r32i) coherent volatile readonly uniform iimage2D qualim2;
+
+void passrc()
+{
+ passr(qualim1);
+ passr(qualim2); // ERROR, drops volatile
+ passr(iimg2D);
+}
+
+layout(rg8i) uniform uimage2D i1bad; // ERROR, type mismatch
+layout(rgba32i) uniform image2D i2bad; // ERROR, type mismatch
+layout(rgba32f) uniform uimage2D i3bad; // ERROR, type mismatch
+layout(r8_snorm) uniform iimage2D i4bad; // ERROR, type mismatch
+layout(rgba32ui) uniform iimage2D i5bad; // ERROR, type mismatch
+layout(r8ui) uniform iimage2D i6bad; // ERROR, type mismatch
+
+uniform offcheck {
+ layout(offset = 16) int foo; // ERROR
+} offcheckI;
+
+uniform sampler1D samp1D;
+uniform sampler1DShadow samp1Ds;
+
+void qlod()
+{
+ int levels;
+
+ levels = textureQueryLevels(samp1D); // ERROR, not until 430
+ levels = textureQueryLevels(samp1Ds); // ERROR, not until 430
+}
+
+layout(binding=0) writeonly uniform image1D badArray[];