diff options
Diffstat (limited to '3rdparty/bgfx/3rdparty/glslang/Test/420.vert')
-rw-r--r-- | 3rdparty/bgfx/3rdparty/glslang/Test/420.vert | 161 |
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[];
|