<div dir="ltr"><div><div><div><div>This is undefined.<br><br></div>From the OpenGL 4.5 (Core Profile) spec, 7.4.1 Shader Interface Matching, p119:<br><br></div>"At an interface between program objects, the set of inputs and outputs are considered to<br>match exactly if and only if:<br>* Every declared input block or variable must have a matching output, as described above.<br>* There are no output blocks or user-defined output variables declared<br>without a matching input block or variable declaration.<br><br></div>When the set of inputs and outputs on an interface between programs<br>matches exactly, all inputs are well-defined except when the corresponding<br>outputs were not written in the previous shader. However, any mismatch<br>between inputs and outputs results in all inputs being undefined except for<br>cases noted below.<br></div><div>Even if an input has a corresponding output that matches exactly, mismatches on other<br></div><div>inputs or outputs may adversely affect the executable code generated to read or write the<br></div><div>matching variable."<br><br></div><div><Followed by a bunch of cases where mismatches are OK, all involving either<br>location qualifiers or builtins><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jan 22, 2016 at 2:45 AM, Ilia Mirkin <span dir="ltr"><<a href="mailto:imirkin@alum.mit.edu" target="_blank">imirkin@alum.mit.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Mesa treats each GS input as taking up 3 locations instead of 1, because<br>
it doesn't de-array the vars. This causes it to take col3 from VS<br>
instead of col1.<br>
<br>
Signed-off-by: Ilia Mirkin <<a href="mailto:imirkin@alum.mit.edu">imirkin@alum.mit.edu</a>><br>
---<br>
 .../execution/vs-gs-linking.shader_test            | 57 ++++++++++++++++++++++<br>
 1 file changed, 57 insertions(+)<br>
 create mode 100644 tests/spec/arb_separate_shader_objects/execution/vs-gs-linking.shader_test<br>
<br>
diff --git a/tests/spec/arb_separate_shader_objects/execution/vs-gs-linking.shader_test b/tests/spec/arb_separate_shader_objects/execution/vs-gs-linking.shader_test<br>
new file mode 100644<br>
index 0000000..938df13<br>
--- /dev/null<br>
+++ b/tests/spec/arb_separate_shader_objects/execution/vs-gs-linking.shader_test<br>
@@ -0,0 +1,57 @@<br>
+[require]<br>
+GLSL >= 1.50<br>
+SSO ENABLED<br>
+<br>
+[vertex shader]<br>
+#version 150<br>
+<br>
+in vec4 piglit_vertex;<br>
+out vec4 col0;<br>
+out vec4 col1;<br>
+out vec4 col2;<br>
+out vec4 col3;<br>
+out vec4 col4;<br>
+out vec4 col5;<br>
+<br>
+void main() {<br>
+  gl_Position = piglit_vertex;<br>
+  col1 = vec4(0, 1, 0, 1);<br>
+  col0 = col2 = col3 = col4 = col5 = vec4(1, 0, 0, 1);<br>
+}<br>
+<br>
+[geometry shader]<br>
+#version 150<br>
+<br>
+layout (triangles) in;<br>
+layout (triangle_strip, max_vertices=3) out;<br>
+<br>
+in vec4 color0[];<br>
+in vec4 color1[];<br>
+<br>
+out vec4 color;<br>
+<br>
+void main() {<br>
+  int i;<br>
+  for (i = 0; i < 3; i++) {<br>
+    gl_Position = gl_in[i].gl_Position;<br>
+    color = color1[i];<br>
+    EmitVertex();<br>
+  }<br>
+}<br>
+<br>
+[fragment shader]<br>
+#version 150<br>
+<br>
+in vec4 color;<br>
+out vec4 col;<br>
+<br>
+void main() {<br>
+  col = color;<br>
+}<br>
+<br>
+[test]<br>
+clear color 0.2 0.2 0.2 0.2<br>
+clear<br>
+<br>
+draw rect -1 -1 2 2<br>
+probe all rgba 0 1 0 1<br>
<span class="HOEnZb"><font color="#888888">--<br>
2.4.10<br>
<br>
_______________________________________________<br>
Piglit mailing list<br>
<a href="mailto:Piglit@lists.freedesktop.org">Piglit@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/piglit" rel="noreferrer" target="_blank">http://lists.freedesktop.org/mailman/listinfo/piglit</a><br>
</font></span></blockquote></div><br></div>