summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/3rdparty/glslang/Test/310.geom
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/bgfx/3rdparty/glslang/Test/310.geom')
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/310.geom152
1 files changed, 152 insertions, 0 deletions
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/310.geom b/3rdparty/bgfx/3rdparty/glslang/Test/310.geom
new file mode 100644
index 00000000000..bf0b1ae0463
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/310.geom
@@ -0,0 +1,152 @@
+#version 310 es
+
+#ifdef GL_EXT_geometry_shader
+#extension GL_EXT_geometry_shader : enable
+#else
+#error no GL_EXT_geometry_shader
+#endif
+
+#ifndef GL_OES_geometry_shader
+#error no GL_OES_geometry_shader
+#endif
+
+precision mediump float;
+
+in fromVertex {
+ in vec3 color;
+} fromV[];
+
+in vec4 nonBlockUnsized[];
+
+out toFragment {
+ out vec3 color;
+} toF;
+
+out fromVertex { // okay to reuse a block name for another block name
+ vec3 color;
+};
+
+out fooB { // ERROR, cannot reuse block name as block instance
+ vec2 color;
+} fromVertex;
+
+int fromVertex; // ERROR, cannot reuse a block name for something else
+
+out fooC { // ERROR, cannot have same name for block and instance name
+ vec2 color;
+} fooC;
+
+void main()
+{
+ EmitVertex();
+ EndPrimitive();
+ EmitStreamVertex(1); // ERROR
+ EndStreamPrimitive(0); // ERROR
+
+ color = fromV[0].color;
+ gl_ClipDistance[3] = // ERROR, no ClipDistance
+ gl_in[1].gl_ClipDistance[2]; // ERROR, no ClipDistance
+ gl_Position = gl_in[0].gl_Position;
+
+ gl_PrimitiveID = gl_PrimitiveIDIn;
+ gl_Layer = 2;
+}
+
+layout(stream = 4) out vec4 ov4; // ERROR, no streams
+
+layout(line_strip, points, triangle_strip, points, triangle_strip) out; // just means triangle_strip"
+
+out ooutb { vec4 a; } ouuaa6;
+
+layout(max_vertices = 200) out;
+layout(max_vertices = 300) out; // ERROR, too big
+void foo(layout(max_vertices = 4) int a) // ERROR
+{
+ ouuaa6.a = vec4(1.0);
+}
+
+layout(line_strip, points, triangle_strip, points) out; // ERROR, changing output primitive
+layout(line_strip, points) out; // ERROR, changing output primitive
+layout(triangle_strip) in; // ERROR, not an input primitive
+layout(triangle_strip) uniform; // ERROR
+layout(triangle_strip) out vec4 badv4; // ERROR, not on a variable
+layout(triangle_strip) in vec4 bad2v4[]; // ERROR, not on a variable or input
+layout(invocations = 3) out outbn { int a; }; // 2 ERROR, not on a block, not until 4.0
+out outbn2 {
+ layout(invocations = 3) int a; // 2 ERRORs, not on a block member, not until 4.0
+ layout(max_vertices = 3) int b; // ERROR, not on a block member
+ layout(triangle_strip) int c; // ERROR, not on a block member
+} outbi;
+
+layout(lines) out; // ERROR, not on output
+layout(lines_adjacency) in;
+layout(triangles) in; // ERROR, can't change it
+layout(triangles_adjacency) in; // ERROR, can't change it
+layout(invocations = 4) in;
+
+in sameName {
+ int a15;
+} insn[];
+
+out sameName {
+ float f15;
+};
+
+uniform sameName {
+ bool b15;
+};
+
+const int summ = gl_MaxVertexAttribs +
+ gl_MaxGeometryInputComponents +
+ gl_MaxGeometryOutputComponents +
+ gl_MaxGeometryImageUniforms +
+ gl_MaxGeometryTextureImageUnits +
+ gl_MaxGeometryOutputVertices +
+ gl_MaxGeometryTotalOutputComponents +
+ gl_MaxGeometryUniformComponents +
+ gl_MaxGeometryAtomicCounters +
+ gl_MaxGeometryAtomicCounterBuffers +
+ gl_MaxVertexTextureImageUnits +
+ gl_MaxCombinedTextureImageUnits +
+ gl_MaxTextureImageUnits +
+ gl_MaxDrawBuffers;
+
+void fooe1()
+{
+ gl_ViewportIndex; // ERROR, not in ES
+ gl_MaxViewports; // ERROR, not in ES
+ insn.length(); // 4: lines_adjacency
+ int inv = gl_InvocationID;
+}
+
+in vec4 explArray[4];
+in vec4 explArrayBad[5]; // ERROR, wrong size
+in vec4 nonArrayed; // ERROR, not an array
+flat out vec3 myColor1;
+centroid out vec3 myColor2;
+centroid in vec3 centr[];
+sample out vec4 perSampleColor; // ERROR without sample extensions
+
+layout(max_vertices = 200) out; // matching redecl
+
+layout(location = 7, component = 2) in float comp[]; // ERROR, es has no component
+
+void notHere()
+{
+ gl_MaxGeometryVaryingComponents; // ERROR, not in ES
+ gl_VerticesIn; // ERROR, not in ES
+}
+
+void pointSize1()
+{
+ highp float ps = gl_in[3].gl_PointSize; // ERROR, need point_size extension
+ gl_PointSize = ps; // ERROR, need point_size extension
+}
+
+#extension GL_OES_geometry_point_size : enable
+
+void pointSize2()
+{
+ highp float ps = gl_in[3].gl_PointSize;
+ gl_PointSize = ps;
+}