Re: [Piglit] [PATCH v2] gl-3.2-compat: test gl_TexCoord[] built-in with geometry shaders

2018-05-23 Thread Marek Olšák
Reviewed-by: Marek Olšák 

Marek

On Mon, May 21, 2018 at 8:59 PM, Timothy Arceri 
wrote:

> This tests both setting gl_TexCoord[] in the geometry shader and
> using the gs to passthrough the gl_TexCoord[] values from the
> vertex shader.
> ---
>  .../gs-texcoord-array-2.shader_test   | 57 
>  .../gs-texcoord-array.shader_test | 51 ++
>  .../vs-gs-texcoord-array-2.shader_test| 65 ++
>  .../vs-gs-texcoord-array.shader_test  | 66 +++
>  4 files changed, 239 insertions(+)
>  create mode 100644 tests/spec/glsl-1.50/execution/compatibility/gs-
> texcoord-array-2.shader_test
>  create mode 100644 tests/spec/glsl-1.50/execution/compatibility/gs-
> texcoord-array.shader_test
>  create mode 100644 tests/spec/glsl-1.50/execution/compatibility/vs-gs-
> texcoord-array-2.shader_test
>  create mode 100644 tests/spec/glsl-1.50/execution/compatibility/vs-gs-
> texcoord-array.shader_test
>
> diff --git 
> a/tests/spec/glsl-1.50/execution/compatibility/gs-texcoord-array-2.shader_test
> b/tests/spec/glsl-1.50/execution/compatibility/gs-
> texcoord-array-2.shader_test
> new file mode 100644
> index 0..852bc10c0
> --- /dev/null
> +++ b/tests/spec/glsl-1.50/execution/compatibility/gs-
> texcoord-array-2.shader_test
> @@ -0,0 +1,57 @@
> +[require]
> +GL COMPAT >= 3.2
> +GLSL >= 1.50
> +
> +[vertex shader]
> +#version 150 compatibility
> +
> +out gl_PerVertex {
> +   vec4 gl_Position;
> +   vec4 gl_TexCoord[5];
> +};
> +
> +void main()
> +{
> +   gl_Position = gl_Vertex;
> +}
> +
> +[geometry shader]
> +#version 150 compatibility
> +
> +layout(triangles) in;
> +layout(triangle_strip, max_vertices = 3) out;
> +
> +out vec4 gl_TexCoord[5];
> +
> +void main()
> +{
> +   for (int i = 0; i < 3; i++) {
> +   gl_Position = gl_in[i].gl_Position;
> +
> +   /* 0.05, 0.05, 0.10, 0.15, 0.20 */
> +   for (int j = 0; j < 5; j++) {
> +   gl_TexCoord[j] = vec4(float(j) * 0.05);
> +   }
> +
> +   EmitVertex();
> +   }
> +}
> +
> +[fragment shader]
> +#version 110
> +
> +varying vec4 gl_TexCoord[5];
> +void main()
> +{
> +   vec4 result = vec4(0.0);
> +
> +   for (int i = 0; i < 4; i++)
> +   result += gl_TexCoord[i];
> +
> +   /* 0.00 + 0.05 + 0.10 + 0.15 = 0.30 */
> +   gl_FragColor = result;
> +}
> +
> +[test]
> +draw rect -1 -1 2 2
> +probe rgba 1 1 0.3 0.3 0.3 0.3
> diff --git 
> a/tests/spec/glsl-1.50/execution/compatibility/gs-texcoord-array.shader_test
> b/tests/spec/glsl-1.50/execution/compatibility/gs-
> texcoord-array.shader_test
> new file mode 100644
> index 0..0ee316ef1
> --- /dev/null
> +++ b/tests/spec/glsl-1.50/execution/compatibility/gs-
> texcoord-array.shader_test
> @@ -0,0 +1,51 @@
> +[require]
> +GL COMPAT >= 3.2
> +GLSL >= 1.50
> +
> +[vertex shader]
> +#version 150 compatibility
> +
> +void main()
> +{
> +   gl_Position = gl_Vertex;
> +}
> +
> +[geometry shader]
> +#version 150 compatibility
> +
> +layout(triangles) in;
> +layout(triangle_strip, max_vertices = 3) out;
> +
> +uniform int n;
> +
> +out vec4 gl_TexCoord[5];
> +
> +void main()
> +{
> +   for (int i = 0; i < 3; i++) {
> +   gl_Position = gl_in[i].gl_Position;
> +
> +   for (int j = 0; j < n; j++) {
> +   gl_TexCoord[j] = vec4(0.5, 0.5, 0.5, 0.5) *
> float(j);
> +   }
> +
> +   EmitVertex();
> +   }
> +}
> +
> +[fragment shader]
> +#version 150 compatibility
> +
> +uniform int index;
> +in vec4 gl_TexCoord[5];
> +
> +void main()
> +{
> +   gl_FragColor = gl_TexCoord[index];
> +}
> +
> +[test]
> +uniform int index 1
> +uniform int n 4
> +draw rect -1 -1 2 2
> +probe rgba 1 1 0.5 0.5 0.5 0.5
> diff --git 
> a/tests/spec/glsl-1.50/execution/compatibility/vs-gs-texcoord-array-2.shader_test
> b/tests/spec/glsl-1.50/execution/compatibility/vs-gs-
> texcoord-array-2.shader_test
> new file mode 100644
> index 0..ec910524c
> --- /dev/null
> +++ b/tests/spec/glsl-1.50/execution/compatibility/vs-gs-
> texcoord-array-2.shader_test
> @@ -0,0 +1,65 @@
> +[require]
> +GL COMPAT >= 3.2
> +GLSL >= 1.50
> +
> +[vertex shader]
> +#version 150 compatibility
> +
> +out gl_PerVertex {
> +   vec4 gl_Position;
> +   vec4 gl_TexCoord[5];
> +};
> +
> +void main()
> +{
> +   /* 0.05, 0.05, 0.10, 0.15, 0.20 */
> +   for (int i = 0; i < 5; i++)
> +   gl_TexCoord[i] = vec4(float(i) * 0.05);
> +
> +   gl_Position = gl_Vertex;
> +}
> +
> +[geometry shader]
> +#version 150 compatibility
> +
> +layout(triangles) in;
> +layout(triangle_strip, max_vertices = 3) out;
> +
> +in gl_PerVertex {
> +   vec4 gl_Position;
> +   vec4 gl_TexCoord[5];
> +} gl_in[];
> +
> +out vec4 gl_TexCoord[5];
> +
> +void main()
> +{
> +   for (int i = 0; i < 3; i++) {
> +   gl_Position = 

[Piglit] [PATCH v2] gl-3.2-compat: test gl_TexCoord[] built-in with geometry shaders

2018-05-21 Thread Timothy Arceri
This tests both setting gl_TexCoord[] in the geometry shader and
using the gs to passthrough the gl_TexCoord[] values from the
vertex shader.
---
 .../gs-texcoord-array-2.shader_test   | 57 
 .../gs-texcoord-array.shader_test | 51 ++
 .../vs-gs-texcoord-array-2.shader_test| 65 ++
 .../vs-gs-texcoord-array.shader_test  | 66 +++
 4 files changed, 239 insertions(+)
 create mode 100644 
tests/spec/glsl-1.50/execution/compatibility/gs-texcoord-array-2.shader_test
 create mode 100644 
tests/spec/glsl-1.50/execution/compatibility/gs-texcoord-array.shader_test
 create mode 100644 
tests/spec/glsl-1.50/execution/compatibility/vs-gs-texcoord-array-2.shader_test
 create mode 100644 
tests/spec/glsl-1.50/execution/compatibility/vs-gs-texcoord-array.shader_test

diff --git 
a/tests/spec/glsl-1.50/execution/compatibility/gs-texcoord-array-2.shader_test 
b/tests/spec/glsl-1.50/execution/compatibility/gs-texcoord-array-2.shader_test
new file mode 100644
index 0..852bc10c0
--- /dev/null
+++ 
b/tests/spec/glsl-1.50/execution/compatibility/gs-texcoord-array-2.shader_test
@@ -0,0 +1,57 @@
+[require]
+GL COMPAT >= 3.2
+GLSL >= 1.50
+
+[vertex shader]
+#version 150 compatibility
+
+out gl_PerVertex {
+   vec4 gl_Position;
+   vec4 gl_TexCoord[5];
+};
+
+void main()
+{
+   gl_Position = gl_Vertex;
+}
+
+[geometry shader]
+#version 150 compatibility
+
+layout(triangles) in;
+layout(triangle_strip, max_vertices = 3) out;
+
+out vec4 gl_TexCoord[5];
+
+void main()
+{
+   for (int i = 0; i < 3; i++) {
+   gl_Position = gl_in[i].gl_Position;
+
+   /* 0.05, 0.05, 0.10, 0.15, 0.20 */
+   for (int j = 0; j < 5; j++) {
+   gl_TexCoord[j] = vec4(float(j) * 0.05);
+   }
+
+   EmitVertex();
+   }
+}
+
+[fragment shader]
+#version 110
+
+varying vec4 gl_TexCoord[5];
+void main()
+{
+   vec4 result = vec4(0.0);
+
+   for (int i = 0; i < 4; i++)
+   result += gl_TexCoord[i];
+
+   /* 0.00 + 0.05 + 0.10 + 0.15 = 0.30 */
+   gl_FragColor = result;
+}
+
+[test]
+draw rect -1 -1 2 2
+probe rgba 1 1 0.3 0.3 0.3 0.3
diff --git 
a/tests/spec/glsl-1.50/execution/compatibility/gs-texcoord-array.shader_test 
b/tests/spec/glsl-1.50/execution/compatibility/gs-texcoord-array.shader_test
new file mode 100644
index 0..0ee316ef1
--- /dev/null
+++ b/tests/spec/glsl-1.50/execution/compatibility/gs-texcoord-array.shader_test
@@ -0,0 +1,51 @@
+[require]
+GL COMPAT >= 3.2
+GLSL >= 1.50
+
+[vertex shader]
+#version 150 compatibility
+
+void main()
+{
+   gl_Position = gl_Vertex;
+}
+
+[geometry shader]
+#version 150 compatibility
+
+layout(triangles) in;
+layout(triangle_strip, max_vertices = 3) out;
+
+uniform int n;
+
+out vec4 gl_TexCoord[5];
+
+void main()
+{
+   for (int i = 0; i < 3; i++) {
+   gl_Position = gl_in[i].gl_Position;
+
+   for (int j = 0; j < n; j++) {
+   gl_TexCoord[j] = vec4(0.5, 0.5, 0.5, 0.5) * float(j);
+   }
+
+   EmitVertex();
+   }
+}
+
+[fragment shader]
+#version 150 compatibility
+
+uniform int index;
+in vec4 gl_TexCoord[5];
+
+void main()
+{
+   gl_FragColor = gl_TexCoord[index];
+}
+
+[test]
+uniform int index 1
+uniform int n 4
+draw rect -1 -1 2 2
+probe rgba 1 1 0.5 0.5 0.5 0.5
diff --git 
a/tests/spec/glsl-1.50/execution/compatibility/vs-gs-texcoord-array-2.shader_test
 
b/tests/spec/glsl-1.50/execution/compatibility/vs-gs-texcoord-array-2.shader_test
new file mode 100644
index 0..ec910524c
--- /dev/null
+++ 
b/tests/spec/glsl-1.50/execution/compatibility/vs-gs-texcoord-array-2.shader_test
@@ -0,0 +1,65 @@
+[require]
+GL COMPAT >= 3.2
+GLSL >= 1.50
+
+[vertex shader]
+#version 150 compatibility
+
+out gl_PerVertex {
+   vec4 gl_Position;
+   vec4 gl_TexCoord[5];
+};
+
+void main()
+{
+   /* 0.05, 0.05, 0.10, 0.15, 0.20 */
+   for (int i = 0; i < 5; i++)
+   gl_TexCoord[i] = vec4(float(i) * 0.05);
+
+   gl_Position = gl_Vertex;
+}
+
+[geometry shader]
+#version 150 compatibility
+
+layout(triangles) in;
+layout(triangle_strip, max_vertices = 3) out;
+
+in gl_PerVertex {
+   vec4 gl_Position;
+   vec4 gl_TexCoord[5];
+} gl_in[];
+
+out vec4 gl_TexCoord[5];
+
+void main()
+{
+   for (int i = 0; i < 3; i++) {
+   gl_Position = gl_in[i].gl_Position;
+
+   for (int j = 0; j < 5; j++) {
+   gl_TexCoord[j] = gl_in[i].gl_TexCoord[j];
+   }
+
+   EmitVertex();
+   }
+}
+
+[fragment shader]
+#version 110
+
+varying vec4 gl_TexCoord[5];
+void main()
+{
+   vec4 result = vec4(0.0);
+
+   for (int i = 0; i < 4; i++)
+   result += gl_TexCoord[i];
+
+   /* 0.00 + 0.05 + 0.10 + 0.15 = 0.30 */
+   gl_FragColor = result;
+}
+
+[test]
+draw rect -1 -1 2 2
+probe rgba 1 1 0.3 0.3